软件项目培训及课程设计指导——以软件系统概要设计中的组件设计为例
1. UML技术规范中的UML组件和UML组件图
UML技术规范中的组件是软件应用系统的一个物理单元,它代表软件应用系统中物理实现的功能模块——在Java技术平台中一般是一个*.jar包文件。 从模型视图控制器(MVC)系统架构模式来看,一个软件应用系统应该包括三部分:边界组件、控制组件和实体组件。 下图是Rose UML开发工具软件中创建UML组件的功能菜单的部分截图:
UML技术规范中的组件图由组件、接口以及组件之间的关系组成。 一方面,组件图可以帮助软件应用系统的开发人员了解软件应用系统的最终结构——因为组件图可以描述软件应用系统的组件以及组件之间的相互关系; 另一方面,也使得开发实施工作有了明确的发展目标,有利于项目开发团队中的其他人员(如帮助文档的编写者)更好地了解软件应用中的各个功能模块系统。
2. UML技术规范中的UML组件之间可以存在依赖关系
组件之间的依赖关系主要发生在以下几种情况:一个组件中的模型元素使用另一组件中的模型元素; 依赖关系是通过接口的实现产生的——也就是说,一个组件实现了另一个组件具体实现的接口。 UML技术规范中的组件图中组件之间的依赖关系是用虚线箭头表示的。 下图是信息管理系统中UML组件图的部分截图。 图中也有标注。
3、UML技术规范支持的各类主要组件类型
(1) 配置组件 ( )
配置组件是可执行系统的基础,描述了其他组件之间的关系和工作参数。 它是可执行系统的必要组成部分。 如J2EE系统平台中的各种*.xml配置文件。 下图是一个Web应用系统项目中部署描述文件web.xml内容的部分截图:
(2)工作产品组件(Work)
工作产品组件是在软件开发阶段使用的组件,并且是配置组件的来源,例如数据文件和数据库表、源程序文件等。 它们并不直接构成可执行系统,而是软件系统开发过程的产物。
(3) 可执行组件 ( )
可执行组件构成了可运行系统的最终组成,如平台中的动态链接库DLL文件(COM+、DLL等)、可执行的EXE程序文件、Java平台中的JAR包文件(各种形式)等是执行组件。 下图是一个Web应用项目部署到应用服务器的部署过程的部分截图:
4. UML组件图可用于进一步细化软件应用系统的系统架构设计结果
(1)明确软件应用系统分层设计中的主要组成部分
为了能够细化软件应用系统的架构设计结果,软件应用系统的设计者需要对软件应用系统中的架构设计结果进行进一步的横向划分——设计每一个体现软件应用层次的组件系统,并绘制出最终的UML组件图。
对于一个软件应用系统,一般可以在垂直方向上从下到上分为以下不同的组成模块:
1)持久层数据连接组件:负责连接软件应用系统中的数据库系统;
2)持久层中的持久实体组件:这些实体组件负责系统中需要持久化的各种数据封装;
3)持久层数据访问接口组件:定义和规范系统中各数据库表的数据访问操作的方法(增、删、改、查)和要求;
4)持久层数据访问实现组件:具体完成数据访问接口中定义的各个数据访问操作的功能实现——即具体完成数据库表的增、删、改、查功能;
5)业务逻辑层的业务实体组件:这些实体组件负责封装系统中与业务处理相关的各种业务数据;
6)业务逻辑层业务处理接口组件:定义和规范系统中各业务逻辑处理的规则和要求;
7) 业务逻辑层业务功能处理组件:具体完成业务处理接口中定义的各业务逻辑的功能实现;
8)表示层控制调度组件:响应表示层视图组件的请求,访问业务处理功能组件并获取处理结果,最后转发给具体视图组件显示输出;
9)表示层实体组件:这些实体组件负责封装来自用户的各种请求数据;
10)表示层视图组件:是系统中各种界面视觉元素的集合,负责系统界面显示和请求数据采集、验证等功能;
11)其他辅助或工具类组件:完成系统中的各种全局、通用辅助功能。
(2)用UML组件图展示软件应用系统中水平分区的设计结果
UML组件的图形表示被定义为一个大矩形,左侧嵌入两个小矩形,并且组件的名称被标记在大矩形中。 UML技术规范的组件视图一般包括组件、接口以及组件之间的依赖关系。 下图是一个组件图,反映了银行账户信息管理系统中的各个组件及其关系,充分体现了软件应用系统分层设计中横向分块设计的结果——每个组件都是根据其在银行账户信息管理系统中的应用而设计的。软件系统中的职责划分以及面向对象封装和隔离的基本原则完成了各个组件模块的设计。
当然,软件应用系统中的各个组件之间不应该存在“多对多”的依赖关系。 因为,如果组件之间的依赖关系比较复杂,就意味着软件应用系统的分层设计结果不太好,此时软件应用系统的设计者就需要对软件应用系统进行进一步的“纵向分离”和“水平分块”。