The document outlines the principles of requirements engineering, emphasizing the distinction between user and system requirements, as well as functional and non-functional requirements. It details the requirements engineering process, including elicitation, analysis, and validation, and highlights the importance of clear documentation and stakeholder involvement. The document also discusses various techniques for gathering requirements, such as interviews, ethnography, and scenarios, while stressing the need for clarity and consistency in requirement specifications.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
24 views74 pages
Unit 2
The document outlines the principles of requirements engineering, emphasizing the distinction between user and system requirements, as well as functional and non-functional requirements. It details the requirements engineering process, including elicitation, analysis, and validation, and highlights the importance of clear documentation and stakeholder involvement. The document also discusses various techniques for gathering requirements, such as interviews, ethnography, and scenarios, while stressing the need for clarity and consistency in requirement specifications.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 74
Requirements Engineering
Understand the concept of user and system requirements
and why these requirements should be written in different ways. Understand the difference between the functional and Non- Functional requirements. Understand the main requirements engineering activities of elicitation, analysis and validation, and the relationship between them. Understand the requirement engineering management and why it is necessary. The requirements for a system are the descriptions of what the system should do—the services that it provides and the constraints on its operation The process of finding out, analyzing, documenting and checking these services and constraints is called requirements engineering (RE) User requirements are statements, in a natural language plus diagrams, of what services the system is expected to provide to system users and the constraints under which it must operate System requirements are more detailed descriptions of the software system’s functions, services, and operational constraints. The system requirements document (sometimes called a functional specification) should define exactly what is to be implemented. It may be part of the contract between the system buyer and the software developers Different levels of requirements are useful because they communicate information about the system to different types of reader You need to write requirements at different levels of detail because different readers use them in different ways Functional and non-functional requirements Software system requirements are often classified as functional requirements or non-functional requirements Functional requirements These are statements of services the system should provide, how the system should react to particular inputs, and how the system should behave in particular situations. In some cases, the functional requirements may also explicitly state what the system should not do Non-functional requirements These are constraints on the services or functions offered by the system. They include timing constraints, constraints on the development process, and constraints imposed by standards. Non-functional requirements often apply to the system as a whole, rather than individual system features or services The distinction between different types of requirement is not as clear-cut A user requirement concerned with security, such as a statement limiting access to authorized users, may appear to be a non-functional requirement. However, when developed in more detail, this requirement may generate other requirements that are clearly functional, such as the need to include user authentication facilities in the system. Functional requirements The functional requirements for a system describe what the system should do These requirements depend on the type of software being developed, the expected users of the software, and the general approach taken by the organization when writing requirements When expressed as user requirements, functional requirements are usually described in an abstract way that can be understood by system users More specific functional system requirements describe the system functions, its inputs and outputs, exceptions, etc., in detail Example : MHC-PMS 1. A user shall be able to search the appointments lists for all clinics. 2. The system shall generate each day, for each clinic, a list of patients who are expected to attend appointments that day. 3. Each staff member using the system shall be uniquely identified by his or her eight- digit employee number. It is natural for a system developer to interpret an ambiguous requirement in a way that simplifies its implementation In the first requirement, The medical staff member specifying this may expect ‘search’ to mean that, given a patient However, this is not explicit in the requirement. System developers may interpret the requirement in a different way and may implement a search so that the user has to choose a clinic then carry out the search. This obviously will involve more user input and so take longer. In principle, the functional requirements specification of a system should be both complete and consistent. Completeness means that all services required by the user should be defined Consistency means that requirements should not have contradictory definitions Non-functional requirements Non-functional requirements, as the name suggests, are requirements that are not directly concerned with the specific services delivered by the system to its users. They may relate to emergent system properties such as reliability, response time, and store occupancy. They may define constraints on the system implementation such as the capabilities of I/O devices or the data representations used in interfaces with other systems Non-functional requirements, such as performance, security, or availability, usually specify or constrain characteristics of the system as a whole Non-functional requirements are often more critical than individual functional requirements System users can usually find ways to work around a system function that doesn’t really meet their needs. However, failing to meet a non-functional requirement can mean that the whole system is unusable For example, if an aircraft system does not meet its reliability requirements, it will not be certified as safe for operation; if an Non-functional requirements arise through user needs, because of budget constraints, organizational policies, the need for interoperability with other software or hardware systems, or external factors such as safety regulations or privacy legislation Product requirements : These requirements specify or constraints the runtime behavior of the system. Mentcare should be available to all clinics during working hours. Organizational requirements : These requirements are broad system requirements derived from policies and procedures in the customer’s and developer’s organization. Users of the mentcare should be identified by ID cards External requirements : This broad heading covers all requirements that are derived from factors external to the Whenever possible, you should write non- functional requirements quantitatively so that they can be objectively tested The system should be easy to use by medical staff and should be organized in such a way that user errors are minimized
Medical staff shall be able to use all the system functions
after four hours of training. After this training, the average number of errors made by experienced users shall not exceed two per hour of system use Requirement engineering process Requirements elicitation and analysis After an initial feasibility study, the next stage of the requirements engineering process is requirements elicitation and analysis In this activity, software engineers work with customers and system end-users to find out about the application domain, what services the system should provide, the required performance of the system, hardware constraints, and so on. Requirements elicitation and analysis may involve a variety of different kinds of people in an organization The requirements elicitation and analysis process Requirements discovery This is the process of interacting with stakeholders of the system to discover their requirements. Domain requirements from stakeholders and documentation are also discovered during this activity Requirements classification and organization This activity takes the unstructured collection of requirements, groups related requirements, and organizes them into coherent clusters. The most common way of grouping requirements is to use a model of the Requirements prioritization and negotiation Inevitably, when multiple stakeholders are involved, requirements will conflict. This activity is concerned with prioritizing requirements and finding and resolving requirements conflicts through negotiation. Usually, stakeholders have to meet to resolve differences and agree on compromise requirements Requirements documentation The requirements are documented and input into the next round of the spiral Requirements elicitation and analysis is an iterative process with continual feedback from each activity to other activities. The process cycle starts with requirements discovery and ends with the requirements documentation. The analyst’s understanding of the requirements improves with each round of the cycle. The cycle ends when the requirements document is complete Eliciting and understanding requirements from system stakeholders is a difficult process for several reasons: Stakeholders often don’t know what they want from a computer system except in the most general terms; they may find it difficult to articulate what they want the system to do; they may make unrealistic demands because they don’t know what is and isn’t feasible Stakeholders in a system naturally express requirements in their own terms and with implicit knowledge of their own work. Requirements engineers, without experience in the customer’s domain, may not understand these requirements Different stakeholders have different requirements and they may express these in different ways. Requirements engineers have to discover all potential sources of requirements and discover commonalities and conflict. Political factors may influence the requirements of a system. Managers may demand specific system requirements because these will allow them to increase their influence in the organization. The economic and business environment in which the analysis takes place is dynamic. It inevitably changes during the analysis process. The importance of particular Requirements discovery Requirements discovery (sometime called requirements elicitation) is the process of gathering information about the required system and existing systems, and distilling the user and system requirements from this information Sources of information during the requirements discovery phase include documentation, system stakeholders, and specifications of similar systems. You interact with stakeholders through interviews and observation and you may use scenarios and prototypes to help stakeholders understand what the system will be like. Stakeholders range from end-users of a system through managers to external stakeholders such as regulators, who certify the acceptability of the system Interviewing Formal or informal interviews with system stakeholders are part of most requirements engineering processes. In these interviews, the requirements engineering team puts questions to stakeholders about the system that they currently use and the system to be developed. Requirements are derived from the answers to these questions. Interviews may be of two types: Closed interviews, where the stakeholder answers a pre-defined set of questions Open interviews, in which there is no pre- defined agenda. The requirements engineering team explores a range of issues with system stakeholders and hence develop a better understanding of their needs. In practice, interviews with stakeholders are normally a mixture of both of these You may have to obtain the answer to certain questions but these usually lead on to other issues that are discussed in a less structured way. Completely open-ended discussions rarely Interviews are good for getting an overall understanding of what stakeholders do, how they might interact with the new system, and the difficulties that they face with current systems However, interviews are not so helpful in understanding the requirements from the application domain It can be difficult to elicit domain knowledge through interviews for two reasons: All application specialists use terminology and jargon that are specific to a domain. It is impossible for them to discuss domain requirements without using this terminology. They normally use terminology in a precise and subtle way that is easy for requirements engineers to misunderstand. Some domain knowledge is so familiar to stakeholders that they either find it difficult to explain or they think it is so fundamental that it isn’t worth mentioning. For example, for a librarian, it goes without saying that all acquisitions are catalogued before they are added to the library. However, this may not be obvious to the interviewer, and so it isn’t taken into account in the requirements. Interviews are also not an effective technique for eliciting knowledge about organizational requirements and constraints because there are subtle power relationships between the different people in the organization Effective interviewers have two characteristics: They are open-minded, avoid pre- conceived ideas about the requirements, and are willing to listen to stakeholders. If the stakeholder comes up with surprising requirements, then they are willing to change their mind about the system They prompt the interviewee to get Ethnography Software systems do not exist in isolation. They are used in a social and organizational context and software system requirements may be derived or constrained by that context. Satisfying these social and organizational requirements is often critical for the success of the system Ethnography is an observational technique that can be used to understand operational processes and help derive support requirements for these processes.. An analyst immerses himself or herself in the working environment where the system will be used. The day-to-day work is observed and notes made of the actual tasks in which participants are involved. The value of ethnography is that it helps discover implicit system requirements that reflect the actual ways that people work, rather than the formal processes defined by the organization Ethnography is particularly effective for discovering two types of requirements: Requirements that are derived from the way in which people actually work, rather than the way in which process definitions say they ought to work Requirements that are derived from cooperation and awareness of other people’s activities Because of its focus on the end-user, this approach is not always appropriate for discovering organizational or domain requirements. They cannot always identify new features that should be added to a system. Ethnography is not, therefore, a complete approach to elicitation on its own Scenarios People usually find it easier to relate to real-life examples rather than abstract descriptions. They can understand and criticize a scenario of how they might interact with a software system. Requirements engineers can use the information gained from this discussion to formulate the actual system requirements. Each scenario usually covers one or a small number of possible interactions. Different forms of scenarios are developed and they provide different types of information at different levels of detail about the system At its most general, a scenario may include: A description of what the system and users expects when the scenario starts. A description of the normal flow of events in the scenario. A description of what can go wrong and how this is handled Information about other activities that might be going on at the same time A description of the system state when the scenario finishes Requirements specification Requirements specification is the process of writing down the user and system requirements in a requirements document Ideally, the user and system requirements should be clear, unambiguous, easy to understand, complete, and consistent The user requirements for a system should describe the functional and nonfunctional requirements so that they are understandable by system users who don’t have detailed technical knowledge The requirements document should not include details of the system architecture or design If you are writing user requirements, you should not use software jargon, structured notations, or formal notations. You should write user requirements in natural language, with simple tables, forms, and intuitive diagrams System requirements are expanded versions of the user requirements that are used by software engineers as the starting point for the system design. They add detail and explain how the user requirements should be provided by the system Ideally, the system requirements should simply describe the external behavior of the system and its operational constraints. They should not be concerned with how the system should be designed or implemented. However, at the level of detail required to completely specify a complex software system, it is practically impossible to exclude all design information There are several reasons for this: You may have to design an initial architecture of the system to help structure the requirements specification. The system requirements are organized according to the different sub-systems that make up the system In most cases, systems must interoperate with existing systems, which constrain the design and impose requirements on the new system. The use of a specific architecture to satisfy non-functional requirements (such as N-version programming to achieve reliability) The possible notations that could be used for writing system requirements Natural language specification Natural language has been used to write requirements for software since the beginning of software engineering. It is expressive, intuitive, and universal. It is also potentially vague, ambiguous, and its meaning depends on the background of the reader To minimize misunderstandings when writing natural language requirements, follow some simple guidelines: Invent a standard format and ensure that all requirement definitions adhere to that format Use language consistently to distinguish between mandatory and desirable requirements. Mandatory requirements are requirements that the system must support and are usually written using ‘should’. Desirable requirements are not essential and are written using ‘shall’ Use text highlighting (bold, italic, or color) to pick out key parts of the requirement Do not assume that readers understand technical software engineering language Whenever possible, you should try to associate a rationale with each user requirement. The rationale should explain why the requirement has been included Structured specifications Structured natural language is a way of writing system requirements where the freedom of the requirements writer is limited and all requirements are written in a standard way This approach maintains most of the expressiveness and understandability of natural language but ensures that some uniformity is imposed on the specification. Structured language notations use templates to specify system requirements. The specification may use programming language constructs to show alternatives and iteration, and may highlight key elements using shading or different fonts When a standard form is used for specifying functional requirements, the following information should be included: A description of the function or entity being specified. A description of its inputs and where these come from. A description of its outputs and where these go to. Information about the information that is needed for the computation or other entities in the system that are used (the ‘requires’ part). A description of the action to be taken. If a functional approach is used, a pre- Using structured specifications removes some of the problems of natural language specification. Variability in the specification is reduced and requirements are organized more effectively. However, it is still sometimes difficult to write requirements in a clear and unambiguous way, particularly when complex computations (e.g., how to calculate the insulin dose) are to be specified To address this problem, you can add extra information to natural language requirements, for example, by using tables or graphical models of the system. Use cases Use cases are a requirements discovery technique that were first introduced in the Objectory method They have now become a fundamental feature of the unified modeling language In their simplest form, a use case identifies the actors involved in an interaction and names the type of interaction Use cases are documented using a high-level use case diagram. The set of use cases represents all of the possible interactions that will be described in the system requirements. Actors in the process, who may be human or other systems, are represented as stick figures. Each class of interaction is represented as a named ellipse. Lines link the actors with the interaction. Optionally, arrowheads may be added to lines to show how the interaction is initiated The software requirements document The software requirements document (sometimes called the software requirements specification or SRS) is an official statement of what the system developers should implement It should include both the user requirements for a system and a detailed specification of the system requirements Sometimes, the user and system requirements are integrated into a single description The requirements document has a diverse set of users, ranging from the senior management of the organization that is paying for the system to the engineers responsible for developing the software documents Requirements validation Requirements validation is the process of checking that requirements actually define the system that the customer really wants. Requirements validation is important because errors in a requirements document can lead to extensive rework costs when these problems are discovered during development or after the system is in service. During the requirements validation process, different types of checks should be carried out on the requirements in the requirements document Validity checks Consistency checks Completeness checks Realism checks Verifiability There are a number of requirements validation techniques that can be used individually or in conjunction with one another: Requirements reviews The requirements are analyzed systematically by a team of reviewers who check for errors and inconsistencies Prototyping In this approach to validation, an executable model of the system in question is demonstrated to end-users and customers. They can experiment with this model to see if it meets their real needs Test-case generation Requirements change The requirements for large software systems are always changing One reason for this is that these systems are usually developed to address ‘wicked’ problems—problems that cannot be completely defined Because the problem cannot be fully defined, the software requirements are bound to be incomplete During the software process, the stakeholders’ understanding of the problem is constantly changing The system requirements must then also evolve to reflect this changed problem view. Once end-users have experience of a system, they will discover new needs and priorities. There are several reasons why change is inevitable: The business and technical environment of the system always changes after installation. New hardware may be introduced Business priorities may change New legislation and regulations may be introduced
The people who pay for a system and the users of
that system are rarely the same people. System System customers impose requirements because of organizational and budgetary constraints. These may conflict with end-user requirements and, after delivery, new features may have to be added for user support if the system is to meet its goals Large systems usually have a diverse user community,. Different users have different requirements and priorities that may be conflicting or contradictory. The final system requirements are inevitably a compromise between them and, with experience, it is often discovered that the balance of support given to different users has to be changed.
Requirements management is the process
of understanding and controlling changes to system requirements. You need to keep track of individual requirements and maintain links between dependent requirements so that you can assess the impact of requirements changes Requirements management planning Planning is an essential first stage in the requirements management process The planning stage establishes the level of requirements management detail that is required During the requirements management stage, you have to decide on: Requirements identification : Each requirement must be uniquely identified so that it can be cross- referenced with other requirements and used in traceability assessments A change management process : This is the set of activities that assess the impact and cost of changes Traceability policies : These policies define the relationships between each requirement and between the requirements and the system design that should be recorded Tool support : Requirements management involves the processing of large amounts of information about the requirements Example : spreadsheets and simple database Requirements management needs automated support and the software tools for this should be chosen during the planning phase. You need tool support for: Requirements storage The requirements should be maintained in a secure, managed data store that is accessible to everyone involved in the requirements engineering process Change management The process of change management is simplified if active tool support is available Traceability management Tool support for traceability allows related requirements to be discovered Requirements change management Requirements change management should be applied to all proposed changes to a system’s requirements after the requirements document has been approved Change management is essential because you need to decide if the benefits of implementing new requirements are justified by the costs of implementation. There are three principal stages to a change management process: Problem analysis and change specification The process starts with an identified requirements problem or, sometimes, with a specific change proposal. During this stage, the problem or the change proposal is analyzed to check that it is valid. This analysis is fed back to the change requestor who may respond with a more specific requirements change proposal, or decide to withdraw the request. Change analysis and costing The effect of the proposed change is assessed using traceability information and general knowledge of the system requirements. The cost of making the change is estimated both in terms of modifications to the requirements document and, if appropriate, to the system design and implementation. Once this analysis is completed, a decision is made whether or not to proceed with the requirements change. Change implementation The requirements document and, where necessary, the system design and implementation, are modified. You should organize the requirements document so that you can make changes to it without extensive rewriting or reorganization.