《软件工程与项目管理.docx》由会员分享,可在线阅读,更多相关《软件工程与项目管理.docx(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品齐鲁行业资料 欢迎下载 赵鲁宾编辑软件工程与项目管理是成熟的博大精深的学科。所谓新视野乃是指站在“企业产品人”这个系统的角度看待问题,旨在创导使“企业产品人”走向成功的“方法论和模式”。本章乃全书之综述,重点探讨“企业的根本目标、产品开发之道、用人之道、如何成为优秀的软件人才”这些论题,探索一般性的规律,并给出开创性的观点和论断。与传统的软件工程与项目管理书籍相比,本章不仅内容新颖,而且言词激进、极富个性色彩和扇动性。本章大多数内容都是作者亲身验证过后总结出来的,将给多数读者带来有益的震撼。敬请读者首先敞开心扉阅读本章,然后进行大脑风暴,吸取精华、摒弃糟粕。 1.1 软件危机新理解IT产业
2、已经逐步发展成为中国的支柱产业之一,然而充满活力、优秀的软件企业太少了(苛刻地讲,十个手指头都能瓣完),绝大多数软件企业长期面临“产品质量低下、进度延误、成本高昂”的共性问题,就像患了恶劣的慢性病,无法根除。太多原本雄心勃勃的软件企业并没有战死在沙场上,而是被恶病折磨得奄奄一息直至颓然去世。IT产业的利润和前景实在太诱人了,没有获得免疫力的新企业又如雨后春笋般地诞生,前仆后继,延续着相似的故事。三十年多前(1969年),NATO会议把这种病被称为“软件危机”。三十多年过去了,这种病仍然存在,之所以不再危言耸听,是因为人们司空见惯、习以为常了。并且适应了极度浪费社会财富的“快速诞生、快速死亡”的
3、企业生存方式。为什么长期克服不了“软件危机”?难道是国内大学计算机教育太差劲了?不是!大学里的计算机课程面面俱到,经常考试,基础教育非常扎实。中国大部分学生有勤奋学习的优良传统,他们的计算机知识技能普通不差。难道是书籍资料不够导致人们不懂软件开发、不懂管理吗?不是!书市上的软件工程、项目管理、编程技术等书籍泛滥成灾,Internet上有取之不尽的免费资料和代码。难道是软件人才不够?不是!国内大学源源不断地输出计算机相关专业的毕业生,还有无数非计算机专业的人改行从事软件开发工作。我敢说,不论是人才还是人手,人是足够多了。象北京、上海等发达城市,软件人才明显供大于求,很多计算机专业本科生、硕士生、
4、博士生找不到合适的工作。难道是政府对IT产业扶持不够?不是!全国各地到处建设软件园区、高科技园区,地方政府的减税免税政策、奖励政策适时出台。对比一下国内农业和传统工业的处境,IT产业享受到政府的照顾已经好到天上了。难道社会对IT产业投资不够?不是!我们刚刚经历了网络泡沫、电信泡沫,不是社会投资太少了,而是投资太多但是没有产生期望的效益才会产生泡沫。尽管中国还不是发达国家,但平心而论,你会发现当今软件企业的生存环境真是太好了,实在找不出象样的借口来推卸失败的责任。内因决定外因,是大部分软件企业的内功太差,以至成为扶不起的阿斗。软件工程和项目管理学科已经发展了数十年,技术细节问题早已研究甚多。所以
5、工程专家们和管理专家们不要再沉迷于“形而上学”、“屠龙之技”的研究,而是要换个视野看问题,摸索解决中国企业面临的“软件危机”难题。中国教育界和工业界长期的失误在于:大学教育以填鸭的方式给学生灌输技能,却忽视传授思想和方法;学生们埋头学习,不知学以致用,离开学校后对企业、产品、人生一片茫然;企业以混乱甚至错误的方式开发产品,重复着前人的失败而不是成功。这就是产生“软件危机”的真正根源。1.2 企业产品人在软件行业,“企业产品人”这三个主体构成了复杂的系统,一般性的知识框架如图1-1所示。如果人们不明其理而行事,必然会对系统造成伤害。软件行业“企业产品人”走向成功的知识框架我认为,教育界和工业界应
6、当研究和推广让“企业产品人”走向成功的“方法论和模式”,这是解决“软件危机”最有效的办法。何为方法论?方法论是用于指导人们解决问题的系统性的思想方法,而不是一堆孤立的方法、技术的集合。方法论主要研究“是什么”、“为什么”、“怎么办”这类基本问题,当人们掌握方法论之后,在实践过程中,自己能产生解决特定问题的方法。何为模式?模式描述了在我们周围不断重复发生的问题,以及该问题的解决方案的核心,这样你就能一次又一次地复用该解决方案而不必从头开始研究。在技术开发领域,人们总结了不少很有价值的模式,例如设计模式、编程规范、文档模板等等,被业界人士广泛采用,大大地提高了工作效率。人们期待更有价值的模式,那就
7、是让“企业产品人”走向成功的模式。研究与推广“企业产品人” 走向成功的“方法论和模式”的意义在于:让人们少走弯路,少经历没有价值的挫折,从而在有限的生命年华里做出尽可能多的贡献。三年前我写了一篇文章叫大学十年,这篇文章在Internet上广泛流传,激励了相当多的大学生。许多读者误以为我的大学十年辉煌之极,从而羡慕不已。其实每个人都有自己的美好的和不好的经历,我只是把个人经历作了文学处理、写得比较好而已。在企业里工作三年后,我终于意识到大学十年里的最大失败:完全靠自己摸索前进,走了太多弯路,有一半时间在错误的道路上艰苦奋斗,浪费了大量青春时光并且不知不觉地损害了健康。如果有很好的方法论指导和成功
8、模式可循的话,以我当时的天赋、勤奋、毅力和创造力,连续奋斗十年,何止于今日空有满腹经纶,而对社会缺乏实质性贡献!广大学生和企业员工没有机会学习走向成功的方法论和模式,只好凭着本能和运气去工作、去生活、去奋斗。这不是少数人的命运啊!而是几亿人那!基于切肤之痛和多年的实践与思考,我提出了本文颇为激进的观点,期望同行的工程专家和管理专家研究与推广上述“方法论和模式”。也许这个课题太复杂了,太缥缈了,以致于国内找不到一本现成的教科书。为便于阐述观点,我勾画了知识框架草图。毫无疑问,不论干哪一行,人们都应当掌握“专业基础知识和技能”,这是立足之本,所幸国内大学在这方面的教育相当不错。在软件企业工作的人们
9、还要学习“软件工程、项目管理、市场营销、财务管理、人力资源管理、国际化”知识,懂得越多,成功的可能性就越高,然而这些领域是国内大学教育的薄弱环节。目前教科书的最大不足是没有紧密围绕“企业产品人”这三个主体来阐述方法论和模式。研究人员必须先分析清楚“企业产品人”的宏观特征与规律,再进行系统分解,从而在各个相关学科创建方法论和模式。在研究和推广上述方法论和模式的过程中,大学里的教授们和讲师们将受到强烈冲击,因为许多教授和讲师对企业和产品知之甚少,甚至自己的人生也相当落魄,拿什么“传道、授业、解惑”啊?何以为师?这种现状必须改革,如果教授和讲师不合格的话,只好下岗或者提前退休,否则误人之弟。下文将探
10、讨“企业的根本目标、产品开发之道、用人之道”这三个论题,尝试提出系统性的观点、论断,为研究软件工程和项目管理的方法论和模式打下基础。1.3 企业的根本目标1.3.1 观点和论断学过法律的人都知道:宪法是国家的根本大法,是立国之本,任何普通法律法规都不得与宪法相抵触。企业的根本目标是“合法地赚取尽可能多的利润,使企业利益最大化”。这个根本目标就如同企业的“宪法”,是企业生存和发展之本。企业所有的特定目标和行动都是围绕上述根本目标开展的。任何背离根本目标的行动都将对企业造成伤害,应当杜绝。如果企业主不明白这个道理,企业必定会很快倒闭。如果广大员工不明白这个道理,企业必将岌岌可危。如果你想到企业工作
11、(或者已经在企业工作),希望取得事业上的成功,你首先必须理解企业的根本目标。上述文字简单朴实,没有任何玄妙之处,似乎任何人都看得懂。但是我敢断言,除了极少数天生的商人之外,绝大多数人在遭受第一次商业挫折之前不会深刻领悟企业的根本目标。我们从小到大接受自闭的政治教育太久了,被灌输的幼稚口号太多了,以至于长大成人后仍然极度缺乏商业智慧。天哪,赚钱这种事情连文盲都能做啊!怎么可以成为企业的根本目标呢!企业的根本目标难道不是为了振兴民族产业、为国家多做贡献吗? 不是,的确不是!“振兴民族产业、为国家多做贡献”是全体国民的义务,不是企业的根本目标。只要企业有利润、能活下去,它就已经做出贡献了。因为国家的
12、主要税收来自于企业,企业有利润后才能纳税,企业纳税后国家才有钱搞建设。只有企业活着,员工们才有工作、才有稳定的收入、才有能力养家糊口、才能维持社会繁荣稳定。只要企业合法地赚钱,它赚得越多,那么它对国家的贡献就越大。政府对企业的唯一约束就是“守法”,甚至不要求“守德”。众所周知,烟草对人有百害而无一利。烟草公司赚钱越多,表明烟民受害越深。从道义上讲,拯救广大烟民的最有效办法就是让政府封杀所有的烟草公司。但是全世界的政府都不会出于道德而封杀烟草公司,因为烟草公司没有犯法,并且给政府交纳了巨额利税。政府与企业之间存在互利的交易关系:政府应该为守法的企业提供服务(而不该骚扰企业),企业付给政府的服务费
13、就是利税。所以企业的本性就是惟利是图,而不是救国就民,无论大企业还是小商贩都一样。在计划经济时代,无数国企曾经为国家做出了巨大的贡献。当计划经济转向为市场经济之后,曾经功德无量的国企逐步沦落为国家的包袱。人们给国企强加了太多的社会义务,国企不仅包揽了职员们的“吃喝拉撒睡”,甚至还要建子弟学校,治病救人,养老送终等等。社会义务榨干了企业的利润和精力,企业焉有不垮之理!不论是“姓资还是姓社”,企业改革的主要目标就是让企业回到赚钱这个正道上来。违背企业本性的做法注定是要失败的。我曾经给某大学软件学院的工程硕士们讲授软件工程课程,几乎每次讲课我都要强调企业的根本目标,大讲特讲钱的重要性。企业惟利是图的
14、本性就像“低俗赤裸的真理”,玷污了纯真学生们的耳朵。学期结束之际,有个学生写了一篇很有代表性的心得体会:本学期听了林锐老师的课程之后,我对软件工程,尤其是商业领域的软件工程应用有了全新的认识。所谓全新的认识,我想主要是从经济利益的角度看待软件工程问题。在林老师讲课之前,外籍教授Prof. Luqi 和 Prof. Berzins 给我们讲授了如何从工程角度出发来分析一个问题、分割一个问题、解决一个问题。但是后来林老师则从商业的角度系统地阐述了为什么要提倡软件工程。唯一的解释就是经济利益的驱动钱!在听林老师讲课的初期,我是有一定的反感的,真的无法立刻接受。或许是由于一个学生对社会的认识的不足,或
15、许是由于受到古人的影响而对那些关心金钱的话题的鄙视。总之,在听课的过程中,我总是忽略了经济利益的作用,从未考虑过软件危机的真正成因。在一次课程的中间休息阶段,我与同学们聊起了林老师的课程内容。我说“他的课程太没劲了”,“来来回回就是经济利益”,“太俗了”,“社会上正是这样吗?”总之,我所反映的就是对他的课程内容的不信任。这时有一位已经在公司里任CTO的同学这样对我说:“林老师所讲的是正确的而且很有用的,我每周都要给我们公司的员工们上一次课,课程的内容很大程度上就是来自于林老师的讲义,而且事实上,社会上就是这么来做的。”从这次交流中我知道,他们公司和很多现在正面临着转型的公司一样,公司的领导们已
16、经认识到了软件工程的重要性,一切工作都是围绕经济利益这个核心的。那些有工作经验的同学们赞同林老师的观点,这次交流之后,我改变了自己以往的看法,逐渐接受林老师的课程内容。对于象我这样没有工作经验,缺乏社会阅历的学生而言,学习林老师的课程是非常有益的。看了这位学生的心得体会,我不禁一声叹息。想当年在我读大学的时候,真是一心一意地想着振兴民族产业、为国争光,视金钱如粪土。想不到工作几年之后,开口闭口就谈钱,实在羞愧啊。1.3.2 案例与评论前辈们曾经留下无数哲言,我们通常挂在嘴上而不会放在心上,只有自己遭受失败并且反省之后,才会恍然大悟,才会刻骨铭心。让单纯如学生的人们接受本章观点并不容易,比较好的
17、办法是边讲故事边讲道理,然后让人们自己去体会。20世纪90年代初期,中国有个辉煌而结果凄惨的明星科技企业史玉柱创办的巨人公司。巨人公司的成败得失曾让无数人叹息而沉思,现在有很多书籍可以参考。结合本章论题,我对巨人公司的看法是:巨人公司在辉煌之际虚荣心极度膨胀,重大决策背离企业根本目标,迟早都是要倒闭的。1991年史玉柱在珠海创立了巨人公司,公司靠核心产品“桌面排版印刷系统”和“巨人汉卡”发家致富,创出了年发展速度500%的奇迹,成为珠海高科技产业的样板企业。史玉柱一年成为百万富翁,两年成为千万富翁,三年成为亿万富翁。1993年巨人公司即成为位居四通之后的中国第二大民营高科技企业,史玉柱本人也于
18、1994年当选中国十大改革风云人物。导致巨人公司倒闭的导火线是建造巨人大厦。由于公司发展迅猛,短短两三年内员工激增到千余人。公司决定建造一栋18层的科技大楼(称为巨人大厦),供员工们办公用。这的确是企业的实际需求,以巨人公司当时的资金实力,建造这样的科技大楼并没有不妥之处。由于巨人公司是当时国内最耀眼的明星科技企业,风光无限。各级政府领导时常光临巨人公司,少不了题词、表扬、勉励和指示。一些政府领导建议巨人公司为珠海建一座标志性大厦。结果每一批领导视察之后,巨人公司的虚荣心就膨胀一次,不断提高大楼的高度。为了给本市、本省乃至本国争光,充满浪漫主义色彩的巨人公司决定建造70来层的摩天大楼,资金预算
19、也由最初的2亿元增至12亿元。科技型企业的生存和发展靠的是不断地研发和销售产品,而建造摩天大楼则是政府和房地产商的事情。巨人公司建造摩天大楼的决策绝对背离科技型企业的根本目标。单凭巨人公司的实力,实在难以承受这项浩大的工程。更令人瞠目结舌的是,巨人大厦从1994年2月动工到1996年7月,公司竟未向银行贷款一分钱,全凭自有资金和卖楼花的钱支撑。作为常识,房地产必须有金融资本作后盾,可是巨人公司竟然将银行搁置一边。史玉柱曾设想了一个绝纱的财务运作机制:先用巨人大厦卖楼花的钱投入生物工程,再用生物工程产生的利润来支持巨人大厦。但是这个美好设想并未成为现实。不幸的事接连发生:大楼地基存在地质缺陷,需
20、要重新加固,进度一误再误,资金预算不断上升,已买楼花的人要求退款并赔偿。公司非但不能去为生物工程注资,反而不断从生物工程中抽资去支撑巨人大厦。结果是巨人大厦没能撑起,反例赔进了生物工程。在危难之际,媒体疯狂炒作,雪上加霜,致使巨人公司卖出去的脑黄金收不回钱。终于有一天,企业现金断流,银行不愿贷款,风华正茂的巨人公司一夜之间崩溃。巨人公司倒闭之后,人们总结了许多经验教训。1997年,我去北京大学拜访一位经济学研究生,他说自己正在研究明星科技企业的死亡规律。他阐述了一番观点,其中最精辟的一句话让我现在都记得:如果一个明星企业经常受到政府各级领导的视察和表扬,那么企业就会干蠢事,它离死期就不远了。我
21、当时真为北大才子的胆识和学识倾倒。回到本文主题,我做个案例小结:企业的根本目标决定了企业必须专心致志地赚钱,企业人士要理智地规避伪善的社会事务,防止企业被非目标事务拖累。史玉柱的英雄豪杰之举是承担了巨人公司欠下的天文数字般的债务,而不是破产了事。他重新创业赚钱之后,拿自己的钱还清了这笔债务。我认为史玉柱为中国企业家树立了道德楷模,意义重大。我在读大学时期对史玉柱有偶像式的崇拜,现在我是当真的敬仰。1997年至1998年,我自己在读博士期间也创办了公司,公司经营一年就倒闭了,我反省了好几年。2000年毕业之际,我把这段创业经历写进了短篇传记大学十年之中。为了给本篇文章找个合适的案例,我重新阅读了
22、自己的那段学生创业经历。哈,结果一眼就看出了我的公司必然倒闭的根本原因。到1997年,我在学生时代的荣誉已经登峰造极(国内少有同龄学生可比了)。我受国家正规教育近二十年,真的是发自内心地渴望创办企业来振兴民族软件产业。那时,我的名片上印着“以振兴民族软件产业为己任”,曾在东软集团举办的“民族软件产业青年论坛”上慷慨陈辞。当时我构思了一套三维图形系统,该系统下至开发工具、上至应用软件无所不包。操作系统启动之后,立即进入三维视窗,所有的软件都在三维视窗中运行。当全世界人民接受这套软件系统的时候,微软公司的视窗系统就被淘汰了,中国的软件产业就这样被我们振兴了。当学生有这样的抱负后,他怎么能不长期兴奋
23、。我创建公司后,成天忙于开发那个能够振兴民族产业的软件,结果不到一年就把公司的30万元资金用个精光,但是没有卖出一份软件,所以公司啥都没振就倒闭了。我这个公司倒闭的原因比巨人公司的要荒唐,因为我当时压根就不知道企业的目标竟然就是赚钱! 把失败的原因简单地归咎于学生的幼稚是毫无意义的。由于我曾经是标标准准的好学生,我的失败反映出中国大学教育的盲区。我感叹自己在错误的道路上奋斗太久了,所以非常渴望有成功的方法论和模式可以学习。让我们回顾电影甲方乙方里冯小刚的年终工作报告,作为企业根本目标的喜剧解释:同志们,我们推出的“美梦一日游”深受广大群众的喜欢(墙上挂满了群众们送的旌旗)。大家工作都很勤奋,客
24、户越来越多,但是我们挣的钱却越来越少了。(公司)再办下去就成了慈善机构,所以大家只好散伙。1.3.3 推论企业的根本目标决定了“产品开发之道”和“企业用人之道”,此处的“道”就是指方法论和模式。产品开发之道有两个内涵:(1)开发正确的产品:即开发能为企业赚取利润的产品;(2)正确地开发产品:即努力使产品为企业赚取尽可能多的利润。同理,企业用人之道也有两个内涵:(1)用正确的人:即利用能为企业赚取利润的人;(2)正确地用人:即努力使人为企业赚取尽可能多的利润。“开发正确的产品”和“用正确的人”属于企业的决策过程。“正确地决策”是企业各级领导的第一职责。“正确地开发产品”和“正确地用人”属于企业的
25、执行过程。“正确地执行” 是企业各个团队的第一职责。正确地执行了错误的决策,结果是失败。错误地执行了正确的决策,结果也是失败。错误地执行了错误的决策,你别指望发生错错得对的结果。只有正确地执行了正确的决策,才能得到满意的结果。 决策和执行之间的关系是战略与战术之间的关系,两者相辅相成,缺一不可。企业的成功是建立在“正确的决策”和“正确地执行”基础之上的。任何错误的决策、错误地执行都可能导致产品失败,进而导致企业倒闭,所以却勿在企业里鼓吹“失败是成功之母”。特别要注意的是:在决策过程和执行过程中,人们总是会遇到各种各样的困难,任何优化和折衷的措施都是围绕企业利益最大化这个根本目标开展的。1.4
26、产品开发之道1.4.1 开发正确的产品所谓“开发正确的产品”是指“开发能够赚取利润的产品”。对于企业而言,评判产品“对错”的标准就是“能否赚钱”。政府每年给大学科研机构投资很多钱,允许人们去研发不赚钱的东西,例如很多自然科学基金项目的考核目标是学术水平而不是经济效益。但是企业的职能和大学科研机构的完全不同。企业只能开发“能够赚取利润”的产品,赔钱的产品不能开发。不少人有疑问:有些国际著名的大企业拥有自己的研究机构,例如贝尔实验室、IBM研究院、微软研究院等等。这些机构的学术水平极高,企业花巨资让那些天才们研究一些看似不赚钱的东西,岂非违背企业的根本目标?国际著名的大企业之所以活得那么风光,就是
27、因为它们很少干蠢事,越活越好。这个问题要透过表象才能看到本质:科学技术是第一生产力,为了提高企业的科技竞争力,国际著名的大企业不得不花巨资从事超前的研究。那些超前的研究成果通常没有短期的经济效益,但是可能在不久的将来被大规模地应用,从而产生巨额利润。当然不少研究成果可能永远都不会产生经济效益,这就是科研投资的风险。世界范围内的科技竞争非常激烈,有些关键性的技术往往决定了企业的命运。万一竞争对手在科技上领先一步,马上就会占领市场的主要份额,自己就面临被淘汰的危险。例如当前几乎所有的大型电信企业都在研究3G(第三代移动通信),简直可以用豪赌来形容。所以为了让自己在未来能够活下去并且活得更好,大企业
28、不得不花巨资从事超前的研究,这是战略投资,当然符合企业的根本目标。有些大企业的产品发展战略非常有意思:在市场上推出第一代产品的时候,企业内部已经掌握第二代产品的技术,并且开始在实验室里研究第三代技术。当第一代产品没有遇到竞争对手、或者市场没有疲软的时候,绝对不推出第二代产品(免得冲击第一代产品,降低利润)。一旦状况改变,马上推出第二代产品,让竞争对手措手不及,或者以自我淘汰的方式带动新一轮消费。这样周而复始,力图永远领先于竞争对手,永远占领市场最大份额。例如芯片业老大Intel就是这样做的。对于普通的中小企业而言,它们只能干些力所能及的事情。如果采用成熟的技术就能够做出能赚钱的产品,那就没有必
29、要自己研究新技术,尽可能地降低风险。判断一个设想中的产品是否能给企业带来利润,这绝对不是一件轻松的事情,千万不能依赖于少数领导人拍脑袋的决策方式。“开发正确的产品”这种决策过程叫“立项管理”。立项管理的主要目的是:通过规范化的流程,判断并采纳符合企业根本目标的立项建议,提供合适的资金和资源,使立项建议成为正式的项目。一般地,立项管理过程包含“产品构思、立项调查、可行性分析、立项申请、立项评审、项目筹备”等关键活动。本书第二章将论述立项管理。1.4.2 正确地开发产品所谓“正确地开发产品”是指:(1)项目团队在预定的时间和成本之内,开发完成合格的产品;(2)项目团队尽最大努力把产品做得好、做得快
30、并且少花钱。前者是基本要求,后者是努力方向。“质量、效率、成本”通常是衡量产品开发过程优劣的三个关键指标。如果产品的质量比较差,必然挨用户骂,轻则被退货、重则倒品牌。如果工作效率(包括生产率和行政效率)比较低,等你慢腾腾开发完成产品并推向市场时,可能大部分市场已经被竞争对手捷足先登了。如果开发成本太高,要么用户买不起,要么利润率太低。一般说来,质量、效率、成本之间存在对抗关系。俗话说“一分钱一分货”,人们买东西的时候大多认可“质量越好价格就越高”。再如俗话“慢工出细活”,言下之意是提高质量将使生产率降低。根据常识可知,要想同时提高产品质量、效率并且降低开发成本是非常不容易的。人们应当根据企业的
31、实际状况,围绕企业利益最大化这个目标,分析质量、效率、成本的诸多构成要素,给出优化和折衷的措施。一、关于软件质量软件的质量属性很多,如正确性、精确性,健壮性、可靠性、容错性、性能、易用性、安全性、可扩展性、可复用性、兼容性、可移植性、可测试性、可维护性、灵活性等。对于一个特定的软件而言,我们首先要判断什么是它的质量要素,才能给出提高质量的具体措施,而不是一股脑地想把所有的质量属性都做好,否则不仅做不好,还可能得不偿失。简而言之,能成为卖点的质量属性才是质量要素,才值得开发人员关注。特别要提醒读者注意的是:提高软件质量的最终目的为了获取尽可能多的利润,而不是出于对完美质量的追求;如果某些质量属性
32、并不能产生显著的经济效益,我们可以忽略它们,把精力用在对经济效益贡献最大的质量要素上。大多数软件工程教科书和学术文章总是站在技术的角度论述软件质量,并且努力把技术推向极致。这些技术无疑是有价值的,但是我要指出这种教育方式可能会误导读者。开发人员学会了提高软件质量的技术,却常常在不该用的地方用了它。例如,谈到软件的可扩展性,开发人员首先想到的是怎样提高可扩展性,于是努力去设计很好的体系结构来提高可扩展性,却不考虑该不该做这件事。从商业角度考虑,如果某个软件将不断地推出新版本,那么可扩展性很重要。但是如果软件永远都不会有下个版本(一次性买卖),那么根本无需提高可扩展性,何必自找苦吃呢!再如,让两个
33、同类的软件A和B相互兼容可以使用户得益,为了提高软件之间的兼容性,开发人员通常会在数据格式方面下功夫。从商业角度考虑,如果A和B存在竞争关系,那么弱者应当设法与强者兼容,否则无容身之地;强者应当避免被竞争对手兼容,否则强者的市场将被瓜分。如果开发人员出于好意而让强者与弱者兼容,此举无疑会损害企业的利益。缺乏商业经验的开发人员往往因为单纯而傻得可爱,却因幼稚而傻得可笑。作者在著作高质量程序设计指南C+/C语言中,主要从技术角度对软件质量作了大篇幅的论述。本书将继续探讨软件质量这个话题,但是思路已经改良:(1)先从经济利益识别软件的质量要素,并给出合适的质量目标;(2)再用技术手段提高软件质量,实
34、现质量目标。二、关于效率企业总是希望产品上市的时间越短越好,这样可以抢占市场。对于合同性的项目而言,开发方应当在合同指定的期限内交付软件,否则违约的话将损害双方的利益。所以对于企业而言,时间就是金钱。在正常情况下,开发团队的工作效率是决定产品实际开发时间的主要因素。所以提高工作效率是企业获取更多利润的有效途径。在旧社会,资本家的工厂里都有监工,监工的职责就是让工人们不停地干活,在给定的时间内生产出更多的东西。提高工作效率的前提条件是所有工作成果的质量必须合格。否则,工作效率越高,软件中的缺陷就越多,那么用于测试和维护的代价也越高,得不偿失。所以提高质量、提高效率都不是喊口号,要根据企业的目标和
35、当前实力,量力而行。在不对质量和成本产生负面影响的前提下提高工作效率,这才是真本事,常见措施有: 提高项目成员的工作技能。即使在组建项目团队时每个成员的技能都是合格的,每个人仍然需要不断学习,无论对于项目还是人生而言都是有益的。项目经理应当组织一些有针对性的培训,提高项目成员的工作技能,使他们在开发产品时不仅做得好而且做得快。 制定合适的软件过程。软件过程定义了做事的主要步骤,如果过程混乱,做事颠三倒四的话,势必伤害生产率。虽然人们都知道开发软件要经历需求分析、系统设计、编程、测试这些阶段,但是严格的线性顺序并不见得就是最优的,因为许多局部工作可以并行开展甚至提前开展。世界上并不存在放之四海皆
36、准的、通用的软件过程标准,所以项目经理应当制定适合于本项目的软件过程,并随着项目的进展加以适当的优化。 提高复用程度。复用就是指“利用现成的东西”,软件中可以复用的对象有设计模式、代码库、文档模板等等。由经验可知,通常在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的,而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。软件人员应当懂得复用别人留下的成熟可靠的成果(可能要花钱去买也可能是免费的),并且还要给自己留下可以在将来复用的东西。复用不是人类懒惰的表现而是智慧的展现。 使用高效率的开发工具和管理工具。使用好的工具无疑有助于提高人们的
37、工作效率。软件人员通常会采用业界推荐的开发工具,几乎每天都要使用,因为这是开发产品所必需的。然而管理工具就一言难尽了,因为功能先进但是价格昂贵的管理工具对于大部分项目而言并不见得是最合适的。例如目前比较流行的配置管理工具:SourceSafe的功能一般,价格较低,使用非常方便;CVS的功能比SourceSafe强一些,完全免费,用起来不如SourceSafe方便;而ClearCase则是功能极强,价格极高,必须经过数天培训后才能学会使用。所以无法说那个配置管理工具更好。项目经理应当根据项目的规模、经济实力等因素,选择合适的管理工具,并且要坚持使用才能提高团队的生产率。三、关于成本软件不同于常见
38、的生活用品。开发软件主要用人们的脑子,不需要开工厂,无需原材料,也不需要放到百货商店的柜台上销售。一般地,开发成本和维护成本是软件的主要成本构成。除了软硬件基础设施的成本外,人力资源成本占了开发成本的主要比例。人力资源成本等于雇员的工资乘以工作时间,所以企业招聘员工的理想状态是:以最低的工资招聘恰好满足工作需要的人。另外,设法提高工作效率以减少总的开发时间,从而降低人力资源成本。人们常常关注开发成本而忽视了维护成本。对于一个有信誉的企业,如果卖出去的软件产品中有错误,那么就有义务修改错误。软件刚卖出去的时候,销售价格肯定比开发成本高,看起来是赚了钱。但是如果软件质量比较差的话,那么维护成本将是
39、个无底洞,完全有可能把先期赚的钱给消耗光。所以人们不可为了压缩开发成本而放弃软件测试、技术评审等质量检查活动。前期偷懒将使后期遭殃。在绝大多数情况下,设法降低成本将有益于企业获取更多的利润,但并不是绝对的。企业有短期目标和长期目标之分,为了使企业利益最大化,在某些时候企业会不惜成本地去抢占市场,以使未来获取更多的利润。产品的决策者一定要搞清楚质量、效率、成本之间的复杂关系,判断孰重孰轻,给出优化和折衷的措施。四、关于软件过程改进一般地,在软件开发过程中,工程类的过程域主要有:需求开发、系统设计、软件实现、软件测试、软件维护等等;管理类的过程域主要有:项目规划、项目监控、需求管理、质量管理、配置
40、管理等等。上述过程域中的任何活动都会影响产品的质量、生产率和成本。从20世纪90年代之际,软件过程改进成为软件工程和项目管理交叉学科的主流研究方向。软件过程改进的目标就是“提高产品质量、提高工作效率和降低开发成本”。业界的实践证明,走规范化之路是成本最低、见效最快、能持续发展的软件过程改进方法。规范化之路就是本书致力探索的成功模式。本书从第三章起直至最后一章,将深入阐述在每个过程域“正确地做事”的方法,总结出可以复用的模式。请读者参考作者的另一本著作CMMI 3级软件过程改进方法与规范。1.5 用人之道有句名言:“人分四类人物,人才,人手,人渣。”如果一个机构里上述四类人齐全了,那么最好是让“
41、人物”当领导,“人才”干重要的活,“人手”干次要的活,“人渣”去骚扰竞争对手。用人之道是极为复杂、极宽广的话题,为了避免迷失方向,本节把话题的范围限制在两个论点上:(1)如何组建软件开发团队;(2)如何管理软件开发团队。本节所说的人是指在软件企业里工作的技术人员和管理人员,他们都是受过高等教育的守法律、讲道德的正常人,坏蛋和天才除外。1.5.1 如何组建软件开发团队一、组建团队的基本流程组建团队的基本流程如图1-2所示,分四个步骤:首先要搞了解产品开发需求,从而确定团队的人员需求,然后物色符合需求的人才,最终建立团队。组建团队的基本流程团队的人员从哪里来?通常先在企业内部挑选,最大程度利用现有
42、的人力资源。如果企业内部不能满足要求的话,再通过社会招聘获取人才。团队的人员结构是金字塔形的,可以简单划分为三层:团队领导、核心成员和普通成员,如图1-3所示。比较合理的人员比例为:团队的领导不超过10(当官的不能太多),核心成员占30左右,普通成员占60左右。团队的人员结构二、关于人才的几个观念只有为企业创造的效益高于企业为其付出的成本的那些人,才是企业所需的人才。不能为企业创造效益的人才其实就是饭桶,不论其学历和职称有多高。团队需要优秀的人才。软件开发是智力创作而非体力劳动,优秀人才的创造力比平庸之人要高得多,如果团队没有优秀的人才,几乎不可能开发出有竞争力的产品。优秀人才要价通常比较高,
43、但是他物有所值。企业应该少招聘一些平庸之人,把省下来的钱投资到优秀人才身上才对。但是团队中的优秀人才并不是越多越好,优秀人才太多反而有更大的弊端。一是人力成本太高,他们可能消耗掉产品创造的大部分效益,那么就不划算了。二是团队分裂的风险太高,因为团队的空间有限,无法同时满足很多优秀人才事业发展的欲望;当这个矛盾激化时,优秀人才的内讧将产生极大的破坏力。一山不容二虎就是这个道理。所以,团队中的优秀人才恰好够用就行。一般地,让最优秀的人才当团队的领导,让次优秀的人才成为核心成员,让平庸之人成为普通成员。图1-3所示的团队结构比较“稳定安全”并且“经济实惠”。三、物色团队的领导软件开发团队的领导应当具
44、备四项素质,按级别从低到高排列:不错的技术才能(一段),较强的管理能力(二段),丰富的产品开发经验(三段),敏锐的商业头脑(四段),如图1-4所示。团队领导应当具备的四项素质据我了解,目前大多数IT企业在物色团队的领导时,主要考察候选人的管理能力和技术才能。对于搞技术出身的人,如果他能当上小头目,一般地讲他的技术才能不会太差,否则他岂有出头之日。然而即使某个人的技术水平是团队里头最强的,如果他不具备带领团队所有成员正确干活的能力(即管理能力),那么他就不能当团队的领导。业界普遍认同的是,合格的项目经理(或相似级别的经理)应当具备较强的管理能力和不错的技术才能。那么对于项目经理而言,究竟是技术才
45、能重要还是管理能力重要呢?业界不存在判断准则,人们也没有必要过多地争论,应当视项目的规模和复杂性而定。如果项目的技术难度很高,但是规模很小,只有几个人干活,那么领导者的技术才能比管理才能更加重要。反之,如果项目的技术难度不高,但是规模比较大,只要团队成员超过十人,那么领导者的管理才能比技术才能更加重要。企业在物色重大的团队的领导时,不仅要考察候选人的技术才能和管理能力,尤其要关注商业头脑和产品开发经验。商业头脑是团队领导最重要的素质。有商业头脑的领导能够带领团队朝着最赚钱的道路前进,即使遇到一些坎坷,也无碍于最终的成功。反之,缺乏商业头脑的领导通常不知道产品的卖点是什么,却一味在技术方面下功夫
46、,经常让团队干些不赚钱的南辕北撤的事情。如果团队的领导有丰富的产品开发经验,那么他就能复用以前的成功经验,能够规避失败的风险。当项目遭遇一些意外困难时,他自己不会手忙脚乱,能够从容地带领团队克服困难。就如战斗中,存活率比较高的通常是队伍中的老兵,因为他们有丰富的战斗经验,而不是枪法比新兵好。几年前我已经意识到“技术才能、管理能力、产品开发经验、商业头脑”是团队领导者必须具备的素质,只是四项要素的重要性刚好和图1-4的颠倒。自从我对某公司多个重大研发项目的失败进行调查分析之后,我就把四项要素的重要性顺序纠正过来。近几年,该公司对几个重大研发项目总共投资了近亿元。每个项目的研发人员达百余人,研发经
47、费千万元以上,结果这些目都以惨败而告终。有几个项目做着做着就无声无息了,有几个项目好不容易推出了产品,结果因质量太差而被客户退回。一度时间公司内部怨愤极大。我曾私下里做了调查分析,失败的原因有许多,最重要的一个共性原因是:公司领导用错了项目经理。这些项目经理都是博士,在技术方面算得上是专家,管理能力虽然没有技术才能那么强,但是也有中等水平。最糟糕的是他们都缺乏商业头脑,缺乏产品开发经验,竟然拿大学里搞科研的方式在企业里开发产品,焉有不败之理。这些人没有成功地运作过几十万元、上百万元的资金,猛地一下子拥有千万元的经费,稀里糊涂地浪费了许多钱。最不应该的是,这些项目给公司造成了重大损失,似乎没有一个责任人认真反省过,从来没有人写过一篇总结为什么失败的文章。重大失败就如轻飘飘的雪花那样融化了,连个故事都没有留下。不少企业干过类似的蠢事,同行们要引以为戒,尤其要当心那些拥有高学历、占据