management of multiple existing products. Iterative
development processes must be able to
accommodate domain experts who are not available
full time.
Our suggested approach to determining the
iteration length is to make them as short as practical,
within the constraints of reviewer availability in
order to ensure timely reviews of implemented
features.
The primary aspect of feedback that leads to the
increase in requirement stability in our simulations is
based on the communication between the developers
and customers, and sharing of knowledge. When this
feedback only happens at the end of iteration the
simulation indicates that shorter iterations are
preferable to longer ones in the initial stages of the
project. On the other hand, in terms of pure project
management and scheduling, having the team
iterations constant brings a significant amount of
value in terms of establishing a development
rhythm. The increased communication needed for
improving the stability of the requirements can also
be satisfied by conducting multiple reviews during a
standard iteration. These reviews should not require
fully tested and documented system components.
When the requirements are immature, timely
feedback is more relevant than completeness..
Requirement stability can be estimated from data
that is directly measurable as part of management of
iterative development processes. At the end of an
iteration review, we know the amount of effort that
went into the development during the iteration, and
we will be able to estimate the ratio of effort that
resulted in rejected packages. The ratio of effort in
accepted packages to the total of reviewed packages
can be used as a measure of requirement stability.
Overall stability below the 0.5 threshold suggests the
use of short iterations or frequent customer reviews.
As the requirement stability grows, the frequency of
review sessions can be reduced accordingly.
In practice, it is rare that all the requirements of a
system are at a very low level of stability, as most
systems will have some mature and well defined
requirements. The system at large would be well
served by longer, synchronized iterations with
multiple agile teams since most of the requirements
are relatively stable. However, the volatile aspects of
the application require a more dynamic approach,
where multiple review sessions per iteration would
improve the understanding and stability of the
requirements. Teams working on these features can
remain synchronized with other teams while using
frequent reviews to address requirement volatility.
6 CONCLUSION
We have shown that requirement stability is an
important element that should be taken into account
when planning and executing software development
projects. We have also identified some types of
software development projects which get started
with a very low requirement stability level, and in
their very early phases need to rely heavily on
frequent progress reviews. Our results confirm the
intuitive hypothesis that postponing the reviews until
the completion of longer iterations leads to larger
amounts of wasted effort, and slower maturation of
the product requirements. Finally we have provided
an evaluation approach that allows project managers
to estimate their requirement stability, and to plan
for a more effective development process by
adjusting the interval between customer reviews.
REFERENCES
Beck, K., 1999. Extreme Programming Explained:
Embrace Change, Addison-Wesley.
Cohn, M., 2004. User Stories Applied : For Agile
Software Development. Addison-Wesley Professional.
Demarco, T., Lister, T., 2003. Waltzing With Bears:
Managing Risk on Software Projects, Dorset House
Publishing Company.
Fayad, M., Altman, A, 2001. An Introduction to Software
Stability. In COMMUNICATIONS OF THE ACM
September 2001/Vol. 44, No. 9
Hwong, B., Matos, G., McKenna, M., Nelson, C.,
Nikolova, G., et al, 2007. “Quality Improvements
From Using Agile Development Methods: Lessons
Learned”, In I. Stamelos, P. Sfetsos (eds.), Agile
Software Development Quality Assurance, IGI Global
Javed, T., Maqsood, M., Durrani, Q., 2004. A Study to
Investigate the Impact of Requirements Instability on
Software Defects, in ACM Software Engineering
Notes, Volume 29, Number 4 , May 2004.
Jones, C., 1998. Estimating Software Costs, McGraw-Hill.
Pfahl, D., Lebsanft, K., 2000. Using Simulation to
Analyze the Impact of Software Requirement
Volatility on Project Performance, in Information and
Software Technology 42, 2000.
Schwaber, K., Beedle , M., 2001. Agile Software
Development with SCRUM, Prentice Hall.
Song, X., Matos, G., Hwong, B., Rudorfer, A., Nelson, C.,
2005. S-RaP: A Concurrent Prototyping Process for
Refining Workflow-Oriented Requirements, in RE’05
International Conference on Requirement Engineering
, Sept, 2005. Paris, France.
ENASE 2007 - International Conference on Evaluation on Novel Approaches to Software Engineering
118