The software development process is a set of activities associated with production of a software product. For the effective control of the software development process it 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 a number of 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 :
- Waterfall model
- Evolutionary development model
- Rapid application development ( RAD )
- Dynamic system development model ( DSDM )
Waterfall Model
This first explicit model for software development process was derived from other engineering processes. lt 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 principal stages of the model map onto the fundamental development activities.
Requirement 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 ts understandable by both users and development team.
System and Software Design
The system design process partitions the requirements to either hardware or software systems. lt establishes overall system architecture. Software design involves representing the software system functions in a form that may be transformed in to one or more executable programs,
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 it's specification.
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 customer.
Operations and Maintenance
Normally (although not necessarily) this is the longest life cycle phase. The system is installed and put in to practical use. Maintenance involves correcting errors which are not discovered in earlier stages of the life cycle, improving the implementation of system units and adding the system requirements as new requirements are discovered.
Advantages and Disadvantages of Waterfall Model
Advantages | Disadvantages |
Each phase ends with a deliverable | Cannot be used when requirements are not clear |
Process is more visible | Changes cannot be accepted easily |
Projects can be well managed | User involvement is poor |
Better communication among team members | Whole system is delivered at the end |
Facilitates future maintenance | Significant effort goes to intermediate output |
Evolutionary Development Model
Evolutionary development is based on the idea of developing an initial implementation, expose this to user comment and refining this through many versions until an adequate system has been developed.
Rather than have separate phases of specification, development and validation activities, these are carried out parallel with rapid feedback across these activities. Evolutionary development is based on prototyping and there are two prototyping techniques namely, evolutionary prototyping and throw-away prototyping.
Evolutionary Prototyping
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. This approach is suitable when the requirements are unclear and unstable.
Throw-away Prototyping
Where the objective of prototyping is to understand the customer's requirements and hence develop a better requirement definition for the system. The prototype concentrates on experimenting those parts of the customer requirements which are poorly understood. Once the prototype is build, it is discarded and the requirement specification is used to conventional system development. This approach is suitable when the requirements are unclear ( vague ) but stable ( does not change ).
Evolutionary development process model illustrated below is based on throwaway prototyping.
The evolutionary approach to software development is usually more effective than waterfall approach in producing systems which meet the immediate needs of the customers.
Advantages and Disadvantages of Evolutionary Development Model
Advantages | Disadvantages |
Can be used with unclear and unstable requirements |
Process is over flexible |
Requirements can be easily changed | May be difficult control and terminate |
Active user involvement | Poor system structure due repeated changes |
Iterative, incremental development & delivery | Lack of proper documentation |
Testing is integrated throughout the SDLC. | Difficult to support future maintenance |
Rapid Application Development
Today the organizations have very dynamic needs for software and these needs are rapidly changing. In addition the software industry is very competitive. In this context the software need to be developed and delivered in a short period of time. Sometime even the complete fulfillment of requirements is not expected thus the acceptance criterion is "Fitness for purpose". Rapid application development process models have evolved to fulfill this requirement.
These development approaches uses iterative and incremental development and have short development cycles with fixed time. This concept is known as "time boxing" and usually such "time box" is two to three months. Another important consideration is, that such development uses a range of CASE tools ( Computer aided software engineering ). This increases the efficiency of development. The languages which provides these type of tools to support rapid development are called 4th generation languages.
Features of 4GL
- DBMS - Database Management Systems
- Form Designers - Simple GUI design with drag and drop tools
- Code Generators - Automatic code generation support
- Report Generators - Easy to interface for report generation
- APG - Application Program Generators
No comments:
Post a Comment