Title: COSC 4406 Software Engineering
1 COSC 4406Software Engineering
Haibin Zhu, Ph.D. Dept. of Computer Science and
mathematics, Nipissing University, 100 College
Dr., North Bay, ON P1B 8L7, Canada,
haibinz_at_nipissingu.ca, http//www.nipissingu.ca/fa
culty/haibinz
2Lecture 2Process Models and Agile Development
3Prescriptive Models
- They define a distinct set of activities,
actions, tasks, milestones, and work products
that are required to engineering high-quality
software. They are not perfect, but they do
provide a useful roadmap for software engineering
work.
4Prescriptive Models
- Prescriptive process models advocate an orderly
approach to software engineering - That leads to a few questions
- If prescriptive process models strive for
structure and order, are they inappropriate for a
software world that thrives on change? - Yet, if we reject traditional process models (and
the order they imply) and replace them with
something less structured, do we make it
impossible to achieve coordination and coherence
in software work?
5The Waterfall Model
http//www.stsc.hill.af.mil/crosstalk/1995/01/Comp
aris.asp
6The Incremental Model
Communication Planning Modeling (analysis,
design) Construction Deployment (deliver,
feedback)
7The RAD Model
It is an incremental model that emphasizes a
short development cycle by using component-based
approach.
8Evolutionary Models Prototyping
Quick plan
communication
Modeling Quick design
Deployment delivery feedback
Construction of prototype
9Strengths and Weaknesses of Prototyping
- Strengths of Prototyping
- Early functionality.
- Provides a process to perfect the requirements
definition. - Provides risk control.
- Documentation focuses on the end product not the
evolution of the product. - Provides a formal specification embodied in an
operating replica. - Weaknesses of Prototyping
- Less applicable to existing systems than to new,
original development. - Bad reputation among conservatives as a "quick
and dirty" method. - Suffers from bad documentation.
- Sometimes produces a system with poor
performance. - Tendency for difficult problems to be pushed to
the future so that the initial promise of the
prototype is not met by subsequent products.
10Comparing the incremental model and the
prototyping model
- Same
- They are iterative
- Difference
- The former focuses on the delivery of an
operational product with each increment. - The latter focuses on a representation of those
aspects of the software that will be visible to
the customer/end-user.
11Evolutionary Models The Spiral
It couples the iterative nature of prototyping
with the controlled and systematic aspects of
the waterfall model.
12STRENGTHS Water-fall Incremental Spiral
Allows for work force specialization X X X
Orderliness appeals to management X X X
Can be reported about X X X
Facilitates allocation of resources X X X
Early functionality X X
Does not require a complete set of requirements at the onset X X
Resources can be held constant X
Control costs and risk through prototyping X
The incremental model may be used with a complete set of requirements or with less defined general objectives.
13WEAKNESSES Waterfall Incremental Spiral
Requires a complete set of requirements at the onset X
Enforcement of non-implementation attitude hampers analyst/designer communications X
Beginning with less defined general objectives may be uncomfortable for management X X
Requires clean interfaces between modules X
Incompatibility with a formal review and audit procedure X X
Tendency for difficult problems to be pushed to the future so that the initial promise of the first increment is not met by subsequent products X X
14Evolutionary Models Concurrent
For each framework activity of the waterfall
model, there is a state transition diagram. Each
activity follows the diagram. Therefore, all
these activities are in concurrency.
15Still Other Process Models
- Component based developmentthe process to apply
when reuse is a development objective - Formal methodsemphasizes the mathematical
specification of requirements - AOSDprovides a process and methodological
approach for defining, specifying, designing, and
constructing aspects - Unified Processa use-case driven,
architecture-centric, iterative and incremental
software process closely aligned with the Unified
Modeling Language (UML)
16The Unified Process (UP)
inception
elaboration
Introduce agile features into The activities of
the waterfall model. Iterative, incremental.
inception
17UP Phases
18UP Work Products
19Agile Software Engineering
- It combines a philosophy and a set of development
guidelines. - The philosophy encourages
- customer satisfaction and early incremental
delivery of software - small, highly motivated project teams
- informal methods
- minimal software engineering products and
- overall development simplicity.
- The development guidelines stress delivery over
analysis and design and active and continuous
communication between developers and customers.
20The 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 / processes and
tools - Working software / comprehensive documentation
- Customer collaboration / contract negotiation
- Responding to change / following a plan
- That is, while there is value in the items on the
right, we value the items on the left more.
Kent Beck et al
21Human Factors
- Competence
- Common Focus
- Collaboration
- Decision-making ability
- Fuzzy problem-solving ability
- Mutual trust and respect
- Self-organization
22What is 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 - Yielding
- Rapid, incremental delivery of software
23An Agile Process
- Is driven by customer descriptions of what is
required (scenarios) - Recognizes that plans are short-lived
- Develops software iteratively with a heavy
emphasis on construction activities - Delivers multiple software increments
- Adapts as changes occur
- Assumptions
- It is difficult to predict in advance the
requirements - Phases are interleaved.
- All the phases are not predictable.
24Extreme 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 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
25Extreme Programming (XP)
- XP Design
- Follows the KIS principle
- Encourage the use of CRC cards (see Chapter 8)
- For difficult design problems, suggests the
creation of spike solutionsa design prototype - Encourages refactoringan iterative refinement
of the internal program design - XP Coding
- Recommends the construction of a unit test for a
store before coding commences - Encourages pair programming
- XP Testing
- All unit tests are executed daily
- Acceptance tests are defined by the customer
and excuted to assess customer visible
functionality
26Extreme Programming (XP)
27Adaptive Software Development
- Originally proposed by Jim Highsmith
- ASD distinguishing features
Self-oraganisation - Mission-driven planning
- Component-based focus
- Uses time-boxing (See Chapter 24)
- Explicit consideration of risks
- Emphasizes collaboration for requirements
gathering - Emphasizes learning throughout the process
28Adaptive Software Development
29Dynamic Systems Development Method
- Promoted by the DSDM Consortium (www.dsdm.org)
- Provides a framework for building systems that
meet tight time constraints through the use of
incremental prototyping in a controlled project
environment. - DSDMdistinguishing 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.
30Dynamic Systems Development Method
31Scrum
- Originally proposed by Schwaber and Beedle
- Scrumdistinguishing 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
32Scrum
33Crystal
- Proposed by Cockburn and Highsmith
- Crystaldistinguishing 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
34Feature Driven Development
- Originally proposed by Peter Coad et al
- FDDdistinguishing 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
- ltactiongt the ltresultgt ltby for of togt a(n)
ltobjectgt - A features list is created and plan by feature
is conducted - Design and construction merge in FDD
35Feature Driven Development
36Agile Modeling
- Originally proposed by Scott Ambler
- Suggests a set of agile modeling principles
- Model with a purpose
- Use multiple models
- Travel light
- Content is more important than representation
- Know the models and the tools you use to create
them - Adapt locally
37Summary
- Prescriptive Models
- The Waterfall Model
- The Incremental Model
- The RAD Model
- Evolutionary Models
- Prototyping
- The Spiral Model
- The Current Development Model
- UP Phase
- Agile Development
- Agile processes
- Agile process models
- XP, ASD, DSDM, Scum, Crystal, FDD, AM