<< Chapter < Page Chapter >> Page >

Iterative nature of the requirements process

There is general pressure in the software industry for ever shorter development cycles, and this is particularly pronounced in highly competitive market-driven sectors. Moreover, most projects are constrained in some way by their environment, and many are upgrades to, or revisions of, existing software where the architecture is a given. In practice, therefore, it is almost always impractical to implement the requirements process as a linear, deterministic process in which software requirements are elicited from the stakeholders, baselined, allocated, and handed over to the software development team. It is certainly a myth that the requirements for large software projects are ever perfectly understood or perfectly specified.

Instead, requirements typically iterate towards a level of quality and detail which is sufficient to permit design and procurement decisions to be made. In some projects, this may result in the requirements being baselined before all their properties are fully understood. This risks expensive rework if problems emerge late in the software engineering process. However, software engineers are necessarily constrained by project management plans and must therefore take steps to ensure that the “quality” of the requirements is as high as possible given the available resources. They should, for example, make explicit any assumptions which underpin the requirements, as well as any known problems.

In almost all cases, requirements understanding continues to evolve as design and development proceeds. This often leads to the revision of requirements late in the life cycle. Perhaps the most crucial point in understanding requirements engineering is that a significant proportion of the requirements will change. This is sometimes due to errors in the analysis, but it is frequently an inevitable consequence of change in the “environment”: for example, the customer’s operating or business environment, or the market into which software must sell. Whatever the cause, it is important to recognize the inevitability of change and take steps to mitigate its effects. Change has to be managed by ensuring that proposed changes go through a defined review and approval process, and, by applying careful requirements tracing, impact analysis, and software configuration management. Hence, the requirements process is not merely a front-end task in software development, but spans the whole software life cycle. In a typical project, the software requirements activities evolve over time from elicitation to change management.

Change management

Change management is central to the management of requirements. This topic describes the role of change management, the procedures that need to be in place, and the analysis that should be applied to proposed changes. It has strong links to the Software Configuration Management KA.

Requirements attributes

Requirements should consist not only of a specification of what is required, but also of ancillary information which helps manage and interpret the requirements. This should include the various classification dimensions of the requirement and the verification method or acceptance test plan. It may also include additional information such as a summary rationale for each requirement, the source of each requirement, and a change history. The most important requirements attribute, however, is an identifier which allows the requirements to be uniquely and unambiguously identified.

Requirements tracing

Requirements tracing is concerned with recovering the source of requirements and predicting the effects of requirements. Tracing is fundamental to performing impact analysis when requirements change. A requirement should be traceable backwards to the requirements and stakeholders which motivated it (from a software requirement back to the system requirement(s) that it helps satisfy, for example). Conversely, a requirement should be traceable forwards into the requirements and design entities that satisfy it (for example, from a system requirement into the software requirements that have been elaborated from it, and on into the code modules that implement it).

Measuring requirements

As a practical matter, it is typically useful to have some concept of the “volume” of the requirements for a particular software product. This number is useful in evaluating the “size” of a change in requirements, in estimating the cost of a development or maintenance task, or simply for use as the denominator in other measurements.

Requirement measurements

Questions & Answers

how to do documents in the computer
Mark Reply
Which of these are standards for assessing software processes
own Reply
team a found 342 errors during the software engineering process prior to release. team b found 184 errors. what additional measures would have to be made for projects a and b to determine which of the teams eliminated errors more efficiently? what metrics would you propose to help in making the determination? what historical data might be useful?
Kaviya Reply
it's depend upon software testing and debugging
OMKAR
what is coding
Waswa Reply
programming languages is a coding it is also used software development, designing, modeling, etc..
OMKAR
presently I work as a computer engineering what course can I study in any computer institute to enable me promoting myself
Ichaba
AND here lot of course
OMKAR
How to calculate the basic salary of a payroll in Java coding?
Adjei Reply
ত্তচুরভহব
Parvez
hello
Bahadur
hi
Sk
but we have tobe serious in k.dge.. what is the meaning of java coding if you are gineous you will answer me
Eyiba
Quids on software engineering
Enongene Reply
software testing practice
Prerana
definition of software
Baba Reply
define system ,concepts of system and types of system?
Gurmeet Reply
iom
ADNAN
hello
arsh
hari Paulus hai
Hari
System is the way of Execution or a set of principles to do something or any task is called System.
Ayesha
There are many infinite forms and Types of System in different fields as well.
Ayesha
TELL ME ABOUT MAINFRAME?
OMKAR
hi
Md
System is the way of Execution or a set of principles to do something or any task is called System.
Sazed
is very important software engineer or not.
Riyanshu Reply
very important
arsh
2d
Dv
hello
Md
what is software engineering
Ravindra Reply
Software engineering is a detailed study of engineering to the design, development and maintenance of software
arsh
what is salary of software engineer
Akash Reply
it depend on organization's and quality
josephat
I think average salary 80000us dollars per year
arsh
what are naturs of software Engineering
BANDARU Reply
what is the nature of saftware
BANDARU Reply
what is nature of sotfware
BANDARU
hi
khushboo
can anyone help me I need to learn
khushboo
code debug
khushboo
in eclipse java
khushboo
@janak can u suggest
khushboo
what is the salary of software engineer
Akash
per month
Akash
please tell me what is the salary of software engineer per monthe
Akash
HELLO ENGINEERS ✍
OMKAR
which sdlc mode l is suitable for atm banking system
Rakesh Reply
how can I create my own software?
David
HUAWEI.ABBULLAG.45720891
Abdula Reply

Get the best Software engineering course in your pocket!





Source:  OpenStax, Software engineering. OpenStax CNX. Jul 29, 2009 Download for free at http://cnx.org/content/col10790/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Software engineering' conversation and receive update notifications?

Ask