第二章 软件体系结构建模
软件体系结构建模的种类
软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。
结构模型
结构模型的核心是体系结构描述语言
框架模型
框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。
动态模型
动态模型是对结构或框架模型的补充,研究系统的“大颗粒”的行为性质。例如,描述系统的重新配置或演化。动态可以指系统总体结构的配置、建立或拆除通信通道或计算的过程。这类系统通常是激励型的。
过程模型
过程模型研究构造系统的步骤和过程。而结构是遵循某些过程脚本的结果。
功能模型
功能模型认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。
功能模型可以看作是一种特殊的框架模型。
软件体系结构的5种模型各有所长,将5种模型有机地组合起来,形成一个完整的模型来刻画软件体系结构更合适。
2.1 “4+1”模型概述
“4+1”视图模型从5个不同的视角包括逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。
逻辑视图
逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。
在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。(选择题)
在面向对象技术中,通过抽象、封装和继承,可以用对象模型来代表逻辑视图,用类图来描述逻辑视图。
逻辑视图中使用的风格为面向对象的风格,逻辑视图设计中要注意的主要问题是要保持一个单一的、内聚的对象模型贯穿整个系统。
开发视图(模块视图)
开发视图也称模块视图,主要侧重于软件模块的组织和管理。软件可通过程序库或子系统进行组织,这样,对于一个软件系统,就可以由不同的人员进行开发。
在开发视图中,最好采用4-6层子系统,而且每个子系统仅仅能与同层或更低层的子系统通讯,这样 可以使每个层次的接口既完备又精练,避免了各个模块之间很复杂的依赖关系。
设计时要充分考虑,对于各个层次,层次越低,通用性越强,这样,可以保证应用程序的需求发生改变时,所做的改动最小。开发视图所用的风格通常是层次结构风格。
进程视图 (并发视图)
进程视图也称并发视图,侧重于系统的运行特性,主要关注一些非功能性的需求。
进程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构。它也定义逻辑视图中的各个类的操作具体是在哪一个线程中被执行的。
物理视图
物理视图主要考虑如何把软件映射到硬件上,它通常要考虑到系统性能、规模、可靠性等。解决系统拓扑结构、系统安装、通讯等问题。
场景
场景可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。
逻辑视图和开发视图描述系统的静态结构,而进程视图和物理视图描述系统的动态结构。
对于不同的软件系统来说,侧重的角度也有所不同。例如,对于管理信息系统来说,比较侧重于从逻辑视图和开发视图来描述系统,而对于实时控制系统来说,则比较注重于从进程视图和物理视图来描述系统。
2.2 体系结构的核心模型
综合软件体系结构的概念,体系结构的核心模型由5种元素组成:构件、连接件、配置、端口和角色。其中,构件、连接件和配置是最基本的元素。
1)构件,是具有某种功能的可重用的软件模板单元,表示了系统中主要的计算元素和数据存储。构件有两种:复合构件和原子构件。
复合构件:由其他复合构件和原子构件通过连接而成;
原子构件:是不可再分的构件,底层由实现该构件的类组成。
2)连接件,表示了构件之间的交互。简单的连接件如管道、过程调用、事件广播等,更为复杂的交互如客户-服务器通信协议、数据库和应用之间的SQL连接等;
3)配置,表示了构件和连接件的拓扑逻辑和约束。
另外,构件作为一个封装的实体,只能通过其接口与外部环境进行交互,构件的接口由一组端口组成(填空题),每个端口表示了构件和外部环境的交互点。通过不同的端口类型,一个构件可以提供多重接口。
连接件作为建模软件体系结构的主要实体,同样也有接口,连接件的接口由一组角色组成,连接件的每个角色定义了该连接件表示的交互的参与者。
二元连接件有两个角色,也存在有多个角色的连接件。
2.3 体系结构的生命周期模型
软件过程
对于软件项目的开发来说,一个清晰的软件体系结构是首要的;软件体系结构的建立应位于需求分析之后,软件设计之前。
1)需求分析阶段
体系结构需求包括需求获取、生成类图、对类分组、将类打包成构件和需求评审等过程。
2)建立软件体系结构阶段
体系结构设计师主要从结构的角度对整个系统进行分析,选择恰当的构件、构件间的相互作用以及它们的约束,最后形成一个系统框架以满足用户的需求,为软件设计奠定基础。
在建立体系结构的初期,选择一个合适的体系结构风格是首要的。
3)设计阶段
4)实现阶段
5)测试阶段