以码农的角度看软件开发文档的书写标准
笔者在软件公司负责技术开发实现,就是标准的码农。平时很少写软件开发文档一直都觉得写文档很浪费时间。仔细地分析了各种软件开发报告后发现我彻底地错了。程序功能实现并不难,只要掌握了相关技术,即使不会网上也有很多参考资料。而软件开发文档编写却是真正考察一个人的能力,它体现了一个人思考问题解决问题的能力。可以毫不含糊地说,要写出一份好的软件开发文档比开发程序难多了。
一篇好的软件开发文档,应该让所有跟这个项目有关的人(包括老板、项目经理、程序开发人员、测试人员、程序使用者)都能很好地理解自己的想法。一份好的软件开发报告要完整地体现出来,必须包含软件开发的各个方面:软件需求分析、软件概要设计、软件详细设计、软件数据库设计、软件编码、软件测试、软件交付准备、软件鉴定验收、培训等一系列工作。每一部分都有其侧重点和主要针对的人群。一份好的文档能很好地提高我们的工作效率,能让大家更好地配合,也有利于后期的维护工作。
1.软件需求分析
软件开发团队应该对软件应用需求作充分的调研,提交完整的软件需求分析报告。在需求分析报告中必须描述的基本问题是:功能、性能、强加于实现的设计限制、属性、外部接口。应当避免把设计或项目需求写入需求分析报告中。它必须说明由软件获得的结果,而不是获得这些结果的手段。软件开发需求可以用若干种方法来表达,如通过输入、输出说明;使用代表性的例子;用规范化的模型。软件开发团队应尽可能地使用模型的方式,因为这是表达复杂需求的精确和有效的方法。
2.软件概要设计
在认可的软件需求分析基础上,软件开发团队进行下一步的工作。软件开发团队需要对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件详细设计提供基础。
3.软件详细设计
在软件概要设计的基础上,软件开发团队需要进行软件系统的详细设计。在详细设计中,描述实现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。应当保证软件的需求完全分配给整个软件。详细设计应当足够详细,能够根据详细设计报告进行编码。
4.软件编码
在软件编码阶段,软件开发团队根据软件的详细设计中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。为了提高编程实现的质量,软件的程序设计必须遵照国家颁布的相关编程规范。主要内容包括:规范化的程序内部文档、数据结构的详细说明、清晰的语句结构、编码规范。编码规范的内容包括命名规范、界面规范、提示及帮助信息规范、热键定义等。在软件编码的同时应进行单元测试。
5.软件测试
为了尽早发现软件产品中的错误,从而达到提高软件质量、降低软件维护的费用,软件开发团队应在编码过程中对各个模块的程序代码进行单元测试,系统集成时进行集成测试,系统集成完成后对整个软件进行系统测试。单元测试是在软件开发过程中针对程序模块进行正确性检验。集成测试是在单元测试的基础上,将所有模块按照设计要求组装成系统或子系统,对模块组装过程和模块接口进行正确性检验。软件系统测试不仅是检测软件的整体行为表现,从另一个侧面看,也是对软件开发设计的再确认。进行软件系统测试工作时,测试主要包括界面测试、可用性测试、功能测试、稳定性(强度)测试、性能测试、强壮性(恢复)测试、逻辑性测试、破坏性测试、安全性测试等。软件开发团队针对单元测试,集成测试,系统测试分别制定测试计划。集成测试需要根据需求分析报告和概要设计制作测试用例,并须经过评审。软件测试按照测试计划、需求分析报告的要求进行,最后形成软件测试报告。
6.软件交付准备
在软件测试证明软件达到要求后,软件开发团队应提交开发的目标安装程序、数据库的数据字典、用户安装手册、用户使用指南、需求报告、设计报告、测试报告等产物。
7.软件鉴定验收
在软件开发完成后,为了确保软件是按照需求分析的要求进行开发的,保证软件产品的质量,需要对软件产品进行鉴定验收。验收内容应该包括:合法性检查、文档检查、软件一致性检查、软件系统测试与测试结果评审等几项工作。
8.培训
软件开发团队应详细列出培训