Unit Two - Software Models
Unit Two - Software Models
1. Waterfall Model:
The Waterfall Model was the first Process Model to be introduced. It is also referred to as
a linear-sequential life cycle model. It is very simple to understand and use. In a
waterfall model, each phase must be completed before the next phase can begin and there
is no overlapping in the phases.
The Waterfall model is the earliest SDLC approach that was used for software
development.
Waterfall approach was first SDLC Model to be used widely in Software Engineering to
ensure success of the project. In "The Waterfall" approach, the whole process of software
development is divided into separate phases. In this Waterfall model, typically, the
outcome of one phase acts as the input for the next phase sequentially.
System Design − The requirement specifications from first phase are studied in this
phase and the system design is prepared. This system design helps in specifying
hardware and system requirements and helps in defining the overall system
architecture.
Implementation − With inputs from the system design, the system is first developed
in small programs called units, which are integrated in the next phase. Each unit is
developed and tested for its functionality, which is referred to as Unit Testing.
Integration and Testing − All the units developed in the implementation phase are
integrated into a system after testing of each unit. Post integration the entire system is
tested for any faults and failures.
Deployment of system − Once the functional and non-functional testing is done; the
product is deployed in the customer environment or released into the market.
Maintenance − There are some issues which come up in the client environment. To
fix those issues, patches are released. Also to enhance the product some better
versions are released. Maintenance is done to deliver these changes in the customer
environment.
Works well for smaller projects where requirements are very well understood.
Not suitable for the projects where requirements are at a moderate to high risk of
changing. So, risk and uncertainty is high with this process model.
2. RAD Model
RAD (Rapid Application Development) Model
RAD is a linear sequential software development process model that emphasizes a
concise development cycle using an element based construction approach. If the
requirements are well understood and described, and the project scope is a constraint,
the RAD process enables a development team to create a fully functional system
within a concise time period.
RAD (Rapid Application Development) is a concept that products can be developed
faster and of higher quality through:
o Gathering requirements using workshops or focus groups
o Prototyping and early, reiterative user testing of designs
o The re-use of software components
o A rigidly paced schedule that refers design improvements to the next product version
o Less formality in reviews and other team communication
The various phases of RAD are as follows:
1.Business Modelling: The information flow among business functions is defined by
answering questions like what data drives the business process, what data is
generated, who generates it, where does the information go, who process it and so on.
2. Data Modelling: The data collected from business modeling is refined into a set of
data objects (entities) that are needed to support the business. The attributes (character
of each entity) are identified, and the relation between these data objects (entities) is
defined.
3. Process Modelling: The information object defined in the data modeling phase are
transformed to achieve the data flow necessary to implement a business function.
Processing descriptions are created for adding, modifying, deleting, or retrieving a
data object.
4. Application Generation: Automated tools are used to facilitate construction of the
software; even they use the 4th GL techniques (A Fourth Generation
(Programming) Language (4GL) is a grouping of programming languages that
attempt to get closer than 3GLs to human language, a form of thinking, and
conceptualization and are easier to use than 3GLs. It is a non-procedural language
which means that the programmer defines what has to be done instead of how the task
is to be completed)
5. Testing & Turnover: Many of the programming components have already been
tested since RAD emphasis reuse. This reduces the overall testing time. But the new
part must be tested, and all interfaces must be fully exercised.
3. Spiral Model:
The spiral model combines the idea of iterative development with the systematic,
controlled aspects of the waterfall model. This Spiral model is a combination of
iterative development process model and sequential linear development model i.e. the
waterfall model with a very high emphasis on risk analysis. It allows incremental
releases of the product or incremental refinement through each iteration around the
spiral.
The different phases of the spiral model are as follows:
o Requirement analysis
o Design
o Coding
o Testing and risk analysis
Requirement Analysis
The spiral model process starts with collecting business needs. In this, the following
spirals will include the documentation of system requirements, unit requirements, and
the subsystem needs. In this stage, we can easily understand the system requirements
because the business analyst and the client have constant communication. And once
the cycle is completed, the application will be deployed in the market.
Design
The second stage of the spiral model is designed, where we will plan the logical
design, architectural design, flow charts, decision tree, and so on.
Coding
After the compilation of the design stage, we will move to our next step, which is the
coding stage. In this, we will develop the product based on the client's requirement
and getting the client's feedback as well. This stage refers to the construction of the
real application in every cycle.
And those spirals had an excellent clarity of the requirements, and the design details
of an application are known as the build with having version numbers. After that,
these builds are transferred to the client for their responses.
Testing and Risk Analysis
Once the development is completed successfully, we will test the build at the end of
the first cycle and also analyse the risk of the software on the different aspects such as
managing risks, detecting, and observing the technical feasibility. And after that, the
client will test the application and give feedback.
The advantages of the Spiral SDLC Model are as follows −
Changing requirements can be accommodated.
Allows extensive use of prototypes.
Requirements can be captured more accurately.
Users see the system early.
Development can be divided into smaller parts and the risky parts can be developed
earlier which helps in better risk management.
The disadvantages of the Spiral SDLC Model are as follows −
Management is more complex.
End of the project may not be known early.
Not suitable for small or low risk projects and could be expensive for small projects.
Process is complex
Spiral may go on indefinitely.
Large number of intermediate stages requires excessive documentation.
4. Prototype Model:
The prototype model requires that before carrying out the development of actual
software, a working prototype of the system should be built. A prototype is a toy
implementation of the system. A prototype usually turns out to be a very crude version
of the actual system, possible exhibiting limited functional capabilities, low reliability,
and inefficient performance as compared to actual software. In many instances, the
client only has a general view of what is expected from the software product. In such
a scenario where there is an absence of detailed information regarding the input to the
system, the processing needs, and the output requirement, the prototyping model may
be employed.
Prototyping Model has different phases, which are as follows:
o Requirement analysis
o feasibility study
o Create a prototype
o Prototype testing
o Customer review and approval
o Design
o Coding
o Testing
o Installation and maintenance
Requirement analysis
This model starts with collecting the requirements from the customers. And these
requirements of the project should be in-details. These details are received by the
Business Analyst and Product Analyst. Where Business analyst is assigned
for service-based software companies, and the Product analyst is assigned
for product-based software companies.
Feasibility study
In the next stage, the BA, HR, Architecture, and Finance teams head will sit
together and talk about the cost of the product, which resource is going to be needed,
which technology is used to develop the product and how much time is required to
complete the product and deliver.
Create a prototype
After we completed the feasibility study, we will move to our next stage, where we
will be creating the prototype (sample or dummy) based on the data collects from the
client, and the web developer will design the prototype.
Here, we have the following types of prototype:
o Static prototype
o Dynamic prototype
Static prototype:
In the static prototype, we kept the entire prototype of the requirements in a word
document with having all the guidelines, screenshot, and the description of how to
build the software, how the completed product will look like and how it will work and
so on.
Dynamic prototype:
The dynamic prototype is parallel to the browser, but here we can't provide any
details, only the functionality is there without entering the data. It is like a dummy
page made out of the html with having tags and links to the various pages to the
expressive features of the product.
Prototype testing
Once we build the prototype, the BA will test the prototype and perform one round of
prototype testing.
The prototype testing is testing, where we will test only the look and feel, which
means that the UI and frontend.
Customer review and approval
Once the prototype testing is done, it will be handed over to the customer for their
review and approval. If the customer is not happy with the given sample, we will
change the prototype based on the customer's guidelines and feedback. This process
will go on until the customer approved and satisfied with the prototype. It is a bit
time-consuming because we have to perform the changes again and again in the
prototype.
Design
After getting the approved prototype, we will start the high level and low-level design
for the final product and consider all the suggestions given by the customer at the time
of the final prototype.
Coding
Once the design phase has been completed successfully, we move to our coding
phase, where the concerned developer starts developing the product based on their
programming knowledge.
Testing
After the compilation of the development phase, it is handed over to the test engineer.
And the test engineer test the application functionality, and all inputs and outputs.
Installation and maintenance
Once our final product is developed and tested according to the final prototype, it will
be deployed to the production. And the product will go through the time to time
maintenance to reduce any interruption, which helps to avoid significant failures.
The advantages of the Prototyping Model are as follows −
Increased user involvement in the product even before its implementation.
Since a working model of the system is displayed, the users get a better understanding
of the system being developed.
Reduces time and cost as the defects can be detected much earlier.
Quicker user feedback is available leading to better solutions.
Missing functionality can be identified easily.
Confusing or difficult functions can be identified.
The Disadvantages of the Prototyping Model are as follows −
Risk of insufficient requirement analysis owing to too much dependency on the
prototype.
Users may get confused in the prototypes and actual systems.
Practically, this methodology may increase the complexity of the system as scope of
the system may expand beyond original plans.
Developers may try to reuse the existing prototypes to build the actual system, even
when it is not technically feasible.
The effort invested in building prototypes may be too much if it is not monitored
properly.