Software Engineering L-1, 2,3,4,5,6
Software Engineering L-1, 2,3,4,5,6
❖ A software life cycle model is a descriptive and diagrammatic representation of the software
life cycle.
❖ A life cycle model represents all the activities required to make a software product transit
through its life cycle phases.
❖ During any life cycle phase, more than one activity may also be carried out.
Need for a software life cycle Model
❖ The development team must identify a suitable life cycle model to develop a
project..
❖ Without using of a particular life cycle model the development of a software
product may lead to project failure.
Software Development Life Cycle Models
❖ Different types of SDLC Models are:
➢ Waterfall Model
➢ Spiral Model
➢ V-Model
➢ Incremental Model
➢ RAD Model
➢ Iterative Model
➢ Prototype model
➢ Agile Model
Waterfall Model
Waterfall Model
❖ The waterfall model is a very common and traditional SDLC model or software
process model.
❖ This model is known as the waterfall model, because of the cascade from one
phase to another phase.
❖ The phases are cascade in nature, where the output of one phase is the input to
the next one. Each phase performs a set of activities.
❖ Waterfall model has the following phases:
➢ Feasibility Study /Requirements Analysis and Specification
➢ Design
➢ Coding and Unit Testing
➢ Integration and System Testing, and
➢ Maintenance
Waterfall Model: Feasibility Study /Requirements Analysis and Specification
❖ The main aim of feasibility study is to determine whether the project is financially
and technically feasible or not, to develop the product.
❖ The aim of the requirements analysis and specification phase is to understand the
exact requirements of the customer and to document them properly. This phase
consists of two distinct activities, namely
➢ Requirements gathering and analysis, and
➢ Requirements specification
Waterfall Model: Design
❖ The goal of the design phase is to transform the requirements specified in the SRS
document into a structure that is suitable for implementation by using some
programming language.
❖ Two distinctly different approaches are available:
➢ Architectural Design approach: It involves:
■ Identifying the software components.
■ Decomposing the software components into modules.
■ Specifying the interconnection between the various components.
➢ Detailed Design approach: It is deals with all details for the implementation i.e.
procedures to process the algorithms, data structures to be used, etc.
Waterfall Model: Coding and Unit Testing
❖ The purpose of the coding and unit testing phase (sometimes called the
implementation phase) of software development is to translate the software
design into source code.
❖ The end of this phase, each unit module is tested against each unit test plan.
❖ Output of this phase is:
➢ Program code or source code
➢ Unit test report
Waterfall Model:Integration and System Testing
❖ Integration of different modules is undertaken once they have been coded and unit
tested.
❖ During the integration and system testing phase, the modules are integrated.
❖ System testing usually consists of three different kinds of testing activities:-
➢ α – testing: It is the system testing performed by the development team.
➢ β – Testing: It is the system testing performed by a friendly set of customers.
➢ Acceptance testing: System testing performed by the customer after the
product delivery to accepted or rejected the delivered product.
Waterfall Model: Maintenance
Improving the implementation of the system, and enhancing the functionalities of the system
according to the customer’s requirements is called perfective maintenance.
Porting the software to work in a new environment. For e.g: porting may be required to get
the software to work on a new computer platform or with a new operating system is called
adaptive maintenance.
Advantages of Waterfall Model Disadvantages of waterfall model
No risk analysis
Iterative Waterfall Model
Iterative Waterfall Model
❖ The weaknesses of the waterfall model, Iterative development is the heart of
acyclic software development process.
❖ It starts with feasibility study and ends with deployment (maintenance) with the
cyclic interactions in between phases.
❖ The feedback paths allow for correction of the errors done during a phase.
❖ The principle of detecting errors as close to its point of introduction as possible.
This is known as “Phase Containment of Errors”.
❖ To achieve this review is done after completion of each phase.
Spiral Model
Spiral Model
❖ The spiral model, originally proposed by Barry Boehm.
❖ Main objective is to analyze the risks involved in the software project.
❖ Combines the features of prototyping model, evolutionary and iterative
waterfall model. Hence this model is also called meta model
❖ The diagrammatic representation of this model appears like a spiral with
many loops. The exact number of loops in the spiral is not fixed.
❖ Each loop of the spiral represents a phase of the software process.
❖ Each phase in this model is split into four sectors (or quadrants) The following
activities are carried out during each phase of a spiral model.
➢ First quadrant (Objective Setting)
➢ Second Quadrant (Risk Assessment and Reduction)
➢ Third Quadrant (Development and Validation)
➢ Fourth Quadrant (Review and Planning)
Spiral Model
❖ Advantages:
➢ For large, complex and expensive projects.
➢ If the software associated with risk.
➢ Re-evaluation after each step
❖ Disadvantages:
➢ Assessment and resolution of project risks is not an easy task.
➢ Difficult to estimate budget and schedule in the beginning.
Incremental Model or Evolutionary Model
❖ Also called successive versions model.
❖ The software is first broken down into several modules which can be incrementally
constructed and delivered.
❖ The development team first develops the core modules of the system.
❖ Each successive version of the product is fully functioning capable of performing
more useful work than the previous version.
❖ The user gets a chance to experiment with particularly developed software much
before the complete version of the software is ready.
❖ This model is useful only for very large products.
When Use the Incremental Model
❖ Changing Requirements
❖ Mitigating Risks
❖ Early Feedback
❖ Complex Systems
❖ Short Time-to-Market
❖ Parallel Development
❖ Budget Constraints
❖ Evolving Solutions
❖ Customer Collaboration
❖ Flexibility
Advantages
❖ Problem understanding increases through successive refinements
❖ Performs cost benefit analysis before enhancing software with capabilities
❖ Does not involve high complexity rate
❖ Early feedback is generated
Disadvantages
❖ Requires planning at the management and technical level.
❖ Becomes invalid when there is time constraint in the project schedu
Prototyping Model
The prototype model in software engineering involves developing a basic version
of the system, called a prototype, to gather feedback and refine requirements.
Quick Design:
❖ A quick design is carried out and a prototype is build.
❖ A new plan is created from gathered
❖ Requirements for the prototype to be built.
Prototype creation:
❖ Based on the design issues the trial product is created.
Customer Evaluation:
❖ The developed prototype is submitted to the customer for evaluation.
❖ Based on the customer feedback we may go for development or again go for
the redesign as per customer demand.
Prototype refinement:
❖ Based on the information.
The rest of the phases for development are similar to the waterfall model/
iterative waterfall model.
When Use Prototype Model
Disadvantages
❖ It is very difficult to predict how the system will work after development.
❖ This model is time consuming.
Agile Model
❖ In Waterfall model the main difficulties included handling change requests
from customers during project development and the high cost and time
required to incorporate these changes.
❖ 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.
Phases of Agile Model
Following are the phases in the Agile model are as follows:
❖ Requirements gathering
❖ Design the requirements
❖ Construction/ iteration
❖ Testing/ Quality assurance
❖ Deployment
❖ Feedback
Requirements gathering: 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.
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.
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.
Testing: In this phase, the Quality Assurance team examines the product's performance and
looks for the bug.
Deployment: In this phase, the team issues a product for the user's work environment.
Feedback: After releasing the product, the last step is feedback. In this, the team receives
feedback about the product and works through the feedback.
Agility principles
❖ Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
❖ Welcome changing requirements, even late in development. Agile processes
harness change for the customer’s competitive advantage.
❖ Deliver working software frequently, from a couple of weeks to a couple of
months, with a preference to the shorter timescale.
❖ Business people and developers must work together daily throughout the
project.
❖ Build projects around motivated individuals. Give them the environment and
support they need, and trust them to get the job done.
❖ The most efficient and effective method of conveying information to and within
a development team is face-to-face conversation.
❖ Working software is the primary measure of progress.
❖ Agile processes promote sustainable development. The sponsors,
developers, and users should be able to maintain a constant pace indefinitely.
❖ Continuous attention to technical excellence and good design enhances
agility.
❖ Simplicity—the art of maximizing the amount of work not done—is essential.
❖ The best architectures, requirements, and designs emerge from self–
organizing teams.
❖ At regular intervals, the team reflects on how to become more effective, then
tunes and adjusts its behavior accordingly.
RAPID APPLICATION DEVELOPMENT (RAD)
Define project requirements: The developers, end users, clients, and other stakeholders work together to define
the scope and requirements for the product. This includes timeline, budget, goals, expectations.
Create prototype: Developers build an initial prototype that fulfills the requirements established in step one. The
ultimate goal of this step is to produce a working prototype, though only certain aspects of it may be functional.
Gather feedback: The client and/or end users provide feedback and request changes to prototype elements
individually or the project overall. Developers then take this iterate on the previous prototype to incorporate the
necessary changes. This cycle continues until everyone is satisfied with the prototype.
Finalize and implement the product: The final prototype is pushed into development. The team tests the
software for bugs and fixes problems as they arise. Once a stable version is ready for launch, the system
changeover and user training commences.
Principles of Rapid Application Development (RAD)
RAD principles focus on providing the main benefits of rapid web application development
method:
It is useful when you have to reduce the overall project risk Not all application is compatible with RAD
It is adaptable and flexible to changes When technical risk is high, it is not suitable
It is easier to transfer deliverables as scripts, high-level If developers are not committed to delivering software on
abstractions and intermediate codes are used time, RAD projects can fail
Due to code generators and code reuse, there is a Reduced features due to time boxing, where features are
reduction of manual coding pushed to a later version to finish a release in short period
Reduced scalability occurs because a RAD developed
Due to prototyping in nature, there is a possibility of lesser
application begins as a prototype and evolves into a
defects
finished application
Progress and problems accustomed are hard to track as
Each phase in RAD delivers highest priority functionality to
such there is no documentation to demonstrate what has
client
been done
With less people, productivity can be increased in short
Requires highly skilled designers or developers
time
RAD Agile