由于工作和时间原因,已几年没在博客园写文章了,首先对一直坚持写博客的同学们点个赞,经常写博客是一种好学习的好习惯。刚好今天周末对着几年来工作中一些事情回忆和总结,希望通过博客做个记录或者给有兴趣的同学们分享点经验。本人一路走来从一名初级开发、中级、高级到现在技术经理兼职项目经理,7年多的时间,从纯技术到技术+项目管理一个转型。一直都处于学习总结、学习总结、学习总结的过程(重要的事情说三遍)。不管是.NET技术、工程过程、项目管理都积累一些个人经验。本文主要对文档方面的个人总结。
背景和目的
文档是软件开发中重要的组成部分,特别在国内软件开发氛围,相关文档的重要性很弱化。对于一些开发人员有时撰写文档变成一种压力和负担,或者觉得浪费时间。当初我也有过这种心理,后来觉得能编写相关文档是一种很牛叉的能力。当我经历过后,现在觉得:
- 文档是开发过程不可缺少的产物;
- 是梳理思维的一种方式;
- 是一种信息记载和传递给他人的方式(口头沟通会久而久之会遗忘或者丢失);
- 对于项目型团队,文档项目交付一部分内容(不管基于项目交付,还是用于开发过程的目的);
所以写此文章是为记录个人的总结,通过编写文章进一步将总结内容梳理,同时将个人经验分享给有兴趣的同学们。
撰写方式总结
软件开发过程或者信息工程建设过程中,都设计很多文档,比如:技术设计方面、项目管理方面。这些文档其中更多是一种应用文的写作。就像我们读书时期练习应用写作一样。原理是一样。我们在编写文档前需要思考几方面内容:
- 编写的目的;
- 编写的事物特征、属性;
- 阅读对象;
- 定义好文章章节
首先我们先说下”编写的目的“,在我们动手编写时都一样思考下,为什么要写?写于干嘛?写给谁看?通过三个反问思考后,编写目的即可清晰出来。其次结合编写目的对需要描述的事物了解和分析其特征、属性等,抓住主要特征或者重要部分进行描述。再者,阅读对象的不同可能使得你的用词不同。最后结合上述分析对文章定大章节。具体每个章节的内容描述方式可以使用:举例子、分类别、作比较、列数字、下定义、作诠释、引用说明、打比方、摹状貌、引资料、画图表等。语言描述是否精确,简明而要,描述逻辑是否清晰等方面只能靠练习。接着我们说下软件开发过程中可能涉及的相关文档及文档编写的作用和目的。
一般软件项目建设过程包括:项目启动阶段、需求阶段、设计开发阶段、测试阶段、实施阶段、项目验收。实际包括两个主要过程:软件工程过程和软件开发项目管理过程。
工程过程文档
软件工程过程文档包括:用户需求文档、软件需求规格说明文档、概要设计文档、详细设计文档、测试文档、用户使用说明文档及一些技术规范文档。
1、用户需求文档:通过需求采集、分析后,形成书面文档与客户进行确认,其目的主要为明确项目开发范围,其中用户需求包括:功能性需求和非功能性需求。编写时站在一个系统用户的角度描述系统。
2、软件需求规格说明文档:部分人不太理解“软件需求规格说明文档”和“用户需求文档”的区别,其实“软件需求规格说明文档”是基于“用户需求文档”的基础上详细描述用户需求,比如:客户提出需要管理人员的需求,希望可以新增、编辑和删掉,那么用户需求确认后,进一步就是细化需求,如何新增?新增成功提示啥?能否重复新增?新增必填内容是啥?,其实可以理解为定规格。此文档编写目的是细化需求,确保正确理解对用户需求,并将需求传递给设计/开发/测试人员。
3、概要设计文档:此文档是一个系统设计的核心,编写此文档是系统设计师将系统整体设计方案通过书面描述传递设计方案。便于客户、开发、测试人员理解系统设计的思路。是从整体性的描述整个系统。任何一个系统的建设都缺少不了系统整体性设计。
4、详细设计文档:是依据概要设计的方案,对系统细化模块进行设计,详细设计更多是为了提供给开发人员阅读,是对系统功能文档化描述,测试人员结合软件规格需求和设计文档编写测试文档。
5、测试文档:一个系统测试启动前,需要进行测试的设计,就是测试方案,基于测试方案进行细化形成测试用例,测试用例执行结果形成测试报告文档。测试文档主要用于保证系统的质量和指导测试工作的开展。
6、用户使用文档:通过描述系统功能和使用场景,形成一个指导用户使用系统的文档。
还有一些技术规范的文档,比如:编码规范、开发流程定义和系统外部调用接口规范等。每个软件工程文档都有着实际的作用,可根据项目情况和团队成熟度裁剪使用。有一部分开发的朋友误解了“敏捷开发管理”中,沟通优先于文档的规则,应该是通过口头讨论交流,达成统一设计思路后,将核心的设计思路和要点通过文档记录,避免浪费时间,提高效率。
项目管理文档
项目管理过程文档包括:项目启动文档、项目计划、监控文档、项目报告文档、项目验证文档及实施过程中相关文书等。
1、项目启动文档:项目启动时,相关项目经理任命书、项目启动会PPT。主要是为了证明项目正式启动,将相关信息传递给项目各方面。
2、项目计划文档:包括项目实施计划、日常开发计划和各阶段性计划,其中项目整体实施计划文档是项目实施方向,为了让项目各方认识到项目开展大致过程、
3、监控文档:主要是项目日常开展中采集的信息记录,比如开发效率、日常进度。
4、项目报告文档:是项目开展中,阶段性报告、相关会议纪要、项目验证总结报告等,主要描述项目的情况。
项目管理文档也是根据项目实际情况而定,不同类型的项目可能产出的管理文档不同,目的都是服务于项目顺利实施和验收。其中CMMI提供了一套比较全的过程和文档定义模板使用,但是必须根据实际情况选用,不可照搬。
个人对文档重要性的总结
能把文档写好其实挺考究一个人的逻辑思维能力和语文功底,还好我们涉及写的是说明文而已。因为很多搞软件开发的同学,大多都是偏理科生,逻辑思维好,书面和口头表达能力很一般,这方面可能变成职业发展的阻路石。我们可以看下,那些专家、教授或者领导都是站起来能说、坐下能写,综合能力很强。思维能力、沟通能力和书面表达能力是你能否迈向更高层次的基础。文章所提及的相关文档,我将会再后续的博客分享。
上述只是个人的见解,可能有不准确的地方,对这方面有兴趣的同学,可以一起讨论。