7.11 设计阶段交付物
7.11.1 设计模型
在设计过程中必须完成设计模型的构造。设计模型采用UML语言,通过特定的工具进行建模,从而形成一个模型文件。为了便于交流,我们也可以把它整理成文档。
当把设计模型整理成文档,需要包含以下几部分。
1)用例视图
尽管Use-Case主要是分析阶段的产物,但是将Use-Case图放在模型中,便于理解后续的设计。在此部分中,需要提供一张用例图。
2)逻辑视图
(1)系统结构。首先利用UML的包图,画出一个系统架构的表示图。在设计类图完成后,每一个包画一张它所包含的类图。
(2)Use-Case实现。在该节中需要针对每一个Use-Case,通过交互图的方式表达相应的设计。因此,其格式可以表示为:
a.<Use-Case1>实现。
采用交互图的形式完整定义该Use-Case的实现过程。一个Use-Case中所有系统操作都必须得到相应的设计。如果一个用例比较复杂,可以分几个交互图进行表达。
b.<Use-Case2>实现。
……
(3)设计类图。将Use-Case实现中涉及的所有设计类以及它们的关联关系,画在一张设计类图中。如果类比较多,可以先画一个包图,然后画出各个包中包含的类图。
(4)其他图。
如果需要,针对某一个类给出其状态图。
如果需要,针对某一流程构造活动图。
3)实现视图
针对每一个子系统,画出其对应的组件图。需要画两种组件图:
(1)一种为开发环境中的组件构成及依赖关系。开发环境中的组件指的是程序源文件以及它所依赖的其他文件。
(2)另一种为编译后生成的组件及其依赖关系。
组件内部可以画出它包含的类以及类的关系。
4)进程视图
通过类图或者组件图的形式表示进程类、线程类及其相互关系,通过类图表示进程、线程中包含的类。
5)部署视图
画出系统的物理部署图。
7.11.2 软件架构文档
软件架构设计文档对软件的系统结构进行了描述。它主要采用设计模型中各种模型进行表达。但是并非设计模型中所有的模型都包含在此文档中,此文档中一般涉及对架构有重要影响的用例,并围绕它们介绍相关的模型。当然,软件架构文档中不仅应该给出模型图,也需要提供文字描述,表明做出相应设计决策的理由。
以下为除了前言以外的其他章节的说明。
7.11.2.1 目前软件系统体系架构
对目前存在的系统进行描述,如果原来没有系统,则对相类似的系统进行描述。指出目前系统存在的问题,新系统希望得到的改进。
对原来系统架构的描述可以采用UML包图,或者部署图。
7.11.2.2 软件系统架构设计目标
本节说明对构架具有某种重要影响的软件需求和目标,例如,安全性、保密性、市售产品的使用、可移植性、分销和重复使用。还应记录可能适用的特殊约束:设计与实施策略、开发工具、团队结构、时间表、遗留代码等。
7.11.2.3 建议的软件系统架构
1)概述
对整个软件的架构进行概述,给出软件架构采用的架构模式及其选择理由。
描述软件架构中重用的框架、中间件和类库。
简略描述包含哪些子系统,每个子系统的功能是什么。
2)用例视图
本节选择列出所有用例中的某一些用例或场景,这些用例或场景应体现最终系统中重要的、核心的功能;或是在构架方面涉及范围很广(使用了许多构架元素);或与构架中某一特别的设计有关系。
3)系统逻辑视图
(1)系统架构。首先利用UML的包图,给出一个系统架构图,简要介绍该系统架构的特点,各个子系统的功能。
(2)子系统。针对每一个子系统描述:①子系统的功能;②子系统向外界提供的服务的详细描述(定义其接口具体形式);③给出每一个子系统的组件图、类图。
(3)用例实现。针对选择的每一个核心用例,用顺序图刻画其具体实现。
(4)子系统协作。以交互图的形式围绕核心用例,刻画子系统之间的协作过程。此时,每一个子系统是一个黑盒子,在交互图中作为一个对象。
7.11.2.4 系统运行视图
该部分首先描述系统的控制流结构的选择,例如是采用数据流驱动、事件驱动,还是采用多线程。
如果软件中涉及并发的情形,提供相应的进程视图给予相应的解释。
7.11.2.5 系统实现视图
该部分分为两部分。
(1)系统开发模型:首先说明开发环境、开发语言、版本控制工具的选择,在开发环境中一个项目包含哪些目录,包含哪些源文件,用组件图来说明源文件包含的类,以及源文件之间的依赖关系。
(2)系统实现模型:定义编译后的可执行文件及其依赖关系。通过组件图来表示可执行文件及其依赖关系。
7.11.2.6 系统物理视图
利用UML的部署图描述系统的软硬件部署方式。列出硬件配置的规格要求以及选择理由。
7.11.2.7 边界条件设计
描述了系统中如何启动、关闭以及进行错误处理。描述的方式是采用用例的方式来进行说明,即提供启动用例、关闭用例、错误处理用例的分别说明,并通过交互图来说明这些用例是如何实现的。
7.11.2.8 数据管理
采用UML的类图表示那些需要持久化的数据。说明选择的数据持久化保存的方式及理由。如果是数据库保存,确定所选的数据库管理系统,并给出数据库的表设计,如果是文件系统,说明文件的目录结构、文件的格式。
7.11.2.9 其他设计
列出针对设计目标提出的特别的设计考虑,比如说访问控制和安全、可靠性设计等。
(1)访问控制和安全设计。采用表格列出不同的操作者对不同对象的权限;描述用户认证的方式;如果需要,给出数据的加/解密方式、给出接口调用的安全认证;其他安全问题。
(2)可靠性设计。如果有特定的可靠性要求,给出在可靠性方面采取的特定设计方案。