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

Term
Definition

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?