Software Engineering: Dr. S M Satapathy
Software Engineering: Dr. S M Satapathy
L T P C
BCSE301L - 3 0 0 3
BCSE301P - 0 0 2 1
Dr. S M SATAPATHY
Associate Professor Sr.,
School of Computer Science and Engineering,
VIT Vellore, TN, India – 632 014.
Module – 1
1. Nature of Software
4. Agile Process
2
INTRODUCTION
3
Software
Software is: (1) instructions (computer programs) that when
executed provide desired features, function, and performance; (2)
data structures that enable the programs to adequately manipulate
information and (3) documentation that describes the operation and
use of the programs.
5
Software Applications
system software
application software
engineering/scientific software
embedded software
product-line software
6
Software Applications – New Categories
Open world computing - pervasive, distributed computing
Ubiquitous computing - wireless networks
Netsourcing - the Web as a computing engine
Open source – “free” source code open to the computing
community (a blessing, but also a potential curse!)
Also …
Data mining
Grid computing
Cognitive machines
Software for nanotechnologies
7
Legacy Software
environments or technology.
requirements.
network environment.
8
What do you mean by Software Engineering?
9
Software Engineering
11
Software Engineering
12
Software Engineering
13
Software Engineering
14
A Layered Technology
tools
methods
process model
a “quality” focus
Software Engineering
15
Process Framework
Process framework
Framework activities
work tasks
work products
QA checkpoints
Umbrella Activities
16
Framework Activities
Communication
Planning
Modeling
Analysis of requirements
Design
Construction
Code generation
Testing
Deployment
17
Umbrella Activities
Risk management
Measurement
Reusability management
19
Understand the Problem
Who has a stake in the solution to the problem? That is, who are
the stakeholders?
What are the unknowns? What data, functions, and features are
model be created?
20
Plan the Solution
Have you seen similar problems before? Are there patterns that
that implements the data, functions, and features that are required?
solution reusable?
22
Examine the Result
functions, and features that are required? Has the software been
23
David Hooker’s General Principles
7: Think!
24
Software Myths
and practitioners
but …
therefore …
engineering
25
Software Myths (Management Perspectives)
need to know.
later.”
27
Software Myths (Practitioner Perspectives)
Once we write the program and get it to work, our job is done.
“The sooner you begin ‘writing code’, the longer it’ll take you to
get done.”
quality.
working program.
31
Cost of Software Production
development costs.
system reliability.
used.
32
Attributes of Good Software
The software should deliver the required functionality and
performance to the user and should be maintainable, dependable
and acceptable.
Maintainability
Software must evolve to meet changing needs;
Dependability
Software must be trustworthy;
Efficiency
Software should not make wasteful use of system resources;
Acceptability
Software must accepted by the users for which it was designed.
This means it must be understandable, usable and compatible
with other systems. 33
Key Challenges of Software Engineering
Heterogeneity
Delivery
Trust
36
System Engineering vs. Software Engineering
software components.
37
Practice Questions
1. Why can’t we find all errors before we give the software to our
customers?
39
SOFTWARE PROCESS
40
Generic Process Model
41
Process Flow
42
Classical Waterfall Model
43
Shortcomings of Classical Waterfall Model
No feedback Paths
No overlapping of phases
44
Iterative Waterfall Model
Classical waterfall model is idealistic:
in practice:
45
Iterative Waterfall Model
redo some of the work done during that and all subsequent
phases.
46
Iterative Waterfall Model
Feasibility Study
Req. Analysis
Design
Coding
Testing
Maintenance
47
Shortcomings of Iterative Waterfall Model
48
Phase Containment of Errors
reviews.
49
Phase Containment of Errors
are found at each phase of the application, and are not multiplied
50
When to use Waterfall Model
Technology is understood
51
V Model
52
V Model
53
Strengths of V Model
54
Weaknesses of V Model
55
When to use V Model
analysis phase
56
Prototyping Model
low reliability,
inefficient performance.
57
Why Prototyping Model?
58
Prototyping Model
Build Prototype
Refine Implement
Requirements
Test
Maintain
59
Prototyping Model
Quick
Q u i ck p l an
plan
Co m m u n icat io n
communication
Modeling
Mo d e lin g
Q u i ck
Quick d e si g n
design
Deployment
Deployment
De live r y
delivery &
& feedback
Fe e d b ack Co n st r u ct io n
Construction
of
of prototype
p r o t o t yp e
60
Prototyping Model Steps
Start with approximate requirements.
62
Prototyping Model Strengths
Users are actively involved in the development
developed.
64
Disadvantages of Prototyping Model
analysis
65
When to use Prototyping Model
Short-lived demonstrations
66
Incremental Model
delivered
system
increment
design build install evaluate
3
67
Incremental Process
68
Advantages of Incremental Model
Users get a chance to experiment with a partially developed system:
much before the full working version is released,
Helps finding exact user requirements:
much before fully working system is developed.
Core modules get tested thoroughly:
reduces chances of errors in final product.
70
When to use Incremental Model
71
Which step first?
some steps will be pre-requisite because of physical dependencies
others may be in any order
value to cost ratios may be used
V/C where
V is a score 1-10 representing value to customer
C is a score 0-10 representing value to developers
72
V/C ratios: an example
73
Spiral Model
Proposed by Boehm in 1988.
Customer
Evaluation of Develop Next
Prototype Level of Product
75
Spiral Model
planning
estimation
scheduling
risk analysis
communication
modeling
analysis
design
start
deployment
construction
delivery cod e
feedback test
76
Objective Setting (First Quadrant)
Identify objectives of the phase,
Risk:
77
Risk Assessment and Reduction (Second Quadrant)
For each identified project risk,
79
Review and Planning (Fourth Quadrant)
review the results achieved so far with the customer and plan the
next iteration around the spiral.
Typical activities
Develop project plan
Develop configuration management plan
Develop a test plan
Develop an installation plan
80
When to use Spiral Model
to economic priorities
uses:
prototyping as a risk reduction mechanism
retains the step-wise approach of the waterfall model.
82
RAD Model
users
83
RAD Model
It is a type of incremental model.
In RAD model the components or functions are developed in parallel
as if they were mini projects.
The developments are time boxed, delivered and then assembled
into a working prototype.
This can quickly give the customer something to see and use and to
provide feedback regarding the delivery and their requirements.
Prototypes are constructed, incrementally features are developed
and delivered to the customer.
But prototypes are not thrown away rather enhanced and used in the
software construction.
84
Phases of RAD Model
Communication:
Planning:
Modeling:
Construction:
generation.
85
Modeling
used to define data objects that are needed for the business.
86
Modeling
87
Advantages of RAD Model
88
Disadvantages of RAD Model
business requirements.
89
When to use RAD Model
to economic priorities
90
Applicability of RAD Model
Customized software
Non-critical software
Large software
91
Applications where RAD unsuitable
Generic Products
Monolithic Entity
92
Evolutionary Model: Concurrent
none
rep resent s t he st at e
Under o f a so f t ware eng ineering
act ivit y o r t ask
development
A wait ing
changes
Under review
Under
revision
Baselined
Done
93
Comparison of Life Cycle Model
is a development objective
requirements
96
Unified Process Model
Pros
Quality documentation emphasized.
Continuous customer involvement.
Accommodates requirements changes.
Works well for maintenance projects.
Cons
Use cases are not always precise.
Tricky software increment integration.
Overlapping phases can cause problems.
Requires expert development team.
97
Agility
Effective (rapid and adaptive) response to change.
Effective communication among all stakeholders.
Drawing the customer onto the team.
Organizing a team so that it is in control of the work performed.
Rapid, incremental delivery of software.
98
Agile Software Development
Agile software development emphasizes on:
Good communication between the client and developers
Rapid delivery of software
Change of Demand
It promotes adaptive planning, evolutionary development and
delivery, a time-boxed iterative approach
99
Agility Principles
Customer satisfaction is achieved by providing value through
software that is delivered to the customer as rapidly as possible.
Develop recognize that requirements will change and welcome
changes.
Deliver software increments frequently (weeks not months) to
stakeholders to ensure feedback on their deliveries is meaningful.
Agile team populated by motivated individuals using face-to-face
communication to convey information.
Team process encourages technical excellence, good design,
simplicity, and avoids unnecessary work.
100
Agility Principles
Working software that meets customer needs is the primary goal.
Pace and direction of the team’s work must be “sustainable,”
enabling them to work effectively for long periods of time.
An agile team is a “self-organizing team”—one that can be trusted
develop well-structured architectures that lead to solid designs and
customer satisfaction.
Part of the team culture is to consider its work introspectively with
the intent of improving how to become more effective its primary
goal (customer satisfaction).
101
Types of Agile Methodologies
Adaptive Software Development (ASD)
{J. Highsmith and S. Bayer, 1992}
Crystal Methods (Crystal Clear)
{Alistair Cockburn, 1992}
Extreme Programming (XP)
{Kent Beck, 1999}
Feature Driven Development (FDD)
{Jeff De Luca, 1997}
Lean Software Development
{Mary Poppendieck and Tom Poppendieck, 2003}
Agile Unified Process (AUP)
{Scott Ambler, 2000}
Scrum
{Ken Schwaber, Jeff Sutherland, 1991}
Disciplined Agile Delivery
{Scott Ambler and Mark Lines, 2012}
Dynamic Systems Development Method (DSDM)
{DSDM Consortium, 1994}
102
Agile Software Development
103
Agile Software Development
104
Extreme Programming
The name of this model reflects the fact that it recommends taking
these best practices that have worked well in the past in program
development projects to extreme levels.
It is based on simple philosophy: “If something is known to be
beneficial, why not put it to constant use?”
The software development team determines the various features
(stories) the client would like the product to support.
A user story is a simplistic statement of customer about a
functionality he needs.
It does not mention about finer details such as different scenarios
that can occur, the precondition (state at which the system) to be
satisfied before the feature can be invoked, etc.
105
Extreme Programming
Based on the features (stories) the client wants:
The development team estimates the duration and cost of each
feature
The client selects the features for next build using cost-benefit
analysis
The proposed build is broken down into smaller pieces termed
tasks
The programmer draws up test cases for a task Test-driven
development (TDD)
Pair Programming: The programmer works together with a partner
on one screen to implement the task and ensure that all the test
cases work correctly.
106
Extreme Programming
Continuous integration of tasks since a number of pairs implement
tasks in parallel
The TDD test cases used for the task are retained and utilized in all
further integration testing.
A spike solution is a very simple program to explore potential
solutions. Build the spike to only addresses the problem under
examination and ignore all other concerns.
Framework Activities in XP Process Model:
Planning
Design
Coding
Testing
107
Extreme Programming
pair
programming
Release
sof t ware increment unit t est
project v elocit y comput ed cont inuous int egrat ion
108
Extreme Programming
XP is applicable for :
Projects involving new technology or research projects
Small projects
109
Scrum
Scrum is very popular and very widely used today.
Developed based on the concept that software development is
o not a defined process but an empirical process
o with complex input/output transformations that
o may or may not be repeated under differing circumstances.
Scrum—distinguishing features
Development work is partitioned into “packets”
Testing and documentation are on-going as the product is
constructed
Work occurs in “sprints” and is derived from a “backlog” of existing
requirements
Meetings are very short and sometimes conducted without chairs
“demos” are delivered to the customer with the time-box allocated
110
Scrum
111
Scrum
112
Adaptive Software Development
Mission-driven planning
Component-based focus
Uses “time-boxing”
113
Adaptive Software Development
adapt ive cycle planning Requirement s gat hering
uses mission st at ement JAD
project const raint s mini-specs
basic requirement s
t ime-boxed release plan
Release
sof t ware increment
adjust ment s f or subsequent cy cles
component s implement ed/ t est ed
f ocus groups f or f eedback
f ormal t echnical reviews
post mort ems
114
Dynamic Systems Development Method
DSDM—distinguishing features (Nine Guiding Principles)
Similar in most respects to XP and/or ASD
116
Crystal
Crystal—distinguishing features
Actually a family of process models that allow “maneuverability”
based on problem characteristics
Face-to-face communication is emphasized
Suggests the use of “reflection workshops” to review the work
habits of the team
117
Feature Driven Development
FDD—distinguishing features
Emphasis is on defining “features”
a feature “is a client-valued function that can be implemented in
two weeks or less.”
Uses a feature template
<action> the <result> <by | for | of | to> a(n) <object>
A features list is created and “plan by feature” is conducted
Design and construction merge in FDD
118
Feature Driven Development
119
Kanban
Visualizing workflow using a Kanban board.
Limiting the amount of work in progress at any given time.
Managing workflow to reduce waste by understanding the current
value flow.
Making process policies explicit and the criteria used to define
“done”.
Focusing on continuous improvement by creating feedback loops
where changes are introduced.
Make process changes collaboratively and involve all stakeholders
as needed.
120
Kanban
121
Kanban
Pros
Lower budget and time requirements.
Allows early product delivery.
Process policies written down.
Continuous process improvement.
Cons
Team collaboration skills determine success.
Poor business analysis can doom the project.
Flexibility can cause developers to lose focus.
Developer reluctance to use measurement.
122
DevOps
DevOps is a combination of software development (dev) and
operations (ops).
It is defined as a software engineering methodology which aims to
integrate the work of development teams and operations teams by
facilitating a culture of collaboration and shared responsibility.
Continuous development: Software delivered in multiple sprints.
Continuous testing: Automated testing tools used prior to integration.
Continuous integration: Code pieces with new functionality added to
existing code running code.
Continuous deployment: Integrated code is deployed to the
production environment.
Continuous monitoring: Team operations staff members proactively
monitor software performance in the production environment. 123
DevOps
124
DevOps
Pros
Reduced time to code deployment.
Team has developers and operations staff.
Team has end-to-end project ownership.
Proactive monitoring of deployed product.
Cons
Pressure to work on both old and new code.
Heavy reliance on automated tools to be effective.
Deployment may affect the production environment.
Requires an expert development team.
125
Practice Questions
1. Is it possible to combine process models? If so, provide an
example.
2. Describe agility for software projects in your own words. Try to
come up with more agility principle that would help a software
engineering team become more manoeuvrable.
3. Describe the XP concept of refactoring, pair programming and
spike solution with your own words citing an example.
4. Is it possible to complete a project in just one iteration and still be
agile? Explain your answer.
5. Discuss the reasons for which it can be difficult to introduce agile
methods into large companies.
6. How does XP model differ from the spiral model in its treatment of
incremental prototypes? 126
Disclaimer
127
Thank You for Your Attention !
128