04 - Software Development Methodologies
Class: CSCE-331
Notes:
When starting any new app or software development project, it's important to consider the various steps necessary for its final rollout. The steps needed for the software to function properly include, development, implementation/coding, testing, and regular maintenance.
No matter the type of software or app you're creating, a development and testing plan is an imperative aspect to the successful completion of any project.
We'll review the most popular development and software lifecycle management models below, along with their respective advantages and disadvantages.
8 Types of Software Development Models:
- Waterfall Model
- V-Model
- Incremental Model
- RAD Model
- Agile Model
- Iterative Model
- Spiral Model
- Prototype Model
The Eight Types of Models in Software Engineering
1. Waterfall Model
/CSCE-331/Visual%20Aids/Pasted%20image%2020260125163119.png)
The Waterfall Model is a linear sequential flow, often used with projects that have a defined set of requirements. Reflective of its name, the model's process flows steadily downwards through the phases of software implementation.
This model relies on the completion of the previous phase for the following to begin. Because the model does not support going back to previously completed phases, the Waterfall Model should be used with projects that do not anticipate unforeseen changes mid-development.
This approach was one of the earliest models used for software development.
Advantages and Disadvantages of Waterfall
- Advantages: Simple and understandable, the Waterfall Model is a manageable method ideal for lifecycle management of smaller projects where the requirements are established and finalized upfront.
- Disadvantages: Because of its rigid structure, the Waterfall Model does not work well for complex projects where there is a chance of a change in requirements and/or significant impromptu testing throughout the software development stage.
2. V-Model
/CSCE-331/Visual%20Aids/Pasted%20image%2020260125163444.png)
An extension of the Waterfall Model, the V-Model also functions as a sequential flow. However, instead of only moving linearly downward, the software development lifecycle bends upwards after the coding (for each of the testing phases).
For every phase in the downward sequence, there is a corresponding testing phase in the following upwards sequence. This model is used for projects where software requirements and tools are known upfront.
Advantages and Disadvantages of V-Model
- Advantages: The V-Model is a simple process that's great for smaller projects. Using the V-Model can yield a higher chance of success due to the test plans of the development stage and regularly schedule updates throughout its lifecycle.
- Disadvantages: Similar to the Waterfall Model, the V-Model is very rigid in nature so it isn't ideal for applications or systems software that may require unforeseen changes/updates throughout the software lifecycle.
3. Incremental Model
Built to mediate the shortcomings of the Waterfall Model, the Incremental Model consists of iterative and incremental development stages. The Incremental Model is essentially comprised of several mini Waterfall cycles.
This model divides the development into small sections/stages and it can allow the software developers to take advantage of learnings and insights gleaned from earlier development stages.
Advantages and Disadvantages of Incremental Model
- Advantages: The Incremental Model is a great solution for projects that need accommodation for some change requests between increments. This model also yields the benefit of being able to detect problems earlier in the software development for better lifecycle management planning.
- Disadvantages: A potential disadvantage to the Incremental Model is the need for strategic planning and documentation. This method also tends to require more resources, staff and monetary, behind the project. This model isn't ideal for ongoing development as the next sequence cannot begin until the previous stage has fully completed.
4. RAD Model
/CSCE-331/Visual%20Aids/Pasted%20image%2020260125164057.png)
Short for Rapid Application Development, the RAD Model is a modification of the Incremental Model. When implementing this model, several components are developed simultaneously as if they were smaller, individual projects. The different components are then assembled into working prototypes.
Advantages and Disadvantages of RAD
- Advantages: The RAD Model allows for reduced development time and allows for more customer feedback throughout the software development.
- Disadvantages: The applicability of the RAD Model is limited, as the project needs to be easily modularized into several increments. It also requires highly-versed developers as well as excellent modeling and planning skills. Issues with the final assembly of components could result in unforeseen setbacks and the redeveloping of components to properly fit the rest.
5. Agile Model
/CSCE-331/Visual%20Aids/Pasted%20image%2020260125164317.png)
This model is rooted in process adaptability and user engagement with rapid delivery of functioning software components. It has both Iterative and Incremental features, as it breaks the product development into small incremental builds that are then provided in iterations.
The Agile Model relies on heavy collaboration between cross-functional teams and the customer/user.
Advantages and Disadvantages of Agile
- Advantages: The Agile Model decreases the amount of time to yield individual system features. It also calls for a lot of communication and continuous feedback from the customer/user that can provide clear direction for the project.
- Disadvantages: The Agile method can potentially veer-off track as it relies on end-user interaction that may or may not be clearly expressed. Documentation is also minimal for an Agile software development strategy and requires a well-versed, cross-functional team.
6. Iterative Model
/CSCE-331/Visual%20Aids/Pasted%20image%2020260125164547.png)
The Iterative Model relies on specifying and implementing individual parts of the software, rather than attempting to start with full specification requirements. Once a rough product is created within an iteration, it is then reviewed and improved in the next iteration and so on. The Iterative Model relies on the whole product being developed step-by-step (Design/Develop, Test, Implement).
Advantages and Disadvantages of Iterative Model
- Advantages: Since the product is developed gradually, it's easy to identify problems early when using this software development model.
- Disadvantages: Because each iteration phase is rigid with no overlaps, the Iterative Model can take longer and be more costly.
7. Spiral Model
/CSCE-331/Visual%20Aids/Pasted%20image%2020260125164809.png)
The Spiral Model combines elements of both the Iterative and Waterfall development models, in efforts to combine advantages of top-down and bottom-up production. The Spiral Model has four phases - Identification, Design, Construct/Build, Evaluation and Risk Analysis. The software project repeatedly passes through these phases in iterations called spirals.
Advantages and Disadvantages of Spiral Model
- Advantages: The Spiral Model can be advantageous as it manages risks and divides development into phases. It also helps with more accurate estimates for budget and schedule as roadblocks are discovered earlier.
- Disadvantages: Since this model is highly customized, repurposing the process can be confusing. It also requires team members that are well-versed in risk evaluation.
8. Prototype Model
/CSCE-331/Visual%20Aids/Pasted%20image%2020260125165202.png)
The Prototype Model relies on creating prototypes of the software applications or system software that are used to visualize various components of the software. This model is used to limit the gap of misunderstanding of requirements by providing ample collaboration and feedback with the user.
Advantages and Disadvantages of Prototype Model
- Advantages: The Prototype Model can yield reduced time and costs, with heavy user involvement.
- Disadvantages: This model can cause user confusion between prototype and finished product and can potentially add excessive development time for prototype development.
Iterative Development Models
Take a mulligan
- Instead of producing a single product all at once, provide incremental improvements
- Deliver pieces of the product at different times
- Time is planned to iterate on design and implementation
- Includes user analysis and feedback for improvement
Prototyping
- Deliver early (not fully functional) prototypes of software system
- Allows for faster user feedback to revise requirements, design
- Challenges:
- Can hide difficulties underlying the prototype
- Can set expectations too high
- Less flexible (early design anchoring)
- If you come across a problem it is really hard to take those blinders off and move in a different direction
- User/developer gets attached to prototype and not the system
Spiral
- Combines iterative, prototype, and waterfall methods
- Start from center (basic requirements)
- Build a first iteration prototype
- Spiral out with successive iteration cycle to create a better prototype
- Stop when great prototype found
- Different cycles can use different techniques based on the current risk level
Cleanroom
- Puts control onto an iterative methods
- Every iteration gets tested on a very large data set
- Measures whether each iteration introduced or reduced defects
- Introducing defects = problem, so go back to previous stage and start over!
- Provides statistical data on how reliable the method is
- Measures whether each iteration introduced or reduced defects