软件工程教材-?MSF基础模型

MSF基础模型

课程介绍

课程简介\r\n本章介绍了MSF的小组模型和过程模型\r\nMSF小组模型描述了微软为了获得项目成功,构建人员和活动的方法。本章介绍了MSF小组模型的目标、原则、角色簇、关键概念等\r\n对于MSF过程模型,本章介绍了概念、特点和原则等\r\n课程目的\r\n通过学习,理解MSF小组模型和过程模型的概念,原则等,掌握在实际应用中的特点

课程内容

MSF小组模型\r\nMSF过程模型\r\n本章小结\r\n问题和讨论

5.1  MSF小组模型

传统项目小组\r\n自上而下、等级森严\r\nMSF小组模型\r\n小型的、多学科小组\r\n小组成员共同负责项目\r\n小组成员共享一个公共的项目远景\r\n人人愿意学习项目所需的新知识新技能\r\n没有单一的领导,小组成员的关系是平等的\r\nMSF小组模型实质,是为开发软件的人力需求提供\r\n 解决方案模型

5.1.1  小组成功的六个目标

客户满意\r\n在项目的约束下交付解决方案\r\n按规格说明构造\r\n只能在标识和解决所有产品质量问题后批准发布\r\n提高用户工作效率\r\n平滑部署和连续运行

满足客户需求(不仅仅是预算和时间目标)\r\n多数使用“按时”、“按预算”度量成功\r\n它描述了细节,是双方的协议\r\n胸有成竹,实事求是\r\n对用户有看得见的好处\r\n表里一致、取信于民的形象工程

5.1.2  MSF小组模型

开发

测试

发布管理

用户体验

产品管理

程序管理

沟通

按项目约束交付解决方案

使客户满意

提高用户使用效率

平稳地部署,为日常运营作好准备

在确定并找到所有产品质量问题后,才批准发布

按规格说明书构建

5.1.2  MSF小组模型角色簇

5.1.3 小组模型依据的MSF基本原则

明确责任,共享职责\r\n为小组成员授权\r\n业务价值是重点\r\n共享项目远景\r\n保持灵活,期盼变化\r\n鼓励坦率的沟通

1. 明确责任,共享职责

明确的责任确保工作的完成,共享的职责保证团队的成功\r\n在小组中,每个角色完成自己的质量目标,对小组本身(或他所在的组织)负责\r\n鼓励小组成员对自己直接责任领域之外的事情提出建议和提供帮助,以发挥小组全体成员的知识、能力和经验\r\n所有小组成员共享项目的成功,或从不成功的项目接受教训

5.1.3 小组模型依据的MSF基本原则

2.  为小组成员授权

每个成员都有授权,并对自己的工作做出承诺,同其他成员建立信任 \r\n建立信任的一些方法\r\n向小组成员授权以便他们完成委派给他们的事项 \r\n准备好向其他人做出承诺\r\n明确定义所做出的承诺 \r\n投入合理的努力来履行承诺\r\n一旦承诺可能发生风险,则要诚实沟通

5.1.3 小组模型依据的MSF基本原则

3.  业务价值是重点

小组决策\r\n基于对客户业务的完全理解\r\n基于客户在项目交付物上的积极参与\r\n\r\n 产品管理(product management)角色在小组成员前扮演客户,通常是由客户组织的成员来担任。\r\n 发布管理(release management)角色显式地负责确保解决方案的平滑部署和运营。

5.1.3 小组模型依据的MSF基本原则

4.  共享项目远景

清晰地了解项目或过程的目的和目标非常重要\r\n(共享远景是MSF小组模型的基础之一)\r\n共享的远景把这些假定明朗化,确保所有的参与者在为完成同一个目的而工作\r\n当所有的参与者理解了共享远景,并为之工作时,他们将根据能力而被授权,调整决策,以实现远景所代表的更广阔的小组意图\r\n没有了一个共享远景,小组成员对目的会有不同的看法,小组将无法成为一个有机整体\r\n比如\r\n 中国足球怪现象……西班牙“皇马”足球队战绩

5.1.3 小组模型依据的MSF基本原则

5.  保持灵活,期盼变化

MSF承认事物在不断发生变化,不可能把IT解决方案交付项目隔离于这些变化\r\nMSF小组模型确保在整个项目中所有核心角色可用,以便他们为发生的变化做出决策、做出贡献\r\n当出现新的挑战时,MSF小组模型鼓励灵活地解决这些问题

5.1.3 小组模型依据的MSF基本原则

6.  鼓励坦率的沟通

MSF提倡一种坦率的、诚实的沟通方式,无论是在小组内部,还是与关键的干系人\r\n平等小组方式在关键决策中吸纳所有角色的意见\r\n坦率、诚实地讨论哪些工作做得很好,哪些工作需要改进,这恰恰是MSF寻求的学习环境的基础\r\n 通过坦率的沟通建立起信任,保留信息的情况就会减少\r\n即使是有需要保密的信息,也要向同事们解释清楚,这也是为项目的最高利益

5.1.3 小组模型依据的MSF基本原则

5.1.4  建组要注意的关键概念

平等小组(team of peers)\r\n以客户为中心意识(customer-focused mindset)\r\n产品意识(product mindset)\r\n零缺陷意识(zero-defect mindset)\r\n自愿学习(willingness to learn)\r\n有激情的小组是有效的

1.  平等小组

每个角色有同等价值\r\n为了分配工作和管理资源,每个角色需要一定形式上的内部组织层次\r\n\r\n\r\n 为了保证平等小组的成功,所有的角色必须要对产品质量负责,必须象客户一样要求自己,必须理解客户试图解决的业务问题。\r\n 每个小组成员专注于实现他们各自的目标。

5.1.4  建组要注意的关键概念

2.  以客户为中心意识

用户满意是任何小组最高优先级的事情\r\n ——整个开发过程都要以客户为中心,去了解和解决客户的业务问题\r\n怎样做到这一点?\r\n 方法1:看功能特性能否满足客户或用户的需求\r\n 方法2:让客户积极地参与设计,在整个开发过 程提供反馈

5.1.4  建组要注意的关键概念

3.  产品意识

“每一个人…有完全相同的工作。他们有完全相同工作描述,那就是交付产品。你的工作不是写代码,你的工作不是测试,你的工作不是写规格说明,你的工作是交付产品。这就是一个产品开发组要做事情。”\r\n“你的角色可以是一个开发人员或一个次要角色测试员。我并不是说它不重要,它确实不是不重要,但它对你的真正工作是次要的,你真正的工作是交付一个产品。”\r\n“当你早晨醒来,开始工作,你说:‘什么是重点—- —-是试图交付或试图写代码’,答案是,我试图交付。你不要试图写代码,你应试图不要写代码。”

—— Chris Peter

5.1.4  建组要注意的关键概念

4.  零缺陷意识

只是一个对质量的承诺。它意味着小组的目标是尽可能以最高质量完成他们的工作 \r\n它并不是指交付的代码没有缺陷,它的意思是产品符合或超过项目组织者设置的质量目标,该质量目标是在远景阶段被小组接受的\r\n\r\n 每个成员都从客户角度出发,在整个开发周期、在工作进行中一直关注产品的质量

5.1.4  建组要注意的关键概念

5. 自愿学习

自愿学习是小组成员承诺:通过收集或共享知识来不断地提高自己 \r\n微软把学习和知识共享作为个人考核的一个组成部分 \r\n\r\n 共享经验、共享教训、不断改进、持续成功!

5.1.4  建组要注意的关键概念

6.  有激情的小组是有效的

激情不强的小组带来两方面的恶果 \r\n成员状态不佳,导致质量低、数量少的输出\r\n同时他们倾向于在工作中缩小目标,不能正确评价自己工作对同事的影响 \r\n建立激情的方法\r\n澄清小组远景,建立小组标识,社交活动,外部交互,考虑个人目标,最大化每个人授权,庆祝成功

5.1.4  建组要注意的关键概念

5.1.5  成功小组的经验

小型的、多学科小组\r\n共同工作\r\n全员参加设计

1.  小型的、多学科小组

它有比大型的小组响应更快的能力 \r\n每个学科的成员具有特定的一组技能,贡献于产品不同方面的质量,最终构成整个解决方案的质量

5.1.5  成功小组的经验

2.  共同工作

“…单个地点的开发允许项目成员真正地在一起,经常性地交流意见。经常性和方便的沟通可以避免出现大的问题,在它恶化之前,就解决了它。”

——《微软的秘密》Michael A. Cusumano 和Richard W. Selby

5.1.5  成功小组的经验

3.  全员参加设计

每一个角色要参加产品规格说明的开发,因为每个角色代表着设计的特定方面,并且与个人的目标和小组的目标有关系。这样会形成一个集思广益的局面

5.1.5  成功小组的经验

5.1.6  角色的职能

沟通

按项目约束交付解决方案

使客户满意

提高用户使用效率

平稳地部署,为日常运营作好准备

在确定并找到所有产品质量问题后,才批准发布

按规格说明书构建

开发

测试

发布管理

用户体验

产品管理

程序管理

1. 产品管理角色簇

目标:使客户满意 \r\n ——满足客户和业务的需求\r\n功能域\r\n市场活动\r\n业务价值\r\n客户代言人\r\n产品计划

5.1.6  角色的职能

2.  程序管理角色簇

目标:按项目约束交付解决方案 \r\n ——确保在正确的时间交付正确的解决方案,确保充分了解出资人的期望,并在整个项目中管理好 \r\n功能域\r\n项目管理\r\n解决方案体系结构\r\n过程管理\r\n管理服务

5.1.6  角色的职能

3.  开发角色簇

目标:根据规格说明书构建解决方案 \r\n ——为了实现目标,构建的方案应满足客户的期望和在功能规格说明中表达的规格说明;必须遵守解决方案体系结构和设计 \r\n功能域\r\n技术咨询\r\n体系结构和方案设计\r\n应用程序开发\r\n基础架构开发

5.1.6  角色的职能

4.  测试角色簇

目标:确定并找到所有质量问题后,批准解决方案的发布\r\n——注意:是在发布产品之前,确保缺陷能够被标识,并做了说明(并非没有任何缺陷) \r\n功能域\r\n测试计划\r\n测试工程\r\n测试报告

5.1.6  角色的职能

5. 用户体验角色簇

目标:提高用户效率 \r\n功能域\r\n可访问性\r\n国际化:职责是在国际市场上改进解决方案的质量和使用性。它是由全球化和本地化过程组成。\r\n技术通信:专注于解决方案的文档支持系统的开发\r\n培训\r\n可用性:重点是确保解决方案能被特定用户使用,达到有效、高效和满意的高层次目标\r\n用户界面设计:包括设计用户准备与之交互的对象(和对这些对象采用的行动),以及界面中主要的屏幕

5.1.6  角色的职能

6.  发布管理角色簇

目标:稳定部署和日常运营  \r\n功能域\r\n基础架构\r\n支持\r\n运营\r\n商业发布管理

5.1.6  角色的职能

5.1.7  小组模型的伸缩

MSF小组模型提倡把大的组(通常是超过10人)分解成小型的、多学科功能小组\r\n此外,当满足一个特点的角色需要多个资源,可以采用职能小组(function team)\r\n\r\n超过10人?

1.  功能小组

程序管理

发布管理

产品管理

用户体验

开发

测试

领导团队

桌面 功能 团队

程序管理

用户体验

开发

测试

文件和打印 功能团队

程序管理

用户体验

开发

测试

消息传递 功能团队

程序管理

用户体验

开发

测试

5.1.7  小组模型的伸缩

2.  职能小组

职能小组是在一个角色中的小组\r\n 这是由于小组或项目太大,需要同一角色的多个人基于他们的职能组成若干小组\r\n职能小组通常有一个对内部的等级结构\r\n例如:\r\n 多个程序经理通过一个程序经理领导小组,来向整个开发团队的程序经理汇报。这样的结构也会出现在功能领域以及角色簇层次。重要的是要记住这种等级结构不能阻碍项目层次上的小组模型。角色的目标仍是相同的,对项目小组负责

5.1.7  小组模型的伸缩

3. 角色兼职

开发小组成员从不共享一个角色 \r\n不要把两个重要性有内在冲突的角色组合在一起

P   可以

U   不一定

N   不推荐

产品管理

程序管理

开发

测试

用户体验

发布管理

产品管理

程序管理

开发

测试

用户体验

发布管理

准则:

5.1.7  小组模型的伸缩

4.  MSF小组模型不是组织图

MSF小组模型描述了关键角色及其对项目小组的职责,但并没有从人员管理角度定义小组的管理结构\r\n领导职责通常是由所有角色共享,但是为了达到项目目标,需要一些变化,通过权威的决策达到更强层次的接受\r\n一旦问题被解决,小组又达成了共识,立即又回到共享的领导职责状态

5.1.7  小组模型的伸缩

5. 外部协调谁负责?

5.1.7  小组模型的伸缩

5.1.8  小结

合理的小组结构是成功的基础,实现这个模型和使用其底层原理可以使小组更加有效,从而获得成功

“即便你有熟练的、有动机的、勤奋的人员,错误的小组结构会削弱他们努力,而不是把他们推向成功。一个差的小组结构增加了开发时间,降低了质量,损害了士气,增加了返工,最终导致项目取消。”

——Steve McConnell

5.3  本章小结

本章介绍了MSF的小组模型。MSF小组模型由六个平等的角色簇组成:产品管理、程序管理、开发、测试、用户体验和发布管理\r\n本章介绍的另一个模型是MSF过程模型。MSF过程模型由构思、计划、开发、稳定和部署五个阶段构成

共同工作

5.1.5  成功小组的经验-共同工作

yw

虚拟小组

虽然同一地点工作是最主要的选择,但随着今天业务和技术的改进,并不妨碍建立成功的“虚拟”组。虚拟小组的成员通过电子手段来进行通信和协作。这种沟通可以跨越组织界限、空间和时间。\r\n\r\n 但这种形式很少重视沟通技能或小组的适应性。而这方面的忽略通常是造成许多项目失败的原因。所以,对选入虚拟小组的人员有一定要求。

5.1.5  成功小组的经验-虚拟小组

产品管理角色簇-市场活动

——市场活动是一个过程或方法,用于促进、销售和分发产品\r\n市场活动的主要功能域\r\n 驱动市场活动和公共关系信息,以影响目标客户\r\n 让解决方案高度与众不同,在竞争中凸现出来\r\n 对解决方案进行分销,以便目标客户容易得到\r\n 提供支持,以使客户在购买和使用解决方案时有积极的体验

5.1.6  角色的职能-功能域

产品管理角色簇-业务价值

——分析对该IT解决方案投资在财务和运营方面得到回报的简单预测度量\r\n业务价值的主要功能域\r\n  定义和维护项目的业务理由\r\n  定义和度量业务价值的实现

5.1.6  角色的职能-功能域

产品管理角色簇-客户代言人

——包含高层沟通和管理客户期望\r\n客户代言人的主要功能域\r\n 驱动一个共享的项目和解决方案的远景\r\n 管理客户期望和沟通

5.1.6  角色的职能-功能域

产品管理角色簇-产品计划

——产品计划为解决方案的多个版本表示需求和功能特性集\r\n产品计划的主要功能域\r\n  对客户和业务需求进行收集、分析和确定优先级\r\n  实施市场调研、市场需求、竞争情报/分析\r\n  确定业务度量和成功准则\r\n  标识多远景发布计划

5.1.6  角色的职能-功能域

程序管理角色簇-项目管理

——收集、确认小组所有进度,集成到项目主进度中,跟踪主进度并回报给小组和项目出资人\r\n项目管理的主要功能域\r\n 跟踪和管理预算;\r\n 管理项目主进度表;\r\n 驱动风险管理过程\r\n 促进小组内部的沟通和协商;\r\n 跟踪进展和管理项目状态报告\r\n 管理资源分配

5.1.6  角色的职能-功能域

程序管理角色簇-解决方案体系结构

——重点是确保指定的用户能使用该解决方案达到指定的目标,即有效、高效和满意\r\n解决方案体系结构的主要功能域\r\n 驱动整体解决方案设计;\r\n 管理功能规格说明\r\n 管理解决方案范围和关键折中决策\r\n\r\n体系结构的活动包括:创建解决方案概念、……

5.1.6  角色的职能-功能域

程序管理角色簇-过程保证

——确保项目小组采用合适的过程,以聚焦于满足项目的整体质量目标,特别强调排除缺陷源。\r\n过程保证的主要功能域\r\n 驱动过程质量保证;\r\n 定义和推荐过程改进\r\n过程保证的重点活动有:\r\n  定义符合项目设计的项目协议和过程\r\n  在有效实现项目过程方面提供建议和指导\r\n  确保过程的符合情况\r\n  实施里程碑审核\r\n  建议过程改进

5.1.6  角色的职能-功能域

程序管理角色簇-管理服务

——负责实现项目管理过程,向项目小组提供管理服务\r\n管理服务的主要功能域\r\n  实现项目管理过程,支持小组领导\r\n  提供一组管理服务,以支持小组高效工作

5.1.6  角色的职能-功能域

开发角色簇-技术咨询

——与MSF项目的应用软件开发相关的一组职责。致力于标准的定义,并在开发中遵循。\r\n技术咨询的主要功能域\r\n  作为小组的技术咨询;\r\n  评估和确认技术;\r\n  主动参与功能规格说明的创建和审核\r\n  为组织定义开发标准

5.1.6  角色的职能-功能域

开发角色簇-实现体系结构和设计

——与两方面有关:解决方案实现体系结构的定义,解决方案设计的开发\r\n实现体系结构和设计的主要功能域\r\n  通过提供解决方案相关的应用、数据、技术视图的细节,把企业体系结构映射到解决方案,从而实现体系结构\r\n  负责和实现解决方案的逻辑设计和物理设计\r\n\r\n 逻辑设计和物理设计需要了解相关技术,以及技术选择对解决方案设计的影响

5.1.6  角色的职能-功能域

开发角色簇-应用开发

——作为技术咨询,必须为高层设计提供输入,同时评估和确认技术,在开发过程的早期实施研究以减少风险\r\n应用开发的主要功能域\r\n  为功能特性编码以满足设计规格说明;\r\n  在开发中,实施代码审核,以共享知识和经验\r\n  在测试角色支持下,实施在测试计划中定义的单元测试\r\n\r\n在构思阶段,重点是从实现角度分析客户/用户的需求

5.1.6  角色的职能-功能域

开发角色簇-基础架构开发

——基础架构开发功能域的职责与MSF项目的解决方案的系统和软件基础架构开发有关:网络基础架构、C/S系统、支持组件以及操作系统等\r\n基础架构开发的主要功能域\r\n  开发满足功能规格说明的功能特性\r\n  在开发中,实施代码审核,以共享知识和经验\r\n  在测试角色支持下,实施在测试计划中定义的单元测试\r\n  开发自动部署的脚本\r\n  开发部署文档

5.1.6  角色的职能-功能域

测试角色簇-测试计划

——其重点职责是如何确保标识和说明产品中所有的质量问题\r\n测试计划的主要功能域\r\n  开发测试方法和计划\r\n  参与设立质量标准(quality bar)\r\n  开发测试规格说明

5.1.6  角色的职能-功能域

测试角色簇-测试工程

——实施在测试计划中定义的活动,以确保产品的所有缺陷得以标识和做出说明\r\n测试工程的主要功能域\r\n  开发和维护自动测试用例、工具和脚本\r\n  实施测试,以准确确定产品开发的状态\r\n  管理构造过程

5.1.6  角色的职能-功能域

测试角色簇-测试跟踪和报告

——其重点职责是明确地向项目小组说明解决方案现有哪些问题、哪些方面是正确的,以准确描绘开发的目前状态\r\n测试跟踪和报告的主要功能域\r\n  向小组提供与产品质量有关的数据\r\n  跟踪所有缺陷(bug),对有关问题进行沟通,以确保在产品发布前解决它们

5.1.6  角色的职能-功能域

用户体验角色簇-可访问性

——聚焦于确保解决方案能被残疾人访问,去冬克访问性概念和需求进入设计\r\n可访问性概念和需求必须在整个解决方案开发周期中考虑,应包括:\r\n  在每个功能特性的规格说明中有一小节来说明可访问性\r\n  把可访问性信息集成到解决方案帮助小节中\r\n  确保可访问性文档是完全的\r\n  确保可访问性文档以可访问的格式提供

5.1.6  角色的职能-功能域

用户体验角色簇-培训

——专注于提高用户绩效,通过向用户提供有效使用解决方案所需的技能和知识来实现\r\n培训大多会包含:\r\n对用户以及企业的目的和目标进行分析\r\n设立期望的技能级别的集合\r\n开发和实现一个培训计划\r\n为成功的实现,度量培训计划的有效性,修改培训计划使之更合理

5.1.6  角色的职能-功能域

发布管理角色簇-基础架构

—— 一组与运营基础架构相关的职责\r\n基础架构的主要功能域\r\n  企业基础架构规划\r\n  协调物理环境的使用和跨地理计划(数据中心、实验室、现场办公室)\r\n  为了一致的基础架构管理和标准,向小组提供策略和规程\r\n  向MSF小组提供基础架构服务(建造服务器,标准映像,安装软件)\r\n  为小组管理硬件/软件的采购\r\n  建造测试和临时环境,以准确映像生产环境

5.1.6  角色的职能-功能域

发布管理角色簇-支持

——重点是解决方案的构造和部署是可支持的\r\n支持的主要功能域\r\n  向IT用户提供基本的联络(liaison)和客户服务\r\n  通过管理与客户签署的服务水平协议(SLA,Service Level Agreement)确保满足承诺,支持业务\r\n  提供事故和问题的解决方法;向用户请求和已注册的事故做出快速响应\r\n  向开发和设计组提供反馈\r\n  开发失效切换和恢复规程

5.1.6  角色的职能-功能域

发布管理角色簇-运营

——重点是确保构建和部署解决方案是可运营的,并且与运营中的其它服务兼容\r\n运营的主要功能域\r\n  账号和系统设置控制;管理用户账号和权限\r\n  消息传递,数据库,电讯运营;网络运营\r\n  系统管理,批处理\r\n  防火墙管理;安装管理\r\n  应用服务\r\n  主机集成服务\r\n  目录服务运营

5.1.6  角色的职能-功能域

发布管理角色簇-商业发布

——商业发布管理后重点是让产品进入分销渠道\r\n商业发布的主要功能域\r\n  产品注册码;注册确认过程\r\n  许可管理\r\n  打包\r\n  管理分销渠道\r\n  打印和电子的出版物

5.1.6  角色的职能-功能域