Abstract :
Summary form only given. Functional requirements refer to how a piece of a system functions or what it does given specific inputs. Nonfunctional requirements (NFRs) refer to such business and engineering needs as performance, reliability, availability, stability, usability, compatibility with interfaces, and security. They are crucial inputs for architects and system designers when performing such tasks as specifying information flows, defining deployment scenarios, choosing software platforms, sizing system configurations, determining required levels of redundancy, and identifying system measurement instrumentation. NFRs that have been clearly and succinctly written contribute to the success of a project by reducing the time required to understand them and to devise and implement procedures for ensuring and verifying that they have been met. By contrast, poorly written NFRs can lead to confusion among developers and architects, resulting in much wasted time, or to the failure and cancellation of a project, especially if the delivered system crashes often or runs too slowly. The focus of this tutorial is quantitative nonfunctional requirements relating to performance, reliability, and availability (PRA). In this tutorial, we shall look at criteria for high-quality PRA NFRs, including algebraic consistency, measurability, testability, and linkage to business and engineering needs. We shall show methods for presenting and managing PRA NFRs that will improve their chances of being accepted by architects, developers, contract negotiators, and purchasers; and of their being successfully implemented and tested. Attendees will be invited to participate in exercises in which they will interpret and draft PRA NFRs and develop procedures for validating them.
Keywords :
software management; software performance evaluation; software reliability; systems analysis; availability requirements; deployment scenarios; functional requirements; nonfunctional requirements; performance management; reliability; sizing system configurations; software platforms; Availability; Best practices; Information security; Performance evaluation; Reliability engineering; Software performance; Software systems; Stability; Usability; Writing;