Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
42 views

Software Models in Software Engineering

The document discusses the Agile software development model and the Spiral model. The Agile model was proposed in the 1990s to address issues with the Waterfall model like handling changes. It focuses on adapting quickly to changes through iterations. The Spiral model also uses iterative cycles but places more emphasis on risk analysis at each phase of software development. Both models allow for flexibility and incremental delivery of working software.

Uploaded by

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

Software Models in Software Engineering

The document discusses the Agile software development model and the Spiral model. The Agile model was proposed in the 1990s to address issues with the Waterfall model like handling changes. It focuses on adapting quickly to changes through iterations. The Spiral model also uses iterative cycles but places more emphasis on risk analysis at each phase of software development. Both models allow for flexibility and incremental delivery of working software.

Uploaded by

Nothing
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 28

Lecture # 5

The Agile Model


• In earlier days, the Iterative Waterfall Model was very popular for
completing a project. But nowadays, developers face various problems
while using it to develop software. The main difficulties included handling
customer change requests during project development and the high cost
and time required to incorporate these changes. To overcome these
drawbacks of the Waterfall Model, in the mid-1990s the Agile Software
Development model was proposed.
• The Agile Model was primarily designed to help a project adapt quickly to
change requests. So, the main aim of the Agile model is to facilitate quick
project completion. To accomplish this task, agility is required. Agility is
achieved by fitting the process to the project and removing activities that
may not be essential for a specific project. Also, anything that is a waste of
time and effort is avoided.
• The Agile Model refers to a group of development processes. These
processes share some basic characteristics but do have certain subtle
differences among themselves.
Steps in the Agile Model

Steps in the Agile Model


The agile model is a combination of iterative and
incremental process models. The steps involve in
agile SDLC models are:
Requirement gathering
Design the Requirements
Construction / Iteration
Testing / Quality Assurance
Deployment
Feedback
Steps
• 1. Requirement Gathering:- In this step, the development team must gather the requirements, by interaction with
the customer. development team should plan the time and effort needed to build the project. Based on this
information you can evaluate technical and economical feasibility.
• 2. Design the Requirements:- In this step, the development team will use user-flow-diagram or high-level UML
diagrams to show the working of the new features and show how they will apply to the existing software.
Wireframing and designing user interfaces are done in this phase.
• 3. Construction / Iteration:- In this step, development team members start working on their project, which aims
to deploy a working product.
• 4. Testing / Quality Assurance:- Testing involves Unit Testing, Integration Testing, and System Testing. A brief
introduction of these three tests is as follows:
• 5. Unit Testing:- Unit testing is the process of checking small pieces of code to ensure that the individual parts of a
program work properly on their own. Unit testing is used to test individual blocks (units) of code.
• Integration Testing:- Integration testing is used to identify and resolve any issues that may arise when different
units of the software are combined.
• System Testing:- Goal is to ensure that the software meets the requirements of the users and that it works
correctly in all possible scenarios.
• 5. Deployment:- In this step, the development team will deploy the working project to end users.
• 6. Feedback:- This is the last step of the Agile Model. In this, the team receives feedback about the product and
works on correcting bugs based on feedback provided by the customer.
• The time required to complete an iteration is known as a Time Box. Time-box refers to the maximum amount of
time needed to deliver an iteration to customers. So, the end date for an iteration does not change. However, the
development team can decide to reduce the delivered functionality during a Time-box if necessary to deliver it on
time. The Agile model’s central principle is delivering an increment to the customer after each Time-box.
Advantages of the Agile Model

• Working through Pair programming produces well-written


compact programs which have fewer errors as compared to
programmers working alone.
• It reduces the total development time of the whole project.
• Agile development emphasizes face-to-face communication
among team members, leading to better collaboration and
understanding of project goals.
• Customer representatives get the idea of updated software
products after each iteration. So, it is easy for him to
change any requirement if needed.
• Agile development puts the customer at the center of the
development process, ensuring that the end product meets
their needs.
Disadvantages of the Agile Model

• The lack of formal documents creates confusion and important decisions taken
during different phases can be misinterpreted at any time by different team
members.
• It is not suitable for handling complex dependencies.
• The agile model depends highly on customer interactions so if the customer is not
clear, then the development team can be driven in the wrong direction.
• Agile development models often involve working in short sprints, which can make
it difficult to plan and forecast project timelines and deliverables. This can lead to
delays in the project and can make it difficult to accurately estimate the costs and
resources needed for the project.
• Agile development models require a high degree of expertise from team members,
as they need to be able to adapt to changing requirements and work in an iterative
environment. This can be challenging for teams that are not experienced in agile
development practices and can lead to delays and difficulties in the project.
• Due to the absence of proper documentation, when the project completes and the
developers are assigned to another project, maintenance of the developed project
can become a problem.
What is the Spiral Model?

• The Spiral Model is a Software Development Life Cycle


(SDLC) model that provides a systematic and iterative approach to
software development. In its diagrammatic representation, looks
like a spiral with many loops. The exact number of loops of the
spiral is unknown and can vary from project to project. Each loop of
the spiral is called a Phase of the software development process.
• The exact number of phases needed to develop the product can be
varied by the project manager depending upon the project risks.
• As the project manager dynamically determines the number of
phases, the project manager has an important role in developing a
product using the spiral model.
• It is based on the idea of a spiral, with each iteration of the spiral
representing a complete software development cycle,
from requirements gathering and analysis to design,
implementation, testing, and maintenance.
What Are the Phases of Spiral Model?

The Spiral Model is a risk-driven model, meaning that the focus is on managing risk through multiple
iterations of the software development process. It consists of the following phases:
• 1. Planning
The first phase of the Spiral Model is the planning phase, where the scope of the project is determined
and a plan is created for the next iteration of the spiral.
• 2. Risk Analysis
In the risk analysis phase, the risks associated with the project are identified and evaluated.
• 3. Engineering
In the engineering phase, the software is developed based on the requirements gathered in the
previous iteration.
• 4. Evaluation
In the evaluation phase, the software is evaluated to determine if it meets the customer’s requirements
and if it is of high quality.
• 5. Planning
The next iteration of the spiral begins with a new planning phase, based on the results of the
evaluation.
The Spiral Model is often used for complex and large software development projects, as it allows for a
more flexible and adaptable approach to software development. It is also well-suited to projects with
significant uncertainty or high levels of risk.
Advantages of the Spiral Model

Below are some advantages of the Spiral Model.


• Risk Handling: The projects with many unknown risks that occur as the development proceeds, in
that case, Spiral Model is the best development model to follow due to the risk analysis and risk
handling at every phase.
• Good for large projects: It is recommended to use the Spiral Model in large and complex projects.
• Flexibility in Requirements: Change requests in the Requirements at a later phase can be
incorporated accurately by using this model.
• Customer Satisfaction: Customers can see the development of the product at the early phase of
the software development and thus, they habituated with the system by using it before completion
of the total product.
• Iterative and Incremental Approach: The Spiral Model provides an iterative and incremental
approach to software development, allowing for flexibility and adaptability in response to changing
requirements or unexpected events.
• Emphasis on Risk Management: The Spiral Model places a strong emphasis on risk management,
which helps to minimize the impact of uncertainty and risk on the software development process.
• Improved Communication: The Spiral Model provides for regular evaluations and reviews, which
can improve communication between the customer and the development team.
• Improved Quality: The Spiral Model allows for multiple iterations of the software development
process, which can result in improved software quality and reliability.
Disadvantages of the Spiral Model

Below are some main disadvantages of the spiral model.


• Complex: The Spiral Model is much more complex than other SDLC models.
• Expensive: Spiral Model is not suitable for small projects as it is expensive.
• Too much dependability on Risk Analysis: The successful completion of the
project is very much dependent on Risk Analysis. Without very highly experienced
experts, it is going to be a failure to develop a project using this model.
• Difficulty in time management: As the number of phases is unknown at the start
of the project, time estimation is very difficult.
• Complexity: The Spiral Model can be complex, as it involves multiple iterations of
the software development process.
• Time-Consuming: The Spiral Model can be time-consuming, as it requires multiple
evaluations and reviews.
• Resource Intensive: The Spiral Model can be resource-intensive, as it requires a
significant investment in planning, risk analysis, and evaluations.
When To Use the Spiral Model?

• When a project is vast in software engineering, a spiral model is


utilized.
• A spiral approach is utilized when frequent releases are necessary.
• When it is appropriate to create a prototype
• When evaluating risks and costs is crucial
• The spiral approach is beneficial for projects with moderate to high
risk.
• The SDLC’s spiral model is helpful when requirements are
complicated and ambiguous.
• If modifications are possible at any moment
• When committing to a long-term project is impractical owing to
shifting economic priorities.
Prototype Model
• Prototyping is defined as the process of developing a
working replication of a product or system that has to be
engineered. It offers a small-scale facsimile of the end
product and is used for obtaining customer feedback. The
Prototyping concept is described below:
• The Prototyping Model is one of the most popularly
used Software Development Life Cycle Models (SDLC
models). This model is used when the customers do not
know the exact project requirements beforehand. In this
model, a prototype of the end product is first developed,
tested, and refined as per customer feedback repeatedly till
a final acceptable prototype is achieved which forms the
basis for developing the final product.
In this process model, the system is partially
implemented before or during the analysis phase thereby
giving the customers an opportunity to see the product
early in the life cycle. The process starts by interviewing
the customers and developing the incomplete high-level
paper model. This document is used to build the initial
prototype supporting only the basic functionality as
desired by the customer. Once the customer figures out
the problems, the prototype is further refined to
eliminate them. The process continues until the user
approves the prototype and finds the working model to
be satisfactory.
Steps Prototyping Model

• Step 1: Requirement Gathering and Analysis: This is the initial step in designing a
prototype model. In this phase, users are asked about what they expect or what
they want from the system.
• Step 2: Quick Design: This is the second step in Prototyping Model. This model
covers the basic design of the requirement through which a quick overview can be
easily described.
• Step 3: Build a Prototype: This step helps in building an actual prototype from the
knowledge gained from prototype design.
• Step 4: Initial User Evaluation: This step describes the preliminary testing where
the investigation of the performance model occurs, as the customer will tell the
strength and weaknesses of the design, which was sent to the developer.
• Step 5: Refining Prototype: If any feedback is given by the user, then improving
the client’s response to feedback and suggestions, the final system is approved.
• Step 6: Implement Product and Maintain: This is the final step in the phase of the
Prototyping Model where the final system is tested and distributed to production,
here the program is run regularly to prevent failures.
Types of Prototyping Models

There are four types of Prototyping Models,


which are described below.
• Rapid Throwaway Prototyping
• Evolutionary Prototyping
• Incremental Prototyping
• Extreme Prototyping
• 1. Rapid Throwaway Prototyping
• This technique offers a useful method of exploring ideas and getting
customer feedback for each of them. In this method, a developed
prototype need not necessarily be a part of the ultimately accepted
prototype. Customer feedback helps in preventing unnecessary
design faults and hence, the final prototype developed is of better
quality.
• 2. Evolutionary Prototyping
• In this method, the prototype developed initially is incrementally
refined on the basis of customer feedback till it finally gets
accepted. In comparison to Rapid Throwaway Prototyping, it offers
a better approach that saves time as well as effort. This is because
developing a prototype from scratch for every iteration of the
process can sometimes be very frustrating for the developers.
• 3. Incremental Prototyping
• In this type of incremental prototyping, the final expected product is broken into different small
pieces of prototypes and developed individually. In the end, when all individual pieces are properly
developed, then the different prototypes are collectively merged into a single final product in their
predefined order. It’s a very efficient approach that reduces the complexity of the development
process, where the goal is divided into sub-parts and each sub-part is developed individually. The
time interval between the project’s beginning and final delivery is substantially reduced because all
parts of the system are prototyped and tested simultaneously. Of course, there might be the
possibility that the pieces just do not fit together due to some lack of ness in the development
phase – this can only be fixed by careful and complete plotting of the entire system before
prototyping starts.
• 4. Extreme Prototyping
• This method is mainly used for web development. It consists of three sequential independent
phases:
• In this phase, a basic prototype with all the existing static pages is presented in HTML format.
• In the 2nd phase, Functional screens are made with a simulated data process using a prototype
services layer.
• This is the final step where all the services are implemented and associated with the final
prototype.
• This Extreme Prototyping method makes the project cycling and delivery robust and fast and keeps
the entire developer team focused and centralized on product deliveries rather than discovering all
possible needs and specifications and adding necessitated features.
Advantages of Prototyping Model

• The customers get to see the partial product early in the life cycle. This ensures a greater level of
customer satisfaction and comfort.
• New requirements can be easily accommodated as there is scope for refinement.
• Missing functionalities can be easily figured out.
• Errors can be detected much earlier thereby saving a lot of effort and cost, besides enhancing the
quality of the software.
• The developed prototype can be reused by the developer for more complicated projects in the
future.
• Flexibility in design.
• Early feedback from customers and stakeholders can help guide the development process and
ensure that the final product meets their needs and expectations.
• Prototyping can be used to test and validate design decisions, allowing for adjustments to be made
before significant resources are invested in development.
• Prototyping can help reduce the risk of project failure by identifying potential issues and addressing
them early in the process.
• Prototyping can facilitate communication and collaboration among team members and
stakeholders, improving overall project efficiency and effectiveness.
• Prototyping can help bridge the gap between technical and non-technical stakeholders by providing
a tangible representation of the product.
Disadvantages of the Prototyping Model

• Costly with respect to time as well as money.


• There may be too much variation in requirements each time the prototype is evaluated by the
customer.
• Poor Documentation due to continuously changing customer requirements.
• It is very difficult for developers to accommodate all the changes demanded by the customer.
• There is uncertainty in determining the number of iterations that would be required before the
prototype is finally accepted by the customer.
• After seeing an early prototype, the customers sometimes demand the actual product to be
delivered soon.
• Developers in a hurry to build prototypes may end up with sub-optimal solutions.
• The customer might lose interest in the product if he/she is not satisfied with the initial prototype.
• The prototype may not be scalable to meet the future needs of the customer.
• The prototype may not accurately represent the final product due to limited functionality or
incomplete features.
• The focus on prototype development may shift the focus away from the final product, leading to
delays in the development process.
• The prototype may give a false sense of completion, leading to the premature release of the
product.
Iterative model
• In the Iterative model, iterative process starts with a
simple implementation of a small set of the software
requirements and iteratively enhances the evolving
versions until the complete system is implemented and
ready to be deployed.
• An iterative life cycle model does not attempt to start
with a full specification of requirements. Instead,
development begins by specifying and implementing
just part of the software, which is then reviewed to
identify further requirements. This process is then
repeated, producing a new version of the software at
the end of each iteration of the model.
• Iterative Model - Design
• Iterative process starts with a simple implementation
of a subset of the software requirements and
iteratively enhances the evolving versions until the full
system is implemented. At each iteration, design
modifications are made and new functional capabilities
are added. The basic idea behind this method is to
develop a system through repeated cycles (iterative)
and in smaller portions at a time (incremental).
• The following illustration is a representation of the
Iterative and Incremental model
• Iterative and Incremental development is a combination of both iterative
design or iterative method and incremental build model for development.
"During software development, more than one iteration of the software
development cycle may be in progress at the same time." This process
may be described as an "evolutionary acquisition" or "incremental build"
approach."
• In this incremental model, the whole requirement is divided into various
builds. During each iteration, the development module goes through the
requirements, design, implementation and testing phases. Each
subsequent release of the module adds function to the previous release.
The process continues till the complete system is ready as per the
requirement.
• The key to a successful use of an iterative software development lifecycle
is rigorous validation of requirements, and verification & testing of each
version of the software against those requirements within each cycle of
the model. As the software evolves through successive cycles, tests must
be repeated and extended to verify each version of the software.
Iterative Model - Application

• Like other SDLC models, Iterative and incremental development has


some specific applications in the software industry. This model is
most often used in the following scenarios −
• Requirements of the complete system are clearly defined and
understood.
• Major requirements must be defined; however, some
functionalities or requested enhancements may evolve with time.
• There is a time to the market constraint.
• A new technology is being used and is being learnt by the
development team while working on the project.
• Resources with needed skill sets are not available and are planned
to be used on contract basis for specific iterations.
• There are some high-risk features and goals which may change in
the future.

You might also like