栖息谷-管理人的网上家园

软件工程开发告别技术精英时代 工程化管理

[复制链接] 0
回复
1157
查看
打印 上一主题 下一主题
楼主
跳转到指定楼层
分享到:
发表于 2009-3-18 16:03:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
没有有规则的软件开发过程带来的只可能是无法预料的结果,这是很多项目管理者在亲身经历了一次次的项目失败之后,逐渐领悟到的道理。尽管有人依然怀念日渐远去的技术精英时代,但随着软件项目的规模不断加大,参与人员的增多,对规范性的要求愈加严格,告别个人英雄主义的开发模式成为必然,基于软件项目管理的、工程化的软件开发时代已经来临。
 
  软件项目管理的作用一方面是提高质量,降低成本,而另一方面则是软件的工程化开发提供保障。

  依赖软件技术精英的时代已经一去不会返了。很多项目管理者在实际开发中,经历了多次可怕的梦魇:一次次的失败,一次次的返工。比如,不少项目管理者纷纷提到软件需求变更带来的可怕影响。但是正如完整的法律体制不能制止犯罪,没有完整的法律体制犯罪会更加猖獗一样,频繁的软件变更固然可怕,而没有一个完整的项目管理对应机制,我们无法相像项目最终会是一个什么样子。运用项目管理的经验和方法是软件项目成功的前提和保证,这已是今天的软件业内人士的共识!

  软件项目管理的定义

  项目普遍存在于人们的工作和生活中,如何管理好这些项目就是一项需要研究的任务。例如商品采购、生日聚会等项目,事前在心里(或者纸张上)有个计划,项目实施过程中在有意识地控制这个计划,这其实就是在进行项目管理。另外,设想一下,让你负责字处理系统软件这样大的项目,这样的系统需要非常高的稳定性、良好的人机交互接口。显然,这个项目不是几个人几天就可以完成的,有上百人年、甚至上千人年的工作量,需要很多子系统组合在一起,完成一个相互关联的系统,还要考虑系统的架构、安全性、如何协同工作、谁做什么、哪个部分先做哪个后做、如何关联等,出现风险如何处理等等。同时,一个管理者不可能了解所有的事情,认识所有的人,如何保证所有的项目人员不疲倦,永远有干劲儿。这一切都要从系统工程的角度进行管理,这就是软件项目管理产生的主要原因。

  软件项目管理是组织为了实现其目标,利用各种有效的手段,对软件项目各阶段工作进行计划、组织、协调、指挥、控制,以取得良好经济效益的各项活动的总和。为了满足甚至超越项目有关人员对项目的需求和期望,项目管理会将理论知识、技能、工具和技巧应用到软件项目的活动中去。

  要想满足或超过项目相关人员的需求和期望,我们需要在下面这些相互间有冲突的要求中寻求平衡:

  1. 范围、时间、成本和质量

  2. 有不同需求和期望的项目干系人员

  3. 明确表示出来的要求(需求)和未明确表达的要求(期望)

  软件项目是一种特殊的项目,它创造的惟一产品或者服务是逻辑载体,没有具体的形状和尺寸。它提供的产品或服务是逻辑的,具有独特性、临时性和周期性的特点。软件开发不同于其他产品的制造,软件过程更多的是设计过程(没有制造过程)。另外,软件开发不需要使用大量的物质资源,而主要是人力资源。并且,软件开发的产品只是程序代码和技术文件,并没有其他的物质结果。基于上述特点,软件项目管理与其他项目管理相比,有很大的独特性。

  从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动,软件开发项目管理是以最合理、最有效、最经济的手段保证软件开发项目的成功完成。

    软件开发是将思想用某种形式表达出来的过程,它涉及到的多是无形的东西,既看不到质,也看不到量,从而使项目管理的难度极大。软件开发是耗费资金的项目,但到底投入多少,能达到什么样的地步?都是未知数,从而使得其投资风险系数较大。

  软件项目管理不是一件容易的工作,变化、风险、矛盾、冲突等是任何项目都无法回避的现实环境。所以,项目管理是一项复杂的管理活动,包括:项目范围管理、项目进度管理、项目成本管理、项目质量管理、项目人力资源管理、项目沟通管理、项目风险管理、项目变更管理等多项管理实践,而在一个实际项目的进展过程中,这些管理实践又是相互融合、相互关联的,是复杂的、专业化的,因此要求有专职的项目经理或者专门的项目管理机构来完成。它对项目经理提出了很高的要求,正如Mulcahy所言,“项目经理的工作是‘奇妙的’、‘伟大的’,但是也是非常技巧的”

  软件项目管理的作用

  在软件开发中,项目管理起着重要的作用,一方面是提高质量,降低成本的保障,另一方面,也是更重要的一点,它是软件工程化开发的前提。软件项目与其他项目相比,有着许多管理方面的共性,但同时也有自己的特殊性。所以,在软件开发中,忽视了项目管理或不按规律去办,往往会导致开发的失败或质量的下降。

  实际上,软件项目管理的意义还不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定发展(即减小开发风险)。项目管理的质量与软件产品的质量有着直接的对应关系。因此,提高项目管理的能力对于软件组织的软件生产力的提高是最为重要的。

  项目管理类似导弹发射控制过程,需要一开始就设定好目标,然后在飞行中锁定目标,同时不断调整导弹的方向,使之不能偏离正常的轨道,最终击中目标。

  全球经济对于软件依赖度越来越高,也越来越广泛,这也突显出软件对于现代企业的重要性。在全球各地,软件快速的进步对全球经济的成长扮演了重要角色。不论是你所使用的手机、PDA、计算机、金融卡等相关产品,都脱离不了软件,从以上这些观点来看,软件是现代世界上不可或缺的一部份。而在这些系统越大、越复杂的同时,使得从事软件工业的同仁对于软件开发及管理的知识越显得缺乏,使得有效的执行项目管理更加地重要。

  但同时我们也看到了一个非常严重的问题,那就是软件危机。我们所面临的软件生产能力与业务发展的需求不相适应的这种现象就是一种软件危机。项目人员,特别是管理层,极其低下的项目管理能力是造成这一现状的根本原因。对软件项目管理人员而言,除了具备扎实的技术能力以外,还必须要掌握管理尤其是项目管理的知识与技能。而项目管理则是提升生产力的重要任务。

  软件项目管理的演变过程

  尽管人类的项目实践可以追溯到几千年前,但是将项目管理作为一门科学来进行分析研究,其历史并不长。

  随着世界由工业时代进入信息时代,时空概念的根本改变加剧了项目的复杂性和可变性。无论是微软开发操作系统,还是中国修建三峡工程,项目的涉及范围和时间、空间跨度都在以空前的速度扩大

  。而随着行业竞争的加剧,项目只有在最少时间、最低花费的情况下完成才有意义。项目本身的复杂性和巨大风险以及在分工合作中个人经验的不确定性,使个人经验已无法确保项目的成功或按时完成。

  项目管理是20世纪50年代后期发展起来的一种计划管理方法,它一出现就引人注目。1957年美国杜邦公司把这种方法应用于设备维修,把维修停工时间由125小时锐减为78小时;1958年美国人在北极星导弹设计中,应用项目管理技术,竟把设计完成时间缩短了两年。由于项目管理在运作方式和管理思维模式上最大限度地利用了内外资源,从根本上改善了管理人员的工作程序,提高了效率、降低了风险,从20世纪60年代以来它被广泛运用到航空航天、国防、信息、建筑、能源、化工、制造、环保、交通运输、金融、营销、服务、法律等行业,以及国家和地方政府乃至联合国;它不仅适用于大公司也适用于小型企业。目前,在全球发达国家的政府部门和企业机构中,项目管理已成为运作的中心模式。项目管理人员高额的年薪也使项目管理在发达国家成为白领阶层的首选职业。欧美的一些著名大学中,项目管理专业已经发展成为具有学士、硕士和博士学位的成熟的热门学科。

  起初,没有项目管理概念的时候,人们认为项目管理是一种“意外的职业”。常常是人们在项目中先承担了项目责任,可能是从技术开发开始,然后随着项目经验的逐步提高,积累一定的技术管理等经验,最后顺理成章地当上了项目经理。但是管理一个项目的有关知识不是通过系统学习得来的,而是在实践中摸索出来的。摸索的过程可能会导致严重损失。近年来,在减小项目管理意外性方面已经有了很大进步。很多企业的决策者们日益认识到项目管理方法可以帮助他们在复杂的竞争环境中取得成功。

  项目管理得以迅猛发展是近几年的事情。1992年Tom Peter的《Liberation Management》中,一位著名的管理学家明确指出,“项目管理是在当今急剧变化的时代中求得生存的关键”。一时间,项目管理成为热点,为了减少项目管理的意外性,许多机构或者企业开始要求雇员系统地学习项目管理技术,努力成为经认证合格的项目管理人员。

  1984年美国的非赢利组织PMI(Project Management Institute:项目管理学院),发起了项目管理资格认证的计划(PMP: Project management Professional),但是直到1989年AT&T公司大批雇员参与进来,并取得一定的效果之后,才使得PMP认证得到迅速的认可和追捧。

  随着信息技术的飞速发展,软件产品的规模也越来越庞大,个人单打独斗的作坊式开发方式已经越来越不适应发展的需要。项目管理作为一种新兴学科,自上个世纪50年代后期发展壮大而创造出了一个又一个的奇迹。尤其是近几年,随着网络技术的快速发展,项目管理也随之产生了长足的进步,各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理。

  与其他项目相比,软件项目还是一种比较新兴的领域,软件项目管理的发展略落后于其他领域的项目管理的发展。而且随着软件行业的迅猛发展,一些问题和危机逐步暴漏出来,例如:手工作坊式的软件开发、项目时间总是推迟、无法保证按期提交、项目预算成倍超过、项目人员不断流动等等都是软件开发商面临的一些问题。而对于客户可能要面临这样的问题:为什么项目要这么多费用、为什么开发时间要这么长、主要开发人员是否能得以保证、提交的系统错误太多等等。上述问题主要原因是缺乏软件过程能力:开发过程随心所欲、时间计划和费用估算缺乏现实的基础、管理者主要在应付突发事件、对产品质量缺乏客观基础、软件开发的成败建立在个人能力基础上等。为了解决这类软件工程问题,美国软件工程研究所 SEI自1986年开始研究软件过程成熟框架,1991年提交了能力成熟模型(Capability Maturity Model)CMM V1.0,该版本经多方软件专家评审,发布了V1.1版,并更名为SW-CMM。1999年底发布了V2.0版。它强调企业软件开发能力取决于企业的过程能力而不是个人能力、强调持续的过程能力的改善,是衡量软件企业软件开发管理水平的重要参考,即可以作为软件开发组织改善软件开发过程的参考模型,也可以作为用户评估软件项目承包商的依据。

  在中国,项目管理的应用是从上世纪九十年代开始的,最初的应用都是在一些与国际联系较密切的大型建设项目,如大型电厂、三峡大坝、机场、高速公路等,以及由一些大型外企引入,如IBM、微软等五百强企业。认识到它的重要性后,政府开始在一些大型国企如中石油、宝钢等进行推广应用,自2002年以来,项目管理开始在中国显现燎原之势。软件行业中,大型软件开发已开始系统运用项目管理的技术与方法,它和CMM一起也重新给了中国软件业迎头赶上印度的信心和希望。

  软件项目管理的最新进展

  经过这些年的努力,目前国际专业人士对项目管理重要性及基本概念已有了初步共识。分析当前国际项目管理的发展,有三个特点即:全球化的发展、多元化的发展和专业化的发展。

  目前,软件项目管理的理论还是处于迅速发展阶段,相对其他领域还不是很成熟。例如软件估算模型分为理论导出和经验导出两种模型,而理论导出模型处于非常不成熟的阶段,经验导出模型是通过大量的项目数据进行数学分析导出的模型,这些模型也不能适合所有的情况,只能适应某些特定的项目情况。其实,目前没有一种模型或者方法能适应所有的软件类型和开发环境。一些方法只能作为借鉴,更多的时候需要经验。由于影响软件估算的因素太多(例如人、技术、环境、政治等),而且由于软件的渐近明细的特点,也决定了项目管理是逐步细化的过程。

  软件项目管理模型最具有代表性的就是SEI CMM。近几年来成熟度模型越来越广泛地应用于组织定位,通过与潜在的竞争者和其他特殊管理领域的组织的比较, 确定组织当前的状况。提高组织的项目管理能力通常

  包括选择适当的、最适合该组织需求的成熟度模型。但是,这种提高不仅需要关注项目管理的特殊领域,同时还必须时刻牢记综合项目管理的原则和实践。项目成熟度越大,组织成功地选择、授权、计划、执行、控制和结束项目并实现组织战略目标的能力就越强。

  除此之外,在项目管理领域,有些新的模型也在不断的发展壮大,他们在一定程度上也可以应用到软件项目中。例如PMI 的OPM3模型、英国的成熟度模型、日本的P2M模型等。

  项目管理学院(PMI)的项目管理成熟度模型/OPM3是由一个200多名自愿者组成的团队历时5年开发完成的,该模型建立在广泛得到应用的PMI PMBOK Guide的基础上,包括4个级别(标准化,衡量,控制和持续改进),并且与PMI PMBOK指南中所标识的、应用于项目、项目群以及项目组合三个级别的项目管理的5个进程(启动,计划,控制,执行和结束)相关。OPM3包含一个描述最佳实践、能力、结果以及项目成功的关键绩效参考值的数据库,同时建立这些因素的相关性,并允许用户的提问。

  在英国,由APM集团(http://www.apmgroup.co.uk/)代表英国政府的商务部(OGC)及其PRINCE2和其他项目管理的发起人,针对培训机构、培训师、咨询顾问、项目参与者及其组织在不同领域的项目管理能力进行认证和评估。OGC的“成功交付工具箱”可以从以下网站下载:www.ogc.gov.uk/sdtoolkit。该工具箱包含OGC的项目成熟度模型,该模型是APM集团开发的一个成熟度水平评估工具,用于组织确定其当前项目管理成熟度的水平。OGC成熟度模型还将扩充,以包含项目群管理和项目组合管理。相关的评估工具同样也会扩充内容。只有那些获得APM集团认证的项目管理咨询组织才获准使用OGC的评估工具。

  在日本,由日本工程发展协会(ENAA)开发的项目和项目群管理/P2M(Tanaka 2003, Taketomi 2003) 正在进行中,该项目得到了日本政府经济、贸易以及工业部(METI)的研究资金的资助。来自澳大利亚的Lynn Crawford教授称“P2M模型可能是企业在整合、接受项目管理和项目群管理这一角色中最重大的进展。之所以获得这些重大进展,原因在于获得了来自政府、工业界以及专业协会的支持;获得了企业内部预期的支持和应用;是第一个企业项目(群)管理方法的指南。该模型从一个全新的企业的角度而不是从传统的项目的角度来进行项目(群)管理。

  我国软件项目管理的应用现状

  目前我国大部分软件公司,无论是产品型公司还是项目型公司,都没有形成适合自己公司特点的软件开发管理模式,虽然有些公司根据软件工程理论建立了一些软件

  开发管理规范,但并没有从根本上解决软件开发的质量控制问题。这样导致软件产品质量不稳定,软件后期的维护、升级出现麻烦,同时最终也会损害用户的利益。

  当前的软件项目成功率很低,软件项目出现了如此多的问题是有很多原因的,大概归纳如下:

    1 重技术轻管理。事实上,项目管理依赖于技术支持与管理的支持,如果技术与管理其中任何一方存在薄弱环节,项目将面临很大的风险。

    2 管理工作随意性强,缺乏规范性。项目的成败过分地依赖于项目经理与用户领导的能力,管理工作随意性强,缺乏规范性,一旦人员稍有变动,项目将面临较大的压力。

    3 管理不规范。项目内部缺乏交流,信息交流不畅通,缺乏统一管理。

  目前国内的软件项目管理还很不成熟和规范。没有规矩不成方圆,规范对于一个项目的建设起到了很好的监督控制和指导作用。没有规则肯定不利于中国软件业的发展,不利于中国软件走向国际,在国际上也没有竞争力。

  软件项目管理的未来发展

  自上个世纪50年代末、60年代初以来,学术界与各有关专业人士对项目管理的研究基本上在两个方向努力。一方面是各领域的专家们在探讨本学科在项目管理中有无用武之地,如何将本学科领域的专业理论、方法应用于项目管理。另一方面则是各行各业的专家们在探讨如何把项目管理的理论、方法应用到本行业中去。如建筑业、农业、军事工业以及近几年呼声很高的IT行业等等。

  这种双向探索极大地促进了项目管理自身的发展。使得项目管理也在向两个方向发展:一是向学科化方向发展。项目管理在吸收各学科的有用部分,逐渐形成一些自己独立的内容体系。例如:美国PMI于1986年提出的项目管理知识体系(PMBOK),国内外大学所建立的学士、硕士、博士学历教育体系、成人教育的课程体系等等。另一方面,为了适应各行业发展的需要,项目管理学科也正在向实用化方向发展,包括各种方法、工具、标准、法规等等。

使用高级回帖 (可批量传图、插入视频等)快速回复

您需要登录后才可以回帖 登录 | 加入

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
快速回复 返回顶部 返回列表