6. Validation
Validation falls under the general heading of
V&V or verification and validation. Again this is
an area in which there seems to be some
ambiguity about the meaning of the individual
terms. IEEE standard 1012-1998 defines
requirements validation as the process of
evaluating an implemented system to determine
whether it conforms to the specified requirements
[35]. However this definition does not take into
account the fact that the specified requirements
may fall short of capturing the real needs of the
stakeholders. The SWEBOK defines validation as
the process of ensuring that the engineer has
understood the requirements correctly, in other
words “Have we got the right requirements?”,
while verification is defined as the process of
ensuring that the requirements documents
conform to specified standards. Verification
addresses the question of “Have we got the
requirements right?” [5]. Perhaps rather wisely
many organizations simply include all the
activities aimed at ensuring that the software will
function as required under the single umbrella of
V&V.
Validation practices should be built into every
stage of the requirements process in order to
ensure a quality product. Studies [36] have shown
that errors introduced during requirements are the
most costly to repair because of their far reaching
implications into the system. Furthermore, as
depicted in Figure 5, it is generally accepted that
the relative cost to repair a software error
progressively increases at later stages of the
lifecycle model, thereby underlining the
importance of early V&V activities. Typical
methods include reviews, prototypes, models and
acceptance tests [37].
x Reviews are conducted by stakeholders with
the intent of finding errors, conflicts, incorrect
assumptions, ambiguities, and missing
requirements. Formal inspections and reviews
have been shown to be effective in removing
errors early in the process and thereby reducing
the cost and effort that would have been involved
fixing downstream problems [37,38]. It is
important to have customer and user
representatives as well as developers involved in
the review process so that all perspectives can be
considered. Reviews are useful at all major
milestones in the delivery of the requirements
documents, including completion of the system
definition document, system requirements
document, SRS, and prior to all major baselines.
All reviews should result in a list of identified
problems and a set of agreed upon actions. As
reviews require significant time commitments
they can be costly to conduct, and it can be
beneficial to perform pre-review activities to
identify and handle obvious errors in advance.
Furthermore review documents should be
distributed and read in advance of a meeting so
that all members can arrive well prepared.
x Prototyping is useful for validating the
software engineer’s interpretation of the users’
needs. Stakeholders provide more useful feedback
when interacting with a prototype than when they
simply read an SRS. In fact requirements
developed with the help of a prototype tend to be
less volatile than those developed without one.
x Model validation is used to verify the
correctness of the system. Conceptual models can
be formally or informally validated, either by
statically analyzing the model or in the case of
formal specifications by applying formal
reasoning to prove the properties of the system. In
critical systems, it has been found that the activity
of formally modeling the system can in itself serve
to identify errors such as ambiguities and
conflicts, however the cost of creating formal
models can normally only be justified for high
assurance systems.
x Acceptance tests are used to validate that the
completed product fulfills the requirements of the
system. All requirements, including nonfunctional
ones, must therefore be specified in a
way in which they can be validated.
7. Requirements Management
Almost every software product continues to
change and evolve throughout its lifetime. If
change is not managed well, the quality of the
product will deteriorate and future changes will
become increasingly difficult to accommodate.
Change management is concerned with carefully
controlling changes to the requirements, both
during the development process and following the
product’s deployment. Change management is
supported through requirements traceability,
managing the current status of all requirements,
and through placing requirements under
configuration control. Measuring the volatility of
the requirements in a project can provide useful
insights into the overall requirements process.
x Requirements traceability is defined as “the
ability to describe and follow the life of a
requirement, in both a forward and backward
direction (i.e., from its origins, through its
development and specification, to its subsequent
deployment and use, and through periods of
ongoing refinement and iteration in any of these
phases)” [39]. A trace defines a relationship
between two artifacts. For example, a vertical
Stage Relative Repair Cost
Requirements 1-2
Design 5
Coding 10
Unit Test 20
System Test 50
Maintenance 200
Figure 5. Cost to repair software errors at various stages
trace between a lower level requirement and a
higher level one could define a “refines”
relationship, whereas a trace from an executable
method to a requirement could define an
“implements” relationship. Typical traceability
techniques include matrices, hyperlinks, or
traceability tools embedded into requirements
management tools [39,40].
When a change is proposed, the traceability
infrastructure provides the ability to trace back to
the rationale behind impacted requirements so that
current decisions can be informed ones, and to
trace forward to artifacts such as design
documents, code, and test cases in order to more
completely understand how to implement the
change and to identify and mitigate its possible
side effects. Unnecessary traces lead to a
maintenance nightmare, while too little
traceability provides inadequate support for the
change process [41]. Therefore links should be
carefully established to provide necessary support
for change analysis activities.
x Change requests should be managed
systematically. Many requirements management
packages now also incorporate “request for
change” (RFC) features. Once a RFC has been
created, an impact analysis is performed and the
change is prioritized and assessed for in terms of
its benefits, cost, and effort. Any change that is
approved should go through the same rigorous
analysis and quality assurance as the initial
requirements.
x Requirements attributes are an important
part of the change management process. Each
requirement is assigned a unique identifier for
tracking purposes, and auxiliary attributes are used
to record information such as change dates,
rationales, and current status.
8. Conclusions
In this tutorial, we have emphasized a more
traditional approach to requirements engineering
in which the requirements process involves
elicitation, analysis, specification, validation, and
management. Recently there has been a trend
toward adopting more agile development methods
[42]. Among other things the agile philosophy
has challenged the accepted wisdom that the cost
of change increases over time and has adopted a
more flexible approach that embraces the
changing requirements of the customer throughout
the development process. Agile methods
minimize the importance of an upfront
requirements phase, instead focusing upon
delivering executable code to the customer as
early as possible. Although agile methods are
gaining in popularity, Boehm and Turner point out
[43] that they are more suited to smaller, volatile,
and non-critical projects. The more mainstream
agile methods targeted at larger, more complex
systems, or those developed in distributed
environments, adopt many of the requirements
practices described in this tutorial.
For readers interested in learning more about
software requirements, there are numerous books,
several of which have been referenced in this
tutorial [3,4,7,11,12,15] that provide more detailed
discussions on a variety of related topics.
6. Validation Validation falls under the general heading ofV&V or verification and validation. Again this isan area in which there seems to be someambiguity about the meaning of the individualterms. IEEE standard 1012-1998 definesrequirements validation as the process ofevaluating an implemented system to determinewhether it conforms to the specified requirements[35]. However this definition does not take intoaccount the fact that the specified requirementsmay fall short of capturing the real needs of thestakeholders. The SWEBOK defines validation asthe process of ensuring that the engineer hasunderstood the requirements correctly, in otherwords “Have we got the right requirements?”,while verification is defined as the process ofensuring that the requirements documentsconform to specified standards. Verificationaddresses the question of “Have we got therequirements right?” [5]. Perhaps rather wiselymany organizations simply include all theactivities aimed at ensuring that the software willfunction as required under the single umbrella ofV&V. Validation practices should be built into everystage of the requirements process in order toensure a quality product. Studies [36] have shownthat errors introduced during requirements are themost costly to repair because of their far reachingimplications into the system. Furthermore, asdepicted in Figure 5, it is generally accepted thatthe relative cost to repair a software errorprogressively increases at later stages of thelifecycle model, thereby underlining theimportance of early V&V activities. Typicalmethods include reviews, prototypes, models andacceptance tests [37].x Reviews are conducted by stakeholders withthe intent of finding errors, conflicts, incorrectassumptions, ambiguities, and missingrequirements. Formal inspections and reviewshave been shown to be effective in removingerrors early in the process and thereby reducing the cost and effort that would have been involvedfixing downstream problems [37,38]. It isimportant to have customer and userrepresentatives as well as developers involved inthe review process so that all perspectives can beconsidered. Reviews are useful at all majormilestones in the delivery of the requirementsdocuments, including completion of the systemdefinition document, system requirementsdocument, SRS, and prior to all major baselines.All reviews should result in a list of identifiedproblems and a set of agreed upon actions. Asreviews require significant time commitmentsthey can be costly to conduct, and it can bebeneficial to perform pre-review activities toidentify and handle obvious errors in advance.Furthermore review documents should bedistributed and read in advance of a meeting sothat all members can arrive well prepared.x Prototyping is useful for validating thesoftware engineer’s interpretation of the users’needs. Stakeholders provide more useful feedbackwhen interacting with a prototype than when theysimply read an SRS. In fact requirementsdeveloped with the help of a prototype tend to beless volatile than those developed without one.x Model validation is used to verify thecorrectness of the system. Conceptual models canbe formally or informally validated, either bystatically analyzing the model or in the case offormal specifications by applying formalreasoning to prove the properties of the system. Incritical systems, it has been found that the activityof formally modeling the system can in itself serveto identify errors such as ambiguities andconflicts, however the cost of creating formalmodels can normally only be justified for highassurance systems.x Acceptance tests are used to validate that thecompleted product fulfills the requirements of thesystem. All requirements, including nonfunctionalones, must therefore be specified in away in which they can be validated.7. Requirements Management Almost every software product continues tochange and evolve throughout its lifetime. Ifchange is not managed well, the quality of theproduct will deteriorate and future changes willbecome increasingly difficult to accommodate.Change management is concerned with carefullycontrolling changes to the requirements, bothduring the development process and following theproduct’s deployment. Change management issupported through requirements traceability,managing the current status of all requirements,and through placing requirements underconfiguration control. Measuring the volatility ofthe requirements in a project can provide usefulinsights into the overall requirements process.x Requirements traceability is defined as “theability to describe and follow the life of arequirement, in both a forward and backwarddirection (i.e., from its origins, through itsdevelopment and specification, to its subsequentdeployment and use, and through periods ofongoing refinement and iteration in any of thesephases)” [39]. A trace defines a relationshipbetween two artifacts. For example, a verticalStage Relative Repair CostRequirements 1-2Design 5Coding 10Unit Test 20System Test 50Maintenance 200Figure 5. Cost to repair software errors at various stages trace between a lower level requirement and ahigher level one could define a “refines”relationship, whereas a trace from an executablemethod to a requirement could define an“implements” relationship. Typical traceabilitytechniques include matrices, hyperlinks, ortraceability tools embedded into requirementsmanagement tools [39,40].When a change is proposed, the traceabilityinfrastructure provides the ability to trace back tothe rationale behind impacted requirements so thatcurrent decisions can be informed ones, and totrace forward to artifacts such as designdocuments, code, and test cases in order to morecompletely understand how to implement thechange and to identify and mitigate its possibleside effects. Unnecessary traces lead to amaintenance nightmare, while too littletraceability provides inadequate support for thechange process [41]. Therefore links should becarefully established to provide necessary supportfor change analysis activities.x Change requests should be managedsystematically. Many requirements managementpackages now also incorporate “request forchange” (RFC) features. Once a RFC has beencreated, an impact analysis is performed and thechange is prioritized and assessed for in terms ofits benefits, cost, and effort. Any change that isapproved should go through the same rigorousanalysis and quality assurance as the initialrequirements.x Requirements attributes are an importantpart of the change management process. Eachrequirement is assigned a unique identifier fortracking purposes, and auxiliary attributes are usedto record information such as change dates,rationales, and current status.8. Conclusions In this tutorial, we have emphasized a moretraditional approach to requirements engineeringin which the requirements process involveselicitation, analysis, specification, validation, andmanagement. Recently there has been a trendtoward adopting more agile development methods[42]. Among other things the agile philosophy
has challenged the accepted wisdom that the cost
of change increases over time and has adopted a
more flexible approach that embraces the
changing requirements of the customer throughout
the development process. Agile methods
minimize the importance of an upfront
requirements phase, instead focusing upon
delivering executable code to the customer as
early as possible. Although agile methods are
gaining in popularity, Boehm and Turner point out
[43] that they are more suited to smaller, volatile,
and non-critical projects. The more mainstream
agile methods targeted at larger, more complex
systems, or those developed in distributed
environments, adopt many of the requirements
practices described in this tutorial.
For readers interested in learning more about
software requirements, there are numerous books,
several of which have been referenced in this
tutorial [3,4,7,11,12,15] that provide more detailed
discussions on a variety of related topics.
การแปล กรุณารอสักครู่..