12. Software Development
1. Program Development Lifecycle
he program development lifecycle is a structured process of the formal stages involved in software
T
(program) development - the choice of program development cycle depends on the approach/method
required to produce the program
● It ensures programs are developed systematically, efficiently, well-ordered and clearly
documented, so that it can be understood and used by other developers
● Each stage of the cycle has a specific purpose, and together they help developers solve real-world
problems with reliable software
● It includes the full life of a program - it may require alterations at any time in order to deal with
new circumstances or new errors that have been found
Stage 1 - Analysis:
● Before a problem can be solved, it needs to be clearly defined so everyone working on the
solution understands exactly what is needed
● The analysis stage may be conducted by a consultant who has more experience in software
development that the company, to better pass information to the developers
● May use abstraction to ignore unnecessary detail and focus only on what matters:
○ What the program must do (core functionality)
○ What limitations it must work within (constraints)
● The analysis stage often includes:
○ a feasibility study (e.g. is it economically worthwhile)
○ an investigation
○ further fact finding
● Documents that might be produced include:
○ Requirements specification (client requirements)
○ Documentation related to current systems (e.g. feasibility study, list of problems with
current system, Entity-Relationship diagram of current system, Data Flow Diagram of
current system)
○ Interview notes and survey results
Stage 2 - Design:
● The design stage involves planning how the program will work
● Involves:
○ Deciding on data structures/produce identifier table
■ Identifier table includes: explanation of what each variable is used for, the purpose
of each variable, an example of data values stored/initialisation value
○ Use of algorithms/flowcharts/pseudocode/structure charts/state-transition diagrams
○ Deciding the program structure (modules) and use of library routines - team allocation
○ Deciding on user interface
○ Deciding on testing method/creating a testing plan
○ Selecting programming language/environment
● After the design stage is complete, the programmer should know:
○ all the tasks that need to be completed
○ how each task is to be performed
○ how the tasks work together
, Stage 3 - Coding:
● In coding stage, developers begin writing the program using a suitable programming language
○ Use the programming language which best suits the problem being solved
● Code is written in modules that work together to solve the full problem
● Iterative testing is used - each module is tested and debugged individually as it is created
○ Modules are retested whenever changes are made, to ensure no new errors are introduced
Stage 4 - Testing:
● The program is run many times with many different sets of test data, to test it:
○ Meets all the original requirements
○ Handles valid and invalid input correctly
○ Performs reliably under different conditions
Stage 5 - Maintenance:
● After the program has been delivered to the client or end users, it is maintained throughout its
life, to ensure it continues to be useful and reliable
● This includes:
○ Corrective - fixing any errors/bugs that appear during use (and were missed in testing)
○ Perfective - improving the performance of the program during its use (possibly based on
user feedback) e.g. improving response speeds
○ Adaptive - updating/altering a program so it can perform any new tasks/added
functionality required by the customer e.g. change to requirements, needs to take
advantage of new technology/hardware, change in regulation/legislation
There are different methodologies that developers use in their approach to the development lifecycle
● The waterfall model
● The iterative model
● Rapid application development (RAD)
Waterfall model:
● This is a linear sequential development cycle - each stage is
completed and signed off before the next stage is begun
○ The downward arrows indicate the result from one
stage is passed to the next
○ The upward arrows indicate that more work could be
required at a previous stage to complete the current
stage
● Well documented as full documentation is completed at every stage
● Low customer involvement; only involved at the start and end of the process
● Benefits:
○ easy to manage, understand and use
○ stages do not overlap and are completed one at a time
○ each stage has specific deliverables
○ works well for smaller programs where requirements are known and understood and
unlikely to change
● Drawbacks:
○ difficult to change the requirements at a later stage
○ not suitable for programs where the requirements could be subject to change
○ working program is produced late in the lifecycle
○ not suitable for long, complex projects
1. Program Development Lifecycle
he program development lifecycle is a structured process of the formal stages involved in software
T
(program) development - the choice of program development cycle depends on the approach/method
required to produce the program
● It ensures programs are developed systematically, efficiently, well-ordered and clearly
documented, so that it can be understood and used by other developers
● Each stage of the cycle has a specific purpose, and together they help developers solve real-world
problems with reliable software
● It includes the full life of a program - it may require alterations at any time in order to deal with
new circumstances or new errors that have been found
Stage 1 - Analysis:
● Before a problem can be solved, it needs to be clearly defined so everyone working on the
solution understands exactly what is needed
● The analysis stage may be conducted by a consultant who has more experience in software
development that the company, to better pass information to the developers
● May use abstraction to ignore unnecessary detail and focus only on what matters:
○ What the program must do (core functionality)
○ What limitations it must work within (constraints)
● The analysis stage often includes:
○ a feasibility study (e.g. is it economically worthwhile)
○ an investigation
○ further fact finding
● Documents that might be produced include:
○ Requirements specification (client requirements)
○ Documentation related to current systems (e.g. feasibility study, list of problems with
current system, Entity-Relationship diagram of current system, Data Flow Diagram of
current system)
○ Interview notes and survey results
Stage 2 - Design:
● The design stage involves planning how the program will work
● Involves:
○ Deciding on data structures/produce identifier table
■ Identifier table includes: explanation of what each variable is used for, the purpose
of each variable, an example of data values stored/initialisation value
○ Use of algorithms/flowcharts/pseudocode/structure charts/state-transition diagrams
○ Deciding the program structure (modules) and use of library routines - team allocation
○ Deciding on user interface
○ Deciding on testing method/creating a testing plan
○ Selecting programming language/environment
● After the design stage is complete, the programmer should know:
○ all the tasks that need to be completed
○ how each task is to be performed
○ how the tasks work together
, Stage 3 - Coding:
● In coding stage, developers begin writing the program using a suitable programming language
○ Use the programming language which best suits the problem being solved
● Code is written in modules that work together to solve the full problem
● Iterative testing is used - each module is tested and debugged individually as it is created
○ Modules are retested whenever changes are made, to ensure no new errors are introduced
Stage 4 - Testing:
● The program is run many times with many different sets of test data, to test it:
○ Meets all the original requirements
○ Handles valid and invalid input correctly
○ Performs reliably under different conditions
Stage 5 - Maintenance:
● After the program has been delivered to the client or end users, it is maintained throughout its
life, to ensure it continues to be useful and reliable
● This includes:
○ Corrective - fixing any errors/bugs that appear during use (and were missed in testing)
○ Perfective - improving the performance of the program during its use (possibly based on
user feedback) e.g. improving response speeds
○ Adaptive - updating/altering a program so it can perform any new tasks/added
functionality required by the customer e.g. change to requirements, needs to take
advantage of new technology/hardware, change in regulation/legislation
There are different methodologies that developers use in their approach to the development lifecycle
● The waterfall model
● The iterative model
● Rapid application development (RAD)
Waterfall model:
● This is a linear sequential development cycle - each stage is
completed and signed off before the next stage is begun
○ The downward arrows indicate the result from one
stage is passed to the next
○ The upward arrows indicate that more work could be
required at a previous stage to complete the current
stage
● Well documented as full documentation is completed at every stage
● Low customer involvement; only involved at the start and end of the process
● Benefits:
○ easy to manage, understand and use
○ stages do not overlap and are completed one at a time
○ each stage has specific deliverables
○ works well for smaller programs where requirements are known and understood and
unlikely to change
● Drawbacks:
○ difficult to change the requirements at a later stage
○ not suitable for programs where the requirements could be subject to change
○ working program is produced late in the lifecycle
○ not suitable for long, complex projects