软件设计文档怎么写,如何撰写软件详细设计内容
大家好,欢迎光临。关于软件设计文档怎么写和如何撰写软件详细设计内容的相关疑惑,相信许多人都有所经历。此时此刻,你们就是在正确的地方,因为我要分享的就是关于软件设计文档怎么写和如何撰写软件详细设计内容的全部故事。虽然文章篇幅稍长,但每一段都有其信息价值,希望读者们能耐心阅读下去,给自己一个学习的机会。
软件详细设计说明书
面向对象软件设计说明书模板
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.0概述这部分提供对整个设计文档的概述。描述了所有数据,结构,接口和软件构件级别的设计。
1.1目标和对象描述软件对象的所有目标。
1.2陈述范围软件描述。主要输入,过程功能,输出的描述,不考虑详细细节。
1.3软件内容软件被置于商业或者产品线中,讨论相关的战略问题。目的是让读者能够对“宏图”有所了解。
1.4主要系统参数任何商务软件或者产品线都包含软件规定、设计、实现和测试的说明和规范。
2.0数据设计描述所有数据结构包括内部变量,全局变量和临时数据结构。
2.1内部软件数据结构描述软件内部的构件之间的数据传输的结构。
2.2全局数据结构描述主要部分的数据结构。
2.3临时数据结构为临时应用而生成的文件的描述。
2.4数据库描述作为应用程序的一部分,描述数据库结构。
3.0结构化和构件级别设计描述程序结构。
3.1程序结构详细描述应用程序所选定的程序结构。
3.1.1结构图图形化描述结构。
3.1.2选择性讨论其它可供考虑的结构。选定3.1.1中结构类型的原因。
3.2构件描述详细描述结构中的每个软件构件。
3.2.1构件过程叙述(PSPEC)描述构件的过程。
3.2.2构件接口描述详细描述构件的输入和输出。
3.2.3构件执行细节每个构件的详细演算描述。
3.2.3.1接口描述
3.2.3.2演算模型(e.g., PDL)
3.2.3.3规范/限制 ]
3.2.3.4本地数据结构
3.2.3.5在3.2.3.6设计中包含的执行结果
3.3软件接口描述软件对外界的接口描述
3.3.1机器对外接口与其他机器或者设备的接口描述。
3.3.2系统对外接口对其它系统、产品和网络的接口描述。
3.3.3与人的接口概述软件与任何人的界面。
4.0用户界面设计描述软件的用户界面设计。
4.1描述用户界面详细描述用户界面,包括屏幕显示图标、图片或者类型。
4.1.1屏幕图片从用户角度描述界面。
4.1.2对象和操作所有屏幕对象和操作的定义。
4.2界面设计规范用户界面的设计和实现的规范和标准。
4.3可见构件实现的GUI可见构件说明。
4.4 UIDS描述用户界面开发系统描述。
5.0约束、限制和系统参数会影响软件的规格说明、设计和实现的特殊事件。
6.0测试标准测试策略和预备测试用例描述。
6.1测试的类别规定实施测试的类别,包括尽量详细的描述。这里是针对黑盒测试现象的描述。
6.2期待软件反馈测试期待的结果描述。
6.3执行界线特殊执行需要的说明。
6.4重要构件确认决定性构件或者需要特殊注意的构件的测试确认。
7.0附录设计说明的补充信息。
7.1系统可跟踪矩阵一个定期回归系统规格跟踪软件需求的矩阵。
7.2产品战略如果规格说明书是为一个产品设计的,描述相关的产品战略。
7.3使用分析算法描述所有分析活动所使用到的分析算法。
7.4补充信息(如果有需要特别说明的)
如何撰写软件详细设计内容
首先确定详细设计说明书的“详细”是到什么程度,如该项目我决定为每个页面都写说明书,也就是挑选出需要描述的对象
1
系统包含相当多的页面,为了方便观看,以系统模块为小组将文档分成了不同的小组,确立大的框架 2
考虑每个页面要描述的内容,要求重点是“详细描述页面之间的关联”
描述各个部分:程序描述、功能、关联关系、逻辑流程
即重点是“关联关系” 3
程序描述:描述页面功能;功能:列出页面所提供的功能 4
关联关系:如页面 A和页面 B有关联,个人理解是重点描述“页面 A中哪些参数的改变会对页面 B产生影响”以及“产生什么样的影响”
具体只是将参数列出,并未列出参数值
首先展现页面中的元素,3列表格:左边列出用到的数据库中的表、中间列出关键的字段必须包含参数、右边列出受该页面影响的其它页面
因为关系包含两部分:①页面自身元素之间的关系(各种计算等);②该页面元素改变会影响到其它页面的关系
第①种关系利用语言加上简单的公式描述即可;第②种关系则要侧重于利用“参数”来说明该参数的改变会对其它页面产生什么影响
5
流程逻辑:是为了使人一眼就能看出页面之间的关系,要突出重点
画的略为详细:开始→即打开了页面,页面上的所有元素信息均是从数据库中调取的,有所体现→用户操作,判断用户操作是否规范→信息保存到数据库相应字段中,根据哪些字段保存
附:页面中所有的元素信息都是从数据库中获取的,所以只要数据库中的信息改变,页面就会受到影响,所以我们把信息是根据什么字段存储到数据库中去的描述清楚即可