Upload
erika-gray
View
215
Download
0
Tags:
Embed Size (px)
Citation preview
SW Development Life Cycles
1 / 50©Jozef De Man 2007-2009
Software Development Life Cycles
Prof. Dr. ir J. De Man
SW Development Life Cycles
2 / 50©Jozef De Man 2007-2009
End-of-LifeOpportunity
Business Case Planning Development Validation Deployment Maintenance Phase-Out
Development Project
The (Development) Project Life Cycle covers the planning, development and verification of the product
Product and Project Life
CycleThe Product Life Cycle models the evolution of a product from
opportunity identification to its end-of-life
SW Development Life Cycles
3 / 50©Jozef De Man 2007-2009
Philippe Kruchten The Rational Unified ProcessAddison-Wesley, 2000
Life CyclesIntroduction
The Life Cycle defines what must be done what must be produced (final and intermediate) in what sequence by whom
Basic Components Phases and Milestones Activities (Processes, Work Flows) Roles (Actors) Work Products (Artefacts)
SW Development Life Cycles
4 / 50©Jozef De Man 2007-2009
Life Cycle Models
OverviewBuild & Fix
Waterfall, V-model
Incremental Development, Evolutionary Development
Spiral Model
Agile Development (Extreme Programming, Scrum,...)
Model-driven Software Development
End-user Programming
Open Source
Perpetual Beta
SW Development Life Cycles
5 / 50©Jozef De Man 2007-2009
modifyfix
build
use
The Build&Fix Model
Start immediately with coding
No paperwork
Gradually add functionality to the working code
Critique Very efficient Works with single person as
developer Difficult to maintain, transfer
to other person Does not scale up (?)
SW Development Life Cycles
6 / 50©Jozef De Man 2007-2009
analysis
design
codingunit test
systemtest
Waterfall ModelSimplified Picture
structured development process
a phase must be finished before the next one starts
the result of each phase must be documented
Winston Royce, Managing Development of Large Scale Software Systems, Proceeding of IEEE WESCON, August 1970
integrationtest
SW Development Life Cycles
7 / 50©Jozef De Man 2007-2009
Waterfall ModelAssumptions
The requirements can be known in advance of implementation
The requirements can be fully defined without reference to an implementation
The requirements can be well-understood by all stakeholders: users, customer, developers, maintainers
The architecture of the system is well understood
Elapsed time and cost are not critical
SW Development Life Cycles
8 / 50©Jozef De Man 2007-2009
analysis
design
codingunit test
integrationtest
systemtest
Waterfall Modeliteration with preceding phase
Feedback from each phase tothe preceding one
Baseline documents between phases are updated
SW Development Life Cycles
9 / 50©Jozef De Man 2007-2009
Waterfall ModelSupport
All (intermediate) work products are placed under formal change control
version control status control changes are only allowed by formally approved change
requests or fault reports
All (intermediate) work products must be maintained
Traceability is established between baselines to trace requirements to implementation (downstream) and problems to corrections (upstream)
SW Development Life Cycles
10 / 50©Jozef De Man 2007-2009
analysis
design
codeunit test
integrationtest
systemtest
black box test cases
white box test cases
Waterfall ModelV-model
System Test cases are developed during Analysis
Integration Test cases during Design
Unit Test cases during Coding
The addition of test cases reveals other feedback loops
SW Development Life Cycles
11 / 50©Jozef De Man 2007-2009
analysis
design
codeunit test
integrationtest
systemtest
black box test cases
white box test cases
V-modelFeedback from Testing
very long and costly correction of early errors
SW Development Life Cycles
12 / 50©Jozef De Man 2007-2009
V-modelHow to reduce the correction cycle?
Rapid prototyping build a prototype to uncover problems early use a fraction of the originally estimated time follow waterfall model in-the-small document the result throw it away (this is not the product)
Involve the customer Preliminary software review (prototype) Design Reviews Acceptance
Winston Royce, Managing Development of Large Scale Software Systems, Proceeding of IEEE WESCON, August 1970 (!)
SW Development Life Cycles
13 / 50©Jozef De Man 2007-2009
V-modelHow to reduce the correction cycle (2)?
Write “quite a lot” of documentation Requirements Preliminary Design Interfaces, Test Plan, Design Operating instructions Update as required during life cycle
Plan, control, monitor testing separate testing group “visual inspection” by second party of all documents coverage of every logical path
Winston Royce, Managing Development of Large Scale Software Systems, Proceeding of IEEE WESCON, August 1970 (!)
SW Development Life Cycles
14 / 50©Jozef De Man 2007-2009
Waterfall ModelCritique
The documentation of the intermediate results allows different people to work in each phase, supports transfer of work to other people and serves as basis for evolution
Paralysis by analysis: too much time may be spent the get the analysis right based on uncertain customer requirements
Maintaining “quite a lot of documentation” is costly and delays the process
The product is only delivered at the end, only documents are produced in the preceding phases; at the end we may discover that the product is not what the customer expected
It is difficult to cope with changing requirements during development
SW Development Life Cycles
15 / 50©Jozef De Man 2007-2009
Incremental Development
Functionality is defined as separate “features”
Functionality is added incrementally highest risk first (to reduce risk and improve predictability) highest customer-value first
Advantages: Surprises at the end are reduced A usable product is delivered after the first increment Last increments can be abandoned to meet schedule
Plan
Design
Test
Waterfall Iterative
SW Development Life Cycles
16 / 50©Jozef De Man 2007-2009
Evolutionary Development
Similar to incremental model
First version with basic functionality is delivered to the customer to obtain immediate feedback
Requirements can be defined and developed on the basis of a working system
“Late” requirements become the rule
Very fast time-to-market
Requires partnership supplier-customer - attractive for internal customer
SW Development Life Cycles
17 / 50©Jozef De Man 2007-2009
Determine objectives,alternatives,constraints
Evaluate alternativesRisk Analysis
Development &Verification
Plan next phase
prototype
design
implement
test
deploy
reduce risklife cycle model may change at each cycle
Boehm’s Spiral Modela model for life cycles
feasibility study
development
Barry Boehm,A Spiral Model of Software Development and Enhancement, IEEE Computer, May 1988
SW Development Life Cycles
18 / 50©Jozef De Man 2007-2009
http://agilemanifesto.org/
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 over processes and tools Working software over comprehensive documentation
Customer collaboration over contract negotiation Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
Kent BeckMike Beedle
Arie van BennekumAlistair Cockburn
Ward CunninghamMartin Fowler
James GrenningJim HighsmithAndrew HuntRon Jeffries
Jon KernBrian Marick
Robert C. MartinSteve Mellor
Ken SchwaberJeff SutherlandDave Thomas
SW Development Life Cycles
19 / 50©Jozef De Man 2007-2009
Plan
Design
Test
Waterfall Iterative Agile
Agile MethodsOverview
Kent Beck, Embracing Change with Extreme Programming, IEEE Computer, Volume 32, Number 10, October 1999, pp. 70-77
SW Development Life Cycles
20 / 50©Jozef De Man 2007-2009
Agile DevelopmentPrinciples
Our highest priority is to satisfy the customerthrough early and continuous delivery
of valuable software.
Welcome changing requirements, even late in development. Agile processes harness change for
the customer's competitive advantage.
Deliver working software frequently, from a couple of weeks to a couple of months, with a
preference to the shorter timescale.
Business people and developers must work together daily throughout the project.
http://www.agilemanifesto.org/principles.html
SW Development Life Cycles
21 / 50©Jozef De Man 2007-2009
Agile DevelopmentPrinciples (2)
Build projects around motivated individuals. Give them the environment and support they need,
and trust them to get the job done.
The most efficient and effective method of conveying information to and within a development
team is face-to-face conversation.
Working software is the primary measure of progress.
Agile processes promote sustainable development. The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.
http://www.agilemanifesto.org/principles.html
SW Development Life Cycles
22 / 50©Jozef De Man 2007-2009
Agile DevelopmentPrinciples (3)
Continuous attention to technical excellence and good design enhances agility.
Simplicity--the art of maximizing the amount of work not done--is essential.
The best architectures, requirements, and designs
emerge from self-organizing teams.
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts
its behavior accordingly.
http://www.agilemanifesto.org/principles.html
SW Development Life Cycles
24 / 50©Jozef De Man 2007-2009
Extreme Programming12 Practives (2)
Planning game. Customers decide the scope and timing of releases based on estimates provided by programmers.Programmers implement only the functionality demanded by the stories in this iteration.Small releases. The system is put into production in a few months, before solving the whole problem. New releases are made often—anywhere from daily to monthly.Metaphor. The shape of the system is defined by a metaphor or set ofmetaphors shared between the customer and programmers.Simple design. At every moment, the design runs all the tests, communicates everything the programmers want to communicate, contains no duplicate code, and has the fewest possible classes and methods. Thisrule can be summarized as, “Say everything once and only once.”
Kent Beck, Embracing Change with Extreme Programming, IEEE Computer, Volume 32, Number 10, October 1999, pp. 70-77
SW Development Life Cycles
25 / 50©Jozef De Man 2007-2009
Extreme Programming12 Practices (3)
Tests. Programmers write unit tests minute by minute. These tests are collected and they must all run correctly. Customers write functional tests for the stories in an iteration. These tests should also all run, although practically speaking, sometimes a business decision must be made comparing the cost of shipping a known defect and the cost of delay.Refactoring. The design of the system is evolved through transformationsof the existing design that keep all the tests running.Pair programming. All production code is written by two people at onescreen/keyboard/mouse.Continuous integration. New code is integrated with the current systemafter no more than a few hours. When integrating, the system is builtfrom scratch and all tests must pass or the changes are discarded.Collective ownership. Every programmer improves any code anywhere inthe system at any time if they see the opportunity.
Kent Beck, Embracing Change with Extreme Programming, IEEE Computer, Volume 32, Number 10, October 1999, pp. 70-77
SW Development Life Cycles
26 / 50©Jozef De Man 2007-2009
Extreme Programming12 Practives (4)
On-site customer. A customer sits with the team full-time (customer = end-user, marketing, product management,...).40-hour weeks (sustainable pace). No one can work a second consecutive week of overtime. Even isolated overtime used too frequently is a sign of deeper problems that must be addressed.Open workspace. The team works in a large room with small cubicles around the periphery. Pair programmers work on computers set up in the center.Just rules. By being part of an Extreme team, you sign up to follow the rules. But they’re just the rules. The team can change the rules at any time as long as they agree on how they will assess the effects of the change.accept responsibility for.
Kent Beck, Embracing Change with Extreme Programming, IEEE Computer, Volume 32, Number 10, October 1999, pp. 70-77
SW Development Life Cycles
28 / 50©Jozef De Man 2007-2009
Agile DevelopmentPlanning
User Stories written by the customer, a few sentences with little detail
Release Planning Select stories with highest (business) value Unit for first effort estimation (a few weeks) Estimation in “ideal” weeks keep releases small (months)
Iteration Planning regular iterations (heartbeat of the project) Identify tasks of a story Let developers sign-on for tasks Ask developers for estimates extremeprogramming.
org
SW Development Life Cycles
29 / 50©Jozef De Man 2007-2009
Agile DevelopmentTracking
Measure velocity of the team number of user stories in iteration number of tasks in iteration adjust planning of next iterations to measured velocity
Daily stand-up meetings (from Scrum) short (stand-up) communication within entire team mutual encouragement problems are revealed early tasks can be reshuffled
SW Development Life Cycles
30 / 50©Jozef De Man 2007-2009
Agile DevelopmentPeople
Sustainable pace (not necessarily 40-hour week) overtime must be exceptional chronic overtime will affect quality it reduces morale
Team in one room direct face-to-face communication minimize paperwork and formal communication
SW Development Life Cycles
31 / 50©Jozef De Man 2007-2009
Agile DevelopmentDesign
System metaphor easily understood by everyone serves as guidance for communication, terminology (e.g.
program variables) the domain itself may be an acceptable “naive” metaphor
Spike Solutions develop a “depth-first” solution to analyze requirements,
technical obstacles, obtain a better estimate
SW Development Life Cycles
32 / 50©Jozef De Man 2007-2009
Agile DevelopmentDesign (2)
Things should be made as simple as possible, but not too simple (A. Einstein)
Yagni - You aren’t gonna need it implement the minimum that is expected do not prepare the code for potential future requirements
(they may never be needed)
Remove code that is not needed anymore
Refactoring
Code reveals intention (instead of comments)
SW Development Life Cycles
33 / 50©Jozef De Man 2007-2009
Agile DevelopmentProcess
Customize XP rules to the team’s needs (not the person) some aspects of extreme programming are not essential and
can be suppressed or modified if necessary
Review/revise rules at the end of an iteration/release use release/iteration planning meetings to review what went
well or not and to adjust the process (XP rules)
Measure: Team velocity (stories/tasks per iteration) to adjust effort
planning Score of acceptance testing (quality) ...
SW Development Life Cycles
34 / 50©Jozef De Man 2007-2009
Agile Developmentand CMMI
See technical report
CMMI or Agile, why not embrace both? CMU/SEI-2008-TN-003
SW Development Life Cycles
35 / 50©Jozef De Man 2007-2009
Model Driven Software DevelopmentProcess Model
ERA
Process Description
Project/Process
The Process Model Hierarchy is an example ofModel Driven Software Development.The upper levels of the hierarchy define the genericpart of the software.Specific applications are generated by supplyinga data structure with the lower-level model definition
Process Model
SW Development Life Cycles
36 / 50©Jozef De Man 2007-2009
Model Driven Software DevelopmentOther examples
Compiler-compilers (compiler generators)
Report generators, Form generators
Application generators
(Relational) Databases
Finite-state machines
ERP, CRM, PDM systems
Software Product Lines
SW Development Life Cycles
37 / 50©Jozef De Man 2007-2009
MDSDComponent Development
Focus on re-usability
Includes parameterized components components with meta-model functionality reuse of designs by means of patterns
Two approaches separate component factory recommended: by-product of development project using e.g.
refactoring (identify duplication within projects)
SW Development Life Cycles
38 / 50©Jozef De Man 2007-2009
End-User ProgrammingPrinciple
The designer of a system will always have difficulties capturing the requirements of the “end-user”
It is difficult to implement evolutionary changes to an existing system quickly and efficiently
End-User Programming offers a solution by turning the end-user into the implementer
The end-user must be able to express the solution with minimal education/training in computer programming
Examples: spreadsheets, databases, scripting languagesStefan Thomke and Eric Von Hippel,
Customers as Innovators, a new way to create value HBR April 2002
SW Development Life Cycles
39 / 50©Jozef De Man 2007-2009
Open SourceDefinition
Free Redistribution - The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.
Source Code - The program must include source code, and must allow distribution in source code as well as compiled form.
Derived Works - The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.
opensource.org
free as in free speech, not free lunch
Copyleft All Rights Reversed
SW Development Life Cycles
40 / 50©Jozef De Man 2007-2009
Open SourceDefinition (2)
The detailed definition contains several additional points, e.g. No Discrimination Against Persons or Groups No Discrimination Against Fields of Endeavor License Must Not Restrict Other Software License Must Be Technology-Neutral
Many different licenses exists with different restrictions: GNU General Public License (GPL) Lesser GPL Artistic, Apache, Mozilla, Nokia, IBM, MIT,...
opensource.org/licenses
SW Development Life Cycles
41 / 50©Jozef De Man 2007-2009
Perl scripting language
GNU compiler collection
GNU Debugger
GNU/Linux Operating System
Emacs editor
Sendmail mail engine
Apache web server
Mozilla/Firefox web browser
Tomcat JSP
Mailman mail distribution
MySQL relational database
GNU is Not Unix
FreeBSD Unix
OpenBSD Unix
Open SourceA few examples
Thunderbird Mail Client
Subversion version control
Bugzilla
Wikis
Eclipse
SW Development Life Cycles
42 / 50©Jozef De Man 2007-2009
Open SourceFavorable Conditions
Development starts from a substantial code base (not from the ground up), often developed by a single person or in a company
Selected features have minimal impact on the architecture
Interaction between features is small
Features do not have to be negotiated between participants (e.g. they are defined externally, e.g. by standards bodies)
The software is a “commodity” good, low cost is more important than distinguishing features
SW Development Life Cycles
43 / 50©Jozef De Man 2007-2009
Open SourceWhy would one contribute?
Benefits of revealing innovation must outweigh the cost loss of intellectual property diffusion cost
In Open Source The intellectual property value associated with fixing a bug
or even implementing a feature is low and return is difficult to enforce
The cost to publish on the web is low The benefits of the combined efforts of all contributors are
much higher
SW Development Life Cycles
44 / 50©Jozef De Man 2007-2009
Open SourceBusiness Model: public-private
Open source is made available as a public good
Why are private companies willing to contribute?
Contributors receive higher benefits than free riders They can drive implementation of features They have superior knowledge to offer services for the
software They can invest resources in add-ons with higher added-
value than the commodity open source
SW Development Life Cycles
45 / 50©Jozef De Man 2007-2009
Open SourceContributors
Individual users who have an interest in the improvement and evolution of the open
source for their own use an academic interest in cutting-edge technology ...Hobby
Companies offering services related with the open source (e.g. packaged, fully tested, stable version at a fee)
Companies using the the open source as a platform for their own products
SW Development Life Cycles
46 / 50©Jozef De Man 2007-2009
Open SourceBasic Roles
CommonSource
Co-developer Co-Developer
Modify andRelease in Common Source
User
Propose Modificationsfor Common Source
Contributor
Use and Modify
SW Development Life Cycles
47 / 50©Jozef De Man 2007-2009
A Benevolent Dictator is arecognized and respected authority
Open SourceThe Cathedral and the Bazaar
The Cathedral Developed by a “closed group” Project Management techniques applied Managed by a Project Manager
The Bazaar - open source Developed by an open community No formal project management “Managed” by a Benevolent Dictator
But Open source is often developed in cathedral style! Or by a single person (cave development)
Eric Raymond The Cathedral and the Bazaar; First Monday
SW Development Life Cycles
48 / 50©Jozef De Man 2007-2009
Open SourceContribution by testing
Characteristics Software is visible to very large community It is used and tested by a large expert community (e.g. at
universities) Access to the source enables more precise description of
possible defects Defects can easily be submitted and tracked via the web
Consequence Open source can be at least of the same quality as
commercial competitors Reaction time for urgent faults (security alerts) can be much
shorter
SW Development Life Cycles
49 / 50©Jozef De Man 2007-2009
Perpetual Beta
Successful web (2.0) applications are offered as beta for a prolonged period to a large user community (e.g. Gmail)
SaaS: Sofware as a Service
Applications are not going through a release cycle but are offered as a continuously updated service
SW Development Life Cycles
50 / 50©Jozef De Man 2007-2009
Development Production UseDistribution
Development pushed down the value chain
Review by customer (waterfall)Continuous participation of the customer/user (agile)
Customization by the user (e.g. spreadsheets)Development by expert users (open source)
ConclusionIncreasing participation of the customer/user