During the evaluation phase, the developer carries out a critical review of the software, taking on board any feedback from the users. The intention of an evaluation is to identify the extent to which the software is fit for purpose and how it might be improved in the future. The software will be evaluated against the criteria described below and documented in an Evaluation Report. You can use this as a guide for writing your own evaluations.
Fitness for Purpose
A statement of whether the software functions as specified in the software specification. Particular reference should be made to the statements of purpose and functional requirements. Are all the required features built into the software?
Robustness
Robust software can cope with abnormal or unexpected conditions without crashing or freezing. It can handle user errors like entering an invalid input such as the wrong type or inputs outwith an acceptable range. What happens if a printer is offline when a command to print is given?
Any comments you make about robustness should be evidenced by making reference to testing that has been carried out particularly in exceptional test cases.
Maintainability
Software is maintainable if changes can be made easily and quickly to allow for future upgrades or extensions. You should discuss how your code is readable and modular.
- Readability Program code should be easy to understand by any programmer who looks at it. Readability is improved by good use of meaningful identifiers, white space, indentation of code within structures and internal commentary.
- Modularity Programs making effective use of subroutines and parameters are more maintainable because the separate components are easier to identify in the first instance and change independently with minimal effect to the rest of the program.
Efficiency
Software is efficient if it avoids using resources that are disproportionate to the scale of the software. Resources can include processor time, RAM, hard disk space or even Internet bandwidth. In a program, examples of inefficiencies could include:
- poor use of logic in loop structures and comparisons in conditional statements.
- multiple if statements instead of an if..elif or if..else structure.
- inefficient use of data types or data structures to store/manipulate program data.
- poor choice of file formats for multimedia objects like images, video and sound.
You should take care to reflect on what makes your code efficient or mention where its efficiency could be better – referring to the relevant sections of your code.
Usability
Usability is a measure of how easy a user interface (UI) is to use and learn. A good UI should be intuitive. It should also be satisfying to use and effective in accomplishing any particular task. User interfaces should incorporate the following characteristics:
Customisable
Users should be able to customise or tailor the UI to suit their own preference e.g. display/content/position of toolbars and palettes, ruler units, zoom, level of automated help/support. Consideration should be given to users with disabilities such as compatibility with text readers, high contrast, large icons etc.
Consistent
There should be a consistent format for all types of user interaction i.e. menu selection, data entry and dialog box confirmation (OK/Cancel). Any styling of screen elements like colours, fonts and sizes should also be consistent.
Error Protection
There should be minimal opportunity for erroneous user inputs. This can be done by using data validation or limiting inputs to those in drop down lists or button choices. Warning dialogues should be used to confirm destructive actions such as deleting a file or record. Most actions should be UNDO-able.
Most of the characteristics above may not be relevant to your programs so under this section it will be sufficient for you to reflect on: quality of user prompts and error feedback, layout and spacing of screen elements, suitability of interface for program.