A software methodology (which is also known as software process) is a set of related development Phases that leads to the production of the software.
Any software process must include the following four Phases:
In real life, they include many sub-Phases like architectural design, requirements validation,testing, …etc.
A software development model is a simplified representation of a software process. Each model represents a process from a specific perspective.
“””
Some methodologies are sometimes known as software development life cycle (SDLC) methodologies, though this term could also be used more generally to refer to any methodology.
“””
The waterfall model is a sequential technique in which each fundamental action of a process is represented as a separate phase, which is then arranged in a linear order.
In the waterfall model, all Phases must be planned and scheduled before beginning work on them (plan-driven process).
“””
Plan-driven process is a process where all the Phases are planned first, and the progress is measured against the plan. While the agile process, planning is incremental and it’s easier to change the process to reflect requirement changes.
“””
The phases of the waterfall model are: Requirements, Design, Implementation, Testing, and Maintenance.
The Waterfall Model — From Software Engineering, 9th edition, Chapter 2, by Ian Sommerville
In general, the waterfall model should be used only when needs are well understood and unlikely to change significantly during development, as this model has a somewhat inflexible structure that makes it difficult to adapt to change while the process is in progress.
Iterative Waterfall model:
In fact, it is not practical to perfectly adhere to the traditional waterfall paradigm when developing software. In this sense, we can see the iterative waterfall model as modifying the original waterfall model to make it appropriate to practical software development initiatives.
As seen in the Iterative waterfall model, feedback pathways are provided from each phase to its preceding phase.
The feedback channels allow for the rectification of errors committed during a phase as they are discovered in a later phase.
For example, if during a testing a design error is identified, then the feedback path allows the design to be reworked and the changes to be reflected in the design documents. However, observe that there is no feedback path to the feasibility stage. This means that the feasibility study errors cannot be corrected.
Disadvantages:
A prototype is a fast version of a system or element of a system created to test the customer's needs or the viability of specific design decisions.
A prototype is therefore useful when a customer or developer is unsure of the needs, algorithms, efficiency, business rules, reaction time, and so on.
A software prototype can be used:
A prototype can aid in the elicitation and validation of system requirements during the requirements engineering process.
It enables users to experiment with the system and, as a result, refine the requirements. They may come up with new requirements and identify areas of strength and weakness in the software.
In system design, a prototype can aid in the execution of design experiments to determine the viability of a proposed design.
A database architecture, for example, may be prototyped and tested to ensure that it allows efficient data access for the most common user queries.
The process of prototype development — From Software Engineering, 9th edition, Chapter 2, by Ian Sommerville
The phases of a prototype are:
Prototyping is not a comprehensive development methodology in and of itself, but rather an approach to be utilized in conjunction with a full methodology (such as incremental, spiral, etc).
This model is costly. It has poor documentation because of continuously changing customer requirements. There may be too much variation in requirements. Customers sometimes demand the actual product to be delivered soon after seeing an early prototype.
Incremental development is built on the concept of creating an initial implementation, exposing it to user feedback, then modifying it via successive versions until an acceptable solution is created.
The Incremental Development Model — From Software Engineering, 9th edition, Chapter 2, by Ian Sommerville
Each system increment represents a piece of functionality that the consumer requires. In general, the initial increments of the system should include the most vital or urgently required functionality.
This means that the client can inspect the system early in the development process to ensure that it meets the specifications.
One of the most prevalent ways is incremental development. This method can be plan-driven, agile, or both.
The system increments are identified in advance in a plan-driven method, while in an agile approach, only the early increments are identified, and the development of later increments is dependent on progress and client priorities.
But, it’s not problem-free …
The spiral model is risk-driven and depicts the process as a spiral rather than a series of operations.
It was created to incorporate the greatest characteristics of the waterfall and prototyping models, as well as to provide a new component: risk assessment.
The spiral model — From Software Engineering, 9th edition, Chapter 2, by Ian Sommerville
Each loop in the spiral is split into four sectors:
The spiral model has had a significant impact on how people think about iteration in software processes and the introduction of the risk-driven approach to development. However, in practice, the model is rarely used.
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 the waterfall.
Why is the spiral model also called a meta model ?
The Spiral model is called a Meta-Model because it subsumes all the other SDLC models. For example, a single loop spiral actually represents the Iterative Waterfall Model. The spiral model incorporates the stepwise approach of the Classical Waterfall Model.
Iterative development seeks to create a system by constructing small pieces of all characteristics across all components.
We create a product that fits the initial scope and rapidly release it for client feedback. To develop a market and get client input, an early version with restricted capabilities is required.
Each increment delivers a slice of system functionality, progressing from requirements to deployment.
The phases of iterative development — From Software Engineering, 9th edition, Chapter 2, by Ian Sommerville
The phases of iterative development are:
All the phases will be done once, while the construction phase will be incrementally visited for each increment; for each slice of system features.
Disadvantage:
Each phase of an iteration is rigid with no overlaps. Costly system architecture or design issues may arise because not all requirements are gathered up front for the entire lifecycle.
Agility is flexibility, it is a state of dynamic, adapted to the specific circumstances.
The agile method refers to a group of software development models based on the incremental and iterative approach, in which the increments are small and typically, new releases of the system are created and made available to customers every few weeks.
The principles of agile methods — From Software Engineering, 9th edition, Chapter 3, by Ian Sommerville
Customers are involved in the development process to propose adjustments to requirements. They use informal communications rather than formal meetings with written documents to reduce documentation.
They are ideally suited for applications with frequently changing needs during the development phase.
Scrum, Crystal, Agile Modeling (AM), Extreme Programming (XP), and more agile methodologies are available.
For most organizations, e-commerce, and personal systems, incremental software development outperforms waterfall development.
It is cheaper and easier to make modifications to the programme as it is being built if it is developed incrementally.
When compared to the waterfall methodology, incremental development has three significant advantages:
You might be wondering what the distinction is between incremental, iterative, and agile models.
In the incremental technique, each increment builds a whole feature of the software, whereas the iterative approach builds small sections of all features.
An agile strategy combines the incremental and iterative approaches by gradually adding features and enhancing their completeness by constructing a tiny amount of each feature one at a time.
Different development methods structure the four main process tasks of definition, development, validation, and evolution differently.
They are structured in sequence in the waterfall approach, but interleaved in incremental development. The manner in which these operations are carried out may vary depending on the type of software, the people involved in its development, and so on.
References:
WHAT IS WEB3?Web3 is the catch-all term for the vision of an upgraded version of the internet aimed at giving power back to the users. It is truly the......
Operating Systems is one of the core subjects for a computer science student. As such a lot of important questions are asked on this subject in interv......
Getting started with cloud computing ?The words "cloud" and "web" will be interchangeable. What kind of business operates today without the internet? ...
SOFTWARE MAINTENANCE:Software Maintenance can be defined as the process of modifying a software product after its delivery. The main purpose of softwa...
A quick summary upto what we did this far from this series:Software EngineeringSoftware engineering is a discipline of engineering concerned wit...
Introduction:Understanding time complexity of a function is imperative for every programmer to execute a program in the most efficient manner. Time co...
Software Engineering is a subject that requires when you are a software developer as well as when you are in your college preparing for a semester or ...
Are you getting ready for your SQL developer job interview?You've come to the correct place.This tutorial will assist you in brushing up on your SQL s...
Introduction: What is SQL?To understand SQL, we must first understand databases and database management systems (DBMS).Data is essentially a collectio...
Networking: Importance in real life!Using a computer for work, as well as for personal use, ha...
FORMULA LIST:ALGEBRA :1.Sum of first n natural numbers = n(n+1)/22.Sum of the squares of first n nat...
ER-DiagramWhat are ER Models ?An Entity Relationship Diagram (ERD) is a visual representation of dif...
What is actually DBMS?A Database Management System (DBMS) is system software used to manage the orga...
C CHEATSHEETINTRODUCTION:C programming language was developed by Dennis Ritchie of Bell Labs in 1972...
C is a general purpose high-level language most popular amongst coders, it is the most compatible, e...
C++ programming language has templates which basically allows functions and classes to work with gen...
C++ was conceived in the late 1970s to overcome the limitations of C. It is an extension of th...
Interview Questions are a great source to test your knowledge about any specific field. But remember...
The most popular high-level, multipurpose programming language right now is Python.Python supports p...
IntroductionPython is a high-level programming language with dynamic binding and high-level inherent...
Interview Questions are a great source to test your knowledge about any specific field. But remember...
Object-Oriented Programming or better known as OOPs is one of the major pillars of Java that has lev...
Java is a high-level programming language known for its robustness, object-oriented nature, enhanced...