项目管理其实是一个非常宽泛的学科,它不仅仅只适合于软件(或互联网或IT)行业,其实也适合其他行业,例如建筑。
一个项目需要进行各方面的经济,资源,人员管理与客户交流,这是软件项目管理,
如果你有时间去发现的话,你会惊奇的发现建筑行业也有项目经理这个角色!而且你仔细去研读项目管理方面的书籍,你会发现这门学科从始至终都没告诉你如何开发,具体怎么设计、如何开发!
软件工程为我们提供的具有指导意义的软件开发方法
但是软件工程就不一样了,我个人认为它对广义上的项目管理去繁从简了,它关注的核心点是分析、设计、开发!
工程是具体实施,而软件工程有别于其它工程,他们学的东西完全是如何用数学等方法解决制造问题,并没关于管理,
软件工程的产品不仅仅是代码,也包括一个有效的协作管理,生存期模型,瀑布模型这些都是软件工程提出的,像敏捷模型适用于各种类型的工程。
软件工程的产品是一个软件+文件+管理的产品。管理融入到了代码与文档中。
瀑布vs敏捷
都有分析 设计 开发 测试
传统的软件开发过程比如瀑布开发过程,将软件的生命周期分为需求,分析,设计,编码实现,测试,部署等几个阶段,从当时的情况可以看出各个阶段代表着项目的进度,是按照先后顺序来完成的,因此当业务变得更加复杂时,这样的开发过程就出现了很多问题,从而出现了现在比较流行的RUP等注重迭代开发的开发过程。
在瀑布模型里,需求,分析,设计,编码实现,测试,部署,代表着阶段。但到敏捷和迭代里,这代表着活动!
在这些开发过程中也引用了以前的那些名词(分析,设计,需求等),但代表的意义已经不一样了,在这些开发过程中,这些代表着活动,代表着开发过程中的各种活动,因此在每一个迭代过程中都会包含这些活动。这就是传统瀑布模型与现在RUP的区别,把阶段转换成了活动来理解,从而形成了一种新的开发过程,更好的适应了现在的软件开发。
瀑布模型
在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。
当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。
优势vs劣势
由于瀑布模式在软件开发开始阶段就全部确定了软件所需功能和设计,这使得软件开发过程有很强的针对性,但这种特性也使得瀑布模式无法适应软件需求变化比较快速的项目。
同时瀑布模式开发过程始终围绕既定目标,这就使得软件开发过程更具严密性,整体逻辑严谨,系统的稳定性和可靠性当然也更强。