Unit 2
Unit 2
• Sequential(Waterfall Model)
– The first published model of the software development process was Waterfall model. It was
proposed by Royce in 1970s.
– This model takes the fundamental process activities of specification, development,
validation and evolution and represents them as separate phases such as requirements
specification, software design, implementation, testing and maintenance
– In principle, the result of each phase is one or more documents that should be approved
and the next phase shouldn’t be started until the previous phase has completely been
finished.
– The waterfall model is an example of a plan-driven process—in principle, you must plan
and schedule all of the process activities before starting work on them
– This model is named “waterfall model” because its diagrammatic representation resembles
a cascade of waterfalls
– This model is easy to understand and reinforces the notion of “define before design” and
“design before code”.
– The model expects complete & accurate requirements early in the process, which is
unrealistic
• Requirements analysis and definition:
The structure/phases of Waterfall – The system’s service, constraints and goals are established by
consultation with system users. They are often defined in detail and
model •
serve as a system specification.
System and software design:
– The system design process partitions the requirements to either
hardware or software systems.
– It establishes overall system architecture. Software design involves
identifying and describing the fundamental software system
abstractions and their relationship
• Implementation and unit testing:
– During this stage, the software design is realised as asset of programs
and program units.
– Unit testing involves verifying that each unit meets its specification.
• Integration and system testing:
– The individual program units or programs are integrated and tested
as a complete system to ensure that the software requirements have
been met. After testing, the software system is delivered to the
customer.
• Operation and maintenance:
– This is the longest life-cycle phase. The system is installed and put
into practical use.
– Maintenance involves correcting errors which were not discovered
earlier stages of the life-cycle, improving the implementation of
system units and enhancing the system’s services as new
requirements are discovered.
When to use?
In principle, the waterfall model should only be applied when requirements are well understood and
unlikely to change radically during development as this model has a relatively rigid structure which
makes it relatively hard to accommodate change when the process in underway.
Advantages/Strengths
Disadvantages/weaknesses
• Easy to understand, easy to use
• The drawback of the waterfall model is the difficulty
• Provides structure to inexperienced staff of accommodating change after the process is
• Sets requirements stability underway because of sequential nature
• Good for management control (plan, staff, • Not a good model for complex and object-oriented
track) projects.
• Works well when quality is more important • Does not reflect problem-solving nature of software
than cost or schedule development – iterations of phases.
• Easy to understand even by non-technical • Poor model for long and ongoing projects.
person, i.e customers. • Inflexible partitioning of the project into distinct
• Each phase has well defined inputs and stages
outputs. • This makes it difficult to respond to changing
• Easy to use as software development customer requirements
proceeds,
• Each stage has well defined deliverables. • This model is only appropriate when the
requirements are well-understood
• Helps the project manager in proper planning
of the project.
Prototyping Model
• A prototype is a version of a system or part of the system that’s developed quickly to check the
customer’s requirements or feasibility of some design decisions.
• So, a prototype is useful when a customer or developer is not sure of the requirements, or of
algorithms, efficiency, business rules, response time, etc.
• In prototyping, the client is involved throughout the development process, which increases the
likelihood of client acceptance of the final implementation.
• While some prototypes are developed with the expectation that they will be
discarded(throwaway), it is possible in some cases to evolve from prototype to working
system(evolutionary).
• A software prototype can be used:
– In the requirements engineering, a prototype can help with the elicitation and validation of system
requirements.
– It allows the users to experiment with the system, and so, refine the requirements. They may get
new ideas for requirements, and find areas of strength and weakness in the software.
– Furthermore, as the prototype is developed, it may reveal errors and in the requirements. The
specification maybe then modified to reflect the changes.
– In the system design, a prototype can help to carry out deign experiments to check the feasibility of
a proposed design.
• For example, a database design may be prototyped and tested to check it supports efficient
data access for the most common user queries.
6. Engineer product:
Once the requirements are completely met, the user accepts the final prototype.
The final system is evaluated thoroughly followed by the routine maintenance on
regular basis for preventing large-scale failures and minimizing downtime.
Advantages/Disadvantages • Weaknesses:
• Advantages: – This model is time consuming and expensive.
– The developer loses focus of the real purpose of prototype
• Reduce the risk of incorrect user and hence, may compromise with the quality of the
software. For example, developers may use some inefficient
requirement algorithms or inappropriate programming languages while
• Good where requirement are developing the prototype.
changing/uncommitted – Prototyping can lead to false expectations. For example, a
situation may be created where the user believes that the
• Regular visible process aids development of the system is finished when it is not.
management – An unstable/badly implemented prototype often becomes
the final product.
• Support early product marketing • Require extensive customer collaboration
• Reduce Maintenance cost. – Costs customer money
• Errors can be detected much – Needs committed customer
earlier as the system is made side – Difficult to finish if customer withdraw
by side. – May be too customer specific, no broad market
• Difficult to know how long the project will last.
• Easy to fall back into the code and fix without proper
requirement analysis, design, customer evaluation, and
feedback.
• Prototyping tools are expensive.
• Special tools & techniques are required to build a prototype.
15
Iterative Model
• In the iterative model, the development starts with a limited number of finalized
and prioritized requirements.
• The deliverable is a working increment of the product.
• A set of activities ranging from requirements to code development is called
iteration.
• Based on the functionality of the increment and any or all of the new, modified,
pending requirements, the next lot of requirements is given to the subsequent
iteration.
• The outcome of the subsequent iteration is an enhanced working increment of the
product. This is repeated till the product accomplishes the required functionalities.
• The process of Iterative Model is cyclic, unlike the more traditional models that
focus on a rigorous step-by-step process of development.
• In this process, once the initial planning is complete, a handful of phases are
repeated again and again, with the completion of each cycle incrementally
improving and iterating on the software
Iterative Model Phases:
• Requirement Identification and Planning Phase:
– proper planning is done by the team, which helps them in mapping out the
specifications documents, establish software or hardware requirements and
generally prepare for the upcoming stages of the cycle.
• Analysis and Design Phase:
– an analysis is performed to point out the appropriate business logic, database
models and to know any other requirements of this particular stage.
– the technical requirements are established that will be utilized in order to
meet the need of analysis stage.
• Implementation Phase:
– the actual implementation and coding process is executed.
– All planning, specification, and design documents up to this point are coded
and implemented into this initial iteration of the project.
• Testing Phase:
– testing is initiated in the cycle to identify and locate any potential bugs or
issues that may have been in the software.
• Evaluation Phase:
– the entire team along with the client, examine the status of the project and
validate whether it is as per the suggested requirements.
19
20
• Spiral Model:
– The spiral model is a risk-driven where the process is represented as spiral
rather than a sequence of activities.
– The spiral model was originally proposed by Boehm in 1988.
– In this model, process is represented as a spiral rather than as a sequence
of activities with backtracking from one activity to another.
– Each loop in the spiral represents a phase in the process.
– No fixed phases such as specification or design - loops in the spiral are
chosen depending on what is required
– Risks are explicitly assessed and resolved throughout the process
– It was designed to include the best features from the waterfall and
prototyping models, and introduces a new component; risk-assessment.
Structure/phases
• Determine Objectives, alternatives and Constraints: (Specific objectives for
the phase are identified)
– Objectives: functionality, performance, hardware/software interface, critical
success factors, etc.
– Alternatives: build, reuse, buy, sub-contract, etc.
– Constraints: cost, schedule, interface, etc.
• Evaluate alternatives ,identify, resolve risks: Risks are assessed and
activities put in place to reduce the key risks)
– Study alternatives relative to objectives and constraints
– Identify risks (lack of experience, new technology, tight schedules, poor process,
etc.
– Resolve risks (evaluate if money could be lost by continuing system development
• Development and validation: A development model for the system is
chosen which can be any of the generic models
– After risk evaluation, a development model for the system is chosen
which can be any generic model. After risk evaluation, a process model
for the system is chosen. So if the risk is expected in the user interface
then we must prototype the user interface. If the risk is in the
development process itself then use the waterfall model.
• Planning for next step: (The project is reviewed and the next phase of the
spiral is planned)
– The project is reviewed and a decision made whether to continue with a further
loop of the spiral. If it is decided to continue, plans are drawn up for the next phase
of the project.
– Develop various types of plan like project plan, configuration management
plan,test plan, installation plan etc.
SpiralDisadvantages
model
Advantages
• The model requires expertise in risk management
• The model tries to resolve all possible risks involved and excellent management skills.
in the project starting with the highest risk.
• Time spent for evaluating risks too large for small
• Provides early indication of insurmountable risks, or low-risk projects
without much cost
• Time spent planning, resetting objectives, doing
• Users see the system early because of rapid risk analysis and prototyping may be excessive
prototyping tools
• The model is complex
• Critical high-risk functions are developed first
• Spiral may continue indefinitely
• The design does not have to be perfect
• Developers must be reassigned during non-
• Users can be closely tied to all lifecycle steps development phase activities
• Early and frequent feedback from users • May be hard to define objective, verifiable
• Cumulative costs assessed frequently milestones that indicate readiness to proceed
through the next iteration
When to use Spiral model?
• When creation of a prototype is appropriate • When costs and risk evaluation is important
• For medium to high-risk projects • Users are unsure of their needs
• Requirements are complex • New product line
Significant changes are expected(Research and Exploration)
• Long-term project commitment unwise because of potential changes to economic priorities
23
Phases:
Business modeling:
The information flow among business functions is modeled in a way that answers the following questions:
What information drives the business process?
What information is generated? Who generates it?
Where does the information go? Who processes it?
Data modeling:
The information flow defined as part of the business modeling phase is refined into a set of data objects that are needed to support the
business.
The characteristics (called attributes) of each object are identified and the relationships between these objects defined.
Process modeling:
The data objects defined in the data modeling phase are transformed to achieve the information flow necessary to implement a business
function.
Processing descriptions are created for adding, modifying, deleting, or retrieving a data object.
Application generation:
RAD assumes the use of fourth generation techniques.
Rather than creating software using conventional third generation programming languages the RAD process works to reuse existing
program components (when possible) or create reusable components (when necessary).
In all cases, automated tools are used to facilitate construction of the software.
Testing and turnover:
Since the RAD process emphasizes reuse, many of the program components have already been tested. This reduces overall testing time.
However, new components must be tested and all interfaces must be fully exercised. Obviously, the time constraints imposed on a RAD
project demand “scalable scope”. If a business application can be modularized in a way that enables each major function to be completed in
less than three months, it is a candidate for RAD. Each major function can be addressed by a separate RAD team and then integrated to
for
When to use RAD Methodology?
When a system needs to be produced in a short span of time (2-3 months)
When the requirements are known
When the user will be involved all through the life cycle
When technical risk is less
When a budget is high enough to afford designers for modeling along with the cost of automated tools for code
generation
Advantages
Flexible and adaptable to changes
Makes use of reusable components, to decrease the cycle time
It is useful when you have to reduce the overall project risk
Due to code generators and code reuse, there is a reduction of manual coding
Disadvantages
Not Suitable for smaller Projects
For large but scalable projects, RAD requires sufficient human resources to create the right number of RAD
teams.
If commitment is lacking from customers or developers, RAD projects will fail.
RAD is not appropriate when technical risks are high. Heavy use of New technology requires high degree of
interoperability.
27
Agile methods
Dissatisfaction with the overheads involved in software design
methods of the 1980s and 1990s led to the creation of agile
methods.
These methods:
Focus on the code rather than the design
Are based on an iterative approach to software development
Are intended to deliver working software quickly and evolve this
quickly to meet changing requirements.
The aim : reduce overheads in the software process (e.g. by limiting
documentation) and to be able to respond quickly to changing requirements without
excessive rework.
Agile Methodology
AGILE methodology is a practice that promotes continuous iteration of development and testing throughout the software
development lifecycle of the project.
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.
In the Agile model, both development and testing activities are concurrent, unlike the Waterfall model.
Scrum and Kanban are two of the most widely used Agile methodologies.
The agile software development emphasizes on four core values.
Individual and team interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Iterative approach is taken and working software build is delivered after each iteration. Each build is incremental in terms of
features; the final build holds all the features required by the customer.
Agile methodology
Advantages Disadvantages
Is a very realistic approach to software development. Not suitable for handling complex dependencies.
Promotes teamwork and cross training. More risk of sustainability, maintainability and
Functionality can be developed rapidly and demonstrated. extensibility.
Resource requirements are minimum. An overall plan, an agile leader and agile PM practice is
Suitable for fixed or changing requirements a must without which it will not work.
Delivers early partial working solutions. Depends heavily on customer interaction, so if
customer is not clear, team can be driven in the wrong
Good model for environments that change steadily. direction.
Minimal rules, documentation easily employed. Transfer of technology to new team members may be
Enables concurrent development and delivery within an overall quite challenging due to lack of documentation.
planned context. Due to the shortage of formal documents, it creates
Little or no planning required. confusion and crucial decisions taken throughout
Easy to manage. various phases can be misinterpreted at any time by
Gives flexibility to developers thus reducing development time. different team members.
Frequent Delivery Due to the lack of proper documentation, once the
Face-to-Face Communication with clients. project completes and the developers allotted to
another project, maintenance of the finished project
Efficient design and fulfils the business requirement. can become a difficulty.
Anytime changes are acceptable.
Extreme Programming(XP)
Extreme Programming (XP) is an agile software development framework that aims to produce higher quality software,
and higher quality of life for the development team. XP is the most specific of the agile frameworks regarding
appropriate engineering practices for software development.
XP is a lightweight, efficient, low-risk, flexible, predictable, scientific, and fun way to develop a software
When XP is applicable?
Dynamically changing software requirements
Risks caused by fixed time projects using new technology
Small, co-located extended development team
The technology you are using allows for automated unit and functional tests
What are the values of XP?
Communication
face to face discussion with the aid of a white board or other drawing mechanism;
must be in communication with each other at all times
Simplicity
address only the requirements that you know about; don’t try to predict the future
Feedback
builds something, gathers feedback on your design and implementation, and then adjust your product going forward.
Courage
effective action in the face of fear
Respect
respect each other in order to communicate with each other, provide and accept feedback that honors your relationship, and to work together to
identify simple designs and solutions.
Why Extreme?
Advantages Disadvantages
Lightweight methods suit small-medium size projects. Difficult to scale up to large projects
Produces good team cohesion. where documentation is essential.
Emphasizes final product. Needs experience and skill if not to
Iterative. degenerate into code-and-fix.
Test based approach to requirements and quality assurance.
Close contact with the customer
No unnecessary programming work
Stable software through continuous testing
Error avoidance through pair programming
Changes can be made at short notice
Incremental planning Requirements are recorded on story cards and the stories to be included in a
release are determined by the time available and their relative priority. The
developers break these stories into development ‘Tasks’. See Figures 3.5 and
3.6.
Small releases The minimal useful set of functionality that provides business value is
developed first. Releases of the system are frequent and incrementally add
functionality to the first release.
Simple design Enough design is carried out to meet the current requirements and no more.
Test-first development An automated unit test framework is used to write tests for a new piece of
functionality before that functionality itself is implemented.
Refactoring All developers are expected to refactor the code continuously as soon as
possible code improvements are found. This keeps the code simple and
maintainable.
Extreme programming practices (b)
Pair programming Developers work in pairs, checking each other’s work and providing the support to
always do a good job.
Collective ownership The pairs of developers work on all areas of the system, so that no islands of
expertise develop and all the developers take responsibility for all of the code.
Anyone can change anything.
Continuous integration As soon as the work on a task is complete, it is integrated into the whole system.
After any such integration, all the unit tests in the system must pass.
Sustainable pace Large amounts of overtime are not considered acceptable as the net effect is
often to reduce code quality and medium term productivity
On-site customer A representative of the end-user of the system (the customer) should be available
full time for the use of the XP team. In an extreme programming process, the
customer is a member of the development team and is responsible for bringing
system requirements to the team for implementation.
Scrum
Scrum is a process framework that has been used to manage complex product
development since the early 1990s.
Scrum is not a process or a technique for building products; rather, it is
a framework within which you can employ various processes and techniques.
Scrum makes clear the relative efficacy of your product management and
development practices so that you can improve.
The Scrum framework consists of Scrum Teams and their associated roles, events,
artifacts, and rules.
Scrum
Scrum is an agile method that focuses on managing iterative development rather than
specific agile practices.
It is the most popular agile framework, which concentrates particularly on how to manage
tasks within a team-based development environment.
Scrum uses iterative and incremental development model, with shorter duration of
iterations.
Scrum is relatively simple to implement and focuses on quick and frequent deliveries.
There are three phases in Scrum.
The initial phase is an outline planning phase where you establish the general objectives for the
project and design the software architecture.
This is followed by a series of sprint cycles, where each cycle develops an increment of the
system.
The project closure phase wraps up the project, completes required documentation such as
system help frames and user manuals and assesses the lessons learned from the project.
Product backlog This is a list of ‘to do’ items which the Scrum team must tackle. They
may be feature definitions for the software, software requirements,
user stories or descriptions of supplementary tasks that are needed,
such as architecture definition or user documentation.
Product owner An individual (or possibly a small group) whose job is to identify
product features or requirements, prioritize these for development and
continuously review the product backlog to ensure that the project
continues to meet critical business needs. The Product Owner can be
but might also be a product manager in a software
company or other stakeholder representative.
Scrum terminology (b)
Scrum term Definition
Scrum A daily meeting of the Scrum team that reviews progress and prioritizes
work to be done that day. Ideally, this should be a short face-to-face
meeting that includes the whole team.
ScrumMaster The ScrumMaster is responsible for ensuring that the Scrum process is
followed and guides the team in the effective use of Scrum. He or she is
responsible for interfacing with the rest of the company and for ensuring
that the Scrum team is not diverted by outside interference. The Scrum
developers are adamant that the ScrumMaster should not be thought of
as a project manager. Others, however, may not always find it easy to
see the difference.
Scrum benefits
The product is broken down into a set of manageable and understandable chunks.
Unstable requirements do not hold up progress.
The whole team have visibility of everything and consequently team communication
is improved.
Customers see on-time delivery of increments and gain feedback on how the
product works.
Trust between customers and developers is established and a positive culture is
created in which everyone expects the project to succeed.
Other Various types of Software Process Model
Build and Fix model(ad-hoc model)
Product is constructed without specifications or any
attempt at design
Adhoc approach and not well defined
Simple two phase model:
Build: In this phase, the software code is developed and passed on
to the next phase.
Fix: In this phase, the code developed in the build phase is made
error free
Suitable for small programming exercises of 100 or 200
lines
Unsatisfactory for software for any reasonable size
Code soon becomes unfixable & not enhanceable
No room for structured design
Maintenance is practically not possible
• Inception: (The core idea is envisioned) Fig: Initial Development and Evolution Cycle of
▪ defines scope of the project. RUP
• Elaboration: (Use cases and Architecture are designed)
▪ How do we plan & design the project?
▪What resources are required?
▪What type of architecture may be suitable?
• Construction: (Activities from design to completed products)
▪ the objectives are translated in design & architecture
documents.
• Transition : (Follow up activities to ensure customer satisfaction)
▪ involves many activities like delivering, training,
supporting, and maintaining the product.
Advantages
It allows you to deal with changing requirements regardless of whether they are coming
from the customer or from the project itself.
It emphasizes the need for accurate documentation.
It forces integration to happen throughout the software development, more specifically
in the construction phase.
Disadvantages
It mostly relies on the ability of experts and professionals to assign the activities to
individuals who should then produce pre-planned results in the form of artifacts.
The integration in development process can also have an adverse impact on some more
fundamental activities during the stages of testing
Incremental Process model
• The incremental model combines the elements of waterfall
model and they are applied in an iterative fashion.
• The first increment in this model is generally a core product.
• Each increment builds the product and submits it to the
customer for any suggested modifications.
• The next increment implements on the customer's suggestions
and add additional requirements in the previous increment.
• This process is repeated until the product is finished.
For example, the word-processing software is developed using
the incremental model.
• Advantages of incremental model:
• This model is flexible because the cost of development is low and initial
product delivery is faster.
• It is easier to test and debug during the smaller iteration.
• The working software generates quickly and early during the software
life cycle.
• The customers can respond to its functionalities after every increment.
• Disadvantages of the incremental model:
• The cost of the final product may cross the cost estimated initially.
• This model requires a very clear and complete planning.
• The planning of design is required before the whole system is broken
into small increments.
• The demands of customer for the additional functionalities after every
increment causes problem during the system architecture.
52
Types:
1. Exploratory development:
Objective is to work with customers and to evolve a final system from an initial outline specification. Should start with well-understood
requirements
2.Throw-away prototyping:
Objective is to understand the system requirements. Should start with poorly understood requirements
53
• Advantages • Disadvantages
• An evolutionary approach is often • The process is not visible: Managers
more effective than waterfall need regular deliverables to measure
approaches in producing systems that progress. If systems are developed
meet the immediate needs of quickly, it is not cost-effective to
customers. produce documents that reflect every
• The advantage of software process version of the system.
that is based on an evolutionary • Systems are often poorly structured:
approach is that the specification can Continual change tends to corrupt the
be developed incrementally. software structure. Incorporating
• As users develop a better software changes becomes
understanding of their problem, this increasingly difficult and costly.
can be reflected in the software • Special Skills may be required
system.
54