Jump to content

Requirements analysis: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
"Structural requirements" is syno "Architectural requirements". IEC 62304 §3.3 defines ARCHITECTURE as "organizational structure of a SYSTEM or component".
Tag: section blanking
 
Line 1: Line 1:
{{Multiple issues|
'''Requirements analysis''', in [[software engineering]], is a term used to describe all the tasks that go into the instigation, scoping and definition of a new or altered [[computer system]]. Requirements analysis is an important part of the [[software engineering]] process; whereby business analysts or [[software developer]]s identify the needs or requirements of a client; having identified these requirements they are then in a position to design a solution.
{{more citations needed|date=December 2011}}
{{Prose|date=July 2022}}
}}
{{Use American English|date = March 2019}}
{{Short description|Engineering process}}
{{broader|Requirements engineering}}
[[File:SE Process.jpg|thumb|320px|A [[systems engineering]] perspective on requirements analysis<ref name="SEF01">[http://www.dau.mil/pubscats/PubsCats/SEFGuide%2001-01.pdf ''Systems Engineering Fundamentals''] {{webarchive|url=https://web.archive.org/web/20110722184431/http://www.dau.mil/pubscats/PubsCats/SEFGuide%2001-01.pdf |date=2011-07-22 }} Defense Acquisition University Press, 2001</ref>]]
{{software development process|Core activities}}


In [[systems engineering]] and [[software engineering]], '''requirements analysis''' focuses on the tasks that determine the needs or conditions to meet the new or altered product or project, taking account of the possibly conflicting [[requirement]]s of the various [[Stakeholder (corporate)|stakeholders]], ''analyzing, documenting, validating, and managing'' software or [[system requirements]].<ref>{{cite book|isbn=9780471972082|title=Requirements Engineering: Processes and Techniques|url=https://archive.org/details/requirementsengi1998koto|url-access=registration|last1=Kotonya|first1=Gerald|last2=Sommerville|first2=Ian|year=1998|location=Chichester, UK|publisher=John Wiley and Sons}}</ref>
Requirements analysis is also known under other names:
* ''requirements engineering''
* ''requirements gathering''
* ''requirements capture''
* ''operational concept documenting''
* ''systems analysis''
* ''requirements specification''


Requirements analysis is critical to the success or failure of a systems or [[Software project management|software project]].<ref>{{cite book
During most of the history of software engineering it has been considered to be a relatively easy part of the process. However, in the last decade or so, it has become increasingly recognised as being the most vital part of the process; given that the failure to properly identify requirements makes it virtually impossible for the finished piece of software to meet the needs of the client or be finished on time.
|editor1= Alain Abran |editor2=James W. Moore |editor3=Pierre Bourque |editor4=Robert Dupuis
| title = Guide to the software engineering body of knowledge|url = http://www.swebok.org
|access-date = 2007-02-08|edition=2004 |date=March 2005
| publisher = IEEE Computer Society Press | location = Los Alamitos, CA | isbn = 0-7695-2330-7
| chapter = Chapter 2: Software Requirements | chapter-url = http://www.computer.org/portal/web/swebok/html/ch2
| quote = It is widely acknowledged within the software industry that software engineering projects are ''critically vulnerable when these activities are performed poorly.''
}}</ref> The requirements should be documented, actionable, measurable, testable,{{sfn | Project Management Institute | 2015 | loc=§6.3.2 | p=158}} traceable,{{sfn | Project Management Institute | 2015 | loc=§6.3.2 | p=158}} related to identified business needs or opportunities, and defined to a level of detail sufficient for [[Systems design|system design]].


== The challenge ==
== Overview ==
Conceptually, requirements analysis includes three types of activities:{{Citation needed|date=February 2012}}
Successfully completing a "requirements analysis" task is a challenge. In the first place, it is not easy to identify all the stakeholders, give them all an appropriate form of input, and document all their input in a clear and concise format. And there are [[constraint]]s. The requirements engineer is expected to determine whether or not the new system is:
*[[Requirements elicitation|Eliciting requirements]]: (e.g. the project charter or definition), business process documentation, and stakeholder interviews. This is sometimes also called requirements gathering or requirements discovery.
* feasible
*Recording requirements: Requirements may be documented in various forms, usually including a summary list, and may include natural-language documents, [[use case]]s, [[User story|user stories]], [[process specification]]s, and a variety of models including data models.
* schedulable
*Analyzing requirements: determining whether the stated requirements are clear, complete, unduplicated, concise, valid, consistent and unambiguous, and resolving any apparent conflicts. Analyzing can also include sizing requirements.
* affordable
* [[legal]]
* [[ethical]]


Requirements analysis can be a long and tiring process during which many delicate psychological skills are involved. New systems change the environment and relationships between people, so it is important to identify all the stakeholders, take into account all their needs, and ensure they understand the implications of the new systems. Analysts can employ several techniques to elicit the requirements from the customer. These may include the development of scenarios (represented as [[User story|user stories]] in [[Agile software development|agile methods]]), the identification of [[use case]]s, the use of workplace observation or [[ethnography]], holding [[interview]]s, or [[focus group]]s (more aptly named in this context as requirements workshops, or requirements review sessions) and creating requirements lists. [[Prototyping]] may be used to develop an example system that can be demonstrated to stakeholders. Where necessary, the analyst will employ a combination of these methods to establish the exact requirements of the stakeholders, so that a system that meets the business needs is produced.<ref>{{Cite journal |last=Amin |first=Tauqeer ul |last2=Shahzad |first2=Basit |date=2024-09-01 |title=Improving requirements elicitation in large-scale software projects with reduced customer engagement: a proposed cost-effective model |url=https://link.springer.com/article/10.1007/s00766-024-00425-2 |journal=Requirements Engineering |language=en |volume=29 |issue=3 |pages=403–418 |doi=10.1007/s00766-024-00425-2 |issn=1432-010X}}</ref><ref>{{Cite journal |last=Pacheco |first=Carla |last2=García |first2=Ivan |last3=Reyes |first3=Miryam |date=August 2018 |title=Requirements elicitation techniques: a systematic literature review based on the maturity of the techniques |url=https://onlinelibrary.wiley.com/doi/10.1049/iet-sen.2017.0144 |journal=IET Software |language=en |volume=12 |issue=4 |pages=365–378 |doi=10.1049/iet-sen.2017.0144 |issn=1751-8806}}</ref> Requirements quality can be improved through these and other methods:
In the rush of enthusiasm associated with a new project, there is always a temptation to downplay the importance of requirements analysis. However, studies of previous projects reveal that [[cost]]s and technical [[risk]]s can be reduced through rigorous and thorough up-front requirements engineering.
* Visualization. Using tools that promote better understanding of the desired end-product such as visualization and simulation.
* Consistent use of templates. Producing a consistent set of models and templates to document the requirements.
* Documenting [[dependency (project management)|dependencies]]. Documenting dependencies and interrelationships among requirements, as well as any assumptions and congregations.


== Requirements analysis topics ==
===General problems ===
{{unreferenced section|date=October 2009}}
The general difficulties involved with requirements analysis are increasingly well known:
* the right people with adequate experience, technical expertise, and language skills may not be available to lead the requirements engineering activities;
* the initial ideas about what is needed are often incomplete, wildly optimistic, and firmly entrenched in the minds of the people leading the acquisition process; and
* the difficulty of using the complex tools and diverse methods associated with requirements gathering may negate the hoped for benefits of a complete and detailed approach.


===Stakeholder issues===
=== Stakeholder identification ===
See [[Stakeholder analysis]] for a discussion of people or organizations (legal entities such as companies, and standards bodies) that have a valid interest in the system. They may be affected by it either directly or indirectly.
Steve McConnell, in his book Rapid Development, details a number of ways users can inhibit requirements gathering:
* Users don't understand what they want
* Users won't commit to a set of written requirements
* Users insist on new requirements after the cost and schedule have been fixed.
* Communication with users is slow
* Users often do not participate in reviews or are incapable of doing so.
* Users are technically unsophisticated
* Users don't understand the software development process.


A major new emphasis in the 1990s was a focus on the identification of ''stakeholders''. It is increasingly recognized that stakeholders are not limited to the organization employing the analyst. Other stakeholders will include:
===Developer issues===
* anyone who operates the system (normal and maintenance operators)
However, developers are equally at blame; and given they are being paid to supply the solution the stakeholder(s) want they have far less excuse. Typical problems caused by software developers are:
* anyone who benefits from the system (functional, political, financial, and social beneficiaries)
* Software developers and the end user often have different vocabularies. Consequently, they can believe they are in perfect agreement until the finished product is supplied. The duty to bridge that gap belongs to the developers, since that is what they are being paid to do.
* anyone involved in purchasing or procuring the system. In a mass-market product organization, product management, marketing, and sometimes sales act as surrogate consumers (mass-market customers) to guide the development of the product.
* Software developers often try to make the requirements fit an existing system or model, rather than develop a system specific to the needs of the client.
* organizations that regulate aspects of the system (financial, safety, and other regulators)
* Analysis is often carried out by programmers, rather than business analysts. It is often the case that programmers lack the people skills and the real world knowledge to understand a business process properly.
* people or organizations opposed to the system (negative stakeholders; see also [[Misuse case]])
* organizations responsible for systems that interface with the system under design.
* those organizations that [[horizontal integration|integrate horizontally]] with the organization for whom the analyst is designing the system.


=== Joint Requirements Development (JRD) Sessions ===
===Solutions===
Requirements often have cross-functional implications that are unknown to individual stakeholders and often missed or incompletely defined during stakeholder interviews. These cross-functional implications can be elicited by conducting JRD sessions in a controlled environment, facilitated by a trained [[facilitator]] (Business Analyst), wherein stakeholders participate in discussions to elicit requirements, analyze their details, and uncover cross-functional implications. A dedicated scribe should be present to document the discussion, freeing up the Business Analyst to lead the discussion in a direction that generates appropriate requirements that meet the session objective.
One of the solutions to this problem has been recognising that requirements analysis is a specialist field best carried out by experts, i.e. business or system analysts, who could bridge the gap between the business and IT (Information Technology) worlds. While this approach has helped, it has proved difficult to find staff who possess equally good people and technical skills. In addition, the techniques used to analyse requirements have not proved sufficiently effective.


JRD Sessions are analogous to [[Joint application design|Joint Application Design]] Sessions. In the former, the sessions elicit requirements that guide design, whereas the latter elicit the specific design features to be implemented in satisfaction of elicited requirements.
Modern techniques introduced in the [[1990s]] like [[Prototyping]], [[Unified Modelling Language|UML]], [[Use Case|use cases]], and [[Agile software development]] seem to offer more promise.


=== Contract-style requirement lists ===
More recently, a new class of application simulation or application definition tools have entered the market. These tools serve to bridge the communication gap between business users and the IT organization - and also serve to increase innovation and creativity by allowing applications to be 'test marketed' before any code is produced.
One traditional way of documenting requirements has been contract-style requirement lists. In a complex system such requirements lists can run hundreds of pages long.


An appropriate metaphor would be an extremely long shopping list. Such lists are very much out of favor in modern analysis; as they have proved spectacularly unsuccessful at achieving their aims{{citation needed|date=July 2019}}; but they are still seen to this day.
This best of these tools offer:
* electronic whiteboards to sketch application flows and test alternatives
* ability to capture business logic and data needs
* ability to generate high fidelity prototypes that closely imitate the final application
* interactivity
* capability to add contextual requirements and other comments
* ability for remote and distributed users to run and interact with the simulation


==Main Techniques==
====Strengths====
Requirements analysis can be a long and arduous process. The requirements specialists do their work by talking to people, documenting their findings, analyzing the collected information to discover inconsistencies and oversights, and then talking to people again. This process can go on for a while, and may continue throughout the [[new product development|life cycle]] of a system.


* Provides a checklist of requirements.
New systems change the environment and relationships between people, so it is important to identify all the stakeholders, make sure you take into account all their needs; and ensure they understand the implications of the new systems. Frequently, this objective is not met because:
* Provide a contract between the project sponsor(s) and developers.
* For a large system can provide a high level description from which lower-level requirements can be derived.


====Weaknesses====
* there is not enough talking, and important needs are overlooked when the system is implemented; and/or
* there is not enough descriptive feedback, and the users are disappointed by the new system's characteristics.


* Such lists can run to hundreds of pages. They are not intended to serve as a reader-friendly description of the desired application.
To keep all these discussions well organized and efficient, the evolving requirements must be documented.
* Such requirements lists abstract all the requirements and so there is little context. The Business Analyst may include context for requirements in accompanying design documentation.
** This abstraction is not intended to describe how the requirements fit or work together.
** The list may not reflect relationships and dependencies between requirements. While a list does make it easy to prioritize each item, removing one item out of context can render an entire use case or business requirement useless.
** The list does not supplant the need to review requirements carefully with stakeholders to gain a better-shared understanding of the implications for the design of the desired system/application.
* Simply creating a list does not guarantee its completeness. The Business Analyst must make a good faith effort to discover and collect a substantially comprehensive list and rely on stakeholders to point out missing requirements.
* These lists can create a false sense of mutual understanding between the stakeholders and developers; Business Analysts are critical to the translation process.
* It is almost impossible to uncover all the functional requirements before the process of development and testing begins. If these lists are treated as an immutable contract, then requirements that emerge in the Development process may generate a controversial change request.


====Alternative to requirement lists====
Analysts can employ several techniques to get the requirements from the customer. Historically this has included such things as holding [[interview]]s, or holding [[focus group]]s (more aptly named in this context as [[requirements workshop]]s) and creating requirements lists. More modern techniques include [[Prototyping]], and [[Use Case|use cases]]. Hopefully, via a process employing many of these methods, the exact requirements of the stakeholders will be established, so that a system that meets the business needs is produced.


As an alternative to requirement lists, [[Agile software development|Agile Software Development]] uses [[User stories]] to suggest requirements in everyday language.
===Stakeholder interviews===
Stakeholder interviews are obviously necessary in requirement specification. However, in any large system a number of individuals need to be interviewed, which increases the time and cost; but more importantly almost always this reveals major discrepancies with regard to how the existing business process works and how it should work in the future. Also different users might have differing or even contradictory requirements.


=== Measurable goals ===
===Requirement workshops===
{{main|Goal modeling}}
Therefore where systems are complex the usual method is to use requirement workshops, where the analyst brings the main stakeholders in the system together in order to analyse the system and develop the solution.
Best practices take the composed list of requirements merely as clues and repeatedly ask "why?" until the actual business purposes are discovered. Stakeholders and developers can then devise tests to measure what level of each goal has been achieved thus far. Such goals change more slowly than the long list of specific but unmeasured requirements. Once a small set of critical, measured goals has been established, [[Software prototyping#Throwaway prototyping|rapid prototyping]] and short iterative development phases may proceed to deliver actual stakeholder value long before the project is half over.


===Prototypes===
Such workshops are ideally carried out off site, so that the stakeholders are not distracted. They usually have a facilitator to keep the process focused, a scribe to document the discussion, and usually make use of a projector and diagramming software. Often multiple workshops are required to bring the process to a successful conclusion.


{{main|Software prototyping}}
Requirements workshops are considered to be a very useful technique which can save significant time. However, it can be hard to get all the required stakeholders together at one time.


A prototype is a computer program that exhibits a part of the properties of another computer program, allowing users to visualize an application that has not yet been constructed. A popular form of prototype is a [[mockup]], which helps future users and other stakeholders get an idea of what the system will look like. Prototypes make it easier to make design decisions because aspects of the application can be seen and shared before the application is built. Major improvements in communication between users and developers were often seen with the introduction of prototypes. Early views of applications led to fewer changes later and hence reduced overall costs considerably. {{Citation needed|date=December 2011}}
A more general weakness is that some stakeholders do not contribute forcefully enough in workshops and their requirements will not receive the appropriate attention, inevitably producing a limited solution. Additionally, while requirement workshops are an excellent technique for modelling the existing system, they are not so useful for defining the nature of the solution.


Prototypes can be flat diagrams (often referred to as [[Wire-frame model|wireframes]]) or working applications using synthesized functionality. Wireframes are made in a variety of graphic design documents, and often remove all color from the design (i.e. use a greyscale color palette) in instances where the final software is expected to have a [[graphic design]] applied to it. This helps to prevent confusion as to whether the prototype represents the final visual look and feel of the application. {{Citation needed|date=December 2011}}
===Contract style requirement lists===
The most common way of documenting requirements has been contract style requirement lists. In a complex system such requirements lists can run to hundreds of pages. An appropriate metaphor would be an extremely long shopping list. Such lists are very much out of favour in modern analysis; as they have proved spectacularly unsuccessful at achieving their aims; but they are still seen to this day.


===Use cases===
Strengths:
{{main|Use case}}
* Provides a checklist of requirements.
A use case is a structure for documenting the functional requirements for a system, usually involving software, whether that is new or being changed. Each use case provides a set of ''scenarios'' that convey how the system should interact with a human user or another system, to achieve a specific business goal. Use cases typically avoid technical jargon, preferring instead the language of the [[end-user]] or ''[[domain expert]]''. Use cases are often co-authored by requirements engineers and stakeholders.
* Provide a contract between the project sponsor(s) and developers.
* For a large system can provide a high level description.


Use cases are deceptively simple tools for describing the behavior of software or systems. A use case contains a textual description of how users are intended to work with the software or system. Use cases should not describe the internal workings of the system, nor should they explain how that system will be implemented. Instead, they show the steps needed to perform a task without sequential assumptions.
Weaknesses:
* Such lists can run to hundreds of pages. It is virtually impossible to read such documents as a whole and have a coherent understanding of the system.
* Such requirements lists abstract all the requirements and so there is little context
** This abstraction makes it impossible to see how the requirements fit together.
** This abstraction makes it difficult to identify which are the most important requirements.
** This abstraction means that the more people who read such requirements the more different visions of the system you get.
** This abstraction means that it's extremely difficult to be sure that you have the majority of the requirements. Necessarily, these documents speak in generality; but the devil as they say is in the details.
* These lists create a false sense of mutual understanding between the stakeholders and developers.
* These contract style lists give the stakeholders a false sense of security that the developers must achieve certain things. However, due to the nature of these lists, they inevitably miss out crucial requirements which are identified later in the process. Developers use these discovered requirements to renegotiate the terms and conditions in their favour.
* These requirements lists are no help in system design, since they do not lend themselves to application.


===Requirements specification===
===Prototypes===
''Main article'': [[Prototyping]]
{{Main article | Requirements specification}}
{{Expand section|date=February 2018}}
Requirements specification is the synthesis of discovery findings regarding current state business needs and the assessment of these needs to determine, and specify, what is required to meet the needs within the solution scope in focus. Discovery, analysis, and specification move the understanding from a current as-is state to a future to-be state. Requirements specification can cover the full breadth and depth of the future state to be realized, or it could target specific gaps to fill, such as priority software system bugs to fix and enhancements to make. Given that any large business process almost always employs software and data systems and technology, requirements specification is often associated with software system builds, purchases, cloud computing strategies, embedded software in products or devices, or other technologies. The broader definition of requirements specification includes or focuses on any solution strategy or component, such as training, documentation guides, personnel, marketing strategies, equipment, supplies, etc.


== Types of requirements ==
In the mid-1980s, ''prototyping'' became seen as the solution to the requirements analysis problem. Prototypes are mock ups of the screens of an application which allow users to visualize the application that isn't yet constructed. Prototypes help users get an idea of what the system will look like, and make it easier for users to make design decisions without waiting for the system to be built. When they were first introduced the initial results were considered amazing. Major improvements in communication between users and developers were often seen with the introduction of prototypes. Early views of the screens led to fewer changes later and hence reduced overall costs considerably.


[[Requirement]]s are [[Categorization|categorized]] in several ways. The following are common categorizations of requirements that relate to technical management:<ref name="SEF01"/>
However, over the next decade, while proving a useful technique, it did not solve the requirements problem:
* Managers once they see the prototype have a hard time understanding that the finished design will not be produced for some time.
* Designers often feel compelled to use the patched together prototype code in the real system, because they are afraid to 'waste time' starting again.
* Prototypes principally help with design decisions and user interface design. However, they can't tell you what the requirements were originally.
* Designers and end users can focus too much on user interface design and too little on producing a system that serves the business process.


===Business requirements===
Prototypes can be flat diagrams (referred to as 'wireframes') or working applications using synthesized functionality. Wireframes are made in a variety of graphic design documents, and often remove all colour from the software design (ie use a greyscale colour palette) in instances where the final software is expected to have [[graphic design]] applied to it. This helps to prevent confusion over the final visual look and feel of the application.
{{Main article | Business requirements}}
Statements of business level goals, without reference to detailed functionality. These are usually high-level (software and/or hardware) capabilities that are needed to achieve a business outcome.


===Use cases===
===Customer requirements===
Statements of fact and assumptions that define the expectations of the system in terms of mission objectives, environment, constraints, and measures of effectiveness and suitability (MOE/MOS). The customers are those that perform the eight primary functions of systems engineering, with special emphasis on the operator as the key customer. Operational requirements will define the basic need and, at a minimum, answer the questions posed in the following listing:<ref name="SEF01"/>
''Main article'': [[Use case]]
*''Operational distribution or deployment'': Where will the system be used?
*''Mission profile or scenario'': How will the system accomplish its mission objective?
*''Performance and related parameters'': What are the critical system parameters to accomplish the mission?
*''Utilization environments'': How are the various system components to be used?
*''Effectiveness requirements'': How effective or efficient must the system be in performing its mission?
*''Operational life cycle'': How long will the system be in use by the user?
*''Environment'': What environments will the system be expected to operate in an effective manner?


===Architectural requirements===
A ''use case'' is a technique for capturing the potential requirements of a new system or software change. Each use case provides one or more ''scenarios'' that convey how the system should interact with the end user or another system to achieve a specific business goal. Use cases typically avoid technical jargon, preferring instead the language of the [[end user]] or ''[[domain expert]]''. Use cases are often co-authored by software developers and end users.
Architectural requirements explain what has to be done by identifying the necessary [[systems architecture]] of a [[system]].


===Behavioral requirements===
During the [[1990s]] use cases have rapidly become the most common practice for capturing functional requirements. This is especially the case within the object-oriented community where they originated, but their applicability is not restricted to [[object-oriented]] systems, because use cases are not object orientated in nature.
Behavioral requirements explain what has to be done by identifying the necessary [[behavior]] of a system.


===Functional requirements===
Each use case focuses on describing how to achieve a single business goal or task. From a traditional [[software engineering]] perspective a use case describes just one feature of the system. For most software projects this means that multiple, perhaps dozens, of use cases are needed to fully specify the new system. The degree of formality of a particular software project and the stage of the project will influence the level of detail required in each use case.
{{Main article | Functional requirements}}
[[Functional requirement]]s explain what has to be done by identifying the necessary task, action or activity that must be accomplished. Functional requirements analysis will be used as the toplevel functions for functional analysis.<ref name="SEF01"/>


===Non-functional requirements===
A use case defines the interactions between external actors and the system under consideration to accomplish a business goal. Actors are parties outside the system that interact with the system; an actor can be a class of users, roles users can play, or other systems.
{{Main article | Non-functional requirements}}
[[Non-functional requirement]]s are requirements that specify criteria that can be used to judge the operation of a system, rather than specific behaviors.


===Performance requirements===
Use cases treat the system as a "black box", and the interactions with system, including system responses, are as perceived from outside the system. This is deliberate policy, because it simplifies the description of requirements, and avoids the trap of making assumptions about how this functionality will be accomplished.
The extent to which a mission or function must be executed; is generally measured in terms of quantity, quality, coverage, timeliness, or readiness. During requirements analysis, performance (how well does it have to be done) requirements will be interactively developed across all identified functions based on system life cycle factors; and characterized in terms of the degree of certainty in their estimate, the degree of criticality to the system success, and their relationship to other requirements.<ref name="SEF01"/>


===Design requirements===
A use case should:
The "build to", "code to", and "buy to" requirements for products and "how to execute" requirements for processes are expressed in technical data packages and technical manuals.<ref name="SEF01"/>
* describe a business task to serve a business goal
* have no implementation-specific language
* be at the appropriate level of detail
* be short enough to implement by one software developer in single ''release''.


===Derived requirements===
Use cases can be very good for establishing the functional requirements; however they are not suited to capturing non-functional requirements.
Requirements that are implied or transformed from higher-level requirements. For example, a requirement for long-range or high speed may result in a design requirement for low weight.<ref name="SEF01"/>


===Stakeholder identification===
===Allocated requirements===
A requirement is established by dividing or otherwise allocating a high-level requirement into multiple lower-level requirements. Example: A 100-pound item that consists of two subsystems might result in weight requirements of 70 pounds and 30 pounds for the two lower-level items.<ref name="SEF01"/>
A major new emphasis in the [[1990s]] has been a focus on the identification of stakeholders. This first step is now seen as critical. In the early days systems were built for the projects sponsor(s), who were usually management types. Many systems have been designed by managers with little or no contributions from the eventual users; these systems have tended to fail horrendously. So within the field of software engineering, in the [[1970s]] and [[1980s]], the understanding of the term stakeholder widened to first the main users of the system, and then peripheral users. However, in the 1990s the search for stakeholders is taking on a more whole system approach. It is increasingly recognised that stakeholders do not just exist in the organisation the analyst is hired by. Other stakeholders will include:
*those organisations that integrate (or should integrate) horizontally with the organisation the analyst is designing the system for
*any back office systems or organisations
*higher management


Well-known requirements categorization models include [[FURPS]] and FURPS+, developed at [[Hewlett-Packard]].
Successful identification of the stakeholders ensures that analysis will take into account the right elements


==Requirements analysis issues==
==Literature==
*Steve McConnell: ''Rapid development. Taming wild software schedules.'' 14th ed. Microsoft Press, Redmond 2001 ISBN 1-556-15900-5


===Stakeholder issues===
Steve McConnell, in his book ''Rapid Development'', details a number of ways users can inhibit requirements gathering:
* Users do not understand what they want or users do not have a clear idea of their requirements
* Users will not commit to a set of written requirements
* Users insist on new requirements after the cost and schedule have been fixed
* Communication with users is slow
* Users often do not participate in reviews or are incapable of doing so
* Users are technically unsophisticated
* Users do not understand the development process
* Users do not know about present technology
This may lead to the situation where user requirements keep changing even when system or product development has been started.


===Engineer/developer issues===
== See Also ==
Possible problems caused by engineers and developers during requirements analysis are:
*[[Business Process Reengineering]]
* A natural inclination towards writing code can lead to implementation beginning before the requirements analysis is complete, potentially resulting in code changes to meet actual requirements once they are known.
*[[Systems analysis]]
* Technical personnel and end-users may have different vocabularies. Consequently, they may wrongly believe they are in perfect agreement until the finished product is supplied.
*[[Business Analysis]]
* Engineers and developers may try to make the requirements fit an existing system or model, rather than develop a system specific to the needs of the client.
*[[Information technology]]
*[[Use case | Use cases]]
*[[Process Modeling | Process modelling]]
*[[Data modeling | Data modelling]]


===Attempted solutions===
== External links ==
One attempted solution to communications problems has been to employ specialists in business or system analysis.


Techniques introduced in the 1990s like [[Software prototyping|prototyping]], [[Unified Modeling Language]] (UML), [[use case]]s, and [[agile software development]] are also intended as solutions to problems encountered with previous methods.
* [http://www.irise.com/news/resources.htm ''Adopting Requirements Visualization''] (PDF)
** META Group
** Date: 2004
[http://www.irise.com/news/resources.htm ''Application Definition Best Practices''] (PDF)
** Date: 2005
* [http://www-dse.doc.ic.ac.uk/~ban/pubs/sotar.re.pdf ''Requirements Engineering: A Roadmap''] (PDF)
** Authors: B. Nuseibeh, S. Easterbrook
** Abstract: This paper presents an overview of the field of software systems requirements engineering (RE). It describes the main areas of RE practice, and highlights some key open research issues for the future.
** Date: 2000
* [http://www.swebok.org/ ''Guide to the Software Engineering Body of Knowledge'']
** Project Champion: Leonard Tripp
** Executive Editors: Alain Abran, James W. Moore
** Editors: Pierre Bourque, Robert Dupuis
** Abstract: The objectives of the Guide to the Software Engineering Body of Knowledge project are to:
*** characterize the contents of the Software Engineering Body of Knowledge;
*** provide a topical access to the Software Engineering Body of Knowledge;
*** promote a consistent view of software engineering worldwide;
*** clarify the place of, and set the boundary of, software engineering with respect to other disciplines such as computer science, project management, computer engineering and mathematics;
*** provide a foundation for curriculum development and individual certification and licensing material.
** Date: 2001
* [http://www.stc-online.org/cd-rom/1999/slides/MethWrit.pdf ''Writing High Quality Requirement Specifications''] (PDF)
** Author: Dr. Linda Rosenberg (SATC, NASA)
** Abstract: The requirements specification establishes the basis for all of the project's engineering management and assurance functions. If the quality of the requirements specification is poor, it can give rise to risks in all areas of the project. This workshop will educate project managers and software developers in effective development of quality requirement specifications. It will also provide them with ideas and methods they can incorporate immediately into their project plan and find a productive return in documentation evaluation and comprehension.
** Date: 1999


Also, a new class of [[Application Simulation Software|application simulation]] or application definition tools has entered the market. These tools are designed to bridge the communication gap between business users and the IT organization — and also to allow applications to be 'test marketed' before any code is produced. The best of these tools offer:
* [[electronic whiteboard]]s to sketch application flows and test alternatives
* ability to capture business logic and data needs
* ability to generate high-fidelity prototypes that closely imitate the final application
* interactivity
* capability to add contextual requirements and other comments
* ability for remote and distributed users to run and interact with the simulation

==See also==
{{Div col|colwidth=22em}}
* [[Business analysis]]
* [[Business process reengineering]]
* [[Creative brief]]
* [[Data modeling]]
* [[Design brief]]
* [[Functional requirements]]
* [[Information technology]]
* [[Model-driven engineering]]
* [[Model Transformation Language]]
* [[Needs assessment]]
* [[Non-functional requirements]]
* [[Process architecture]]
* [[Process modeling]]
* [[Product fit analysis]]
* [[Requirements elicitation]]
* [[Requirements Engineering Specialist Group]]
* [[Requirements management]]
* [[Requirements Traceability]]
* [[Search Based Software Engineering]]
* [[Software prototyping]]
* [[Software requirements]]
* [[Software Requirements Specification]]
* [[Systems analysis]]
* [[System requirements]]
* [[System requirements specification]]
* [[User-centered design]]
{{Div col end}}

== References ==
{{reflist}}<ref>{{Cite web |last=Anderson |first=Charlotte |date=2022-06-08 |title=Why You Need Stakeholder Identification and Analysis {{!}} Acorn |url=https://acorn.works/enterprise-learning-management/stakeholder-identification |access-date=2024-01-19 |website=Acorn PLMS |language=en-AU}}</ref>

== Bibliography ==
{{refbegin}}
* {{cite book |author1=Brian Berenbach |author2=Daniel Paulish |author3=Juergen Katzmeier |author4=Arnold Rudorfer | year = 2009 | title = Software & Systems Requirements Engineering: In Practice| publisher = McGraw-Hill Professional | location = New York | isbn = 978-0-07-160547-2 | url = http://www.mhprofessional.com}}
* {{cite book | first = David C. | last = Hay | year = 2003 | title = Requirements Analysis: From Business Views to Architecture | edition = 1st | publisher = Prentice Hall | location = Upper Saddle River, NJ | isbn = 0-13-028228-6 | url = https://books.google.com/books?id=Qy6j2PemE8QC}}
* {{cite book | first = Phil | last = Laplante | year = 2009 | title = Requirements Engineering for Software and Systems | edition = 1st | publisher = CRC Press | location = Redmond, WA | isbn = 978-1-4200-6467-4 | url = http://www.crcpress.com/product/isbn/9781420064674}}
* {{cite book | last= Project Management Institute | title=Business Analysis for Practitioners | publisher=Project Management Inst | date=2015-01-01 | isbn=978-1-62825-069-5}}
* {{cite book | first = Steve | last = McConnell | year = 1996 | title = Rapid Development: Taming Wild Software Schedules | edition = 1st | publisher = Microsoft Press | location = Redmond, WA | isbn = 1-55615-900-5 | url = https://archive.org/details/rapiddevelopment00mcco | url-access = registration }}
*{{Cite conference | doi = 10.1145/336512.336523| title = Requirements engineering: a roadmap| work = Proceedings of the conference on the future of Software engineering| conference= [[International Conference on Software Engineering|ICSE]]'00| pages = 35–46| year = 2000| last1 = Nuseibeh | first1 = B. | last2 = Easterbrook | first2 = S. | isbn = 1-58113-253-0| citeseerx = 10.1.1.131.3116| url = http://mcs.open.ac.uk/ban25/papers/sotar.re.pdf}}
* {{cite book |author1=Andrew Stellman |author2=Jennifer Greene |name-list-style=amp | year = 2005 | title = Applied Software Project Management | publisher = O'Reilly Media | location = Cambridge, MA | isbn = 0-596-00948-8 | url = http://www.stellman-greene.com}}
* {{cite book |author1=Karl Wiegers |author2=Joy Beatty |name-list-style=amp | year = 2013 | title = Software Requirements | edition = 3rd | publisher = Microsoft Press | location = Redmond, WA | isbn = 978-0-7356-7966-5 | url = http://www.processimpact.com}}
{{refend}}

== External links ==
{{Commons category|Requirements analysis}}
* Peer-reviewed [http://www.interaction-design.org/encyclopedia/requirements_engineering.html Encyclopedia Entry on Requirements Engineering and Analysis]
* Defense Acquisition University [https://acc.dau.mil/CommunityBrowser.aspx?id=641833 Stakeholder Requirements Definition Process]{{dead link|date=June 2021}}---{{webarchive |url=https://web.archive.org/web/20151223142035/https://acc.dau.mil/CommunityBrowser.aspx?id=641833 |date=December 23, 2015 |title=Stakeholder Requirements Definition Process}}
* [http://everyspec.com/MIL-HDBK/MIL-HDBK-0500-0599/MIL-HDBK-520_20316/ MIL-HDBK 520 Systems Requirements Document Guidance]


{{Computer science}}
{{Soft-eng-stub}}
{{Software engineering}}
{{Systems Engineering}}


{{DEFAULTSORT:Requirements Analysis}}
[[Category:Systems engineering]]
[[Category:Software requirements|*]]
[[Category:Business analysis]]


[[pl:Wymaganie (inżynieria)#Analiza wymagań lub inżynieria wymagań]]
[[th:&#3585;&#3634;&#3619;&#3623;&#3636;&#3648;&#3588;&#3619;&#3634;&#3632;&#3627;&#3660;&#3588;&#3623;&#3634;&#3617;&#3605;&#3657;&#3629;&#3591;&#3585;&#3634;&#3619;]]

Latest revision as of 16:41, 15 November 2024

A systems engineering perspective on requirements analysis[1]

In systems engineering and software engineering, requirements analysis focuses on the tasks that determine the needs or conditions to meet the new or altered product or project, taking account of the possibly conflicting requirements of the various stakeholders, analyzing, documenting, validating, and managing software or system requirements.[2]

Requirements analysis is critical to the success or failure of a systems or software project.[3] The requirements should be documented, actionable, measurable, testable,[4] traceable,[4] related to identified business needs or opportunities, and defined to a level of detail sufficient for system design.

Overview

[edit]

Conceptually, requirements analysis includes three types of activities:[citation needed]

  • Eliciting requirements: (e.g. the project charter or definition), business process documentation, and stakeholder interviews. This is sometimes also called requirements gathering or requirements discovery.
  • Recording requirements: Requirements may be documented in various forms, usually including a summary list, and may include natural-language documents, use cases, user stories, process specifications, and a variety of models including data models.
  • Analyzing requirements: determining whether the stated requirements are clear, complete, unduplicated, concise, valid, consistent and unambiguous, and resolving any apparent conflicts. Analyzing can also include sizing requirements.

Requirements analysis can be a long and tiring process during which many delicate psychological skills are involved. New systems change the environment and relationships between people, so it is important to identify all the stakeholders, take into account all their needs, and ensure they understand the implications of the new systems. Analysts can employ several techniques to elicit the requirements from the customer. These may include the development of scenarios (represented as user stories in agile methods), the identification of use cases, the use of workplace observation or ethnography, holding interviews, or focus groups (more aptly named in this context as requirements workshops, or requirements review sessions) and creating requirements lists. Prototyping may be used to develop an example system that can be demonstrated to stakeholders. Where necessary, the analyst will employ a combination of these methods to establish the exact requirements of the stakeholders, so that a system that meets the business needs is produced.[5][6] Requirements quality can be improved through these and other methods:

  • Visualization. Using tools that promote better understanding of the desired end-product such as visualization and simulation.
  • Consistent use of templates. Producing a consistent set of models and templates to document the requirements.
  • Documenting dependencies. Documenting dependencies and interrelationships among requirements, as well as any assumptions and congregations.

Requirements analysis topics

[edit]

Stakeholder identification

[edit]

See Stakeholder analysis for a discussion of people or organizations (legal entities such as companies, and standards bodies) that have a valid interest in the system. They may be affected by it either directly or indirectly.

A major new emphasis in the 1990s was a focus on the identification of stakeholders. It is increasingly recognized that stakeholders are not limited to the organization employing the analyst. Other stakeholders will include:

  • anyone who operates the system (normal and maintenance operators)
  • anyone who benefits from the system (functional, political, financial, and social beneficiaries)
  • anyone involved in purchasing or procuring the system. In a mass-market product organization, product management, marketing, and sometimes sales act as surrogate consumers (mass-market customers) to guide the development of the product.
  • organizations that regulate aspects of the system (financial, safety, and other regulators)
  • people or organizations opposed to the system (negative stakeholders; see also Misuse case)
  • organizations responsible for systems that interface with the system under design.
  • those organizations that integrate horizontally with the organization for whom the analyst is designing the system.

Joint Requirements Development (JRD) Sessions

[edit]

Requirements often have cross-functional implications that are unknown to individual stakeholders and often missed or incompletely defined during stakeholder interviews. These cross-functional implications can be elicited by conducting JRD sessions in a controlled environment, facilitated by a trained facilitator (Business Analyst), wherein stakeholders participate in discussions to elicit requirements, analyze their details, and uncover cross-functional implications. A dedicated scribe should be present to document the discussion, freeing up the Business Analyst to lead the discussion in a direction that generates appropriate requirements that meet the session objective.

JRD Sessions are analogous to Joint Application Design Sessions. In the former, the sessions elicit requirements that guide design, whereas the latter elicit the specific design features to be implemented in satisfaction of elicited requirements.

Contract-style requirement lists

[edit]

One traditional way of documenting requirements has been contract-style requirement lists. In a complex system such requirements lists can run hundreds of pages long.

An appropriate metaphor would be an extremely long shopping list. Such lists are very much out of favor in modern analysis; as they have proved spectacularly unsuccessful at achieving their aims[citation needed]; but they are still seen to this day.

Strengths

[edit]
  • Provides a checklist of requirements.
  • Provide a contract between the project sponsor(s) and developers.
  • For a large system can provide a high level description from which lower-level requirements can be derived.

Weaknesses

[edit]
  • Such lists can run to hundreds of pages. They are not intended to serve as a reader-friendly description of the desired application.
  • Such requirements lists abstract all the requirements and so there is little context. The Business Analyst may include context for requirements in accompanying design documentation.
    • This abstraction is not intended to describe how the requirements fit or work together.
    • The list may not reflect relationships and dependencies between requirements. While a list does make it easy to prioritize each item, removing one item out of context can render an entire use case or business requirement useless.
    • The list does not supplant the need to review requirements carefully with stakeholders to gain a better-shared understanding of the implications for the design of the desired system/application.
  • Simply creating a list does not guarantee its completeness. The Business Analyst must make a good faith effort to discover and collect a substantially comprehensive list and rely on stakeholders to point out missing requirements.
  • These lists can create a false sense of mutual understanding between the stakeholders and developers; Business Analysts are critical to the translation process.
  • It is almost impossible to uncover all the functional requirements before the process of development and testing begins. If these lists are treated as an immutable contract, then requirements that emerge in the Development process may generate a controversial change request.

Alternative to requirement lists

[edit]

As an alternative to requirement lists, Agile Software Development uses User stories to suggest requirements in everyday language.

Measurable goals

[edit]

Best practices take the composed list of requirements merely as clues and repeatedly ask "why?" until the actual business purposes are discovered. Stakeholders and developers can then devise tests to measure what level of each goal has been achieved thus far. Such goals change more slowly than the long list of specific but unmeasured requirements. Once a small set of critical, measured goals has been established, rapid prototyping and short iterative development phases may proceed to deliver actual stakeholder value long before the project is half over.

Prototypes

[edit]

A prototype is a computer program that exhibits a part of the properties of another computer program, allowing users to visualize an application that has not yet been constructed. A popular form of prototype is a mockup, which helps future users and other stakeholders get an idea of what the system will look like. Prototypes make it easier to make design decisions because aspects of the application can be seen and shared before the application is built. Major improvements in communication between users and developers were often seen with the introduction of prototypes. Early views of applications led to fewer changes later and hence reduced overall costs considerably. [citation needed]

Prototypes can be flat diagrams (often referred to as wireframes) or working applications using synthesized functionality. Wireframes are made in a variety of graphic design documents, and often remove all color from the design (i.e. use a greyscale color palette) in instances where the final software is expected to have a graphic design applied to it. This helps to prevent confusion as to whether the prototype represents the final visual look and feel of the application. [citation needed]

Use cases

[edit]

A use case is a structure for documenting the functional requirements for a system, usually involving software, whether that is new or being changed. Each use case provides a set of scenarios that convey how the system should interact with a human user or another system, to achieve a specific business goal. Use cases typically avoid technical jargon, preferring instead the language of the end-user or domain expert. Use cases are often co-authored by requirements engineers and stakeholders.

Use cases are deceptively simple tools for describing the behavior of software or systems. A use case contains a textual description of how users are intended to work with the software or system. Use cases should not describe the internal workings of the system, nor should they explain how that system will be implemented. Instead, they show the steps needed to perform a task without sequential assumptions.

Requirements specification

[edit]

Requirements specification is the synthesis of discovery findings regarding current state business needs and the assessment of these needs to determine, and specify, what is required to meet the needs within the solution scope in focus. Discovery, analysis, and specification move the understanding from a current as-is state to a future to-be state. Requirements specification can cover the full breadth and depth of the future state to be realized, or it could target specific gaps to fill, such as priority software system bugs to fix and enhancements to make. Given that any large business process almost always employs software and data systems and technology, requirements specification is often associated with software system builds, purchases, cloud computing strategies, embedded software in products or devices, or other technologies. The broader definition of requirements specification includes or focuses on any solution strategy or component, such as training, documentation guides, personnel, marketing strategies, equipment, supplies, etc.

Types of requirements

[edit]

Requirements are categorized in several ways. The following are common categorizations of requirements that relate to technical management:[1]

Business requirements

[edit]

Statements of business level goals, without reference to detailed functionality. These are usually high-level (software and/or hardware) capabilities that are needed to achieve a business outcome.

Customer requirements

[edit]

Statements of fact and assumptions that define the expectations of the system in terms of mission objectives, environment, constraints, and measures of effectiveness and suitability (MOE/MOS). The customers are those that perform the eight primary functions of systems engineering, with special emphasis on the operator as the key customer. Operational requirements will define the basic need and, at a minimum, answer the questions posed in the following listing:[1]

  • Operational distribution or deployment: Where will the system be used?
  • Mission profile or scenario: How will the system accomplish its mission objective?
  • Performance and related parameters: What are the critical system parameters to accomplish the mission?
  • Utilization environments: How are the various system components to be used?
  • Effectiveness requirements: How effective or efficient must the system be in performing its mission?
  • Operational life cycle: How long will the system be in use by the user?
  • Environment: What environments will the system be expected to operate in an effective manner?

Architectural requirements

[edit]

Architectural requirements explain what has to be done by identifying the necessary systems architecture of a system.

Behavioral requirements

[edit]

Behavioral requirements explain what has to be done by identifying the necessary behavior of a system.

Functional requirements

[edit]

Functional requirements explain what has to be done by identifying the necessary task, action or activity that must be accomplished. Functional requirements analysis will be used as the toplevel functions for functional analysis.[1]

Non-functional requirements

[edit]

Non-functional requirements are requirements that specify criteria that can be used to judge the operation of a system, rather than specific behaviors.

Performance requirements

[edit]

The extent to which a mission or function must be executed; is generally measured in terms of quantity, quality, coverage, timeliness, or readiness. During requirements analysis, performance (how well does it have to be done) requirements will be interactively developed across all identified functions based on system life cycle factors; and characterized in terms of the degree of certainty in their estimate, the degree of criticality to the system success, and their relationship to other requirements.[1]

Design requirements

[edit]

The "build to", "code to", and "buy to" requirements for products and "how to execute" requirements for processes are expressed in technical data packages and technical manuals.[1]

Derived requirements

[edit]

Requirements that are implied or transformed from higher-level requirements. For example, a requirement for long-range or high speed may result in a design requirement for low weight.[1]

Allocated requirements

[edit]

A requirement is established by dividing or otherwise allocating a high-level requirement into multiple lower-level requirements. Example: A 100-pound item that consists of two subsystems might result in weight requirements of 70 pounds and 30 pounds for the two lower-level items.[1]

Well-known requirements categorization models include FURPS and FURPS+, developed at Hewlett-Packard.

Requirements analysis issues

[edit]

Stakeholder issues

[edit]

Steve McConnell, in his book Rapid Development, details a number of ways users can inhibit requirements gathering:

  • Users do not understand what they want or users do not have a clear idea of their requirements
  • Users will not commit to a set of written requirements
  • Users insist on new requirements after the cost and schedule have been fixed
  • Communication with users is slow
  • Users often do not participate in reviews or are incapable of doing so
  • Users are technically unsophisticated
  • Users do not understand the development process
  • Users do not know about present technology

This may lead to the situation where user requirements keep changing even when system or product development has been started.

Engineer/developer issues

[edit]

Possible problems caused by engineers and developers during requirements analysis are:

  • A natural inclination towards writing code can lead to implementation beginning before the requirements analysis is complete, potentially resulting in code changes to meet actual requirements once they are known.
  • Technical personnel and end-users may have different vocabularies. Consequently, they may wrongly believe they are in perfect agreement until the finished product is supplied.
  • Engineers and developers may try to make the requirements fit an existing system or model, rather than develop a system specific to the needs of the client.

Attempted solutions

[edit]

One attempted solution to communications problems has been to employ specialists in business or system analysis.

Techniques introduced in the 1990s like prototyping, Unified Modeling Language (UML), use cases, and agile software development are also intended as solutions to problems encountered with previous methods.

Also, a new class of application simulation or application definition tools has entered the market. These tools are designed to bridge the communication gap between business users and the IT organization — and also to allow applications to be 'test marketed' before any code is produced. The best of these tools offer:

  • electronic whiteboards to sketch application flows and test alternatives
  • ability to capture business logic and data needs
  • ability to generate high-fidelity prototypes that closely imitate the final application
  • interactivity
  • capability to add contextual requirements and other comments
  • ability for remote and distributed users to run and interact with the simulation

See also

[edit]

References

[edit]
  1. ^ a b c d e f g h Systems Engineering Fundamentals Archived 2011-07-22 at the Wayback Machine Defense Acquisition University Press, 2001
  2. ^ Kotonya, Gerald; Sommerville, Ian (1998). Requirements Engineering: Processes and Techniques. Chichester, UK: John Wiley and Sons. ISBN 9780471972082.
  3. ^ Alain Abran; James W. Moore; Pierre Bourque; Robert Dupuis, eds. (March 2005). "Chapter 2: Software Requirements". Guide to the software engineering body of knowledge (2004 ed.). Los Alamitos, CA: IEEE Computer Society Press. ISBN 0-7695-2330-7. Retrieved 2007-02-08. It is widely acknowledged within the software industry that software engineering projects are critically vulnerable when these activities are performed poorly.
  4. ^ a b Project Management Institute 2015, p. 158, §6.3.2.
  5. ^ Amin, Tauqeer ul; Shahzad, Basit (2024-09-01). "Improving requirements elicitation in large-scale software projects with reduced customer engagement: a proposed cost-effective model". Requirements Engineering. 29 (3): 403–418. doi:10.1007/s00766-024-00425-2. ISSN 1432-010X.
  6. ^ Pacheco, Carla; García, Ivan; Reyes, Miryam (August 2018). "Requirements elicitation techniques: a systematic literature review based on the maturity of the techniques". IET Software. 12 (4): 365–378. doi:10.1049/iet-sen.2017.0144. ISSN 1751-8806.

[1]

Bibliography

[edit]
[edit]
  1. ^ Anderson, Charlotte (2022-06-08). "Why You Need Stakeholder Identification and Analysis | Acorn". Acorn PLMS. Retrieved 2024-01-19.