A. Prescriptive Process Model:
- A prescriptive process model is a model that describes "how to do" according to a certain software process system.
- A prescriptive model prescribes how a new software system should be developed. Prescriptive models are used as guidelines or frameworks to organize and structure how software development activities should be performed, and in what order.
Examples of Prescriptive Process Models:
1. Waterfall Model
- In a waterfall model, each phase must be completed fully before the next phase can begin. This type of model is basically used for the project which is small and there are no uncertain requirements.
In this model the testing starts only after the development is complete.
Advantages of waterfall model:
- This model is simple and easy to understand and use.
- In this model phases are processed and completed one at a time. Phases do not overlap.
- Waterfall model works well for smaller projects where requirements are very well understood.
Disadvantages of waterfall model:
- Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought out in the concept stage.
- High amounts of risk and uncertainty.
- Not a good model for complex and object-oriented projects.
- Poor model for long and ongoing projects.
- Not suitable for the projects where requirements are at a moderate to high risk of changing.
2. Incremental Process Model
- In incremental model the whole requirement is divided into various builds. Multiple development cycles take place here, making the life cycle a “multi-waterfall” cycle.
- Cycles are divided up into smaller, more easily managed modules. Each module passes through the requirements, design, implementation and testing phases.
- A working version of software is produced during the first module, so you have working software early on during the software life cycle.
Each subsequent release of the module adds function to the previous release. The process continues till the complete system is achieved.
Advantages of Incremental model:
- Generates working software quickly and early during the software life cycle.
- This model is more flexible – less costly to change scope and requirements.
- It is easier to test and debug during a smaller iteration.
- In this model customer can respond to each built.
- Easier to manage risk because risky pieces are identified and handled during it’d iteration.
Disadvantages of Incremental model:
- Needs good planning and design.
- Needs a clear and complete definition of the whole system before it can be broken down and built incrementally.
- Total cost is higher than waterfall.
3. The RAD Model
- RAD model is Rapid Application Development model. It is a type of incremental model. In RAD model the components or functions are developed in parallel as if they were mini projects.
The developments are time boxed, delivered and then assembled into a working prototype. This can quickly give the customer something to see and use and to provide feedback regarding the delivery and their requirements.
Advantages of the RAD model:
- Reduced development time.
- Increases reusability of components
- Encourages customer feedback
Disadvantages of RAD model:
- Depends on strong team and individual performances for identifying business requirements.
- Only system that can be modularized can be built using RAD
- Requires highly skilled developers/designers.
B. Evolutionary Process Model:
- Evolutionary Process Models are iterative. They are characterized in a manner that enables software engineers to develop increasingly more complete versions of the software.
Examples of Evolutionary Process Models:
1. Prototyping Model
- The basic idea here is that instead of freezing the requirements before a design or coding can proceed, a throwaway prototype is built to understand the requirements. This prototype is developed based on the currently known requirements.
By using this prototype, the client can get an “actual feel” of the system, since the interactions with prototype can enable the client to better understand the requirements of the desired system.
Advantages of Prototype model:
- Users are actively involved in the development
- Since in this methodology a working model of the system is provided, the users get a better understanding of the system being developed.
- Errors can be detected much earlier.
- Quicker user feedback is available leading to better solutions.
- Missing functionality can be identified easily
Disadvantages of Prototype model:
- Leads to implementing and then repairing way of building systems.
- Practically, this methodology may increase the complexity of the system as scope of the system may expand beyond original plans.
2. Spiral Model
- The spiral model is similar to the incremental model, with more emphasis placed on risk analysis.
The spiral model has four phases: Planning, Risk Analysis, Engineering and Evaluation. A software project repeatedly passes through these phases in iterations (called Spirals in this model).
Advantages of Spiral model:
- High amount of risk analysis hence, avoidance of Risk is enhanced.
- Good for large and mission-critical projects.
- Strong approval and documentation control.
- Additional Functionality can be added at a later date.
Disadvantages of Spiral model:
- Can be a costly model to use.
- Risk analysis requires highly specific expertise.
- Project’s success is highly dependent on the risk analysis phase.
- Doesn’t work well for smaller projects.
3. Concurrent Development Model
The concurrent development model - called concurrent engineering .It provides an accurate state of the current state of a project.
Advantages of Concurrent Development Model:
- Focus on concurrent engineering activities in a software engineering process such as prototyping, analysis modeling, requirements specification and design.
- Represented schematically as a series of major technical activities, tasks and their associated states.
Disadvantages of Concurrent Development Model:
- Because all of the stages are working simultaneously, any changes to user requirements halts the work on any component dependent on the component being changed. This can lead to a much longer development cycle than originally planned for.
- Additionally, this model requires excellent and current communication between all teams, which is sometimes not easily feasible.