Software Requirements Defined

When working with software requirements, it is sometimes  useful to reflect about what exactly software requirements are? As with most software engineering terms, also for software requirements there doesn’t exist a generally agreed-upon definition. So one can best attain a deeper understanding through consulting and comparing multiple alternative definitions.

My favorite definition of software requirements is the one from Sommerville and Sawyer:

Requirements are [...] a specification of what should be implemented. They are descriptions of how the system should behave, or of a system property or attribute. They may be a constraint on the development process of the system.

(I. Sommerville und P. Sawyer, Requirements Engineering: A Good Practice Guide, 1. Auflage. John Wiley & Sons, 1997.)

This definition is crisp, easy to read, and covering the most essential aspects of requirements. It does also not stipulate that requirements needed to be documented, which makes it cover also the use of requirements within agile software development.

Perhaps the most frequently cited definition has been developed by a committee of the IEEE Computer Society. It distinguishes three different meanings of requirements. So it is rather precise but also a bit difficult to read and comprehend:

(1) A condition or capability needed by a user to solve a problem or achieve an objective.
(2) A condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed documents.
(3) A documented representation of a condition or capability as in (1) or (2).

(The Institute of Electrical and Electronics Engineers (IEEE), IEEE Standard Glossary of Software Engineering Terminology/IEEE Std 610.12-1990. IEEE Publications,U.S., 1990. – First edition from 1983)

In the following you find several additional definitions in chronogical order of appearance.  So you can also get an impression of how our view of software requirements has evolved.

Gause & Weinberg, 1989

If you employ other people to help you develop what you want, you’d describe what you want for them. That description is called a problem statement or a set of requirements [...]. Obviously, requirements are important because if you don’t know what you want, or don’t communicate what you want, you reduce your chances of getting what you want.

(D. C. Gause und G. M. Weinberg, Exploring Requirements: Quality Before Design. Dorset House Publishing Co Inc.,U.S., 1989.)

Note: Most early literature on requirements does not explicitly define the requirements term but rather circumscribes requirements and their role in software development.

Robertson & Robertson, 1999

Something that the product must do, or a property that the product must have.

(S. Robertson und J. Robertson, Mastering the Requirements Process: Getting Requirements Right. Addison-Wesley Longman, Amsterdam, 1999.)

Wiegers, 1999

A statement of a customer need or objective, or of a condition or capability that a product must possess to satisfy such a need or objective. A property that a product must have to provide value to a stakeholder.

(K. E. Wiegers, Software Requirements, Second Edition, 2nd Ed. Microsoft Press, 2003. – First edition from 1999)

Gottesdiener, 2002

The needs or conditions to be satisfied on behalf of users and suppliers.

(E. Gottesdiener, Requirements by Collaboration: Workshops for Defining Needs. Addison-Wesley Longman, Amsterdam, 2002.)

Cohn, 2004

Software requirements is a communication problem.

(M. Cohn, User Stories Applied: For Agile Software Development. Addison-Wesley Longman, Amsterdam, 2004.)

Note: Most literature on agile development avoids providing explicit definitions of requirements. The authors rather circumscribe agile requirements concepts, they describe the role of requirements-related information during the agile development cycle, or they explain requirements-related agile practices. This is surprisingly similar to the lack of explicit definitions in the early stages of the software engineering discipline during the 1980′ies and during the 1990′ies.

Robertson & Robertson, 2012

Something that the product must do, or a property that the product must have, that is needed or wanted by the stakeholders.

(S. Robertson und J. Robertson, Mastering the Requirements Process: Getting Requirements Right, 3rd revised edition. Addison-Wesley Longman, Amsterdam, 2012.)

Posted in requirements, software engineering |

What Software Tools Support Requirements Management?

Requirements Management (RM) is a very complex task that can only be accomplished with the support of suitable tools. Even small software projects need at least some manual tools like index cards or flip charts for supporting clarification and communication of requirements.

This blog article investigates what kinds of software tools can be used for supporting requirements management. Specialized RM tools are spreading across the industry since a few years. (Look up our list of RM tools for examples.) We will see that they are only one of many different kinds of tools (although an important one) that support requirements practices.

This list of tool categories has matured over a series of inspiring discussions with my colleague Gerald Heller. I highly appreciate his contributions and comments.

Specialized RM tools have evolved dramatically over the past years: Functionalities of the individual tools have grown and improved very much, and the number of viable tool solutions has grown significantly. These tools define each requirement as a record of attributes (i.e., record-based RM), can link requirements with each other, and provide analysis, reporting, and document generation functionality. Perhaps most important, specialized RM tools allow for concurrent editing and change tracking. Increasingly, RM tools also offer to edit requirements in a manner very similar to text processors (i.e., document-oriented RM).

It is important to emphasize that specialized RM tools are not plug-and-play solutions. Rather, they are platforms that must be customized to the specific information structures, processes, and context factors of the specific software development or requirements management organization.

Within the family of specialized RM tools, two different groups can be distinguished: Traditional record-based RM tools and agile RM tools. Agile RM tools provide the specific concepts and processes for efficient agile requirements. According to common agile practices, they link requirements (mostly in the form of agile user stories) with tasks. So they represent a combination of RM functionality, project management, and issue tracking.

Specialized requirements development tools (RD; also denoted requirements definition tools) address the early phases of eliciting, analyzing, and documenting requirements. They provide functionality like brainstorming support and structured group discussions. RD tools evolve as an important addition to RM tools. On the long run, both tool types might merge into combined RD and RM tools.

For a more detailed discussion of RM and RD tools, you can refer to Gerald’s blog article on RM/RD tool characteristics.

Office applications and suites are still the most widely used tools for developing requirements specifications and managing individual requirements. Their advantage is that they are ubiquitous and everybody knows how to use them. Their severe disadvantages are that they are lacking any specialized RM functionality like treating each requirement as a separate entity and requirements traceability, and that parallel editing of documents is not supported. So, I recommend to use office applications (albeit in a well-planned and structured manner) as an entry solution for systematic RM, but to move to specialized tool support when needs become more complex.

Word processors are the office application most commonly used for RM, particularly for developing RM specification documents. It is highly recommended to define the structure of the documents prior to starting actual specification work, for instance by using templates and example documents. A person should be assigned to ensuring that the document structure is always considered and evolved when needed.

Several years ago, I witnessed a project that very systematically approached requirements management with Microsoft Word. They defined a master document, which consisted of several sub-documents. Each sub-document was written and managed by a separate team, enabling efficient work distribution. However, nowadays specialized RM tools with their advanced report generation features are the most efficient solution for such situations.

Spreadsheet software allows managing each requirements as a separate compound object of attributes and attribute values. This comes at the expense that a requirements can only be presented as lists or tables. Document-like views are hardly possible.

Presentation software is also quite often used for defining specification documents in the form of slide presentations. However, such specifications tend to stay on high levels of abstraction. People usually don’t put much detail into these specifications. This can be acceptable for smaller work packages in stable environments. But it will definetely be insuffient for any larger development effort.

Visual modeling tools for developing and managing graphical models in notations like Unified Modeling Language (UML), Business Process Process Model and Notation (BPMN), or Systems Modeling Language (SysML) are an important pilar of many specificiations. However, in most situations they should not be the sole environment for defining requirements. Rather, visual modeling tools should be used together with and integrated well with specialized RM solutions.

Issue tracking software (also denoted request, problem, or defect tracking software), especially in its variant of work item tracking software, is also a frequently used solution for implementing and supporting RM. In particular for situations where individual requirements need to be managed instead of large compound specification documents, issue tracking software can be a very viable solution for RM.

The tool categories described above might be the most relevant ones, covering the vast majority of RM tool applications. However, there are also several other categories of software tools that can be used effectively to support RM:

In addition, there are some tool families that can add specific value to RM tools:

  • ALM suites integrate RM functionality with support for many other development activities and phases.
  • Testing and test management software enable or facilitate requirements-based testing.
  • Configuration management and revision control tools add specifically to office applications and partly compensate for a shortcoming of office applications when compared to specialized RM tools.
  • Software engineering platforms and integration middleware integrate RM tools with other tools along the development lifecycle.

Having now unfolded the wide spectrum of RM tool support, what do we learn? First, there is not one single best way to tool-based RM. Rather, every organization must consider its specific situation and constraints (e.g., tool solutions in place for other development and management areas) and develop its customized RM tool solution.

Second, specialized RM and RD tools provide a reliable basis for RM, and they will continue to becoming increasingly important. The wide variety of different RM tools creates new challenges: How can we systematically evaluate and select the tool most suitable for us? How can we consolidate a grown tool landscape that includes many different RM tools? How can we align the usage of a consolidated RM tool across several independent entities of a larger software organization?

So it is clear: Tool-based RM will progress further, and we are looking forward to a highly interesting (while challenging) future.

Posted in requirements, tools | Tagged , , , |

RM Tools – what are they anyway?

There are quite a few requirements management (RM) tools out in the market. Did you ever wonder what qualifies them as an RM tool? This question is of specific interest, when you are in the process of selecting a requirements management tool for your organization.

A good starting point for the evaluation of tools is to get insights about your driving needs.

  • What should the tool do for you?

Sometimes, I simply hear “support the RM process”. In other situations I get statements like:

  • ease the documentation burden
  • provide access to requirements for all stakeholder
  • speed-up requirements discussions

The latter situation is better, because it is always helpful working towards your own goals. What is it that you want to accomplish? If you know this, then you get a clear guidance what are the most important features of any given tool for you.
The statement “support the RM process” is more tricky and interesting to explore.

What is Requirements Management?

At first glance one might think, that’s not a big deal because RM is defined. We only need to look at the published definition, check the associated activities and voilà we have something we can compare tool features against. But when you dig into the details about RM you might get puzzled. Definitions about RM aren’t so clear and consistent. When Andreas Birk and I did a recent research about RM definitions we found out, that definitions substantially differ. Below are some prominent examples for Requirements Management:

Karl Wiegers, In search for excellent requirements, 2004:

Manage versions of requirements documents
Adopt and enforce a change control process
Store requirement attributes
Track the status of each requirement
Trace requirements into designs, code, and tests

BABoK Guide, Version 2.0

The activities, that control requirements development,
including requirements change control,
requirements attributes definition, and
requirements traceability

IREB CPRE Foundation Level, May 2009

Adding Attributes to Requirements
Creating Views of Requirements
Prioritizing Requirements
Tracing Requirements
Requirements Versioning
Dealing with Change Requests

Already from these three examples we can see that there is a floating boundary between support of requirements development and requirements management. So, where do we go from here? A good approach is to distill commonalities from the definitions and construct a criteria list:

Requirements management should support all activities to

  • define and structure requirements
  • discuss requirements
  • prioritize requirements
  • maintain status on requirements
  • track changes of requirements
  • version requirements
  • trace relationships between requirements and other development artefacts
  • communicate about requirements

That provides a great start. We now have some objective criteria to check whether a tool can call itself a requirements management tool. Comment: Will Microsoft Word qualify as RM tool?

But, we aren’t done – these are just the basics.

Beyond basic requirements management

When we look at the feature lists of prominent “RM Tools” we will notice, that vendors typically provide a much richer set of features. There are several reasons for that. On one side rich feature sets are business differentiators. If product A provides “killer features” that other products don’t have, it will have some competitive advantage for the company who sells A.
On the other side a rich feature set for RM may also be rooted in the nature of the requirements management process. Being a central part of product development, requirements management has many interfaces to adjacent processes and tools.

Tool vendors have the option to either provide interfaces to the adjacent processes or incorporate support for these adjacent processes directly in the tool.

Especially products, that are out in the market for quite some time, often show the latter approach. In recent years the term “Application Lifecycle Management” (ALM) became prominent. It is used in situations where a tool provides support for several (or all) phases in the application lifecycle.
While this may suit some companies it imposes challenges too. Often companies have already deployed tools in adjacent areas and are then forced to evaluate what tool solution should be used going forward.

Therefore, ALM in a single tool may only be beneficial for some companies.

The new trend: Visualization and collaboration

Another trend I observe, is that tools provide more support for the early phases of requirements engineering. In these phases requirements aren’t that clear, but are under constant development. That’s why Carnegie Mellons Software Engineering Institute (SEI) summarizes these activities as “Requirements Development”. There is constant morphing between wishes, ideas, requirements and solution prototyping. To support these activities tools should provide support for

  • ideation
  • conceptualization
  • joint understanding
  • collaboration

When requirements aren’t that clear often visualizations help to move forward. In recent years more and more tools offer visualization features for requirements representation. This may range from support for rich media formats like pictures and movies, to support for sketches, storyboards, mockups and finally to support for modeling activities with varying degree of formal notations.
An optimal complement to visualization concepts are collaboration features. Requirements engineering demands interaction between stakeholders. Fortunately the trend to social media software has also spread to the requirements tools market. Use of social media functionality improves requirements understanding and reduces the risk building the wrong product. This is a great advance in requirements engineering.

In summary, I believe that there is time for a new class of requirements tools. Those do not only support classical requirements management, but also requirements activities, that help to improve the collective understanding of requirements through illustration and collaboration and therefore ultimately serve to build better products.

Watch out for these type of tools when selecting a requirements tool.

Posted in requirements, tools | Tagged , , , |

Software Product Management Survey

Have you ever wondered how your product management practices stack up against others in the software industry?

Well, here’s an opportunity to find out: the International Software Product Management Association (ISPMA, http://ispma.org ) is for the first time conducting a survey to find out about software product management practices in the real world – and you are invited to participate.

To complete the survey, please go to the URL http://bit.ly/spm-survey and answer the questions about your organization, your product, and your product management practices. Filling out the survey will require about 20 – 25 minutes of your time and you’ll receive the following benefits:

  • Immediately after filling out the survey, you will get access to an overview document on state-of-the-art software product management. This document is a compilation of the most frequently cited scientific publications in the field of software product management.
  • Once the survey has been closed and evaluated, you’ll receive a personalized evaluation that shows your results in comparison with results of the entire survey panel. This way, you can compare yourself with the state-of-practice and you get insights into how practice varies from one organization to another. This will help you to further evolve your own approach to software product management.

The survey is conducted by Andrey Maglyas from Lappeenranta University of Technology (LUT, http://www.lut.fi/ ), Finland and Dr. Samuel Fricker from Blekinge Institute of Technology (BTH, http://www.bth.se/ ), Sweden with support from the International Software Product Management Association (ISPMA, http://ispma.org ).

The survey will close on 25.12.2012 and we plan to complete the survey evaluation in early 2013.

Posted in software engineering | Tagged , , , |

Was ist so speziell am Produktmanagement für Software und Internet-Angebote?

Schon bei der Definition des Produkts und insbesondere der Produktfunktionalität hat man bei Software und Internet-Angeboten mehr Freiheiten als bei physischen Produkten. Software ist sehr flexibel und man kann damit fast “alles” machen. Diese große Freiheit stellt eine Herausforderung dar, denn es ist im Gegenzug oft schwer, zu fokussieren oder sinnvolle Kombinationen von Funktionalitäten zu definieren.

Auch beim Geschäftsmodell und bei der Preisfindung gibt es bei digitalen Gütern große Freiheitsgrade: zumeist sind die Grenzkosten sehr gering, d.h. sobald das Angebot einmal verfügbar ist, kostet es fast nichts, es einem weiteren Kunden zur Verfügung zu stellen. Damit sind z.B. Freemium-Geschäftsmodelle möglich, bei denen die Mehrheit der Kunden eine Grundversion des Angebots umsonst nutzt und nur eine Minderheit für eine erweiterte Funktionalität zahlt.

Versuchen Sie so ein Geschäftsmodell mal mit einem physischen Gut, zum Beispiel als Automobilhersteller: das Basis-Modell gibt es umsonst, und anspruchsvollere Kunden können dann optional zum schnelleren Modell oder zum Cabrio wechseln und nur dann müssen sie etwas bezahlen. Würde sicher helfen, Marktanteile zu gewinnen, aber es ist klar, warum das nicht geht.

Aber auch hier gilt: der höhere Freiheitsgrad macht die Aufgabe des Produktmanagers schwieriger, denn z.B. bei der Preisfindung ist einer der klassischen Einflussfaktoren, nämlich die Stückkosten, wenig hilfreich.

Einerseits stehen Produktmanager für Software und Internet-Angebote also vor speziellen Herausforderungen, andererseits hat die Branche spezifische Techniken entwickelt, um mit diesen Herausforderungen besser fertig werden zu können. So unterstützt beispielsweise das Instrumentarium des Requirements Engineering die Produktplanung und Qualitätssicherung und hilft damit den Produktmanagern, die Herausforderungen bei der Produktdefinition zu meistern.

Posted in in Deutsch, product management | Tagged , , , , , , | Leave a comment