Maintainability
可维护性指软件在生命周期的维护阶段尽可能“轻松”,而不会成为遗留(legacy)系统。
可维护性关注软件三个设计原则:
- 可操作性(operability):利用监控、流程简化排障、运维难度,把控系统细节
- 简单性(simplicity):设计顶层抽象(abstraction),避免额外复杂度(accidental complexity)
- 可演化性(evolvbility):预留未来更改的空间,也叫可扩展性(extensibility)、可修改性(modifiability) 或 可塑性(plasticity)
Designing Data-Intensive Applications
However, we can and should design software in such a way that it will hopefully minimize pain during maintenance, and thus avoid creating legacy software ourselves. To this end, we will pay particular attention to three design principles for software systems:
- Operability
- Make it easy for operations teams to keep the system running smoothly.
- Simplicity
- Make it easy for new engineers to understand the system, by removing as much complexity as possible from the system. (Note this is not the same as simplicity of the user interface.)
- Evolvability
- Make it easy for engineers to make changes to the system in the future, adapting it for unanticipated use cases as requirements change. Also known as extensibility, modifiability, or plasticity.
As previously with reliability and scalability, there are no easy solutions for achieving these goals. Rather, we will try to think about systems with operability, simplicity, and evolvability in mind.[1]
Martin Kleppmann, Designing Data-Intensive Applications, n.d. p19 ↩︎