软件架构与模块化:构建高效系统的关键要素
1. 软件架构概述
软件架构是系统设计的最高层次,为系统的整体组织和运行提供总体规划。如果系统没有文档化的软件架构,那么除了开发人员头脑中的想法外,就没有其他总体规划了。
一个设计良好的软件架构至关重要。许多嵌入式系统在没有文档化架构的情况下创建,虽然从直觉上所有系统都有架构,但很多系统并没有良好的架构。一个糟糕的架构,即缺乏连贯总体规划的架构,往往难以理解、设计、调试和维护,也难以确保正确性。
以下是一些可能表明需要更多精力来定义和记录软件架构的症状:
- 系统没有一张单页的软件架构图,虽然可以有备份图展示细节,但应该有一个适合在一张纸上呈现的高层次描述。
- 没有一个人能够给出软件整体组织的高层次视图,例如,给定白板、马克笔和 15 分钟时间,没有人能画出软件的整体组织图。
- 修改或添加软件容易出错,因为代码库中软件的风格差异很大。这种系统的架构图往往看起来非常混乱。
一个未定义或不充分的架构可能会导致以下问题:
- 由于不一致的架构方法,修改或改进系统困难且成本高昂。
- 高缺陷率。
- 由于系统组织不佳,故障重新注入率高(修复一个 bug 时产生新的 bug)。
- 难以理解系统的整体组织,新人员的学习曲线困难。
- 早期代码磨损,由于频繁更改,软件变得脆弱和混乱,丢弃它比继续维护更具成本效益。
- 如果项目的复杂性没有通过良好的架构方法得到妥善管理,项目可能无法完成。
2. 软件架构的表示
软件架构是以下几个方面的组合:
- 系统的组件:组件可以是对象、单独编译的模