软件项目管理“固化、简化、标准化”

 我曾任职的某公司软件工程中心有8位项目经理,成功地管理过许多应用软件开发项目,部门同事戏称他们“八仙”,因为他们带项目的风格迥异,就像八仙过海,各有神通。

 第一位,性格温和、思路清晰。走的是专家形象的路子,只要和用户交流一次,就能获得用户认同和尊重;一般问题刚有苗头,就会被他察觉,并化解于无形之中。因此被用户敬若神明,言听计从。

 第二位,性格开朗、善于沟通。走的是关系调节的路子,几次接触,就能和用户称兄道弟,于是项目中所有的问题都在酒桌上解决。

 第三位,善于把握用户心理和用户内部之间的矛盾。走的是威逼利诱的路子,由于项目中用户方关键人员有的涉足幕后交易,因此往往有苦难言,只能就范。因此,即使遇到最刁钻、难缠的客户,经他一番软硬兼施,最后也都能摆平。

 第四位,为人踏实、肯干,富有耐心,走的是埋头苦干的路子,态度极佳、有求必应,和用户处的时间长了,就是铁石心肠的用户也不再忍心刁难。

 而其他几位,也都可以归结为以上某两种或几种类型的结合。

 在大家津津乐道他们传奇般的成功项目管理经历之余,我曾私下向他们取经:如何才能取得软件开发项目的成功?他们的观点居然出奇地一致:最重要的是规范开发过程管理!

 那么,为什么要规范软件开发过程?又如何规范软件开发过程呢?

 我认为规范就是要约束自己、约束参与软件开发过程的各方,目的是要消除软件开发中的种种不良做法和习惯,采用符合软件规律、事半功倍的方法,降低风险,以使软件开发项目能获得可重复、可以预期的满意结果。

 总结多年来项目管理的实践经验和感悟,我觉得要规范软件开发过程必须做好“三化”、同时避免踏入两个误区。所谓做好“三化”、避免踏入两个误区,就是指要坚持固化、简化、标准化,避免踏入僵化、随意化两个误区。

 第一,要“固化”。

 软件过程又称“软件生存周期过程”,是软件生存期内为达到一定目标而必须实施的一系列相关过程的集合。说白了,就是软件开发中一系列最佳实践的集合。所谓“固化”,其本质就是把软件开发过程中已被实践反复证明的、符合软件规律的正确做法(最佳实践)沉淀在开发管理流程之中,供后人实践时借鉴、使用。

 软件企业是一个天才汇集的地方,是人类智慧最集中的场所之一,同时,由于软件人才的流动性很强,软件企业又是智慧流失最快的地方。我觉得,软件企业要想做大、做强,除了采用好的机制留住人才之外,最重要的是沉淀众人的智慧。而企业沉淀众人智慧有三个载体:第一是知识库,第二是流程,第三是软件资产库(面向领域的软件构架及构件库)。沉淀众人智慧的过程就是“固化”。

 有了固化的软件开发管理流程,才有了规范软件开发过程的基础。通过不断地固化软件开发实践中符合规律的正确做法,我们得到了流程规范。然后,用这些流程规范指导新的软件项目开发,并在开发实践中持续改进,从而使得我们的软件开发过程越来越规范。

 固化的软件开发实践分为两个层次,一个是制度,一个是指南。制度是公司强制执行的一些流程规范,不可缺失、省略,如公司制定的标准、规范、管理制度等;而指南是一般情况下推荐执行,建议这么做,允许根据项目实际情况适度剪裁、取舍,如公司定义的软件开发过程模型、模板等。实现固化的手段也多种多样,如通过管理制度、定义开发过程、采用软件工具、培训等,根据本人实践体会,采用一些项目管理辅助软件工具,不失为“固化”众人智慧、规范软件开发过程管理的有效手段!

 说到“固化”,有的企业走向了另一个极端:僵化。不顾本企业、本项目的实际情况,对ISO9000、CMM、ISO12207等标准盲目地生搬硬套、墨守成规,对其他企业的成功经验不加消化的照搬照抄、教条主义,从而扼杀了项目团队的主观能动性和创造性。殊不知,标准、规范、过程模型、模板是死的,参与项目的团队成员才是规范软件开发过程的主角和灵魂。

 第二,要“简化”。

 “固化”只是规范软件开发过程的“静态基础”,而“动态管理”对于规范软件开发过程更为重要。

 回顾上个世纪70年代,软件开发很简单,因此很容易规范。随着软件项目规模越来越大,软件开发过程越来越复杂,涉及的人、财、物资源也越来越庞大。复杂导致多变,多变带来随意,随意容易使软件开发误入歧途,使开发过程难以规范。所以说规范软件开发过程还必须简化软件开发过程!

 说到简化,也有企业走进了“随意化”的误区。自由主义、经验主义随心所欲地发挥,口头协议满天飞,时间紧、人手不足是他们抛弃规范、拒绝监督的最佳接口。其实,简化绝不意味着随意化。

 如何简化呢?我认为采用基于构件的软件开发方法就是一种有效手段。通过对应用领域的研究(领域工程),提炼领域需求的共性和变化性,刻画领域模型,设计面向领域的体系结构,开发各种构件,从而使应用软件的开发过程更接近于工业化生产流水线,基于体系结构,用各种构件进行组装。简化了的软件开发过程,变化因素更少,更容易规范管理。

 第三,要“标准化”。

 前面所说的固化、简化都只是单个企业内部的实践行为,而“标准化”则是整个社会范围内的固化和简化行为。技术标准化、管理过程标准化、度量标准化、应用领域内业务的标准化,都是推动整个软件行业内、软件产业链上各个企业规范软件开发过程的前提基础和有力保障。标准,凝聚着众多企业、科研院所的智慧,同时,又大大简化了标准所规范的领域内软件开发过程。当然,标准化也是规范软件开发过程的征途上最漫长、最困难而又最具意义的一步。

 总之,失败的软件项目各有其失败,而成功的软件项目都一样:离不开规范的软件开发过程管理。固化、简化、标准化正是规范软件开发过程重要的三个方面。
[@more@]

时间: 2024-10-03 19:26:38

软件项目管理“固化、简化、标准化”的相关文章

《软件项目管理》课程知识总结

   这篇文章是结合<软件项目管理>课程知识进行的总结,我也不知道自己为什么要总结这篇文章,很多事情没有原因就做了,希望对大家有所帮助,尤其是上这门课的同学吧!有时候也在想写这样的文章到底有没有用,估计用处不大,但没办法兴趣使然~    --吾亦无他,唯心向尓    (By:Eastmount 2014-11-25 下午5点 http://blog.csdn.net/eastmount/) 一. 什么是项目管理?     随着软件危机(Software Crisis)带来软件代价高.难于控制开

《软件项目管理》复习概要

今天下午复习了一下<软件项目管理>这门课程.因为快要考试了,所以总结了一下个人认为比较重要的内容,分享一下. 另外,大家如果感兴趣的话,还是下载这个PPT版本的话,因为文字就是总结这个PPT的.我上传到了新浪微盘:http://vdisk.weibo.com/s/4QlGr 不过这个PPT虽然是老师上课用的,但是老师额外增加了许多的内容,PPT只是提醒老师而已,许多的内容都是老师课堂上说的,所以大家可能会发现有些部分这个PPT比较粗略. ----------------------------

《挖掘管理价值:企业软件项目管理实战》一2.4 软件设计过程

2.4 软件设计过程 挖掘管理价值:企业软件项目管理实战 软件设计是根据需求的内容,运用计算机理论.技术和工具将其合理地.有机地.具体地转化为功能,并演示其实现的方法.过程和结果.设计人员在理解了用户的需求之后,首先在自己的脑海中会有一个大致的概念和思路,然后考虑如何去实现这些功能,当然这需要一定的专业知识和实践经验.这里就不阐述软件或数据库设计的理论知识了,而重点介绍如何将设计人员脑子里对软件的设计和理解反映到文字.图形和流程上,使得用户可以了解计算机是如何实现他们的需求的.我们用图 2-9

《挖掘管理价值:企业软件项目管理实战》一2.3 需求分析过程

2.3 需求分析过程 挖掘管理价值:企业软件项目管理实战 需求是软件的重要部分,好比是发动机离开了汽油不能运行一样.没有需求就没有软件存在的价值,没有需求就不可能让计算机完成人所需要做的事情.可以说需求是软件的基石或土壤,就算是一样的需求,因为对其不同的理解和解释,也会开发出迥异的软件.这就好比,相同的种子在不同的气候和种植方法下,长出来的果实也是有差异的. 2.3.1 需求的特点 普遍的需求都会符合以下的特点,有些比较明显,有些则比较模糊. 目的性.有明显的要求,希望得到什么,不是模棱两可的.

《挖掘管理价值:企业软件项目管理实战》一第 2 章 流程式生产软件——过程管理

第 2 章 流程式生产软件--过程管理 挖掘管理价值:企业软件项目管理实战 做事需要章法,管理需要流程.软件开发生命周期理论定义了软件开发普遍的过程,软件项目管理工作之一就是以此为基础,对软件开发的过程进行细致的管理. 本章重点 建立项目流程.为了标准化软件开发的过程,企业应该根据自己的管理要求建立项目管理流程. 项目确立过程.要开始一个软件项目,就必须先对项目的合理性进行恰当的论证和评估. 需求分析过程.软件的内容和功能来源于需求的收集和分析,应该根据需求的重要性来设定开发的优先级. 软件设计

从软件技术演变到软件项目管理的进步

在这个演变过程中,软件项目管理的实质内容也在不断转变 20世纪90年代,无论是国内还是国外,应用软件技术主体还都处于DOS(个人电脑操作系统)下的编程状态. 那时的编程以代码行为单位,逐字逐句地进行编写,若要做个点击按钮,要写几十行代码,是很正常的事.光调试一个按钮代码,就需要花费几个小时的时间,编写语言主要为汇编.C.Basic等.编写工具跟现在Windows里的写字板一样,几乎全靠程序员个人的能力来解决编写问题.当时开发出来的应用软件主要是二维平面界面,如部分银行至今还在使用的前台服务系统:

《挖掘管理价值:企业软件项目管理实战》一2.2 项目确立过程

2.2 项目确立过程 挖掘管理价值:企业软件项目管理实战 软件开发项目的确立有的时候是必然发生的,如用户需求或对现有系统的升级和更新:有的时候是偶然发生的,如市场商机或业务部门突然提出一个需求或者是系统突然出现了故障.不管是何种情况,软件开发都不可能一蹴而就,总需要一个或长或短的过程.因此在开始软件项目之前,通常需要一个立项的过程. 2.2.1 立项目的 立项的目的是为了确定软件开发的目的和范围,评估项目的投入.回报.合理性和可操作性,同时得到上层的批准和预算. 通常而言,立项要解决以下问题.

软件工程之软件项目管理

       软件项目管理的对象是软件工程项目,她贯穿了软件工程的整个生命周期.为了使软件开发获得成功,关键问题是必须对软件项目的工作范围.可能风险.需要的资源.要实现的任务.经历的里程碑.花费的成本.进度安排等做到心中有数.这种管理在技术工作开始之前就应该着手准备,在软件从概念到实现的过程中继续进行,当软件工程过程最后结束的时候才宣告唯美落幕!       软件项目管理的提出是在二十世纪七十年代中期的美国,当时美国国防部专门研究了软件开发不能按时提交,预算超支和质量达不到用户要求的原因,结果发

软件项目管理有关的问题。

问题描述 软件项目管理有关的问题. 第三题 解决方案 软件项目管理问题与总结软件项目管理问题面视谈软件项目管理工具