Building maintainable software starts by formulating some generic concepts of software architecture that can be applied to various software engineering, architecture, and programming language environments.
The introductory chapter provides an overview of the concepts that are related to maintainability, taking into account the standard 25010 (the actualized version of the ISO 9126) that discusses the quality features of a software system.
The book’s major thesis is that maintainability emerges from employing some design principles in a systematic and disciplined way, instead of pursuing a well-selected software development environment or technology, or programming language. The tricky question is why we need to maintain software when software is not a tangible thing and cannot show usage damage like general physical objects. The critical point of maintainability is the efficiency and effectiveness of related activities.
The book defines guidelines for writing program code that can be maintained in a reasonable way. Each chapter discusses one principle. Chapter 2 discusses the guideline of “writing short units,” and the pros and cons of applying this rule. Chapter 3 advises us to “Write Simple Units of Code.” that is translated to a rule of thumb, that is, branch points per unit. Chapter 4, “Write Code Once,” deals with the copying of legacy code results, probably those that are error-prone versus error-free. Chapter 5, “Keep Unit Interfaces Small,” proposes decreasing the complexity of interfaces through limiting parameters. Chapter 6, “Separate Concerns in Modules,” analyzes the concept of loosely coupling applied modules for easier maintenance. Chapter 7, “Couple Architecture Components Loosely,” suggests that the rule of thumb for loose coupling should be enforced for top-level components of the software architecture. Chapter 8, “Keep Architecture Components Balanced,” motivates the use of constraints for elements that can be kept in short-term memory. Chapter 9, “Keep Your Codebase Small,” argues that the size of the code of the system--whatever that means--should be kept small in the sense of one of the size metrics. Chapter 10, “Automate Tests,” supports the idea of using automated test procedures. Chapter 11 encourages programmers to “Write Clean Code.”
Chapter 12 summarizes and emphasizes the applications of the ideas presented in the previous chapters to achieve the objective of maintainability.
The book will be interesting to program designers, supervisors, reviewers, software development auditors, and those involved in maintenance activities in the operation domain as it provides some practical guidelines as well as further ideas for standardization and regulation.
More reviews about this item: Amazon, Goodreads