软件概要设计说明模板(面向对象方法)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XXXX软件概要设计
单位
编写
校对
审核
标审
批准
XXXX有限公司
文档控制变更记录
目录
1范围 (1)
1.1标识 (1)
1.2系统概述 (1)
1.3文档概述 (1)
1.4基线 (1)
2引用文件 (1)
3术语和定义 (2)
4总体说明 (2)
4.1软件与系统的关系 (2)
4.2软件功能描述 (3)
4.3项目特点分析 (3)
4.4设计决策 (3)
4.5软件业务流程(建立与设计模块的关系) (3)
4.6软硬件环境说明 (3)
4.7复用说明 (3)
5XXX配置项体系结构设计 (4)
5.1体系结构 (4)
5.1.1组件划分 (4)
5.1.2组件层次结构关系 (5)
5.1.3性能的分配 (6)
5.2接口设计 (6)
5.2.1配置项外部接口 (7)
5.2.2组件开发接口 (7)
5.2.3组件其他接口 (7)
5.3总体进程视图 (8)
5.3.1XXX进程 (8)
5.3.2任务执行线程 (8)
5.4组件说明 (11)
5.4.1业务流程调度(标识:TSF) (11)
5.5实现视图 (18)
5.6部署视图 (18)
6数据库设计 (19)
6.1概念数据库设计 (19)
6.2逻辑数据库 (20)
6.2.1数据库表清单 (20)
6.2.2库表描述 (20)
6.3物理数据库设计 (20)
7其他设计 (20)
7.1配置项初始化数据设计 (20)
7.2安装设计 (20)
8组装设计 .................................................................................. 错误!未定义书签。
8.1第一轮组装........................................................................................ 错误!未定义书签。
8.1.1第一组........................................................................................ 错误!未定义书签。
8.1.2第X组....................................................................................... 错误!未定义书签。
8.1.3组装完成后的产品部件............................................................ 错误!未定义书签。
8.2第X轮组装 ....................................................................................... 错误!未定义书签。
9追踪关系 . (21)
图4-1软件与系统的关系图 (2)
图5-1 XXX配置项组件图 (5)
图5-2 XXX配置项层次结构图 (6)
图5-3 XXX配置项通信图 (7)
图5-4 任务执行线程主流程活动图 (10)
图5-5业务流程调度组件包图 (12)
图5-6业务流程调度组件开发接口设计类图 (14)
图5-7业务流程调度组件内部设计类图 (15)
图5-8执行任务时序图 (16)
图5-9 XX部署图 (19)
图6-1 数据库实体关系图 (20)
表4-1 复用情况表 (4)
表5-1 XX接口参数表 (8)
表5-2 XX程序文件列表 (18)
表6-1数据库库表清单 (20)
表6-2 XX表 (20)
表9-1接口控制文件跟踪表 (21)
表9-2需求规格说明跟踪表 (21)
表9-3接口控制文件反向跟踪表 (21)
表9-4需求规格说明反向跟踪表 (21)
1范围
1.1标识
写明本文档的:
a.本文档的标识号:;
b.标题:XXXX软件概要设计说明;
c.本文档适用于XXX系统/软件/XXXXCSCI。
1.2系统概述
标识并描述本文档使用的CSCI(可以是一个系统中的多个配置项)在系统中的作用、运行环境等。
包括系统和软件的一般特性;概述系统开发、运行和维护的历史;标识项目的投资方、需方、用户、开发方和支持机构。
1.3文档概述
本文档为软件概要设计说明的参考模板。
本文档的各章节和提示为编制文档所必须的要素,文档开发人员可根据项目的特点和需要调整本文档的结构和描述方式,但应保证本文档要求的要素均能得到充分的描述。
文档开发人员应根据项目需要(包括用户需要、组织需要和项目特点)在本文档的基础上做适当的扩展以满足项目的要求。
本文档模板涵盖了GJB 438B-2009、GB/T 8567-2006对软件概要设计说明文档的要素和内容的要求。
本节描述概要设计说明的作用、目的、阅读对象,给出文档各章节的主要内容和组织方式。
1.4基线
说明本文档依赖的分配基线及基线版本。
2引用文件
按文档号、标题、编写单位(和作者)和出版日期等,列出本文档引用的所
有文件。
3术语和定义
给出所有在本文档中出现的专用术语和缩略语的确切定义。
给出本文档中描述需求所使用的符号的含义。
4总体说明
本章描述影响产品和设计的一般引述,而不叙述具体设计。
它提供设计的总体描述和背景,并使它们更易理解。
本章内容无需作为设计项进行追踪,详细内容应在后续章节进行描述。
除下述章节外,设计文档中其余易受到关注的内容(如宇航产品的可靠性设计等)宜在本章进行总体描述。
4.1软件与系统的关系
给出系统功能的描述,使用系统框图、数据流图、部署图等各类示意图,描述系统的组成,软件在系统中的位置及与系统中其他软件、硬件的关系。
给出软件的运行环境(部署的软硬件环境和对外接口),并描述软件与系统中各软件配置项和硬件配置项间的接口。
图4-1软件与系统的关系图
4.2软件功能描述
本部分描述软件主要功能,给出功能设计上的特点,并针对功能的特点分析设计应采取的设计方案和措施。
4.3项目特点分析
分析本项目的特点和在概要设计说明中描述的应对措施。
包括用户特点、功能设计特点、系统环境特点、任务要求特点、政策法规要求等。
4.4设计决策
本部分给出软件设计决策的结论和过程,包括系统级和需求中选定的设计要求、在概要设计时已确定或无法确定的设计决策。
对于未确定的设计决策,应给出决策的依赖(具备决策权的人员、决策需要的输入等)。
决策的例子包括:
a.算法选择的决策;
b.软件模块选择的决策(包括商业、开源和自研模块间的选择);
c.软件行为的决策;
d.安全性、保密性设计的决策;
e.可靠性、安全性设计的决策。
4.5软件业务流程(建立与设计模块的关系)
本部分给出软件的业务流程,本节与需求规格说明中的同名章节的主要区别在于,概要设计中的软件业务流程明确了各个活动的执行模块,这些执行模块应与设计中的模块/组件严格对应。
4.6软硬件环境说明
和需求一致。
4.7复用说明
给出使用的可复用组件以及复用的方式。
表4-1 复用情况表
5XXX配置项体系结构设计
5.1体系结构
面向对象的体系结构设计,根据需求规格说明书对用例和用例处理流程的定义,将各项处理活动根据技术实现的特点分类组合,形成分层的软件体系结构。
随后对同一层次的软件,采用抽象、聚合等方式形成可复用设计模块。
5.1.1组件划分
本部分可按照需求规格说明中的功能模块,组织各设计模块,采用组件图、框图等方式描述组件的划分及组件之间的关系,叙述各组件实现的功能。
这里还应给出软件设计使用的第三方组件、程序等。
组件图仅能描述组件间的依赖关系,详细的组件间的接口和数据流向见5.2。
在这里应该考虑顶层组件设计所使用的设计模式,并在本部分明确给出使用的模式和相关说明。
XXX配置项在需求分析阶段已划分为XXX、XXX等X个功能模块,在此
基础上,进行设计模块的分解,形成X个组件。
XX配置项组件图见图5-1。
图5-1 XXX配置项组件图
a.设备监控功能模块
1)设备监控界面组件
该组件具备XXX功能,满足XXX性能要求,其依赖于XXX组件完成XX工作,XX组件调用本组件完成XX工作;
是否关键模块:是。
2)XXX
b.公共组件
1)XXX
5.1.2组件层次结构关系
图5-2给出了XXX配置项设计的层次划分。
XXX配置项设计分为界面表示层、业务实现层、数据管理层和XXX层等X层。
包含了5.1.1节中给出的组件。
图5-2 XXX配置项层次结构图
a.界面表示层
界面表示层包括界面显示的相关模块。
界面表示层含有XXX等组件。
b.业务实现层
业务实现层包括和软件业务相关的模块。
业务实现层含有XXX等组件。
c.数据管理层
数据管理层包括序列化数据、数据库连接,以及对数据库操作的相关模块。
数据管理层含XXX等组件。
5.1.3性能的分配
在本节给出对性能指标的分析和分解。
性能指标的分解应落实到模块。
5.2接口设计
给出配置项对外接口,及各个组件之间的接口的设计。
包括接口的标识、同步异步特性、接口的形式、数据格式等进行详细的说明。
可以画多张图描述接口关系。
对于接口简单的软件而言,可直接给出具体的接口(如图中的startTask接口和stopTask接口)。
复杂的软件则可以给出接口的综合性描述,在本部分各接口的详细描述中给出具体的接口。
图5-3 XXX配置项通信图
5.2.1配置项外部接口
外部接口若在接口文档或需求中有详细说明,直接引用接口文档或需求即可。
图5-3给出的外部实体可采用特殊的颜色标识。
以区分软件内部模块;图中的消息名称应与外部接口一致。
如图5-3中与设备通信的接口为外部接口。
5.2.2组件开发接口
本节可给出配置项中,各组件的开发接口,本节可以给出各开发接口的简单描述,详细内容在各组件的“组件开发接口设计”部分详细说明。
5.2.3组件其他接口
组件其他接口包括组件间的进程通信接口(本地过程调用、远程过程调用)、文件访问接口、数据库访问接口、网路通信接口等。
要求:
进程通信接口通常有接口描述语言描述接口,应在接口描述中给出详细描述;
文件访问结构应给出文件的样例;
数据库访问接口可参见“数据库设计”部分;
网络通信接口应给出底层的数据帧格式。
5.2.3.1读取监控数据
表5-1 XX接口参数表
5.3总体进程视图
使用状态图、时序图、活动图描述组件间的时序关系、异步处理、并发执行、对象/任务/进程/线程的动态创建与删除等动态行为。
这里仅需给出所有线程、进程清单,并描述线程和进程跨组件运行的方式及其间的关系。
进程,线程设计的细节,在各组件的“线程安全设计”中详细描述。
5.3.1XXX进程
描述配置项启动的各项进程,描述进程间存在通信关系。
对于只允许创建一个进程的程序,也应在这里给出相应的说明。
描述方式参见5.3.2。
5.3.2任务执行线程
a.线程执行主流程
使用时序图/活动图,描述组件间的协作关系、本线程与其他线程间的关系(如信号量、共享缓冲区等)。
通常协作图更容易描述组件间的协作关系,活动图则更容易描述线程间的关系。
如果一类图难以同时表达两种关系,则可以画两张图综合表达。
图5-4 任务执行线程主流程活动图b.线程执行异常流程
给出本线程执行异常时的处理流程。
描述方式类同主流程。
5.4组件说明
逐项描述5.1节的组件的设计。
5.4.1业务流程调度(标识:TSF)
5.4.1.1组件概况
本部分应给出组件/模块的总体说明,包括组件实现的各项指标、功能概述、组件与其他组件的关系(完整列出依赖本组件的组件、本组件依赖的组件,并描述依赖关系,必要时,针对本组件绘制组件图)。
对于第三方组件、可复用组件等,作出情况说明后,可以仅描述需要使用的开发接口和其他相关即可。
给出组件包图,并对各个包及包之间的关系进行描述。
图5-5为面向对象组件常用的包结构。
图5-5业务流程调度组件包图
.c.sample.spi包
spi(service provide interface)为组件的对外服务接口包,包中包括且仅包含外部组件调用本组件需要用到的接口(迪米特法则)。
应将不同类型的接口放在不同的接口或抽象类中(接口隔离原则),避免出现将各种不同类接口放在一个文件中的情况。
本包中通常应包含组件的初始化和析构管理操作,调用本组件的初始化方法,给出本组件所必须的初始化参数后,组件方可使用。
.
c.sample.api包
api(application programming interface)为组件对外发布的扩展接口,上级组件扩展本包中的接口或抽象类(开放-封闭原则,对扩展开放,对修改封闭),并通过调用spi提供的方法,将相应的对象注入到本组件中(里氏代换原则),实现控制反转(依赖倒置原则)。
.c.sample.implements包
本组件主要的业务功能在本包中实现,本包中的类通过扩展或实现spi包中的接口、抽象类以实现本组件需要实现的对外接口和功能。
.c.sampl
e.model包
本包中存放本组件需要用的实体类的定义。
.c.sample.mem包
本包中存放内存/数据/对象管理类,对本组件需要用到的对象进行管理,有利于避免内存溢出,也便于对内存溢出进行排查。
通常可使用Factory模式、Fly
Weight模式、Singleton模式等设计模式。
.c.sample.context包
保存和管理给出本组件所需的上下文参数、保留关键字、静态参数定义等。
.c.sample.config包
本包包含组件所需的参数读取类。
.c.sample.util包
本包包含本组件所需的通用工具类,通常各个工具类为会话类。
使用工具类的程序根据需要,获取工具类的实例,建立聚合关系,实现代码的复用(聚合复用原则)。
另外,需要注意会话类的线程安全性。
.c.sample.thread包
使用线程池等方式,管理本组件启动的线程。
5.4.1.2组件开发接口设计
本节应给出组件中对外接口的设计,应包括且仅包括所有使用本组件需要使用的接口定义、实体类的说明。
通常,本组件的使用者仅需阅读本节即可使用组件完成工作。
本节设计应与图5-3中与本组件相关的接口一一对应。
组件实现的对外接口(配置项外、配置项内的文件系统、数据库、进程间调用等)的实现应在组件内部设计部分说明。
除“线程安全设计”部分明确给出的线程安全接口外,其余接口均非线程安全接口,使用者应保证不使用多线程访问非线程安全的接口。
各线程安全的接口在“线程安全设计”部分给出。
对于图5-5,本节应包括spi、api、model三个包中的类和接口的描述,对于接口内容较多的情况,应给出类图。
图5-6业务流程调度组件开发接口设计类图
.c.sample.spi.ITaskSchedule接口
本部分给出给出该接口的说明。
说明应和该类的注释一致。
如:
本接口为本组件的访问接口,接口类型为java interface(抽象类、POJO 等)。
提供任务启动方法和任务停止方法。
1)startTask方法
对方法的说明。
说明应和该方法的注释一致。
下表为该方法的各个参数的描述。
类型长度(可剪裁)参数名称描述
int 4字节taskType 任务类型,0代表本地任务,1代表远程任务int 4字节taskId 任务ID,趋势范围为0~9999999
TaskData taskData 任务数据,任务实体类。
详细结构参见
TaskData类的设计。
boolean 1字节return 返回值,任务启动结果。
true为成功,false为
失败。
2)stopTask方法
对方法的说明。
说明应和该方法的注释一致。
下表为该方法的各个参数的描述。
类型长度(可剪裁)参数名称描述
int 4字节taskType 任务类型,0代表本地任务,1代表远程任务int 4字节taskId 任务ID,趋势范围为0~9999999
boolean 1字节return 返回值,任务启动结果。
true为成功,false为
失败。
.
c.sample.model.TaskData
任务数据实体类。
下表给出实体类的各个属性,实体类的各属性按照javabean的标准,编制getter和setter方法,设计文档中可以省略。
类型长度(可剪裁)参数名称描述
String 4字节startDate 任务开始日期,格式为yyyy-MM-dd
String 4字节stopDate 任务结束日期,格式为yyyy-MM-dd
5.4.1.3界面设计
给出本组件包含的界面设计,包括界面原型和界面操作流程。
人机工程设计。
给出本组件界面应收集的数据列表及应显示的数据列表。
不包含界面的组件可删除本部分。
5.4.1.4组件内部设计
本部分应给出本组件包含全部类、接口的描述,对于其他部分已描述的类、接口,可以引用相关部分的描述。
对于图5-5,Implement和util的设计将在本部分描述。
a.类间的静态关系
使用类图、对象图描述本组件类及类之间的关系,组件内部使用的设计模式。
可使用多张类图描述,并辅以文字说明。
图5-7业务流程调度组件内部设计类图
b.各类的描述
1)ITaskSchedule接口
逐个描述各个类、接口实现的功能、算法及其与其他类之间的关系。
2)TaskScheduleFactory类
3)TaskData实体类
4)TaskScheduleImpl类
5)TaskManager类
6)Task类
c.组件的动态特性
使用时序图、活动图或状态图描述组件执行的动态关系。
对于多功能、时序存在分支等情况,应使用多张图描述。
并辅以文字说明。
时序图中的生命线的类型应当与本组件中的类、接口或外部组件、实体对应。
时序图中的消息应对应各个类中的方法,采用本方式可以识别各个类中需要实现的public方法,通常case工具会自动更新相应的类图。
图5-8执行任务时序图
d.异常处理
给出组件使用和运行过程中可能出现的异常和异常处理方式。
可使用时序图、活动图等描述异常处理。
异常处理包括参数校验、内存中对象数量的限制、线程数量的限制、通信异常、磁盘读写异常、与外部通信时遇到的异常等。
5.4.1.5线程安全设计
本节专项描述本模块的线程安全设计。
应从本组件外部接口的线程安全特性,以及本组件内部创建线程的管理两个角度描述。
a.外部接口线程安全设计
给出可保证线程安全的外部接口,并描述线程安全的设计。
1)com.c.sample.spi.ITaskSchedule接口startTask方法
需详细给出该接口需要访问的共享资源,以及对共享的资源互斥访问机制。
分析多线程访问可能导致的数据一致性问题和乱序问题,确保对共享资源的访问控制能够保证程序执行结果和预期一致。
使用协作图、活动图描述线程间对共享资源的互斥访问机制。
b.内部线程管理
给出组件内部创建的线程类型、命名规则,线程的管理方式(包括线程数量的限制,线程间对共享资源的互斥访问等)。
开发时要求按照命名规则为线程命名,严禁出现不命名的线程。
对于图 5-5,可将线程的定义和线程的管理类置于thread包中。
使用类图描述包中的静态关系。
线程安全设计参见“外部接口线程安全设计”。
5.4.1.6资源管理设计
a.内存资源管理:对于图5-5,可将内存对象的管理类置于mem包中。
给出其对内存资源使用的限制方法(Fly Weight模式、Singleton模式等)。
对于界面、图片资源、组件定义主要类的实例、大型数组等必须考虑其占用的资源及保护措施;
b.通信链路资源管理:通信链路连接池等;
c.数据库链接资源管理:数据库链接池等;
d.磁盘文件资源管理:磁盘空间预警设计、磁盘文件写入互斥的保证措
施等。
5.4.1.7可扩展性设计
a.可配置参数:包括组件可配置的参数列表及说明、配置文件格式和相对
路径、数据库表及格式的设计;
b.上下文参数设计:可使用实体类描述可定义的参数;
c.预编译宏设计。
注:设计时应当尽可能的将可配置的变量集中存放(对于图5-5,可置于context包中),必要时可以较容易的将这些参数变为配置文件,在图5-5中的config包中设计配置文件的读取方法,实现这些参数的可定制,进一步提高组件的可扩展性。
5.4.1.8其他非功能要求的设计
给出本组件为满足性能、安全性、可靠性、可测性、安全性、保密性等的考虑,以及应实现的功能。
可以引用组件其他设计章节说明。
5.5实现视图
包括各组件与编译生成的二进制文件的对应关系、程序的文件夹结构,配置文件的存放路径,日志文件的存放路径等。
本列表中的文件应该在前文对应的章节有详细描述。
表5-2 XX程序文件列表
5.6部署视图
图5-9 XX部署图
部署图应和需求文档指定的软硬件环境对应,应描述全部需要部署的软件、执行的软件进程、硬件平台。
6数据库设计
给出软件需要访问数据库,描述各个数据库的用途。
6.1概念数据库设计
给出实体关系图,并描述数据库实体关系。
USR ROLE USR_ROLE
LOG
SATELLITE STATIONINFO FAULT DEVICE_MONITOR _CONTROL
STATUS_MACHINE_INFO STATUS_MACHINE_EXINFO
MACRO_CONFIG LEVEL_CODE
MACRO_CONFIG_LEVEL
MACRO_CONFIG_DEVICE
MACRO_CONFIG_COMMAND MACRO_POINT_VALUE TRTASK TRACK TRCANCEL TRCANCELACK TRREPORT
图6-1 数据库实体关系图
6.2逻辑数据库
6.2.1数据库表清单
表6-1数据库库表清单
6.2.2库表描述
6.2.2.1XXX表
表6-2 XX表
6.3物理数据库设计
针对系统的特点,给出数据库服务器的部署方法,运行参数配置。
7其他设计
7.1配置项初始化数据设计
给出配置项新安装时的初始化数据要求,包括参数的初始化配置、需要建立的数据库表、数据库表中应该有的记录等。
7.2安装设计
给出安装程序制作的技术方案,包括使用的打包工具、安装向导设计、exe 制作工具等。
8追踪关系
包括与接口控制文件和需求规格说明的跟踪。
本文档采用多种角度和视图描述软件的设计,但是最终均落实在各个组件的设计中,因此需求跟踪矩阵中只需确保各项需求跟踪到组件即可。
但在做变更影响分析时,若涉及到某组件发生变更,则应当在本文档各章节(包括体系结构、接口设计、总体进程视图、实现视图、数据库设计)中寻找和本组件相关内容,分析对相应部分的影响。
表8-1接口控制文件跟踪表
表8-2需求规格说明跟踪表
表8-3接口控制文件反向跟踪表
表8-4需求规格说明反向跟踪表。