PROCESSI DI PRODUZIONE E
GESTIONE DEL SOFTWARE
Ing. Paola Turci
Improving Software Productivity
with “Agile Methodologies”
Status of SE in the New Millennium
Status of SE in the New Millennium
Status of SE in the New Millennium
Status of SE in the New Millennium
To date …
Current tendency to make software functionalities and business cases coincide - stimulated by the Internet era and reinforced by the dot comeconomy
• Leads to linking software construction and business dynamics more closely than ever
In industry there is a need for swiftly-developed, complex software projects that are both research-likeand
mission-critical
• Software development must no longer be thought of as oriented toward a productBUTit is an ongoing process which continually delivers value (continuous evolution)
2
3
P. Turci -Processi di Produzione e Gestione del Software
Standish Group
Standish Group
Standish Group
Standish Group
In the 1994, published a landmark white paper
Each year, reports on success, failure and
challenge rates.
Its 2000 report “Chaos in the new millennium”
Only 28% of software projects succeeded Outright failures 23%
Challenged projects 49%
4
P. Turci -Processi di Produzione e Gestione del Software
CIO Magazine, July 2001
CIO Magazine, July 2001
CIO Magazine, July 2001
CIO Magazine, July 2001
Almost ¾ of all software development in the
Internet era suffered from one or more of the
following:
Total failure Cost overruns
Rollout with fewer features or functions than promised
Nike's glitch with i2's inventory software, which prompted Nike CEO Phil Knight to wail, "This is what we get for our $400 million?“
Sobey, a Canadian grocery chain that in February suddenly and publicly canned a SAP project …” $50 million into the trash bin”
5
P. Turci -Processi di Produzione e Gestione del Software
from: from: from:
from:
Rapid Application Development
Rapid Application Development
Rapid Application Development
Rapid Application Development
Steve McConnell Steve McConnell Steve McConnell Steve McConnell
Use of Modern Programming Practises (percentage of total system) Percentage Low Medium High
of Nominal (0-25%) (26-75%) (76-100%) Productivity +200 +100 0 (average) -100
Remarks
Remarks
Remarks
Remarks
The use of any specific best practice is necessary
but not sufficient for achieving maximum
development speed
Doing few things right doesn’t guarantee rapid
development
4
7
P. Turci -Processi di Produzione e Gestione del Software
PEOPLE PROCESS
PRODUCT TECHNOLOGY
Why Projects Fail
Undermined Motivations - Maslow
Weak Personnel / Turn Over
semantic gap Adding People to Late Project
"The Mytichal Man-Month" Brooks
Uncontrolled Problem Employees
Unsatisfactory Working Conditions
Lack of Stakeholder Buy-In
Document Oriented (instead of
functional oriented) design up-front Unrealistic Expectations overly optimistic schedules
lack effort estimation
Shortchanged Upstream Activities
jumping into coding
tests at the end of the project
Code-like-hell Programming
Insufficient Plannig
planning to catch it later
abandonment of planning under pressure Insufficient Management Controls insufficient risk management Contractor Failure
Requirements Creeping increase complexity
Developer Gold-Plating
Requirements Gold-Plating
Research-Oriented Development
Sylver-Bullet Syndrome
Overestimated Savings from New Tools or Methods
Switching Tools in the Middle of a Project
8
P. Turci -Processi di Produzione e Gestione del Software
PEOPLE
PEOPLE
PEOPLE
PEOPLE
9
P. Turci -Processi di Produzione e Gestione del Software
PROCESS
PROCESS
PROCESS
PROCESS
Unrealistic Expectations
Unrealistic Expectations
Unrealistic Expectations
Unrealistic Expectations
overly optimistic schedules lack effort estimation
6
11
P. Turci -Processi di Produzione e Gestione del Software
Shortchanged Upstream
Shortchanged Upstream
Shortchanged Upstream
Shortchanged Upstream
Activities
Activities
Activities
Activities
jumping into coding
tests at the end of the project
12
P. Turci -Processi di Produzione e Gestione del Software
PROCESS
PROCESS
PROCESS
PROCESS
13
P. Turci -Processi di Produzione e Gestione del Software
Insufficient Planning
Insufficient Planning
Insufficient Planning
Insufficient Planning
planning to catch it later
abandonment of planning under pressure
Insufficient Management Controls
Insufficient Management Controls
Insufficient Management Controls
Insufficient Management Controls
8
15
P. Turci -Processi di Produzione e Gestione del Software
PROCESS
PROCESS
PROCESS
PROCESS
16
P. Turci -Processi di Produzione e Gestione del Software
PRODUCT
PRODUCT
PRODUCT
PRODUCT
17
P. Turci -Processi di Produzione e Gestione del Software
TECHNOLOGY
TECHNOLOGY
TECHNOLOGY
TECHNOLOGY
“ … Building a product the right way still
sounds
like
a laudable goal, but what really matters today is
building it
fast
.
… We have asked, ‘What shall we add to our
process to deal with this new situation?’ No
answer to that question is going to be right
because the question itself is wrong.
What the mobility imperative requires is that we
subtract
from the process:
10
19
P. Turci -Processi di Produzione e Gestione del Software
From Nothing
From Nothing
From Nothing
From Nothing,,,, to Monumental
to Monumental
to Monumental
to Monumental,
,
,
, to Agile
to Agile
to Agile
to Agile
Most software development is a chaotic activity,
often characterized by the phrase “
code and fix
”
(works pretty well as the system is small)
Heavy Methodologies; disciplined process with the
aim of making software development more
predictable and more efficient
New group of methodologies have appeared in the
last few years: Agile Methodologies
20
P. Turci -Processi di Produzione e Gestione del Software
Agile Alliance
Agile Alliance
Agile Alliance
Agile Alliance
Manifesto for Agile Software Development, a
statement of the common values and principles of
agile processes
Agile methods are adaptive rather than
predictive
Agile methods are people-oriented rather than
21
P. Turci -Processi di Produzione e Gestione del Software
The Agile Manifesto
The Agile Manifesto
The Agile Manifesto
The Agile Manifesto
“ We are uncovering better ways of developing
software by doing it helping others to do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working softwareover comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while we value the items on the right, we
value the items on the left more.
“
The Agile Manifesto
The Agile Manifesto
The Agile Manifesto
The Agile Manifesto
(cont(cont(cont(cont’’’’d)d)d)d)“ We follow the following principles:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software
Deliver working software frequently, from a couple of weeks to a couple of months, with preference for the shorter timescale.
Welcome changing requirements, even late in development. Agile processes harness change for
12
23
P. Turci -Processi di Produzione e Gestione del Software
The Agile Manifesto
The Agile Manifesto
The Agile Manifesto
The Agile Manifesto
(cont(cont(cont(cont’’’’d)d)d)d) Business people and developers work together dailythroughout the project.
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.
24
P. Turci -Processi di Produzione e Gestione del Software
The Agile Manifesto
The Agile Manifesto
The Agile Manifesto
The Agile Manifesto
(cont(cont(cont(cont’’’’d)d)d)d) Working software is the primary measure of progress Agile processes promote sustainable development. Thesponsors, developers and users should be able to maintain a constant pace indefinitely.
Continuous attention to technical excellence and good design enhances agility
25
P. Turci -Processi di Produzione e Gestione del Software
The Agile Manifesto
The Agile Manifesto
The Agile Manifesto
The Agile Manifesto
(cont(cont(cont(cont’’’’d)d)d)d) Simplicity - the art of maximizing the amount of work notdone - 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