1、软件架构设计
软件架构是具有一定形式的结构话元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构建是被加工的信息,连接构件把架构不同部分负责连接起来。软件架构是软件设计过程中一个层次,这一层次超越计算过程中的算法设计和数据结构设计。
2、软件架构建模
设计软件架构的首要问题是如何表示软件架构,即对软件架构建模。根据建模的侧重点不同,可以讲软件建构的模型分为5种,分别是结构模型、框架模型、动态模型、过程模型和功能模型。
2.1结构模型
这是一个最直观、最普遍的建模方法。这种方法以架构的构件、连接件和其他概念呢来刻画架构,并力图通过结构来反映系统的重要寓意内容,包括系统的配置、约束、隐含的假设条件、风格和性质等。研究结构模型的核心是架构描述语言。
2.2框架模型
框架模型和结构模型类似,但他不太侧重描述结构的细节而更侧重与整体的结构。框架模型主要以一些特殊的问题为某表建立至针对和适应该问题的结构。
2.3动态模型
动态模型是对结构或框架模型的补充,研究系统“大颗粒”的行为性质例如,描述系统的重新配置活演化。动态可以指系统的总体结构和配置、建立活拆除通信通道或计算的过程。这类系统是激励型的。
2.4过程模型
过程模型研究构造系统的步骤和过程,因而结构是遵循某些过程脚本的结果。
2.5功能模型
该模型认为架构是一组功能构件按层次组成,下层向上提供服务。它可以看作是一种特殊的框架模型。
在这5中模型中,最常用的是结构模型和动态模型。这5中模型各有所长,将5中模型有机地统一在一起,形成一个完整的模型来刻画软件架构更合适。例如,Kruchten在1995年提出了“4+1”视图模型。
3、“4+1”视图模型
“4+1”视图模型从5个不同的视角包括逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件架构。每个视图只关心系统的一个侧面,5个视图结合在一起才能反映系统软件架构的全部内容。“4+1”视图模型如图所示。
3.1 逻辑视图(logic view)
主要支持系统的功能需求,即系统提供给最终用户的服务。在逻辑视图中,系统分解一系列的功能抽象,这些抽象主要来自问题的领域。这种分解不但可以用来进行功能分析,而且可以用做标识整个系统的各个不同部分的通用机制和设计元素。在面向对象的技术中,通过抽象、封装和继承,可以用对象模型来代表模型视图,用类图来描述逻辑视图。逻辑视图中使用的风格为面向对象的风格,逻辑视图设计中要注意的主要问题是要保持单一的、内聚的对象模型贯穿整个系统。
3.2 开发视图(development view)
也成为模块视图,主要侧重于软件模块的组织和管理。软件通过程序或子系统进行组织,这样对于一个软件系统,就可以由不同的人进行开发。开发视图要考虑软件内部的需求,如软件开发的容易性、软件的重用性和软件的通用性,更充分考虑由于具体开发工具的不同而带来的局限性。开发视图通过系统输入输出关系的模型图和子系统图来描述。可以在确定了软件包含的所有元素之后描述完整的开发角度,也可以在确定 每个元素之前列出开发视图的原则。
3.3 进程视图(process view)
侧重与系统的运行特性,主要关注一些废功能性的需求,例如系统的性能和可用性。进行视图强调并发性、分布性、系统集成行和容错能力,以及逻辑视图中的主要抽象如何适合进程结构。它也定义逻辑视图中各个类的操作具体是在一个执行线程中被执行的。进程视图可以 描述成多层抽象,每个级别分别关注不同的方面。
3.4 物理视图(pyhsical view)
主要考虑如何把软件映射到硬件上,通常要考虑解决系统拓扑结构、系统安装和通信问题。当软件运行与不同的节点上时,各个视图中的构件都直接或者间接地对应与系统的不同节点上。因此从软件到节点的映射要有较高的灵活性,当环境改变时,对系统其他视图的影响最小。
3.5 场景(scenarios)
可以看作是那些重要系统活动的抽象,它使4个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。在开发架构时,它可以帮助设计者找到架构的构件和他们之间的作用关系。同时,也可以用场景分析一个特定的视图,或描述不同视图构件是如何相互作用的。场景可以用文本表示,也可以用图形表示。