7.1.
The Software Development Process
The software process is a set of activities associated with
production of a software product. For the effective control of the software
process is essential to have a phased development strategy. That is it consists
of number of stages that produce one or more documents and program codes.
The software development process model is also called SDLC –
Software Development Life Cycle, as the process is repeated when software need to
be changed as long as the software is in use.
There are different software process models used in the
industry and the choice of the model should be based on the product and project
needs. Some software process models are:
1
Waterfall model
2
Evolutionary development model
3
Rapid Application Development (RAD)
4
Dynamic Systems Development model (DSDM)
1.1.1.
Waterfall Model
This first explicit model for software development process
was derived from other engineering processes. It offered a means of making the development
process more visible. Because of the cascade from one phase to another, this
model is known as the “Waterfall Model”.
The principle stages of the model map onto fundamental
development activities:
1.
Requirements Analysis and Definition
The system’s services, limitations (constraints) and goals
are established by consultation with system users. They are then defined in a
manner, which is understandable by both users and development.
2.
System and software design
The system design process partitions the requirements to
either hardware or software systems. It establishes overall system
architecture. Software design involves representing the software system
function in a form that may be transformed into one or more executable
programs.
3.
Implementation and unit testing
During this stage, the software design is realized as a set
of programs or program units. Unit testing involves verifying that each unit
meets its specification.
4.
Integration and system testing
Individual program units or programs are integrated and
tested as a complete system to ensure that software requirements have been met.
After testing, software system is delivered to the consumer.
5.
Operations and maintenance
Normally (although not necessarily) this is the longest life
cycle phase. The system is installed and put into practical use. Maintenance
involves correcting errors which are onto discovered in earlier stages of the
life cycle, improving the implementation of system units and adding the systems
requirements as new requirements are discovered.
1.1.2.
Evolutionary prototyping
This ‘approach interleaves the activities of specification,
development and validation. An initial system is rapidly developed from
abstract specification. This is then refined with customer input to produce
system which satisfies the customer’s needs.
Evolutionary development is based on the idea of developing
an initial implementation, exposing this to user comment and refining this
through many versions until an adequate system has been developed. Rather than
having separate specification, development and validation activities, these are
carried out concurrently with rapid feedback across these activities.
There are two types of evolutionary development:
Exploratory
development- where the objective of the process is to work with the
customer to explore their requirements and deliver a final system. The
development starts with the parts of the system which are understood. The
system evolves by adding new features as they are proposed by the customer.
Throw-away
prototyping - where the objective of the evolutionary development process
is to understand the customer’s requirements and hence develop a better
requirements definition for the system. The prototype concentrates on
experimenting with those parts of the customer requirements which are poorly
understood.
7.2. Program Designing
1.2.1.
Amateur vs. Professional programming
No comments:
Post a Comment