词条 | Requirement | ||||||||||||||||||||
释义 |
In product development and process optimization, a requirement is a singular documented physical or functional need that a particular design, product or process aims to satisfy. It is commonly used in a formal sense in engineering design, including for example in systems engineering, software engineering, or enterprise engineering. It is a broad concept that could speak to any necessary (or sometimes desired) function, attribute, capability, characteristic, or quality of a system for it to have value and utility to a customer, organization, internal user, or other stakeholder. Requirements can come with different levels of specificity; for example, a requirement specification or requirement "spec" (often imprecisely referred to as "the" spec/specs, but there are actually different sorts of specifications) refers to an explicit, highly objective/clear (and often quantitative) requirement (or sometimes, set of requirements) to be satisfied by a material, design, product, or service.[1] A set of requirements is used as inputs into the design stages of product development. Requirements are also an important input into the verification process, since tests should trace back to specific requirements. Requirements show what elements and functions are necessary for the particular project. When iterative methods of software development or agile methods are used, the system requirements are incrementally developed in parallel with design and implementation. With the waterfall model requirements are developes Origins of termThe term requirement has been in use in the software engineering community since at least the 1960s.[2] According to the Business Analysis Body of Knowledge (BABOK),[3] a requirement is:
Product versus process requirementsRequirements can be said to relate to two fields:
Product and process requirements are closely linked; a product requirement could be said to specify the automation required to support a process requirement while a process requirement could be said to specify the activities required to support a product requirement. For example, a maximum development cost requirement (a process requirement) may be imposed to help achieve a maximum sales price requirement (a product requirement); a requirement that the product be maintainable (a product requirement) often is addressed by imposing requirements to follow particular development styles (e.g., object-oriented programming), style-guides, or a review/inspection process (process requirements). Types of requirementsRequirements are typically classified into types produced at different stages in a development progression, with the taxonomy depending on the overall model being used. For example, the following scheme was devised by the International Institute of Business Analysis in their Business Analysis Body of Knowledge[4] (see also FURPS and Types of requirements).
Architectural requirements explain what has to be done by identifying the necessary integration of systems structure and systems behavior, i.e., systems architecture of a system. In software engineering, they are called architecturally significant requirements, which is defined as those requirements that have a measurable impact on a software system’s architecture.[5]
High-level statements of the goals, objectives, or needs of an organization. They usually describe opportunities that an organization wants to realise or problems that they want to solve. Often stated in a business case.
Mid-level statements of the needs of a particular stakeholder or group of stakeholders. They usually describe how someone wants to interact with the intended solution. Often acting as a mid-point between the high-level business requirements and more detailed solution requirements.
Usually detailed statements of capabilities, behaviour, and information that the solution will need. Examples include formatting text, calculating a number, modulating a signal. They are also sometimes known as capabilities.
Usually detailed statements of the conditions under which the solution must remain effective, qualities that the solution must have, or constraints within which it must operate.[6] Examples include: reliability, testability, maintainability, availability. They are also known as characteristics, constraints or the ilities.
Usually detailed statements of capabilities or behaviour required only to enable transition from the current state of the enterprise to the desired future state, but that will thereafter no longer be required. Examples include: recruitment, role changes, education, migration of data from one system to another. Characteristics of good requirementsThe characteristics of good requirements are variously stated by different writers, with each writer generally emphasizing the characteristics most appropriate to their general discussion or the specific technology domain being addressed. However, the following characteristics are generally acknowledged.[7] [8]
There are many more attributes to consider that contribute to the quality of requirements. If requirements are subject to rules of data integrity (for example) then accuracy/correctness and validity/authorization are also worthy attributes. Traceability confirms that the requirement set satisfies the need (no more - and no less than what is required). To the above some add Externally Observable, that is, the requirement specifies a characteristic of the product that is externally observable or experienced by the user. Such advocates argue that requirements that specify internal architecture, design, implementation, or testing decisions are probably constraints, and should be clearly articulated in the Constraints section of the Requirements document. The contrasting view is that this perspective fails on two points. First, the perspective does not recognize that the user experience may be supported by requirements not perceivable by the user. For example, a requirement to present geocoded information to the user may be supported by a requirement for an interface with an external third party business partner. The interface will be imperceptible to the user, though the presentation of information obtained through the interface certainly would not. Second, a constraint limits design alternatives, whereas a requirement specifies design characteristics. To continue the example, a requirement selecting a web service interface is different from a constraint limiting design alternatives to methods compatible with a Single Sign-On architecture. VerificationAll requirements should be verifiable. The most common method is by test. If this is not the case, another verification method should be used instead (e.g. analysis, demonstration, inspection, or review of design). Certain requirements, by their very structure, are not verifiable. These include requirements that say the system must never or always exhibit a particular property. Proper testing of these requirements would require an infinite testing cycle. Such requirements must be rewritten to be verifiable. As stated above all requirements must be verifiable. Non-functional requirements, which are unverifiable at the software level, must still be kept as a documentation of customer intent. However, they may be traced to process requirements that are determined to be a practical way of meeting them. For example, a non-functional requirement to be free from backdoors may be satisfied by replacing it with a process requirement to use pair programming. Other non-functional requirements will trace to other system components and be verified at that level. For example, system reliability is often verified by analysis at the system level. Avionics software with its complicated safety requirements must follow the DO-178B development process. Activities that lead to the derivation of the system or software requirements. Requirements engineering may involve a feasibility study or a conceptual analysis phase of the project and requirements elicitation (gathering, understanding, reviewing, and articulating the needs of the stakeholders) and requirements analysis,[9] analysis (checking for consistency and completeness), specification (documenting the requirements) and validation (making sure the specified requirements are correct).[10][11] Requirements are prone to issues of ambiguity, incompleteness, and inconsistency. Techniques such as rigorous inspection have been shown to help deal with these issues. Ambiguities, incompleteness, and inconsistencies that can be resolved in the requirements phase typically cost orders of magnitude less to correct than when these same issues are found in later stages of product development. Requirements analysis strives to address these issues. Common error types in written requirements (ambiguities, inconsistencies, duplications and omissions) can be tested for automatically using Natural Language Processing and other algorithmic and pattern detection techniques. By highlighting these problems early, software projects can identify and detect a significant proportion of requirements defects before coding starts. There is an engineering trade off to consider between requirements which are too vague, and those which are so detailed that they
Agile approaches evolved as a way of overcoming these problems, by baselining requirements at a high-level, and elaborating detail on a just-in-time or last responsible moment basis. Documenting requirementsRequirements are usually written as a means for communication between the different stakeholders. This means that the requirements should be easy to understand both for normal users and for developers. One common way to document a requirement is stating what the system must do. Example: 'The contractor must deliver the product no later than xyz date.' Other methods include use cases and user stories. Changes in requirementsRequirements generally change with time. Once defined and approved, requirements should fall under change control. For many projects, requirements are altered before the system is complete. This is partly due to the complexity of computer software and the fact that users don't know what they want before they see it. This characteristic of requirements has led to requirements management studies and practices. IssuesCompeting standardsThere are several competing views of what requirements are and how they should be managed and used. Two leading bodies in the industry are the IEEE and the IIBA. Both of these groups have different but similar definitions of what a requirement is. The Guide to the Business Analysis Body of Knowledge® version 2 from IIBA defines a requirement as:
This definition is based on {{Citation needed|date=March 2012}} IEEE 610.12-1990: IEEE Standard Glossary of Software Engineering Terminology.[13] Disputes regarding the necessity and effects of software requirementsMany projects have succeeded with little or no agreement on requirements.[14] Some evidence furthermore indicates that specifying requirements can decrease creativity and design performance [15] Requirements hinder creativity and design because designers become overly preoccupied with provided information.[16][17][18] More generally, some research suggests that software requirements are an illusion created by misrepresenting design decisions as requirements in situations where no real requirements are evident.[19] Meanwhile, most agile software development methodologies question the need for rigorously describing software requirements upfront, which they consider a moving target. Instead, extreme programming for example describes requirements informally using user stories (short summaries fitting on an index card explaining one aspect of what the system should do), and considers it the developer's duty to directly ask the customer for clarification. Agile methodologies attempt to capture requirements in a series of automated acceptance tests. Requirements creepScope creep may occur from requirements moving over time. In Requirements management the alteration of requirements is allowed but if not adequately tracked or preceding steps (business goals then user requirements) are not throttled by additional oversight or handled as a cost and potential program failure, then requirements changes are easy and likely to happen. It is easy for requirement changes to occur faster than developers are able to produce work, and the effort to go backwards as a result. Multiple requirements taxonomiesThere are multiple taxonomies for requirements depending on which framework one is operating under. (For example, the stated standards of IEEE, vice IIBA or U.S. DoD approaches). Differing language and processes in different venues or casual speech can cause confusion and deviation from desired process. Process corruptionsA process being run by humans is subject to human flaws in governance, where convenience or desires or politics may lead to exceptions or outright subversion of the process and deviations from the textbook way the process is supposed to proceed. Examples include:
Within the U.S. Department of Defense process, some historical examples of requirements issues are
See also
References1. ^{{Cite book |title=Form and Style of Standards, ASTM Blue Book|year=2012 |publisher=ASTM International |url=http://www.astm.org/COMMIT/Blue_Book.pdf |accessdate=5 January 2013 }} 2. ^{{cite conference |last= Boehm |first= Barry |title= A view of 20th and 21st century software engineering |booktitle= ICSE '06 Proceedings of the 28th international conference on Software engineering|pages=12–29|ISBN= 1-59593-375-1 |publisher=Association for Computing Machinery, ACM New York, NY, USA |year=2006 |location=University of Southern California, University Park Campus, Los Angeles, CA |url=http://dl.acm.org/citation.cfm?id=1134288 |accessdate=January 2, 2013}} 3. ^{{Cite web|url=http://www.iiba.org/babok-guide/babok-guide-v2/babok-guide-online/chapter-one-introduction/1-3-key-concepts.aspx|title=1.3 Key Concepts - IIBA {{!}} International Institute of Business Analysis|website=www.iiba.org|access-date=2016-09-25}} 4. ^{{cite book |title=A Guide to the Business Analysis Body of Knowledge® (BABOK® Guide) Version 2.0 |url=http://IIBA.org |year=2009 |isbn=978-0-9811292-1-1 |last1=Iiba |last2=Analysis |first2=International Institute of Business }} 5. ^{{Cite journal |doi = 10.1109/MS.2012.174|url = http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6365165|title = Characterizing Architecturally Significant Requirements|journal = IEEE Software|volume = 30|issue = 2|pages = 38–45|year = 2013|last1 = Chen|first1 = Lianping|last2 = Ali Babar|first2 = Muhammad|last3 = Nuseibeh|first3 = Bashar|hdl = 10344/3061}} 6. ^Ralph, P., and Wand, Y. A Proposal for a Formal Definition of the Design Concept. In, Lyytinen, K., Loucopoulos, P., Mylopoulos, J., and Robinson, W., (eds.), Design Requirements Engineering: A Ten-Year Perspective: Springer-Verlag, 2009, pp. 103-136 7. ^{{cite book |last1=Davis |first1=Alan M. |title=Software Requirements: Objects, Functions, and States, Second Edition |year=1993 |publisher=Prentice Hall |isbn=978-0-13-805763-3}} 8. ^{{cite book |last1=IEEE Computer Society |title=IEEE Recommended Practice for Software Requirements Specifications |year=1998 |publisher=Institute of Electrical and Electronics Engineers, Inc |isbn=978-0-7381-0332-7}} 9. ^{{cite book | last=Stellman | first=Andrew | last2=Greene | first2=Jennifer | title=Applied Software Project Management | url=http://www.stellman-greene.com/aspm/ | page=98 | publisher=O'Reilly Media | year=2005 | isbn=978-0-596-00948-9 | deadurl=yes | archiveurl=https://web.archive.org/web/20150209011617/http://www.stellman-greene.com/aspm/ | archivedate=2015-02-09 | df= }} 10. ^{{cite book |last1=Wiegers |first1=Karl E. |title=Software Requirements, Second Edition |year=2003 |publisher=Microsoft Press |isbn=978-0-7356-1879-4}} 11. ^{{cite book |last1=Young |first1=Ralph R. |title=Effective Requirements Practices |year=2001 |publisher=Addison-Wesley |isbn=978-0-201-70912-4}} 12. ^{{cite book | title=A Guide to the Business Analysis Body of Knowledge® (BABOK® Guide) Version 2.0 | url=http://IIBA.org |page=4 | year=2009 | isbn=978-0-9811292-1-1 | last1=Iiba | last2=Analysis | first2=International Institute of Business }} 13. ^{{cite web | url = http://standards.ieee.org/findstds/standard/610.12-1990.html | title = IEEE SA - 610.12-1990 - IEEE Standard Glossary of Software Engineering Terminology }} 14. ^{{cite book|last1=Checkland|first1=Peter|title=Systems Thinking, Systems Practice|date=1999|publisher=Wiley|location=Chichester}} 15. ^{{cite conference | url = https://www.researchgate.net/publication/272793687_Is_Requirements_Engineering_Inherently_Counterproductive | title = Is Requirements Engineering Inherently Counterproductive? | last1=Ralph|first1=Paul|last2=Mohanani|first2=Rahul| date = May 2015 | publisher = IEEE | book-title = Proceedings of the 5th International Workshop on the Twin Peaks of Requirements and Architecture| pages = 20–23 | location = Florence, Italy }} 16. ^{{cite journal|last1=Jansson|first1=D.|last2=Smith|first2=S.|title=Design fixation|journal=Design Studies|date=1991|volume=12|issue=1|pages=3–11}} 17. ^{{cite journal|last1=Purcell|first1=A.|last2=Gero|first2=J.|title=Design and other types of fixation|journal=Design Studies|date=1996|volume=17|issue=4|pages=363–383}} 18. ^{{cite conference | url = https://www.researchgate.net/publication/265416695_Requirements_Fixation | title = Requirements Fixation | last1=Mohanani|first1=Rahul|last2=Ralph|first2=Paul|last3=Shreeve|first3=Ben| date = May 2014 | publisher = IEEE | book-title = Proceedings of the International Conference on Software Engineering | pages = 895–906 | location = Hyderabad, India}} 19. ^{{cite journal|last=Ralph|first=Paul|title=The Illusion of Requirements in Software Development|journal=Requirements Engineering|volume=18|issue=3|pages=293–296|year=2012|doi=10.1007/s00766-012-0161-4|arxiv=1304.0116}} External links{{Wiktionary}}
1 : Software requirements |
||||||||||||||||||||
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。