Non-Functional Requirements in Software Engineering presents a
systematic and pragmatic approach to `building quality into' software
systems. Systems must exhibit software quality attributes, such as
accuracy, performance, security and modifiability. However, such
non-functional requirements (NFRs) are difficult to address in many
projects, even though there are many techniques to meet functional
requirements in order to provide desired functionality. This is
particularly true since the NFRs for each system typically interact with
each other, have a broad impact on the system and may be subjective. To
enable developers to systematically deal with a system's diverse NFRs,
this book presents the NFR Framework. Structured graphical facilities
are offered for stating NFRs and managing them by refining and
inter-relating NFRs, justifying decisions, and determining their impact.
Since NFRs might not be absolutely achieved, they may simply be
satisfied sufficiently (`satisficed'). To reflect this, NFRs are
represented as `softgoals', whose interdependencies, such as tradeoffs
and synergy, are captured in graphs. The impact of decisions is
qualitatively propagated through the graph to determine how well a
chosen target system satisfices its NFRs. Throughout development,
developers direct the process, using their expertise while being aided
by catalogues of knowledge about NFRs, development techniques and
tradeoffs, which can all be explored, reused and customized.
Non-Functional Requirements in Software Engineering demonstrates the
applicability of the NFR Framework to a variety of NFRs, domains, system
characteristics and application areas. This will help readers apply the
Framework to NFRs and domains of particular interest to them. Detailed
treatments of particular NFRs - accuracy, security and performance
requirements - along with treatments of NFRs for information systems are
presented as specializations of the NFR Framework. Case studies of NFRs
for a variety of information systems include credit card and
administrative systems. The use of the Framework for particular
application areas is illustrated for software architecture as well as
enterprise modelling. Feedback from domain experts in industry and
government provides an initial evaluation of the Framework and some case
studies. Drawing on research results from several theses and refereed
papers, this book's presentation, terminology and graphical notation
have been integrated and illustrated with many figures.
Non-Functional Requirements in Software Engineering is an excellent
resource for software engineering practitioners, researchers and
students.