软件文档(Document)也称文件,通常是指的是一些记录的数据和数据媒体,它具有固定不变的形式,可被任何计算机阅读。在软件工程中,文档常常用来表示对活动、需求、过程或结果进行描述、定义、规定或认证的任何书面或图示的信息,他们描述和规定了软件设计和实现细节,说明使用软件的操作命令。
文档是软件产品的一部分,没有文档的软件就不称其为软件。软件文档的编制在软件开发工作中占有突出的地位和相当大的工作量。高质量和高效的开发、分发、管理和维护文档对于转让、变更、修正、扩充和使用文档,对于充分发挥软件产品的效益有着重要的意义。
然而,在实际工作中,软件开发人员普遍对编制文档不感兴趣。
在软件的生产过程中,总是伴随着大量的信息要记录、使用。因此,软件文档在产品的开发过程中起着重要的作用。
\1. 提高软件开发过程的能见度;
\2. 记录开发过程的相关信息;
\3. 提高开发效率;
\4. 作为开发人员在一定阶段的工作成果和结束标志;
\5. 便于潜在用户了解软件的功能、性能等各项指标。
根据形式,软件文档可大致分为两类:
\1. 工作表格:包括开发过程中填写的各种图标;
\2. 文档或文件:包括应编辑的技术资料或技术管理资料。
根据文档产生和使用范围,软件文档大致可分为三类:
\1. 开发文档;
\2. 管理文档;
\3. 用户文档。
根据文档内容,软件文档又可分为两类:
\1. 用户文档;
\2. 系统文档。
在整个软件生存期中,各种文档作为半成品或是最终成品,会不断生成、修改或补充。为了最终得到高质量的产品必须加强对文档的管理,一下几个方面是应该做到的:
\1. 软件开发小组应当设立一位文档管理员,管理所有文档;
\2. 软件开发小组成员可根据工作需要在自己手中保存一些个人文档;
\3. 开发人员只保存着主文档中与它工作有关的部分文档;
\4. 在新文档取代旧文档时,管理人员应随时修订主文本,使其及时反应更新了的类容;
\5. 项目开发结束时,文档管理人员应收回开发人员的个人文档,与主文档对比差异,着手解决有差异的地方;
\6. 在开发过程中,严格控制修改已经完成的文档。
软件开发的标准过程包括六个阶段,而六个阶段需要编写的各类文件达14种之多。所以说,果然没有人喜欢写文档啊!
1.可行性与计划研究阶段
可行性研究报告:在可行性研究与计划阶段内,要确定该软件的开发目标和总的要求,要进行可行性分析、投资一收益分析、制订开发计划,并完成应编制的文件。
项目开发计划:编制项目开发计划的目的是用文件的形式,把对于在开发过程中各项工作的负责人员、开发进度、 所需经费预算、所需软、硬件条件等问题作出的安排记载下来,以便根据本计划开展和检查本项目的开 发工作。
2.需求分析阶段
软件需求说明书:软件需求说明书的编制是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解, 使之成为整个开发工作的基础。内容包括对功能的规定对性能的规定等。
初步的用户手册:用户手册的编制是要使用非专门术语的语言,充分地描述该软件系统所具有的功能及基本的使用方法。使用户(或潜在用户)通过本手册能够了解该软件的用途,并且能够确定在什么情况下,如何使用它。
3.设计阶段
概要设计说明书:概要设计说明书又可称系统设计说明书,这里所说的系统是指程序系统。编制的目的是说明对程序 系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计。 运行设计、数据结构设计和出错处理设计等,为程序的详细设计提供基础。
详细设计说明书:详细设计说明书又可称程序设计说明书。编制目的是说明一个软件系统各个层次中的每一个程序 (每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,本文件可以不单独编写,有关内容合并入概要设计说明书。
数据库设计说明书:数据库设计说明书的编制目的是对于设计中的数据库的所有标识、逻辑结构和物理结构作出具体的设计规定。
测试计划初稿:这里所说的测试,主要是指整个程序系统的组装测试和确认测试。本文件的编制是为了提供一个对该软件的测试计划,包括对每项测试活动的内容、进度安排、设计考虑、测试数据的整理方法及评价准则。
4.实现阶段
模块开发卷宗(开始编写):模块开发卷宗是在模块开发过程中逐步编写出来的,每完成一个模块或一组密切相关的模块的复审时编写一份,应该把所有的模块开发卷宗汇集在一起。编写的目的是记录和汇总低层次开发的进度和结果,以便于对整个模块开发工作的管理和复审,并为将来的维护提供非常有用的技术信息。
用户手册完工
操作手册:操作手册的编制是为了向操作人员提供该软件每一个运行的具体过程和有关知识,包括操作方法的细节。
测试计划终稿:
5.测试阶段
模块开发卷宗(完成编写):嗯,这个很重要的啊!!!
测试分析报告:测试分析报告的编写是为了把组装测试和确认测试的结果、发现及分析写成文件加以记载。
项目开发总结报告:项目开发总结报告的编制是为了总结本项目开发工作的经验,说明实际取得的开发结果以及对整个开发工作的各个方面的评价。
6.运行与维护阶段
开发进度月报的编制目的是及时向有关管理部门汇报项目开发的进展和情况,以便及时发现和处理开发过程中出现的问题。一般地,开发进度月报是以项目组为单位每月编写的。如果被开发的软件系统规模比较大,整个工程项目被划分给若干个分项目组承担,开发进度月报将以分项目组为单位按月编写。
看到这么多文档资料的种类,本宝宝的内心是拒绝的啊!为什么我写代码已经很辛苦的了说!!还要写什么文档是什么鬼!!!
但事实上,一个好的写文档习惯,一份资料齐全的文档资料,对于软件工程是非常重要的。早已经说过计算机软件不仅仅是程序,还应该有一整套文档资料。这些文档资料链接了软件开发人员,管理人员(万恶的产品经理),对软件后续维护人员也很重要。开发软件到后期,如果出现问题,文档资料往往能帮助我们不少。
在项目开发过程中,应该按要求编写好十三种文档,文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性。
◇ **可行性分析报告:**说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由。
◇ **项目开发计划:**为软件项目实施方案制订出具体计划,应该包括各部分工作的负责人员、开发的进度、开发经费的预算、所需的硬件及软件资源等。
◇ **软件需求说明书(软件规格说明书):**对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是在用户与开发人员双方对软件需求取得共同理解并达成协议的条件下编写的,也是实施开发工作的基础。该说明书应给出数据逻辑和数据采集的各项要求,为生成和维护系统数据文件做好准备。
◇ **概要设计说明书:**该说明书是概要实际阶段的工作成果,它应说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计提供基础。
◇ **详细设计说明书:**着重描述每一模块是怎样实现的,包括实现算法、逻辑流程等。
◇ **用户操作手册:**本手册详细描述软件的功能、性能和用户界面,使用户对如何使用该软件得到具体的了解,为操作人员提供该软件各种运行情况的有关知识,特别是操作方法的具体细节。
◇ **测试计划:**为做好集成测试和验收测试,需为如何组织测试制订实施计划。计划应包括测试的内容、进度、条件、人员、测试用例的选取原则、测试结果允许的偏差范围等。
◇ **测试分析报告:**测试工作完成以后,应提交测试计划执行情况的说明,对测试结果加以分析,并提出测试的结论意见。
◇ **开发进度月报:**该月报系软件人员按月向管理部门提交的项目进展情况报告,报告应包括进度计划与实际执行情况的比较、阶段成果、遇到的问题和解决的办法以及下个月的打算等。
◇ **项目开发总结报告:**软件项目开发完成以后,应与项目实施计划对照,总结实际执行的情况,如进度、成果、资源利用、成本和投入的人力,此外,还需对开发工作做出评价,总结出经验和教训。
◇ **软件维护手册:**主要包括软件系统说明、程序模块说明、操作环境、支持软件的说明、维护过程的说明,便于软件的维护。
◇ **软件问题报告:**指出软件问题的登记情况,如日期、发现人、状态、问题所属模块等,为软件修改提供准备文档。
◇ **软件修改报告:**软件产品投入运行以后,发现了需对其进行修正、更改等问题,应将存在的问题、修改的考虑以及修改的影响作出详细的描述,提交审批。
一、《可行性研究报告》
可行性研究报告是在制定研发项目之前,以全面、系统的分析为主要方法,经济效益为核心,对本项目实施的可能性、有效性、技术方案及技术政策进行具体、深入、细致的技术论证和经济评价,以求确定一个在技术上合理、经济上合算的最优方案和最佳时机。分析项目是否具备开发的必要性与可行性。
可行性研究报告的预期读者为系统管理人员、开发与运维人员。
简而言之,就是分析可行性,确定最优方案。
二、《项目开发计划书》
项目开发计划的作用就是用文件的形式,根据可行性研究推荐的可行方案,落实各项工作的负责人、参加人员(系统分析员、系统设计员、程序员、资料员等)以及各种资源(计算机硬件、软件工具等)的需求,制定项目开发进度、验收标准和成本概算等,以文件形式记载下来,指导整个项目开发工作的顺利进行,并为开发的下一步做准备。
预期读者是系统分析员和开发人员。
通俗些讲,就是根据可行性研究出来的最优方案,把工作内容分配下去。
三、《软件需求说明书》
软件需求说明书是需求分析阶段的一个文档,是对软件目标及范围的求精和细化,深入描述软件的功能和性能以及软件的约束范围,使用户和软件开发者对该软件的初始规定有个大概了解,便于用户、开发人员进行理解和交流。明确了开发软件的方向,程序员要根椐需求规格说明书去开发软件, 作为确认测试和验收的依据,有利于对项目的回溯和指导后续的开发和维护。
文档读者:开发人员与用户代表。
这个就是搞需求的,开发计划书里已经计划好了你搞测试,我搞开发,他弄管理,好,那咱们开工吧,开工之前先搞清 需求是啥,弄一个物理模型出来,就是系统应该是怎么样的,这就是需求说明书。
四、《概要设计说明书》
概要设计说明书是在用户的需求分析阶段的基础上,对系统做概要设计,为在需求分析阶段得到的目标系统的物理模型确定一个合理的软件系统的体系结构。包括合理地划分组成系统的模块、模块间的调用关系及模块间的接口,并且为软件系统提供所用的数据结构或者数据库结构。从而为下一阶段的详细设计做参考,设计阶段将以本文档为核心文档。
本文档的读者是项目设计和项目编码人员。
概要设计说明书阶段已经规定了系统内、外部接口,并设计好数据库。
五、《详细设计说明书》
详细设计说明书是在概要设计的基础上进一步明确系统结构,表示出软件结构的图表,完成算法设计、数据结构设计、物理设计等,详细地描述的逐个模块,包括算法和逻辑流程的具体实现方法,设计系统的物理模型等,为下一步系统的实现和测试做准备。开发人员在完成概要设计说明书的基础上,在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。详细设计的结果基本上决定了最终程序代码的质量。详细设计的目标不仅仅是在逻辑上正确的实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。
编写详细设计说明说的目的就是为程序员写出实际的程序代码提供依据。它是软件详细设计阶段所有任务和所有相关人员(包括项目管理人员、软件设计人员、软件测试人员、文档编制人员和质量审核人员),所需要的参考资料。
本文档的预期读者是程序开发人员、程序测试人员与客户。
详细设计说明书对系统描述的细致程度已经到了顶级了,所以有些人也形象的把详细设计说明书的作用比喻成” 后期需求方和开发方打嘴仗时的一个凭证“。详细设计说明书一般是对大型系统准备的,如果是小系统的话,概要设计说明书就够用了,详细设计说明书可以省略。
六(1)、《数据库设计说明书》
数据库设计说明书描述了机房收费系统数据库的设计,提供了数据库设计的可视性以及软件支持所需的信息,应用于系统开发前期,为了让参与本项目的项目的人员了解本系统的数据库设计思路、数据库整体架构及各种详细信息,也为了以后的各个项目可以参与借鉴该项目的经验,将数据分析的结果进一步整理,对本系统数据库的所有标识、逻辑结构和物理结构作用作出具体的设计规定和分析说明,形成最终的计算机模型,以便开发人员建立物理数据库。
预期读者为数据库设计师、数据库管理员。
这一阶段是确定数据库的逻辑结构和物理结构。
六(2)、《数据要求说明书》
编写数据库要求说明书的目的是明确系统中各项功能和非功能性需求实现时所需要的数据,根据此数据设计数据库。同时为概要设计和详细设计人员提供设计依据,其他本项目组的开发人员也可以参阅。定义总体要求,作为用户和软件开发人员之间相互了解的基础;提供性能要求、初步设计和对用户影响的信息,作为开发人员进行设计和实施的基础;作为总体验证和确认的依据。
本文档的阅读对象为:数据库设计人员、系统测试人员
这一阶段进一步确定了数据库中的数据要求。
七、《测试计划说明书》
制定该测试计划书主要为了能够对开发过程中的部分环节进行有序、高效地测试,最终可最大限度地发现软件中的错误,并减少软件中残留的错误。描述了需要测试的特性、测试的方法、测试环境的规划、测试用例的设计方法、明确测试策略、明确谁来完成每项任务以及需要制定应急方案的所有风险等。通过测试,验证该机房管理系统系统模型已经达到设计的标准,交由项目负责人审阅并总结测试活动的成功经验与不足,以便今后更好地开展测试工作。
本文档的预期读者是系统编程人员和系统测试人员。
这一阶段是确定如何对系统进行测试的。
八、《测试分析报告》
测试分析报告是在测试的基础上,对测试的结果以及测试的数据等写成文档,对发现的问题和缺陷加以记录和分析总结,为纠正软件的存在的质量问题提供依据,同时为软件验收和交付打下基础。另外,它还有利于今后软件开发者阅读源程序,根据测试提供的数据和结果,分析源代码,掌握各函数的功能和局限性,从而缩短软件开发者的在开发时间和所耗费的精力、资金。
本文档的预期读者是软件开发人员。
九、《项目开发总结报告》
系统的开发工作已经基本完成。写此项目开发总结报告,以方便我们在以后的项目开发中来更好的实施项目的制定开发,让我们在今后的项目开发中有更多的资料来规范我们的开发过程和提高我们的开发效率,从而创造更多公司效益。
预期读者为相关软件的开发人员。
对项目开发的总结。
十、《操作手册》
操作手册的目的在于告诉系统的使用者,系统提供了那些功能,以及如何正确地、有效地来使用这些功能。
预期读者是系统用户。
十一、《用户手册》
编写此文档的主要目的是为了给使用者提供一个使用指南,以便为首次使用该系统的用户说明使用方法,以及给已经使用过或者正在使用的用户在使用过程中遇到问题时提供解决问题的方法。
预期读者为系统用户。
附:操作手册和用户手册的区别:
操作手册是系统级别的文档,而用户手册是需求级别的文档,一个针对操作,一个针对功能详解,操作手册是想得到什么界面,如何操作,而用户手册,你要介绍为什么要有这些操作,经过这些操作,得到的结果界面是干什么用的。如果说包含关系,用户手册是包括操作手册的。
十二、《开发进度月报》
开发进度月报的编制目的是及时向有关管理部门汇报项目开发的进展和情况,以便及时发现或处理开发过程中出现的问题。一般开发进度月报是以项目组为单位每月编写的。如果被开发的软件系统规模比较大,整个工程项目被划分给若干个分项目组承担,开发进度月报将以项目组为单位按月编写。
预期读者为项目管理员。
总结:软件开发文档都是有时间顺序、操作流程顺序联系的,编写文档前首先要了解各文档的作用,有备无患。
可行性报告
对待开发系统的一个全面、真实、简略的定义性说明文档。
一套完整的模板:https://gitee.com/a973891422/software-engineering-document