软件项目团队模型
软件开发模式对比(瀑布、迭代、螺旋、敏捷)

软件开发模式对⽐(瀑布、迭代、螺旋、敏捷)1、瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型, 瀑布式开发是⼀种⽼旧的计算机软件开发⽅法。
瀑布模型式是最典型的预见性的⽅法,严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进⾏。
步骤成果作为衡量进度的⽅法,例如需求规格,设计⽂档,测试计划和代码审阅等等。
瀑布式的主要的问题是它的严格分级导致的⾃由度降低,项⽬早期即作出承诺导致对后期需求的变化难以调整,代价⾼昂。
瀑布式⽅法在需求不明并且在项⽬进⾏过程中可能变化的情况下基本是不可⾏的。
2、迭代式开发也被称作迭代增量式开发或迭代进化式开发,是⼀种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发⽅式中的⼀些弱点,具有更⾼的成功率和⽣产率。
什么是迭代式开发?每次只设计和实现这个产品的⼀部分,逐步逐步完成的⽅法叫迭代开发,每次设计和实现⼀个阶段叫做⼀个迭代.在迭代式开发⽅法中,整个开发⼯作被组织为⼀系列的短⼩的、固定长度(如3周)的⼩项⽬,被称为⼀系列的迭代。
每⼀次迭代都包括了需求分析、设计、实现与测试。
采⽤这种⽅法,开发⼯作可以在需求被完整地确定之前启动,并在⼀次迭代中完成系统的⼀部分功能或业务逻辑的开发⼯作。
再通过客户的反馈来细化需求,并开始新⼀轮的迭代。
迭代式开发的优点: 1、降低风险 2、得到早期⽤户反馈 3、持续的测试和集成 4、使⽤变更 5、提⾼复⽤性螺旋开发,1988年,巴利·玻姆(Barry Boehm)正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于⼤型复杂的系统。
“螺旋模型”刚开始规模很⼩,当项⽬被定义得更好、更稳定时,逐渐展开。
“螺旋模型”的核⼼就在于您不需要在刚开始的时候就把所有事情都定义的清清楚楚。
您轻松上阵,定义最重要的功能,实现它,然后听取客户的意见,之后再进⼊到下⼀个阶段。
软件工程之软件开发模型

较为直观和明确地进一步提出需求,提出修改意见。 经过运营原型对软件需求规格阐明进行评价和确认。 评价要有顾客参加,注意来自顾客旳反馈信息。
原型模型旳内容
⑷ 修改和完善原型 根据修改意见进行修改,以得到新旳系统原型,然后
再进行试用和评价,这么经过有限次旳循环反复,逐渐提升 和完善,直到得到一种顾客满意旳系统模型为止。根据原型 实现旳特点和环境,能够把原型作为试验旳工具,用完就丢 弃之(大部分原型都废弃不用,主要因为原型太慢、太大、 构造不合理等原因);也能够使原型全部或部分地成为最终 系统旳构成部分。
2.5 螺旋模型
螺旋模型将瀑布模型与原型模型结合起来, 加入了两种模型均忽视了旳风险分析,弥补 了这两种模型旳不足。
螺旋模型是一种风险驱动旳模型。 螺旋模型将开发过程分为几种螺旋周期,每
个螺旋周期大致和瀑布模型相符合。 螺旋模型适合于大型软件旳开发。
制定计划
螺旋模型
风险分析
客户评估
完整旳螺旋模型图
原型模型旳内容
第一最终系统是软件需求全部功能旳实现,而原型只 实现所选择旳部分功能。 第二最终系统对每个软件需求都要求详细实现,而原 型仅仅是为了试验和演示用旳,部分功能需求能够忽 视,或者模拟实现。
原型模型旳内容
⑵ 构造原型 根据顾客初步需求,开发出一种能够应用旳系统,
它应满足上述旳由顾客提出旳基本要求。在构造一 种原型时,应该强调着眼于预期旳评估,而不是为 了正规旳长久使用。
因为目前还没有任何一种措施能够处理软件危机中旳全 部问题,所以在软件开发旳各个阶段采用综合治理旳措 施。
软件开发模型直接影响软件开发旳周期和软件质量,是 软件开发旳组织管理形式,是软件工程最主要旳内容之 一。
软件项目经理能力模型

软件项目经理能力模型1. 引言软件项目经理是一个关键的角色,他们负责领导团队,组织资源,规划项目并确保其顺利完成。
为了有效地履行这些职责,软件项目经理需要具备一系列的能力。
软件项目经理能力模型是描述软件项目经理所需技能的框架。
本文将介绍软件项目经理能力模型的核心要素和功能。
2. 能力模型的核心要素软件项目经理能力模型由多个核心要素组成,这些要素涵盖了项目管理、技术能力、沟通技巧和领导能力等方面。
2.1 项目管理能力项目管理是软件项目经理最基本的职能之一。
软件项目经理应具备以下项目管理能力:•项目计划和控制:能够制定和执行项目计划,并进行项目控制和监控,以确保项目按时完成和达到预期目标。
•风险管理:识别和分析项目风险,并采取适当的措施来降低风险和解决问题。
•资源管理:能够合理规划和分配项目资源,包括人力资源、物资和预算等。
•质量管理:确保项目交付的产品和成果符合质量要求。
•变更管理:有效管理项目变更,包括变更请求的评估、变更的实施和变更控制的追踪。
2.2 技术能力软件项目经理需要具备一定的技术能力,以便更好地理解和应对技术挑战。
以下是软件项目经理需要具备的技术能力:•软件开发过程:熟悉软件开发过程,包括需求分析、设计、编码和测试等阶段。
能够理解和评估项目的技术风险。
•技术架构:了解软件架构原理和最佳实践,能够与技术团队合作制定合适的技术架构方案。
•软件工具和技术:熟悉常用的软件工具和技术,如代码管理工具、集成开发环境和测试工具等。
2.3 沟通技巧软件项目经理需要与各种利益相关者进行沟通和协调。
以下是软件项目经理需要具备的沟通技巧:•有效的口头和书面沟通:能够清晰地表达自己的想法和指导,并能够倾听他人的意见和反馈。
•团队建设:能够建立和维护高效的团队合作关系,激励团队成员的积极性和创造力。
•冲突解决:能够有效地解决团队内部的冲突,促进良好的工作氛围。
2.4 领导能力软件项目经理需要担负领导的责任,推动项目的成功完成。
企业it软件开发部门组织架构设计模型

企业IT软件开发部门组织架构设计模型一、概述在当今信息技术日新月异的时代,企业IT软件开发部门的组织架构设计至关重要。
一个合理的组织架构能够有效地提高软件开发部门的工作效率,加强团队协作,提高软件质量,以及降低开发成本。
对于企业IT软件开发部门来说,设计一个合理的组织架构模型是至关重要的。
二、组织架构的基本理念在设计企业IT软件开发部门的组织架构模型时,需要遵循一些基本的理念,以确保该架构能够承担起部门的工作职能并提高工作效率。
1. 灵活性灵活性是组织架构设计的重要理念之一。
软件开发部门的工作需要不断地适应市场需求和技术变革,因此组织架构模型需要具备灵活性,能够快速地做出调整和变化。
2. 横向与纵向交流在软件开发部门的组织架构中,横向和纵向的交流非常重要。
横向交流能够加强团队协作,促进信息共享和问题解决;而纵向交流能够保证上下级之间的有效交流,加强管理和执行之间的通联。
3. 专业化和通用化软件开发部门的组织架构需要既考虑到专业化的需求,又需要兼顾通用化。
专业化能够提高技术水平和工作效率,而通用化能够满足多个项目的需求。
三、组织架构设计模型在考虑了基本理念之后,下面将介绍一种适用于企业IT软件开发部门的组织架构设计模型。
1. 部门设置在企业IT软件开发部门的组织架构中,通常会设置以下几个部门:- 研发部门:负责软件的研发工作,包括需求分析、设计、编码和测试等工作。
- 项目管理部门:负责项目的规划、实施和控制。
- 质量保障部门:负责制定和落实质量管理体系,提高软件质量和可靠性。
2. 职能划分在上述部门的基础上,进一步划分职能,以保证每个部门能够顺利地完成其工作。
- 研发部门可以划分为需求分析组、设计组、开发组和测试组。
需求分析组负责收集和分析用户需求,设计组负责制定软件架构和设计方案,开发组负责编码工作,测试组负责软件测试和质量保证工作。
- 项目管理部门可以划分为项目规划组、项目实施组和项目控制组。
软件过程模型案例

软件过程模型案例软件过程模型是指在软件开发过程中,将软件开发过程分为若干阶段和活动,并规定每一阶段和活动的输入、输出、各种文档的编制方法和文档的审核和审定的内容、具体要求、合格标准以及项目组织管理的方法和质量控制的方法等的一种软件开发操作规范。
下面将以一个实际案例来介绍一个典型的软件过程模型。
假设公司决定开发一个新的在线电影票购买系统来满足用户的购票需求,下面将以这个案例为例来介绍软件过程模型。
1.需求收集和分析阶段:在这个阶段,软件团队与项目的利益相关者进行会议,了解他们的需求和期望。
通过讨论和调查,软件团队收集到以下需求:-用户可以浏览不同影院的上映电影信息。
-用户可以查看每部电影的放映时间和价格。
-用户可以选择座位并购买电影票。
-系统需要提供在线支付功能。
-系统需要发送电子票给用户。
2.需求规格说明书编制阶段:根据收集到的需求,软件团队开始编制需求规格说明书,该文档详细描述了软件系统的功能、性能要求以及用户界面和交互设计等。
在这个阶段,软件团队还与利益相关者进行讨论,以确保需求的完整性和准确性。
3.设计阶段:在设计阶段,软件团队根据需求规格说明书开始设计系统的架构和模块。
他们使用UML(统一建模语言)创建类图、序列图和状态图等。
同时,团队还着手开发数据库设计和用户界面设计。
4.编码和单元测试阶段:在这个阶段,程序员开始根据设计文档编写源代码,并进行单元测试来验证每个模块的正确性。
他们还使用版本控制工具来管理源代码的版本。
5.综合测试和验收测试阶段:在这个阶段,软件团队进行综合测试和验收测试来验证整个系统的功能和性能。
他们通过模拟实际用户使用系统的场景来测试系统的稳定性和可靠性。
6.部署和维护阶段:在软件系统通过验收测试后,团队将其部署到生产环境中,并提供相关的文档和培训来帮助用户使用系统。
同时,团队会定期监测系统的性能并进行必要的维护和修复。
需要注意的是,上述过程是迭代和增量式的。
即使在开发和测试过程中,可能会发现一些需求的变化或改进的机会,开发团队应该做出相应的调整。
软件需求分析中的需求模型

软件需求分析中的需求模型在软件开发领域,软件需求分析是非常重要的一环。
软件需求分析的目标是在确保满足用户需求的同时,帮助开发团队更好地理解问题,并在设计阶段找到解决方案。
需求模型正是软件需求分析中的核心内容之一,下面我们一起来探究下需求模型的基本概念以及它在软件需求分析中的作用。
一、需求模型的基本概念需求模型从本质上来说就是对软件系统需求的一种图形化描述。
通常情况下,需求模型会包括以下几个方面:1.需求图:描述了系统中主要的功能点以及它们之间的关系。
2.用例图:描述了系统中涉及到的主要实体以及他们之间的交互方式。
3.状态机图:描述了系统在不同状态下的行为以及转换方式。
4.类图:描述了系统中各个实体之间的关系以及属性。
5.流程图:描述了系统中某个特定流程的详细步骤。
这些图形化描述的主要目的是为了便于团队成员、用户、老板等不同角色的人员更好的理解软件系统的需求,进而更好地进行开发。
二、需求模型的作用需求模型在软件需求分析中的最主要作用就是:确保团队正确理解用户需求。
在软件开发的过程中,如果团队和用户对软件的需求和期望有很大的偏差,那么就可能导致软件无法满足用户的预期效果,进而浪费时间和金钱。
因此,需求模型的制定过程是关键,它需要团队与用户深入沟通,理解用户的真实需求,设计具有解决问题的方案,并且在设计过程中,不断与用户进行反馈、协商,逐步优化设计方案,从而确保最终的软件系统符合用户需求。
除了更好地理解用户需求,需求模型还有以下几个重要的作用:1.规划开发流程需求模型能帮助团队制定详细的开发计划,从而预估开发时间和人力资源,提前做好技术准备,最大限度地避免开发过程中出现的不可控因素和风险。
2.指导整个开发过程需求模型制定后,可以为整个开发过程提供指导,确保团队在开发过程中始终遵循规范化设计流程,高效地推进项目,更好地利用资源。
3.便于用户培训和支持需求模型描述了软件系统需求的详细信息,这使得在用户使用软件系统时,能够更好地理解架构和功能的实现细节,更快速、更高效地学习和掌握软件使用技能。
虚拟项目团队成员信任评估模型
2 信 任 评 估 模 型
2 1 模 型 的描述 .
虚拟项 目团队是满足现代市场对迅速反映的要求 , 充分地表现 团队的整合 优势 , 快速形成 一个超级 团队。该团队的组成人员可能是 曾经有过合作经历的伙伴 , 也可能是从未合作过的团队或个人 。项 目发 起者考察待选合作伙伴的可信程度也 自 然有两种渠道。一种渠道项 目 发起者根据 自己的需要 , 直接与待 选合作伙伴直接接触 , 收集待选合作伙伴的有关信息 , 了解其可信程度。另一渠道是通过声誉 或第三方 推荐间接 了解其 可信性。把 根据交 往经 历 - I 或主观的感受对该候选人信任度 的评估 , 称 : 为直接信 任。把来 自信誉市 场上其 他实体 对该候选人信任 度 的推 荐, 为推荐 信任。 称 : I 项 目发起者往 往综合这两 种途径来 形成对 待选对象的信任评估意见。如图 1 所示 。 : 待对 选象 根据前面的描述 , 目发起人综合 了直 项 I 接信任和推荐信 任两种渠道来 形成对 待选 O 推 信 荐 任 直 信 ^ 接 任r I 更新信任表 I 对象的信任评估意见 , 那么项 目 发起 者 口对 I 待选合作伙伴 b 的总体信任度 . 则可 以表 信 场 示为直接信任 和推荐信任 的函数 :
一
心而愿 意依赖 对 方 。
收稿 日期 :06—1 0 ; 回 日期 : 0 20 O一 8 修 2 6—1 6 0 2—2 。 基金项 目 : 重庆市教委科学 技术研究项 目(5 7 7 。 0 00 )
作者简介 : 春艳 ( 95一) 女 , 代 17 , 重庆市人 , 士研究 生 , 博 讲师 , 从事项 目管理与投资决策研究 。
维普资讯
第 1期
代 春艳 , :虚拟项 目团队成员信任评估模型 等
软件工程项目的解决方案
软件工程项目的解决方案引言在软件工程项目的开发过程中,解决方案的选择和实施至关重要。
一个好的解决方案能够确保项目顺利进行,并高效地满足用户需求。
本文将介绍软件工程项目常见的解决方案,包括需求分析、开发方法、项目管理和质量保证等方面。
需求分析需求分析是软件工程项目成功的关键。
在需求分析阶段,需要清晰地了解用户需求,并将其转化为明确的功能和技术要求。
以下是一些常用的需求分析方法:1.用户访谈:与用户直接交流,了解其需求和期望。
2.用户故事:使用故事的形式描述用户的需求,帮助开发团队更好地理解用户需求。
3.原型设计:通过绘制草图或制作交互式原型,将用户需求可视化,以验证和修正需求。
开发方法选择适合的开发方法对软件工程项目的成功至关重要。
以下是几种常见的开发方法:1.瀑布模型:按照线性顺序依次完成需求分析、设计、开发、测试和维护等工作。
2.敏捷开发:采用迭代和增量的方法,快速响应用户需求变化。
3.快速原型模型:快速构建可演示的原型,通过用户反馈不断迭代改进。
选择合适的开发方法需要综合考虑项目的规模、时间和人力资源等因素。
项目管理一个良好的项目管理能够确保软件工程项目按时、高质量地交付。
以下是几种常用的项目管理方法:1.里程碑计划:将项目划分为一系列可管理的里程碑,每个里程碑具有明确的目标和计划。
2.甘特图:使用甘特图可视化项目进度和资源分配,并及时调整计划。
3.团队协作工具:使用协作工具,如Jira、Trello等,促进团队协作和信息共享。
项目管理方法的选择应根据团队成员的经验和项目需求进行合理的决策。
质量保证质量保证是确保软件工程项目产品质量的关键。
以下是几种常见的质量保证方法:1.代码审查:通过代码审查,发现和纠正潜在的质量问题,提高代码可读性和可维护性。
2.单元测试:编写单元测试用例,验证代码的正确性和健壮性。
3.持续集成:将代码集成到主干后,自动运行测试并及时检测和修复问题。
质量保证方法的选择应该根据项目的规模、复杂性和资源限制进行合理的决策。
项目方案模型
项目方案模型项目方案模型是指在项目实施过程中,为了更好地达成项目目标和任务,规划和设计出的可行性方案。
它是项目管理中的重要工具之一,能够帮助项目团队更好地理解项目的需求和目标,有效地分析和解决问题,从而提高项目的成功率和效益。
本文将从项目方案模型的定义、特点、设计步骤和应用价值等方面进行详细介绍。
一、项目方案模型的定义。
项目方案模型是指在项目实施过程中,为了更好地达成项目目标和任务,规划和设计出的可行性方案。
它是项目管理中的重要工具之一,能够帮助项目团队更好地理解项目的需求和目标,有效地分析和解决问题,从而提高项目的成功率和效益。
项目方案模型通常包括项目的目标、范围、时间、成本、质量、资源、风险等方面的规划和设计,是项目管理的重要组成部分。
二、项目方案模型的特点。
1. 系统性,项目方案模型是一个系统工程,它需要全面考虑项目的各个方面,确保项目的各项工作有机地结合在一起,形成一个完整的系统。
2. 可行性,项目方案模型需要具有可行性,即在实际项目实施中能够被有效地执行和实现,能够达成项目的目标和任务。
3. 灵活性,项目方案模型需要具有一定的灵活性,能够根据项目的实际情况进行调整和修改,以适应项目的变化和发展。
4. 可操作性,项目方案模型需要具有一定的可操作性,即能够被项目团队有效地理解和执行,能够指导项目的实施和管理。
5. 统一性,项目方案模型需要具有一定的统一性,即能够使项目团队对项目的目标和任务有一个统一的认识和理解,能够形成一个共识。
三、项目方案模型的设计步骤。
1. 明确项目目标和任务,首先需要明确项目的目标和任务,包括项目的需求和要求,为项目方案的设计提供基本依据。
2. 分析项目的需求和问题,其次需要对项目的需求和问题进行全面的分析,包括项目的范围、时间、成本、质量、资源、风险等方面的分析,为项目方案的设计提供依据。
3. 设计项目方案模型,根据项目的需求和问题,设计出合理的项目方案模型,包括项目的目标、范围、时间、成本、质量、资源、风险等方面的规划和设计。
MSF的概念
Elaborates on the MSF for Agile Software Development process
更多的工作项 可扩展的报告
敏捷版——MSF Agile 强调"进化和改变" 适用于竞争性环境 依赖于人的持续改进 计划和进行的迭代
MSF Agile vs. CMMI版——MSF CMMI MSF CMMI
项目管理准则
MSF 使用两种类型的里程碑 主里程碑表示前一阶段结束,后一阶段开始 中间里程碑用于阶段内部,它把一项工作 分成便于管理的几部分
在项目中运用MSF 过程模型 在项目中运用
过程模型可以根据项目的不同情况进行调整 团队可以依据下列指导方针来决定项目需 要哪些中间里程碑: – 由项目类型决定 – 考虑外部事件和风险 – 避免长时间没有里程碑 – 将里程碑与交付成果结合起来 – 仅使用适合项目情况的MSF 推荐的里程碑
获取更多MSDN资源 资源 获取更多
�
稳定阶段概述 目标:提高解决方案的质量,满足
发布到生产环境的质量标准 团队的工作重点 – 提高解决方案的质量 – 解决准备发布时遇到的突出问题 – 实现从构造功能到提高质量的转变 – 使解决方案稳定运行 – 准备发布
MSF 稳定阶段的里程碑和交付 成果 交付成果
– 试运行评审 – 可发布版本 源代码和可执行文件 脚本和安装文档 最终用户帮助和培训材料 运营文档 发布说明 – 测试和缺陷报告 – 项目文档
通过把一个大项目分为几个版本将风险 减至最小
按版本发布的好处
在特定版本范围内管理项目的变更和不确 定因素 保证功能的持续增加和完善 缩短交付时间 为团队成员设立明确而可达到的目标 着力解决项目问题
"项目管理就是将知识,技能,工具和技术运 项目管理准则 用于项目活动,以满足项目的要求. 项目整合管理 项目范围管理 项目时间管理 项目成本管理 项目人力资源管理 项目沟通管理 项目风险管理 项目采购管理 项目质量管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要:俗话说“三个臭皮匠胜过诸葛亮”,但实际工作情况往往是“三个诸葛亮不如一个臭皮匠”!软件开发是智力型团队,如何发挥每个人的作用,并将所有人的力量扭成一股强大的项目团队战斗力,这是项目团队模型要重点解决的问题。
大纲:1.传统项目团队模型2.实际项目团队模型3.MSF的项目团队模型4.实用团队模型5.什么才是合适的项目团队模型?正文:传统项目团队模型什么是项目团队模型?简单地说就是项目以怎样的方式组建团队,软件开发项目团队的传统团队模型如下:项目组在项目经理的带领下,各角色协调工作,为项目成功而努力!各角色的具体职责如下:项目经理:整体协调项目,编制计划及保证计划执行,推动项目成功。
系统分析员:分析系统需求,保证系统需求既满足客户要求,同时保证技术可行性;指导项目技术方案及系统架构设计。
软件设计师:细化系统设计。
程序员:编码实现设计。
测试工程师:测试系统,保证系统满足需求。
实施工程师:部署、调试系统,培训客户,协助客户推动系统上线运行。
配置管理员:对整个项目周期中的工作产品实施配置管理。
QA:质量保证工程师,保证开发过程按照既定的要求进行,保证工作产品符合既定的规范。
这个传统团队模型有两大特点:1.一个团队总有一个头(这也是我们的惯性思维),这个头就是项目经理。
2.假设各种专业的角色能协调工作,并能各自发挥所长。
我们希望项目团队能有一个强大的头领,加上一班专业人才,共同为项目成功而努力。
但实际情况有这么理想吗?项目经理会埋怨手下能力不够、不主动报告工作、不主动承担责任......而项目组成员会埋怨项目经理不够强,只会叫他干活,不授权,更加不会传授知识......实际项目团队模型我们实际项目的团队结构,往往是这样的:实际情况与理想的传统模型比较,有以下重大差异:1.项目经理身兼多职。
很多项目往往没有专职的系统分析员和软件设计师,项目经理兼任需求分析与软件设计的工作,甚至还需要负责编码的工作。
图中系统分析员、软件设计师这两个角色都是虚线框,意思就是表示这两个角色往往只是虚位,难以落实具体的专职的人员。
项目经理要做的事情太多了,往往没有办法专注项目管理,项目计划相关的文档能免则免,项目设计文档能少则少。
2.测试工程师、实施工程师低人一等。
很多公司公司的测试工程师、实施工程师会“低人一等”,开发人员有天生的优越感,而项目经理往往是由开发人员升任的,项目经理会有意无意地将测试工程师、实施工程师摆低一级。
各角色如果不能平等的工作,项目团队战斗力自然大受影响。
造成这种不平等的原因主要有两个:一就是开发人员的天生优越感,二就是整体来说我们的测试工程师、实施工程师水平确实还不够在我们公司其实也有这样的“不平等”情况,我花了很多时间营造“平等”的氛围,我的主要办法有:1)通过各种途径不断强调项目团队各专业人才的重要性。
2)想尽办法提高测试工程师与实施工程师的水平。
3.配置管理员、QA再低人一等,甚至可有可无。
图中这两种角色是灰色的,这两者可能是整个项目团队中最“惨淡”的角色了!好一点的公司都会有配置管理员,但往往被当作文员来看待,而有些公司甚至没有专职的配置管理员,项目经理甚至没有想到要配置管理这回事。
QA是一个四面不讨好,到处惹人非议的角色,可以说是项目组中最“差”的职位了。
造成这局面原因也主要有两个:一就是大家的习惯性思维认为这两个职位就是最不重要的,二就是我们的配置管理员、QA的水平还不够的问题。
对于配置管理工作,其实实质就是项目生命周期中各种工作产品的管理工作,我认为项目经理应该发挥更大的作用,而我们的配置管理员应该嵌入到项目的具体中去完成工作,而不要只抱着配置管理的大道理来工作。
QA确实是最痛苦的职位,优秀的QA需要有资深的项目经验,但有资深项目经验的人大都不愿意做QA,这是多么矛盾和痛苦啊!简单地说,实际的项目团队结构有以下严重问题:1.团队的头不能专职项目管理。
2.项目团队中各专业人才要么缺失、要么严重不平等。
MSF的项目团队模型MSF,全称是Microsoft Solution Framework,微软解决方案框架,是微软进行研发活动的方法论。
MSF的团队模型非常特别,它没有团队的头领:此图来自MSF的官方资料微软的团队是没有项目经理的,由6类角色组成,分别是产品经理(Product Management)、程序经理(Program Management)、开发(Development)、测试(Test)、发布管理(Release Management)、用户体验(User Experience)。
各类角色负责的职责如下:该模型的几个重要特点:1.没有所谓的项目经理。
程序经理这个角色可以说是最接近项目经理的了,他需要编制计划及跟踪计划执行,但在行政级别上,他不是大家的头,大家都是平等的,大家只是处在不同专业的角度来负责工作。
2.强调项目团队是由各专家组成的。
软件开发活动是高强度高挑战的智力活动,我们需要由各类专家共同负责协调工作,每位专家都是同等重要的。
3.用户体验是我们常常忽略的部分。
用户体验简单地说就是用户使用软件时的感觉,软件的颜色、布局、文字、行为等等会直接影响用户使用软件的满意度。
目前我们国内的项目组,往往没有用户体验设计环节,也没有专职的用户体验设计师。
我第一次学习MSF团队模型时让我很震动,该模型体现了以人为本的开发模式,让团队中的每个人都极受鼓舞,但该模型在实际工作中很难完全应用,主要原因如下:1.各专业人才水平参差不齐。
我的个人感觉国内以上六类角色的水平由高到低排列,大致这样:开发、程序经理、产品管理、测试、发布管理、用户体验,而用户体验基本是空白。
各专业人才能力不相当,就无法组成“无头领”的团队,充分发挥各种角色的作用。
2.各专业人才水平全部没达到要求。
哪怕是水平最高的开发角色,我们的平均水平跟微软的相比还是相差太远,那就更加不需要提其他角色了。
3.团队协助能力差。
我们的团队基本不会“team work”,我们从小到大的教育就基本没有“team work”的教育。
MSF常常也被人以“太理想化”质疑,MSF所描述的世界只是软件开发的乌托邦而已。
难道我们的现实情况就决定了我们的项目团队水平吗?我们没有办法建立一种实用的项目团队模型,让我们的项目团队能持续进步吗?实用团队模型我带领过很多团队,其中不少是带领应届生或者是工作经验还不多的工程师,团队中每个人的能力如果还不能塑造好,确实无法让团队高效运作。
而项目初期我做的很多事情,都是通过项目具体工作来训练大家、提高每个人水平的事情。
我们的计算机相关教育并没有训练出合格的各类专业人才,但我们这般计算机从业者都是充满激情和追求进步的,基于这样的现状,我觉得应该有合适的团队模型能让我们的项目团队自学习,然后逐步发挥各专业人才的作用。
我们光抱怨我们的教育制度是没有用的,我们需要实用的团队模型来解决当前的实际问题。
我在实际项目中的项目团队模型,通常是这样的:角色和人并一定是一一对应的,一个人可以戴多个角色的帽子,一种角色也可能由多个人担当。
上述模型有8种角色:项目经理、产品经理、软件设计师、用户体验设计师、测试工程师、实施工程师、配置管理员、QA。
前面六种角色分别与MSF的程序经理、产品经理、开发、用户体验、测试、发布管理角色类似。
我基本上是很认可MSF的项目管理思想的,但为了适应实际情况,我做了一些必要的调整。
1.让综合能力比较强的人担当项目经理。
这个人不一定非常强,但只要他是项目组所有人中综合能力最强的人就可以了。
项目经理除了领导项目团队,他需要更关注项目成员的成长。
项目经理进行相关决策的时候,应该充分发挥大家的参与性。
2.各角色是同等重要的。
无论是测试工程师、实施工程师、配置管理还是QA,他们都和开发人员是平等的。
哪怕是项目经理也不是高高在上的,项目经理只是比大家稍微高级别一点,之所以这样也是因为各角色的水平还不是很够,我们需要一个项目带领人。
3.持续总结与进步。
犯错不可怕,只需要能不断学习不断总结不断进步就可以了。
整个项目小组是学习型成长型的团队,要人人勇于承担责任,不怕犯错,遇到问题一起来总结进步!4.强调用户体验的重要性。
用户体验其实是很重要的工作,但往往被我们忽视,而现实情况是我们基本没有用户体验方面的高校教育,各公司在这方面的基础也比较薄弱。
我在实际工作中,会把用户体验的责任落实到实施工程师与测试工程师头上,要求他们多从客户的角度来思考软件应该如何设计。
另一方面,我会要求项目组成员或者我自己亲自编写出用户体验设计文档,让整个项目小组来评审。
希望通过这系列的工作,培养出公司自己的用户体验设计师。
什么才是合适的项目团队模型?其实没有固定的标准,各种项目管理理论都会有它自己的见解。
无论是传统的团队模型,还是MSF的团队模型,各种理论都会基于某些假设,我们实际工作中应用这些知识时,应充分认识当前我们的水平和存在的问题,针对性地调整模型将其转化为合适的情况,并在实际工作中持续改善它。
从我的经验看来,以下几点是很重要的:1.项目中的每个人尽管水平和能力不一致,但应该都被平等的对待,所有人对项目同等重要。
2.水平和能力较高的人,应该承担更多责任,并且有责任推动项目组人员提高水平。
3.“学习、总结、进步”,是每个项目团队应该具备的基本特点。
4.项目各角色的划分其实是灵活的,但项目所有人员的整体能力和水平,应该能覆盖实用项目团队模型的8种角色。
如果缺失某种角色,或者某种角色的水平较低,项目组则应该有计划地去增强这部分的水平。
5.项目组中所有人承担的工作负荷和责任应该大致均等。