1 引言
1.1 编写目的
说明编写这份详细设计说明书的目的,指出预期的读者范围。
1.2 背景
说明:
a. 待开发的软件系统的名称;
b. 列出本项目的任务提出者、开发者、用户以及将运行该项软件的单位。
1.3 定义
列出本文件中用到的专门术语的定义和缩写词的原词组。
1.4 参考资料
列出要用到的参考资料,如:
a. 本项目的经核准的计划任务书或合同、上级机关的批文;
b. 属于本项目的其他已发表的文件;
c. 本文件中各处引用的文件、资料,包括所要用到的软件开发标准。
列出这些文件的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。
2 程序系统的结构
用一系列图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称、标识符和它们之间的层次结构关系。
3 程序1(标识符)设计说明
从本章开始,逐个地给出各个层次中的每个程序的设计考虑。以下给出的提纲是针对一般情况的。对于一个具体的模块,尤其是层次比较低的模块或子程序,其很多条目的内容往往与它所隶属的上一层模块的对应条目的内容相同,在这种情况下,只要简单地说明这一点即可。
3.1 程序描述
给出对该程序的简要描述,主要说明安排设计本程序的目的意义,并且,还要说明本程序的特点(如是常驻内存还是非常驻?是否子程序?是可重入的还是不可重入的?有无覆盖要求?是顺序处理还是并发处理?.....等)。
3.2 功能
说明该程序应具有的功能,可采用IPO图(即输入-处理-输出图)的形式。
3.3 性能
说明对该程序的全部性能要求,包括对精度、灵活性和时间特性的要求。
3.4 输入项
给出对每一个输入项的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、输入的方式、数量和频度、输入媒体、输入数据的来源和安全保密条件等等。
3.5 输出项
给出对每一个输出项的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、输出的形式、数量和频度、输出媒体、对输出图形及符号的说明、安全保密条件等等。
3.6 算法
详细说明本程序所选用的算法,具体的计算公式和计算步骤。
3.7 流程逻辑
用图表(例如流程流程图、判定表等)辅以必要的说明来表示本程序的逻辑流程。
3.8 接口
用图的形式说明本程序所隶属的上一层模块及隶属于本程序的下一层模块、子程序,说明参数赋值和调用方式,说明与本程序相直接关联的数据结构(数据库、数据文卷)。
3.9 存储分配
根据需要,说明本程序的存储分配。
3.10 注释设计
说明准备在本程序中安排的注释,如:
a. 加在模块首部的注释;
b. 加在各分枝点处的注释;
c. 对各变量的功能、范围、缺省条件等所加的注释;
d. 对使用的逻辑所加的注释等等。
3.11 限制条件
说明本程序运行中所受到的限制条件。
3.12 测试计划
说明对本程序进行单体测试的计划,包括对测试的技术要求、输入数据、预期结果、进度安排、人员职责、设备条件驱动程序及桩模块等的规定。
3.13 尚未解决的问题
说明在本程序的设计中尚未解决而设计者认为在软件完成之前应解决的问题。
需求说明
引言
1.1 编写目的
说明编写这份软件需求说明书的目的,指出预期的读者范围。
1.2 范围
说明:
a. 待开发的软件系统的名称;
b. 说明软件将干什么,如果需要的话,还要说明软件产品不干什么;
c. 描述所说明的软件的应用。应当:
1) 尽可能精确地描述所有相关的利益、目的、以及最终目标。
2) 如果有一个较高层次的说明存在,则应该使其和高层次说明中的类似的陈述相一致(例如,系统的需求规格说明)。
1.3 定义
列出本文件中用到的专门术语的定义和缩写词的原词组。
1.4 参考资料
列出要用到的参考资料,如:
a. 本项目的经核准的计划任务书或合同、上级机关的批文;
b. 属于本项目的其他已发表的文件;
c. 本文件中各处引用的文件、资料,包括所要用到的软件开发标准。
列出这些文件的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。
2 项目概述
2.1 产品描述
叙述该项软件开发的意图、应用目标、作用范围以及其他应向读者说明的有关该软件开发的背景材料。解释被开发软件与其他有关软件之间的关系。如果本软件产品是一项独立的软件,而且全部内容自含,则说明这一点。如果所定义的产品是一个更大的系统的一个组成部分,则应说明本产品与该系统中其他各组成部分之间的关系,为此可使用一张方框图来说明该系统的组成和本产品同其他各部分的联系和接口。
2.2 产品功能
本条是为将要完成的软件功能提供一个摘要。例如,对于一个记帐程序来说,需求说明可以用这部分来描述:客房帐目维护、客房财务报表和发票制作,而不必把功能所要求的大量的细节描写出来。
有时,如果存在较高层次的规格说明时,则功能摘要可从中取得,这个较高层次的规格说明为软件产品分配了特殊的功能,为了清晰起见,请注意:
a. 编制功能的一种方法是制作功能表,以便客房或者第一次读这个文件的人都可以理解;
b. 用方框图来表达不同的功能和它们的关系也是有帮助的。但应牢记,这样的图不是产品设计时所需求的,而只是一种有效的解释性的工具。
2.3 用户特点
列出本软件的最终用户的特点,充分说明操作人员、维护人员的教育水平和技术专长,以及本软件的预期使用频度。这些是软件设计工作的重要约束。
2.4 一般约束
本条对设计系统时限制开发者选择的其他一些项作一般性描述。而这些项将限定开发者在设计系统时的任选项。这些包括:
a. 管理方针;
b. 硬件的限制;
c. 与其他应用间的接口;
d. 并行操作;
e. 审查功能;
f. 控制功能;
g. 所需的高级语言;
h. 通信协议;
i. 应用的临界点;
j. 安全和保密方面的考虑。
2.5 假设和依据
本条列出影响需求说明中陈述的需求的每一个因素。这些因此不是软件的设计约束,但是它们的改变可能影响到需求说明中的需求。例如:假定一个特定的操作系统是在被软件产品指定的硬件上使用的,然而,事实上这个操作系统是不可能使用的,于是,需求说明就要进行相应的改变。
3 具体需求
3.1 功能需求
3.1.1 功能需求1
对于每一类功能或者有时对于每一个功能,需要具体描述其输入、加工和输出的需求。由四个部分组成:
a. 引言
描述的是功能要达到的目标、所彩的方法和技术,还应清楚说明功能意图的由来和背景。
b. 输入
1) 详细描述该功能的所有输入数据,如:输入源、数量、度量单位、时间设定、有效输入范围(包括精度和公差);
2) 操作员控制细节的需求。其中有名字、操作员活动的描述、控制台或操作员的位置。例如:当打印检查时,要求操作员进行格式调整;
3) 指明引用接口说明或接口控制文件的参考资料。
c. 加工
定义输入数据、中间参数,以获得预期输出结果的全部操作。它包括如下的说明:
1) 输入数据的有效性检查;
2) 操作的顺序,包括事件的时间设定;
3) 响应,例如,溢出、通信故障、错误处理等;
4) 受操作影响的参数;
5) 降级运行的要求;
6) 用于把系统输入变换成相应输出的任何方法(方程式、数学算法、逻辑操作等);
7) 输出数据的有效性检查。
d. 输出
1) 详细描述该功能所有输出数据,例如:输出目的地、数量、度量单位、时间关系、有效输出的范围(包括精度和公差)、非法值的处理、出错信息;
2) 有关接口说明或接口控制文件的参考资料。
此外,对着重于输入输出行为的系统来说,需求说明应指定所有有意义的输入、输出对及其序列。当一个系统要求记忆它的状态时,需要这个序列,使得它可以根据本次输入和以前的状态作出响应。也就是说,这种情况犹如有限状态机。
3.1.2 功能需求2
......
3.1.n 功能需求n
3.2 外部接口需求
3.2.1 用户接口
提供用户使用软件产品时的接口需求。例如,如果系统的用户通过显示终端进行操作,就必须指定如下要求:
a. 对屏幕格式的要求;
b. 报表或菜单的页面打印格式和内容;
c. 输入输出的相对时间;
d. 程序功能键的可用性。
3.2.2 硬件接口
要指出软件产品和系统硬部件之间每一个接口的逻辑特点。还可能包括如下事宜:支撑什么样的设备,如何支撑这些设备,有何约定。
3.2.3 软件接口
在此要指定需使用的其他软件产品(例如,数据管理系统、操作系统或数学软件包),以及同其他应用系统之间的接口。对每一个所需的软件产品,要提供如下内容:
a. 名字;
b. 助记符;
c. 规格说明号;
d. 版本号;
e. 来源。
对于每一个接口,这部分应说明与软件产品相关的接口软件的目的,并根据信息的内容和格式定义接口,但不必详细描述任何已有完整文件的接口,只要引用定义该接口的文件即可。
3.2.4 通信接口
指定各种通信接口。例如,局部网络的协议等等。
3.3 性能需求
从整体来说,本条应具体说明软件、或人与软件交互的静态或动态数值需求。
A. 静态数值需求可能包括:
1) 支持的终端数;
2) 支持并行操作的用户数;
3) 处理的文卷和记录数;
4) 表和文卷的大小。
B. 动态数值需求可能包括:欲处理的事务和任务的数量,以及在正常情况下和峰值工作条件下一定时间周期中处理的数据总量。
所有这些需求都必须用可以度量的术语来叙述。例如,95%的事务必须在小于1s时间内处理完,不然,操作员将不等待处理的完成。
3.4 设计约束
设计约束受其他标准、硬件限制等方面的影响。
3.4.1 其他标准的约束
本项将指定由现有的标准或规则派生的要求。例如:
a. 报表格式;
b. 数据命名;
c. 财务处理;
d. 审计追踪,等等。
3.4.2 硬件的限制
本项包括在各种硬件约束下运行的软件要求,例如,应该包括:
a. 硬件配置的特点(接口数,指令系统等);
b. 内存储器和辅助存储器的容量。
3.5 属性
在软件的需求之中有若干个属性,以下指出其中的几个(注意:对这些决不应理解为是一个完整的清单)。
3.5.1 可用性
可以指定一些因素,如检查点、恢复和再启动等,以保证整个系统有一个确定的可用性级别。
3.5.2 安全性
指的是保护软件的要素,以防止各种非法的访问、使用、修改、破坏或者泄密。这个领域的具体需求必须包括:
a. 利用可靠的密码技术;
b. 掌握特定的记录或历史数据集;
c. 给不同的模块分配不同的功能;
d. 限定一个程序中某些区域的通信;
e. 计算临界值的检查和。
3.5.3 可维护性
规定若干需求以确保软件是可维护的。例如:
a. 软件模块所需要的特殊的耦合矩阵;
b. 为微型装置指定特殊的数据\程序分割要求。
3.5.4 可转移 \转换性
规定把软件从一种环境移植到另一种环境所要求的用户程序,用户接口兼容方面的约束等等。
3.5.5 警告
指定所需属性十分重要,它使得人们能用规定的方法去进行客观的验证。
3.6 其他需求
根据软件和用户组织的特性等,某些需求放在下面各项中描述。
3.6.1 数据库
本项对作为产品的一部分进行开发的数据库规定一些需求,它们可能包括:
a. 在功能需求中标识的信息类别;
b. 使用的频率;
c. 存取能力;
d. 数据元素和文卷描述符;
e. 数据元素、记录和文卷的关系;
f. 静态和动态的组织;
g. 数据保存要求。
注:如果使用一个现有的数据库包,这个包应在“软件接口”中命名,并在那里详细说明其用法。
3.6.2 操作
这里说明用户要求的常规的和特殊的操作。
A. 在用户组织之中各种方式的操作。例如,用户初始化操作;
B. 交互作用操作的周期和无人操作的周期;
C. 数据处理运行功能;
D. 后援和恢复操作。
注:这里的内容有时是用户接口的一部分。
3.6.3 场合适应性需求
这里包括:
a. 对给定场合或相关任务或操作方式的任何数据或初始化顺序的需求进行定义。例如,栅值,安全界限等等。
b. 指出场合或相关任务为特点,这里可以被修改以使软件适合特殊配制的要求。