`
bolutes
  • 浏览: 884397 次
文章分类
社区版块
存档分类
最新评论

软件项目管理(CMM)经验谈

 
阅读更多

(张凤岐 20010704 (电脑商报)

编者按:
CMM
认证是当今IT界最热的话题之一,这表明中国软件企业已开始重视与软件项目管理有关的问题了。为了了解国内软件企业对软件项目管理的认识程度以及他们在软件项目管理方面的具体做法,日前,记者采访了开思、东方通、瑞星三家纯软件公司的相关负责人。三家公司中,东方通业已开始按照CMM规范进行软件开发。在采访中,三家公司的负责人分别介绍了各自企业在软件项目管理方面的经验。开思公司的产品总监石宏峰先生还为记者详细讲解了开思公司的《产品部开发规范》。

经过整理,我们将东方通和瑞星两家公司的负责人在采访中所说的主要内容刊登于此。我们相信,其具有一定的认识价值。另外,我们将开思公司《产品部开发规范》的一部分也刊登于此——我们并不认为开思的规范就是最好的规范。对软件项目管理而言,普适性是不存在的,好坏是相对的,适用不适用才是绝对的——我们相信,其具有一定的参照价值。 


加强相关教育和培训

朱律玮(东方通科技首席软件设计师)

杨桦(东方通科技总经理助理)   

东方通科技从去年底开始为参加CMM认证(二级)做准备。拟议中正式参评的时间是今年11月。在这之前我们会请国内咨询公司的有关专家和国外的评估师进行两次预评估。

半年多来,我们觉得一切还算顺利。起初我们担心编程人员会有抵触情绪——因为每完成一天的工作或一道工序或一个项目后都要做记录、编文档、写报告,较之以前,工作量无疑是增加了——后来看看,大家对执行CMM规范还是理解的、支持的。

按照CMM规范开展工作后,到目前为止,公司的运营成本是增加了——因为要增加管理人员、撰写文档也需要人手——但从长远看,其会带来降低成本、提高质量、提高用户满意度等好处。对此,我们确信不疑。

与国外相比,我们在软件工程管理方面的差距不仅表现为管理体制、管理方法、管理思想的陈旧,整个软件业的落后才是根源。

个人英雄主义情结、喜欢单打独斗是我们的民族性之一,其在软件人才身上表现得尤为明显,已成为中国软件企业做大的一个瓶颈。造成这种状况的原因,除了国内软件业的发展水平不高、软件项目规模不大和软件企业管理者自身素质不高外,还有很重要的一点,即与软件工程管理有关的教育内容几乎没有。在国外,PSPGSP均为软件专业学生的必修课,可在国内,这两门课在学校里至今还没有开起来。国外施行的是定岗培训,比如撰写文档就是一门专业课,专门有人修它,毕业后拿它来“安身立命”,国内则是大家过独木桥,统统都学写程序。应该说,目前国内同行对软件工程管理的重要性已有了一定的认识,但在相关人员的培训上下的力气仍远远不够。

其实人才才是最关键的。现在软件业最缺的人才之一就是产品经理,他们是软件工程管理的主角。产品经理必须具备以下素质:具有长期的软件开发经验——般来讲,要在8年以上;了解用户的需求;对产品熟、对市场熟——他可以不了解一个产品的底层技术,但必须了解其功能,能把握其发展方向;具有协调能力。总之,产品经理并不一定非常聪明,并不需要在某一方面特别突出,但要八面玲珑。这样的人才太难找了。东方通的产品经理都是自己培养的。

CMM
规范并非只适用于大型软件企业,其也适用于中小型企业。CMM规范只是一个框架、纲要性质的东西。企业在落实它时要细化一次;企业将其落实到具体的某个项目时,要再细化一次;中小企业可以不像大型企业那样将CMM规范细化得那么细,够用就好,不要教条。

实施CMM规范、通过CMM认证有如下一些好处:确定工作流程和方式,从而使产品的质量和开发的可延续性有了保证;可以提高企业在用户中的信誉度,增加企业与强势公司竞争的筹码;可以承接国际大公司的外包项目———美国公司愿意找印度公司来承接其外包项目,就是因为印度公司对CMM规范普遍比较重视,通过CMM认证的软件企业也多;公司不再受制于人,人走了,事照做,这是一个公司成熟的表现。


软件商业化的必要手段

谈文明(北京瑞星科技股份有限公司研发部经理)

中国软件产业发展时间不长,虽然已有部分技术达到国际水平,但由于商业环境还不够完善,在软件技术的商业化与软件工程管理等方面,与国际同行相比,还存在差距。

只有率先将技术先进的产品推向市场的公司才会赢得利润。在瑞星,技术商品化已被当作一种制度,它有助于提高整个企业的素质。

瑞星意识到在充满竞争的环境中要获得成功,天才人物是必不可少的,但他们并不是全部。目前,一个软件工程的成功更多地要依靠科学家、工程师、制造人员和销售人员的协同努力。

在软件商业化的过程之中,建立规范化的易于操作的软件开发行为规范是首先要做的工作。针对杀毒软件的特点,瑞星专门设计了瀑布模型结合增量模型的开发方式,即将项目分阶段来实现。首先实现市场最需求的核心功能,然后在此基础上继续开发,每个单独的阶段都采用瀑布模型的开发方式。

具体地说,一个基本的软件开发流程包括需求阶段、系统设计阶段、详细设计阶段、编码阶段、单元测试阶段、集成测试阶段、系统测试阶段、软件发布软件维护阶段。其中决定软件开发成功与否的关键阶段是:软件需求管理、软件计划管理、软件质量管理和软件配置管理。

为了在用户和处理用户需求的软件项目组之间达成共识(用户由最终用户、高层领导、销售人员和市场调研人员组成),“软件需求规格说明书”是必不可少的。经过正式的评审和确认,其将成为后续工作的基础。

软件项目的实施过程是根据软件项目的资源、约束条件和执行能力确定的,因此需要制定合理的软件工程管理计划,这是项目经理的职责之一。项目经理应定期检查“项目开发计划书”,按照当前项目开发的实际情况,对其进行调整。

为了保证每一个软件产品都合乎需求,需要设立一个负责项目监督和协调的SQA。其会对软件产品是否符合定义好的软件过程中的相应部分进行审查、复审和测试。公司高层主管应该定期参与、评审SQA的活动。

软件配置管理是指在整个工程期间对项目的所有软件配置项进行规范化管理。如采用版本控制软件对软件配置项版本进行版本控制,采用基线管理方法对变化进行控制,即在遵循软件工程标准的基础上对整个软件进行控制和管理,维护其完整性、一致性和可跟踪性。

瑞星努力营造的是一个广泛的网络,研发、制造、销售、分销和服务,连续进行。围绕着产品、市场和开发阶段而不是单纯的技术来组织各项工作。为了这个目的,标准操作是必不可少的。


附录:开思公司《产品部开发规范》 (摘要)

说明:第一部分为《目录》,从中可以看出开思公司《产品部开发规范》的整体架构;第二部分为《开发规范概述》,从中可以看出开思公司在软件项目管理方面的一些具体做法。

1
  目 录

1
 目的

2
 开发规范概述

2
1 应用项目管理管理开发过程

2
2 标准的阶段性开发工作

2
21 总体规划

2
22 项目立项

2
23 需求分析

2
24 系统分析

2
25 系统设计

2
26 编码实现

2
27 项目测试

2
28 文档制作

2
29 项目验收

2
210 项目版本化发布

2
3 项目组织

3
 开发工作规范

3
1 总体规划阶段

3
11 项目需求报告

3
111 工作定义

3
112 前序工作及输入成果

3
113 具体工作内容

3
1131 资料收集(可选)

3
1132 资料研究(可选)

3
1133 项目需求报告编制

3
1134项目需求报告讨论准备

3
1135 项目需求报告讨论

3
1136 项目需求报告修改

3
1137 项目需求报告验收

3
114 参与者及职责

3
115 输出成果及后序工作

3
12 技术可行性实验(可选)

3
13 项目计划书

3
2 项目立项

3
21 立项申请

3
22 项目立项评估

3
23 项目进度计划

3
24 项目立项审批

3
3 需求分析

3
31 资料收集

3
32 需求分析编制

3
33 讨论准备

3
34 需求分析讨论

3
35 需求分析修改

3
36 需求分析验收

3
4 系统分析

3
41 系统分析准备

3
42 确定问题域

3
43 需求建模

3
44 建立分析对象模型

3
45 系统分析合并

3
46 系统分析测试

3
47 系统分析修改(测试后)

3
48 系统分析验收

3
5 系统设计

3
51 系统设计准备

3
52 界面设计

3
53 建立设计模型

3
54 系统设计合并

3
55 对象持久化设计

3
56 详细设计

3
57 系统设计测试

3
58 系统设计修改(测试后)

3
59 系统设计验收

3
6 编码实现

3
61 编码准备

3
62 编码

3
63 编码单元测试(测试工作)

3
64 单元测试后编码修改

3
65 编码联调

3
66 集成测试(测试工作)

3
67 集成测试后编码修改

3
68 系统测试(测试工作)

3
69 系统测试后编码修改

3
610 编码验收

3
7 项目测试

3
71 系统分析测试

3
72 系统设计测试

3
73 项目测试方案

3
74 单元测试

3
75 集成测试

3
76 系统测试

3
8 文档编制

3
81 开发文档整理

3
82 用户文档编制

3
83 宣传资料编写

3
9 项目验收

3
10 项目版本化发布

4
 项目工作总结

4
1 项目任务数

4
11 总任务数

4
12 阶段任务数

4
2 输出成果

2
  开发规范概述

2
1 应用项目管理管理开发过程

产品部接受的各种开发任务均以项目形式出现,包括:新产品开发,产品维护(错误修改、功能增强、缺陷完善等),产品客户化开发及维护等,全程使用项目管理方法进行控制和管理。

根据项目规模和难易有大、小,繁简之分。每个项目的完成周期要控制在6个月以内,项目规模控制在60个人月内。过大的项目需要拆分成多个小的项目来完成。30个人月以上的项目称为大项目,10个人月以内的项目称为小项目。

每个项目要根据具体情况拆分成工作阶段,即里程碑,以便对项目进度的有效控制与检测。

2
2 标准的阶段性开发工作

2
21 总体规划

全面规划项目工作的内容,确定目标市场、技术指标和应用要求,划定项目工作范围和交付成果,明确项目实现的总体设想和实施方案;确定项目中的新技术的可行性;明确项目需要用到的各种资源,估算项目的工作量和成本。

2
22 项目立项

产品部对要进行的开发项目进行立项申请,提交项目资料。由公司的有关人员对项目进行一系列的风险评估。

通过风险评估的项目,由产品部进行详细进度计划安排,落实时间进度、资源(人员/设备、内部/外部)、技术、资金和费用等,相关资源和资金使用计划要详细列出。

最后所有的项目申请资料、风险评估报告及产品进度计划都要报给公司上级领导审批,进行立项评审。

立项通过的项目才能进入正式的开发工作。

2
23 需求分析

根据项目需求报告界定的工作范围和应用方案的设计思路,进一步深入细化应用方案,描述将要开发出计算机系统中包含的各项业务是如何做的,及业务流程、相关理论、运算公式、原理、业务数据、单据报表格式等。

2
24 系统分析

根据项目需求分析,对将要建立的满足用户需求的计算机系统进行分析。在系统分析过程中采用面向对象分析技术(OOA)划分需求的问题域,对每一个问题域进行分析和抽象,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域及其系统责任所需的类及对象,定义这些类和对象的属性与服务,以及它们之间所形成的结构、静态联系和动态联系。最终产生一个符合用户需求,并能够直接反映问题域和系统责任的面向对象的分析模型。

2
25 系统设计

根据项目需求分析和系统分析,针对具体实现中的人机界面、数据存储、任务管理等内容,运用面向对象设计技术(OOD)进行系统设计。主要包括UI设计、对象设计和数据库表设计。

2
26 编码实现

根据系统设计的结果,运用面向对象的方法进行程序编码(OOP)以实现系统设计的内容。

编码过程就是用具体的数据结构来定义对象的属性,用具体的语言来实现服务流程图所表示的算法。在对象设计阶段形成的对象类和关系最后被转换成特殊的程序设计语言、数据库或者硬件的实现。

2
27 项目测试

对系统分析、系统设计、程序编码等运用面向对象的方法进行测试(OOT)。项目的测试工作贯穿项目的整个开发过程。主要包括:分析(OOA)测试、设计(OOD)测试和编码(OOP)测试,以及集成测试和系统测试。

2
28 文档制作

跟随项目开发过程应产生的文档主要包括三类:

1)开发文档:分析、设计、编码、测试以及各种开发管理文档等资料;

2)用户文档:在线帮助,安装指南,使用手册,技术手册,培训教材等;

3)宣传资料:产品介绍资料,产品白皮书,产品宣传PPT,演示光盘等。

2
29 项目验收

对完工的项目按照验收步骤进行验收。验收过程中对项目的情况给予评价。

2
210 项目版本化发布

对验收通过的项目进行版本控制,整理项目版本包含的内容并版本化,发布产品发布通告。

2
3 项目组织

每个项目指定一个项目经理进行管理,同时指定一个分析、设计人员(来自分析设计组)负责对技术问题的管理。当任务涉及到多个职能组的工作时(有些项目可能只涉及单一的职能组),由项目经理根据项目工作安排与职能组的组长进行协调,由职能组的组长来协助安排本组承担的项目工作,指定组内人员来完成相关工作。项目经理根据各职能组长的安排汇总编制整个项目的进度计划,并根据最终形成的项目计划对项目进行控制和管理。

项目进行过程中需按照项目管理的要求对项目进行跟踪、总结,各职能组的人员要对这些工作给予积极的支持和配合。产品委员会(或产品部内部)不定期组织人员对项目进行审查,确保项目的进度和质量。

项目完工后需要由产品委员会组织对项目进行验收。

分享到:
评论

相关推荐

    周伯生教授谈软件研发项目管理

    "周伯生教授谈软件研发项目管理" 软件项目管理是指对软件研发项目的计划、组织、领导和控制,以确保软件项目的质量和进度。软件项目管理的重要性在于它可以确保软件项目的质量和进度,降低项目的风险和成本。 软件...

    软件项目进度跟踪管理经验谈.doc

    本文由肖永威分享了他在软件项目进度跟踪管理方面的经验,强调了在项目管理中时间进度的重要性,并结合CMM(软件能力成熟度模型)理论和SPI(软件过程改进)来建立有效的进度管理策略。 首先,作者指出,项目管理...

    信息系统项目管理师论文指南加范文30篇

    软件项目管理原则谈 80 软件项目管理中的一些误区 83 软件项目失败因素分析 83 什么是项目战略计划 84 实施项目问题管理的七步走 85 述诉项目管理 87 项目管理8要点 89 项目管理13禁忌 90 项目管理:经济发展的驱动...

    软件项目进度跟踪管理经验谈整理.pdf

    作者引用了CMM(软件能力成熟度模型)和SPI(软件过程改进)理论,通过建立软件开发进度模型,制定了周工作计划管理制度。该制度要求每周统计开发工作完成量,并与进度模型对比,将完成的工作量线性化为项目进度...

    浅谈企业信息化之项目管理.doc

    项目管理与体系结构紧密相关,如ISO9000质量管理体系和CMM(Capability Maturity Model)在项目管理中的应用,强调了标准化和成熟度提升。企业应根据实际情况逐步落实项目管理,确保项目按计划进行,并有效控制风险...

    浅谈软件过程管理实践

    ### 浅谈软件过程管理实践 #### CMMI与软件过程改进 CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是由美国卡内基·梅隆大学的软件工程研究所(SEI)基于先前的CMM模型进一步完善和发展而来...

    软件配置管理资料

    - **经验谈**:提供了来自实践者的见解和建议。 - **第二章:相关问题** - **软件配置管理**:进一步探讨了配置管理的相关问题。 - **CVS工具常见问题**:解答了使用CVS工具时常见的疑问。 - **第三章:配置...

    谈软件公司的技术管理

    - **项目管理工具**:利用先进的项目管理软件和技术辅助项目管理。 - **风险管理**:提前识别潜在风险并采取预防措施。 4. **提供优质客户服务**:以客户需求为导向,提供及时、高效的服务,提高客户满意度。 - ...

    非常实用的软件测试综合资料库

    通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。 其次,没有发现错误的测试也是...

    软件测试必看 入门级的教程

    三 浅谈软件开发中的注意事项 16 3.1 项目设计 16 3.2 设计变化和需求变化 16 3.3 代码编写 17 3.3.1 源程序文件结构 17 3.3.2 界面设计风格的一致性 17 3.3.3 编辑风格 17 3.3.4 命名规范 18 3.4 BUG...

    浅谈QA所应该具备的知识.pdf

    部分项目管理与开发经验 实践经验对于QA至关重要。了解项目管理和开发流程,能帮助QA更准确地评估项目风险,提出合理建议,避免理论与实践脱节。 #### 4. 配置管理 配置管理是软件开发中不可或缺的一部分。QA需...

    浅谈QA所应该具备的知识

    - 实际的项目管理和开发经验对于QA来说非常重要。通过参与实际项目,可以更深入地理解开发流程中的各个环节,从而更好地指导过程改进活动。 4. **配置管理** - QA需要熟悉配置管理的基本概念,如配置项、配置基线...

    浅谈CMMI与CMMI五级认证.doc

    CMMI是CMM(Capability Maturity Model)的升级版,最初是针对软件开发项目设计的,但随着时间的发展,逐渐演变为涵盖系统工程、采购、人力资源管理等多个领域的综合性模型,以解决多模型应用时可能出现的问题,如...

Global site tag (gtag.js) - Google Analytics