Chapter 3
In the previous chapters, we have learned about the basic systems concepts, system life cycle, and major processes that are involved in systems engineering design. No matter what kind of system is being designed, from a small appliance to a complex system like a Boeing 787, they all share the same characteristics; that is, every design is driven by systems requirements. Requirements driven is perhaps the most significant characteristic for systems engineering. In the early years of man-made system history, the importance of the system requirements was often ignored; designers used to start their configuration process with little knowledge of what users really wanted, or started with partial understanding of the system needs, hoping to incorporate more needs during the design process. With many failures, costs, and delays involved in the later changes of system needs, lessons were learned the hard way. We now have realized that without having a complete picture of what users need and formally translating that into systems requirements, it is nearly impossible to design a complex system within its time and budget limits. The requirements are vital to the success of the system design. Although systems requirements were briefly introduced in Chapter 2, we feel that it is necessary to revisit the concept of system requirements here in greater detail for readers to grasp the idea of performing requirements analysis (RA). This chapter is perhaps one of the most important chapters in the whole book, as it lays out the foundations of systems design, so that the system is built effectively and efficiently. System requirements analysis (SA) is perhaps the determining point for systems success; as the old proverbs tell us, “the pen follows where the mind reaches,” or “when conceiving ideas first, writing is easier.” In Chinese culture, it was said that “grinding the ax first will facilitate cutting the firewood.” These proverbs all imply the same meaning; that is, spending effort in early planning should not be neglected, just like RA in system planning.
In this chapter, we will
On completion of this chapter, we expect readers to have become familiarized with the concepts and models that are related to systems requirements, know how to write a good requirement, know how to organize requirements, and perform necessary analysis of the different types of requirements using appropriate models.
In Chapter 2, we defined the system requirements briefly: A system requirement is a necessary attribute or function that a system must have or provide. It is a formal statement to identify a capability, characteristic, or quality that a system must have to provide value and utilities to system users.
From Chapter 2, we learned that system requirements are important for systems design. The requirements are the driving forces for the design activities; requirements define the need to develop the systems, describe the system functionality, and also regulate system engineering efforts for the development of the system. For many years, the role of the systems requirements was not given enough attention; many designers, especially the engineers who were doing the “real” design work, such as hardware developers and software programmers, believed that the actual design work was the real systems engineering process, while the requirements-related work was primarily documentation, and could be accomplished within the design work. Not enough attention was given to the requirements-related efforts, including spending the time to capture the complete set of requirements, understanding and organizing the requirements, and resolving and trading off conflicting requirements. For simple systems with small numbers of requirements involved, the role of RA might not be as critical as in complex system design. But, for a complex system design that involves hundreds or thousands of requirements, we cannot expect these requirements to come to us naturally as we carry out the design work. There are often misconceptions about “stated” requirements and “real” requirements. Stated requirements are provided by systems customers; for example, via commonly used requests for proposals (RFP) and statements of work (SOW). These requirements are usually stated in the customer’s language and at a very high and abstract level. The real systems requirements, which are stated in precise designer language, define the systems functionality and utility. These are the requirements that drive the system design activities. There are often huge differences between user-statement requirements and real system requirements; the real system requirements are based on the original user requirements, but user-statement requirements cannot design the system themselves; usually, they are incomplete, vaguely stated, in users’ naïve language, and, sometimes, controversial in nature. These users’ requirements need to be organized, filtered, translated, expanded, and formatted into a complete, technically sound, and accurate set of system requirements to be implemented. This translation process, often referred to as the requirements analysis (RA), usually occurring in the early design stages, is most critical for understanding the needs of the customer and forming a foundation for proper communication between designers and customers.
It is well understood that a little planning goes a long way and systems requirements analysis is the foundation of system planning. The quality of systems requirements and their analysis are of utmost importance for overall system success; their impact reaches all the way to the end of the system life cycle.
Now we know what a requirement is and why RA is important, and from the previous chapter, we have learned that a system requirement should have the following syntax/format:
System (or subsystem) XYZ + SHALL + verb (action) + desired outcome/performance level + operational/environmental conditions
This is the general format/syntax for a properly written requirement. Although the format might vary for different type of requirements, there is one important characteristic that all system requirements should have; that is, it is a SHALL statement. A SHALL statement is different from should, would, and may statements; it means that it is mandatory and contractually binding for this need; as a requirement, the designed system must comply with it. The other words, such as may or would statements, usually convey options to the designers; the strength of these statements is not as strong as the SHALL statement.
Systems requirements can be categorized into one of the following four major categories:
There are also some other types of categorization; for example, depending on the sources, requirements can be classified as originating requirements (those that come directly from customers), derived requirements (requirements obtained from RA to further refine the originating requirements), and design decision requirements (not explicitly from customers, but from the design team analysis results, necessary for fulfilling customer requirements). Based on the group of people involved, requirements may be classified as end-user requirements, management/business requirements, or maintenance/support requirements.
All these different types of requirements overlap with each other; they describe the system needs from a different perspective, just as the different system models describe the system from different angles. In this text, we will be touching on different types of requirements in different sections for their intended purposes—such as functional requirements for functional analysis and user requirements when talking about human factors—in later chapters.
Requirements are the key to project success, as the quality of the requirements determines the quality of the understanding of the systems need. Writing requirements may look straightforward, but they are a real challenge. Writing good requirements requires engineering knowledge of the system, skills in dealing with humans, and, most of all, the ability to think critically and creatively. As a systems engineer, one should know what a good requirement should look like. Although different types of systems vary a great deal in complexity and in nature, the good news is that no matter what type of system you are working on, the criteria for good requirements are essentially the same. Understanding these criteria not only helps us write good requirements, but also validates any other requirements that other people develop. Generally speaking, a good requirement should have the following characteristics:
With the above characteristics, we can easily know the requirement’s source, understand what users are involved, and develop a clear idea of what we must do to fulfill this requirement and how to verify it afterward. When writing requirements, we should really spend time and effort to make sure all requirements follow these good criteria. The following list provides a general set of guidelines for developing good requirements (Telelogic 2003):
Here are some examples of some good written requirements:
A single pilot shall be able to control the aircraft’s angle of climb with one hand.
The pilot shall be able to view the airspeed in daytime and nighttime conditions.
Requirements are the foundations of system design; developing a complete set of good requirements provides a good starting point for project success. Making a good start can save us a lot of time and effort. Writing requirements is a process of translation from the gathered user needs into a well-structured technical document. During this translation process, it is inevitable that individual experiences will impact the understanding and quality of the requirement statements; as a matter of fact, in the field of requirement engineering, there is no absolute right or wrong for any requirements. By using the characteristics of good requirements and following the guidelines to write them, we can ensure the requirements developed may be easily understood and thus facilitate the design process, translating the requirements to system functions and eventually the final system. In the next section, we will discuss sources of requirements and how requirements are captured and organized before they are analyzed.
Some key points need to be kept in mind for an effective process of requirement capture and collection. These key points are essentially nontrivial for large, complex system design, as there are hundreds and even thousands of requirements involved in the design. These key points include
Good requirements come from good sources. To determine the requirement sources, we first need to identify the stakeholders of the system. As discussed in Chapter 2, there are two major types of system stakeholders: First, there are system users, as mentioned in Chapter 2—mainly systems users/operators and maintainers—these are the direct user groups; besides those who directly interact with the system, there are also people who indirectly influence the system users, such as administrators, supporting personnel, and those who design the systems. Every user group plays a role in overall system requirement development, more or less; they each address a different aspect of the system. For example, end users might primarily concentrate on system functionality and usability; the system designers, on the other hand, might consider the long-term sustainability and environmental friendliness of the system, while the management primarily focus on the profitability and life cycle cost (LCC) of the project. These are all important factors for design project success. To develop a complete picture of the system requirements, we need to reach out to all these stakeholders.
There are many sources from which to gather the requirements. The original requirements come directly from the customers. Government customers, such as the Federal Aviation Administration (FAA) and Department of Defense (DoD), have a formal procedure to initiate system needs for systems developers to start the requirements collection process. An RFP is commonly used for government system acquisition and development.
An RFP is a formal document that an organization issues to invite the potential vendors/developers/contractors to bid for the project.
A typical RFP should include the following information:
When an organization is trying to bid for the project, the RFP is a good source for the overall requirements, but, generally speaking, the requirements in the RFP are usually not sufficient to completely understand the requirements of the proposed system; additional information and sources are usually necessary to collect more requirements that have been omitted from the RFP, such as the relevant standards and codes for similar systems, research findings, published design guidelines, and, of course, surveys of the customers for whom the systems are being designed.
A successful bid leads to the award of the project, and as a common requirement before any work starts and funding is released, a SOW is developed by the organization awarded the contract to submit to the customer. The SOW, once approved by the customer, is a contractually binding document that specifies the relationships and responsibilities of both the contractors and the customers, defining the major milestones and deliverables for the life cycle of system development. A SOW should be developed based on the requirements and structures in the corresponding RFP; usually it includes the following sections:
Requirements extracted from RFPs are usually very high level; they cover the minimum requirements for the system to be acquired or designed. As mentioned above, to obtain the complete set of requirements, we cannot solely rely on the RFP; research is needed to extend the scope of the requirements covered in the RPF to a wider range of sources. These sources, including standards/codes/regulations, published guidelines and data, and even customer surveys, are necessary for us to obtain hidden and implicit requirements, and to acquire a comprehensive understanding of what is really needed for the desired systems. These sources are particularly important for projects that are not RPF initiated. In the following section, we will discuss these various sources that could be used to collect potential requirements, as well as some of the techniques that are commonly used in capturing requirements.
A good review of some of the methods can be found in chapter 7 of Rogers et al. (2011). Readers can refer to their book for a side-by-side comparison of the different data collection methods and their advantages and disadvantages. The list above is by no means an exhaustive set of sources for obtaining systems requirements; they are just the most commonly used in systems engineering design. We have to keep in mind that, as every system is different, so are the requirements sources. A good system designer will not only think critically, but creatively as well. Some requirements will not be salient, and it takes great effort, resources, skills, and time to develop a good set of original requirements. This is the most important phase in the system design, as we have expressed many times in previous chapters; a good planning phase is the key to find the system stakeholders and the most appropriate requirement capture methods. With the complete set of requirements captured, the next step to conduct an in-depth RA to implement the requirements in the design.
Requirements, especially those originating from users, come in different formats and are of different qualities; some are in users’ natural language, others are in a variety of media, video/audio, graphs/drawings, notes, and many more. For the design to implement these requirements, we need to elicit and record them in a strictly defined structure and syntax, as defined in the system requirements definition section. Moreover, many requirements are ad hoc, and do not follow a well-defined arrangement automatically; it is the designers’ responsibility to document, manage, and control these requirements according to engineering design standards, so that they may be further translated into systems functions. This is not to mention that no matter how complete the original requirements are, they still will be far from defining every factor of the system. Many of the unspoken requirements will have been taken for granted by the users; sometimes they are thought as common sense or just so straightforward that they are ignored in the collection of users’ views. Designers need to derive those hidden requirements or sometimes even make decisions or recommendations for those factors of which users have little experience. RA is an important design activity, following the original requirements elicitation, to analyze the captured user requirements, for the requirements to be implemented in the design. Generally speaking, RA usually involves the following major activities:
The purpose of RA is to prepare the requirements for the next step of the system design, which is functional analysis. The results of RA will facilitate the translation from system requirements to system functional structure; they serve as the bridge between users’ language and designers’ technical language. The most commonly used methods used in RA include affinity diagrams, scenarios, use cases, and QFD.
An affinity diagram is a tool to organize a large set of captured requirements into a hierarchical structure based on their relationships. For thousands of years, people have been grouping different things into a limited set of categories, but it was not until the 1960s that the term was first used and a process was developed by the Japanese anthropologist Jiro Kawakita. The affinity diagram is also called the KJ diagram for that reason.
The affinity diagram is a good way to consolidate different ideas into a well-organized structure. It is well suited for RA with large amounts of collected data; especially after the interviews, focus groups, and brainstorming sessions, there are usually many difficulties processing the data collected. Besides the large volumes of data, the data might contain situations that are unknown or unexplored by the design teams; it might present circumstances that are confusing or disorganized. This happens more often when meeting participants with diverse experiences or incomplete knowledge of the area of analysis.
With the affinity-diagram-based analysis method, the design team can address the issues mentioned above by:
The procedure of conducting an affinity diagram analysis is quite straightforward; with all the data collected, all you need are cards or sticky notes, a pen, and a large surface (a board, wall, or table) on which to place the cards.
Figure 3.1 illustrates a sample affinity diagram.
One of the objectives of RA is to understand what users really need and derive a complete picture from the lists of requirements, describing how the system will be used when it is built from the users’ perspective. It is desirable to tell a complete story, especially for the verification of the system requirements with users, so that they may gain an impression how the system will fulfill their needs, without needing to understand the technical background. There are different ways to describe the systems; among those, scenarios and use cases are the most commonly used tools. Especially for software-related systems, use cases are almost a standard design method (as in Unified Modeling Language (UML) for software engineering). Scenarios and use cases are not mutually exclusive; they are often used in combinations to capture different perspectives of the system’s behavior, and are also applied in different stages throughout the system life cycle.
A scenario is an informal description about how the system will be used by users. By understanding and compiling the requirements collected, system designers develop scenarios to tell a story about user task activities and systems functions, to explore and discuss any potential issues with the intended use of the system described. A scenario is usually written in plain narrative language, providing a natural way for system users and stakeholders to understand how the system will fulfill their needs. The focus of the scenario is user tasks and system responses, together with information necessary to describe the tasks, including environmental conditions, context, and any technological support information.
The scenario provides a natural way for explaining to the stakeholders what will be designed and how the systems will be used, facilitating communication between the users and designers, providing a good starting point for users to understand, and exploring the intended functions, context, and constraints, identifying any missed requirements and misunderstandings between the users and designers.
The procedure to develop a scenario is quite straightforward; it requires the designers to understand the requirements and the existing behaviors involved for such a system. Based on their understanding, designers describe a story of the system usage from the users’ standpoint, either in a first-person or a third-person perspective. For example, the following scenario is developed to illustrate the start-up of a hybrid vehicle:
Roger gets into his vehicle, he first puts in his car key and starts the vehicle, and the seat configures itself to Roger’s preset position. Roger then enters his trip information from home to his workplace into the dashboard menu; the onboard computer accepts this input, and provides information about the GPS route, traffic and weather information, and the estimated time of arrival. Roger presses “accept” regarding this recommended route and starts backing his car out of the garage, and then starts driving.
Note that, in the above example, all the verbs have been italicized; as we mentioned earlier, the scenario provides a starting point for requirements to be analyzed, and, eventually, system requirements need to be translated into functions and functional structure. There is a big gap between the requirements and functions, as they are stated in different formats; requirements are general, stated in natural language, while functions are more technical and very system dependent. But when a scenario is portrayed, all the potential system requirements are embedded within it; one can start by looking at all the verbs to derive system functions, as every system function involves some kind of action, which usually starts with a verb.
Another method used commonly in SA is use case analysis. Unlike the scenario, which focuses more on user tasks, use cases concentrate on the interaction between users and systems. Use cases were originally developed in the software engineering industry, in the object-oriented-design community. In UML-based software design, the use case diagram is used to model the dynamic part of the system, to describe the system behavior by defining the relationships between the users (actor) and system/subsystem elements.
As indicated by its name, a use case in system engineering is a sequence or list of action steps, allowing users and systems to interact. A use case is associated with actors; actors are the users of the system, through proper interaction, and they achieve their goals through use case actions. One use case is usually defined for one system function, this function could be a normal use of the system, or a maintenance function for handling system failure.
A use case analysis includes three elements: identification of the actors, a list of the system actions, and the interaction relationship between the actors and system actions; a use case diagram is developed to illustrate these three elements.
There is no standard procedure to develop a use case; it varies with different systems. A commonly used method includes the following steps:
For example, a possible use case for a check account balance for an ATM system looks like this:
An extension for this use case:
A diagram for the “check balance” use case is illustrated in Figure 3.2.
The most common use of the use case diagram is to model the context of the system, the active roles of users, and the translation of the user requirements into system functions. One can easily identify the use cases from the scenarios, and with use cases, the system functional model can be derived, as each use case involves one or more system functions to achieve the particular objective. Besides system functional model development, use case analysis also provides a starting point for deriving requirements for system interface design, as use case specifies the boundary between the users (actors) and the system itself. For more information, please refer to Booch et al. (2005). for a more in-depth introduction to UML design methodology, including use case analysis.
One important aspect of SA is to translate users’ requirements into quantitative technical performance measures (TPMs). Since all requirements are not equally important for the system, it is critical to prioritize the requirements, ranking them in order, so that the most important features are given more attention. An excellent tool to aid in the establishment and prioritization of the TPMs that relate to requirements is quality function deployment (QFD). QFD originated in Japan and was first introduced at the Kobe shipyards of Mitsubishi Heavy Industries in 1972 (Shillito, 1994). The need for QFD was driven by two related objectives (Revelle et al. 1998). These objectives started with the users (or customers) of a product and ended with its producers. The two objectives of QFD are
QFD is an interdisciplinary team process to plan and design new or improved products or services in a way that (Shillito, 1994)
There are three basic structural techniques used to analyze and structure qualitative data in QFD. These tools are used to build a matrix of customer information and product features/measures. The voices of customers, are gathered by observations and interviews, which are then organized to construct a tree diagram.
Then, the same procedure is used to generate product features and measures, also called the voice of the company (VOC). These measures are also arranged into a tree diagram. The two trees are then arrayed at right angles to each other, so that a matrix diagram can be formed in the middle. This matrix provides a structure to systematically evaluate the relationship between the items in both dimensions. The relationship between rows and columns can then be coded by symbols. The intersections of the two trees form a matrix that serves as the basis for constructing the first QFD matrix, termed the house of quality (HOQ).
The HOQ is a structured communications device. Obviously, it is design oriented and serves as a valuable resource for designers. Systems engineers may use it as a way to summarize and convert requirements into design specifications. The HOQ, through customer needs and competitive analysis, helps to identify the critical technical components that require change. The critical issues will then be driven through other matrices to identify the most important aspects, manufacturing operations, and quality control measures to produce a product that fulfills both customer and producer needs within a shorter development cycle time.
Figure 3.3 shows the structure of this matrix.
The next vital step is to complete the relationship matrix of user voices versus design features. The final analysis stage relies heavily on the use of the relationship symbols at the intersections of WHAT and HOW. Specifically, we are looking for direct relationships in which the design features satisfy the user voices. There are four types of symbols used in coding these relationships:
⦿ Very Strong (8)
● Moderate (6)
○ Weak (4)
△ Very weak (2)
Based on the relationship identified, the last step of HOQ analysis is calculation of the weightings for the design features. A commonly used traditional deterministic model uses normalized technical importance (NTI) ratings to identify critical characteristics (Cole, 1990).
NTIi=Individual RatingMaximum Individual Rating (3.1)
Individual Ratingi=n∑j(Relative Importance)ij×(User Rating)j (3.2)
Maximum Individual Rating=Max Individual Ratingii (3.3)
where user rating j denotes the importance of the jth user needs perceived by the user and relative importance ij represents the relative importance of the ith design feature with respect to the jth user need in the HOQ matrix (strong = 8, moderate = 6, weak = 4, very weak = 2).
As shown in the above three equations, the individual rating reflects the overall importance of a design feature after taking into account its relative importance and the user self-stated-importance rate. Critical features can be singled out based on the individual rating obtained. The NTI rating uses the ratios of the individual ratings over the maximum individual ratings to facilitate the identification process.
There are many ways to rate the importance of the requirements; for example, one can simply have users rank all the requirements in order. For a small number of requirements without many levels of structure involved, the simple ranking method might work well; however, if the volume of the requirements becomes large and involves many hierarchical structures (such as user requirements, usability requirements, functional requirements, environmental requirements, etc.), it is difficult for users to rank them at the same time across different categories. It is simply beyond human cognitive capability to do so; we need to rely on some kind of mathematical model to aid the decision-making process. In Chapter 6, some models will be introduced, including the analytical hierarchical process (AHP) model.
Figure 3.4 illustrates how HOQ is used in RA.
Requirements management is one of the most important design activities within project management. A well-implemented requirement management plan can significantly increase the efficiency of the project for almost all the design activities, from functional analysis to design verification, and even facilitate communication among stakeholders. Late changes in design due to poor requirements management can cause significant cost and time delays. If we think requirements are the foundation of the system, then requirements management is the laying out of the foundation into a structure that we need to build our house on (systems functions).
What is requirements management? Generally speaking, requirements management is a process of documenting, categorizing, analyzing, tracing, and prioritizing the system requirements into a structured database, enabling effective communication between requirements and other elements of the system design and controlling changes to requirements. Requirements management is a continuous process throughout the design process; its primary concern is to effectively control information integration related to systems requirements and to maintain the integrity of the requirements for the system life cycle.
The purpose of requirements management is to assure a well-documented requirements body, recording the necessary information pertaining to each requirement, including its sources, origins, types, rationale, and TPM, and establishing the integral hierarchical structure among the requirements, to trace, verify, and meet the needs and expectations of its users, customers, and internal or external stakeholders. As part of the project planning efforts, requirements management begins with the analysis and elicitation of the objectives, the constraints of the systems, and the missions of the organization. After requirements are collected and initially analyzed, requirements management then provides planning for requirements so that they can be translated and verified in the design, standardizes the format, and records the attributes for each requirement, integrating requirements with the organization and documenting the relationship with other information delivered against requirements. For example, a lower-level requirement refines the higher-level requirements, an external file documents the original sources of the requirement, and all requirements are the basis for particular system functions.
There are many requirements management software commercially available; some of the most popular ones include Rational DOORS and Rational RequisitPro by IBM (previously DOORS by Telelogics), and CORE by Vitech Corporation. For a complete list of the requirements management tools available, please refer to the INCOSE requirement management tool survey, sponsored by the INCOSE Tools Database Working Group (TDWG). The list is published and constantly updated on the INCOSE website (http://www.incose.org/productspubs/products/rmsurvey.aspx). All these tools are based on the fundamental features of requirements management, yet offer different focuses on specific systems or aspects. For example, some are optimized for software systems, and some are configured for easier compliance with government contracts and projects, such as the Department of Defense Acquisition Framework (DoDAF). Regardless of the differences between these tools, they are similar in terms of basic capabilities and features for requirements management. Learning to use one tool will make it easier to transfer to another tool at a later time.
Here, we use CORE (version 9) to describe the basic steps of how the requirements are documented and managed. CORE is developed by Vitech Corporation, serving the systems engineering community since 1992. CORE is more than a requirements management tool; it is a fully integrated model-based approach for collaborative system design, designed by systems engineers. According to Vitech, CORE provides a solution to synchronize requirements, analysis, and architecture, to maintain consistency, reduce risks, and to deliver both technical and management insights to the system design. CORE provides a comprehensive method of tracing requirements throughout the design stages and easily enables designers to build different systems models (such as functional or physical models) based on the designers’ need for a better understanding of the dynamics of the system. CORE provides basic simulation features for the system functions, and is capable of producing on-demand documentation, graphs, and charts automatically in various output formats. CORE provides a university version of the software for instructors and students to download and use at no charge. CORE is compatible with the Windows operating system; it applies a typical Windows style of interface with menus and toolbars. It is relatively easy for anyone who has Microsoft Windows experience to learn to use the software.
As mentioned in Chapter 2, CORE uses a system definition language (SDL) to specify the system and its elements. SDL is a formal structured language using standard English to define the system structure. It is closely linked to and highly resembles the systems concepts, as described in Chapter 2. SDL is built on an element-relationship-attribute (ERA) schema, augmented by graphical structures with semantic meanings.
The ERA structure comes naturally for system requirements management and analysis, as most of the management tools are based on a database structure. This has made many other features simpler, such as searching for specific elements by attributes, or producing relationship charts.
In the next section, we will use a set of sample projects to illustrate the application of CORE in requirements management.
Figure 3.5 illustrates a sample requirement element in CORE.
In CORE, requirements can be manually inputted or, if there is an external document, such as a Microsoft Word document, CORE allows the user to extract those requirements directly from the document, so that the user does not need to type them in. This greatly reduces the workload, as many organizations have already collected and documented the original requirements; so, an importing tool in the software is important, not only for the purposes of efficiency, but also, it minimizes the chances of making errors during the transition process. Importing from the original document is a must-have feature for almost all requirements management software. Here, we use CORE to illustrate the steps of extracting the requirements using Document Parser; it is assumed that the features of other software would be similar.
Document Parser is user friendly and efficient for importing requirements directly from a document; it will recognize the statements that contain “shall,” “will,” or “must” from the text and automatically organize them into different requirement elements, which makes it easy for designers to review and edit them. It has also the ability to link to the “Document” elements where the original document is linked, thus facilitating the establishment of traceability among elements. To use “Document Parser”, click on “Tools” from the main menu and then choose “Document Parser”. Load the document file that you want to import; the file will be loaded into the left-hand pane in the Document Parser, as seen in Figure 3.6.
Using Document Parser, the text from the loaded document can be extracted directly into any class of elements. The example in Figure 3.6 illustrates parsing the requirement class from the document; select the “Requirement” class from the class drop-down menu and click on the Document Parser icon from the toolbar to parse the document into requirements. All the requirements recognized are marked and numbered, and other statements are marked as “debris” to separate them from the requirements. These debris statements may contain text that is applicable for refining the requirements. For more details, readers can refer to the CORE user manual (guided tour) and resource library at www.vitechcorp.com.
Figure 3.7 illustrates a possible relationship map for a requirement.
In this chapter, we examined systems requirements in greater detail. As mentioned many times in Chapter 2, requirements are the driving forces of systems design; spending time and effort to develop a good complete set of system requirements can save designers time, cost, and effort in the long run. In this chapter, the syntax of the requirement was defined and the nature of system requirements and their categorization were given in greater detail. Commonly used categories for requirements include functional requirements, performance requirements, constraint requirements, and verification requirements. The characteristics of a good requirement were given to show how to write a good requirement. Generally speaking, a good requirement shall be correct, complete, clear and precise, consistent with other requirements, verifiable, and traceable. Some general guidelines may be utilized for writing requirements; this was followed by several examples of well-written requirements.
In the second section of this chapter, we reviewed the techniques for capturing requirements, including the sources of requirements, the RFP structure, user interviews, surveys and questionnaires, observations, study of documents, standards, critical incident/accident reports, and the study of similar systems. Each technique was reviewed in detail, and their advantages and disadvantages were presented, for us to use the right technique for the right set of requirements.
A large portion of the chapter was devoted to the methods and models for RA. Major activities in RA were reviewed, and three models that are commonly used in RA were presented, including affinity diagram, scenarios, and use cases, and finally QFD. For each of the techniques, examples were given to illustrate the application of the technique in RA.
In the last section of the chapter, requirement management was briefly introduced. Requirements management is essential for the success of the system design, as it efficiently organizes the large volume of requirements, enables an effective and controlled process for requirement changes, and, most importantly, provides traceability within the system life cycle, which makes design efforts more effective and easy to understand. Examples using CORE were given at the end to show how a software tool can be utilized to implement management of the requirements.
3.22.41.235