A software process encompasses a series of interconnected activities that culminate in the creation of a software product. This is conceptualized through a software process model, which serves as a simplified representation that can be elaborated upon and detailed to forge specific, actionable processes.
In the Waterfall Model, each stage in the process is exhaustively completed before moving on to the next. A checkpoint review is conducted at the conclusion of each phase, serving as a passageway to the subsequent one. This model is typically reserved for scenarios where the requirements are unambiguous and stable, the technology is well-understood, and there is no shortage of resources. Given its linear and irreversible nature, each phase demands thorough analysis and scrutiny.
Example: V-Model
testing of the product is planned in parallel with a corresponding dev phases. Defects are found at early stage. This is usually done in hardware design.
The Incremental Model splits the comprehensive set of requirements into various progressive increments. Each new increment enhances the software by adding functionality to the preceding release. This approach is particularly advantageous when the goal is to expedite the delivery of a product to the market.
Utilizing the Incremental Model, customers have the opportunity to give feedback on each release, which in turn influences the development of subsequent increments. This iterative feedback loop helps to decrease the initial launch costs and simplifies risk management by addressing issues incrementally.
Example: RAD Model
RAD stands for Rapid Application Development, a type of incremental model
The components or functions are developed in parallel, and the developments are time boxed, delivered and then assembled into a working prototype. Uses code generation based on the model; requires highly skilled developers and bigger; bigger budget to use modeling
Starts by designing and implementing part of the requirements only, which can then be reviewed before identifying further requirement.
This process is then repeated, producing a new version of the software for each cycle of the model. Each iteration is rigid with no overlaps, can get reliable user feedback early but may lead to costly redesign