improving software productivity with “agile methodologies” · 2012-12-14 · heavy...
TRANSCRIPT
1
PROCESSI DI PRODUZIONE E
GESTIONE DEL SOFTWARE
Ing. Paola Turci
Improving Software Productivity
with “Agile Methodologies”
2P. Turci - Processi di Produzione e Gestione del Software
Status of SE in the New MillenniumStatus of SE in the New MillenniumStatus of SE in the New MillenniumStatus 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 com economy• Leads to linking software construction and business dynamicsmore closely than ever
� In industry there is a need for swiftly-developed, complex software projects that are both research-like and mission-critical• Software development must no longer be thought of as oriented toward a product BUT it is an ongoing process which continually delivers value (continuous evolution)
� Software crisis• Hardware costs were decreasing while software costs were increasing.
2
3P. Turci - Processi di Produzione e Gestione del Software
Standish GroupStandish GroupStandish GroupStandish 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%
4P. Turci - Processi di Produzione e Gestione del Software
CIO Magazine, July 2001CIO Magazine, July 2001CIO Magazine, July 2001CIO 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”
CIO Magazine – “The secret to software success“
3
5P. Turci - Processi di Produzione e Gestione del Software
from:from:from:from: Rapid Application DevelopmentRapid Application DevelopmentRapid Application DevelopmentRapid Application DevelopmentSteve McConnellSteve McConnellSteve McConnellSteve 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
6P. Turci - Processi di Produzione e Gestione del Software
RemarksRemarksRemarksRemarks
� 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
avoid making any big mistakes
4
7P. Turci - Processi di Produzione e Gestione del Software
PEOPLE PROCESS
PRODUCTTECHNOLOGY
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
8P. Turci - Processi di Produzione e Gestione del Software
PEOPLEPEOPLEPEOPLEPEOPLE
5
9P. Turci - Processi di Produzione e Gestione del Software
PROCESSPROCESSPROCESSPROCESS
10P. Turci - Processi di Produzione e Gestione del Software
Unrealistic ExpectationsUnrealistic ExpectationsUnrealistic ExpectationsUnrealistic Expectations
� overly optimistic schedules
� lack effort estimation
6
11P. Turci - Processi di Produzione e Gestione del Software
Shortchanged Upstream Shortchanged Upstream Shortchanged Upstream Shortchanged Upstream
ActivitiesActivitiesActivitiesActivities
� jumping into coding
� tests at the end of the project
12P. Turci - Processi di Produzione e Gestione del Software
PROCESSPROCESSPROCESSPROCESS
7
13P. Turci - Processi di Produzione e Gestione del Software
Insufficient PlanningInsufficient PlanningInsufficient PlanningInsufficient Planning
� planning to catch it later
� abandonment of planning under pressure
14P. Turci - Processi di Produzione e Gestione del Software
Insufficient Management ControlsInsufficient Management ControlsInsufficient Management ControlsInsufficient Management Controls
� insufficient risk management
8
15P. Turci - Processi di Produzione e Gestione del Software
PROCESSPROCESSPROCESSPROCESS
16P. Turci - Processi di Produzione e Gestione del Software
PRODUCTPRODUCTPRODUCTPRODUCT
9
17P. Turci - Processi di Produzione e Gestione del Software
TECHNOLOGYTECHNOLOGYTECHNOLOGYTECHNOLOGY
18P. Turci - Processi di Produzione e Gestione del Software
“ … 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:
We need to get light! “ Tom DeMarco
10
19P. Turci - Processi di Produzione e Gestione del Software
From NothingFrom NothingFrom NothingFrom Nothing,,,, to Monumentalto Monumentalto Monumentalto Monumental, , , , to Agileto Agileto Agileto 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
20P. Turci - Processi di Produzione e Gestione del Software
Agile AllianceAgile AllianceAgile AllianceAgile 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 process-oriented
11
21P. Turci - Processi di Produzione e Gestione del Software
The Agile ManifestoThe Agile ManifestoThe Agile ManifestoThe 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 software over 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.
“
22P. 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)
“ 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
the customer’s competitive advantage.
12
23P. 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 daily
throughout 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.
24P. 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. The
sponsors, developers and users should be able to
maintain a constant pace indefinitely.
� Continuous attention to technical excellence and good
design enhances agility
13
25P. 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 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
“