Professional Documents
Culture Documents
To be honest, I'm not very enamored with the term "best practice". I believe that the term "contextual
practice" makes far more sense because what is a "best practice" in some situations proves to be a "worst
practice" in others. Having said that, people are interested in best practices so here they are when it
comes to agile requirements modeling:
1. Stakeholders actively participate
2. Adopt inclusive models
3. Take a breadth-first approach
4. Model storm details just in time (JIT)
5. Treat requirements like a prioritized stack
6. Prefer executable requirements over static documentation
7. Your goal is to implement requirements, not document them
8. Recognize that you have a wide range of stakeholders
9. Create platform independent requirements to a point
10. Smaller is better
11. Question traceability
12. Explain the techniques
13. Adopt stakeholder terminology
14. Keep it fun
15. Obtain management support
16. Turn stakeholders into developers
it. Project stakeholders are solely responsible for prioritizing requirements, the system is being
built for them therefore they are the ones that should set the priorities. Likewise, developers are
responsible for estimating the effort to implement a requirement because they are the ones that
will be doing the actual work it isnt fair, nor advisable, to impose external estimates on
developers. Although prioritization and estimation of requirements is outside the scope of AM, it
is however within the scope of the underlying process such as XP or UP that you are applying AM
within, it is important to understand that these tasks are critical aspects of your overall
requirements engineering effort. For further reading, see the Agile Requirements Change
Management article.
Things change between the time the requirements are defined and when the
software is actually delivered.
The point is that you can do a little bit of initial, high-level requirements envisioning up
front early in the project to understand the overall scope of your system without having to
invest in mounds of documentation.
you will still be working them just before you final code freeze before
deployment. Remember the principle Embrace Change. Agilists take an evolutionary,
iterative and incremental, approach to development. The implication is that you need to
gather requirements in exactly the same manner. Luckily AM includes practices such
as Create Several Models in Parallel, Iterate To Another Artifact, and Model In Small
Increments which enable evolutionary modeling.
be
implemented co-located agile teams will often literally have a stack of user stories
written on index cards. The team takes the highest priority requirements from the top of
the stack which they believe they can implement within the current
iteration. Scrum suggests that you freeze the requirements for the current iteration to
provide a level of stability for the developers. If you do this then any change to a
requirement youre currently implementing should be treated as just another new
requirement.
4. Recognize that they are not an expert at all aspects of the domain. Therefore, they will
need to have good contacts within the stakeholder community and be prepared to put the
development team in touch with the appropriate domain experts on an as-needed basis
so that they can share their domain expertise with the team.
Figure 5. You'll work with a range of stakeholders.
of the existing infrastructure, such as your Sybase vX.Y.Z database or then need to
integrate with a given module of SAP R/3, then you've crossed the line. This is okay as
long as you know that you are doing so and don't do so very often.
I'm a firm believer in traceability if you have actual regulatory compliance needs, for
example the Food and Drug Administration's CFR 21 Part 11 regulations requires it, then
clearly you need to conform to those regulations. I question traceability which is solely
motivated by "it's a really good idea", "we need to justify the existence of people on the
CCB" (it's rarely worded like that, but that's the gist of it), or "CMMI's Requirements
Management process area requires it". In reality there's lots of really good ideas out there
with much better ROI, surely the CCB members could find something more useful to do,
and there aren't any CMMI police so don't worry about it. In short, just like any other
type of work product, you should have to justify the creation of a traceability matrix.
Investing the effort to model requirements, and in particular applying agile usage-centered
design techniques, are new concepts to many organizations. An important issue is that your
project stakeholders are actively involved in the modeling effort, a fundamental culture
change for most organizations. As with any culture change, without the support of senior
management you likely will not be successful. You will need support from both the
managers within you IS (information system) department and within the user area.
The Unchangeable Rules of Software Change (Brad Appleton, Robert Cowham, and Steve
Berczuk)
The Object Primer 3rd Edition: Agile Model Driven Development with UML
2 is an important reference book for agile modelers, describing how to develop
35 types of agile models including all 13UML 2 diagrams. Furthermore, this
book describes the techniques of the Full Lifecycle Object Oriented Testing
(FLOOT) methodology to give you the fundamental testing skills which you
require to succeed at agile software development. The book also shows how to
move from your agile models to source code (Java examples are provided) as
well as how to succeed at implementation techniques such
as refactoring and test-driven development (TDD). The Object Primer also
includes a chapter overviewing the critical database development techniques
(database refactoring,object/relational mapping, legacy analysis, and
database access coding) from my award-winning Agile Database
Techniques book.
Agile Modeling: Effective Practices for Extreme Programming and the
Unified Process is the seminal book describing how agile software developers
approach modeling and documentation. It describes principles and practices
which you can tailor into your existing software process, such as XP,
the Rational Unified Process (RUP), or the Agile Unified Process (AUP), to
streamline your modeling and documentation efforts. Modeling and
documentation are important aspects of any software project, including agile
projects, and this book describes in detail how to elicit requirements,architect,
and then design your system in an agile manner.
The Elements of UML 2.0 Style describes a collection of standards,
conventions, and guidelines for creating effective UML diagrams. They are
based on sound, proven software engineering principles that lead to diagrams that
are easier to understand and work with. These conventions exist as a collection
of simple, concise guidelines that if applied consistently, represent an important
first step in increasing your productivity as a modeler. This book is oriented
towards intermediate to advanced UML modelers, although there are numerous
examples throughout the book it would not be a good way to learn the UML
(instead, consider The Object Primer). The book is a brief 188 pages long and
is conveniently pocket-sized so it's easy to carry around.