What are complex requirements? How challenging is managing them? How can we succeed in managing complex
requirements? This is what I am planning
to cover in this blog series. In Part-1of this series, I shared my thoughts analyzing and understanding requirements
in terms of factors such as complexity, stability, clarity, and availability. In
Part-2 of this series, I shared a classification scheme and potential
opportunities or advantages. In Part-3
we will discuss about some basics and connect with what is happening in the
Agile world. I am planning to end this
series with Part-4 and share some takeaways.
Anatomy of Business
Requirements: At a broad level,
business requirements can be categorized as functional and non-functional
requirements. That is a simple categorization
for this discussion and it holds true in most cases. A major source of business requirements in
product development organizations is market demands - also known as market
requirements.
There are many types of non-functional requirements as shown
in this diagram - you can add Security, Compliance, etc. to the list. If there are more, let me know through your
comments.
In Agile world, team members are getting habituated to
visualizing requirements as user stories. That is ok. However, understanding
this simple classification or categorization of requirements is a fundamental
need.
In small projects it may be possible to define
non-functional requirements (NFR) along with user stories so that each user
story carries related NFR as well. However, in large projects or programs
attempting to define NFRs with user stories is not sufficient to cover all
NFRs. You will need to create technical
stories to address or cover system level NFRs.
Complexity can be on either side – functional or
non-functional. Functional complexity can be dealt with in several ways or
means - e.g., close collaboration with business users, requirements workshops,
prototyping, POCs, active feedback, early acceptance etc. Complexity in non-functional requirements poses different
kind of challenges. There are ways to deal with such challenges. For example, architecture patterns, design
patterns, code optimization techniques, tool selection, test strategy and so on
help us in many of these non-functional areas.
So, what is the point?
It is obvious. Understand where you anticipate complexity and deal with
it. It is about anticipation, awareness
and action planning.
In Agile projects, we talk about epics and user
stories. Functional requirements are
either explicitly or implicitly seen as a group of epics belonging to
individual modules. Epic is a large business
case or scenario. It is broken into multiple user stories. We all know that. However, let me tell you, when you attempt to
draw a diagram like this for an enterprise agile project, it is not going to be
clear and simple like this one! This is
because a good number user stories can be interrelated.
So, what? Understand
the relationships among epics and user stories.
You may come across situations wherein user stories are related to each
other. Remember use cases and their relationships - a) includes and b) extends.
Similar relationships can exist among epics and user stories. This will help you further understand the
complexity in terms of such relationships and dependencies.
INVEST is a popular acronym in agile world. INVEST stands for Independent, Negotiable,
Valuable, Estimatable, Small and Testable.
User stories that satisfy these six properties enable project teams in
creating software that satisfies acceptance criteria and delivers business
value. You will find more information on
INVEST in Chapter 2 ‘Writing Stories’ of User Stories Applied for Agile
Software Development. Click this link to
download the free PDF of this chapter.
Now, the questions are, ‘Is it enough if we focus on INVEST
in large projects? What else should we do in order to manage complex
requirements?’ I will share some
thoughts and answer this in the next part. That is going to be the final part in this series.
Other Posts on Requirements Engineering:
2 comments:
Good one. Thanks for sharing the blog... Looking forward for part 4.
Thanks Maya, Good to see your comment again!
Post a Comment