the expectation would be, that the detailing, i.e., the
breakdown of the system requirements into
component requirements, takes place in iterations.
On the other hand, a comprehensive overview over
the expected functionality of a component is
required to set up a suitable and stable component
architecture.
This raises the following question: how much
information needs a component team upfront to
enable efficient agile development, and how much
information can the system level provide without
giving up the agile principles of iterative
refinement? An appropriate balance needs to be
achieved between these two contradicting
expectations.
3.2 Agile System Testing
The “back end” of the development cycle is easier to
grasp. In principle, it is straight forward to expand
the agile approach to system testing. System testing
has to be done iteratively within the iteration cycles
and the definition of done should be based on passed
system tests.
In practice, it is however often not possible to
integrate system testing completely within short
iteration cycles. Reasons for this can be, e.g.,
complex systems, long test durations, manual tests,
or that some components of the project follow the
traditional development approach.
Therefore, one also has to find the right balance
between what’s desirable and what’s possible when
expanding agile principles to system testing.
3.3 Proposed Solution
A possible approach to handle the challenges faced
when expanding agile development to large system
projects, is the introduction of an intermediate level
in-between the system project and the component
development.
The intermediate level breaks the project into
several development steps. The number and duration
of these steps is driven by how much information a
component team needs upfront, so that it creates
only a minimum of waste when continuing with the
development in the next step. The duration of the
steps can vary within the project. They should be as
short as possible, but are driven by the structure of
the development object, the boundary conditions and
the organizational constraints.
By this means, one can keep the short iterations
and agile principles on component level without
compromising them. And it is possible to integrate
the agile development of e.g. software components
with traditional development of e.g. hardware
components.
On the overall project, the breakdown of the
system requirements and the system integration and
system testing will be done in larger steps. This then
summarizes the outcome of several development
iterations on component level. This means, the
system level has been “agilized” as much as
sensible.
As pointed out above, the right balance between
what’s desirable and what’s possible and sensible
has to be found. This differs from organization to
organization. Typically, the “agilization grade” of
the system level increases over time.
4 THE ROLE CHALLENGE
Agile development approaches focus on specific
responsibilities. Scrum defines, e.g., only three roles
(product owner, scrum master, development team).
On the contrary, traditional processes within
development departments have typically between 40
to 60 roles.
Do these roles become obsolete with the
introduction of agile development? Can every
activity be mapped to the three Scrum roles?
4.1 Role Concept
The answer is of course no. Especially large system
projects require additional roles. Depending on the
organizational set up, the project scope and the
boundary conditions imposed by the multiple
stakeholders, a suitable role concept has to be
defined. This must address the needs of the
organization and large system projects, without
compromising agile principles more than necessary.
4.1.1 Project Organization
Agile development teams work best with seven plus
or minus two team members. This means, that large
system projects require an additional project
organization on top of the agile development teams,
including coordinating functions.
These coordinating functions can be, e.g., an
overall project manager, a chief product owner, or a
chief architect. Nevertheless, the self organizing
aspects of the agile development teams should be
preserved as much as possible. I.e., the
responsibilities of the traditional roles have to be
adjusted, enabling the agile roles to be implemented
ENASE2012-7thInternationalConferenceonEvaluationofNovelSoftwareApproachestoSoftwareEngineering
120