一、软件体系结构概念
软件体系结构包括构成系统的设计元素的描述、设计元素之间的交互、设计元素的组合模式以及在这些模式中的约束。
软件体系结构=构件+连接件+约束
构件
构件是具有某种功能的可复用的软件结构单元,表示系统中主要的计算元素和数据存储
连接
连接是构件间建立和维护行为关联与信息传递的途径
连接件
连接件表示构件之间的交互并实现构件之间的连接
一般构件是软件功能设计和实现的承载体
连接件是负责完成构件之间信息交换和行为联系的专用构件
软件体系结构的发展
风格、模式和框架
体系结构风格∶用于描述某一特定应用领域中系统组织的惯用模式,反映了领域中众多系统所共有的结构和语义特性。
设计模式︰描述了软件系统设计过程中常见问题的一些解决方案,通常是从大量的成功实践中总结出来的且被广泛公认的实践和知识。
软件框架︰软件框架是由开发人员定制的应用系统的骨架,是整个或部分系统的可重用设计,由一组抽象构件和构件实例间的交互方式组成。
框架和体系结构的关系
体系结构的呈现形式是一个设计规约,而框架则是“半成品”的软件
体系结构的目的是指导软件系统的开发,而框架的目的是设计复用。
框架和设计模式的关系∶
框架给出的是整个应用的体系结构﹔而设计模式则给出了单一设计问题的解决方案,且可以在不同的应用程序或者框架中进行应用。
举例:一个网络游戏可以基于网易的Pomelo框架开发,这是一个基于Node.js的高性能、分布式游戏服务器框架﹔在实现某个动画功能时,可能会使用观察者模式实现自动化的通知更新。
设计模式的目标是改善代码结构,提高程序的结构质量;框架强调的是设计的重用性和系统的可扩展性,以缩短开发周期,提高开发质量。
二、软件设计原则
设计原则是系统分解和模块设计的基本标准,应用这些原则可以使代码更加灵活、易于维护和扩展。
抽象:是关注事物中与问题相关部分而忽略其他无关部分的一种思考方法。
封装和信息隐藏:是指每个软件单元对其他所有单元都隐藏自己的设计决策,各个单元的独特性通过其外部可见的接口来描述(应将单元接口设计得尽可能简单,并将单元对于环境的设计和要求降至最低)
模块化:是在逻辑和物理上将整个系统分解成多个更小的部分,其实质是“分而治之”,即将一个复杂问题分解成若干个简单问题,然后逐个解决。
系统分解的目标:高内聚,低耦合
内聚性:是一个模块或子系统内部的依赖程度。