详细设计阶段: 在这个阶段,各个模块可以分给不同的人去并行设计。在详细设计阶段,设计者的工作对象是一个模块,根据概要设计赋予的局部任务和对外接口,设计并表达出模块的算法、流程、状态转换等内容。这里要注意,如果发现有结构调整(如分解出子模块等)的必要,必须返回到概要设计阶段,将调整反应到概要设计文档中,而不能就地解决,不打招呼。详细设计文档最重要的部分是模块的流程图、状态图、局部变量及相应的文字说明等。一个模块一篇详细设计文档。
软件模块设计说明模板_软件模块设计的主要内容
概要设计文档相当于机械设计中的装配图,而详细设计文档相当于机械设计中的零件图。文档的编排、装订方式也可以参考机械图纸的方法。
不同对模块的认识和传统定义有所不同,认为是较大的软件功能单元才可以称作模块。这种认识使大家对概要设计和详细设计的分工产生了混乱的理解,降低了文档的可用性,应该予以纠正。、
概要设计中较顶层的部分便是所谓的方案。方案文档的作用是在宏观的角度上保持设计的合理性。
有的项目采用面向对象的分析、设计方法。可能在概要设计、详细设计的分工上疑问更多。其实,面向对象的分析、设计方法并没有强调结构化方法那样的阶段性,因此一般不引入概要、详细设计的概念。如果按照公司的文档体系,非要有这种分工的话,可以将包的划分、类及对象间的关系、类的对外属性、方法及协作设计看做概要设计;类属性、方法的内部实现看做详细设计。 换言之,面向对象的设计方式中,概设指的是有哪些类,祥设指的是类中的方法和出入参等(可以是伪代码)
1.需求分析--产生软件功能规格说明书,需要确定用户对软件的需求,要作到明确、无歧义。不涉及具体实现方法。用户能看得明白,开发人员也可据此进行下面的工作(概要设计)。
2.概要设计--产生软件概要设计说明书,说明系统模块划分、选择的技术路线等,整体说明软件的实现思路。并且需要指出关键技术难点等。
3.详细设计--产生软件详细设计说明书,对概要设计的进一步细化,一般由各部分的担当人员依据概要设计分别完成,然后在集成,是具体的实现细节。理论上要求可以照此编码。
首先确定详细设计说明书的 “详细” 是到什么程度, 如该项目我决定为每个页面都写说明书, 也就是挑选出需要描述的对象
1系统包含相当多的页面,为了方便观看,以系统模块为小组将文档分成了不同的小组,确 立大的框架 2
考虑每个页面要描述的内容,要求重点是“详细描述页面之间的关联”
描述各个部分: 程序描述、功能、关联关系、逻辑流程
即重点是“关联关系” 3
程序描述:描述页面功能;功能:列出页面所提供的功能 4
关联关系:如页面 A 和页面 B 有关联,个人理解是重点描述“页面 A 中哪些参数的改变 会对页面 B 产生影响”以及“产生什么样的影响”
具体只是将参数列出,并未列出参数值
首先展现页面中的元素,3 列表格:左边列出用到的数据库中的表、中间列出关键的字段必 须包含参数、右边列出受该页面影响的其它页面
因为关系包含两部分:①页面自身元素之间的关系(各种计算等) ;②该页面元素改变会影 响到其它页面的关系
第①种关系利用语言加上简单的公式描述即可;第②种关系则要侧重于利用“参数”来说明 该参数的改变会对其它页面产生什么影响
5流程逻辑:是为了使人一眼就能看出页面之间的关系,要突出重点
画的略为详细:开始→即打开了页面,页面上的所有元素信息均是从数据库中调取的 ,有 所体现→用户操作, 判断用户操作是否规范→信息保存到数据库相应字段中, 根据哪些字段 保存
附:页面中所有的元素信息都是从数据库中获取的,所以只要数据库中的信息改变,页面就 会受到影响,所以我们把信息是根据什么字段存储到数据库中去的描述清楚即可
详细设计说明书详细设计说明书编写目的
1、软件详细设计说明书2、详细设计说明书到底怎么写?3、详细设计说明书的参考资料软件详细设计说明书面向对象软件设计说明书模板 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 词汇索引 文章录入
详细设计说明书到底怎么写?
详细设计,这是考验技术专家设计思维的重要关卡,详细设计说明书应当把具体的模块以最’干净’的方式(黑箱结构)提供给编码者,使得系统整体模块化达到最大;一份好的详细设计说明书,可以使编码的复杂性减低到最低,实际上,严格的讲详细设计说明书应当把每个函数的每个参数的定义都精精细细的提供出来,从需求分析到概要设计到完成详细设计说明书,一个软件项目就应当说完成了一半了。换言之,一个大型软件系统在完成了一半的时候,其实还没有开始一行代码工作。那些把作软件的程序员简单理解为写代码的,就从根子上犯了错误了。
详细设计说明书的参考资料
列出有关详细设计说明书的参考资料,如:a.本项目的经核准的计划任务书或合同、上级机关的批文详细设计说明书;b.属于本项目的其他已发表的文件;c.本文件中各处引用到的文件资料,包括所要用到的软件开发标准。 列出这些文件的标题、文件编号、发表日期和出版单位,说明能够取得这些文件的来源。F.2程序系统的结构用一系列图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称、标识符和它们之间 的层次结构关系。F.3程序1(标识符)设计说明从本章开始,逐个地给出各个层次中的每个程序的设计考虑。以下给出的提纲是针对一般情况的。 对于一个具体的模块,尤其是层次比较低的模块或子程序,其很多条目的内容往往与它所隶属的上一层 模块的对应条目的内容相同,在这种情况下,只要简单地说明这一点即可。F.3.1程序描述给出对该程序的简要描述,主要说明安排设计本程序的目的意义,并且,还要说明本程序的特点(如 是常驻内存还是非常驻?是否子程序?是可重入的还是不可重入的?有无覆盖要求?是顺序处理还是并发 处理卜..等)。F.3.2功能说明该程序应具有的功能,可采用IPO图(即输入一处理一输出图)的形式。F.3.3性能说明对该程序的全部性能要求,包括对精度、灵活性和时间特性的要求。F.3.4输入项给出对每一个输入项的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、输入的方式。 数量和频度、输入媒体、输入数据的来源和安全保密条件等等。F. 3. 5输出项给出对每一个输出项的特性,包括名称、标识、数据的类型和格式,数据值的有效范围,输出的形式、 数量和频度,输出媒体、对输出图形及符号的说明、安全保密条件等等。F.3.6算法详细说明本程序所选用的算法,具体的计算公式和计算步骤。F.3.7流程逻辑用图表(例如流程图、判定表等)辅以必要的说明来表示本程序的逻辑流程。F.3.8接口用图的形式说明本程序所隶属的上一层模块及隶属于本程序的下一层模块、子程序,说明参数赋值和调用方式,说明与本程序相直接关联的数据结构(数据库、数据文卷)。F.3.9存储分配根据需要,说明本程序的存储分配。F.3.10注释设计
如何写需求分析报告(软件需求说明书GB856T-88)
近来学校的一些科研项目又在申报了,一些学弟开始Q我一些软件工程上书面的问题。大概的总结了下,写到这里。本文涉及到的是需求分析部分的书写,主要是根据国家标准文档中的要求来的。
在互联网公司或者一些敏捷开发的公司里,其实大家都是秉承着重开发,重讨论,而轻文档的态度。这个轻文档并不是指没有文档或者几乎不做文档,而是在严格的文档流程中解脱出来,只把最最实际的部分写出来。这个特征是有互联网本身迭代周期短,版本发布快等特点决定的。而在实际的兼职项目的时候,同学们就要注意了,最重要的应该就是在签合同的时候一定要附上最清楚的一份需求分析,虽然这份需求说明可能不是按照某些标准文档而来的,描述清楚每个功能达到的效果,而这个效果一定要让客户点头确认,而不能出现“应该是”、“可能是”、“也许是”这样的模糊回答。否则在项目后期就会比较难过了。在学校申请的项目和大型公司项目开发中,是重视文档流程的,一部一部来。所以还是看情况来对待文档的深度和标准。
一、目录: 目录要用word的 “引用”—>”目录”,自动生成目录,一般都是要三级目录。通常这部分基本都不需要改结构,直接更新页码即可。
二、内容部分。 国家标准软件需求说明书G856T-88下载
1引言
1.1编写目的
说明编写这份软件需求说明书的目的,指出预期的读者。
(这部分说明需求分析报告的概况,例如:本X需求分析报告是为S系统而编写的。+S系统的两句话概述。+本X报告旨在使U1(需求者)明确S系统的要求和细节,给U2(开发人员)了解需求实现的难度和困难,最终提供给U3(审核人、管理者)讨论和审核,达到沟通效果)
1.2背景
说明:
a. 待开发的软件系统的名称;
b. 本项目的任务提出者、开发者、用户及实现该软件的计算中心或计算机网络;
c. 该软件系统同其他系统或其他机构的基本的相互来往关系。
(这部分可以将a,b,c分为2部分,例子如下:
1.2.1项目概况
本需求分析报告所预期开发的软件系统是:S。S是(不是则无)SS系统的某一个功能子模块,S和S1、S2等系统之间的联系,以及概述其他系统的状态等等。
1.2.2任务分配
a. 任务提出者:xxx
b. 软件开发者:xx
c. 产品使用者:xx
d. 文档编写者:xx
e. 预期产品使用者:xx
)1.3定义
列出本文件中用到的专门术语的定义和外文首字母组词的原词组。
(这部分很简单,就是描述专业词汇,比如
1. XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。
2. Word2, 解释。。。
)1.4参考资料
列出用得着的参考资料,如:
a. 本项目的经核准的计划任务书或合同、上级机关的批文;
b. 属于本项目的其他已发表的文件;
c. 本文件中各处引用的文件、资料、包括所要用到的软件开发标准。 列出这些文件资料的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。
2任务概述
2.1目标
叙述该项软件开发的意图、应用目标、作用范围以及其他应向读者说明的有关该软件开发的背景材料。解释被开发软件与其他有关软件之间的关系。如果本软件产品是一项独立的软件,而且全部内容自含,则说明这一点。如果所定义的产品是一个更大的系统的一个组成部分,则应说明本产品与该系统中其他各组成部分之间的关系,为此可使用一张方框图来说明该系统的组成和本产品同其他各部分的联系和接口。|
(本模块开发主要是为SS的整体服务,完成SS工作中的XX部分以及相关的工作。其涉及的范围就是,从下达A、B命令后,到给出C结果的过程。具体描述:B1,来完成B11功能;B2,来完成B22功能; 等等。本部分是(否)耦合在分词工具包其他部分中的,主要为嵌入方式和先后方式相互交互。
图图1. 该系统的组成同其他各部分的联系和接口
)2.2用户的特点
列出本软件的最终用户的特点,充分说明操作人员、维护人员的教育水平和技术专长,以及本软件的预期使甩频度。这些是软件设计工作的重要约束
(例如:二次开发和系统调用人员:具有很高的专业知识水平,理解XX的运行机制。可以对开放代码进行阅读和分析,以完成其系统独特的需求,提供给这部分用户开放API手册和Debug版本的源代码即可;预期这部分用户会占本系统总用户量的多大部分。
xx使用者:具有一定的计算机操作能力和知识,了解xx领域的相关概念和用途。提供给这部分用户操作手册即可。预期这部分使用者主要是来简单的xx操作。
维护人员:具有较高的计算机专业水平,可以对常见的系统Bug进行追踪和分析,具有一定的测试能力。 这部分用户主要是采用了本系统之后的后期工作维护者。
等等
)2.3假定和约束
列出进行本软件开发工作的假定和约束,例如经费限制、开发期限等。
(这部分重要是对你有的技术力量、资金状况、人力资源等情况的假设,以使得你可以在什么样的情况和时间范围内完成工作。工期约束,经费约束,人员约束,地理约束,设备约束等几个方面列举说明。)
3需求规定
3.1对功能的规定
用列表的方式(例如IPO表即输入、处理、输出表的形式),逐项定量和定性地叙述对软件所提出的功能要求,说明输入什么量、经怎样的处理、得到什么输出,说明软件应支持的终端数和应支持的并行操作的用户数。
(例如:
INPUT输入
PROCESS处理
OUTPUT输出
LOAD负载量 A
预处理,做怎样的动作,
AA
CC B
BBBB
Bb
v C
CCCC
cc
v 表一、xx模块IPO表
对IPO表的简单文字描述。
)3.2对性能的规定
3.2.1精度
说明对该软件的输入、输出数据精度的要求,可能包括传输过程中的精度。
(例如:
Xx目标处理:1Byt–10M,包括左右边界值。
yy精度范围:….
ZZ的精度:由于xx的特殊性,本系统均采用xx型来进行字符统计运算,概率部分以及其他比率部分精度精确到0.0x%。
)3.2.2时间特性要求
说明对于该软件的时间特性要求,如对:
a. 响应时间;
b. 更新处理时间;
c. 数据的转换和传送时间;
d. 解题时间;等的要求。
(这部分只要一一列举就可以:
由于xxx过程中,需要大量xxxx操作或怎样,故xx解题时间占总时间的最大部分。其次就是xx转换和存储的开销。其具体时间特性要求,如下:
a. xx响应时间:xxms左右;
b. yy更新处理时间:yy;
c. zz数据的转换和传送时间:zz;
d. vv解题时间:vv。
等等
)3.2.3灵活性
说明对该软件的灵活性的要求,即当需求发生某些变化时,该软件对这些变化的适应能力,如:
a. 操作方式上的变化;
b. 运行环境的变化;
c. 同其他软件的接口的变化;
d. 精度和有效时限的变化;
e. 计划的变化或改进。
对于为了提供这些灵活性而进行的专门设计的部分应该加以标明。
(这部分按列举来即可, 由于本模块第一目的是用于xxx,其次则是xxxx。故本模块的灵活性在于实际应用者的不同。当需求发生某些变化时,该软件对这些变化的适应能力。具体情况如下:
f. 操作方式上的变化:采用集成运行制和独立运行制两种模式,集成运行制是把本模块嵌入到分词工具包的主框架中,提供给用户具有一定UI的可操作软件;独立运行制是可以独立运行于后台,并提供给各种程序调用的模式的工作方式,以增强其生命力。
g. 运行环境的变化:主采用Windows平台的编译版本运行和调试,在时间允许的情况下,同步开发支持SUSE Linux的服务器版本。;
h. 同其他软件的接口的变化:在尽量保证接口不出现变动的情况下,允许接口的重载和再定义。但接口的命名规则是统一的;
i. 精度和有效时限的变化:精度在必须调整的条件下,可以上下浮动10个百分点;有效时限则依据现实的测试情况允许稍大范围的变化。
j. 计划的变化或改进:工作时间安排会存在必然的浮动,这部分要协同分词工具包课题设计组其他成员一同来进行商定,前期的计划可以稍微有些变动,后期的安排尽量按照计划执行。
等等
)3.3输人输出要求
解释各输入输出数据类型,并逐项说明其媒体、格式、数值范围、精度等。对软件的数据输出及必须标明的控制输出量进行解释并举例,包括对硬拷贝报告(正常结果输出、状态输出及异常输出)以及图形或显示报告的描述。
(这部分可以把输入输出分为 3.3.1输入要求和3.3.2输出要求,如下给出一个单元的例子。
XXX输出
数据名称:XXX输出数据
实际含义:用于XX,表示XXXX
数据类型:Character(字符串)
数据格式:XX
数据约束:由于xxx,,大小在xx以内
)3.4数据管理能力要求
说明需要管理的文卷和记录的个数、表和文卷的大小规模,要按可预见的增长对数据及其分量的存储要求作出估算。
(根据实际系统要求列举即可
Name名称
Number数量
Size大小
Increase增长 词典xx
xx
xxxx
并行执行,其大小依据实际xx大文本而增长 )
3.5故障处理要求
列出可能的软件、硬件故障以及对各项性能而言所产生的后果和对故障处理的要求。
(包括软件压力,内存不足,硬件损坏等,这部分可以根据百度到其常见故障。)
3.6其他专门要求
如用户单位对安全保密的要求,对使用方便的要求,对可维护性、可补充性、易读性、可靠性、运行环境可转换性的特殊要求等。
(例如安全保密性:密钥更换等; 预期扩展:扩展兼容等;OS更换:Slackware转SUSE等
)4运行环境规定
4.1设备
列出运行该软件所需要的硬设备。说明其中的新型设备及其专门功能,包括:
a. 处理器型号及内存容量;
b. 外存容量、联机或脱机、媒体及其存储格式,设备的型号及数量;
c. 输入及输出设备的型号和数量,联机或脱机;
d. 数据通信设备的型号和数量;
e. 功能键及其他专用硬件
(列举说明即可)
4.2支持软件
列出支持软件,包括要用到的操作系统、编译(或汇编)程序、测试支持软件等。
(操作系统和版本:xxxx
支撑环境和版本:xxxx
备用IDE环境和版本:xxxx
与该软件有关的软件组件:xxxx
后续可能扩展环境:xxxx
)4.3接口
说明该软件同其他软件之间的接口、数据通信协议等。
(例如:
a.用户和主程序调用接口(图中接口1)。这个接口采用封装API形式和函数调用形式,分别以外部调用和内部调用的方式为不同用户提供使用本机械分词工具的入口。例如以xxxx方式调用DLL文件,以xxxx方式调用函数。如下图2所示。
图2.软件接口调用图
b.xx接口(图中接口2)。这里是一个xxx的接口调用过程。xxxx
)4.4控制
说明控制该软件的运行的方法和控制信号,并说明这些控制信号的来源。
(例如:
下面通过图表的形式,将本模块以及涉及到本模块的软件模块的运行方法、控制信号,以及这些控制信号的来源,其中箭头所指方向对应的模块的控制信号来自箭头另一方向的模块,具体情况如下:
图3 .控制流程图
图3的具体说明情况如下表所示:
Name模块名称
Method运行方式
Signal控制信号
Forward控制去向 主程序模块
运行框架
用户调用或运行
1. 调用xx模块
2. 调用xx方法
3. 调用标准输出模块 xxx模块
xxx
xxx调用
Xxx模块 )
附录: 软件设计文档国家标准(GB8567–88)软件设计文档国家标准(GB8567–88)GB8567——88
操作手册(GB8567——88).doc 数据库设计说明书(GB8567——88).doc
测试分析报告(GB8567——88).doc 数据要求说明书(GB856T——88).doc
测试计划(GB8567——88).doc 图1.doc
概要设计说明书(GB8567——88).doc 文件给制实施规定的实例(GB8567-88).doc
开发进度月报(GB8567——88).doc 详细设计说明书(GB8567——88).doc
可行性研究报告(GB8567——88).doc 项目开发计划(GB856T——88).doc
模块开发卷宗(GB8567——88).doc 项目开发总结报告(GB8567——88).doc
软件需求说明书(GB856T——88).doc 用户手册(GB8567——88).doc
1、组织与风格(1).关键词和操作符之间加适当的空格。(2).相对独立的程序块与块之间加空行(3).较长的语句、表达式等要分成多行书写。(4).划分出的新行要进行适应的缩进,使排版整齐,语句可读。(5).长表达式要在低优先级操作符处划分新行,操作符放在新行之首。(6).循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。(7).若函数或过程中的参数较长,则要进行适当的划分。(8).不允许把多个短语句写在一行中,即一行只写一条语句。(9).函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。注:如果大家有兴趣可以到安安DIY创作室博客,有相关说明性的文章和解释。2、注解Java 的语法与 C++ 及为相似,那么,你知道 Java 的注释有几种吗?是两种?// 注释一行/* ...... */ 注释若干行不完全对,除了以上两种之外,还有第三种,文档注释:/** ...... */ 注释若干行,并写入 javadoc 文档注释要简单明了。String userName = null; //用户名边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防止注释二义性。保持注释与其描述的代码相邻,即注释的就近原则。对代码的注释应放在其上方相邻位置,不可放在下面。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释应放在此域的右方;同一结构中不同域的注释要对齐。变量、常量的注释应放在其上方相邻位置或右方。全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生成日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等。/*** Copy Right Information : Neusoft IIT* Project : eTrain* JDK version used : jdk1.3.1* Comments : config path* Version : 1.01* Modification history :2003.5.1* Sr Date Modified By Why & What is modified* 1. 2003.5.2 Kevin Gao new**/在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能描述;输入、输出及返回值说明;调用关系及被调用关系说明等/*** Description :checkout 提款* @param Hashtable cart info* @param OrderBean order info* @return String*/public String checkout(Hashtable htCart,OrderBean orderBean)throws Exception{}javadoc注释标签语法@author 对类的说明 标明开发该类模块的作者@version 对类的说明 标明该类模块的版本@see 对类、属性、方法的说明 参考转向,也就是相关主题@param 对方法的说明 对方法中某参数的说明@return 对方法的说明 对方法返回值的说明@exception 对方法的说明 对方法可能抛出的异常进行说明3、命名规范定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可读性)较短的单词可通过去掉元音形成缩写;要不然最后自己写的代码自己都看不懂了,那可不行。较长的单词可取单词的头几发符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。使用匈牙利表示法Package 的命名Package 的名字应该都是由一个小写单词组成。package com.neu.utilClass 的命名Class 的名字必须由大写字母开头而其他字母都小写的单词组成,对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。public class ThisAClassName{}Class 变量的命名变量的名字必须用一个小写字母开头。后面的单词用大写字母开头userName , thisAClassMethodStatic Final 变量的命名static Final 变量的名字应该都大写,并且指出完整含义。/***DBConfig PATH**/public static final StringDB_CONFIG_FILE_PATH =com.neu.etrain.dbconfig;参数的命名参数的名字必须和变量的命名规范一致。数组的命名数组应该总是用下面的方式来命名:byte[] buffer;而不是:byte buffer[];方法的参数使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:SetCounter(int size){this.size = size;}4、文件样式所有的 Java(*.java) 文件都必须遵守如下的样式规则:版权信息版权信息必须在 java 文件的开头,比如:/** Copyright ? 2000 Shanghai XXX Co. Ltd.* All right reserved.*/其他不需要出现在 javadoc 的信息也可以包含在这里。Package/Importspackage 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应该用 * 来处理。package java io.*;import java.util.Observable;import hotlava.util.Application;这里 java。io.* 使用来代替InputStream and OutputStream 的。Class接下来的是类的注释,一般是用来解释类的。/*** A class representing a set of packet and byte counters* It is observable to allow it to be watched, but only* reports changes when the current set is complete*/接下来是类定义,包含了在不同的行的 extends 和 implementspublic class CounterSetextends Observableimplements CloneableClass Fields接下来是类的成员变量:/*** Packet counters*/protected int[] packets;public 的成员变量必须生成文档(JavaDoc)。proceted、private和 package 定义的成员变量如果名字含义明确的话,可以没有注释。存取方法接下来是类变量的存取的方法。它只是简单的用来将类的变量赋值获取值的话,可以简单的写在一行上。/*** Get the counters* @return an array containing the statistical data. This array has been* freshly allocated and can be modified by the caller.*/public int[] getPackets() { return copyArray(packets, offset); }public int[] getBytes() { return copyArray(bytes, offset); }public int[] getPackets() { return packets; }public void setPackets(int[] packets) { this.packets = packets; }其它的方法不要写在一行上构造函数接下来是构造函数,它应该用递增的方式写(比如:参数多的写在后面)。访问类型 (public, private 等.) 和 任何 static, final 或 synchronized 应该在一行中,并且方法和参数另写一行,这样可以使方法和参数更易读。publicCounterSet(int size){this.size = size;}克隆方法如果这个类是可以被克隆的,那么下一步就是 clone 方法:publicObject clone() {try {CounterSet obj = (CounterSet)super.clone();obj.packets = (int[])packets.clone();obj.size = size;return obj;}catch(CloneNotSupportedException e) {throw new InternalError(Unexpected CloneNotSUpportedException: +e.getMessage());}}类方法下面开始写类的方法:/*** Set the packet counters* (such as when restoring from a database)*/protected finalvoid setArray(int[] r1, int[] r2, int[] r3, int[] r4)throws IllegalArgumentException{//// Ensure the arrays are of equal size//if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)throw new IllegalArgumentException(Arrays must be of the same size);System.arraycopy(r1, 0, r3, 0, r1.length);System.arraycopy(r2, 0, r4, 0, r1.length);}toString 方法无论如何,每一个类都应该定义 toString 方法:publicString toString() {String retval = CounterSet: ;for (int i = 0; i < data.length(); i++) {retval += data.bytes.toString();retval += data.packets.toString();}return retval;}}main 方法如果main(String[]) 方法已经定义了, 那么它应该写在类的底部.5、代码可读性避免使用不易理解的数字,用有意义的标识来替代。不要使用难懂的技巧性很高的语句。源程序中关系较为紧密的代码应尽可能相邻。6、代码性能在写代码的时候,从头至尾都应该考虑性能问题。这不是说时间都应该浪费在优化代码上,而是我们时刻应该提醒自己要注意代码的效率。比如:如果没有时间来实现一个高效的算法,那么我们应该在文档中记录下来,以便在以后有空的时候再来实现她。不是所有的人都同意在写代码的时候应该优化性能这个观点的,他们认为性能优化的问题应该在项目的后期再去考虑,也就是在程序的轮廓已经实现了以后。不必要的对象构造不要在循环中构造和释放对象使用 StringBuffer 对象在处理 String 的时候要尽量使用 StringBuffer 类,StringBuffer 类是构成 String 类的基础。String 类将 StringBuffer 类封装了起来,(以花费更多时间为代价)为开发人员提供了一个安全的接口。当我们在构造字符串的时候,我们应该用 StringBuffer 来实现大部分的工作,当工作完成后将 StringBuffer 对象再转换为需要的 String 对象。比如:如果有一个字符串必须不断地在其后添加许多字符来完成构造,那么我们应该使用StringBuffer 对象和她的 append() 方法。如果我们用 String 对象代替StringBuffer 对象的话,会花费许多不必要的创建和释放对象的 CPU 时间。大家可以来安安DIY创作室一起讨论。避免太多的使用 synchronized 关键字避免不必要的使用关键字 synchronized,应该在必要的时候再使用她,这是一个避免死锁的好方法。7、编程技巧byte 数组转换到 characters为了将 byte 数组转换到 characters,你可以这么做:Hello world!.getBytes();Utility 类Utility 类(仅仅提供方法的类)应该被申明为抽象的来防止被继承或被初始化。初始化下面的代码是一种很好的初始化数组的方法:objectArguments = new Object[] { arguments };枚举类型JAVA 对枚举的支持不好,但是下面的代码是一种很有用的模板:class Colour {public static final Colour BLACK = new Colour(0, 0, 0);public static final Colour RED = new Colour(0xFF, 0, 0);public static final Colour GREEN = new Colour(0, 0xFF, 0);public static final Colour BLUE = new Colour(0, 0, 0xFF);public static final Colour WHITE = new Colour(0xFF, 0xFF, 0xFF);}这种技术实现了RED, GREEN, BLUE 等可以象其他语言的枚举类型一样使用的常量。他们可以用 '==' 操作符来比较。但是这样使用有一个缺陷:如果一个用户用这样的方法来创建颜色 BLACK new Colour(0,0,0)那么这就是另外一个对象,'=='操作符就会产生错误。她的 equal() 方法仍然有效。由于这个原因,这个技术的缺陷最好注明在文档中,或者只在自己的包中使用。8、编写格式代码样式代码应该用 unix 的格式,而不是 windows 的(比如:回车变成回车+换行)文档化必须用 javadoc 来为类生成文档。不仅因为它是标准,这也是被各种 java 编译器都认可的方法。使用 @author 标记是不被推荐的,因为代码不应该是被个人拥有的。缩进缩进应该是每行2个空格. 不要在源文件中保存Tab字符. 在使用不同的源代码管理工具时Tab字符将因为用户设置的不同而扩展为不同的宽度.如果你使用 UltrEdit 作为你的 Java 源代码编辑器的话,你可以通过如下操作来禁止保存Tab字符, 方法是通过 UltrEdit中先设定 Tab 使用的长度室2个空格,然后用 Format|Tabs to Spaces 菜单将 Tab 转换为空格。页宽页宽应该设置为80字符. 源代码一般不会超过这个宽度, 并导致无法完整显示, 但这一设置也可以灵活调整. 在任何情况下, 超长的语句应该在一个逗号或者一个操作符后折行. 一条语句折行后, 应该比原来的语句再缩进2个字符.{} 对{} 中的语句应该单独作为一行. 例如, 下面的第1行是错误的, 第2行是正确的:if (i>0) { i ++ }; // 错误, { 和 } 在同一行if (i>0) {i ++}; // 正确, { 单独作为一行} 语句永远单独作为一行.如果 } 语句应该缩进到与其相对应的 { 那一行相对齐的位置。括号左括号和后一个字符之间不应该出现空格, 同样, 右括号和前一个字符之间也不应该出现空格. 下面的例子说明括号和空格的错误及正确使用:CallProc( AParameter ); // 错误CallProc(AParameter); // 正确不要在语句中使用无意义的括号. 括号只应该为达到某种目的而出现在源代码中。下面的例子说明错误和正确的用法:if ((I) = 42) { // 错误 - 括号毫无意义if (I == 42) or (J == 42) then // 正确 - 的确需要括号9、代码编译1.编写代码时要注意随时保存,并定期备份,防止由于断电、硬盘损坏等原因造成代码丢失。2.同一项目组内,最好使用相同的编辑器,并使用相同的设置选项。3.合理地设计软件系统目录,方便开发人员使用。4.打开编译器的所有告警开关对程序进行编译。5.在同一项目组或产品组中,要统一编译开关选项。6.使用工具软件(如Visual SourceSafe)对代码版本进行维护。如果大家有不明白的可以到安安DIY创作室留言。10、可移植性Borland Jbulider 不喜欢 synchronized 这个关键字,如果你的断点设在这些关键字的作用域内的话,调试的时候你会发现的断点会到处乱跳,让你不知所措。除非必须,尽量不要使用。换行如果需要换行的话,尽量用 println 来代替在字符串中使用\n。你不要这样:System.out.print(Hello,world!\n);要这样:System.out.println(Hello,world!);或者你构造一个带换行符的字符串,至少要象这样:String newline = System.getProperty(line.separator);System.out.println(Hello world + newline);PrintStreamPrintStream 已经被不赞成(deprecated)使用,用 PrintWrite 来代替它。
软件著作权申请中的文档,就是在软件设计过程中形成的文档。根据软件工程的要求,在软件设计制作过程中,会形成多个文档。整个过程一般会包括,用户需求报告、软件设计说明书、软件模块分析、软件模块设计和检测、软件整体统调和测试、生成用户操作手册等。根据软件著作权登记的要求,这些过程中形成的对软件本身起说明性作用的文档,均可以作为软件著作权登记中的文档提交。一般会提交设计说明书或者操作手册(即用户手册)。所以,编写方法可以参见软件工程的相关教材。
软件使用说明书如何写(包含哪些内容)?有没有模板的
有的,网上可以搜到挺多,我不知道怎么提供给你下载,这个你可以参考参考。
软件使用说明书模板
1.
引言
1.1编写目的【阐明编写手册的目的。指明读者对象。】
1.2项目背景【说明项目来源、委托单位、开发单位及主管部门】
1.3
定义【列出手册中使用的专门术语的定义和缩写词的原意】
1.4参考资料【列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源,
可包括:a.项目的计划任务书、合同或批文;b.项目开发计划;C.
需求规格说
明书;d.概要设计说明书;e。详细设计说明书;f.测试计划;g。手册中引用
的其他资料、采用的软件工程标准或软件工程规范。】
2.
软件概述
2.1目标
2.2功能
2.3
性能
a.数据精确度【包括输入、输出及处理数据的精度】
b.时间特性【如响应时间、处理时间、数据传输时间等。】
c.灵活性【在操作方式、运行环境需做某些变更时软件的适应能力。】
3.
运行环境
3.1硬件【列出软件系统运行时所需的硬件最小配置,如a.
计算机型号、主存容量;b.
外存储器、媒体、记录格式、设备型号及数量;c。输入、输出设备;d.数据传输设
备及数据转换设备的型号及数量。】
3.2支持软件【如:a。操作系统名称及版本号;b.
语言编译系统或汇编系统的名称及版
本号;C。数据库管理系统的名称及版本号;d.其他必要的支持软件。】
4.
使用说明
4.1安装和初始化【给出程序的存储形式、操作命令、反馈信息及其含意、表明安装完成
的测试实例以及安装所需的软件工具等。】
4.2输入【给出输入数据或参数的要求。】
4.2.1数据背景【说明数据来源、存储媒体、出现频度、限制和质量管理等。】
4.2.2数据格式【如:a。长度;b.格式基准;C,标号;d.顺序;e。分隔符;f.
词汇表;g.
省略和重复;h.控制。】
4.2.3输入举例
4.3输出【给出每项输出数据的说明】
4.3.l数据背景【说明输出数据的去向使用频度、存放媒体及质量管理等。】
4.3.2数据格式【详细阐明每一输出数据的格式,如:首部、主体和尾部的具体形式。】
4.3.3举例
4.4出错和恢复【给出:a。出错信息及其含意;b.用户应采取的措施,如修改、恢复、
再启动.】
4.5求助查询【说明如何操作】
5.
运行说明
5.1运行表【列出每种可能的运行情况,说明其运行目的。】
5.2运行步骤【按顺序说明每种运行的步骤,应包括:】
5.2.1运行控制
5.2.2操作信息
a.
运行目的;b.操作要求;C。启动方法;
d.预计运行时间;e。操作命令格
式及格式说明;f.其他事项。
5.2.3输入/输出文件【给出建立或更新文件的有关信息,如:】
a.文件的名称及编号;b.记录媒体;C。存留的目录;d.文件的支配
【说明确定保留文件或废弃文件的准则,分发文件的对象,占用硬件的优先
级及保密控制等.】
5.2.4启动或恢复过程
6.
非常规过程
【提供应急或非常规操作的必要信息及操作步骤,如出错处理操作、向后备系统切换操作以
及维护人员须知的操作和注意事项。】
7.
操作命令一览表
【按字母顺序逐个列出全部操作命令的格式、功能及参数说明。】
8.
程序文件(或命令文件)和数据文件一览表
【按文件名字母顺序或按功能与模块分类顺序逐个列出文件名称、标识符及说明。】
9.
用户操作举例
软件工程概要设计说明怎么写
一般是分以下几个章节:1.引言1.1编写目的 1.2项目背景1.3定义 1.4参考资料 2.任务概述2.1目标2.2运行环境2.3需求概述2.4条件与限制 3.总体设计 3.1处理流程3.2总体结构和模块外部设计 3.3功能分配4.接口设计4.1外部接口4.2内部接口 5.数据结构设计5.1逻辑结构设计5.2物理结构设计5.3数据结构与程序的关系 6.运行设计6.1运行模块的组合6.2运行控制6.3运行时间 7.出错处理设计7.1出错输出信息7.2出错处理对策 8.安全保密设计 9.维护设计
要不你把邮箱给我 我给你传份模板