95
Agile ALM Application Lifecycle Management Dealing with Complexity Jurgen Appelo [email protected] Version 3 http://www.flickr.com/photos/poppacket/4290209522/

Agile Application Lifecycle Management (ALM)

  • View
    21.075

  • Download
    7

Embed Size (px)

DESCRIPTION

Explains how to do Application Lifecycle Management (ALM) in an Agile way. http://www.noop.nl/ http://www.jurgenappelo.com/

Citation preview

Page 1: Agile Application Lifecycle Management (ALM)

Agile ALM

Application Lifecycle Management

Dealing with Complexity

Jurgen Appelo

[email protected]

Version 3 http://www.flickr.com/photos/poppacket/4290209522/

Page 2: Agile Application Lifecycle Management (ALM)

Jurgen Appelo writer, speaker, trainer, entrepreneur... www.jurgenappelo.com

Page 3: Agile Application Lifecycle Management (ALM)

Get my new book for FREE! m30.me/ss

Page 4: Agile Application Lifecycle Management (ALM)

Can Application Lifecycle Management (ALM) work in an environment that grows ever more complex?

And how does this relate to the first Agile principle, which promotes “people over processes and tools?”

ALM: Dealing with Complexity

Page 5: Agile Application Lifecycle Management (ALM)

http://www.flickr.com/photos/futureshape/4000128011/

Typical software development

Page 7: Agile Application Lifecycle Management (ALM)

http://www.flickr.com/photos/schanlaub/5102055360/

Page 8: Agile Application Lifecycle Management (ALM)

http://www.flickr.com/photos/mcfarlandmo/3275420128/

Page 9: Agile Application Lifecycle Management (ALM)

http://www.flickr.com/photos/jngelvezon/3544740238/

Page 10: Agile Application Lifecycle Management (ALM)

http://www.flickr.com/photos/soamplified/4862757831/

Or to say STOP! We won’t change this.

Page 11: Agile Application Lifecycle Management (ALM)

The result is a big entangled mess

http://www.flickr.com/photos/hryckowian/2029393648/

Page 12: Agile Application Lifecycle Management (ALM)

http://www.flickr.com/photos/kevinkrejci/3065365140/

Page 13: Agile Application Lifecycle Management (ALM)

Quasimodo software

heart of gold, broken body

Image via Google Search

Page 14: Agile Application Lifecycle Management (ALM)

And it doesn’t get easier…

http://www.flickr.com/photos/steelmore/221737671/

Page 15: Agile Application Lifecycle Management (ALM)

http://www.flickr.com/photos/hinkelstone/2435823037/

Increasing number of technologies

Page 16: Agile Application Lifecycle Management (ALM)

http://www.flickr.com/photos/foxspain/3219577797/

Increasing levels of globalization

Page 17: Agile Application Lifecycle Management (ALM)

Increasing amount of customization

http://www.flickr.com/photos/pmiaki/4566582179/

Page 18: Agile Application Lifecycle Management (ALM)

Lehman’s Laws of Software Evolution

http://www.flickr.com/photos/pagedooley/1825685405/

Page 19: Agile Application Lifecycle Management (ALM)

Continuing Change Lehman’s 1st Law

“A system must be continually adapted or else it becomes progressively less capable of satisfying its users.”

http://www.flickr.com/photos/untitlism/2609684221/

http://en.wikipedia.org/wiki/Lehman's_laws_of_software_evolution

Page 20: Agile Application Lifecycle Management (ALM)

Increasing Complexity Lehman’s 2nd Law

“As a system evolves its complexity increases unless work is done to reduce it.”

http://www.flickr.com/photos/hinkelstone/2765597758/

http://en.wikipedia.org/wiki/Lehman's_laws_of_software_evolution

Page 21: Agile Application Lifecycle Management (ALM)

Self-Regulation Lehman’s 3rd Law

“The system evolution process is self-regulating with product and process measures closely following a normal distribution.”

http://www.flickr.com/photos/jurvetson/2323537118/

http://en.wikipedia.org/wiki/Lehman's_laws_of_software_evolution

Page 22: Agile Application Lifecycle Management (ALM)

Organizational Stability Lehman’s 4th Law

“The average activity rate (maintenance) in an evolving system is invariant over its lifetime.”

http://www.flickr.com/photos/zyllan/4880446208/

http://en.wikipedia.org/wiki/Lehman's_laws_of_software_evolution

Page 23: Agile Application Lifecycle Management (ALM)

Conservation of Familiarity Lehman’s 5th Law

“As a system evolves all people involved with it must maintain mastery of its content and behavior to achieve satisfactory evolution.”

http://www.flickr.com/photos/kevinpoh/3586321697/

http://en.wikipedia.org/wiki/Lehman's_laws_of_software_evolution

Page 24: Agile Application Lifecycle Management (ALM)

Continuing Growth Lehman’s 6th Law

“The functional content of a system must be continually increased to maintain user satisfaction over its lifetime.”

http://www.flickr.com/photos/randysonofrobert/376221775/

http://en.wikipedia.org/wiki/Lehman's_laws_of_software_evolution

Page 25: Agile Application Lifecycle Management (ALM)

Declining Quality Lehman’s 7th Law

“The quality of a system will decline unless it is rigorously maintained and adapted to operational environment changes.”

http://www.flickr.com/photos/reinante/4413913423/

http://en.wikipedia.org/wiki/Lehman's_laws_of_software_evolution

Page 26: Agile Application Lifecycle Management (ALM)

Feedback System Lehman’s 8th Law

“Evolution processes constitute complex feedback systems and must be treated as such to achieve significant improvement over any reasonable base.”

http://www.flickr.com/photos/pixel_addict/465394708/

http://en.wikipedia.org/wiki/Lehman's_laws_of_software_evolution

Page 27: Agile Application Lifecycle Management (ALM)

How can we ever deal with all this change?

http://www.flickr.com/photos/pagedooley/2845763884/

Page 28: Agile Application Lifecycle Management (ALM)

Application Lifecycle Management (ALM)

http://www.flickr.com/photos/denisecarbonell/3923601326/

Page 29: Agile Application Lifecycle Management (ALM)

“Application Lifecycle Management (ALM) is a continuous process of managing the life of an application through governance, development and maintenance.”

Definition(s)

Wikipedia http://en.wikipedia.org/wiki/Application_lifecycle_management

Page 30: Agile Application Lifecycle Management (ALM)

“ALM is a set of disciplines that together govern the process of turning business ideas into software.”

Definition(s)

“ALM changing to meet development organizations' needs” http://en.wikipedia.org/wiki/Application_lifecycle_management

Page 31: Agile Application Lifecycle Management (ALM)

“Any tools, technologies, or techniques that attempt to connect and maintain connections between activities over the life of a piece of software – from the first glint in the glimmer of an executive's eye, through system retirement.”

Definition(s)

“Just-enough application lifecycle management (ALM)” http://searchsoftwarequality.techtarget.com/news/column/0,294698,sid92_gci1396258,00.html

Page 32: Agile Application Lifecycle Management (ALM)

http://en.wikipedia.org/wiki/File:ALM.svg

ALM visualized in models, from bad…

Page 33: Agile Application Lifecycle Management (ALM)

http://searchsoftwarequality.techtarget.com/news/article/0,289142,sid92_gci1259517_mem1,00.html

…to absolutely terrible.

Page 34: Agile Application Lifecycle Management (ALM)

“Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.”

Conway’s Law

http://www.flickr.com/photos/jeanlouis_zimmermann/570332025/

http://en.wikipedia.org/wiki/Conway's_Law

Page 35: Agile Application Lifecycle Management (ALM)

ALM 1.0

Separated disciplines Silos of information Fragile integration

http://www.flickr.com/photos/eirikref/727551264/

Page 36: Agile Application Lifecycle Management (ALM)

ALM 2.0

Single repository Roles and connections “One truth”

http://www.flickr.com/photos/sudhamshu/4379880762/

Page 38: Agile Application Lifecycle Management (ALM)

Complex Systems

“A complex system is a system composed of interconnected parts that as a whole exhibit one or more properties (behavior) not obvious from the properties of the individual parts.”

Sometimes called the sciences of complexity (plural)

http://cfpm.org/pub/users/bruce/thesis/chap4.pdf

Page 39: Agile Application Lifecycle Management (ALM)

General Systems Theory

Autopoiesis (how a system constructs itself)

Identity (how a system is identifiable)

Homeostatis (how a system remains stable)

Permeability (how a system interacts with its environment)

Ludwig von Bertalanffy (biologist) 1901-1972

Study of relationships between elements

Page 40: Agile Application Lifecycle Management (ALM)

Cybernetics

Goals (the intention of achieving a desired state)

Acting (having an effect on the environment)

Sensing (checking the response of the environment)

Evaluating (comparing current state with system’s goal)

Norbert Wiener (mathematician)

1894-1964

Study of regulatory systems

Page 41: Agile Application Lifecycle Management (ALM)

Dynamical Systems Theory

Stability (stable states versus unstable states)

Attractors (systems getting sucked into stable states)

Study of system behavior

Page 42: Agile Application Lifecycle Management (ALM)

Game Theory

Competition versus cooperation

Zero sum games versus non-zero sum games

Strategies (including evolutionary stable strategies)

John von Neumann (mathematician)

1903-1957

Study of co-adapting systems

Page 43: Agile Application Lifecycle Management (ALM)

Evolutionary Theory

Population (more than one instance)

Replication (mechanism of making new instances)

Variation (differences between instances)

Heredity (differences copied from existing instances)

Selection (environment imposes selective pressure)

Charles Darwin (naturalist) 1809-1882

Study of evolving systems

Page 44: Agile Application Lifecycle Management (ALM)

Chaos Theory

Strange attractors (chaotic behavior)

Sensitivity to initial conditions (butterfly effect)

Fractals (scale-invariance)

Edward Lorenz (meteorologist)

1917-2008

Study of unpredictable systems

Page 45: Agile Application Lifecycle Management (ALM)

And more...

Dissipative systems (spontaneous pattern-forming)

Cellular automata (complex behavior from simple rules)

Genetic algorithms (adaptive learning)

Social network analysis (propagation of information)

Study of all kinds of systems

Page 46: Agile Application Lifecycle Management (ALM)

The Body of Knowledge of Systems

Complex systems theory is the study of complex systems using multiple system theories

Page 47: Agile Application Lifecycle Management (ALM)

Simplicity: A New Model

Simple = structure is easily understandable

Complicated = structure is very hard to understand

Ordered = behavior is fully predictable

Complex = behavior is somewhat predictable

Chaotic = behavior is very unpredictable

Simplification = making something better understandable

Linearization = making something more predictable

Page 49: Agile Application Lifecycle Management (ALM)

9 lessons from

complexity thinking

http://www.flickr.com/photos/stevon/3577915624/

Page 50: Agile Application Lifecycle Management (ALM)

http://www.flickr.com/photos/arcticpuppy/2943901683/

Focus on people

motivation competence

Page 51: Agile Application Lifecycle Management (ALM)

http://www.flickr.com/photos/linhngan/3101950593/

communication collaboration

Page 53: Agile Application Lifecycle Management (ALM)

Support self-organization

growth alignment

http://www.flickr.com/photos/oth313/2084783266/

Page 54: Agile Application Lifecycle Management (ALM)

Embrace emergence

no constructionism no predictions

http://www.flickr.com/photos/hamed/428063513/

Page 55: Agile Application Lifecycle Management (ALM)

Embrace diversity

adaptability innovation

http://www.flickr.com/photos/meanestindian/478935037/

Page 56: Agile Application Lifecycle Management (ALM)

Support decentralization

delegation empowerment

http://www.flickr.com/photos/zooboing/4743616313/

Page 57: Agile Application Lifecycle Management (ALM)

unpredictability, unknowns

http://www.flickr.com/photos/pagedooley/4099585916/in/photostream/

Page 58: Agile Application Lifecycle Management (ALM)

Heed “incompressibility” All models are wrong, some are useful

http://www.flickr.com/photos/speckham/3885641714/

Page 59: Agile Application Lifecycle Management (ALM)

People Relationships Change Self-organization Emergence Diversity Decentralization Non-linearity Incompressibility

One approach to bind them all… http://www.flickr.com/photos/gladius/2332020850/

Page 60: Agile Application Lifecycle Management (ALM)

Agile Software Development http://www.flickr.com/photos/sidelong/2909952599/

Page 61: Agile Application Lifecycle Management (ALM)

“An iterative and incremental (evolutionary) approach to software development which is performed in a highly collaborative manner by self-organizing teams within an effective governance framework with "just enough" ceremony that produces high quality solutions in a cost effective and timely manner which meets the changing needs of its stakeholders.”

Definition

Agile Modeling http://www.agilemodeling.com/essays/agileSoftwareDevelopment.htm

Page 62: Agile Application Lifecycle Management (ALM)
Page 63: Agile Application Lifecycle Management (ALM)
Page 64: Agile Application Lifecycle Management (ALM)
Page 65: Agile Application Lifecycle Management (ALM)

Let’s start with the good old Iron Triangle

Page 66: Agile Application Lifecycle Management (ALM)

Then add some modifications...

Split Cost (Resources) in People and Tools

Split Scope in Functionality and Quality (suggestion: Scott Ambler)

Add a dimension for Process (suggestion: Alistair Cockburn)

Add a dimension for (Business) Value (suggestion: Jim Highsmith)

http://www.ambysoft.com/essays/brokenTriangle.html http://alistair.cockburn.us/index.php/Process:_the_fourth_dimension http://blog.cutter.com/2009/08/10/beyond-scope-schedule-and-cost-measuring-agile-performance/

Page 67: Agile Application Lifecycle Management (ALM)

1. People

2. Functionality

3. Quality

4. Tools

5. Time

6. Value

7. Process

And we get...

the 7 dimensions of software projects

Page 68: Agile Application Lifecycle Management (ALM)

People

interaction

collaboration small teams

cross-functional

colocation

self-organization trust

accountability

respect

Page 69: Agile Application Lifecycle Management (ALM)

Functionality

customer involvement

backlogs

user stories

acceptance criteria

minimal marketable features

user demos

“inch-deep, mile-wide”

Page 70: Agile Application Lifecycle Management (ALM)

Quality

technical excellence

test-driven development

pair programming

definition of done

refactoring emergent design

simplicity

Page 71: Agile Application Lifecycle Management (ALM)

Tools

daily builds

continuous integration

automated testing

open offices

task boards

burn charts

version control

Page 72: Agile Application Lifecycle Management (ALM)

Time

timeboxes

iterations

sprints

potentially shippable products

rolling wave planning

sustainable pace

release planning

Page 73: Agile Application Lifecycle Management (ALM)

Value

embracing change

feedback

frequent delivery

value streams

value mapping prioritization

increments

Page 74: Agile Application Lifecycle Management (ALM)

Process

stand-up meetings

planning poker

velocity

spikes

collective code ownership

retrospectives

sprint planning

Page 75: Agile Application Lifecycle Management (ALM)

http://www.versionone.com/state_of_agile_development_survey/10/

Page 76: Agile Application Lifecycle Management (ALM)

http://www.versionone.com/state_of_agile_development_survey/10/

Page 77: Agile Application Lifecycle Management (ALM)

http://www.versionone.com/state_of_agile_development_survey/10/

Page 78: Agile Application Lifecycle Management (ALM)

Agile + ALM similarities information sharing better collaboration increased quality higher productivity

http://www.flickr.com/photos/ananth/279721111/

Page 79: Agile Application Lifecycle Management (ALM)

Agile vs. ALM: differences

people vs. tools practices vs. techniques

http://www.flickr.com/photos/thebusybrain/2492945625/

Page 80: Agile Application Lifecycle Management (ALM)

Agile ALM

the best of both, using complexity thinking

http://www.flickr.com/photos/batega/1865482908/

Page 81: Agile Application Lifecycle Management (ALM)

“The typical project is a collection of ideas held in the minds of the people on the project. […] A project is not the sum of all of its documents or even its code. A great deal of the context of a project lies in its participants.”

- Matt Heusser

“Just-enough application lifecycle management (ALM)” http://searchsoftwarequality.techtarget.com/news/column/0,294698,sid92_gci1396258,00.html

Page 82: Agile Application Lifecycle Management (ALM)

7 tips

for Agile ALM

Page 83: Agile Application Lifecycle Management (ALM)

ALM tools should support high-bandwidth communication, and should not needlessly replace person-person communication with person-tool communication.

Example: facilitation and storage of photos, audio, video.

1. High-Bandwidth Communication

Page 84: Agile Application Lifecycle Management (ALM)

ALM tools must natively support all common Agile practices.

Example: user stories, acceptance testing, iterative planning, continuous flow, unit testing, refactoring, automated builds, continuous integration, etc…

2. Agile Best Practices

Page 85: Agile Application Lifecycle Management (ALM)

The ALM infrastructure must be selected, built and maintained by the team(s) themselves. Nothing should be mandated by those who don’t have to work with it.

Example: a team can select its own favorite automatic build system or Agile planning tools.

3. Bottom-Up Infrastructure

Page 86: Agile Application Lifecycle Management (ALM)

A healthy ALM strategy will allow for multiple vendors of tools. The benefits of specialization (of tools) often outweighs the cost of integration. There is no “single truth”.

Example: use Visual Studio Team System except source control.

4. Multi-Vendor Approach

Page 87: Agile Application Lifecycle Management (ALM)

ALM tools should aim for accessibility. The goal is collaboration, not centralization. Information should be radiated, not concentrated.

Example: status updates on whiteboard and in task tracking tool.

5. Distributed Information

Page 88: Agile Application Lifecycle Management (ALM)

Modeling of processes is a form of prediction, and thus unreliable. Allow for emergent design of the ALM infrastructure. Grow it in an Agile way.

Example: use a continuous improvement backlog for the ALM infrastructure.

6. Agile Improvement

Page 89: Agile Application Lifecycle Management (ALM)

ALM tools must be extensible, customizable and adaptable, so that they can grow together with the project.

Example: open API’s, web services, plug-ins, widgets, macros, etc.

7. Adaptable Tools

Page 90: Agile Application Lifecycle Management (ALM)

Agile ALM 1. High-Bandwidth Communication

2. Agile Best Practices

3. Bottom-up Infrastructure

4. Multi-Vendor Approach

5. Distributed Information

6. Agile Improvement

7. Adaptable Tools

http://www.flickr.com/photos/untitlism/2603959306/

Page 91: Agile Application Lifecycle Management (ALM)

Application lifecycle management (Wikipedia)

http://en.wikipedia.org/wiki/Application_lifecycle_management

Mea culpa, ALM toolmakers say (SD Times)

http://www.sdtimes.com/link/31952

ALM changing to meet development organizations' needs (SearchSoftwareQuality)

http://searchsoftwarequality.techtarget.com/news/article/0,289142,sid92_gci1259517_mem1,00.html

Application Lifecycle Management Gets Agile (ITBusinessEdge)

http://www.itbusinessedge.com/cm/blogs/vizard/application-lifecycle-management-gets-agile/?cs=39865

What is Agile ALM? (Ezine Articles)

http://ezinearticles.com/?What-is-Agile-ALM?&id=3948403

Agile ALM – Opposites Attract (CM Crossroads)

http://www.cmcrossroads.com/cm-journal-articles/13601-agile-alm-opposites-attract

What is the definition of Application Lifecycle Management (ALM)? (IT Knowledge Exchange)

http://itknowledgeexchange.techtarget.com/software-quality/what-is-the-definition-of-application-lifecycle-management-alm/

Sources

Page 92: Agile Application Lifecycle Management (ALM)

Just-enough application lifecycle management (ALM) (SearchSoftwareQuality)

http://searchsoftwarequality.techtarget.com/news/column/0,294698,sid92_gci1396258,00.html

ALM and Agile (RedMonk)

http://www.redmonk.com/cote/2006/12/04/alm-and-agile/

Top 7 Key Requirements of an Agile ALM Platform (Top7Business)

http://top7business.com/?id=15513

Does Application Lifecycle Management (ALM) add Value or Hinder the Adoption of Agile-Lean Product Development? (AgileJournal)

http://www.agilejournal.com/articles/columns/column-articles/3326-does-application-lifecycle-management-alm-add-value-or-hinder-the-adoption-of-agile-lean-product-development

What exactly is an ALM tool (SearchSoftwareQuality)

http://searchsoftwarequality.techtarget.com/expert/KnowledgebaseAnswer/0,289625,sid92_gci1523524,00.html

Getting Started with Agile ALM (Manning)

http://www.manning.com/huettermann/

Sources

Page 94: Agile Application Lifecycle Management (ALM)
Page 95: Agile Application Lifecycle Management (ALM)

http://creativecommons.org/licenses/by-nd/3.0/

This presentation was inspired by the works of many people, and I cannot possibly list them all. Though I did my very best to attribute all authors of texts and images, and to recognize any copyrights, if you think that anything in this presentation should be changed, added or removed, please contact me at [email protected].