UML软件工程组织

谈软件公司的技术管理
马映冰 (21CMM)

 

 多年在IT行业摸趴滚打,有成功的喜悦,也有失败的辛酸。很多同业人现在都在大谈软件的项目管理,我也在思考。写出来,与同行共同探讨,以期把今后的工作做得更好,共同推进中国软件的发展。因为近期组织管理类项目较多,文章中也就不自觉地多了管理类软件项目管理的色彩。


1. 目标

  (1) 建立项目开发的质量保证体系,使项目开发有序化、文档化,有计划性、具可追溯性;
  (2) 调动技术人员的工作积极性、主动性、创造性;
  (3) 保证项目的按计划实施,保证项目的完成质量;
  (4) 为客户提供及时、周到、满意的服务;
  (5) 做好公司内部软件资源的管理,提高软件资源的可重用性;
  (6) 做好技术人员的管理工作,增强归宿感,做到敬业乐群;
  (7) 做好技术储备和探索性研究,做好梯队建设。

2. 现状

  国内软件行业的发展很快,而成规模的又凤毛麟角,绝大多数软件公司人数在50人以下,占到软件公司总数的55%以上,这部分公司整日忙于生计,主要靠公司几个技术“高手”支撑,公司的命运与这几个“高手”息息相关,这几个“高手”也是整天在扮演“救火队员”的角色,整天价忙得不可开交,压力很大,无法解脱。其实,一些国内著名的软件公司也是在这样拼杀。1997年金山推出WPS97名震四方,就有媒体披露靠的是“十来个人七八条枪”,靠的是求伯君卖了房子卖了车,那时,求伯君也讲,中国有中国的国情,无法按国外的开发方法组织,那样成本太高。这就标志着还处在“软件英雄”时代,还没有进入产业时代。也是在1997年,用友首先在国内软件行业通过ISO9000认证,开了先河,也是在这一年,“软件工厂”的概念被媒体炒得火热,很多业内的有识之士在思考,软件公司该如何管理、组织,也是在这一年,我到电子部出差的时候,知道了有一个东西叫CMM,那是国外评价软件公司和软件承包商成熟度的一个标准,国内以后大型项目招标可能会引用。


  前段时间,见到一份资料,讲的是CSCMM,即中国软件的CMM,称这项研究开始于四年以前,是CMM与中国国情结合的产物。这就是说,四年前从电子部了解到的那个消息现在有了“研究成果”,另一个信号就是,国外对软件承包商成熟度的评估办法也快要引进来了,做“外包”,需要有CMM,做大型的“内包”,也快要要求CSCMM了。发展是历史的必然,机会与挑战同在是我们常诵的格言。迎上去,海阔天空,等下去,山穷水尽。


  WTO,已经是不远的现实,软件产业化也是不争的现实。作坊式的生产、英雄式的产业终经不起大浪淘沙。

3. 组织

  以项目组作为一个描述单位。
  A.系统分析员,通常可以担任项目经理,全面对该项目的质量和进度负责,整个项目的组织者和直接领导者。是用户需求调查的主要负责人,与用户沟通的主要协调人。与系统设计师组成系统分析小组,执笔起草用户需求报告(按道理这份报告应该用户撰写,但通常情况下都要软件开发商代劳)、系统可行性分析报告、系统需求说明和设计任务书等,制定系统开发计划,制定系统测试方案,制定系统试运行计划。
  B.系统设计师(原来习惯称高级程序员),参加系统分析小组,参加用户需求调查,分别着重于服务器端或客户端或中间层协助系统分析员进行可行性分析,协助系统分析员完成各项系统分析报告。用户需求报告和需求说明获得用户评审通过后,分别着重于服务器端或客户端或中间层制定详细的设计任务书,制定程序设计风格,制定软件界面风格,指定参考资料,确定可引用的软件资源,指导程序员的工作。
  C.D.程序员,在系统设计师的直接指导下开展工作,严格按照设计任务书的要求进行设计,不许追求个人风格,强调沟通与协作,培养务实求精的工作作风。
  E.档案控制员,可以一个项目配置一个,同时兼做部分测试员的工作,也可以几个项目配置一个专职的档案控制员。档案控制员负责保管好项目每一个阶段的文档,编好号,建好索引,方便查阅,又要保证档案的完整、安全和保密。另一个职责是做好软件的版本控制工作,每次正式发布的软件或阶段性的软件程序员必须将源代码和相关的说明书交给档案控制员统一打包、编译、建档。保留好软件的每一个版本,每一个版本升级的详细不同都要有详细记载。重点文档要重点保护,如用户需求报告和需求变化的阶段记载,项目进展过程中的每次会议纪要,阶段性的测试报告,每次评审的问题清单,开发过程中遇到的主要技术障碍和解决途径等。
  F.系统测试员,直接接受项目经理的指导,严格执行项目经理制定的测试方案,有条件时系统测试员可以深入用户实际工作环境,了解用户的实际工作情况,收集来源于实际的测试试例,做好测试记录,做好测试报告,做好与程序员和系统设计师的沟通,跟踪问题的解决。测试报告和测试卡要交档案控制员归档。

公司成立技术委员会,由主管技术的副总或总工程师、技术部经理、各项目负责人等组成,确定公司技术工作的发展方向,参与研究公司的产品发展方向,研究各项目组的协调问题,重大项目的联合公关,研究人员配置,软件配置和管理,研究项目间的资源共享问题。 4. 人力资源管理

  人是最为宝贵的财富。软件行业就更是这样。使用人必须先信任人,培养人,给他一个发展的空间,让他看到一个希望,让他感到工作的过程同时也是一个自身价值升值的过程。需要建立一个祥和、友善、互助、向上的企业文化氛围。相互间的技术保密、妒忌是软件公司的大忌。首先,技术管理人员要有一个平常心,不要太多被名利所左右,公司先解决好技术管理层的问题,公司制定提升和奖励政策如何,也会在这方面起一个引导作用。工作的安排要合适,任务要明确,多协作,少冲突,避免在同一领域展开员工间不必要的竞争,需要多人完成一项工作时要新老结合,高低结合。每周安排一个固定的时间举办技术沙龙,互相交流学习。


  人的提升有多种途径,当官只是微不足道的一种狭义的提升,这种提升对热衷于技术的人并不很重要,在用人的过程中,根据每个人不同的喜好和性格设计不同的发展路径,必要的时候可以和当事人交流,将公司对他的期望和他本人的努力统一起来。人的"提升"感重在于自身价值在集体中被承认,被认同,被同仁接受。技术路线的升级是一条路,从程序员到系统设计师再到系统分析员、项目经理,性格外向的又可转去负责一个行业的市场和客户服务,做事认真仔细的可以向项目测试师培养,负责大项目的总体测试,甚至担任类似"总QC"的角色,在国内普遍重开发轻测试,但在微软等一些大公司,能做到一定级别的测试师也是令人向往的,这需要公司文化的引导。还可以让程序员发展成为公司内不同领域的"专家",他们也会自觉欣慰。

5. 项目管理

  项目进度的控制、文档的管理很重要,是项目管理的重中之重。


  用户需求的管理是关键一环。一定要履行需求评审的手续,这一工作要能得到用户的理解和认同,让用户充分认识这一工作的必要性。现在有些大的软件公司出现了"ERP实施顾问"的职位,由具有大中型企业管理经验和ERP实施经验的人担当,从另一个方面说明在需求调查和需求确认过程中工作的重要性和复杂性。实现ERP的过程,是一个改善管理的过程,改善的途径和改革以后的作业方式必须在这一阶段与客户达成共识。"失之毫厘,差之千里",是一个简单的道理,但有的时候软件开发商的认识程度也不够高,用户的认识就更是淡漠,"你先做吧,做做再看。"孰不知这"做做"的代价有多大。有些项目成为"烂尾"项目,有些项目余款闹得收不回来,各说各有理,有些项目打官司打出了名堂,多数都是双方在需求分析阶段没有把应该固定的固定下来。其实,在用户决定实施ERP时,多数用户对ERP是什么东西并不是十分理解,因此,在签定合同前后带客户参观一下ERP实施好的单位,给用户组织几次关于ERP的讲座都是必要的,通过这些活动让用户认识到,实施ERP不是简单地把现在的工作搬到电脑里去做,也不是简单地把现在的工作"无纸化"、"自动化",而是要结合当今信息技术的最新发展、结合管理科学的最新发展、结合用户业务实际,探讨一种既简捷,又充分发挥IT优势,具有可扩展性,甚至要考虑到业务过程的可重组性,而且提供数据分析和决策支持的工作方式,这种工作方式可能是在过去工作方式上的提炼,也可能会有较大的变化,通过这些活动要让用户有兴趣和我们共同探讨先进IT技术背景下有效的作业方式,让用户的主管以上领导对由ERP引来的作业方式的改变有思想上的准备,并愿意接受这种转变。软件是一种文化,管理软件就更是文化,软件的本身就蕴涵着管理文化。在用户需求讨论的过程中要做好与用户的管理文化的交流,掌握用户的管理倾向是重要的。用户的需求文件一旦通过了双方的评审,对双方都要有约束力。首先,软件开发商要从思想上非常重视这份文件。


  计划的制定要恰如其分。软件开发的计划往往是以交货的时间倒推来制定的,这是一份经不起推敲的计划书。软件开发计划要真正以用户的需求为出发点,以可利用资源为基础,以过往相似的项目为参考,结合现有人员的水平和素质,均衡每个人的工作,制定切实可行的计划,人员不足要在计划中提出来,要把双方沟通、评审的时间在计划中预留出来。有了计划就要切实执行,一层一层监督检查计划的执行情况。发现问题要正视问题的存在,及时解决,如人员不足或实力不够要及早抽调和补充。遇到问题情绪化或者过多地责怪都不是一个好的工作方法。要培养员工工作的计划性,培养员工的大局利益。通常?quot;周"为单位制定计划和检查计划的执行情况,每一周或两周再以8小时作为一个计划单位作出个人的详细计划。每个员工都必须将他的详细计划上交他的直接上司,并且每天下班时以电子邮件的形式向他的上司汇报当天计划的执行情况和遇到的困难。


  阶段性的检查、评审和归档是必须做的。这是软件工程所要求的,也是保证软件质量的有效手段。有了完整的软件开发文档和阶段性的评审,才能将项目进展过程中人员流动的损失降到最低。


  发挥系统测试员的积极作用,项目经理把好两个头,一个是用户的需求调查和分析,一个是交付用户前的完整测试,项目进展过程中项目经理就要做好系统的测试方案和试运行方案。测试员要做好编译错误记录和数据测试错误记录,进行项目的分类统计,并将统计结果及时反馈程序员。项目经理至少每周要关心一次测试报告、测试报告的跟踪情况和测试错误的分类统计,针对这些情况对设计和测试给出相应的意见。


 用户培训是不可或缺的一个环节。这个环节担负着向用户全面灌输软件中管理思想的职责,不能简单理解成软件使用方法的培训。讲清了管理思想,用户自然容易明白为什么要这样做,自然容易理解该怎么做。只有这样,用户才能结合实际创造性地使用软件。"软件培训"的过程是一个全面提升用户管理水平和管理文化的过程。

6. 软件资源管理

  软件资源可重用的程度是CMM衡量的一个重要指标。众所周知,提高软件的重用度也是每一家软件公司所追求的。


  首先要搞清楚自己的家底。把各个项目组的负责人召集在一起,把有重用价值的软件模块或控件收集起来,再把相关的资料组织在一起,标注说明,建立索引,由专人负责管理,可重用模块的升级和完善都要建立完整的档案资料,在升级档案中要记录升级前后的主要区别。为重用模块作出贡献的个人都要入册记载。


  一个项目在做系统设计任务书时,就要考虑有哪些以往的软件资源可以利用乱宦值目⒂心切┕δ芸梢宰龀煽芍赜媚?椤?/p>

7. 引进ISO9000/CMM

  这一两年,ISO9000的名声在国内有点不太好了,因为太多了,滥了,什么人什么企业都可以过ISO9000,这样一来,ISO9000在人们心目中就不那么高贵了。


  但过来人还是说,过和不过大不一样,搞和不搞大不一样。


  尤其,软件企业想要进入国际竞争圈,让国外的公司认同你的开发能力,通过ISO9000认证还是大有意义。中国的软件企业最让人放心不过的就是开发过程,就是完善的文档,通过ISO9000认证正能在这方面给世人一个信心。ISO9000本来源于制造业,对每一个质量控制点都有严格的要求,过去普遍被人们认为执行ISO9000既烦琐又机械。现在,ISO9000执行2000版,2000版与过去执行的1994版有了比较大的区别,不是每一个要素都强制执行,不同行业不同企业可以 根据自己的实际情况选择必须要控制的控制点,制定自己的ISO9000执行文件,也可以实行电脑化管理的ISO9000,这样更切合软件公司的实际,ISO9000重在于建立质量管理和保证的体系,而不在于形式。ISO9000与CMM有异曲同工的作用。ISO9000的"入门费"要比CMM低很多,小的软件公司也容易承受,可以作为实施CMM的演习。


  CMM对软件企业划分了五个等级,分别是:1-初始级,2-可重复级,3-已定义级,4-定量管理级,5-优化级。CSCMM根据中国软件业实际,管理水平比较低,划分了六个等级:0-初始级,1-基本级,2-可重复级,3-已定义级,4-定量管理级,5-优化级。有分析说,不少处于CMM-1级的公司已经获得了ISO9000的认证,但真正贯彻ISO9000的精神,应该已经达到或超过CMM-2的要求。CMM是针对软件业的标准,有更强的可操作性,达到一个级别后,他会指出为达到下一个级别需要做的关键工作。


  引进ISO9000可以一次到位,逐步实施。引进ISO9000要紧紧结合行业实际,结合公司实际,结合CMM的要求,在引进ISO9000的过程中再对全体员工进行一次软件工程的教育,进行一次CMM的宣传,进行一次ISO9000的宣贯,做到全员重视。通过引进ISO9000,健全公司质量保证体系,标准化各种文档的格式,规范化各种工作,责任到岗到人。用推行ISO9000的这样一场"运动"来强行规范员工的行为。制度和规范一步到位,宣贯全面进行,具体实施可以根据当时的实际情况,先在新开始的项目组实施,已经在运作的项目组还按原来的做法继续,大家逐步在习惯,习惯之后就不会觉得是一种负担,这样一个组一个组地展开。


  从开始准备到取得认证,顺利的情况下需要半年,全面推开见到成效大约要一年时间。



版权所有:UML软件工程组织