1
 软件工程
1.11.3.1 9.3.1 软件文档的作用与分类

9.3.1 软件文档的作用与分类

1.文档的定义

文档(Document)是指某种数据载体和其中所记录的数据。它具有永久性,并可以由人或计算机阅读,通常仅用于描述人工可读的内容。在软件工程中,文档常常用于表示对活动、需求、过程或结果进行描述、定义、规定、报告或认证的任何书面或图示的信息。它们描述和规定了软件设计和实现的细节,说明使用软件的操作命令。文档也是软件产品的一部分,没有文档的软件就不成其为软件。软件文档的编写在软件开发工作中占有突出的地位和相当大的工作量。高质量、高效率地开发、分发、管理和维护文档对转让、变更、修正、扩充和使用文档,对充分发挥软件产品的效益有着重要的意义。

然而在实际工作中,文档在编写和使用中存在着许多问题有待解决。软件开发人员中较普遍地存在着对编写文档不感兴趣的现象。从用户方面来看,他们又常常抱怨:文档售价太高,文档不够完整,文档编写得不好,文档已经陈旧或是文档太多,难以使用等。究竟应当怎样要求它,编写文档应当写哪些内容,说明什么,起什么作用?这里将给予简要的介绍。

2.软件文档的作用

在软件的生产过程中,总是伴随着大量的信息要记录和使用。因此,软件文档在产品的开发生产过程中起着重要的作用。

(1)提高软件开发过程的能见度。把开发过程中发生的事件以某种可阅读的形式记录在文档中,管理人员可把这些文档作为检查软件开发进度和开发质量的依据,实现对软件开发的工程管理。

(2)提高开发效率。软件文档的编写,使得开发人员对各个阶段的工作都进行周密思考、全盘权衡,从而减少返工,并且可在开发早期发现错误和不一致性,便于及时加以纠正。

(3)作为开发人员在一定阶段的工作成果和结束标志。

(4)记录开发过程中的有关信息,便于协调以后的软件开发、使用和维护。

(5)提供对软件的运行、维护和对软件人员进行培训的有关信息,便于管理人员、开发人员、操作人员、用户之间的协作、交流和了解,使软件开发活动更科学、更有成效。

(6)便于潜在用户了解软件的功能、性能等各项指标,为他们选购符合自己需要的软件提供依据。

由文档在各类人员、计算机之间的多种桥梁作用中看出,既然软件已经从手工艺的开发方式发展到工业化的生产方式,文档在开发过程中就起到关键作用。从某种意义上来说,文档是软件开发规范的体现和指南。按规范要求生成一整套文档的过程,就是按照软件开发规范完成一个软件开发的过程。所以,在使用工程化的原理和方法来指导软件的开发和维护时,应当充分注意软件文档的编写和管理。

3.文档的分类

从形式上来看,软件文档大致可分为两类:一类是开发过程中填写的各种图表,可称为工作表格;另一类是应编写的技术资料或技术管理资料,可称为文档或文件。软件文档的编写,可以用自然语言、特别设计的形式语言、介于两者之间的半形式语言(结构化语言)、各类图形、表格。文档可以书写,也可以在计算机支持系统中产生,但它必须是可阅读的。

按照文档产生和使用的范围,软件文档大致可分为3类。

(1)开发文档。它是在软件开发过程中,作为软件开发人员前一阶段工作成果的体现和后一阶段工作依据的文档,包括软件需求说明书、数据要求说明书、概要设计说明书、详细设计说明书、可行性研究报告、项目开发计划。

(2)管理文档。它是在软件开发过程中,由软件开发人员制定并提交的一些工作计划或工作报告,管理人员能够通过这些文档了解软件开发项目安排、进度、资源使用和成果等,包括项目开发计划、测试计划、测试报告、开发进度月报及项目开发总结。

(3)用户文档。它是软件开发人员为用户准备的有关该软件使用、操作、维护的资料,包括用户手册、操作手册、维护修改建议、软件需求说明书。

4.软件文档的工作

基于软件生存周期方法,把软件产品从形成概念开始,经过开发、使用和不断增补修订,直到最后被淘汰的整个过程应提交的文档归于以下13种。

(1)可行性研究报告。说明该软件项目的实现在技术上、经济上和社会因素上的可行性,评述为合理地达到开发目标可供选择的各种可能的实现方案,说明并论证所选定实施方案的理由。

(2)项目开发计划。它是为软件项目实施方案制订出的具体计划,应包括各部分工作的负责人员、开发的进度、开发经费的概算、所需的硬件和软件资源等。项目开发计划应提供给管理部门,并作为开发阶段评审的基础。

(3)软件需求说明书,也称软件规格说明书。其中对所开发软件的功能、性能、用户界面和运行环境等作出详细的说明。它是用户与开发人员双方对软件需求取得共同理解基础上达成的协议,也是实施开发工作的基础。

(4)数据要求说明书。该说明书应当给出数据逻辑描述和数据采集的各项要求,为生成和维护系统的数据文件做好准备。

(5)概要设计说明书。该说明书是概要设计工作阶段的成果。它应当说明系统的功能分配、模块划分、程序的总体结构、输入输出及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计奠定基础。

(6)详细设计说明书。着重描述每一个模块是如何实现的,包括实现算法、逻辑流程等。

(7)用户手册。详细描述软件的功能、性能和用户界面,使用户了解如何使用该软件。

(8)操作手册。为操作人员提供该软件各种运行情况的有关知识,特别是操作方法细节。

(9)测试计划。针对组装测试和确认测试,需要为组织测试制订计划。计划应包括测试的内容、进度、条件、人员、测试用例的选取原则、测试结果允许的偏差范围等。

(10)测试分析报告。测试工作完成以后,应当提交测试计划执行情况的说明。对测试结果加以分析,并提出测试的结论性意见。

(11)开发进度月报。该月报是软件人员按月向管理部门提交的项目进展情况的报告。报告应包括进度计划与实际执行情况的比较、阶段成果、遇到的问题和解决的办法以及下个月的打算等。

(12)项目开发总结报告。软件项目开发完成之后,应当与项目实施计划对照,总结实际执行的情况,如进度、成果、资源利用、成本和投入的人力。此外,还需对开发工作作出评价,总结经验和教训。

(13)维护修改建议。软件产品投入运行之后,可能有修正、更改等问题,应当对存在的问题、修改的考虑以及修改的影响估计等做详细的描述,写成维护修改建议,提交审批。

上述所有13个文档,最终要向软件管理部门,或向用户回答下列问题:要满足哪些需求,即回答“做什么(What)?”;所开发的软件在什么环境中实现,所需信息从哪里来,即回答“从何处(Where)?”;开发工作的时间如何安排,即回答“何时做(When)?”;开发(或维护)工作打算“由谁来做(Who)?”;需求应如何实现,即回答“怎样干(How)?”;为什么要进行这些软件开发或维护修改工作(Why)。具体在哪个文档要回答哪些问题,以及哪些人与哪些文档的编制有关。