722.3 Evaluation criteria for tool selection
Choose tools based on their merit, not just popularity.
Overview
Selecting a tool or technology for a software project is not simply a matter of personal preference. Software engineers must evaluate options based on how well each tool aligns with project goals, technical constraints, and user needs. In this section, you will learn how to justify your technology choices using structured evaluation criteria. These criteria will be used to support the rationale in your System Design Specification (SDS).
Even though all students are using a standard tech stack—HTML, CSS, JavaScript, Flask, and SQLite—you are expected to reflect on how these tools specifically support the design and implementation of your solution.
Evaluation table: Template
Use the table below to evaluate each major tool in your project. You may adapt or extend it to suit your documentation style.
Tool / Technology
Function in Project
Strengths
Limitations / Trade-offs
Why it's appropriate
HTML / CSS
Build user interface and page layout
Universally supported, easy to style and customise
Requires manual handling of responsive design unless using frameworks
Gives full control over UI, simple to learn and maintain
JavaScript
Add interactivity and handle client-side validation
Runs in browser, excellent for dynamic feedback
Can become complex if not modularised well
Enables responsive UX and supports validation before sending data
Flask (Python)
Process requests and render dynamic content
Lightweight, flexible, integrates with Python
Not suited for very large-scale systems
Ideal for single-developer projects with custom routing needs
SQLite
Store and retrieve persistent data
Lightweight, no server setup, SQL-compatible
File-based storage, not for high concurrency
Perfect for local development and prototyping
Codio
Development environment
Accessible anywhere, Git integration, browser-based preview
Requires setup for Flask apps and terminal use
Supports full-stack development in a school setting
Sample criteria for evaluation
Use these when completing your evaluation table and writing your justification:
Suitability for purpose – Does the tool directly support the required functionality?
Ease of use / learning curve – Can you use it efficiently within the project timeframe?
Community support – Is documentation or help readily available online?
Compatibility – Does it work well with other parts of the stack (e.g. Flask + SQLite)?
Performance – Does it handle the expected scale of data and users?
Security – Are there built-in features or best practices for safe handling of user data?
Maintainability – Will the codebase be easy to modify, test, and extend?
Licensing / availability – Is it open-source or freely available to use?
How to use this in your SDS
Each technology listed in your SDS should be accompanied by a concise written justification, drawing on the above evaluation. Avoid vague language like "I just like it" or "It’s easy" without explaining why.
Example: I chose Flask because it supports flexible route handling and integrates well with Python, which I am already comfortable using. It also works smoothly with SQLite for local data storage, making it suitable for a solo project that doesn’t need enterprise-scale infrastructure.
Resources
In your System Design Specification (SDS), you must justify each tool and technology used in your project. This section provides a model response, illustrating how to craft a concise and well-structured justification that reflects your understanding of the system requirements and development process.
The example below is written in a manner that would be suitable for inclusion in the SDS, specifically under the 'Tool selection and justification' section.
Last updated
Was this helpful?