Monday, September 25, 2017

Modeling the process: Rolling Wave and Practices

WATERFALL MODEL - One-dimensional: use disciplines for both content and time in a waterfall-like sequence.

ITERATIVE MODEL - Two-dimensional: content and time are two distinct dimensions. We can work in one iteration in “parallel” for all disciplines.

AGILE MODEL (SIMPLIFIED) -Compatible with the Iterative model, but introduce practices as basic “brick” for the content part. Practices also have a “parallel” distribution in time, many of them are repeating for each iteration.

SCRUM MODEL –Content: only a small subset of Agile practices. Time: iteration only. Release it is rather out of scope (... and there is a gap between iteration and product backlog). See [B2].

DISCIPLINED
AGILE MODEL - Extends
the XP/Scrum model to a more generic approach: it recommends some Core
Practices but is not prescriptive. In fact, the core of the DA guidelines it is
about how to build your process:select the life-cycle, distribute/select
practices in the life-cycle. These decisions are related to a concrete context:
we decide about practices
needed to realize generic process goals in context; life-cycle
decision
it is also related
to the context.
DA also recommend the Rolling Wave for planning as a pragmatic and effective
approach.

Life-cycles
example: Continuous Delivery suppose a very specific information magement / Rolling Wave. Everything must be quick and good. Often feedback
and quick validation are mandatory. In this case Disciplined Agile guidance recommend adoption of
some Core Agile Practices for testing, design and collaborative work.

Why
do I expect from Disciplined Agile?
To make more explicit the fact that use the Rolling Wave (with practices) model
to describe the process.

“ESSENCE” MODEL – In some parts is conceptually similar to Unified Process (Jacobson, one of the “Essence” creators, was also one of the UP creators): it describes the process starting from types of activities. In also defines the practices as something that “provides guidance to deal with some dimensions of software development” [B3 – Chapter 17], and, for example, associates practices with an activity as “A requirements elicitation practice” [B3 – Chapter 17]. This model will not be so effective for the Core Agile case, where each practice will contribute to more dimensions of development (and to more “activities” from traditional process description).

Another problem of the “Essence” is the definition of the method as a “composition of practices” [B3 – Chapter 18] (also Jacobson write/tweet about freeing the practices from methods prison). This definition it is incomplete for all the methods and for some of them it is inaccurate. Incomplete: all the methods are mentioning first some principles and only then the practices. Also, some methods have explicit descriptions for development life-cycles. So, we have at least principles, practices and possible a life-cycle. More, in the case of Disciplined Agile, we cannot describe that method as a composition of practices, because beyond the recommendations of some Core Agile Practices, DA it is mainly a guidance to compose a kind of custom method in a specific context by selecting from the industry practices.

SPECIFIC AGILE CONTENT: CORE PRACTICES -Core Agile Practices have a specific Lean trait: one practice has multiple benefits, in various content aspects. These practices cannot be classified into one discipline: design, implementation, testing, etc. Modeling the content by encapsulating one core practice inside one discipline is a deep misunderstanding of Agile.

INFORMATION RELATED WORK: ROLLING WAVE - In software development, the work it is mostly related to information: we gather information, build information, we distribute, validate and get feedback about information. The progress of this work could be modeled as a Rolling Wave. The wave could address high granularity aspects as product roadmaps and release, medium granularity aspects as iterations and days, or low granularity aspects as TDD or Pair Programming. We cannot separate these levels because are influencing each.

ROLLING WAVE -Rolling Wave is not only about planning or milestones, buy about how the information related to the work and its results evolve or could evolve:

The problem - Understand and clarifying the problem to solve

The solution – prove your solution iteratively

Risks – resolve the associated risks in decreased impact order

Generic development aspects: knowledge, complexity, incertitude

It is a wave of information that could be gathered, created, distributed and validated (via feedback). Our process it is effective and efficient if we apply the “right wave” model in our context. Waterfall propose an unrealistic model about the wave: gathering and building up front and precisely a lot of information. That it is mathematically impossible: complex problems can be solved only via repetitive feedback, and these kinds of problems have rather a short range of prediction.Iterative model and Agile have introduced many feedback based practices such as small releases, iterations, retrospectives and continuous integration.

Important: any model process propose a kind of rolling wave (effective or not), but only in Disciplined Agile, this model it is explicitly used, where also the process guidance follow this model.

ROLLING WAVE - EXTENDING THE DEFINITION

The standard definition for "rolling wave planning" is <<plan things that are near in time to you in detail and things that are distant in time at a higher level>>. Practically, we will always have a rolling wave: we will always know less about the distant time things, no matter what it is our wishful thinking or not. Extending the definition, we will always have a rolling wave that it is also applied to the execution of the plan. The real model of a process supposes continuously enhancing the information and knowledge. In case of approaches like Waterfall, the intended plan does not match too well with the concrete realization and execution and the real rolling wave is ineffective.

ROLLING WAVE AND CORE AGILE PRACTICES

Core Agile Practices have a fundamental contribution to rolling waving the work, where their multiple benefits (per practice) will address many aspects related to the main domain issues: complexity, incertitude, and knowledge. Each of these practices has multiple contributions in information-based work to: create, gather, distribute, slice, validate (and get feedback) information.That means we can have a feasible, effective rolling wave/work.

You can find more information about their contribution in the post Core Agile Practices and Rolling Wave process model. Some of the Core Agile Practices: Small Releases, Iteration, Retrospectives, Pair Programming, Envisioning, Look Ahead Modeling, Just in time modeling, Continuous Integration, Clean Code.

THE RIGHT ROLLING WAVE

We have two main drivers to build/adapt the right rolling wave:

Domain specifics - the problems that are specifics to software development domain.