Higher Computing - Software Design and Development
Method of developing a program using structured steps to avoid errors
Analysis -
Find out what the program needs to do
Can be done through interviews, DIY sessions
Software specification document must be created, a legally binding document describing what the software must do and how long the development process will take
Scope/mission creep included in software specification, states what will and won’t be involved in the project, meaning developer can reject changes requested by the client if they are outside the scope
Analyst convert’s the client’s program description into software specification
Design -
Deciding layout, inputs,outputs and processes
Analyst creates the HCI (Human Computer Interface) using wireframes and also creates logic flow structure
Methods used can be pseudocode, flow charts, structure diagrams etc
Implementation -
Writing the code up
If errors are in design are spotted the design stage may have to be redone
Testing -
Make sure the software works correctly
Test tables produced for inputs, expected outputs and actual outputs
Documentation -
Writing up a user guide and technical guide
User guide should specify how to actually use the program and any functions the user will need to know
Technical guide must specify the minimum hardware requirements (CPU, RAM, Storage, etc) and how to install and run the program
Evaluation -
Review it’s fitness for purpose and whether or not it meets the requirements of the original software specification
Used to check for efficient use of coding constructs, how usable it is, how easy to maintain and update the program is, and how robust to errors it is
Maintenance -
Making any required changes/updates
3 methods used are Corrective, Adaptive and Perfective
Method of developing software quicker and on a smaller scale
Breaks development process into smaller steps
More interaction with the client for changes to be made easier and more frequently
Not viable for large software projects or certain clients (one-person businesses)
Sprint - Time critical task that must be completed within a time limit
Upload deadlines given
Variable names must be agreed on
Waterfall Method | Agile Method |
Strengths:
| Strengths:
|
Weaknesses:
| Weaknesses:
|
Involved in Analysis stage,
Finding out what you have to do to make the programme meet its requirements
DIY (Do It Yourself) -
Go out and do the required job yourself, find out what you have to do to actually process job
Interviews -
Ask those doing the job how it’s done, how current system works
Observations -
Watching people actually do the job, record steps on how to do it
Inputs -
Anything taken into the program to be processed
Processes -
What is carried out using the input to change it
Outputs -
The final result of the program
Novice -
App users with little to no experience
Example Website: CBeebies
Intermediate -
Users that have a good amount of experience, know how to do most things Example Website: BBC News
Expert -
Mastered a piece of software, highly able
Example Website: CERN
Integer -
Allows to store whole numbers
Real/Double -
Allows to store decimal numbers
String -
Allows to store text, letters and characters
Boolean -
Stores yes or no, true or false value
Do not start variable names with numbers or include spaces, instead use either underscores or camel hump notation
Example -
Underscores - quick_brown_fox
Camel Hump - quickBrownFox
Wireframe Diagram -
Quick sketch of how a programme will look
Drawn on paper or Microsoft Paint
Must be labelled
Eg -
Use a wireframe to design the user-interface of a programme which:
Asks the user to enter three numbers
Adds the numbers together together
Displays the total of the three numbers
Low-Fidelity Prototype -
Almost the same as a wireframe, but with more detail
Usually created in Photoshop or Publisher
Flow Charts -
Shows the underlying logic and the flow of information in a programme
Also show logic gates or decisions
Eg -
Structure Diagrams -
Involved a lot in Higher Course
Shows you the overall structure of your program
Inheritance & Modularity
Pseudocode -
Way of illustrating program design in text
Can use plain English
Only gives the main steps
Corrective Maintenance -
Fixing errors that weren’t discovered during testing but instead during use of the program
Only maintenance type where the developer is solely responsible for the cost and not the company
Adaptive Maintenance -
Is necessary for if the client wants to run their software on a different operating system or device
Code must be adapted to run on new system
Usually paid for by client
Perfective Maintenance -
Is necessary for when the client requests changes to the program, due to changes in requirements or legal legislation
Can require whole rework of program which could be expensive
Paid for in full by the client
Syntax Error -
Error with how the code has been written, mainly spelling mistakes or mistake in structure
Can be caught when using a compiler
Execution Error -
Error during the running of a program that causes it to crash
Can be caused by input errors (dividing by zero) or trying to access non-existent data
Can’t be find during compiling
Logic Error -
Errors during running where the programmer has written something wrong
For example, dividing an input by the wrong number
Can't be found during compiling
Use internal commentary
Use meaningful variable names
Provide blank lines
Use indentation
Normal Data -
Data that the program is expected to deal with
Eg. Program expected to take in numbers 1-10, examples of normal test data would be 2, 5, 7
Extreme Data -
Data on our outside the boundaries of what the program should be able to deal with
Eg. Program given data such as 0, 1, 10, 11, 0 and 11 should be rejected
Exceptional Data -
Data that the program isn’t able to deal with, will likely break the program
Eg. Program given data such as “TEN” or “CAT”
Helps programmer test a full program, records data and results
Test Being Done - | |||
Input | Expected Output | Actual Output | Screenshot |
Normal Data | |||
Extreme Data | |||
Exceptional Data |
Example -
Test Being Done - Program to add two numbers between 1 and 10 | |||
Input | Expected Output | Actual Output | Screenshot |
Normal Data Add 7 and 4 | 11 | 11 | |
Extreme Data Add 0 and 11 | 11 | Error - Cannot add numbers below 1 or above 10 | |
Exceptional Add FIVE and SIX | 11 | Error - Input must be a number |
Helps a programmer keep track of a variable’s value in a program
Line Number | Variable #1 | Variable #2 | Variable #3 |
1 | |||
2 | |||
3 | |||
4 | |||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 | |||
11 |
Example -
Program to add two numbers between 1 and 10
Line Number | Number 1 | Number 2 | Total |
1 | 0 | ||
2 | 4 | 0 | |
3 | 4 | 7 | 0 |
4 | 4 | 7 | 0 |
5 | 4 | 7 | 11 |
Programmer works through the program on paper to follow code’s logic
Good for detecting errors in the flow of logic before implementing the program
Programmer could use a trace table to keep track of variable values during the run
Used to put breaks in program code
When breakpoint triggered the program will stop
Allows programmer to see variable values at a given point in the code and help to identify logic errors
Breakpoint assigned to a variable
Program will stop running when the variable reaches a certain value
Integer -
Positive and negative numbers
Real/Double -
Numbers of currency, fractions or decimals
String -
Words or characters
Boolean -
True or false value
For Loop -
Loops for specified amount of times
Eg -
For counter = 0 to 3
total = total + 1
Next
While Loop -
Loops until a certain requirement is met
Eg -
While input = 3
total = total + 3
End While
If Loop -
Loops once when a certain requirement is met
Eg -
If counter = 3
total = total + 3
End If
Modularity -
Breaks down main program into smaller sub-programs
Means modules can be tested independently
Can mirror structure diagram
Parameter Passing -
Formal parameters appear in call statement
Actual parameters is in your module
Both must be in the same order between call statement and private sub to prevent type mismatches
ByRef -
Passing the actual information on
Can change original value
ByVal -
Passes on copy of information,
Original value does not change,
Uses up more performance / storage due to requiring more file size
Multi-slot array
Can hold multiple data types
Must be created completely separately from a program and be called later on
In Exam -
read in from file
age = received from file
name = received from file
close file
Fitness for Purpose -
Making sure that the finished product meets the requirements of the original software specification
Broken down into different criteria
Efficient Use of Coding Constructs -
Make good use of system resources, and code should be written as efficiently as possible
Eg - Using arrays, loops, pre-defined functions
Usability -
How easy it is for somebody to use a program
Make sure the program is as easy to learn as possible
Eg - Objects / buttons should be clearly labelled, error messages should be easily understood, must be suitable for all different levels of user
Maintainability -
How easy the program is to work on and update
Eg - Using modular coding through sub-programs, meaningful variable names, internal commentary, white space, indentation
Robustness -
How safe and protected the program is to errors
Eg - Should be able to cope with invalid inputs, should report errors clearly
Compiler | Interpreter |
---|---|
|
|
Arrays -
Arrays are a data structure that can store multiple values of the same data type i.e.
integer
Parallel Arrays -
Parallel arrays are multiple arrays all holding data relevant to each other i.e forename
and surname
Records -
A record structure is used to store multiple data types but only one of each i.e
One forename and one age
Array of Records -
An array of records structure is used to store multiple of different data types i.e.
multiple forenames and multiple ages
Method of developing a program using structured steps to avoid errors
Analysis -
Find out what the program needs to do
Can be done through interviews, DIY sessions
Software specification document must be created, a legally binding document describing what the software must do and how long the development process will take
Scope/mission creep included in software specification, states what will and won’t be involved in the project, meaning developer can reject changes requested by the client if they are outside the scope
Analyst convert’s the client’s program description into software specification
Design -
Deciding layout, inputs,outputs and processes
Analyst creates the HCI (Human Computer Interface) using wireframes and also creates logic flow structure
Methods used can be pseudocode, flow charts, structure diagrams etc
Implementation -
Writing the code up
If errors are in design are spotted the design stage may have to be redone
Testing -
Make sure the software works correctly
Test tables produced for inputs, expected outputs and actual outputs
Documentation -
Writing up a user guide and technical guide
User guide should specify how to actually use the program and any functions the user will need to know
Technical guide must specify the minimum hardware requirements (CPU, RAM, Storage, etc) and how to install and run the program
Evaluation -
Review it’s fitness for purpose and whether or not it meets the requirements of the original software specification
Used to check for efficient use of coding constructs, how usable it is, how easy to maintain and update the program is, and how robust to errors it is
Maintenance -
Making any required changes/updates
3 methods used are Corrective, Adaptive and Perfective
Method of developing software quicker and on a smaller scale
Breaks development process into smaller steps
More interaction with the client for changes to be made easier and more frequently
Not viable for large software projects or certain clients (one-person businesses)
Sprint - Time critical task that must be completed within a time limit
Upload deadlines given
Variable names must be agreed on
Waterfall Method | Agile Method |
Strengths:
| Strengths:
|
Weaknesses:
| Weaknesses:
|
Involved in Analysis stage,
Finding out what you have to do to make the programme meet its requirements
DIY (Do It Yourself) -
Go out and do the required job yourself, find out what you have to do to actually process job
Interviews -
Ask those doing the job how it’s done, how current system works
Observations -
Watching people actually do the job, record steps on how to do it
Inputs -
Anything taken into the program to be processed
Processes -
What is carried out using the input to change it
Outputs -
The final result of the program
Novice -
App users with little to no experience
Example Website: CBeebies
Intermediate -
Users that have a good amount of experience, know how to do most things Example Website: BBC News
Expert -
Mastered a piece of software, highly able
Example Website: CERN
Integer -
Allows to store whole numbers
Real/Double -
Allows to store decimal numbers
String -
Allows to store text, letters and characters
Boolean -
Stores yes or no, true or false value
Do not start variable names with numbers or include spaces, instead use either underscores or camel hump notation
Example -
Underscores - quick_brown_fox
Camel Hump - quickBrownFox
Wireframe Diagram -
Quick sketch of how a programme will look
Drawn on paper or Microsoft Paint
Must be labelled
Eg -
Use a wireframe to design the user-interface of a programme which:
Asks the user to enter three numbers
Adds the numbers together together
Displays the total of the three numbers
Low-Fidelity Prototype -
Almost the same as a wireframe, but with more detail
Usually created in Photoshop or Publisher
Flow Charts -
Shows the underlying logic and the flow of information in a programme
Also show logic gates or decisions
Eg -
Structure Diagrams -
Involved a lot in Higher Course
Shows you the overall structure of your program
Inheritance & Modularity
Pseudocode -
Way of illustrating program design in text
Can use plain English
Only gives the main steps
Corrective Maintenance -
Fixing errors that weren’t discovered during testing but instead during use of the program
Only maintenance type where the developer is solely responsible for the cost and not the company
Adaptive Maintenance -
Is necessary for if the client wants to run their software on a different operating system or device
Code must be adapted to run on new system
Usually paid for by client
Perfective Maintenance -
Is necessary for when the client requests changes to the program, due to changes in requirements or legal legislation
Can require whole rework of program which could be expensive
Paid for in full by the client
Syntax Error -
Error with how the code has been written, mainly spelling mistakes or mistake in structure
Can be caught when using a compiler
Execution Error -
Error during the running of a program that causes it to crash
Can be caused by input errors (dividing by zero) or trying to access non-existent data
Can’t be find during compiling
Logic Error -
Errors during running where the programmer has written something wrong
For example, dividing an input by the wrong number
Can't be found during compiling
Use internal commentary
Use meaningful variable names
Provide blank lines
Use indentation
Normal Data -
Data that the program is expected to deal with
Eg. Program expected to take in numbers 1-10, examples of normal test data would be 2, 5, 7
Extreme Data -
Data on our outside the boundaries of what the program should be able to deal with
Eg. Program given data such as 0, 1, 10, 11, 0 and 11 should be rejected
Exceptional Data -
Data that the program isn’t able to deal with, will likely break the program
Eg. Program given data such as “TEN” or “CAT”
Helps programmer test a full program, records data and results
Test Being Done - | |||
Input | Expected Output | Actual Output | Screenshot |
Normal Data | |||
Extreme Data | |||
Exceptional Data |
Example -
Test Being Done - Program to add two numbers between 1 and 10 | |||
Input | Expected Output | Actual Output | Screenshot |
Normal Data Add 7 and 4 | 11 | 11 | |
Extreme Data Add 0 and 11 | 11 | Error - Cannot add numbers below 1 or above 10 | |
Exceptional Add FIVE and SIX | 11 | Error - Input must be a number |
Helps a programmer keep track of a variable’s value in a program
Line Number | Variable #1 | Variable #2 | Variable #3 |
1 | |||
2 | |||
3 | |||
4 | |||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 | |||
11 |
Example -
Program to add two numbers between 1 and 10
Line Number | Number 1 | Number 2 | Total |
1 | 0 | ||
2 | 4 | 0 | |
3 | 4 | 7 | 0 |
4 | 4 | 7 | 0 |
5 | 4 | 7 | 11 |
Programmer works through the program on paper to follow code’s logic
Good for detecting errors in the flow of logic before implementing the program
Programmer could use a trace table to keep track of variable values during the run
Used to put breaks in program code
When breakpoint triggered the program will stop
Allows programmer to see variable values at a given point in the code and help to identify logic errors
Breakpoint assigned to a variable
Program will stop running when the variable reaches a certain value
Integer -
Positive and negative numbers
Real/Double -
Numbers of currency, fractions or decimals
String -
Words or characters
Boolean -
True or false value
For Loop -
Loops for specified amount of times
Eg -
For counter = 0 to 3
total = total + 1
Next
While Loop -
Loops until a certain requirement is met
Eg -
While input = 3
total = total + 3
End While
If Loop -
Loops once when a certain requirement is met
Eg -
If counter = 3
total = total + 3
End If
Modularity -
Breaks down main program into smaller sub-programs
Means modules can be tested independently
Can mirror structure diagram
Parameter Passing -
Formal parameters appear in call statement
Actual parameters is in your module
Both must be in the same order between call statement and private sub to prevent type mismatches
ByRef -
Passing the actual information on
Can change original value
ByVal -
Passes on copy of information,
Original value does not change,
Uses up more performance / storage due to requiring more file size
Multi-slot array
Can hold multiple data types
Must be created completely separately from a program and be called later on
In Exam -
read in from file
age = received from file
name = received from file
close file
Fitness for Purpose -
Making sure that the finished product meets the requirements of the original software specification
Broken down into different criteria
Efficient Use of Coding Constructs -
Make good use of system resources, and code should be written as efficiently as possible
Eg - Using arrays, loops, pre-defined functions
Usability -
How easy it is for somebody to use a program
Make sure the program is as easy to learn as possible
Eg - Objects / buttons should be clearly labelled, error messages should be easily understood, must be suitable for all different levels of user
Maintainability -
How easy the program is to work on and update
Eg - Using modular coding through sub-programs, meaningful variable names, internal commentary, white space, indentation
Robustness -
How safe and protected the program is to errors
Eg - Should be able to cope with invalid inputs, should report errors clearly
Compiler | Interpreter |
---|---|
|
|
Arrays -
Arrays are a data structure that can store multiple values of the same data type i.e.
integer
Parallel Arrays -
Parallel arrays are multiple arrays all holding data relevant to each other i.e forename
and surname
Records -
A record structure is used to store multiple data types but only one of each i.e
One forename and one age
Array of Records -
An array of records structure is used to store multiple of different data types i.e.
multiple forenames and multiple ages