首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

系统架构设计师:软件架构的演化和维护--软件架构演化和定义的关系

软件架构一般会经历初始设计、实际使用、修改完善和退化弃用的过程,其中修改完善的过程实际上就是软件架构的演化和维护过程,演化和维护的目的就是为了使软件能够适应环境的变化而进行的纠错性修改和完善性修改等。软件架构的演化和维护过程是一个不断迭代的过程,通过演化和维护,软件架构逐步得到完善,以满足用户需求。本章详细讨论软件架构的演化和维护问题,包括基本概念、演化类型和维护手段,还介绍了一些实际有用的软件架构演化原则。

1.演化的重要性

为了适应用户的新需求、业务环境和运行环境的变化等,软件架构需要不断地进行自身的演化,也就是说软件架构的演化就是为了维持软件架构自身的有用性。本质上讲,软件架构的演化就是软件整体结构的演化,演化过程涵盖软件架构的全生命周期,包括软件架构需求的获取、软件架构建模、软件架构文档、软件架构实现以及软件架构维护等阶段。所以,人们通常说软件架构是演化来的,而不是设计来的。为什么软件架构演化如此重要?

首先,软件架构作为软件系统的骨架支撑着整个软件系统,是软件系统具备诸多好的特性的重要保障。因为最终软件系统的性能、可靠性、安全性和易维护性等是软件系统最重要的质量和功能属性,是决定软件系统是否被用户接受、是否具有市场竞争力、是否具有进一步改造升级的可能性、是否具有较长生命周期的重要因素;软件架构自身的好坏直接影响着它们是否满足用户需求,而软件架构演化正是为了保障这些方面向人们预期的方向发展的重要措施。

其次,软件架构作为软件蓝图为人们宏观管控软件系统的整体复杂性和变化性提供了一条有效途径,而且基于软件架构进行的软件检测和修改成本相对较低,所以要刻画复杂的软件演化,并对演化中的影响效应进行观察和控制,从软件架构演化出发更加合理。软件架构的演化可以更好地保证软件演化的一致性和正确性,而且明显降低软件演化的成本,并且软件架构演化使得软件系统演化更加便捷,这里主要有3个原因。

(1)对系统的软件架构进行的形式化、可视化表示提高了软件的可构造性,便于软件演化。

(2)软件架构设计方案涵盖的整体结构信息、配置信息、约束信息等有助于开发人员充分考虑未来可能出现的演化问题、演化情况和演化环境。

(3)架构设计时对系统组件之间的耦合描述有助于软件系统的动态调整。

2.演化和定义的关系

由于软件架构的定义很多,根据不完全统计已有近百种不同的定义。不同的定义确定了不同的软件架构组成方式和组成规则。同时在这些定义中,一些定义给出的架构又有很多共性的描述。所以,软件架构演化根据这些定义体现了相同面,也体现了不同面。所以,我们在理解软件架构演化时,需要考虑具体的软件架构定义。

例如,如果软件架构定义是 SA={components,connectors,constraints},也就是说,软件架构包括组件(Components)、连接件(Connectors)和约束(Constraints)三大要素,这类软件架构演化主要关注的就是组件、连接件和约束的添加、修改与删除等。

组件是软件架构的基本要素和结构单元,表示系统中主要的计算元素、数据存储以及一些重要模块,当需要消除软件架构存在的缺陷、增加新的功能、适应新的环境时几乎都涉及组件的演化。组件的演化体现在组件中模块的增加、删除或修改。通常模块的增加、删除和修改会产生波及效应,其中增加模块会导致增加新的交五消息,删除模块会导致删除已有交互消息,改变模块会导致改变已有交互消息。

连接件是组件之间的交五关系,大多数情况下组件的演化牵涉到连接件的演化。连接件的演化体现在组件交五消息的增加、删除或改变,它除了伴随模块的改变而改变外,还有一种情况是由于系统内部结构调整导致的人与系统交互流程的改变,即组件之间交五消息的增加、删除或改变。

约束是组件和连接件之间的拓扑关系和配置,它为组件和连接件提供额外数据支撑,可以是架构的约束数据,也可以是架构的参数。约束的演化体现在知识库中仿真数据的增加、删除或改变。无论是组件、连接件还是约束的演化都可能导致一系列的波及效应,从而分为受变更直接影响的组件、连接件、约束,以及受到变更波及的组件、连接件、约束两类变更元素。最终这两类变更元素和不受影响的元素共同组成了演化后的软件架构。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ONvdhxo_3MFcSGcZ1EcKM9_A0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券