Unit-1
Unit-1
Software Engineering:
A Practitioner's Approach, 7th Edition
Dr. Kiran Bhowmick
copyright © 1996, 2001, 2005
R.S. Pressman & Associates, Inc.
Nature of Software, Software Engineering, Software Process, CMM, Generic Process Model.
Prescriptive Process Models: The Waterfall Model, V Model.
Incremental Process Model: Incremental Model
Evolutionary Process Models: Prototyping Paradigm, The Spiral Model
Concurrent Process Models: Concurrent Process Model
Agile Methodology: Agility Principals, Agile Process Models: Extreme Programming (XP),
Adaptive Software Development (ASD), Dynamic Systems Development Method (DSDM),
Scrum, Crystal, Feature Driven Development (FDD), Agile Modeling (AM), Kanban Model
Software is a product
Delivers computing potential
Information transformer - Produces, manages, acquires,
modifies, displays, or transmits information
Software is a vehicle for delivering a product
Supports or directly provides system functionality
Controls other programs (e.g., an operating system)
Effects communications (e.g., networking software)
Helps build other software (e.g., software tools)
What is Software? 4
Management Myths
We already have a book of standards and procedures for building
software, that will provide my people with everything they need to
know
If we get behind schedule, we can add more programmers and catch
up
If I decide to outsource the software project to a third party I can just
relax and let that firm build it.
Software Myths 12
Customer Myths
A general statement of objectives is sufficient to begin writing programs – we can fill in
the details later
Project requirements continually change but change can easily be accommodated
because software is flexible
Practitioners Myths
Once we write the program and get it to work, our job is done.
Until I get the program running, I have no way of assessing its quality
The only deliverable work product for a successful projects is the working program
Software engineering will make us create voluminous and unnecessary
documentation and will invariably slow us down
Definitions 13
the framework activities will always be applied on every project ... BUT
the tasks (and degree of rigor) for each activity will vary based on:
the type of project
characteristics of the project
common sense judgment; concurrence of the project team
Paradigms of software engineering 18
process
Prescriptive Models
Waterfall model The Unified process model
V model
Agile process models
Incremental Process Models
XP
The incremental model
The RAD model Adaptive software development
Evolutionary Process models Dynamic systems development method
Prototyping model
Scrum
Spiral model
Crystal
Concurrent Development model
Specialized Process models Feature Driven Development
Component based model
Formal methods model
Aspect oriented s/w development model
The Waterfall Model 19
The waterfall model, sometimes called the classic life cycle, suggests a
systematic, sequential approach6 to software development that begins
with customer specification of requirements and progresses through
planning, modeling, construction, and deployment, culminating in
ongoing support of the completed software
20
The waterfall model, sometimes called the classic life cycle, suggests a systematic, sequential approach to
software development that begins with customer specification of requirements and progresses through
planning, modeling, construction, and deployment, culminating in ongoing support of the completed
software
Real projects rarely follow the sequential flow that the model proposes. Although the linear model can
accommodate iteration, it does so indirectly. As a result, changes can cause confusion as the project team
proceeds.
It is often difficult for the customer to state all requirements explicitly. The waterfall model requires this and
has difficulty accommodating the natural uncertainty that exists at the beginning of many projects.
The customer must have patience. A working version of the program(s) will not be available until late in the
project time span. A major blunder, if undetected until the working program is reviewed, can be disastrous.
Advantages of waterfall model:
This model is simple and easy to understand and use.
21
It is easy to manage due to the rigidity of the model – each phase has specific deliverables and a
review process.
In this model, phases are processed and completed one at a time. Phases do not overlap.
Waterfall model works well for smaller projects where requirements are very well understood.
As a software team moves down the left side of the V, basic problem requirements
are refined into progressively more detailed and technical representations of the
problem and its solution.
Once code has been generated, the team moves up the right side of the V,
essentially performing a series of tests (quality assurance actions) that validate
each of the models created as the team moved down the left side.
In reality, there is no fundamental difference between the classic life cycle and the
V-model. The V-model provides a way of visualizing how verification and validation
actions are applied to earlier engineering work.
Why preferred?
It is easy to manage due to the rigidity of the model. Each phase of V-Model has specific 25
deliverables and a review process.
When to use?
Where requirements are clearly defined and fixed.
The V-Model is used when ample technical resources are available with technical expertise.
Advantages:
This is a highly disciplined model and Phases are completed one at a time.
V-Model is used for small projects where project requirements are clear.
Disadvantages:
High risk and uncertainty.
It is not suitable for projects where requirements are not clear and contains high risk of changing.
Paradigms of software engineering 26
process
Prescriptive Models The Unified process model
Waterfall model
Agile process models
V-model
Incremental Process Models XP
The incremental model Adaptive software development
The RAD model Dynamic systems development method
Evolutionary Process models
Scrum
Prototyping model
Spiral model
Crystal
Concurrent Development model Feature Driven Development
Specialized Process models
Component based model
Formal methods model
Aspect oriented s/w development model
The Incremental Model 27
increment # n
Co m m u n i c a t i o n
Pl a n n i n g
M o d e l i n g
analy s is Co n s t ru c t i o n
des ign
c ode De p l o y m e n t
t es t d e l i v e ry
fe e d b a c k
deliv ery of
increment # 2 nt h increment
Co m m u n i c a t i o n
Pl a n n i n g
M o d e l i n g
analy s is Co n s t ru c t i o n
des ign c ode De p l o y m e n t
t es t d e l i v e ry
fe e d b a c k
deliv ery of
increment # 1 2nd increment
Co m m u n i c a t i o n
Pl a n n i n g
M o d e l i n g
analy s is Co n s t ru c t i o n
des ign c ode De p l o y m e n t
t es t d e l i v e ry deliv ery of
fe e d b a c k
1st increment
Each linear sequence produces deliverable “increments” of the software in a manner that is similar to the
increments produced by an evolutionary process flow.
When an incremental model is used, the first increment is often a core product. That is, basic requirements are
addressed but many supplementary features (some known, others unknown) remain undelivered.
The core product is used by the customer (or undergoes detailed evaluation). As a result of use and/or evaluation,
a plan is developed for the next increment. The plan addresses the modification of the core product to better meet
the needs of the customer and the delivery of additional features and functionality.
This process is repeated following the delivery of each increment, until the complete product is produced.
The incremental process model focuses on the delivery of an operational product with each increment. Early
increments are stripped-down versions of the final product, but they do provide capability that serves the user and
also provide a platform for evaluation by the user
Advantages of Incremental model:
Generates working software quickly and early during the software life cycle. 29
This model is more flexible – less costly to change scope and requirements.
It is easier to test and debug during a smaller iteration.
In this model customer can respond to each built.
Lowers initial delivery cost.
Easier to manage risk because risky pieces are identified and handled during iteration.
Implemented when staffing is unavailable.
Increments can be planned to manage technical risks
Major requirements must be defined; however, some details can evolve with
time.
C o n s t r u c t io n
c om ponent reus e
Team # 2 aut om at ic c ode
Co m m u n icat io n generat ion
t es t ing
Mo d el i ng
b u si n e ss m o d e l i n g
dat a m odeling
p ro ce ss m o d e l i n g
Plan n in g
Co nst r uct i o n De p lo ym e n t
Team # 1 co m p o n e n t re u se int egrat ion
a u t o m a t i c co d e
g e n e ra t i o n deliv ery
Mo d e lin g t e st i n g f eedback
business modeling
dat a modeling
process modeling
Co n st r u ct io n
component reuse
aut omat ic code
generat ion
t est ing
6 0 - 9 0 d ays
Advantages of the RAD model: 32
Reduced development time.
Increases reusability of components
Quick initial reviews occur
Encourages customer feedback
Integration from very beginning solves a lot of integration issues.
A prototyping iteration is planned quickly, and modeling (in the form of a “quick design”)
occurs. A quick design focuses on a representation of those aspects of the software that will
be visible to end users (e.g., human interface layout or output display formats).
The prototype is deployed and evaluated by stakeholders, who provide feedback that is
used to further refine requirements.
Iteration occurs as the prototype is tuned to satisfy the needs of various stakeholders, while at
the same time enabling you to better understand what needs to be done.
Advantages of Prototype model:
Users are actively involved in the development 37
Since in this methodology a working model of the system is provided, the users get a better
understanding of the system being developed.
Errors 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
Requirements validation, Quick implementation of, incomplete, but functional, application.
Typically, online systems, web interfaces have a very high amount of interaction with
end users, are best suited for Prototype model. It might take a while for a system to be
built that allows ease of use and needs minimal training for the end user.
Prototyping ensures that the end users constantly work with the system and provide a
feedback which is incorporated in the prototype to result in a useable system. They
are excellent for designing good human computer interface systems.
Evolutionary Models: The Spiral 39
planning
estimation
scheduling
risk analysis
communication
modeling
analysis
design
start
deployment
construction
delivery
code
feedback test
The spiral model is an evolutionary software process model that couples the iterative nature of prototyping
with the controlled and systematic aspects of the waterfall model. It provides the potential for rapid
development of increasingly more complete versions of the software.
Evolutionary Models: The Spiral 40
A spiral model is divided into a set of framework activities defined by the software engineering team.
Each of the framework activities represent one segment of the spiral path.
As this evolutionary process begins, the software team performs activities that are implied by a circuit around the spiral in
a clockwise direction, beginning at the center.
Anchor point milestones—a combination of work products and conditions that are attained along the path of the spiral—
are noted for each evolutionary pass.
The first circuit around the spiral might result in the development of a product specification; subsequent passes around the
spiral might be used to develop a prototype and then progressively more sophisticated versions of the software.
Each pass through the planning region results in adjustments to the project plan.
Cost and schedule are adjusted based on feedback derived from the customer after delivery.
In addition, the project manager adjusts the planned number of iterations required to complete the software.
Advantages of Spiral model:
41
High amount of risk analysis hence, avoidance of Risk is enhanced.
Good for large and mission-critical projects.
Strong approval and documentation control.
Additional Functionality can be added at a later date.
Software is produced early in the software life cycle.
represent s t he st at e
The concurrent development model,
Under
development
of a sof t ware engineering
act ivit y or t ask sometimes called concurrent engineering,
allows a software team to represent
A wait ing iterative and concurrent elements of any of
changes
the process models
Under review
Under
revision
Baselined
Done
Evolutionary Models: Concurrent model
44
Early in a project the communication activity has completed its first iteration and exists in the awaiting changes
state.
The modeling activity which existed in the inactive state while initial communication was completed, now
If, however, the customer indicates that changes in requirements must be made, the modeling activity moves
from the under development state into the awaiting changes state.
Concurrent modeling defines a series of events that will trigger transitions from state to state for each of the
For example, during early stages of design (a major software engineering action that occurs during the
This generates the event analysis model correction, which will trigger the requirements analysis action from the
Ela b o r a t io n
Inc e p t io n
Features
Use Case Driven, Architecture Centric, Iterative & Incremental
Draws Best Features from Conventional Process Models
Implements Best Principles of Agile S/W Development
Costumer Communication is emphasized ---- Use Case
Architecture Focus on Understandability, Reliance to future Changes & Reuse
c o nst r uc t io n
Release
t r a nsit io n
soft ware increment
p r o d uc t io n
Agile Modeling
47
The Manifesto for
Agile Software Development
“We are uncovering better ways of developing software by doing it and helping
others do it. Through this work we have come to value:
•Individuals and interactions over processes and tools
•Working software over comprehensive documentation
•Customer collaboration over contract negotiation
•Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the
left more.”
48
What is “Agility”?
Effective (rapid and adaptive) response to change (team members, new technology, requirements)
Effective communication in structure and attitudes among all team members, technological and business
people, software engineers and managers。
Drawing the customer into the team. Eliminate “us and them” attitude. Planning in an uncertain world has
its limits and plan must be flexible.
Eliminate all but the most essential work products and keep them lean.
Emphasize an incremental delivery strategy as opposed to intermediate products that gets working
software to the customer as rapidly as feasible.
49
What is “Agility”?
Yielding …
50
Why and What Steps are“Agility” important?
Why? The modern business environment is fast-paced and ever-changing. It represents a
reasonable alternative to conventional software engineering for certain classes of
software projects. It has been demonstrated to deliver successful systems quickly.
What? May be termed as “software engineering lite” The basic activities- communication,
planning, modeling, construction and deployment remain. But they morph into a minimal
task set that push the team toward construction and delivery sooner.
The only really important work product is an operational “software increment” that is
delivered.
51
An Agile Process
Is driven by customer descriptions of what is required (scenarios). Some assumptions:
Recognizes that plans are short-lived (some requirements will persist, some will change. Customer
priorities will change)
Develops software iteratively with a heavy emphasis on construction activities (design and
construction are interleaved, hard to say how much design is necessary before construction. Design
models are proven as they are created. )
52
Agility Principles - I
1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable
software.
2. Welcome changing requirements, even late in development. Agile processes harness change for the
customer's competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference
to the shorter timescale.
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support they need, and
trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a development team is
face–to–face conversation.
53
Agility Principles - II
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, developers, and users should be
able to maintain a constant pace indefinitely.
10. Simplicity – the art of maximizing the amount of work not done – is essential.
11. The best architectures, requirements, and designs emerge from self–organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its
behavior accordingly.
54
Human Factors
the process molds to the needs of the people and team, not the other way around
key traits must exist among the people on an agile team and the team itself:
Competence. ( talent, skills, knowledge)
Common focus. ( deliver a working software increment )
Collaboration. ( peers and stakeholders)
Decision-making ability. ( freedom to control its own destiny)
Fuzzy problem-solving ability.(ambiguity and constant changes, today problem may not be
tomorrow’s problem)
Mutual trust and respect.
Self-organization. ( themselves for the work done, process for its local environment, the
work schedule)
55
Extreme Programming (XP)
The most widely used agile process, originally proposed by Kent Beck in 2004. It uses an
object-oriented approach.
XP Planning
Begins with the listening, leads to creation of “user stories” that describes required output, features, and
functionality. Customer assigns a value(i.e., a priority) to each story.
Agile team assesses each story and assigns a cost (development weeks. If more than 3 weeks, customer asked to
split into smaller stories)
Working together, stories are grouped for a deliverable increment next release.
A commitment (stories to be included, delivery date and other project matters) is made. Three ways: 1. Either
all stories will be implemented in a few weeks, 2. high priority stories first, or 3. the riskiest stories will be implemented first.
After the first increment “project velocity”, namely number of stories implemented during the first release is
used to help define subsequent delivery dates for other increments. Customers can add stories, delete existing
stories, change values of an existing story, split stories as development work proceeds.
56
Extreme Programming (XP)
XP Design ( occurs both before and after coding as refactoring is encouraged)
Follows the KIS principle (keep it simple) Nothing more nothing less than the story.
Encourage the use of CRC (class-responsibility-collaborator) cards in an object-oriented context. The only design work
product of XP. They identify and organize the classes that are relevant to the current software increment. (see Chapter 8)
For difficult design problems, suggests the creation of “spike solutions”—a design prototype for that portion is implemented
and evaluated.
Encourages “refactoring”—an iterative refinement of the internal program design. Does not alter the external behavior yet
improve the internal structure. Minimize chances of bugs. More efficient, easy to read.
XP Coding
Recommends the construction of a unit test for a story before coding commences. So implementer can focus on what must
be implemented to pass the test.
Encourages “pair programming”. Two people work together at one workstation. Real time problem solving, real time review
for quality assurance. Take slightly different roles.
XP Testing
All unit tests are executed daily and ideally should be automated. Regression tests are conducted to test current and
previous components.
57
“Acceptance tests” are defined by the customer and executed to assess customer visible functionality
spike solut ions
simple design
prot ot ypes
CRC cards
user st ories
values
accept ance t est crit eria
it erat ion plan
pair
programming
Release
sof t ware increment
unit t est
project v elocit y comput ed cont inuous int egrat ion
Collaborator:
Stand-alone
Or Collaborate
59
The XP Debate
Requirements volatility: customer is an active member of XP team, changes to requirements
are requested informally and frequently.
Requirements are expressed informally: Use stories and acceptance tests are the only explicit
manifestation of requirements. Formal models may avoid inconsistencies and errors before
the system is built. Proponents said changing nature makes such models obsolete as soon as
they are developed.
Lack of formal design: XP deemphasizes the need for architectural design. Complex systems
need overall structure to exhibit quality and maintainability. Proponents said incremental
nature limits complexity as simplicity is a core value.
60
Adaptive Software Development (ASD)
Originally proposed by Jim Highsmith (2000)focusing on human collaboration and team self-organization as
a technique to build complex software and system.
ASD — distinguishing features
adapt ive cycle planning Requirement s gat hering
Mission-driven planning uses mission st at ement JAD
project const raint s mini-specs
Component-based focus basic requirement s
t ime-boxed release plan
Uses “time-boxing”
Explicit consideration of risks
Release
sof t ware increment
adjust ment s f or subsequent cycles
component s implement ed/ t est ed
focus groups for feedback
formal t echnical reviews
post mort ems
61
Three Phases of ASD
Three ways:
63
Dynamic Systems Development Method
It is an agile software development approach that provides a framework for building and
maintaining systems which meet tight time constraints through the use of incremental prototyping
in a controlled project environment.
DSDM—distinguishing features
Similar in most respects to XP and/or ASD
Nine guiding principles
Active user involvement is imperative.
DSDM teams must be empowered to make decisions.
The focus is on frequent delivery of products.
Fitness for business purpose is the essential criterion for acceptance of deliverables.
Iterative and incremental development is necessary to converge on an accurate business solution.
All changes during development are reversible.
Requirements are baselined at a high level
Testing is integrated throughout the life-cycle.
64
Dynamic Systems Development Method
Business study
Establish functional and information requirements that provide business value
Define basic architecture and identifies maintainability requirements
69
Scrum
70
Crystal
Proposed by Cockburn and Highsmith
Crystal—distinguishing features
Actually a family of process models that allow “maneuverability” based on
problem characteristics
Maneuverability – a resource limited corporate game of invention and
communication with a primary goal of delivering useful, working software and a
secondary goal of setting up for the next game
Face-to-face communication is emphasized
Suggests the use of “reflection workshops” to review the work habits of the
team
71
Feature Driven Development
Originally proposed by Peter Coad et al as a practical process
model for object-oriented software engineering process model.
FDD—distinguishing features
Emphasis is on defining “features” which can be organized hierarchically.
a feature “is a client-valued function that can be implemented in two weeks or less.”
73
Kanban model
The Kanban Method is a means to design, manage, and improve flow systems for knowledge work. The method also allows
organizations to start with their existing workflow and drive evolutionary change. They can do this by visualizing their flow of
work, limit work in progress (WIP) and stop starting and start finishing.
The Kanban Method gets its name from the use of Kanban – visual signaling mechanisms to control work in progress for
intangible work products.
When Applicable: Kanban can be used in any knowledge work setting, and is particularly applicable in situations where work
arrives in an unpredictable fashion and/or when you want to deploy work as soon as it is ready, rather than waiting for other
work items.
Principles
Change Management Principles: Kanban is structured to address the human tendency to resist change.
• Start with what you do now – Understand current processes as they are actually practiced and respect existing roles,
responsibilities and job titles.
• Agree to pursue improvement through evolutionary change
• Encourage acts of leadership at every level
Service Delivery Principles: These principles acknowledge that organizations are a collection of interdependent services, and
to place the focus on the work, not the people doing the work.
• Understand and focus on your customers’ needs and expectations
• Manage the work; let people self-organize around it
• Evolve policies to improve customer and business outcomes
Kanban model 75
Values
Transparency – sharing information openly using clear and straightforward language improves
the flow of business value.
Balance – different aspects, viewpoints, and capabilities must be balanced in order to achieve
effectiveness.
Collaboration – Kanban was created to improve the way people work together.
Customer Focus – Kanban systems aim to optimize the flow of value to customers that are
external from the system but may be internal or external to the organization in which the system
exists.
Flow – Work is a continuous or episodic flow of value.
Leadership – Leadership (the ability to inspire others to act via example, words, and reflection) is
needed at all levels in order to realize continuous improvement and deliver value.
Understanding – Individual and organizational self-knowledge of the starting point is necessary
to move forward and improve.
Agreement – Everyone involved with a system are committed to improvement and agree to
jointly move toward goals while respecting and accommodating differences of opinion and
approach.
Respect – Value, understand, and show consideration for people.
76
Sample Kanban
77
Sample Kanban
78
Kanban model 79
The following practices are activities essential to manage a kanban system.
Visualize
Kanban systems use mechanisms such as a kanban board to visualize work and the process it goes through. In order for
the visualization to be the most effective, it should show
•where in the process a team working on a service agrees to do a specific work item (commitment point)
•Where the team delivers the work item to a customer (delivery point)
•Policies that determine what work should exist in a particular stage
•WIP Limits
82
The CMMI 83
The CMMI - Capability Maturity Model Integration – represents a process meta-model in 2 different ways
Continuous model and staged model
defines each process area in terms of “specific goals” and the “specific practices” required to achieve
these goals.
Specific goals establish the characteristics that must exist if the activities implied by a process area are to
be effective.
Specific practices refine a goal into a set of process-related activities.
CMMI Levels
Level 0: Incomplete
Level 1: Performed
Level 2: Managed
Level 3: Defined
Level 4: Quantitatively managed
Level 5: Optimized
84
The CMMI