722 Tool selection and justification
Choose appropriate tools to build your project and justify why they are fit for purpose.
Outline
In this module, students make critical decisions about the development tools, languages, libraries, and platforms they will use to complete their software engineering project. These choices must align with the project's functional goals, complexity, team capacity, and technical constraints. Tool selection is not simply about preference—it must be reasoned and justifiable in terms of functionality, efficiency, maintainability, and scalability. The rationale behind these choices will be formally documented and incorporated into the final System Design Specification.
Targets
In this topic, students learn to:
Identify the tools, frameworks, and environments required to implement their software solution
Evaluate development tools based on technical requirements and constraints
Justify the selection of tools in terms of performance, usability, and long-term maintainability
Align tool selection with the project's scope, user needs, and system architecture
Document choices clearly using evaluation criteria and evidence
Glossary
Tech stack
The combination of programming languages, frameworks, libraries, and tools used to build a software application.
Version control
A system that records changes to files over time, allowing teams to track history, collaborate, and revert to earlier versions.
Integrated development environment (IDE)
A software application that provides tools for writing, testing, and debugging code in one place.
Justification
A reasoned explanation for a decision, showing how a choice aligns with the goals and constraints of the project.
Framework
A reusable set of libraries or tools designed to support the development of applications with common patterns or structures.
Scalability
The ability of a system or tool to handle increasing amounts of work, users, or data as the project grows.
Overview
Choosing the right tools can make or break a software project. In this module, you will evaluate the specific needs of your chosen project and select tools that meet those needs. Your decisions should be based on factors such as language suitability, learning curve, availability of libraries, system requirements, and compatibility with team workflows.
Your chosen stack might include programming languages (e.g. Python, JavaScript), frameworks (e.g. Flask, React), databases (e.g. SQLite, Firebase), and platforms for interface design (e.g. Figma). You will also select tools for managing your code and project development, such as GitHub, Trello, or Jira.
Importantly, you will not just list your tools—you will explain why each one is appropriate. This justification forms part of your professional documentation and will demonstrate your capacity to make strategic development decisions, a key skill for software engineers.
This module sets you up to complete your System Design Specification in the next phase. By the end of the week, you should have a clearly documented toolset that is ready to support the development and implementation of your solution.
Last updated
Was this helpful?