0% found this document useful (0 votes)
18 views

Unit Two - Software Models

Software Models

Uploaded by

ashwini bhosale
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views

Unit Two - Software Models

Software Models

Uploaded by

ashwini bhosale
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

Chapter 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.

The sequential phases in Waterfall model are −

 Requirement Gathering and analysis − All possible requirements of the system to


be developed are captured in this phase and documented in a requirement
specification document.

 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.

Major advantages of the Waterfall Model are as follows −

 Simple and easy to understand and use


 Easy to manage due to the rigidity of the model. Each phase has specific deliverables
and a review process.

 Phases are processed and completed one at a time.

 Works well for smaller projects where requirements are very well understood.

 Clearly defined stages.

 Well understood milestones.

 Easy to arrange tasks.


 Process and results are well documented.

The major disadvantages of the Waterfall Model are as follows −

 No working software is produced until late during the life cycle.

 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. So, risk and uncertainty is high with this process model.

 It is difficult to measure progress within stages.

 Cannot accommodate changing requirements.

 Adjusting scope during the life cycle can end a project.

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.

Advantage of RAD Model


o This model is flexible for change.
o In this model, changes are adoptable.
o Each phase in RAD brings highest priority functionality to the customer.
o It reduced development time.
o It increases the reusability of features.
Disadvantage of RAD Model
o It required highly skilled designers.
o All application is not compatible with RAD.
o For smaller projects, we cannot use the RAD model.
o On the high technical risk, it's not suitable.
o Required user involvement.

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.

5. An Agile View of Process:


What is agility?
Agility means characteristics of being dynamic, content specific, aggressively change
embracing and growth oriented.
Agile Software engineering
Agile software engineering combines a philosophy and a set of development
guidelines. The philosophy encourages customer satisfaction and early incremental
delivery of software, small highly motivated project teams, informal methods,
minimal software engineering work products and overall development simplicity. The
development guidelines stress delivery over analysis and design and active continuous
communication between developers and customers. The team of software engineers
and other project stakeholders work together as an agile team (a team that is self
organizing and in control of its own destiny. An agile team fosters communication and
collaboration among all who serve on it.
Agile Process
The Processes which are adaptable of changes in requirements, which have
incrementality and work on unpredictability. These processes are based on three
assumptions which all do refer to the unpredictability in different stages of software
process development such unpredictability at time requirements, at analysis and
design or at time construction. So these processes are adaptable at all stages on SDLC.

Agile Process models Methods:


1. Extreme Programming (XP)
2. Adaptive Software development (ASD)
3. Dynamic software Development Method (DSDM)
4. Scrum
5. Crystal
6. Feature Driven development (FDD)
7. Agile Modelling (AM)

Features of Agile Process Model:


Here, we list down the top 10 key characteristics of Agile Software Development
Methodology:
1) Scrum
Scrum approach is one of the most effective ways of introducing Agility in a software
development methodology – owing to its simple and flexible nature. The Scrum
approach focuses on empirical feedback, team self-management and determination to
build ‘tested’ products within short time-frames.
The implementation of Scrum enhances visibility of project goals and ways to achieve
them. This characteristic of agile projects ensures that software is delivered on time –
without compromising the quality.
2) Quality
Testing is integrated throughout the lifecycle, enabling regular inspection of the
working product as it develops. This allows the product owner to make necessary
adjustments and gives the product team early sight of any quality issues.
3) Visibility
Agile development principles encourage their ‘user/client’ to take active part during
the development phase of the product. This provides transparency to the key
stakeholders – assuring them about the product’s progress and potentially successful
outcome.
4) Early identification and resolution of issues
Small incremental releases made visible to the product owner and product team
through its development help to identify any issues early and make it easier to respond
to change. The clear visibility in agile development helps to ensure that any necessary
decisions can be taken at the earliest possible opportunity, while there’s still time to
make a material difference to the outcome.
5) Accommodating change as per the requirements
Agile development is acceptance to change and any requirement that emerges during
the evolvement period is recognized immediately. Of course, it is important that an
active stakeholder is involved within the project who understands the concept behind
agile development and is ready to make any necessary changes to the cycle.
6) Iterative releases, Communication, continuous integration
The active involvement of a user representative/product owner, the high visibility of
the product and progress, and the flexibility to change when change is needed, creates
better business engagement and customer satisfaction. This is an important benefit
that can create much more positive and enduring working relationships.
Above all other points, the ability for agile development requirements to emerge and
evolve, and the ability to embrace change, the team builds the right product. It’s too
common in more traditional projects to deliver a “successful” project and find that the
product is not what was expected, needed or hoped for. In agile development, the
emphasis is absolutely on building the right product.
7) More enjoyable!
For most (if not all) members of the agile development team, work is an enjoyable
place where everyone is actively involved. Instead of big specs, the team discusses
requirements of the project through interactive workshops and panels.
Above all, the team members are empowered to make decisions based on their regular
analysis, which creates a highly motivated and determined team.
8) Transparency
An Agile approach provides a unique opportunity for clients to be involved
throughout the project, from prioritizing features to iteration planning and review
sessions to frequent software builds containing new features. However, this also
requires clients to understand that they are seeing a work in progress in exchange for
this added benefit of transparency.
9) Early and Predictable Delivery
Agile development projects are usually delivered on time while updates are also quick
and frequent. This is because the method utilizes a time-box, fixed schedule Sprints of
1- weeks to ensure the product is ready on time. In fact, many times this enables the
product or the beta update to release earlier than predicted adding to the overall
business value.
10) Predictable Costs and Schedule
Because each Sprint is a fixed duration, the cost is predictable and limited to the
amount of work that can be performed by the team in the fixed-schedule time box.
Combined with the estimates provided to the client prior to each Sprint, the client can
more readily understand the approximate cost of each feature, which improves
decision making about the priority of features and the need for additional iterations.
Agile Model :
The meaning of Agile is swift or versatile."Agile process model" refers to a software
development approach based on iterative development. Agile methods break tasks
into smaller iterations, or parts do not directly involve long term planning. The project
scope and requirements are laid down at the beginning of the development process.
Plans regarding the number of iterations, the duration and the scope of each iteration
are clearly defined in advance.
Each iteration is considered as a short time "frame" in the Agile process model, which
typically lasts from one to four weeks. The division of the entire project into smaller
parts helps to minimize the project risk and to reduce the overall project delivery time
requirements. Each iteration involves a team working through a full software
development life cycle including planning, requirements analysis, design, coding, and
testing before a working product is demonstrated to the client.

Phases of Agile Model:


Following are the phases in the Agile model are as follows:
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
1. Requirements gathering: In this phase, you must define the requirements. You
should explain business opportunities and plan the time and effort needed to build the
project. Based on this information, you can evaluate technical and economic
feasibility.
2. Design the requirements: When you have identified the project, work with
stakeholders to define requirements. You can use the user flow diagram or the high-
level UML diagram to show the work of new features and show how it will apply to
your existing system.
3. Construction/ iteration: When the team defines the requirements, the work
begins. Designers and developers start working on their project, which aims to deploy
a working product. The product will undergo various stages of improvement, so it
includes simple, minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's
performance and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work
environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team
receives feedback about the product and works through the feedback.

When to use the Agile Model?


o When frequent changes are required.
o When a highly qualified and experienced team is available.
o When a customer is ready to have a meeting with a software team all the time.
o When project size is small.
Advantage(Pros) of Agile Method:
1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfils the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.
Disadvantages(Cons) of Agile Model:
1. Due to the shortage of formal documents, it creates confusion and crucial decisions
taken throughout various phases can be misinterpreted at any time by different team
members.
2. Due to the lack of proper documentation, once the project completes and the
developers allotted to another project, maintenance of the finished project can become
a difficulty.

You might also like