Software Requirements Modeling and Design: CS/SWE 321 Dr. Rob Pettit Fall 2014
Software Requirements Modeling and Design: CS/SWE 321 Dr. Rob Pettit Fall 2014
Software Requirements Modeling and Design: CS/SWE 321 Dr. Rob Pettit Fall 2014
CS/SWE 321
Dr. Rob Pettit
Fall 2014
change
actual curve
idealized curve
Time
• Engineering is …
– The application of scientific principles and
methods to the construction of useful structures &
machines
• Examples
– Mechanical engineering
– Civil engineering
– Chemical engineering
– Electrical engineering
– Nuclear engineering
– Aeronautical engineering
• Software Crisis
– Software development projects were delivered late
– Software was full of errors
– Software did not satisfy requirements
– Software was difficult to maintain
• OR…
– Software engineering is the establishment and use of sound
engineering principles in order to obtain economically
developed software that is reliable and works efficiently on
real machines
16"
Copyright © 2014 Rob Pettit
Process Flow"
• Life cycle activities
must be paired with
a flow model
– Identified when
activities occur
17"
Copyright © 2014 Rob Pettit
Adapting a Process Model"
• Each software development effort must define the process to be used!
• Often start with an “off the shelf” process and then tailor it to meet specific
project needs!
• Final, specific version to be applied is defined in the Software Development
Plan (SDP)!
• Factors for choosing and tailoring a process model include:!
– the criticality and nature of the system to be developed!
– the overall flow of activities, actions, and tasks !
– the degree to which work products are identified and required!
– the manner in which quality assurance activities are applied!
– the manner in which project tracking and control activities are applied!
– the overall degree of detail and rigor with which the process is described!
– the degree to which the customer and other stakeholders are involved
with the project!
– the level of autonomy given to the software team!
– the degree to which team organization and roles are prescribed!
18"
Copyright © 2014 Rob Pettit
Prescriptive vs. Agile Process Models"
• Prescriptive process models advocate an orderly approach to
software engineering"
– Waterfall"
– Incremental"
– Evolutionary / Spiral"
– Unified Process"
– COMET (Gomaa book)"
• Agile process models advocate flexibility and speed"
– XP (Extreme Programming)"
– Scrum"
• Both types of process models have their place in software
engineering"
"
"
19"
Copyright © 2014 Rob Pettit
The Waterfall Model"
Communication
projec t init iat ion Plann in g
requirement gathering estimatin g Modeling
sc hed uli ng
tra ck ing
analysis Constr uc tion
design Deployment
code
test delivery
s upport
f eedba c k
20"
Copyright © 2014 Rob Pettit
The Incremental Model"
increment # n
Communic at ion
Planning
M odeling
a na lys is Co n s t ru c t i o n
des ign
c ode De pl o y m e n t
t es t d e l i v e ry
fe e d b a c k
delivery of
increment # 2 n th increment
Com munic a t i on
Planning
M odeling
analys is C o n s t ru c t i o n
des ign code 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
delivery of
increment # 1 2nd increment
Communicat ion
Planning
M odeling
ana lys is C o n s t ru c t i o n
des ign code
delivery of
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
1st increment
communication
modeling
analysis
design
start
deployment
construction
delivery
code
feedbac k test
22"
Copyright © 2014 Rob Pettit
The Unified Process (UP)"
Elaboration
elaboration"
Inception
inception !
construction
Release
transition
software increment
production
23"
Copyright © 2014 Rob Pettit
Collaborative Object Modeling and architectural design mEThod
(COMET)
Communication / Planning
Figure 5.1: COMET use case based software life cycle model
Modeling - Analysis
Requirements
User
Modeling Modeling - Design
Analysis
Modeling
Design
Throwaway
Modeling Construction
Prototyping
Incremental Testing
Software
Construction
Incremental
Software
Integration
Incremental System
Prototyping Testing
Customer
Deployment 24
Copyright © 2014 Rob Pettit
Agile Software Development"
• Drivers:"
– Faster delivery of working software to customers without
“excessive” process burdens"
– Avoidance of things that “waste time”"
• Agile methods emphasize:"
• Individuals and interactions over processes and tools !
• Working software over comprehensive documentation !
• Customer collaboration over contract negotiation !
• Responding to change over following a plan !
25"
Copyright © 2014 Rob Pettit
Extreme Programming (XP)"
• The most widely used agile process, originally proposed by Kent
Beck"
• XP Planning"
– Begins with the creation of “user stories”"
– Agile team assesses each story and assigns a cost"
– Stories are grouped together for a deliverable increment"
– A commitment is made on delivery date"
– After the first increment “project velocity” is used to help
define subsequent delivery dates for other increments"
26"
Copyright © 2014 Rob Pettit
Extreme Programming (XP)"
spike solutions
simple design
prototypes
CRC cards
user stories
values
acceptance test criteria
iteration plan
refactoring
pair
programming
Release
software increment unit test
project velocity computed continuous integration
acceptance testing
27"
Copyright © 2014 Rob Pettit
Scrum"
• Originally proposed by Schwaber and Beedle"
• 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"
28"
Copyright © 2014 Rob Pettit
Scrum"
29"
Copyright © 2014 Rob Pettit
Agile vs. Prescriptive Processes"
Agile" Prescriptive"
1. Small products and 1. Large products and
teams; scalability teams; hard to scale
limited" down"
2. Untested on safety- 2. Handles highly critical
critical products" products; hard to scale
3. Good for dynamic, but down"
expensive for stable 3. Good for stable, but
environments." expensive for dynamic
4. Require experienced environments"
Agile personnel 4. Require experienced
throughout" personnel only at start
5. Personnel thrive on if stable environment"
freedom and chaos" 5. Personnel thrive on
structure and order"
Copyright © 2014 Rob Pettit
Review
Software Engineering in a Nutshell
• Development of software systems whose size/
complexity warrants team(s) of engineers
– Multi-person construction of multi-version software
• Scope
– Software process (life cycle)
– Software development principles
– Software methods and notations
• Goals
– Production of quality software,
– Delivered on time, within budget,
– Satisfying customers’ requirements and users’ needs
Figure 5.1: COMET use case based software life cycle model
Requirements
User
Modeling
Analysis
Modeling
Design
Modeling
Throwaway
Prototyping
Incremental
Software
Construction
Incremental
Software
Integration
Incremental System
Prototyping Testing
Customer
Use Case
Actor
Use Case A
«extend» «extend»
Figure 2.1 UML notation
for use case diagram Use Case B Use Case C
Use Case X
«include»
«include»
Use Case Y Use Case Z
Copyright © 2014 Rob Pettit 44
Analysis Modeling
• Analysis Modeling consists of
• Static Modeling
• View of system that does not change with time
• Dynamic Modeling
• View of system that does change with time
Figure 5.1: COMET use case based software life cycle model
Requirements
User
Modeling
Analysis
Modeling
Design
Modeling
Throwaway
Prototyping
Incremental
Software
Construction
Incremental
Software
Integration
Incremental System
Prototyping Testing
Customer
Superclass
ClassA
1
Association Association
0..1
* Subclass1 SubclassA2
ClassB ClassC
Association Association
(with direction in which (with direction of Generalization/specialization
association name is read) navigability)
: Actor
1: Input Message
2: Internal Message
3: Another Message
4: Request Message
5: Reply
subsystems Throwaway
Prototyping
Design
Modeling
Incremental System
Prototyping Testing
Customer
«software
system»
BankingSystem
1 1 Requests
Service
From
«external
input/output
1 1 «client» 1..* 1 «service»
device»
«subsystem» «subsystem»
CardReader ATMClient BankingService
1
«external
user»
1 ATMCustomer
on use cases
User
Analysis
Design
Modeling
Throwaway
Incremental
Pseudocode Software
Construction
– Structured English
Incremental
Software
Integration
• Unit test
– Test individual objects
– (instantiated from
classes)
Integration Analysis
Modeling
Incremental
Software
Incremental System
Prototyping Testing
Customer
• Incremental Software
Construction Figure 5.1: COMET use case based software life cycle model
– Testing of software
Design
Modeling
Throwaway
Prototyping
Incremental System
Prototyping Testing
Customer
ADDITIONAL DEFINITIONS