技术文章 > 软件开发的流程及微软的产品开发实践(节选)

软件开发的流程及微软的产品开发实践(节选)

2018-07-20 07:13

文档管理软件,文档管理系统,知识管理系统,档案管理系统的技术资料:
在这堂课中我们介绍软件开发的流程及微软的产品开发实践,也就是把项目管理理论(前面 的课程介绍的内容)用到软件开发管理上。
根据项目管理的理论,所有的项目都要经历五个阶段:起动阶段、计划阶段、执行阶段、
控制阶段、结束阶段。我们将把软 件项目根据项目理论来对照,将这 五个阶段的具体工作详细地列出 来,让大家知道每个阶段具体做些 什么工作,让我们依次看一下。
首先是项目启动阶段。任何软 件开发都要有一个起动说明书,如 果你是作为跟客户谈判的项目人 员,你要经过跟客户谈判了解项目 的范围和要求,在做开发之前写一 个意向总结书。意向总结书出来以 后,你要讲到要花多少钱、多少人 力、用多少时间,这些就是所谓的 金三角,三个因素都要提到,最后 这个项目是该上还是不该上,项目 起动的决定在项目意向书的管理上。最终决定可能是你和公司的领导还有项目的客户一起来讨 论的。这个阶段我们叫做软件项目开发的项目启动阶段。在很多情况下,绝大部分软件人员都 跳开这一步了,把项目交给你了,你作为项目管理人员去管理这个项目。但是严格来讲,应该 包括这一部分。
软件计划阶段。软件一旦确定了,就要有需求总结。还没有讲到设计,还没有讲到这个软 件该怎么做,该设计什么东西,首先要讲清楚这个软件到底是干什么的,为客户到底解决什么 问题,客户到底怎么样用这个软件,这些问题你要能够回答,而且能够回答得很清楚。
接下来的工作就是要制定项目进度表,一旦知道你要做什么东西了,你就要制定一个进度 表。你需要定一个时间表,将每项工作砍成一小段一小段的,每一小段都有一个时间,先做最 核心最重要的,后做次要一些的内容。
这在欧美叫做瀑布,瀑布就是一节节的流水下来,这就是刚刚提到的甘特表。每根长框就 是表示这段工作的长短,严格地来讲,甘特表还不止这些东西,包括表里头可以完成多少数 字,表上有具体工作的职责,执行人员是多少,所有的信息都可以放上,纵向的还有一个时 间,每个月、每个星期的安排,甘特图表就是来表示这个项目流程要花多少时间。项目进度表 不包含具体细节,几个大的杠杆起到的作用就是可以看到每个阶段做什么工作。之后我们要制 定一个设计规范书,或者是设计蓝图。就象盖房子一样,盖之前要知道花多少钱,盖在什么地 方,之后我去跟银行贷款,能不能贷到,之后怎么盖房子,谁住进去,这些就是项目的需求管 理,第一部分需求管理就是确定你要做什么东西。然后确定时间表,这个房子要盖一年六个 月,盖在上海杨浦区,所有这些就是时间表。之后的设计蓝图书类似于房子的蓝图,这个房子 怎么样的,大门是怎么样的,里面多少间屋子,屋子里面有些什么设备,这就是具体描述一个 软件具备的功能,这是最关键的。在微软里就很明显,没有时间表和设计规范书,一行编码都 不可以写。国内有些软件公司也开始执行这样的政策。如果没有时间表的话,让人员任意开 发,开发出来的东西根本不符合需求。我举的房子例子就很明显,如果我随便雇一个施工队去 盖,他可以盖成一个大城堡,花了三倍的成本,但是这个房子根本不是我所需要的。作为项目 管理,我们要避免这样的情况。
有了蓝图书以后、有了设计规范以后,我们才开始开发。在开发之前最好还是要制定开发 计划。开发计划是由开发团队来制定的,就是我这个设计该怎么设计,说我这个项目管理产品 一直规定产品该做什么样的东西,有什么样的功能,但是具体下面怎么样去实现,比如说构架 怎么回事,他用什么样的语言,这个不用管。就像你是盖房子的负责人,你画了蓝图以后至于 砖是什么颜色的,里面水泥要多少,这个你不用管,这是真正造房子的人需要知道的。一个是 房子的需求和设计,一个是盖房子的具体使用和材料的具体使用。开发计划就是开发软件里具 体设计的计划,如果这个计划没有定出来的话,开发团队里几十个人可以各自开发,开发出来 的组件没法交流信息,这样就会造成浪费,所以开发团队要有自己的开发计划,有了开发计划 以后才做具体的开发工作。开发工作就是写你的开发程序了,到这个时候才真正开发了。很多 国内的小公司,客户跟你说开发东西,大约知道开始做什么东西,就开始编程了,中间的需求 管理、计划书都省了,你当然也可以写出来程序,可是这样你给自己找了一大堆麻烦,最后开 发一定是失败的,因为你根本没有想清楚开发的要求是什么。就象你今天盖房子根本没有说房 子要什么样的,如果盖了一个古城堡,这是违反你的开发概念的。
尤其要注意的是,在开发、计划执行的时候,测试和开发必须齐头并进,这样可以减低开 发时间,缩短整个流程。在制定开发计划的时候也必须同时制定你的测试计划。开发计划和测 试计划的前提就是你的设计蓝图书或者叫设计规范,但是是不是要等设计规范完全结束以后才 可以制定开发计划和测试计划?也不是。如果我的整个产品要设计二十个功能,在我设计前十 个功能完成以后就可以撰写针对这十个功能的开发计划,很多工作都是可以齐头并进的,可以 用交错的方法来缩短整个开发流程。
开发和管理就是你的执行阶段。计划定完了以后我执行了,所有的软件按照项目理论的道 路,从计划到执行,这两个连起来是一个控制阶段,这个控制阶段是可以重复的,可以再回 来。一旦发行完了以后并不是说项目结束了,很多软件完了以后还要做结尾和善后工作,包括对客户的教育,写说明书等等。软件完成之后有两种发布方法,一个是送给一个制造商,刻录到DVD上去,还有就是放在网上,大家可以下载。最后的这个阶段我们称作项目的结束阶段。
把这五个流程理清楚,每个流程工作具体做得很好,都实践应用到工作当中去,软件开发的成功性就应该是大大提高了。