CS8494 Softwareengineering-Unit I
CS8494 Softwareengineering-Unit I
CS8494 Softwareengineering-Unit I
UNIT I
SOFTWARE PROCESS AND AGILE DEVELOPMENT
What is 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.
Introduction to Software Engineering …
4
What is Software?
Software is developed or engineered, it is not
manufactured in the classical sense.
Software doesn't "wear out."
system software
application software
engineering/scientific software
embedded software
product-line software
AI software
Software—New Categories
7
Grid computing
Cognitive machines
tools
methods
process model
a “quality” focus
• Development approach
Methods for expected quality Methods • Structured Methods
Copyright © 2014, Infosys Limited Confidential
outputs adhering budget • Object Oriented
and time Methods
Process
13
Process framework
oFramework activities
Work tasks
work products
milestones & deliverables
QA checkpoints
oUmbrella Activities
The Software Process…
15
Testing Measurement
Communication
Involves communication among the customer
and other stake holders; encompasses
requirements gathering
Planning
linear,
incremental, or
evolutionary
Waterfall Model
24
Communication
Project initiation
Requirements
gathering
Planning
Estimating
Scheduling
Tracking Modeling
Analysis
Design Construction
Code
Test Deployment
Delivery
Support
Feedback
Waterfall Model with Feedback
26
Communication
Project initiation
Requirements
gathering
Planning
Estimating
Scheduling
Tracking Modeling
Analysis
Design Construction
Code
Test Deployment
Delivery
Support
Feedback
Incremental Model
27
Increment #1
Communication
Planning
Modeling
Construction
Deployment
Increment #2
Communication Planning
Modeling
Construction
Deployment
Increment #3
Communication
Planning
Modeling
Construction
Deployment
28
Prototyping Model
29
requirements
Focuses on those aspects of the software that
are visible to the customer/user
Feedback is used to refine the prototype
Prototyping Model...
30
Potential Problems
The customer sees a "working version" of the software,
wants to stop all development and then buy the
prototype after a "few fixes" are made
Developers often make implementation compromises to
get the software running quickly (e.g., language choice,
user interface, inefficient algorithms)
Lesson learned
Define the rules up front on the final disposition of the
prototype before it is built
In most circumstances, plan to discard the prototype and
engineer the actual production software with a goal toward
quality
Prototyping Model ...
31
Quick
Planning
Communication
Start
Modeling
Quick
Deployment, Design
Delivery,
and Feedback
Construction
of Prototype
Spiral Model
32
Planning
Risk Analysis / Resolution
Engineering activities
(design, code, test…)
Customer Evaluation
(errors, changes, new requirements…)
35
Model Advantages Disadvantages
Summarizing Models
• Simple and Systematic
• Limited or no scope for
Waterfall accommodating new
36
• Disciplined Approach requirements
• Potential delay in identifying
risks
• Part of the product
is visible at early • Time consuming
Increment stage • Expensive at times
al • Scope for
accommodating new
requirements
• Requires good
• Model for other models expertise in risk
Spiral • Iterative and realistic management
• Model is not suitable
for fixed budget
projects
General Weaknesses of Evolutionary
Process Models
37
Why RADApproach ?
• Tight deadlines
• High Pressure from Customer
• Quick time to Market
What is RADApproach ?
•Rapid Application Development
•Emphasis is on short development time. Completing system
development within a short time (60 days to 90days)
•Each major function addressed by a separate RAD team
•Users are involved throughout the development life cycle
Agile Approach What is “Agility”?
44
Requirements List
Priority 1 Priority 2 Priority 3 Priority 4
Analysis
Design
Code
Test
Production
Agility and the Cost of Change
46
An Agile Process
47
Common focus.
Collaboration.
Decision-making ability.
Self-organization.
Extreme Programming (XP)
52
XP Design
Follows the KIS principle
Encourage the use of CRC cards
For difficult design problems, suggests the
creation of “spike solutions”—a design
prototype
Encourages “refactoring”—an iterative
refinement of the internal program design
Extreme Programming (XP)…
54
XP Coding
Recommends the construction of a unit test
for a story before coding commences
Encourages “pair programming”
XP Testing
refact oring
pair
programming
Release
sof t ware increment
unit t est
project velocit y comput ed cont inuous int egrat ion