Chapter 12. Designing for Non-Functional Properties

Engineering software systems so that they satisfy all their myriad functional requirements is difficult. As we have seen so far, software architectures can help in that task through effective compositions of well-defined components and connectors, which have been verified to adhere to the necessary structural, behavioral, and interaction constraints. While satisfying functional requirements is essential, unfortunately it is not sufficient. Software developers must also provide for non-functional properties (NFPs) of software systems.

Definition. A non-functional property (NFP) of a software system is a constraint on the manner in which the system implements and delivers its functionality.

Important NFPs of software systems include security, reliability, availability, efficiency, scalability, and fault-tolerance. For example, in the case of the Lunar Lander system discussed throughout this book, the efficiency NFP may be characterized as the constraint that the system must respond to navigation commands within a specific, very short time span; the reliability NFP may be characterized as the constraint that the system may not be in a specified failure state longer than a specific time span.

Software engineering methodology lays stress on doing the correct things from the very beginning of the software development process in order to curb development and maintenance costs. In particular, the emergence of the study of software architecture ...

Get Software Architecture: Foundations, Theory, and Practice now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.