Software Processes n What is a process? Sequence of steps required to develop or maintain software...
Transcript of Software Processes n What is a process? Sequence of steps required to develop or maintain software...
Software Processes
What is a process? Sequence of steps required to develop or maintain
software
Characteristics prescribes major activities utilizes resources, subject to constraints such as
schedule, to produce intermediate and final results constraints and controls apply to activities,
resources, and products constraints on activities: time, budge, tools controls on activities: config. Mgmt, reports
Process should be
Visible: Activities should provide clear indications of progress (deadlines/milestones)
Understandable: Activities and their order of execution are well-defined
Supportable: Automated support for activities is available
Usable: Process is acceptable to and usable by developers
Defining Processes
A defined process: facilitates communication about the process provides a basis for process automation facilitates process reuse and evolution aids process management
Elements of process descriptions general description each activity has an entry and exit criteria activities are organized in “sequence” guiding principles explain goals of activities process may contain subprocesses resources, constraints
Evolution of Software Process Models
“Code and Fix” model code, test, debug
Problems requirements analysis and design ignored code does not evolve gracefully debugging is difficult
• Why? Unstructured, spaghetti coding, changes not localized, not modular, difficult to trace, relationships hard to determine
SWEng Paradigms for Prescriptive Process Models
Chosen based on nature of project, methods, tools used, controls and deliverables required
Linear Sequential Models (Classic or Waterfall, V-shaped)
Prototyping RAD Model Evolutionary Process Models (Incremental, Spiral,
Concurrent) Formal Methods 4GL Combinations
Process Models
Linear Sequential Analysis, design, coding, testing, maintenance Difficulties:
• Projects rarely follow sequential flow
• Requirements defined up-front a must (rarely done)
• Patient customer/no immediate feedback
Waterfall Methods and Variants
Phases (similar to develop hardware) Analysis, Design, Code, Test, Maintain
Difficulties projects rarely follow sequential flow requirements defined up-front a must (rarely done) patient customers/no immediate feedback no insight given into how each activity transforms an
intermediate product into another Variants
V-shaped model: relationship between types of tests and phases before testing
Prototyping variant: requirements and design prototypes
Waterfall Model
Deliverables
http://www.solovatsoft.com/Development%20Standard%20Deliverables.pdf
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill, 2009). Slides copyright 2009 by Roger Pressman. 10
The V-Model
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill,
2009). Slides copyright 2009 by Roger Pressman. 11
Evolutionary Models: Prototyping
Constructionof prototype
Communication
Quick plan
Construction of prototype
Modeling Quick design
Delivery & Feedback
Deployment
communication
Quickplan
ModelingQuick design
Constructionof prototype
Deploymentdelivery &feedback
Evolutionary Models: Prototyping
Prototyping quick design, build prototype, evaluate, refine
prototype, … engineer product Prototyping
Paper/working subset of features/existing program with some features
Requirements, quick design, build prototype, customer evaluation, refine prototype, engineered product
Problems:• Customer sees prototype, then wants a few fixes quick and
delivery• Implementation compromises made to get prototype done
quickly/forgets compromises and become part of the system
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill, 2009). Slides copyright 2009 by Roger Pressman. 14
The Incremental Model
C o m m u n i c a t i o n
P l a n n i n g
M o d e l i n g
C o n s t r u c t i o n
D e p l o y m e n t
d e l i v e ry f e e d b a c k
analys is
des ign code
t es t
increment # 1
increment # 2
delivery of 1st increment
delivery of 2nd increment
delivery of nth increment
increment # n
project calendar time
C o m m u n i c a t i o nP l a n n i n g
M o d e l i n g
C o n s t r u c t i o n
De p l o y m e n t
d e l i v e r y
f e e d b a c k
analys is
des ign code
t es t
C o m m u n i c a t i o nP l a n n i n g
M o d e l i n g
C o n s t r u c t i o n
D e p l o y m e n t
d e l i v e r y
f e e d b a c k
analys is
des igncode t es t
Incremental/Iterative Development
Incremental: functionality developed in pieces
Iterative: put in all features, but they are limited
Benefits and Problems of Evolutionary Development
Incremental: Each build focuses on a subset of functionality, simplifying development
Opportunity to learn about problem as design develops customer get a product early and can provide feedback
for future builds customer can test software different releases can focus on enhancements that
require specialized expertise
improperly planned builds result in complex system backward compatibility limits elegance of future
releases (and can force hacking) error in basic system architecture may require changes
to basic structure that invalidate earlier releases
Other Process Models
Transformation (4GLs) Requirements, “design”, implementation using
4GL (specifications into code generator) Advantage
• Reduces time to produce SW
Problems• Design/Analysis reduced
• Some CASE tools produce skeletonized code
Limited to certain domains• Business IS
• Compilers (lex, YACC, SDL)
Choosing a Process Models
Choice depends on nature of project requirements clearly defined and stable? Pressure to produce a working product quickly? Consequences of operational errors serious?
Classified along a spectrum ranging from radical: all activities carried out in parallel
• suitable when quick results needed and requirements fuzzy
conservative: all activities carried out in a strict sequence with no overlap
• suitable when consequences of errors serious and requirements are clear and stable
None of the extremes are viable
Process Maturity
Processes should be tailored to development environment
The software process maturity framework allows organizations to determine the capabilities of their current processes and establish priorities for improvement