详细设计说明书到底怎么写?
详细设计,这是考验技术专家设计思维的重要关卡,详细设计说明书应当把具体的模块以最’干净’的方式(黑箱结构)提供给编码者,使得系统整体模块化达到最大;一份好的详细设计说明书,可以使编码的复杂性减低到最低,实际上,严格的讲详细设计说明书应当把每个函数的每个参数的定义都精精细细的提供出来,从需求分析到概要设计到完成详细设计说明书,一个软件项目就应当说完成了一半了。换言之,一个大型软
件系统在完成了一半的时候,其实还没有开始一行代码工作。
那些把作软件的程序员简单理解为写代码的,就从根子上犯了错误了。
面向对象软件设计说明书模板
1 概述
1.1 系统简述
对系统要完成什么,所面向的用户以及系统运行的环境的简短描述,这部分主要来源于需求说明书的开始部分。
1.2 软件设计目标
这部分论述整个系统的设计目标,明确地说明哪些功能是系统决定实现而哪些时不准备实现的。同时,对于非功能性的需求例如性能、可用性等,亦需提及。需求规格说明书对于这部分的内容来说是很重要的参考,看看其中明确了的功能性以及非功能性的需求。
这部分必须说清楚设计的全貌如何,务必使读者看后知道将实现的系统有什么特点和功能。在随后的文档部分,将解释设计是怎么来实现这些的。
1.3 参考资料
列出本文档中所引用的参考资料。(至少要引用需求规格说明书)
1.4 修订版本记录
列出本文档修改的历史纪录。必须指明修改的内容、日期以及修改人。
2 术语表
对本文档中所使用的各种术语进行说明。如果一些术语在需求规格说明书中已经说明过了,此处不用再重复,可以指引读者参考需求说明。
3 用例
此处要求系统用用例图表述(UML),对每个用例(正常处理的情况)要有中文叙述。
4 设计概述
4.1 简述
这部分要求突出整个设计所采用的方法(是面向对象设计还是结构化设计)、系统的体系结构(例如客户/服务器结构)以及使用到的相应技术和工具(例如OMT、Rose)
4.2 系统结构设计
这部分要求提供高层系统结构的描述,使用方框图来显示主要的组件及组件间的交互。最好是把逻辑结构同物理结构分离,对前者进行描述。别忘了说明图中用到的俗语和符号。
4.2.1 顶层系统结构
4.2.2 子系统1结构
4.2.3 子系统2结构
4.3 系统界面
各种提供给用户的界面以及外部系统在此处要予以说明。如果在需求规格说明书中已经对用户界面有了叙述,此处不用再重复,可以指引读者参考需求说明。如果系统提供了对其它系统的接口,比如说从其它软件系统导入/导出数据,必须在此说明。
4.4 约束和假定
描述系统设计中最主要的约束,这些是由客户强制要求并在需求说明书写明的。说明系统是如何来适应这些约束的。
另外如果本系统跟其它外部系统交互或者依赖其它外部系统提供一些功能辅助,那么系统可能还受到其它的约束。这种情况下,要求清楚地描述与本系统有交互的软件类型(比如某某某数据库软件,某某某EMail软件)以及这样导致的约束(比如只允许纯文本的Email)。
实现的语言和平台也会对系统有约束,同样在此予以说明。
对于因选择具体的设计实现而导致对系统的约束,简要地描述你的想法思路,经过怎么样的权衡,为什么要采取这样的设计等等。
5 对象模型
5.1 系统对象模型
提供整个系统的对象模型,如果模型过大,按照可行的标准把它划分成小块,例如可以把客户端和服务器端的对象模型分开成两个图表述。
对象图应该包含什么呢?
在其中应该包含所有的系统对象。这些对象都是从理解需求后得到的。要明确哪些应该、哪些不应该被放进图中。
所有对象之间的关联必须被确定并且必须指明联系的基数(一对一、一对多还是多对多,0..1,*,1..*)。聚合和继承关系必须清楚地确定下来。每个图必须附有简单的说明。
可能经过多次反复之后才能得到系统的正确的对象模型。
6 对象描述
在这个部分叙述每个对象的细节,它的属性、它的方法。在这之前必须从逻辑上对对象进行组织。你可能需要用结构图把对象按子系统划分好。
为每个对象做一个条目。在系统对象模型中简要的描述它的用途、约束(如只能有一个实例),列出它的属性和方法。如果对象是存储在持久的数据容器中,标明它是持久对象,否则说明它是个临时对象(transient object)。
对每个对象的每个属性详细说明:名字、类型,如果属性不是很直观或者有约束(例如,每个对象的该属性必须有一个唯一的值或者值域是有限正整数等)。
对每个对象的每个方法详细说明:方法名,返回类型,返回值,参数,用途以及使用的算法的简要说明(如果不是特别简单的话)。如果对变量或者返回值由什么假定的话,Pre-conditions和Post-conditions必须在此说明。列出它或者被它调用的方法需要访问或者修改的属性。最后,提供可以验证实现方法的测试案例。
6.1 子系统1中的对象
6.1.1 对象:对象1
用途:
约束:
持久性:
6.1.1.1 属性描述:
1. 属性:属性1
类型:
描述:
约束:
2. 属性:属性2
6.1.1.2 方法描述:
1. 方法:方法1
返回类型:
参数:
返回值:
Pre-Condition:
Post-Condition:
读取/修改的属性:
调用的方法:
处理逻辑:
测试例:用什么参数调用该方法,期望的输出是什么……
7 动态模型
这部分的作用是描述系统如何响应各种事件。例如,可以建立系统的行为模型。一般使用顺序图和状态图。
确定不同的场景(Scenario)是第一步,不需要确定所有可能的场景,但是必须至少要覆盖典型的系统用例。不要自己去想当然地创造场景,通常的策略是描述那些客户可以感受得到的场景。
7.1 场景(Scenarios)
对每个场景做一则条目,包括以下内容:
场景名:给它一个可以望文生义的名字
场景描述:简要叙述场景是干什么的以及发生的动作的顺序。
顺序图:描述各种事件及事件发生的相对时间顺序。
7.1.1 场景:场景1
描述:
动作1
动作2
7.2 状态图
这部分的内容包括系统动态模型重要的部分的状态图。可能你想为每个对象画一个状态图,但事实上会导致太多不期望的细节信息,只需要确定系统中一些重要的对象并为之提供状态图即可。
7.2.1 状态图1:
8 非功能性需求
在这个部分,必须说明如何处理需求文档中指定的非功能性需求。尽可能客观地评估系统应付每一个非功能性的需求的能力程度。如果某些非功能性需求没有完全在设计的系统中实现,请务必在此说明。另外,你也需要对系统将来的进化作一个估计并描述本设计如何使系统能够适应这些可预见的变化。
9 辅助文档
提供能帮助理解设计的相应文档。
10 词汇索引
文章录入
写作主要有以下几个要点:
1、社会大环境如何【可利用相关数据平台的数据做支撑】
2、行业环境如何【可以利用行业报告做支撑】
3、目前需要解决的问题【自己论述】
这些内容首先需要使用比较宽泛的语言进行论述,然后利用大环境的数据做支撑,行业环境写作也是这样,先论述行业环境情况,然后引用行业数据报告作支撑,解决问题也就是其应用现实生活那些方面,还有在理论方面具有哪些指导意义。
选题的意义与价值
1、理论方面
一般有以下几种情况:
(1)就哲学的高度而言,需要研究的价值意义;
(2)就专业或学科角度而言,需要研究的价值意义;
(3)就某个理论角度而言,需要研究的价值意义;
2、实践方面
主要包括:
(1)就实际的工作实践活动未来发展趋势、前景而言,需要研究的价值意义;
(2)就实际的现在工作的实践活动而言,需要研究的价值意义;
(3)就实际的现在工作的实践活动改进而言,需要研究的价值意义。
编制概要设计说明书的内容,要求如下:
11.1引言
11.1. 1编写目的
11.1.2背景
11.1.3定义
11.1.4参考资料
11.2总体设计
11.2.1需求规定
11.2.2运行环境
11.2.3基本设计概念和处理流程
11. 2. 4”结构
11.2.5功能需求与程序的关系
11. 2. 6人工处理过程
11.2.7尚未解决的问题
11.3接口设计
11.31用户接口
11.32外部接口
11.3 3内部接口
11.4运行设计
11. 4. 1运行模块组合
11.4.2运行控制
11.4.3运行时间
11.5系统论据结构设计
11. 5. 1逻辑结构设计要点
11. 5. 2物理结构设计要点
11.5.3数据结构与程序的关系
11. 6系统出错处理设计
11. 6. 1出错信息
11.6.2补救措施
11.6 3系统维护设计
概要设计说明书的编写提示(参考件)
E.1引言
E.1.1编写目的
说明编写这份概要设计说明书的目的,指出预期的读者。
E.1.2背景
说明:
a.待开发软件系统的名称;
b.列出此项目的任务提出者、开发者、用户以及将运行该软件的计算站(中心)。
E.1.3定义
列出本文件中用到的专门术语的定义和外文首字母组词的原词组。
E.1.4参考资料
列出有关的参考文件,如:
a.本项目的经核准的计划任务书或合同,上级机关的批文;
b.属于本项目的其他已发表文件;
c.本文件中各处引用的文件、资料,包括所要用到的软件开发标准。 列出这些文件的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。
E.2总体设计
E.2.1需求规定
说明对本系统的主要的输入输出项目、处理的功能性能要求,详细的说明可参见附录C。
E.2.2运行环境
简要地说明对本系统的运行环境(包括硬件环境和支持环境)的规定,详细说明参见附录C。
E.2.3基本设计概念和处理流程
说明本系统的基本设计概念和处理流程,尽量使用图表的形式。
E.2.4结构
用一览表及框图的形式说明本系统的系统元素(各层模块、子程序、公用程序等)的划分,扼要说明每个系统元素的标识符和功能,分层次地给出各元素之间的控制与被控制关系.
E.2.5功能器求与程序的关系
本条用一张如下的矩阵图说明各项功能需求的实现同各块程序的分配关系:
E.2.6人工处理过程
说明在本软件系统的工作过程中不得不包含的人工处理过程(如果有的话)。
E.2.7尚未问决的问题
说明在概要设计过程中尚未解决而设计者认为在系统完成之前必须解决的各个问题。
E.3 接口设计
E.3.1用户接口
说明将向用户提供的命令和它们的语法结构,以及软件的回答信息。
E.3.2外部接口
说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与各支持软件之间的接 口关系。
E.3.3内部接口
说明本系统之内的各个系统元素之间的接口的安排。
E.4运行设计
E.4.1运行模块组合
说明对系统施加不同的外界运行控制时所引起的各种不同的运行模块组合,说明每种运行所历经的内部模块和支持软件。
E.4.2运行控制
说明每一种外界的运行控制的方式方法和操作步骤。
E.4.3运行时间
说明每种运行模块组合将占用各种资源的时间。
E.5系统数据结构设计
E.5.1逻辑结构设计要点
给出本系统内所使用的每个数据结构的名称、标识符以及它们之中每个数据项、记录、文卷和系的标识、定义、长度及它们之间的层次的或表格的相互关系。
E.5.2物理结构设计要点
给出本系统内所使用的每个数据结构中的每个数据项的存储要求,访问方法、存取单位、存取的物理关系(索引、设备、存储区域)、设计考虑和保密条件。
E.5.3数据结构与程序的关系
说明各个数据结构与访问这些数据结构的形式:
E.6系统出错处理设计
E.6.1出错信息
用一览表的方式说朗每种可能的出错或故障情况出现时,系统输出信息的形式、含意及处理方法。
E.6.2补救措施
说明故障出现后可能采取的变通措施,包括:
a.后备技术说明准备采用的后备技术,当原始系统数据万一丢失时启用的副本的建立和启动的技术,例如周期性地把磁盘信息记录到磁带上去就是对于磁盘媒体的一种后备技术;
b.降效技术说明准备采用的后备技术,使用另一个效率稍低的系统或方法来求得所需结果的某些部分,例如一个自动系统的降效技术可以是手工操作和数据的人工记录;
c.恢复及再启动技术说明将使用的恢复再启动技术,使软件从故障点恢复执行或使软件从头开始重新运行的方法。
E.6.3系统维护设计
说明为了系统维护的方便而在程序内部设计中作出的安排,包括在程序中专门安排用于系统的检查与维护的检测点和专用模块。 各个程序之间的对应关系,可采用如下的矩阵图的形式;