如何写详细设计文档
在大多数软件项目中,要末不作详细设计,要么开发完成后再补详细设计文档,质量也不容乐观,文档与系统往往不能同步,使详细设计文档完全流于形式,对工作没有起到实际的帮助。
·
详细设计是相对概要设计而言的,是瀑布开发流程的一个重要环节,在概要设计的高层设计的基础上,从逻辑上实现了每一模块的功能,是编码阶段的主要参考资料,是从高层到低层、逐步精化思想的具体实现。
详细设计文档的内容包括各个模块的算法设计,
接口设计,
数据结构设计,交互设计等。必须写清楚各个模块/接口/公共对象的定义,列明各个模块程序的
各种执行条件与期望的运行效果,还要正确处理各种可能的异常。
·
在开发过程中,由需求及设计不正确、不完整所导致的问题是项目进度拖延、失败的一个主要因素,而软件系统的一个重要特性就是需求和设计的不断构建和改进,在写详细设计文档过程中,
详细设计实际上是对系统的一次逻辑构建,可以有效验证需求的完整性及正确性。
如果不写详细设计文档,一般就从概设直接进入编码阶段,这时开发人员所能参考的资料就是需求规格说明书及页面原型、数据库设计等,不能直接进行开发,需要进行信息的沟通,把页面原型不能体现的设计讲清楚,这样既容易遗忘,也容易发生问题,详细设计文档可以作为需求人员、总体设计人员与开发人员的沟通工具,把静态页面无法体现的设计体现出来,包含整体设计对模块设计的规范,体现对设计上的一些决策,例如选用的算法,对一些关键问题的设计考虑等等,使开发人员能快速进入开发,提高沟通效率,减少沟通问题。
对于系统功能的调整,后期的维护,详设文档提供了模块设计上的考虑、决策,包括模块与整体设计的关系、模块所引用的数据库设计、重要操作的处理流程、重要的业务规则实现设计等等信息,提供了对模块设计的概述性信息,阐明了模块设计上的决策,配合代码注释,可以相对轻松读懂原有设计。
·存在的问题要由专门的人写,是比较麻烦的,也是很需要时间的,会对进度造成压力,也容易形成工作瓶颈,使设计人员负担过重,而开发人员无事可作。对于现在一般的以数据库为中心的管理系统而言,这个工作始终是要作的,区别只不过是不是形成专门文档,形成文档可能会多花一两周时间,但相对于规避的风险和问题来说,也是值得的,另外由于现在高级语言的流行,所以更详细的设计应该直接体现在代码的设计上,而文档则只体现设计上的一些决策,协调整体设计与模块设计的关系,把页面原型所不能体现的设计情况文档化,所以所花费的时间是有限的。
设计内容容易过细,但设计阶段是不能考虑特别清楚地,时间也不允许。
对于这个问题,一个对策是上边所提到的,文档只体现设计上的决策,页面原型所不能反映的信息,详细设计只体现总体设计对模块设计的一些考虑,例如对功能的数据库设计等等,而具体的实现实现,则到代码中再去实现,相关的设计也仅体现在代码中。
需求、设计需要不断的被更新、构建,则设计文档需要不断的重新调整,文档的维护需要跟上,否则文档和系统的同步就很难得到保障了,且造成多余的工作量。文档的内容易流于形势,质量糟糕,不能成为开发人员的参考手册,一是要建立起相关制度,如有修改,先改文档,后作开发,从工作流程上切实保障文档与系统的同步,二是要规范文档质量,对文档该写什么,不该写什么,标准是什么,粒度是什么,语法应该如何组织,有明确的标准和考虑,同时,建立审计文档评审、审核制度,充分保障系统的使用。·
首先是文档的内容,根据项目和团队的不同,详细设计文档的内容也有所不同,一般说来,粒度不宜过细,不能代替开发人员的设计和思考,但要把有关设计的决策考虑进去,包括与其他模块、整体设计的关系、操作的处理流程,对业务规则的设计考虑等,有一个标准为,凡是页面原型、需求规格说明书所不能反映的设计决策,而开发人员又需要了解的,都要写入文档。
其次是文档所面向的读者,主要为模块开发人员、后期维护人员,模块开发人员通过详细设计文档和页面原型来了解所开发的功能,后期维护人员通过实际系统、模块代码、详细设计文档来了解一个功能。
再有就是谁来写文档,因为文档主要考虑的是设计上的决策,所以写文档的人应该为负责、参加设计的技术经理、资深程序员,根据团队情况和项目规模、复杂度的不同,也有所不同。
还需要保证文档的可读性、准确性、一致性,要建立严格的文档模板及标准,保证文档的可读性及准确性,同时建立审核及设计评审制度,来保障设计及文档的质量,另外在工作流程中要强调,要先设计、先写文档,再进行开发。
详细设计,这是考验技术专家设计思维的重要关卡,详细设计说明书应当把具体的模块以最’干净’的方式(黑箱结构)提供给编码者,使得系统整体模块化达到最大;一份好的详细设计说明书,可以使编码的复杂性减低到最低,实际上,严格的讲详细设计说明书应当把每个函数的每个参数的定义都精精细细的提供出来,从需求分析到概要设计到完成详细设计说明书,一个软件项目就应当说完成了一半了。换言之,一个大型软
件系统在完成了一半的时候,其实还没有开始一行代码工作。
那些把作软件的程序员简单理解为写代码的,就从根子上犯了错误了。
每个模块的实现算法、所需的局部数据结构
。详细设计的目标有两个:实现模块功能的算法要逻辑上正确和算法描述要简明易懂。
主要任务:1.为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;2.确定每一模块使用的数据结构;3.确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。
在详细设计结束时,应该把上述结果写入详细设计说明书,并且通过复审形成正式文档。交付给下一阶段(编码阶段)的工作依据。4.要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。
详细设计的工具:1.图形工具利用图形工具可以把过程的细节用图形描述出来。2.表格工具可以用一张表来描述过程的细节,在这张表中列出了各种可能的操作和相应的条件。3.语言工具用某种高级语言(称之为伪码)来描述过程的细节。
1.1. 编写目的
本文档的目的,旨在规范软件开发,推动项目有序正常的进行,使相关人员遵守统一的规范。节省制作相关文档的时间,降低系统实现的风险,加快项目实施进度,做到系统设计的规范性和全面性,以利于系统的设计、实现、测试、维护和版本升级。
1.2. 项目范围
本文档用于软件设计阶段的概要设计,它的上游(依据的基线)是项目需求分析书,它的下游是项目详细设计说明书,并为详细设计说明书提供测试的依据。
软件概要设计的范围是:客户端软件系统总体结构、外部接口、主要部件功能分配、全局数据结构以及部件之间的接口等方面的内容。
2. 软件概述
2.1. 爱私货概括
本文档用于软件设计阶段的概要设计,它的上游(依据的基线)是项目需求分析书,它的下游是项目详细设计说明书,并为详细设计说明书提供测试的依据。
2.2. APP功能
本文档用于软件设计阶段的概要设计,它的上游(依据的基线)是项目需求分析书,它的下游是项目详细设计说明书,并为详细设计说明书提供测试的依据。
在毕业论文设计中,详细设计和功能实现主要写:系统应对哪些信息做怎样一些存储,讨论了该系统对人员与平台的要求,确定新系统的逻辑模型,即从抽象的信息管理角度出发,为使用户满意,竭尽所能运用自己所学的知识进行论文写作和系统开发。
毕业设计旨在培养学生综合运用所学理论、知识和技能解决实际问题的能力。在教师指导下,学生就选定的课题进行工程设计和研究,包括设计、计算、绘图、工艺技术、经济论证以及合理化建议等,最后提交一份报告。应尽量选与生产、科学研究任务结合的现实题目,亦可做假拟的题目。
学生只有在完成教学计划所规定的理论课程、课程设计与实习,经考试、考查及格后始可进行。是评定毕业成绩的重要依据,学生通过毕业设计答辩,成绩评定及格才能毕业。
扩展资料
高等学校技术科学专业及其他需培养设计能力的专业或学科应届毕业生的总结性独立作业。要求学生针对某一课题,综合运用本专业有关课程的理论和技术,作出解决实际问题的设计。毕业设计是高等学校教学过程的重要环节之一。
相当于一般高等学校的毕业论文。目的是总结检查学生在校期间的学习成果,是评定毕业成绩的重要依据;同时,通过毕业设计,也使学生对某一课题作专门深入系统的研究,巩固、扩大、加深已有知识,培养综合运用已有知识独立解决问题的能力。
毕业设计也是学生走上国家建设岗位前的一次重要的实习。
一些国家根据学生的毕业设计,授予一定的学衔。如建筑师、农艺师、摄影师等。中国把毕业设计和毕业考试结合起来,作为授予学士学位的依据。
系统详细设计包括以下内容:
1、 系统结构设计及子系统划分
划分系统功能模块或子系统(如果有或者有必要,特别是大型的软件系统)。
2、系统功能模块详细设计
按结构化设计方法,在系统功能逐层分解的基础上,对系统各功能模块或子系统进行设计。此为详细设计的主要部分之一。
3、系统界面详细设计
系统界面说明应用系统软件的各种接口。整个系统的其他接口(如系统硬件接口、通讯接口等)在相应的部分说明。
4、外部界面设计
根据系统界面划分进行系统外部界面设计,对系统的所有外部接口(包括功能和数据接口)进行设计。
5、内部界面设计
设计系统内部各功能模块间的调用关系和数据接口。
6、用户界面设计
规定人机界面的内容、界面风格、调用方式等,包括所谓的表单设计、报表设计和用户需要的打印输出等设计。
扩展资料:
系统详细设计内容:
用层次图描述系统的总体结构、功能分解及各个模块之间的相互调用关系和信息交互,用IPO图或其他方法描述各模块完成的功能。
以上建议采用HIPO图进行功能分解与模块描述,更高的要求建议采用IDEF0方法进行功能模型设计。
详细设计应用系统的各个构成模块完成的功能及其相互之间的关系。
用IPO或结构图描述各模块的组成结构、算法、模块间的接口关系,以及需求、功能和模块三者之间的交叉参照关系。
每个模块的描述说明可参照以下格式:
模块编号:
模块名称:
输入:
处理:
算法描述:
输出:
其中处理和算法描述部分主要采用伪码或具体的程序语言完成。
对详细设计更高的要求建议用IDEF0图进行各功能模块的设计。
如果对软件需进行二次开发(包括功能扩展、功能改造、用户界面改造等),则相应的设计工作应该设立子课题完成。
参考资料:百度百科 ------ 系统设计
详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等
概要设计和详细设计
在软件设计中,大家经常问到的一个问题是:概要设计应该怎样一个概要法,详细设计应该怎样一个详细法?
这个问题在公司内部经常有人问。现在陈述一下。
我们公司的研发流程是瀑布型的,这个模型中的分析、设计阶段是基于经典的结构化方法。
结构化设计方法的基本思路是:按照问题域,将软件逐级细化,分解为不必再分解的的模块,每个模块完成一定的功能,为一个或多个父模块服务(即接受调用),也接受一个或多个子模块的服务(即调用子模块)。模块的概念,和编程语言中的子程序或函数是对应的。
这样一来,设计可以明显地划分成两个阶段:
概要(结构)设计阶段:把软件按照一定的原则分解为模块层次,赋予每个模块一定的任务,并确定模块间调用关系和接口。
详细设计阶段:依据概要设计阶段的分解,设计每个模块内的算法、流程等。
概要设计阶段:
在这个阶段,设计者会大致考虑并照顾模块的内部实现,但不过多纠缠于此。主要集中于划分模块、分配任务、定义调用关系。模块间的接口与传参在这个阶段要定得十分细致明确,应编写严谨的数据字典,避免后续设计产生不解或误解。概要设计一般不是一次就能做到位,而是反复地进行结构调整。典型的调整是合并功能重复的模块,或者进一步分解出可以复用的模块。在概要设计阶段,应最大限度地提取可以重用的模块,建立合理的结构体系,节省后续环节的工作量。
概要设计文档最重要的部分是分层数据流图、结构图、数据字典以及相应的文字说明等。以概要设计文档为依据,各个模块的详细设计就可以并行展开了。
详细设计阶段:
在这个阶段,各个模块可以分给不同的人去并行设计。在详细设计阶段,设计者的工作对象是一个模块,根据概要设计赋予的局部任务和对外接口,设计并表达出模块的算法、流程、状态转换等内容。这里要注意,如果发现有结构调整(如分解出子模块等)的必要,必须返回到概要设计阶段,将调整反应到概要设计文档中,而不 能就地解决,不打招呼。
详细设计文档最重要的部分是模块的流程图、状态图、局部变量及相应的文字说明等。一个模块一篇详细设计文档。
概要设计文档相当于机械设计中的装配图,而详细设计文档相当于机械设计中的零件图。文档的编排、装订方式也可以参考机械图纸的方法。
我们公司对模块的认识和传统定义有所不同,认为是较大的软件功能单元才可以称作模块。这种认识使大家对概要设计和详细设计的分工产生了混乱的理解,降低了文档的可用性,应该予以纠正。
概要设计中较顶层的部分便是所谓的方案。方案文档的作用是在宏观的角度上保持设计的合理性。
有的项目采用面向对象的分析、设计方法。可能在概要设计、详细设计的分工上疑问更多。其实,面向对象的分析、设计方法并没有强调结构化方法那样的阶段性,因此一般不引入概要、详细设计的概念。如果按照公司的文档体系,非要有这种分工的话,可以将包的划分、类及对象间的关系、类的对外属性、方法及协作设计看做 概要设计;类属性、方法的内部实现看做详细设计。
1.需求分析--产生软件功能规格说明书,需要确定用户对软件的需求,要作到明确、无歧义。不涉及具体实现方法。用户能看得明白,开发人员也可据此进行下面的工作(概要设计)。
2.概要设计--产生软件概要设计说明书,说明系统模块划分、选择的技术路线等,整体说明软件的实现思路。并且需要指出关键技术难点等。
3.详细设计--产生软件详细设计说明书,对概要设计的进一步细化,一般由各部分的担当人员依据概要设计分别完成,然后在集成,是具体的实现细节。理论上要求可以照此编码。
概要设计和详细设计的区别与联系
软件设计采用自顶向下、逐次功能展开的设计方法,首先完成总体设计,然后完成各有机组成部分的设计。
根据工作性质和内容的不同,软件设计分为概要设计和详细设计。概要设计实现软件的总体设计、模块划分、用户界面设计、数据库设计等等;详细设计则根据概要设计所做的模块划分,实现各模块的算法设计,实现用户界面设计、数据结构设计的细化,等等。
概要设计是详细设计的基础,必须在详细设计之前完成,概要设计经复查确认后才可以开始详细设计。概要设计,必须完成概要设计文档,包括系统的总体设计文档、以及各个模块的概要设计文档。每个模块的设计文档都应该独立成册。
详细设计必须遵循概要设计来进行。详细设计方案的更改,不得影响到概要设计方案;如果需要更改概要设计,必须经过项目经理的同意。详细设计,应该完成详细设计文档,主要是模块的详细设计方案说明。和概要设计一样,每个模块的详细设计文档都应该独立成册。
概要设计里面的数据库设计应该重点在描述数据关系上,说明数据的来龙去脉,在这里应该结合我们的一个结果数据,说明这些结果数据的源点,我们这样设计的目的和原因。详细设计里的数据库设计就应该是一份完善的数据结构文档,就是一个包括类型、命名、精度、字段说明、表说明等内容的数据字典。
概要设计里的功能应该是重点在功能描述,对需求的解释和整合,整体划分功能模块,并对各功能模块进行详细的图文描述,应该让读者大致了解系统作完后大体的结构和操作模式。详细设计则是重点在描述系统的实现方式,各模块详细说明实现功能所需的类及具体的方法函数,包括涉及到的sql语句等。