Chinaunix首页 | 论坛 | 博客
  • 博客访问: 318284
  • 博文数量: 50
  • 博客积分: 3095
  • 博客等级: 中校
  • 技术积分: 510
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-22 10:43
文章分类

全部博文(50)

文章存档

2014年(1)

2012年(1)

2011年(2)

2010年(3)

2009年(6)

2008年(20)

2007年(15)

2006年(2)

我的朋友

分类: 项目管理

2008-09-08 14:35:42

软件制造企业的根本出路就是通过技术创新、管理创新极大的提高软件生产的效率,就是一定的人员、资金等资源的投人下生产出更多更好的适销对路的产品,通过过扩大生产规模,让软件产品更加的廉价和实惠。
什么是技术创新,通过加大对技术的研发投入,建立研发的平台、工具等,提高软件的公用基础件。加大对软件架构、设计的研发投入,提高软件的适应变化的要求和灵活性,以延长软件的生命周期和适用范围。一个具有良好结构的软件架构,它可以更长时间内适应产品发展的需要,也可以在更广泛的领域适应需求,比如它即可以适应电信行业、也可以适应金融行业、又可以适应电力行业、保险业等,为适应大规模的市场提供支撑的基础。
什么是管理创新,就是对产品的需求分析、设计、编码、测试、实施的整个过程进行行业级或企业级的流程再造,通过专业化的分工协助,实现大规模的生产,最终提高生产率,降低软件的生产成本。所谓行业级的流程在造就是当下十分流行的外包模式,在软件行业内对需求、设计、编码、测试、实施进行分工协助,发挥各自企业的专长,有专门做设计的公司、专门编码测试的公司、专门实施的公司等等,它是全球范围内的、全行业的分工协作。所谓企业级的流程再造就是在一个软件企业内部对软件产品的需求分析、设计、编码、测试、实施进行流程再造,通过企业内部的专业化分工,实现一些规模生产。企业级的再造是针对具体的软件企业特点,做针对性的考虑而进行的,它视企业的规模,产品线、现有的管理体系而定,可以是一个循序渐进的改革过程,不是一蹴而就的,一蹴而就的休克疗法往往风险比较大,对现有的软件生产、实施、客户服务冲击大,可能会引起混入。
什么是现阶段软件企业的发展瓶颈,“设计”,这个环节的严重不足是流程再造的根本障碍。不足体现在企业对设计没有非常的重视、体现在设计人才不足,是设计的投入不足。
看看我们的行业软件,有哪家公司是正儿八经的做过设计的,需求过来直接就是开发、界面、代码、表结构,省略了所有的中间过程,任务的分配也是简单粗狂式的,按照习惯的界面模块分配任务,如客户视图功能张三化5天来开发。就好像要制作一头大象,安排张三制作一个头、李四制作一个尾巴、王五制作一条腿等等,完了张三就按照自己对虎头的认识制作出一个象头,李四按照自己对蛇尾的认识制作出一条象尾,王五根据自己对狗腿的认识制作出象腿,各自制作完成后拼起就是个虎头、蛇尾、狗腿的大象,能不能拼起来也是个问题。而且换了一批人来做又可能做出猪头、凤尾、鸟腿的大象。
没有很好的设计也是不能够建造出高楼大厦,就像农村的泥水工,他们没有图纸、没什么设计,有也是有个简单的打算,就象我们开发人员的心里有个对功能开发的一个打算差不多,所以他只能造个二层小楼房,没有人有胆量让他去建造世贸大厦,是必然走向失败的。
所以忽视设计的软件制作是没有章法、没有标准、无法控制、没法管理的,是必然导致现阶段软件企业成本高居不下,人员成倍增长,人均效益低下的的境况。
一方面你省去设计阶段或者设计质量低下,那么在编码、测试、实施会引发许许多多不良的反映。开发进度无法保证、开发质量无法确认,甚至开发出什么你都不清楚,系统间的衔接更是错综复杂,说不清楚,仅仅剩下一堆冷冰冰的代码。那测试工作更是没发进行,好一点只有启用那些有多年业务经验、产品背景的人员手工做测试去确认,测试效率低。这个时候往往用户要求上线的心情也十分的急切,总之先去实施、上线是根本目的,问题往往就引入到实施阶段了,用户测试问题多多,业务跑起来坎坎坷坷,程序修改反反复复,维护工作量居高不下,开发人员疲于奔命,用户心理慌慌。在各种因素的综合作用下投入上线运行,许多问题又带入在线运行阶段,每天都有大量业务需要处理,大量用户在使用,问题爆发更加全面而紧急,问题满天飞,到处起火,到处救火,开发人员更是左手修改程序,右手接听电话,脑子想着如何解决问题,实施人员无法应对,整个团队左不能顾右,右不能顾左,前不能救后、后不能救前,开发人员成实施人员,维护工作混乱,人人精神恍惚、最怕电话铃声,用户意见很大,往往要求派经验丰富的人员上场,操刀,重写,这时候往往限于被动,到处需要灭火队员。所以好刀往往用来宰鸡,非用之处。如此,抗的过去,脱一层皮,也就过去了,抗不过去,也就是一单子买卖,以后上苍也就不会给你重来一次的机会了。
一方面你多拿一个省的单子,就得多一个省的人员投入,多五各省就多好几倍,你就需要更多的救火队员,业务扩大的同时人员成数倍扩大,形成粗放式的高成本的增涨。业务总是会有变数的,不可能无限的扩大,时事多变化,哪天业务发展出现的瓶颈和问题,那一堆人的成本很快可以把企业的现金迅速消耗光光,企业也因因贫血迅速消亡。
以上种种都是在在产品分析、设计上投入不足,设计人才缺乏,设计水平低下,质量不高所引起的,由于设计上不足,导致在管理上不能理顺,无法进行企业内部的流程再造。所以我们首先要着手解决设计问题,把产品设计对于公司,视作战争对于余国家的地位,引用孙子的话说:兵者,国之大事,死生之地,存亡之道,不可不察也。
如何来做分析设计以及确保高质量的设计。我想需要从几个方面来思考,从架构入手、面向接口进行设计,并始终注意确保设计的高质量。
为什么要做是架构设计?我们先来看看庖丁解牛的故事。庖丁说:“刚开始学宰牛时,因为不了解牛的身体构造,眼前所见无非就是一头头庞大的牛。等到我有了3 年的宰牛经历以后,我对牛的构造就完全了解了。我再看牛时,出现在眼前的就不再是一头整牛,而是许多可以拆卸下来的零部件了!现在我宰牛多了以后,就只需用心灵去感触牛,而不必用眼睛去看它。我知道牛的什么地方可以下刀,什么地方不能。我可以娴熟自如地按照牛的天然构造,将刀直接刺入其筋骨相连的空隙之处,利用这些空隙便不会使屠刀受到丝毫损伤。我既然连骨肉相连的部件都不会去硬碰,更何况大的盘结骨呢?”因为庖丁心中有牛的架构,下刀子才能快而准,做到游刃有余。那么有了软件架构上的正确认识,接下来说的事情就可以变得容易起来,简单而清晰,可以很好的去拆分它,实现专业化的分工,能够简单的组装它,实现大规模生产。
什么是架构设计?从整体的、高层次的认识入手,勾勒出事物的整体结构和框架。有两个来源于建筑领域关于架构设计的基本原则,一是根据整体中的位置来定义每个部分,只有这样才可以让建筑适合居住。软件产品也是是根据整体中的位置来定义每一个部分,划分功能域,只是软件它更抽象,这个划分更具有挑战性,主观性、可能会走弯路。一是设计应该由对问题的一个简单陈述开始,然后通过向这个陈述中加入信息使它变得更详细(复杂)。比如一个数据库的软件产品在构建数据模型时,首先要定义主题域,主题域就是一个基本而关键的概念和术语。以此为基础不断的补充进去属性、关系、约束、规则,形成概念模型、逻辑模型、最后很自然的形成复杂物理模型。
如何来做架构设计?我们认识事物总是从整体到局部,从粗到细的过程,这样会是更全面,更准确。如果不是这样往往会背离事物的本来面目,抓不住事物的基本和关键。我们通过一个例子,来体会一下第一个原则。
有个瞎子摸象的故事,可以很好的说明这个问题,摸到象鼻子的人说:“大象又粗又长,就像一根管子。”摸到象耳朵的人忙说:“不对不对,大象又宽又大又扁,像一把扇子。”摸到象牙的人驳斥说:“哪里,大象像一根大萝卜!”摸到象身的人也说:“大象明明又厚又大,就像一堵墙一样嘛。”摸到象腿的人也发表意见道:“我认为大象就像一根柱子。”最后,抓到象尾巴的人慢条斯理地说:“你们都错了!依我看,大象又细又长,活像一条绳子。”。在现实的系统分析中我们也往往犯这样的问题,到了营业部门得出这个软件产品应该有业扩报装功能、到电费管理部门就得出要有一个电费计算的功能,到了账务中心就得出要有个账务处理功能等等。这样就不是从整体中的位置来定义每个部分,有很大的局限性,换个单位、换个行业就不是这么个事情了。
那么我们如何去全面的把握这只大象呢?第一眼我们应该看见,它有多长,多高,有整体的大致概念。第二眼在看我们就得从整体中的位置来定义每个部分,它有头部、身躯、四肢等几个部分区域,一下就清晰了。为什么是整体中的位置来定义呢,而不是中间一刀,或者水平一刀来定义呢,对于大象来说我们很自然的就能看出其中的优劣,我们拆分它是为了以后能够很好的整合它,能够清晰的定义出各个部分的关系,头部对于躯体的关系,躯体对于四肢的关系,划分的合理,这些关系就能描述的那么的自然而优美,这对于描述大象整体构架是非常有关系的,它是大象的自然的结构。而软件的构架得用心去体会,不断的去揣摩,提升,通过不断的实践、走弯路,翻跟头、提升切身的认识,才能做到根据整体中的位置来定义每个部分,勾画出人事、财务、生产、销售、物流、渠道等各个部分,并不是一目了然事情。进一步研究头、躯体、四肢,逐步的细化,最后我们可以勾画出整个大象的骨架。它是通过躯干将这些部分组装到一起的。
第二个原则是设计应该由对问题的一个简单陈述开始,然后通过向这个陈述中加入信息使它变得更详细(复杂)。比如我们要去杭州旅游,以前重来没有去过,不可能把杭州地图找出来背下来,那我们首先会想,杭州是个旅游城市这个简单的陈述开始,那么杭州有哪些些基本而关键的景点,有西湖、灵隐寺、雷锋塔、六和塔、千岛湖、富春江等,找到这些基本而关键的概念和术语,就很自然的对杭州有个认识,定义出杭州的主题域来。如果我准备好好玩一下西湖,那么我会更进一步的了解,西湖有十景,分别是苏堤春晓、曲苑风荷、平湖秋月、断桥残雪、柳浪闻莺、花港观鱼、雷峰夕照、双峰插云、南屏晚钟、三潭印月,我又可以根据这十景,对西湖定义出主题域来,通过这些主题域来代表西湖的整体,很自然的可以区分这是西湖而不是武汉的东湖、扬州的瘦西湖。这个原则对于数据库系统的主题域分析、建模是十分贴切而有用的。
什么是面向接口设计、基于组件的开发?接口是基于组件开发的关键。接口只是确定契约,所以允许有任意数目的遵循契约的具体实现。

如何确保设计质量。

如何做企业级的产品流程再造?
让分布在全国各地的实施人员实施任务不重的时候,参与编码和测试工作中来,就像是军队不打仗的时候也可以打点粮食,救救水灾,让这些星星之火成燎原之势,形成实施在在的生产力。
这里有两个问题需要很好的思考,一个是大规模生产成本才能很好的下降、一是行业的发展往往是由小规模的应用逐渐的壮大的。如何处理好这个过程成为软件企业处理好发展问题的关键因素。
软件的生产力(制造能力)是软件企业的发展的根本
一个是软件的制造能力,取决于研发能力、开发管理能力。一个是软件本身的生命周期。能为社会生产大量的廉价的软件商品是软件行业大发展的转折点。
设计是将人们的想法、创意、点子,通过分析、定义、组织等手段和过程,由具体到抽象,由复杂到简单、有整体到局部的分析过程、实现过程,它是一个有整体性描述到逐步到细节的过程。在这个过程中,分析、设计的质量始终应该作为我们工作的重心,重中之中。产品、服务的是企业的大事,是企业生死之地、存亡之道,不可不察。作为提供软件产品或服务的公司来说设计更是软件企业的生死命脉,作为一家软件公司来说为了提供好产品、好服务。以提高软件设计质量为基础、最大可能的提供软件产品的生产能力、项目实施、服务提供能力将是区分软件企业好坏的根本。
我们可以思考几个问题:
1、传统产业,如制造业、房地产等研发、设计、生产的周期性特点,如何解决制造出更多跟好的产品,来推动市场发展,乃至推动整个行业的发展。软件行业也应该如此,你只有生成出更多的彩电、冰箱、才能让广大的消费者能消费的这个产品、消费的起这个产品。软件也是需要解决同样的问题,我想现在软件对余广大消费者,无论是企业用户、或者是个人用户,是不是太贵了?我们只有大大的提供软件产品和服务的生成能力,让所有的消费这都能够便宜、便捷的消受的起软件公司提供的产品和服务,到这个时候,软件产品和服务应该是具有非常广阔的市场的行业。
2、那么如何来提高软件的生产能力呢?软件生产能力我考虑设计几个方面的问题,一个是在一定的时间、一定人员资金的投入生产出更多的软件合格的产品。一是,在一定的时间、人员、资金投人产出高质量的产品。一是,一定的时间、人员、资金投入的前提下,产出更多的更优秀的高质量的产品。最高的境界应该是第三种,怎么衡量一个企业、一个队伍有没有进步,就是要在一定的时间、人员、资金的投入的情况下,有没有产出更多的高质量的产品。三年前,你20个人、一年时间投入,能设计开发一个产品,现在你的生产能力有没有提高,三年后是不是20个人员投入,一年时间能设计开发2个产品呢?
3、我对今后3到5年的一个基本判断,软件产品、服务、工程的品质、质量将越来越是区分软件企业的根本指标。如何提高软件质量,首先我们就需要十分的重视设计工作,大力的提高设计工作的质量,加强设计质量管理。提高建立业务模型、需求模型、分析设计质量,和过程管理。
初稿、小组讨论、组织评审、3审定稿的组织、过程记录、量化工作项目(数好数)。
阅读(1389) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~