Project managers who track project status in terms of the major phases of the classic life cycle have no idea of the status of their projects. These are examples of trying to track extremely complex sets of activities using overly simple models. Note that although. a large project is in the coding phase, there are personnel on the project involved in activities typically associated with many phases of development simultaneously.
Software development methodologies play a vital part of developing the software. There are many methodologies which are used by the professional software development companies nowadays. There are certain advantages and disadvantages associated with each of them. 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. Incremental model is a type of software development model like V-model, Agile model etc.
For example,. Personnel are writing requirements, designing, coding, testing, and integration testing all at the same time. Software engineering process models by Humphrey and Kellner have shown the concurrency that exists for activities occurring during any one phase. Kellner's more recent work uses statecharts a notation that represents the states of a process to represent the concurrent relationship existent among activities associated with a specific event (e.g., a requirements change during late development), but fails to capture the richness of concurrency that exists across all software development and management activities in the project. Most software development process models are driven by time; the later it is, the later in the development process you are. A concurrent process model is driven by user needs, management decisions, and review results.
The activity—analysis—may be in any one of the states noted at any given time. Similarly, other activities (e.g., design or customer communication) can be represented in an analogous manner. All activities exist concurrently but reside in different states. For example, early in a project the customer communication activity (not shown in the figure) has completed its first iteration and exists in the awaiting changes state.
The analysis activity (which existed in the none state while initial customer communication was completed) now makes a transition into the under development state. If, however, the customer indicates that changes in requirements must be made, the analysis activity moves from the under development state into the awaiting changes state.
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. 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.
![Software Software](/uploads/1/2/5/6/125632734/406751425.jpg)
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. 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. 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. 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.
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.