Agile Consulting&Coaching

Building an Agile System

Would you like to deliver the value to your customers fast and with high quality? If your answer is “of course yes” you need an agile system. How can an agile system provide this functionality to you?

A Simple Feasibility

Let’s make a simple feasibility first. The following finding of Boehm based on data collected from a large number of projects regarding to uncertainty estimation shows us what we need to do:

null

During development planning, estimates become more and more accurate as the project progresses. It is obvious that we can reduce the detrimental effects of uncertainty including cost overruns, delays and unmet customer demands by simply squeezing the process steps towards to delivery. Reducing the elapsed time between the decision and the action will increase the accuracy of our critical decisions.

Requirements

What kind of requirements should we determine for such a system? The answer is simple again: They are the lean and Agile principles.

A Simple Architecture

How can we build such an agile system? Having a developer’s mindset and making an analogy accordingly would be a good idea to have a holistic point of view that enable us to see the big picture. In that case architectural design which is the critical link between design and requirements should be the first stage to start. Since it is impossible to represent all relevant information about a system’s architecture in a single architectural model we will use architectural views:

null

I strongly believe that building a “real” agile system requires to understand and to implement all these views. There are many different and useful “design patterns” that can be used as a source of inspiration on your agile journey however , for the sake of simplicity, I did not include them to this architectural model.

System Building             

We continue our analogy. Building a system is a compelling process progressing with “inspect and adapt” cycles. It is not possible to build a system by developing the each component in one go. System building is the process of creating a complete, executable system by compiling and linking the system components.

Code particles flow from codelines to baselines and then to mainlines but there is no value of them unless they reach the target platform as a part of a final system. Version management system keeps track of different versions of software components or configuration items and the systems in which these components are used. It is a sign of the progression and shows us the right path to build the system correctly but still we need a build system in order to create the target system.

null

 

This build system is the corporate culture which combines the different components of the system to create the target system that enables the seamless value flows in the target platform, that is lean and agile enterprise, to deliver the value fast and with high quality.

Don’t forget! You can never reach a target system. If you think that you have done this there are certainly some bugs in one or more system components. Go back and continue towards a state of perfection. 

References:

Software Engineering, Ian Sommerville