4.2. Managing Complexity Using Architecture

One of the key skills of any software architect is the management of software complexity. Software complexity is the one of the key characteristics of all nontrivial software systems which must be managed. Successful management of complexity leads to improvement in many system qualities such as understandability, maintainability, and modifiability.

Complexity is an interesting phenomenon because it arises from the aggregation of many small design decisions. For system-level interfaces, the effects of complexity are multiplicative, because multiple parts of an integrated system are affected by each design addition. For example, it may seem very reasonable to add a few attributes and operators to a subsystem ...

Get Software Architect Bootcamp 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.