knowt logo

Higher Computing - Software Design and Development

Waterfall Iterative Software Development Process 

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



Agile Software Development Process 


  • 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 vs Agile Development  



Waterfall Method

Agile Method

Strengths:

  • Rigid planning structure

  • Good for large teams

  • Helps to plan and track large software projects

  • Clear agreement on outcomes at start of project

Strengths:

  • Copes well with small changes as the project progresses.

  • Good for small-scale projects

  • Involvement of client allows changes to be agreed quickly

  • Changes cause less delay or can be tackled in the next version.

Weaknesses:

  • Very rigid approach does not deal well with mid-project changes

  • Can over-complicate simple projects

  • Unidentified issues at the analysis stage can be time-consuming and costly to fix

  • Little involvement of the client after analysis.

Weaknesses:

  • Works best with small teams

  • Needs close version control and tracking of changes

  • Can be difficult to determine the full scope of the project in the early stages

  • Usually no legally binding agreement at the start



Requirements Elicitation 


  • Involved in Analysis stage, 

  • Finding out what you have to do to make the programme meet its requirements


Methods of Requirements Elicitation 


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 Processes and Outputs  


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


Types of User  


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


Data Types  


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


Types of Design Methods  


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 - 


clarkson, yesh 


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


Types of Maintenance  


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


Types of Error  


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


Golden Rules of Programming


  • Use internal commentary


  • Use meaningful variable names


  • Provide blank lines


  • Use indentation


Test Data  


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”


Test Tables  


  • 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


Trace Tables 


  • 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


Dry Runs


  • 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


Breakpoints


  • 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


Watchpoints 


  • Breakpoint assigned to a variable

  • Program will stop running when the variable reaches a certain value



Data Types 


Integer - 

  • Positive and negative numbers


Real/Double -

  • Numbers of currency, fractions or decimals


String -

  • Words or characters


Boolean - 

  • True or false value


Loops


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



Parameter Passing and Modularity


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 and ByVal


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


Records 


  • Multi-slot array

  • Can hold multiple data types

  • Must be created completely separately from a program and be called later on


Reading from File


In Exam - 


read in from file

age = received from file

name = received from file

close file


Software Evaluation


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



Translators 

Compiler

Interpreter

  • Translates the code before the program is run.

  • The program will run fast as it's already translated.

  • Takes time to translate.

  • Not good for error detection.

  • Creates a separate .exe file.

  • Very good at error detection (doesn’t solve the error, only detects it.)

  • Interprets one line at a time.

  • Takes a long time.

  • Once a line is compiled, it’s forgotten and the compiler moves on (meaning it must translate code within loops multiple times)

  • Translates the program while it runs.


Data Structures


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


A

Higher Computing - Software Design and Development

Waterfall Iterative Software Development Process 

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



Agile Software Development Process 


  • 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 vs Agile Development  



Waterfall Method

Agile Method

Strengths:

  • Rigid planning structure

  • Good for large teams

  • Helps to plan and track large software projects

  • Clear agreement on outcomes at start of project

Strengths:

  • Copes well with small changes as the project progresses.

  • Good for small-scale projects

  • Involvement of client allows changes to be agreed quickly

  • Changes cause less delay or can be tackled in the next version.

Weaknesses:

  • Very rigid approach does not deal well with mid-project changes

  • Can over-complicate simple projects

  • Unidentified issues at the analysis stage can be time-consuming and costly to fix

  • Little involvement of the client after analysis.

Weaknesses:

  • Works best with small teams

  • Needs close version control and tracking of changes

  • Can be difficult to determine the full scope of the project in the early stages

  • Usually no legally binding agreement at the start



Requirements Elicitation 


  • Involved in Analysis stage, 

  • Finding out what you have to do to make the programme meet its requirements


Methods of Requirements Elicitation 


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 Processes and Outputs  


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


Types of User  


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


Data Types  


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


Types of Design Methods  


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 - 


clarkson, yesh 


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


Types of Maintenance  


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


Types of Error  


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


Golden Rules of Programming


  • Use internal commentary


  • Use meaningful variable names


  • Provide blank lines


  • Use indentation


Test Data  


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”


Test Tables  


  • 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


Trace Tables 


  • 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


Dry Runs


  • 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


Breakpoints


  • 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


Watchpoints 


  • Breakpoint assigned to a variable

  • Program will stop running when the variable reaches a certain value



Data Types 


Integer - 

  • Positive and negative numbers


Real/Double -

  • Numbers of currency, fractions or decimals


String -

  • Words or characters


Boolean - 

  • True or false value


Loops


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



Parameter Passing and Modularity


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 and ByVal


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


Records 


  • Multi-slot array

  • Can hold multiple data types

  • Must be created completely separately from a program and be called later on


Reading from File


In Exam - 


read in from file

age = received from file

name = received from file

close file


Software Evaluation


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



Translators 

Compiler

Interpreter

  • Translates the code before the program is run.

  • The program will run fast as it's already translated.

  • Takes time to translate.

  • Not good for error detection.

  • Creates a separate .exe file.

  • Very good at error detection (doesn’t solve the error, only detects it.)

  • Interprets one line at a time.

  • Takes a long time.

  • Once a line is compiled, it’s forgotten and the compiler moves on (meaning it must translate code within loops multiple times)

  • Translates the program while it runs.


Data Structures


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