Explain software process model

The ultimate objective of the software engineering is to produce good quality maintainable software within the reasonable time frame and the affordable cost. This is achieve only if we have reasonable processes to produced it. Software development organization follow some processes when developing a software product. A key component of any software development process is the life cycle model on which the process is based. In the IEEE standard glossary of software engineering terminology, the software life cycle is “The period of time that starts when a software product is conceived and ends when the product is no longer available for use. The software life cycle typically includes requirement phase, design phase, implementation phase, test phase, installation and check out phase, operation and maintenance phase and sometimes retirement phase.” Software life cycle model is particular abstraction that represent the software life cycle model, which also known as software development life cycle. Few known life cycle models are as follows:
1) Built & fixed model
2) Waterfall model
3) Increment process model
    i) Iterative enhancement model
    ii) Rapid Application Development model (RAD)
4) Evolutionary process model
    i) Prototyping model
    ii) Spiral model

1) Built & Fixed model 
- It is simple two phase model the first phase is to write the code and second is to fix it.
- This approach usually work well on small programming exercises 100 or 200 line long. 
- The cost of the development using this approach is actually very high as compare to the cost of property specify and carefully designed product.
- In addition, maintenance of the product can be extremely difficult without any specification or any design document. 

2) Waterfall model 
The waterfall model has five phases. Requirement analysis and specification, design, implementation and unit testing, integration and system testing, operation and maintenance.

i] Requirement analysis and specification
- The goal of this phase is nothing but to understand the requirement of the customer and to document them properly.
- The developer must complete the each phase before next phase begin.
- This phase produces the large documents, return in natural language, contain the description of what the system do without describing how it will be done. The resultant document is known as software requirement specification.

ii] Design phase
 
- The goal of this phase is to transfer requirements specification into a structure that is suitable for implementing in some programming language.
- Here overall software architecture is defined and high level design work is performed.
- This work is documented and known as software design description.

iii] Implementation and unit testing phase 
- During this phase, design is implemented if software design description. is complete, the implementation or coding phase proceed smoothly, because all the information needed by the software developers is contained in SDD.
- During testing, the major activities are centered around the examination and modification of the code.

iv] Integration and system testing phase 
- This is very important phase, effective phase will be contribute to the delivery of the higher quality software product and lower maintenance cost.
- It is very expensive activity and consume one-third to one-half of the cost of the typically development project.
- As we know that the purpose of unit testing is to determine each stage of independent module is also correct and for that reason integration testing is performed.

v] Operation and maintenance phase 
- Software maintenance is a task that every development group has face when software is delivered to the customer site.
- Software maintenance is very broad activity that includes the error correction, enhancement of capabilities detection of optimization.
- The purpose of this software phase is to preserve the value of software over time.
Limitation of waterfall model 
1. It is difficult to define all requirements at beginning of project. 
2. This model is not suitable for accommodating any change. 
3. It does not scale up well to large project. 
4. Real projects are rarely sequential.
Due to this weaknesses, the application of waterfall model should be limited to situations where their requirements and their implementation are well understood.

3) Increment process model 
Increment process models are effective in the situations where requirements are defined precisely and there is no confusion about the functionality of the final product. The incremental process model are again divided into two model.
i] Iterative enhancement model
ii] Rapid Application Development model (RAD)

i] Iterative enhancement model 
- The iterative enhancement model has the same phase as the waterfall model but with the fewer restrictions.
- Generally the phases occurs as the waterfall model but these may be conducted in several cycles.
- A usable product is released at the end of each cycle, with each release providing the additional functionality.
- During the first requirements analysis phase, customers and developers specify as many requirements as possible and prepare Software requirement specification documents.
- Developers implement the specified requirements in one or more cycles of design, implementation and test based on defined priorities.
 ii] Rapid Application Development model (RAD) 
- This model is an incremental process model and developed by IBM in 1980.
- The process is started with building a rapid prototype and is given to user for evaluation.
- There are four phases in this model and these are shown as following fig.
i] Requirement planning phase 
Requirements are captured using any group elicitation technique, only issue is the active involvement of users for understanding the project.

ii] User description 
Joint team of developers and users are contributed to prepare, understand and review requirements.

iii] Construction phase 
This phase combines the detail design, coding and testing phase of the waterfall model. 

iv] Cut over phase 
This phase incorporates acceptance testing by the users, installation of the system and user training. 

4) Evolutionary process model 
- In evolutionary process model, the same phase as defined for waterfall model occurs here in cyclic fashion.
- At the end of each cycle, the evolutionary process models does not require a usable product, that’s why this model is differ from iterative enhancement model.
- On the completion of each cycle, the system would become more sophisticated.
- Evolutionary process models are useful for projects using new terminology that is not well understood.
- This is also used for complex projects where all functionality must be delivered at one time but the requirements are not well understood at the beginning.

i] Prototyping model 
- A disadvantage of waterfall model is that the working software is not available until late in the process, thus delaying the discovery of errors.
- At alternative to this is to first develop a working prototype of the software instead of developing the actual software.
- The developers use this prototype to redefine the requirements and prepare the final specification documents.
- when the prototype is created, it is reviewed by the customer, typically this review gives the feedback to the developers that helps to remove uncertainties in the requirements of the software.




















 





 




 














 















 




 




 

















 

Comments

Popular posts from this blog

Brief shortnote on Requirement elicitation and requirement analysis

Connection oriented protocol / TCP

Connection-less protocol/ UDP