Fitness for purpose — does the program do what it was designed to do? Does it meet all the specified functional requirements?
Usability — is it easy to use? Can the target audience navigate it without errors? Does it have helpful error messages?
Efficiency — does it run quickly? Does it use memory and processing resources appropriately?
Maintainability — is the code well commented and structured so others can understand and modify it later?
Comparing Solutions
Which Algorithm is Better?
When evaluating algorithms, consider efficiency: how does execution time and memory usage scale as the amount of data grows? Bubble sort is simple but slow for large datasets. Merge sort is more efficient at scale.
Could the same problem be solved with less code? Fewer loops? Better use of subroutines?
Consider: is an elegant but complex solution better than a simple but slow one? It depends on the context.
Use trace tables to compare outcomes — does solution A produce the same output as solution B?
Maintainability and Future Development
Code That Others Can Work On
Comments — explain what code does, why decisions were made. Good comments = faster future development
Meaningful variable names — totalScore is better than x
Modular code — subroutines and functions make code easier to update without breaking other parts
User feedback — after release, gather feedback from real users and plan the next iteration
Exam Practice
Have a go at this question
AQA-style question
Explain two criteria that could be used to evaluate whether a piece of software is successful.
4 marks
Fitness for purpose: the software meets all the functional requirements specified by the client [1] and produces correct outputs for all valid inputs [1]. Usability: the interface is intuitive enough for the target audience to use without training [1] and includes clear error messages to help users correct mistakes [1].
Key Takeaways
What to Remember
Evaluate: fitness for purpose, usability, efficiency, maintainability
Good code = comments, meaningful names, subroutines — easy for others to maintain
Compare algorithms by efficiency: how does performance change as data grows?
User feedback drives future improvement — development is never truly finished