SOFTWARE DEVELOPMENT TOOLS
Some Useful Tools to Aid Your Development Process
NOTE: This page will be updated. make sure you come back to check new links for the tools to be used in this class.
There are many tools that aim to help the process of developing software. The table below categorizes software tools based on their functionality and presents various tool types along with specific examples for each category:
| Planning tools | → PERT tools, estimation tools, spreadsheets. |
|---|---|
| Editing tools | → Text editors, diagram editors, word processors. |
| Change management tools | → Requirements traceability tools, change control systems. |
| Configuration management tools | → Version management systems, system building tools. |
| Prototyping tools | → Very high-level languages, user interface generators. |
| Method-support tools | → Design editors, data dictionaries, code generators. |
| Language-processing tools | → Compilers, interpreters. |
| Program analysis tools | → Cross reference generators, static analyzers, dynamic analyzers. |
| Testing tools | → Test data generators, file comparators. |
| Debugging tools | → Interactive debugging systems. |
| Documentation tools | → Page layout programs, image editors. |
| Re-engineering tools | → Cross-reference systems, program restructuring systems. |
- Table compiled by Ian Sommerville.
I've arranged a small list of tools that are commonly used by software developers and engineers, and categorized them following the "four fundamental software engineering activities" described in the textbook (Ch. 2, p. 44): software specification, software development (design & implementation), software validation, and software evolution. I excluded software evolution, since software maintenance and/or upgrades are not part of the scope of this class. Also, since your final project will be developed using incremental development (Agile methods), the selected tools are frequently used by Agile development teams.
For Software Specification
Requirement Gathering & Backlog Management
These tools help Agile teams capture, organize, and prioritize requirements and user stories.
[RECOMMENDED]
Jira is a widely-used tool in Agile software development, especially for managing the backlog and tasks, tracking bugs, and organizing sprints, epics, and user stories. It's developed by Atlassian and is known for its flexibility in supporting different Agile methodologies, including Scrum, Kanban, and hybrid approaches.
Here's a brief list of Jira's features:
-
Project and Issue Tracking
- Create and manage projects, epics, stories, tasks, bugs, and subtasks.
- Each item (issue) has its own ID, description, priority, status, and assignee.
-
Scrum Support
- Set up sprints with start/end dates.
- Plan sprint backlogs and assign stories to sprints.
- Use burndown charts and velocity tracking to monitor sprint progress.
-
Kanban Boards
- Visual workflow management using drag-and-drop boards.
- Work-in-progress (WIP) limits and customizable columns.
-
Backlog Management
- Maintain and prioritize a product backlog.
- Easily move items between the backlog and sprint.
- Use filters, labels, and sorting to organize large backlogs.
-
Agile Reports & Dashboards
- Generate real-time reports such as: burndown charts, sprint reports, cumulative flow diagrams, and velocity charts.
- Custom dashboards with widgets to track team or project metrics.
-
Integration with Other Tools
- Jira integrates with tools like: Confluence (documentation), GitHub (version control), Slack/MS Teams (communication), and others.
Links:
[GUIDE] Getting started with Jira →
[REGISTER] Create a free Jira account →
Notion is a flexible, all-in-one productivity platform that combines note-taking, task management, collaboration, and documentation. It's especially popular with Agile development teams for lightweight project management, documentation, and team coordination.
You can use Notion to develop documentation or for taking meeting's notes, specially during sprint ceremonies (sprint planning, daily stand-up (or daily scrum), sprint review, and sprint retrospective). Here's a brief list of Notion's features that facilitates the above process:
- Workspaces and Pages
-
Documentation and Specs
- Set up sprints with start/end dates.
- Plan sprint backlogs and assign stories to sprints.
- Use burndown charts and velocity tracking to monitor sprint progress.
-
Templates and Customization
- Pre-built templates for: sprint planning, daily standups, meeting agendas, and bug reports.
- You can also create your own reusable templates for repetitive work.
NOTE: You can use any word processing software to prepare an SRS document or any document needed for your project. The advantage of Notion (or other apps like Confluence or Miro) is the ability to collaborate online (but you could do the same with Google Docs, for example).
Links:
[GUIDE] Import a Document into Notion →
[GUIDE] How to write Product Requirements Document →
[REGISTER] Create a free Notion account →
For Design
UI/UX Prototyping and System Design
These tools support wireframing, UI design, and architecture planning.
[RECOMMENDED]
Figma is a web-based collaborative interface design and prototyping tool that's widely used in Agile development environments. It allows designers, developers, and product teams to work together in real-time on user interfaces, wireframes, mockups, and interactive prototypes.
Here's a brief list of Figmas's features:
-
Collaborative Interface Design
- Create UI designs, wireframes, and mockups directly in your browser.
- Multiple team members can design simultaneously (like Google Docs for design) and with real-time cursor tracking you can see who is doing what.
-
Components and Design Systems
- Create reusable components (e.g., buttons, headers, form fields).
- Use design systems to ensure UI consistency across your project.
- Shared styles for colors, typography, spacing, etc.
-
Interactive Prototyping
- Link screens together to simulate user flows and behaviors (clicks, hovers, transitions).
- Add animations and transitions to enhance realism.
-
Usability, Testing, Integration
- Share interactive prototypes with stakeholders or testers.
- Access to thousands of templates for wireframes, UI kits, and design systems. You can use plugins for accessibility checks, icons, lorem ipsum, color palettes, and more.
NOTE: Figma is mostly used to prototype web applications, and apps for iOS and Android. But you can use it to design any UI for any system you want.
Links:
[GUIDE] Design Basics with Figma →
[GUIDE] Prototyping with Figma →
[GUIDE] Getting Started with Design Systems in Figma →
[REGISTER] Create a free Figma Design account →
These apps are used for system architecture diagrams, flowcharts, and ER diagrams.
Links:
[INFO] draw.io →
[GUIDE] Entity-Relationship (ER) Diagrams with draw.io →
[INFO] Lucidchart →
[RECOMMENDED]
PlantUML is a highly versatile tool that facilitates the rapid and straightforward creation of a wide array of diagrams. It comes in the form of an extension that can be installed in VS Code.
The main feature you can use from PlantUML is its support for UML Diagrams, which allows you to create well-structured UML diagrams, including but not limited to:
- Sequence diagram
- Usecase diagram
- Class diagram
- Object diagram
- Activity diagram
- State diagram
- Timing diagram
Links:
[GUIDE] Configuring and Running PlantUML with VS Code →
[GUIDE] Creating Sequence Diagram with PlantUML →
This app allows you to draw schemas and ERDs by typing in keyboard. You only give the details you want and the ERD is generated for you.
Links:
[INFO] Quick DBD →
[GUIDE] Designing and creating a MySQL database online using QuickDBD →
For Implementation
Coding, Collaboration, Continuous Integration/Continuous Deployment (CI/CD)
These tools support development, version control, and continuous integration of your software development project.
[RECOMMENDED]
TBD
[RECOMMENDED]
TBD
For Verification
Testing and Code Quality
These tools support unit testing, automated testing, and ensuring code quality.
[RECOMMENDED]
TBD