知识卡片
静态演化的五步过程与原子演化操作
内容
软件静态演化是系统停止运行期间的修改更新,即一般意义上的软件修复升级,对应更正性维护、适应性维护、完善性维护三类维护方法。静态演化一般包括五个步骤:软件理解(查阅文档、分析架构、识别系统组成元素及其相互关系、提取系统的抽象表示);需求变更分析(找出新需求与原有需求的差异,静态演化往往由用户需求变化、系统运行出错、运行环境改变引起);演化计划(分析原系统、确定演化范围和成本、选择合适的演化计划);系统重构(根据演化计划对系统重构以适应当前需求);系统测试(对演化后的系统测试,查找错误和不足)——这五步本质上是一个”理解现状→定位差距→规划改动→执行改动→验证结果”的通用问题解决流程,架构演化只是把这个流程套用到了架构这个特定对象上。一次完整的架构演化过程可以看作由一系列”原子演化操作”组合而成——原子演化操作是逻辑语义上粒度最小的架构修改操作(不是物理结构上不可分割,例如增加一个新模块必然牵连模块间依赖关系的增加,但仍被视为单独的原子操作)。不同质量属性关心的原子操作类型不同:与可维护性相关的操作包括增/删模块间依赖、增/删模块间接口、增/删模块、拆分/聚合模块——其中模块依赖关系的修改会从整体上影响架构组织结构,可能改变外部质量属性;拆分聚合模块直接影响软件的内聚度和耦合度,进而影响整体复杂性。与可靠性相关的操作包括增/删消息、增/删交互对象、增/删/改消息片段、增/删用例执行、增/删角色——例如消息的删减会导致交互过程时序复杂度变化、可能引入运行时风险;参与者的增减虽不改变软件结构,却会导致系统动态交互上的变化,影响程序运行时风险。这套”原子操作+质量属性关联”的思路让架构演化第一次有了可以量化追踪的最小分析单元,而不再只是凭经验判断”这次改动大不大”。
参考来源
- 位置:《软件架构理论与实践》第9章《软件架构的演化和维护》"9.2.1 软件架构静态演化"节(源文件:_epub-src/OEBPS/text00073.html)
- 结论依据:原文说明静态演化包括软件理解、需求变更分析、演化计划、系统重构、系统测试五个步骤,并分别给出与可维护性相关("AMD/RMD……AM/RM……SM/AGM")和与可靠性相关("AMS/RMS……AO/RO……AF/RF/CF……AU/RU……AA/RA")的原子演化操作及其影响机制,直接支撑本卡片结论。
- 原始内容:软件的静态演化一般包括如下五个步骤……软件理解:查阅软件文档,分析软件架构,识别系统组成元素及其之间的相互关系,提取系统的抽象表示形式……所谓原子演化操作,是指基于UML模型表示的软件架构,在逻辑语义上粒度最小的架构修改操作。