The first step in software design is the identification of need. Why is this new piece of software required? What problem does it seek to solve?
The design is then divided into 5 sections:
- Purpose
- Scope
- Functional Requirements
- Boundaries
- Final details
Purpose
Your design plan should explain what the purpose of the software is and what it will be used for.
Example
The purpose of this software is to take in any number of pupil first names, surnames, their school year (1-6 integer) and their exam mark (0-100 integer). The software then calculates the grade of each pupil and prints a table showing the names, years and grades order alphabetically by the pupil names.
Scope
The next stage is to create a scope document. This should contain a list of all the deliverables that the developer(s) will create but goes beyond just the software itself. The scope document includes such items as the software, user interface designs, documentation, test plans and results, and any evaluation carried out on project conclusion.
Example
The deliverables include:
- Detailed design of the program structure, indicating top level program, refinements and data flow
- Detailed design of the user interface, identifying validated inputs and outputs
- Test plan
- Working software including comprehensive comments
- Results of testing
- Evaluation report
The timescale for this is 4 hours.
Functional requirements
Figure out what the system needs in terms of inputs. What outputs it will generate. These could be printed on the screen, written to a file, etc. And finally the processes needed to get from the inputs to the outputs.
Example
Inputs:
- First name – string, maximum 100 characters
- Surname – string, maximum 100 characters
- Year – integer, in the range 1 – 6 inclusive
- Exam mark – integer, in the range 0 – 100 inclusive
Outputs:
- Asking for a First name – string, maximum 100 characters
- Asking for a Surname – string, maximum 100 characters
- Asking for a Year – integer, in the range 1 – 6 inclusive
- Displaying a First name, Surname and Year
- Displaying a Grade – string, one of the values: A, B, C, D, No Award
Processes:
- Loop until nothing entered
- Prompt for pupil details
- Validate name
- Validate year
- Validate exam mark
- Calculate grade
- Order list of pupils
- Print list of pupils
Boundaries
The limits set on a program. What counts as a valid input? How can you check an output is correct? These are usually used when it comes to test the software.
Example
The program will check that any first name or surname is within a range or 1 to 100 characters inclusive. If no first name is entered then the program will stop prompting for a new pupil. The year is within the range 1 to 6 inclusive. The exam mark is within the range 0 to 100 inclusive. The grade will be calculated from the exam mark using the following ranges:
- A: 70 – 100
- B: 60 – 69
- C: 50 – 59
- D: 40 – 49
- No Award: 0 – 39
Final details
The design document should also highlight any assumptions that have been made during the design process. This should consider details such as:
- Software compatibility – Does this program require additional software? Does it only run on certain operating systems?
- Hardware – What is the minimum hardware specification to run the program? Does it require an input device?
- Internet / Network connection – Is this software self-contained or does it require network access?
- Training – Depending on the complexity of the program it might require users to be trained.