1 引言
1.1 编写目的
依照需求规格说明书和概要设计说明书,在本文档中详尽说明软件的详细设计,包括修正或者发行版本号,以便于编程。如果这个软件详细设计只与整个系统的一部分有关系,那么只叙述文档中说明的部分或子系统。
为系统编码提供依据。
1.2 背景
说明:
这份文档所描述的软件系统的名称;
该软件项目的任务提出者、开发者、用户(或首批用户)及安装此软件的计算中心。
1.3 术语****定义
列出本文件中用到的专门术语的定义和外文首字母组词的原词组。
1.4 参考资料
列举编写软件详细设计说明书时所直接参考的资料或其他资源。可能包括用户界面风格指导、合同、标准、系统需求规格说明、使用实例文档或相关软件需求规格说明、概要设计说明等。在这里,最好给出详细的信息,包括标题名称、作者、版本号、日期、出版单位或资料来源,以便于读者查阅这些文献。
2 综合描述
2.1 系统目标
系统最终要解决的实际问题或要达到的用户要求,系统如何能够做到客户满意。
2.2 系统概述
简述系统功能,映射详细设计的基础轮廓;
2.3 运行环境
描述软件的运行环境,包括硬件平台、操作系统和版本,还有其他软件组件或与其共存的应用程序。如与概要设计说明中一致,可注明参照概要设计说明,如果概要设计中描述的运行环境较为概括无法明确程序的具体分布和运行方式,须在本处详细说明运行环境,以便能明确程序的具体分布和运行。
体系结构说明。
2.4 程序结构说明
最终的程序分布图及说明(可执行程序、自己开发的动态链接库、自己开发的静态链接库、数据配置文件、资源文件等最终程序包中包含的程序文件,并非源程序结构)、结构图及功能与调用关系简要说明、程序种类说明。本节为以下详细设计的简要索引,为系统程序的上层结构体系描述。详细设计时可能得不到精确的最终程序文件名列表,但是应当尽量完整说明其种类和主要文件内容,在程序编码结束前应将本节补齐,如果在开发过程中设计发生变化,本节也应当做相应变更。
2.5 源程序及编译链接组装说明
本处为源程序和前一节的最终程序如函数库、可执行程序、资源文件等的对照表,以及从源程序文件转化成这些最终文件的具体过程(编译、链接、组装)描述。在详细设计时可能得不到精确的源程序文件名,但是应当尽量完整说明其种类和主要文件内容,在程序编码结束前应将本节补齐,如果在开发过程中设计发生变化,本节也应当做相应变更。
如果不同的文件具有不同的编译链接组装方式,则应在此处分别描述清楚。
在此处应明确分出各级编译单元,即哪些文件需要一起编译生成一个或一组编译后的文件。编译单元文件可以是最终文件也可以是源程序和最终文件之间的中间文件。
因为源程序结构以及编译链接组装方式可能在程序开发后期才能定出,本节可以独立成册,但须与前一节保持一致。本处应注明参见哪个文件。
3 系统详细设计
系统详细设计应当以2.4节内容为索引,而不是2.5节,换句话说,应当以最终的物理功能实现为主线索,源程序的结构作为辅线索。如:在说明公共函数所在的动态链接库时,如果动态链接库只有一个,而对应的源程序有三个,应当先在下面某节描述本动态链接库,说明动态链接库的详细设计,然后在动态链接库的详细设计中说明它的源程序构成,并列出源程序与函数的对照表。如果某一源程序仅包含公共变量或约定等信息,而且这些内容已经在其它地方说明,则此处也应注明,作为索引。在本节的下一层描述函数详细设计。如果遇到概要设计中没有写明的逻辑问题,则应通知概要设计人员及时讨论并变更概要设计。
如果源程序和最终程序的对应关系不能确定,则可略去此关系说明,直接在下一层描述函数详细设计。
如果系统很大可以按照第2章第4节的索引将本章分解成若干子文件描述,每份描述子系统的文件可以直接按本章的章节描述,也可以加进第2节的章节进一步描述子系统的综述部分,子系统设计文件均重新编章节序号,分出的子系统的设计文件需要在本章各节注明并详细描述接口。
本处无文字。
3.1 子系统名称1
3.1.1 程序名称1
3.1.1.1 程序特征描述
程序名称1表示的是什么类型,如可执行程序、动态链接库、函数、成员函数子过程等,如果是物理文件名如:可执行程序,可以在此描述它的来源。如果是函数,则可在此描述其调用形式,如:int GetNum(int iNum1,char cCha1);
3.1.1.2 程序功能性能描述
程序名称1所完成的功能,如果有明确的性能指标分配,应当也在此注明。
3.1.1.3 输入/输出项
如果是函数则说明:输入参数、输出参数、返回值,以及函数的处理对象在处理前和处理后的状态。如果是其它形式的处理单元,则描述相应的输入输出形式和内容。
如果输入输出需要某种条件触发,需明确描述输入输出项的发生条件。
如本程序名称代表的实体是一个无算法的实体如字体资源文件,则本节可略。
3.1.1.4 数据结构说明
公共变量,内存数据结构,存取的数据库表和字段,存取机制说明。如本程序名称代表的实体是一个无算法的实体如字体资源文件,则本节可略。
涉及的表结构以及字段说明。
3.1.1.5 接口定义
本处描述调用和被调用关系,本程序名称1代表的实体被哪个或哪些实体主调,被调用或被触发方式;另外本实体调用的可执行程序公共函数库或函数,以及调用或触发方式。
3.1.1.6 算法
上述因素的具体逻辑关系精确描述,如内存数据结构的初始化公式,计算公式等,数据库表及字段与内存变量的对应等。如果在功能中可以严格描述上述因素的逻辑关系,如本程序名称代表的实体是一个无算法的实体如字体资源文件,则本节可略。
3.1.1.7 程序逻辑流程图
从程序出发,描述程序功能和算法的的逻辑流程图,如本程序名称代表的实体是一个无算法的实体如字体资源文件,则本节可略。
3.1.1.8 测试要点
列出本程序实体的测试要点,表明本实体能做到什么,不能做到什么,为编写单元测试用例和组装测试用例提供依据,组装测试用例主要以接口部分的设计和测试要点为依据。
3.1.2 程序名称2
3.1.2.1 程序特征描述
程序名称1表示的是什么类型,如可执行程序、动态链接库、函数、成员函数子过程等,如果是物理文件名如:可执行程序,可以在此描述它的来源。如果是函数,则可在此描述其调用形式,如:int GetNum(int iNum1,char cCha1);
3.1.2.2 程序功能性能描述
程序名称1所完成的功能,如果有明确的性能指标分配,应当也在此注明。
3.1.2.3 输入/输出项
如果是函数则说明:输入参数、输出参数、返回值,以及函数的处理对象在处理前和处理后的状态。如果是其它形式的处理单元,则描述相应的输入输出形式和内容。
如果输入输出需要某种条件触发,需明确描述输入输出项的发生条件。
如本程序名称代表的实体是一个无算法的实体如字体资源文件,则本节可略。
3.1.2.4 数据结构说明
公共变量,内存数据结构,存取的数据库表和字段,存取机制说明。如本程序名称代表的实体是一个无算法的实体如字体资源文件,则本节可略。
涉及的表结构以及字段说明。
3.1.2.5 接口定义
本处描述调用和被调用关系,本程序名称1代表的实体被哪个或哪些实体主调,被调用或被触发方式;另外本实体调用的可执行程序公共函数库或函数,以及调用或触发方式。
3.1.2.6 算法
上述因素的具体逻辑关系精确描述,如内存数据结构的初始化公式,计算公式等,数据库表及字段与内存变量的对应等。如果在功能中可以严格描述上述因素的逻辑关系,如本程序名称代表的实体是一个无算法的实体如字体资源文件,则本节可略。
3.1.2.7 程序逻辑流程图
从程序出发,描述程序功能和算法的的逻辑流程图,如本程序名称代表的实体是一个无算法的实体如字体资源文件,则本节可略。
3.1.2.8 测试要点
列出本程序实体的测试要点,表明本实体能做到什么,不能做到什么,为编写单元测试用例和组装测试用例提供依据,组装测试用例主要以接口部分的设计和测试要点为依据。
4 用户界面详细设计
因为用户界面虽然也属于程序功能的一部分,但是多数系统的用户界面较为复杂和琐碎,需要将其与后台处理分开设计,包括数据库表设计。用户界面是作为外部接口的一部分体现在概要设计中的。本章着重设计用户界面的外观要素和界面处理流程,以及主要的界面级和界面事件级的约束。
本章可以单独成册,也可以融在前一章说明。
本处无文字。
4.1 界面结构
4.1.1 界面结构或菜单结构
在本处描述界面的结构,可以以树形结构的形式描述,并加以说明。也可以以其它方式。
4.1.2 用户界面图
以上述结构为索引描述每个用户界面,可以用工具画出,在此处说明其编号。如果界面较为明确也可以略去本节。
4.1.3 用户界面与模块关系表
4.2 界面处理流程及界面约束描述
4.2.1 界面或模块名1
4.2.1.1 处理流程
界面间的调用关系,可以画流程图并加以说明。
4.2.1.2 界面约束与事件约束
描述相关界面的界面级约束和事件级约束。
4.2.1.3 触发方式
描述界面的触发方式,如通过点击菜单、右键、鼠标移入某区域、某自动事件发生等。