以角色为基础的团队建设方法,全面解决软件开发管理问题
发表时间:2024-07-12 08:02:33
文章来源:炫佑科技
浏览次数:127
菏泽炫佑科技
以角色为基础的团队建设方法,全面解决软件开发管理问题
在软件开发过程中,开发和管理活动的分解会产生一系列的子活动,对子活动及其相关知识的抽象会产生角色——问题角色,对人的分析和抽象也会产生角色——人员角色。
问题角色与人员角色的有效关联就是团队的形成,问题角色与人员角色的重新定义与完善就是团队建设。按照角色来组织软件开发团队可以更全面地解决项目管理问题,团队建设也更容易实现持续改进的目标。
角色抽象作为载体,可以很好地组织软件工程知识体系与企业知识图谱,满足企业知识体系持续改进的需求,因此角色团队的组建与建设也可以作为软件工程实现手段之一。
当一个软件开发项目启动时,其中一项重要工作就是组建开发团队;在软件工程实施过程中(把软件工程研究成果如ISO、RUP、MSF、XP等生成的标准或规范应用到软件开发活动的过程称为软件工程实施),需要解决的问题之一就是团队组建规则的定义;从企业发展的角度看,软件开发团队组建是企业建设的一项重要工作。总之,软件开发团队的组建与建设是企业经营发展的重要内容之一。
几乎所有的管理知识体系或规范都涉及个体和团队建设问题。例如,组织行为学[P.,1997]研究个体和团队的行为;项目管理中的计划、人力资源管理、项目整合管理、项目沟通管理等项目管理领域[PMI,2000]都涉及团队建设与管理;在能力成熟度模型(CMM)[SEI,2000]的制定中,分别从个体软件过程和团队软件过程的角度研究软件开发与管理。个体和团队管理的研究是管理科学的核心任务,所涉及的知识和学科多样而复杂。
但在管理的具体实施过程中,由于管理环境的客观差异和管理者的主观偏好,管理工作普遍会在理论或规范的基础上进行简化、删除、方向定位、分类归纳,*终表现为独立的制度、规则、知识、考核方式、认证等多个独立的系统,失去了内在的联系,管理工作依然复杂化,不利于改进。
RUP[2001]通过分解工作流,对软件开发过程和活动进行分解和定义,并围绕角色来组织知识、活动、规则、工具等,从而使软件开发活动集成化、分层化、结构化,同时保持其内部的有机联系,为个人和团队的软件开发活动提供良好的指导作用。
本文以“角色”这一概念为基础,提出了“基于角色的软件开发团队建设”的观点,阐述了其原则和方法,分析了其优缺点,并简要说明了该方法对“软件工程过程改进”的支持。
为了简化描述,本文中将“基于角色的软件开发团队”简称为“角色团队”,相对应的,将其他一般团队称为“一般团队”;在很多地方,将文档、资源、信息、规则等统称为“知识系统”。
1.角色的含义
根据RUP[,2001]的定义(如图1 RUP中角色的含义所示),角色的含义是:角色是职责的抽象定义,它定义了所执行的一组活动和所拥有的一组资源。角色通常由一个人或作为一个团队共同工作的多个人来实现。
图1 RUP中角色的含义
角色定义是一种管理要求,是“活动型管理”的体现。角色定义的基础是,问题、人、管理都可以被分析为一系列活动的组合。这些活动有输入、有输出,需要一定的环境和工具,也需要活动承担者具备一定的能力。所有这些要素都可以被定义,而它们之间联系的核心可以称为“角色”。管理本身的任务包括问题域中的角色分解、人中的角色分解、问题角色与人员角色的配对。
因此,我们可以定义一个通用角色模型,如“图2通用角色模型”所示。
图 2 一般角色模型
通用角色模型的含义:
问题角色蕴含着对问题领域的理解与分析结果,人员角色满足预定义的能力与个性要求,掌握相关知识与工具后进行认证。问题角色与人员角色关联后,人员角色利用知识、工具、输入文档等开展创造性活动,解决该问题角色的需求。对关联活动结果进行总结分析,进行经验总结反馈,从而完善问题角色与人员角色的定义与认证,为组织进步提供通道。
2.角色团队组建原则
软件开发实践中涉及的问题、人、管理都有一个共同的特点:复杂性。人类解决复杂问题的方式离不开“分解”。分解的结果被定义为一系列的“信息点”。由于这些“信息点”的粒度、层次、组成还过于复杂,所以它们被分类、概括、归纳为一系列的“知识体系”。这些“知识体系”各有侧重软件开发,同时又具有一定的关联性。有的发展成为“学科”,有的发展成为“规范”。知识体系在具体应用时,则表现为知识、规则、制度、工具等各种形式。
在分析、综合、归纳、融合的过程中,关联性并没有消失,只是变得难以掌握和理解。在学习过程中,同时运用多种知识及其关联性的机会很少。在知识的具体运用中,由于知识的庞大性和复杂性,只有少数专家才能充分理解并综合运用,大多数人只能看到其中的一小部分,可以学习独立的学科,但很难根据关联性综合运用。于是,一个新的问题就出现了:很好的知识体系不能得到很好的运用,这就是“理论脱节”的通病。
“角色”是一个抽象的概念以角色为基础的团队建设方法,全面解决软件开发管理问题,通过角色,知识体系与实践成果可以有机地联系在一起,恰到好处——只有需要的知识体系与实践成果才与相应的角色相关联。通过角色粒度的控制,甚至可以达到这样的效果:只要满足角色定义要求,角色活动就能顺利完成。另一方面,角色的概念与“社会分工”的原则不谋而合,主要的区别仅在于粒度和层次的不同。
人员角色并不代表个人,而是描述个人在具体业务活动中应该如何表现,以及应该承担的职责。一个角色有一组相互关联的活动要执行,这些活动紧密相关,功能互补,因此*好由同一个人来担任。活动与知识系统紧密相关:知识系统为活动提供输入和输出,提供活动之间的沟通机制。在履行角色职能的过程中,项目团队成员可以扮演许多不同的角色,一个角色也可以由多人担任。
3.角色团队组建方法
按照“角色组队原则”,角色组队就是将角色与问题、人进行定义和关联,将相关知识有机地分配给角色,并在组建特定团队时进行合理的关联和配对:让合适的人在合适的时间使用合适的工具完成合适的任务。
1.从问题分析角色需求
根据相关的知识体系、过去的定义、经验以及角色定义原则,将问题解决过程分解为子问题和子活动,控制子活动的粒度乃至粒度级别,并对每个子活动进行关联分析、环境分析和知识分析,*终定义为一个角色,称为问题解决角色,如图3 从问题分析角色需求所示。
图3 从问题分析角色需求
2. 分析人员的角色认知
根据企业发展需求、角色定义原则、人的能力、兴趣等因素,对人进行分析和识别,控制知识体系的粒度和关联性,*终定义为角色,称为人员识别角色,如图4 人员分析后的角色识别所示。
图4 人员角色认知分析
4. 角色团队组建
在组建项目团队时,根据问题域分析结果,在成员角色表中选取相应角色承担问题角色任务,并从项目管理的角度分配工作时间和预算。若企业内部没有所需角色,可考虑外部资源。如图“图5:基于角色的团队组建”所示。
图 5 基于角色的团队组建
5.角色团队形成与建设流程
角色团队组建是项目立项时就发生的工作,而角色团队建设则贯穿于企业的整个生命周期,建设成果是角色团队组建的基础。建设是持续的,而组建是暂时的。建设为组建提供了基础,组建的项目团队的实施成果为建设提供了基础。整个过程见“图6 角色团队组建与建设过程”。
图6 角色团队形成与建设流程
角色团队建设需完成的任务包括:
组建角色团队需要完成的任务有:
在角色团队建设的具体过程中,其实可以保留多个层级的角色体系,主要原则是适应企业的业务要求和发展要求,其他相关内容如权衡、粒度控制、层级控制、结构控制、管理、认证等原则和方法本文不再赘述,部分内容可以参考RUP。
在过去的实际管理过程中,一般团队存在很多问题,主要包括:
造成上述问题的根本原因是什么?我们认为主要原因有:
*根本的原因还是全面性的问题,全面性不足导致管理不到位:用不合适的方法解决模糊的问题,如“图7 一般团队的问题域覆盖率”所示,该解决的问题没有解决,解决问题的人也未必合适。
图7 一般团队的问题域覆盖率
6. 角色团队解决问题
角色团队通过建立“问题角色体系”来促进问题分析,很大程度上解决了一般团队“不够全面”的问题,提升了问题域覆盖率,如图8“角色团队提升问题域覆盖率”。通过建立“人员角色体系”,进行培训、认证、筛选,促进团队建设,为薪酬体系、绩效考核提供依据。角色团队形成后,管理定位更加容易:管理者有事可做、有规矩可循;被管理者有明确的管理定位和职责,基于角色关联的合作更加顺畅。
图 8 角色团队提高问题域覆盖率
更重要的是,角色团队的组建和建设过程,就是企业知识体系的构建过程,角色体系也是知识体系,角色体系的完善,就是知识体系的探索和进步,这对于学习型组织来说,是一个不错的选择。
7.角色团队的缺点
角色团队的成立与组建本身就是一个复杂的管理活动,需要强大的资源支撑;角色团队的建设是一个持续发展的过程,并非一蹴而就,因此公司需要有持续建设的需求与能力,不适合业务方向经常变化、业务领域不明确的公司。
8.团队原则在软件工程实施中的作用
在当前的软件工程实施中,“持续改进”无疑是*重要的思想;首先,改进必须有一个载体,这个载体一定是企业知识体系,因此“角色团队”也可以作为这个载体;其次,改进必须是持续的,这意味着过去定义的知识体系可以在一定程度上被重用。角色团队通过“角色”的概念将知识体系进行分解,通过粒度和层次控制很容易达到高度的重用。因此,在软件工程实施中可以采用角色团队原则作为实施载体。
基于角色团队的企业知识体系也能够轻易容纳软件工程规范,因而对软件工程的实施具有很强的支持作用;通过建立“人员角色体系”,可以对个人进行针对性的培训和学习指导,对团队的进步有很好的引导作用。
由于角色粒度和层级控制的灵活性,角色团队的组建和建设可以从任意时间、任意规模逐步建立,灵活性强,满足企业逐步成熟的要求。
概括
软件开发是一项知识型、创造性的活动,软件技术日新月异,软件应用领域复杂多变,这些原因都给软件开发管理带来了困难,并引发了软件危机。软件管理问题的解决离不开对知识体系的依赖和对变化的适应。角色团队原则作为知识体系的载体和对持续改进的全力支持,可以作为软件工程实施方法之一。
参考
[1] P.组织行为学(第7版),1997年,中国人民大学出版社;
[2] PMI,《身体指南》,2000 年;
[3] SEI,CMMI,2000年;
[4],2000 年。
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等