emphasized by the YAGNI mantra You Aren’t Going to Need It. This discourages a consideration of longer-
term business strategy or a detailed analysis of the business context, which is typically more complex than
it appears initially. The recent version of XP has begun to acknowledge the importance of wider issues by
including the quarterly cycle practice, concerned with checking on “alignment with larger goals” and taking
account of the “big picture” as progress is made.
The essential problem is that there are few guidelines on the implementation of the customer role to suggest
how interaction with developers should occur. In particular, it is unclear what models or system
descriptions should be used to build a shared
understanding of both the problem situation and the computing solution being proposed. Various authors
have offered advice. Jepsen [10], for
example, recommends spending a great deal of time and energy in
investigating contrasting stakeholder viewpoints in complex situations to help in “understanding the
business” [11]. Stephens and Rosenberg also highlight the value of spending time ‘up front’ with as many
customer representatives as possible and exhorting developers to “get down into the trenches and find out
the real problems that need to be solved” [12]. Van Deursen [13] similarly identifies benefit for the
customer representative in having “systematic ways for diagnosing problem situations,” which again means
analysing the environment adequately. Without this activity, an XP project can become too inwardly
focused.
The purpose of this paper is to propose a systematic way of analysing an environment in support of agile
development. It starts by examining the concept of alignment between a computing
system and its
environment. This is followed by a brief summary of Soft Systems Methodology SSM [14], a general
technique for analysing any situation considered
problematic. The final sections suggest how the process and models of SSM might be linked to XP to better
define the customer role, which also helps to improve the match between the computing system produced and
the context in which it will be used. This is supported with the use of an example.
2. Computing-Environment Alignment
Jackson argues that when tackling new projects it is important to understand the problem domain adequately
before focusing on the solution, because the
requirements are
effectively determined by this environment [15]. The objective of analysing a problem
situation is to i understand the context in which there appears to be a need for the creation or modification a
computing system; and ii define a basic course of action. For ongoing development, both the context and
required action may be well established but it is still desirable to ensure that there have been no significant
changes since the previous analysis was undertaken. Also, the analyst may be new to the project and require
some time to appreciate the arguments in that analysis.
Figure 1 shows a representation of an evolving computing system and its corresponding environment.
The arrow between each system version and its environment implies that they are ‘aligned’ [16, 17].
That is, ideally, the computing system provides optimal support for the environment in which it is used and this
alignment is maintained as the situation evolves.
Analysis can either be i goal-oriented, developing a vision or target of what the computing system and its
aligned environment could or should become, or ii problem-oriented, focusing on current shortcomings or
opportunities and determining how they might be addressed. Also, analysis can be top-down, starting with
an environment analysis, or bottom-up, with a focus on the computing system to be produced [18].
…
Environment Computing
System Environment
Computing System
Environment Computing
System
B
A C
D
Current Target
Figure 1. System Co-Evolution Model
Four different starting points for system analysis are identified in the diagram [18]:
x A-type analysis is the classic product-focused approach to software development. Here, the
environment is mainly understood in terms of its relevance to the computing system and the
functions it provides.
x B-type analysis is the traditional ‘information systems’ approach, involving the analysis and
modelling of the environment to provide a context for identifying system requirements.
x C-type analysis helps develop a long-term vision of what the software could or should become.
Implementation steps are then defined to advance the system in that direction.
x D-type analysis first develops a long-term vision of the computing system environment, which is then
used to determine environment changes as well as identify desirable supporting technology and its
implementation steps.
One well-known example to C-type analysis is Gilb’s Evolutionary Delivery method [8]. This has been
adopted as a key practice of XP and is a core aspect of agile development, in general [19]. Each delivery step
Proceedings of the 13th Annual IEEE International Symposium and Workshop on Engineering of Computer Based Systems ECBS’06 0-7695-2546-606 20.00 © 2006
IEEE
offers extra value to the user that can be assessed to influence the next implementation phase. As work
progresses, the initial goal may change, affecting the direction of development accordingly. The principles of
the approach are summarised as [8]: x Deliver something to a real end user.
x Measure the added-value to the user in all critical
dimensions. x Adjust both design and objectives based on
observed realities. Unfortunately Gilb gives little indication of how this
is to be achieved in practice, simply stating that [8]: “Evolutionary delivery is based on iteration towards
clear and measurable objectives. The set of objectives must contain all functional, quality and resource
objectives which are vital to the long-term and short- term survival of the system under development”.
This paper argues for a ‘top-down’ approach to analysis, so that an adequate understanding of the
environment is built up before focusing attention on the computing system or systems. For agile development,
that, in effect, means the use of a D-type analysis in support of a longer-term view of how a computing
system might evolve. SSM is a suitable technique for performing this type of analysis [20, 21]. The next
section summarises its main characteristics, identifying the models it helps to create.
3. Environment Analysis