12.1-Software-Development-EMK-Notes-2022
12.1-Software-Development-EMK-Notes-2022
12.1-Software-Development-EMK-Notes-2022
1 Software Development
First Step in solving a problem is to investigate issues and Current System if there is
one. Problem needs to be defined clearly and precisely. A ‘requirements
specification’ is drawn up.
Second Step is Planning a solution. Sometimes there is more than one solution. You
need to decide which is most appropriate.
Third Step is to decide how to solve problem:
• Bottom-Up: Start with a small sub-problem and then build on this.
• Top-Down: Stepwise refinement using pseudocode, flowcharts or structure charts.
Design:
To design solution, an identifier table is a good starting point. This leads to think
about data structures: do we need a 1D array or a 2D array to store data. Do we need a file
to store data long-term?
Plan your algorithm by drawing a flowchart or writing pseudocode.
Coding:
After designing solution, we need to choose a suitable high-level programming
language. If we know more than one programming language, we have to weigh up pros and
cons of each one.
When you start writing programs you might find it takes several attempts before program
compiles. When it finally does, you can execute it. It might ‘crash’, meaning that it stops
working. In this case, you need to debug the code. Program might run and give you some
output. This is Eureka moment: ‘It works!!!!’. But does program do what it was meant to do?
Testing
Testing can be done through trace table. Testing can ensure program really works
under all circumstances. There are different development methodologies. These include
waterfall, iterative and rapid application development model.
Maintenance: Program is maintained throughout its life, to ensure it continues to work
effectively. This involves dealing with any problems that arise during use, including correcting
any errors that come to light, improving functionality of the program, or adapting program
to meet new requirements.
Principles
linear, as each stage is completed before the next is begun.
well documented as full documentation is completed at every stage.
low customer involvement; only involved at start and end of the process
Merits Demerits
Easy to understand and use as stages are Difficult to change requirements at a later
clearly defined. stage
Stages do not overlap and are completed one Not suitable for programs where
at a time. paperscambridge.com
requirements could be subject to change
Easy to manage due to fixed stages in model No working software is produced until late
and Each stage has specific deliverables. during life cycle.
Not suitable for long, object-oriented and
complex projects.
It is difficult to measure progress within
stages.
Works well for smaller programs where Integration is done at very end, which
requirements are known and understood. doesn’t allow identifying potential technical
issues early.
The iterative Model
This development cycle first develops a simple subset of requirements, then expands or
enhances model and runs development cycle again. These program development cycles are
repeated until full system has been developed. This model is suitable for projects for which
major requirements are known but some details are likely to change or evolve with time.
Principles, Merits and Demerits to the iterative model
Principles
Incremental development as program development lifecycle is repeated.
working programs are produced for part of system at every iteration
high customer involvement, as part of system can be shown to the customer after every iteration.
Merits Demerits
Some working programs developed quickly at an Only large software development projects
early stage in lifecycle. can benefit because it is hard to break a small
Easier to test and debug smaller programs. software system into further small
More flexible as easier to alter requirements and serviceable modules.
Progress can be measured.
Customers involved at each iteration therefore no Design issues might arise because not all
surprises when final system delivered. requirements are gathered at the beginning
of the entire life cycle.
Software is produced early, which facilitates More resources may be required.
customer evaluation and feedback.
Better suited for large and mission-critical Needs good planning overall and for every
projects. stage
Parallel development can be planned.
Less costly to change the scope / requirements. Defining increments may require definition of
Risks are identified and resolved during iteration. the complete system.
Easier to manage risk as high-risk part is done
first.
paperscambridge.com
Principles
Minimal planning.
Reuses previously written code where possible, makes use of automated code generation where
possible.
High customer involvement, as customers can use the prototypes during development.
Benefits Drawbacks
Reduced overall development time. System under development needs to be
modular.
Rapid frequent customer feedback informs Needs strong teams of skilled developers and
development. designers.
Very flexible as requirements evolve from Not suitable for short simple projects.
feedback during development.
As parts of system are developed side by side, Suitable for systems that are component
modification is easier because each part must based and scalable.
work independently.
Progress can be measured.
Reduces development time.