Requirements Process

  

We use the ECommerce application from our website as a prototype to illustrate the requirements process.  Prototypes represent one way to reduce some of the risks involved in developing a new software solution.  In this section, we review the basics of the requirements process as a means to assure success in software solution design and implementation. 

The Unified Process is the most popular and widely recognized.  This method is by far the most widely accepted to develop the blueprints for building a software product for commercial sales or for internal use as an information system.  In our example, we cover almost all of the basics, but we do not go into the many details of managing this process.  Experience as well as exposure to the enormous amount of literature, these are the best teachers for anyone to learn the science and craft of requirements process or, more generally, efficiently developing  a successful information management system or product.

We use several sources to produce the complete requirements analysis for the ECommerce application.  Our sources are listed in our  bibliography.

Overview of the Tools

Used often in the literature describing the Unified Process, the diagram below illustrates some of the key documents needed, their relationships to each other, how one contributes and prepares for the other, as well as the types of requirements used to produce them. 

Figure 1:

This diagram also indicates how one document "cascades" or contributes to the next; hence the name "water fall" approach to requirements management.  The other main alternative to the water fall approach is the "incremental" in which the development team produces a small first set of functionality and then adds incremental layers.  The "water fall" and the "incremental" approaches are not necessarily exclusive.  For example, when designing a new product, such as the Ecommerce application we analyze here as an example, using the waterfall approach, most development teams, usually the marketing managers, determine what customers look for most in a particular product and use these most demanded functions as priorities to define the scope of version 1, the first "launch" or "increment" in the product roadmap.  Once launched, the first version serves as the basis for soliciting feedback from customers to prioritize the next set of functionality for version 2 and so on.

Risk Management as Requirements Management

Before we jump right into the analysis and design of our Ecommerce application, we need to set the definition of the various types of documents and requirement straight in our mind.  These are the tools that help us to deliver a clear, unambiguous understanding of what the developers need to develop so that our business can operate in an efficient manner. 

Experts in the field of requirements management, such as Boehm, Papaccio and Leffingwell, estimate that the costs of not using a rigorous requirements management method are as high as 30 to 50 percent of total development costs for rework.  It costs far more to fix defects found late in the project than to take more time in the design and analysis for the sake of thorough prevention of errors, as depicted in the bar chart below:

 Figure 2:

By using rigorous requirements management early in the development project, we can catch errors early before they cause a huge leveraging effect on rework costs.  Maintaining high quality in the requirements process reduces business risks that are often measured in the cost to develop an information system compared to the money it is expected to save.  Shortcomings in requirements process pose risk in the success, where success means delivering a product that satisfies the user’s functional and quality expectations at the agreed-on cost and delivery dates.  

I doubt that any of us would ask a construction contractor to build a custom $500K house without extensively and rigorously establishing the needs and progressively refining the detailed specifications.  Likewise as in home construction, once the construction is underway, changes to the original plan are costly.  When it comes to building an information system or product, however, many of us have probably seen situations where people tend to gloss over the planning and design analysis phases even when millions of dollars are at stake.  Yet, studies show that errors made during the design phases account for 40 to 60 percent of all defects found in a software system.   The benefits of a well managed, rigorous design process, especially the financial and general business benefits, are too numerous to review here.  Briefly stated, it has often meant the success or the death of many an organization.   

Definition of the Tools and Process

By tools, I mean both the documents and their components, especially the types of requirements.  As suggested in Figure 1 above, different types of requirements form differnt types of documents. As the requirements become more detailed, the documents that contain them become more technical.  This progressive process to refine the requirements is outlined in Figure 1 above and this is what we do to determine how to build our ECommerce application.

The process begins with high level business requirements that are established by management, especially in the case of an internal information system, by marketing and by customers, especially in the case of software products.  As illustrated in Figure 1, once the business requirements of all stakeholders are collected to form an overall vision and scope document, also called an MRD (marketing requirements document), we progressively dig one step deeper into details by developing the use cases that define the user requirements and business rules, the functional and non-functional requirements respectively.  All stakeholders negotiate their requirements in an iterative process, as depicted in Figure 3, below, in which a distinction is made between the requirements development process and the management of how these requirements, once drafted, are refined, categorized and prioritized during the negotiations between the interested parties, the stakeholders who are depicted in Figure 6 below. 

Figure 3

Moving progressively to more detail in our analysis of the ECommerce application, we find that there are three distinct levels of requirements: business requirements, user requirements, and funtional requirements.  You might be interested in Methodology Guidelines for a discussion on how these three main levels of requirements fit into the overall requirements process.

The IEEE defines requirements as the capability needed by a user to solve a problem or achieve an objective.  It is a capability that must be met or possessed by a system to satisfy a contract, standard or specification.   "A requirement is something that the product must do or a quality that the product must have," according to Robterson, referenced in our bibliography.

Business Requirements

As we develop the requirements for the Ecommerce, we will first establish the business requirements; these are high level organizational objectives or the goals of the customer buying the system.  Customers, managers, or the marekting department usually represent the source of the business requirements and these stakeholders are the sponors, the financial supporters. The first step in this semi-sequential process is defining the Vision and Scope of the information management product or system.   

User Requirements

We then compile all the use cases that we determine relevant.  Use cases are composed of user requirements that describe user goals or tasks that the users must be able to perform with the product.  This enables us to design the solution starting with the end-user's perspective.  After all, the purpose of the software solution is to serve the needs of the business, its employees and customers.  Valuable ways to represent user requirements include use cases, scenario descriptions, and event-response tables.  For example, in our ECommerce application, one sub-use case is that the end-user, a buyer, must "enter and store all contact information."  User requirements describe each of the many actions that a user must do in the system to complete his or her overall goals. 

At this level of analysis, we also compile the Business Rules. Business rules are management prescriptions that transcend and guide the day-to-day business decisions. They reflect business policy. The Online Purchasing Application (OPA) must comply with the business rules. We document business rules in one separate document and refer to them from various other documents to avoid redudancy.

Functional Requirements

Moving deeper into technical details, functional requirements specify our ECommerce application's functionality that the development team must build to enable users to accomplish their tasks and thereby achieve the business requirements.  Functional requirements are compiled into a document that is usually called an SRS (software requirements specification).  These are the "shall" statements that detail every function.  For example, "the application shall enable the end-user to collect products into a shopping cart."  The Software Requirements Specification (SRS) document contains the functional requirements.  It is very useful to delineate and define the various types of requirements so that we know how to use them in developing our clear instructions to develop the software solution.

Non-Functional Requirements

"Non-functional requirements are properties, or qualities, that the product must have," according to Robertson.  Non-functional requirements are categorized further as business rules, quality attributes and constraints.   

Business rules

These are corporate policies, government regulations, industry standards, accounting practices, and the like.  Business rules are not themselves software requirements because they arise from outside the system.  Yet, they often dictate that the system must contain functionality to comply with the pertinent rules.  They may also restrict who can perform certain use cases.  For example, in our Ecommerce application, an end-user, the online shopper, will not determine the shipping charge.  The business rule determines what the shipping charges are for an order based, for example, on the weight and urgency of delivery.  The online shopper is allowed to merely fill the shopping cart and confirm the order while an administrative clerk will periodically modify the shipping charges based on the criteria mentioned above or something similar.  Business rules are often the origin of functional requirements or even of specific quality attributes that are implemented in functionality.  For this reason, we can often trace the origin of certain functional requirements back to a particular business rule. 

Quality attributes

These augment the description of the product’s functionality by describing the product’s characteristics in ways that help the stakeholder understand more about what is to be developed.  For example, in our Ecommerce application, we want the user interface to be self explanatory so that no online buyer will need any training, or even very little online help messages in order to place an order.  We also want to be able to change the colors of the ECommerce application easily in order to implement it at any one of our various customers' websites to make it blend in with a consistent look and feel.  A functional requirement that might result from this non-functional quality attribute is the use of style sheets which enables us to accomplish this need.

Constraints

These are often statements that impose restrictions on the choices available to the developer for design and construction of the product.  For example, in our Ecommerce application, management might indicate that only Microsoft’s SQL server is to be used as the underlying database server for this application or that the application must be built in the .NET environment or that no more than 3,000 online buyers can be logged-on simultaneously. 

Features

In our Ecommerce application, the shopping cart metaphor that we use to collect all items in one order, this serves as an example of a feature.  A feature is a set of logically related functional requirements that provides a capability to the user and enables the satisfaction of a business objective.  Another example of a feature in our Ecommerce application is the set of functions that enable the buyer to use and validate a secured credit card as the means of purchase. 

Requirements Development Process

The basic steps in the requirements process are to collect the requirements from the stakeholders, analyze them, develop them into logical, reference-able specifications, and then validate them with all the stakeholders.  This might sound like a simple linear process.  In practice, these activities are interleaved, incremental, and iterative as shown in Figure 4 below:

Figure 4

 

Figure 5, below, suggests an overview of steps in the requirements process to prepare, develop and to manage the software solution design.  Not strictly sequential, the process begins with the first 7 steps to orient the team and set the definitions and methods to move forward.  Steps 8 through 17 are repeated in order to validate and close any gaps of expectations between the stakeholders.  Once the initial requirements are developed within the scope of the project that is defined in the Vision and Scope document, we must then manage the requirements and how they evolve and change until early prototypes become the software solution. 

Figure 5

For the purposes of our example of Requirements Develop for the ECommerce application, we step through most of this process outlined above in Figure 5.  We produce most of the documents suggested in the above figure. 

The Analyst

Depending on the size of a project, more than one analyst may be needed.  The role of the analyst is to gather, analyze, document, and validate the needs of the project stakeholders.  The analyst serves as the communication conduit through which requirements are explained between the customer community and the software development team.  The analyst plays a pivotal role in collecting and communicating product information, whereas the project manager takes the lead in managing the project.  The analyst’s job is more of a project role than a job title and requires the “right stuff;” he or she must know how to handle all types of people as well as organize, orchestrate and push the requirements process forward.  

Figure 6, below, illustrates some of the main groups of stakeholders with which the analyst works to accomplish several goals such as to gather the requirements, to eliminate ambiguity, to set correct expectations and to accomplish tasks and milestones to move the team to the finish line.    

Figure 6

 

Vision and Scope Document

As discussed above, we begin our analysis of our ECommerce application with  this document.  It collects the business objectives and goals which represent the initial definitions and high level requirements used to set the business purpose and the scope of the software solution.  This single document set the stage and, once agreed on by all stakeholders, it kicks off the requirements development process.  The Vision and Scope document is also called a project charter or a business case.  Software vendor companies often call this document an MRD (marketing requirements document) that goes into more detail about how this software solution, as a product to be sold on the market, will generate revenue and win over competitors. 

Usually the owners of this document are the business managers at the highest levels because the development of a new product represents a large investment in funds and personnel resources, especially in marketing and development.  New product development carries a huge importance in terms of the overall company strategy, its position and future evolution both financially as well as market wise.  At this level, we define clearly the why as well as parts of the what that the programmers have to develop.  From this documentation, everyone in the enterprise can understand why the software solution is needed and learn generally what the programmers must develop.

Use Cases

Although the vision and scope gives us a clear and, hopefully detailed, understanding of the business goals of the software solution, it does not present much information about how it must serve the end-users.  The Use Cases provide the high-level requirements about what the solution must do to enable the end-users to perform their daily work, enable managers to make timely business decisions and generally contribute to increasing efficiencies for the enterprise.  Use Cases represent the starting point of requirements, driven by what the business needs and what the end-users must be able to do with the system as a means to achieve the business goals.  We provide the main Use Cases for our ECommerce application to serve as an example.  At this level, we define clearly the what that the programmers must build as a business solution.  From the Use Case, programmers understand what they must build.

You might be interested in the relatively short white paper, Methodology Guidelines, for a discussion focused mainly on Use Cases as well as on how the Vision and Scope document and the Requirements document fit in with use cases to provide an overview of the requirements process.

Software Requirements Specifications

Finally, we move into the more detailed level of requirements where we form the basis for all project planning, design, and coding.  The SRS forms the foundation for system testing and user documentation.  The SRS describes in detail and as completely as necessary how to design and develop the software solution.  At this level we define the how for the programmers.  Programmers should be able to read the SRS and translate the functional specifications into software code.   In the SRS, we include several diagrams that enable us to analyze our solution from various perspectives. 

The Context Diagram

The Data Flow Diagram

The Entity Relationship Diagram

The State Transition Diagram

The Dialog Map