以角色为基础的软件开发团队建设

角色抽象作为一种载体,可以很好地进行软件工程知识体系和企业知识地图的组织,满足企业知识体系持续改进的需要,因此角色团队组建和建设也可以作为软件工程实施方法之一。

软件开发项目立项时,重要工作之一就是开发团队的组建;在软件工程实施(把软件工程研究结果产生的标准或规范如ISO、RUP、MSF、XP具体应用到软件开发活动的程称为软件工程实施)的过程中,要解决的问题之一就是关于团队组建规则的定义;从企业发展的角度来看,软件开发团队建设是企业建设的重要任务。总之,软件开发团队的组建和建设是企业经营和发展的重要内容之一。

几乎所有的管理知识体系或规范都涉及到个体和团队建设问题,比如组织行为学[Stephen P.Robbins,1997]对个体和团队的行为进行了研究;项目管理[PMI,2000]中的计划、人力资源管理、项目集成管理、项目沟通管理等多个项目管理领域都涉及到团队建设和管理;在软件能力成熟度模型(CMM)[SEI,2000]的发展过程中,从个体软件过程和团队软件过程来研究软件的开发和管理。对个体和团队管理的研究是管理学的核心任务,涉及到的知识和学科纷繁、复杂。

然而,在管理的具体实施过程中,客观上管理环境的不同及主观上管理者的偏好,一般会在理论或规范基础上进行简化、删减、方向取向、分类归纳等工作,最后表现为各自独立的制度、规则、知识、评估方法、认证等多种独立体系,失去了其内在的联系,管理工作仍然复杂,而且不利于改进。

B端产品经理的能力模型与学习提升

B端产品经理面临的第一大挑战,是如何正确的分析诊断业务问题。 这也是最难的部分,产品设计知识对这部分工作基本没有帮助,如果想做好业务分析诊断,必须具备扎实 ...

查看详情 >

瑞理统一过程(RUP)[Rational,2001]通过对工作流分解的方式进行了软件开发过程及活动的分解和定义,并以角色为中心来进行知识、活动、规则、工具等的关联组织,从而把软件开发活动一体化、层次化、结构化,并保持其内在的有机联系,为个体和团队软件开发活动提供了很好的指导。

本文以“角色”这一概念为基础,提出了“以角色为基础的软件开发团队建设”的观点,阐述了其原理和方法,并对其优、缺点进行了分析,简要说明了该方法对“软件工程过程改进”的支持。

为简化叙述,文中“以角色为基础的软件开发团队”简称为“角色团队”,对应地,其它一般团队简称为“一般团队”;许多地方把文档、资源、信息、规则等统称为“知识体系”。

一、角色的含义

根据RUP[Rational,2001]的定义(如 “图 1 RUP中角色的含义”所示),角色的含义是:角色是抽象的职责定义,它定义的是所执行的一组活动和所拥有的一组资源。角色通常由一个人或作为团队相互协作的多个人来实现。

图 1 RUP中角色的含义

角色定义是一种管理上的要求,是“以活动为基础的管理”的表现形式,角色定义的依据是:问题、人、管理都可以分析为一系列活动的组合,这些活动有输入、输出,需要一定的环境和工具,需要活动承担者具有一定的能力,所有这些要素都是可以定义的,其联系的核心可以称为“角色”;管理本身的任务包括对问题域的角色分解、对人的角色分解、问题角色与人员角色的配对等。

因此,我们可以定义通用的角色模型如“图 2 通用角色模型”所示。

图 2 通用角色模型

通用角色模型的含义:

  • 角色是活动的承担者,角色与所需要的知识、工具、环境、输入、输出相关,是分析和定义结果的抽象,是一个容器;
  • 角色是构成知识体系的基本粒子,角色粒度大小和层次构成根据企业对角色团队掌握的成熟度灵活控制。

问题角色容纳了对问题域的认识和分析结果,人员角色满足预定义的能力和人格要求,并在掌握了相关知识和工具后获得认证;问题角色和人员角色关联后,人员角色利用知识、工具、输入文档等进行创造性活动,解决问题角色的需求;关联活动产生的结果经过总结、分析,进行经验总结反馈,从而可以改进问题角色和人员角色的定义和认证,为组织进步提供通道。

二、角色团队组建原理

在软件开发实践中涉及到的问题、人、管理都具有一个共同特点:复杂,人类解决复杂问题的方法离不开“分解”,分解结果被定义为一系列的“信息点”,由于这些“信息点”的粒度、层次、构成还是太复杂,因此又被进行分类、归纳、总结成为一系列的“知识体系”,这些“知识体系”各自有重点,同时又具有一定的相关性,有的发展为“学科”,有的发展为“规范”,知识体系在具体应用时又以知识、规则、制度、工具等各种方式来具体体现。

在这些分析、综合、归纳、合并的过程中,关联性并没有消失,但是变得难以掌握和理解——在学习的过程中很少有机会同时应用多种知识及其关联性,而在知识的具体应用过程中,由于其庞大、复杂,只有少数专家能够充分理解、综合应用,大部分人难见全貌、只见一斑,能够学习独立的学科,但是很难根据相关性进行综合应用。于是,又产生了一个新的问题:良好的知识体系得不到良好的应用,这就是常见的“理论与实践脱节”问题。

“角色”是一个抽象的概念,通过角色,能够有机地把知识体系以及实践结果联系在一起,而且是恰到好处——只有需要的知识体系和实践结果才和对应的角色进行关联,通过角色粒度的控制甚至可以达到这样一种效果:只要符合了角色定义要求,那么就能够顺利完成角色活动。另一方面,角色概念与“社会化分工”原理不谋而合,主要差别仅仅是粒度、层次上的差别而已。

人员角色并不代表个人,而是说明个人在某一具体业务活动中应该如何表现以及他们应该承担的责任。角色有一组互相联系的活动需要执行,这些活动密切相关,在功能上互相补充,所以最好由同一个人来执行。活动与知识体系密切相关:知识体系提供活动的输入和输出,并提供活动之间的通信机制。项目团队成员在履行角色职能的过程中,一个人可以担任许多不同的角色,一个角色也可以由多个人来承担。

三、角色团队组建方法

根据“角色团队组建原理”,角色团队组建就是面向问题、人进行角色的定义和关联,把相关知识有机地分布到角色上去,在具体团队组建时进行合理关联配对:让合适的人在合适的时间利用合适的工具完成合适的任务。

1. 从问题分析角色需求

根据相关知识体系、过去的定义、经验、角色定义原则,把解决问题的过程分解为子问题及子活动,控制子活动的粒度甚至粒度层次,并就每个子活动进行关联分析、环境分析、知识分析,最后定义为角色,称为问题解决角色,如“图 3 从问题分析角色需求”所示。

图 3 从问题分析角色需求

 2. 从人员分析角色认可

根据企业发展要求、角色定义原则、人的能力、兴趣等要素,对人进行分析和认可,控制知识体系的粒度、相关性等,最后定义为角色,称为人员认可角色,如“图 4 从人员分析角色认可”所示。

图 4 从人员分析角色认可

四、角色团队组建

在项目团队组建时,根据对问题域的分析结果,在成员角色表中选取对应的角色去承担问题角色任务,并从项目管理的角度来进行工作时间分配、费用预算等。如果企业内部没有所需要的角色,则可以考虑寻求外部资源。如“图 5 以角色为基础的团队组建”所示。

图 5 以角色为基础的团队组建

五、角色团队组建与建设过程

角色团队组建是发生在项目立项时的工作,而角色团队建设是在企业经营的整个生命周期内都要进行的,建设结果是角色团队组建的基础。建设是持续性的,组建是临时性的,建设为组建提供基础,组建后的项目团队的实施结果为建设提供依据,整个过程如“图 6 角色团队组建与建设过程”所示。

图 6 角色团队组建与建设过程

角色团队建设要完成的工作有:

  • 通用问题域角色定义:定义企业开发领域的通用问题,根据对通用问题的解决“从问题分析角色”工作,定义问题域角色体系;
  • 通用人员角色定义:根据“问题域角色体系”,对人进行分析、定义和认证,建立关于“人员角色体系”;对某些超出问题域角色体系的人的角色也进行定义,选择标准可以根据企业的发展方向进行选择;
  • 问题域角色与人员角色映射规则:为了适应企业业务的变化和发展、满足管理要求,问题域角色与人员角色不一定要一一对应,甚至粒度、层次也可以不一样,所以要建立映射规则为以后的工作安排提供指导。

角色团队组建时要完成的工作有:

  • 具体问题域角色定义:以“问题域角色体系”为基础,分析项目所面临的问题,定义“项目角色体系”;
  • 具体人员角色定义:对照“项目角色体系”和“人员角色体系”,根据映射规则,进行配合、关联、调整,完成项目团队的组建和任务计划,进行项目实施;
  • 角色体系改进:在项目实施的任何时刻,如果有超出“问题域角色体系”的角色产生,可以根据需要补充到“问题域角色体系”中,对人员角色体系的变化也可以采取同样方法处理。

在具体的角色团队建设过程中,实际上可以保留多个层次的角色体系,主要原则就是适应企业的经营要求和发展要求,其它相关内容如取舍、粒度控制、层次控制、结构控制、管理、认证等原则和方法本文不再赘述,部分内容可参考RUP。

  • 角色团队分析
  • 一般团队面临的问题和原因

在过去的实际管理过程中,一般团队存在很多问题,包括:

  • 结构简单:过于简单化,“开发团队”等于“工程师集合”,其相关性控制、团队配合等全部依赖于领导者的直觉或感觉;尽管不会完全错误,但是不够精细,属于“粗放”管理范畴;
  • 管理困难:缺乏层次级别,几乎都处于同一个层次上,令难行,禁难止;
  • 职责不清:针对工作内容,一方面缺乏规范,另一方面范围模糊,因此导致职责不清楚,工作目标模糊;
  • 资源浪费:由于组织和管理不力,软件开发效率低、成功率低,并期望通过提高个体素质来提高效率或成功率,片面追求文凭,本科不行用硕士,硕士不行用博士,等等,导致资源浪费,经营成本高;
  • 发展缓慢:团队的进步没有明确的计划和方向,团队的进步依赖于个体的随意发展,因此团队的建设变成了艰难地培养“全才”,很难培养“专才”;企业发展不明确,员工发展也不明确。

导致上述问题存在的根本原因是什么?我们认为,主要的原因有:

  • 对问题的认识不充分:没有对问题域进行定义、分析、内容组织,或者比较薄弱,仅仅从比较高层的软件开发的“需求、分析、设计、开发”出发来进行开发团队的组织,缺乏“具体问题具体分析环节”;
  • 对人的认识不充分:对个体的认识依赖于管理者的直觉、感觉和经验,个体的发展依赖于自己的兴趣,把工作当成任务,过多依赖于文凭评价;
  • 对管理的认识不充分:过分依赖管理者的直觉和感觉,安排任务时“大体上”知道存在的问题、什么人能解决什么问题,但是没有进行问题的分化、定义、具体化等细节工作,比较“粗放”;管理过于依赖于权力;
  • 过于平面化和大粒度:从问题认识、人的认识、管理认识三个方面都缺乏层次化、模块化和结构化,分工粒度过大,忽略问题的多样性、人的多样性、管理的多样性,决策一刀切;

最基本的原因是全面性问题,不够全面导致管理不到位:用不合适的方法去解决模糊的问题,如“图 7 一般团队的问题域覆盖程度”所示,应该解决的问题没有解决,解决问题的人又不一定是合适的。

图 7 一般团队的问题域覆盖程度

六、角色团队对问题的解决

角色团队通过“问题角色体系”的建立来促进对问题的分析,很大程度上解决了一般团队存在的“不够全面”问题,改善了对问题域的覆盖程度,如图“图 8 角色团队提高问题域覆盖程度”所示。通过“人员角色体系”的建立来进行培训、认证、甄别,促进团队建设,并为薪酬体系、绩效考核提供依据。角色团队组建后,管理定位更加容易:管理者有事可做,有章可循;被管理者明确管理定位和职责,依照角色关联的合作更加顺畅。

图 8 角色团队提高问题域覆盖程度

更重要的是,角色团队的组建和建设过程,就是企业知识体系的建设过程,角色体系也就是知识体系,角色体系的改进就是知识体系的挖掘和进步,是学习性组织的良好选择。

七、角色团队的缺点

角色团队的建立和组建,其本身就是一项复杂的管理活动,需要有力的资源支持;角色团队的建设是一个持续性发展的过程,不是一蹴而就的,因此需要企业具有持续建设的需要和能力,也就不适合那些业务方向频繁变化、业务领域不明确的企业。

八、角色团队原理在软件工程实施中的作用

在目前软件工程实施中,“持续改进”无疑是最重要的思想;首先,改进就必须要有一个载体,这个载体必然是企业知识体系,因此也可以采用“角色团队”作为这一载体;其次,改进必须是持续的,也就意味着过去定义的知识体系能够在一定程度上重用。角色团队通过“角色”这一概念来进行知识体系的分解,通过粒度和层次的控制很容易达到高程度重用的目的,因此,角色团队原理可以在软件工程实施中作为实施载体来使用。

以角色团队为基础的企业知识体系还可以很方便地容纳软件工程规范,因而对软件工程的实施具有很高的支持性;通过“人员角色体系”的建立,可以达到对个体的针对性培训和学习引导,对团队的进步具有很好的引导作用。

由于角色粒度、层次控制的灵活性,角色团队的组建和建设可以从任何时候、任何规模开始逐步建设,非常灵活,满足企业逐步成熟的要求。

小结

软件开发是一项知识性活动、创造性活动,软件技术日新月异,软件应用领域复杂多变,所有的这些原因造成了软件开发管理的困难,导致了软件危机的产生。软件管理问题的解决,离不开对知识体系的依赖和对变化的适应。角色团队原理作为一个知识体系的载体以及对持续改进的充分支持,可以作为软件工程实施方法之一。

作为一家专注于互联网领域的公司,我们的主要业务是进行互联网平台开发、定制开发,以及全网推广和平台包装。我们的专业团队拥有丰富的经验和强大的技术实力,可以满足各类企业和个人的需求。
在软件开发方面,我们秉持着用户至上的理念,致力于打造出既实用又易用的软件产品。我们有一套成熟的软件开发流程,从需求调研到设计、开发、测试、上线,每一环节都严格把控,以确保软件的品质。我们的服务覆盖了从移动应用、网站开发、微信小程序、企业级软件等各类项目。
在全网营销推广方面,我们运用最新的SEO技术与社交媒体营销策略,结合内容营销和大数据分析,为企业和个人提供全方位的网络推广解决方案。我们的目标是帮助企业和个人在互联网世界中获得更大的影响力和更高的知名度。
我们的成功案例丰富多样,包括零一空间、驯龙世界、趣吧、公仔乐园、花生日记、店流宝、玩转派对、比亚熊、星潮宇宙、湘旺世界、轻流、LDS魔法熊、龙珠有点潮、兽神记、云乐个游、鳄血素、乐趣生活、云巢国际、淘金之旅、趣盒、星际公民等主流平台。这些平台的成功运营,都离不开我们专业的软件开发和全网营销推广支持。
同时,我们也为多家企业和个人的提供了全套的互联网+方案,帮助他们实现了线上业务的快速增长。无论是电商平台还是社交平台,无论是在线教育还是在线娱乐,我们都有丰富的经验和成功的案例。

如果您有任何软件开发需求可以与我们联系
公众号(智创有术)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI计算,为什么要用GPU?

今天这篇文章,我们继续来聊聊芯片。 在之前的文章里,小枣君说过,行业里通常会把半导体芯片分为数字芯片和模拟芯片。其中,数字芯片的市场规模占比较大,达到70%左右。 数字芯片,还可以进一步细分&#xff0…

LeetCode——栈

栈 特点&#xff1a; 先进后出&#xff0c;后进先出 适合&#xff1a; 相当于一个暂存的地方&#xff0c;方便回来找 特&#xff1a; 单调栈——需要找到左边或者右边第一个比当前位置数大或者小的数字 数据类型 LinkedList<T> stack new LinkedList<>(); ad…

ECharts配置个性化图表:圆环、立体柱状图

官网调试地址&#xff1a;调试 效果图&#xff1a; 配置&#xff1a; option {color: [#29BEFF, #A2DC00, #FFC400, #FF7F5C, #CA99FC],// 提示窗tooltip: {trigger: item,show: false},// 图例legend: {top: 5%,left: center,show: false},// 数据series: [{name: Access …

C++常用遍历算法---for_each、transform

C常用遍历算法—for_each、transform 1、for_each—遍历容器 1.1 内置数据类型 void print1(int num) {cout << "这个数字是&#xff1a;" << num << endl; }void test1() {vector<int> numList;for (int i 0; i < 10; i){numList.pu…

LM393典型应用Multisim仿真设计

一、LM393简介: LM393是由两个独立的、高精度电压比较器组成的IC。LM393失调电压低,最大为2.0mv。可以是单电源供电,也可以是双电源供电,供电电压范围比较宽,电源功耗比较低。 LM393主要应用于限幅器、简单的模数转换器、脉冲发生器、方波发生器、延时发生器、宽频…

微同城生活源码系统:专业搭建本地生活服务平台 附带完整的安装部署教程

随着移动互联网的普及&#xff0c;人们越来越依赖手机进行日常生活中的各种活动&#xff0c;包括购物、餐饮、娱乐等。而传统的本地生活服务平台往往存在着功能单一、用户体验差等问题&#xff0c;无法满足用户日益增长的需求。因此&#xff0c;开发一款功能强大、易用性强的本…

获取 Linux 系统中所有网络命名空间的路由表

获取 Linux 系统中所有网络命名空间的路由表 以下是一个获取 Linux 系统中所有网络命名空间的路由表的 Bash 脚本示例&#xff1a; #!/bin/bash# 获取当前系统中所有网络命名空间的列表 ns_list$(ip netns list | awk {print $1})# 循环遍历每个网络命名空间 for ns in $ns_l…

css文本溢出处理——单行、多行

日常开发中&#xff0c;经常会遇到需要展示的文本过长&#xff0c;这种情况下&#xff0c;为了提高用户的使用体验&#xff0c;最常见的处理方式就是把溢出的文本显示成省略号。 处理文本的溢出的方式&#xff1a;1&#xff09;单行文本溢出&#xff1b; 2&#xff09;多行文本…

TikTok未来十年:平台发展的前瞻性思考

TikTok&#xff0c;作为全球短视频平台的领军者&#xff0c;已经在数字时代崭露头角。然而&#xff0c;随着技术的飞速发展和用户需求的变化&#xff0c;TikTok未来十年的发展前景充满了挑战和机遇。本文将深入探讨TikTok未来的发展方向&#xff0c;从技术、内容、社交和商业等…

SQL是什么?它有什么功能和特性?它值不值得我们去学习?我们该如何去学习呢?

SQL&#xff08;Structured Query Language&#xff09;是一种用于管理关系型数据库的标准化语言。它是一种专门用于查询、操作和管理数据库的语言&#xff0c;可以用于创建、修改和删除数据库中的数据表、索引和视图&#xff0c;以及执行数据查询、插入、更新和删除操作。 SQ…

OpenCV-Python(24):模板匹配

原理及介绍 模板匹配是一种常用的图像处理技术&#xff0c;它用于在一幅图像中寻找与给定模板最匹配的区域(在一副大图中搜寻查找模版图像位置的方法)。模板匹配的基本思想是将模板图像在目标图像上滑动&#xff0c;并计算它们的相似度&#xff0c;找到相似度最高的位置即为匹配…

2024款HarmonyOS教程 Next_HarmonyOS4鸿蒙OS最新入门实战全套教程

IT营大地老师2024款HarmonyOS视频教程重磅来袭&#xff01;视频 课件 源码等配套资料均可免费下载学习&#xff08;网盘下载地址&#xff1a;最新HarmonyOS系列教程下载地址-IT营大地老师--更新中&#xff09; 2024新出HarmonyOS Next_HarmonyOS4鸿蒙OS视频教程目录介绍&#…

LeetCode做题总结 15. 三数之和(未完)

不会做&#xff0c;参考了代码随想录和力扣官方题解&#xff0c;对此题进行整理。 代码思路 思想&#xff1a;利用双指针法&#xff0c;对数组从小到大排序。先固定一个数&#xff0c;找到其他两个。 &#xff08;1&#xff09;首先对数组从小到大排序。 &#xff08;2&…

2024史上最全的 iOS 各种测试工具集锦!

引言&#xff1a; 随着移动互联网的兴起&#xff0c;APP 测试的越来越被重视&#xff01;Android 系统因为自己的开源性&#xff0c;测试工具和测试方法比较广为流传&#xff0c;但是 iOS 系统的私密性&#xff0c;导致很多测试的执行都有点麻烦。 为了帮助大家更好的执行 iO…

Axure鲜花速递商城网站原型图,花店网站O2O本地生活电商平台

作品概况 页面数量&#xff1a;共 30 页 兼容软件&#xff1a;仅支持Axure RP 9/10&#xff0c;非程序软件无源代码 应用领域&#xff1a;鲜花网、花店网站、本地生活电商 作品特色 本作品为「鲜花购物商城」网站模板&#xff0c;高保真高交互&#xff0c;属于O2O本地生活电…

css设置图片左上角加文字

要在图片的左上角添加文字&#xff0c;可以使用CSS的position属性来定位文字元素&#xff0c;然后使用z-index属性来确保文字在图片上方显示。以下是示例CSS代码&#xff1a; css&#xff1a; .container {position: relative; }.text {position: absolute;top: 0;left: 0;z-…

香橙派--关于jammy-xfce-arm64.f12a43b3e629442a073a7236bf9166ce.tar.lz4的rootfs定制与镜像制作

使用 x64 的 Ubuntu22.04 电脑编译 Linux SDK&#xff0c;即 orangepi-build&#xff0c;支持在安装有 Ubuntu 22.04 的电脑上运行&#xff0c;所以下载 orangepi-build 前&#xff0c;请首先确保自己电脑已安装的 Ubuntu 版本是 Ubuntu22.04。查看电脑已安装的 Ubuntu 版本的命…

论文阅读--EFFICIENT OFFLINE POLICY OPTIMIZATION WITH A LEARNED MODEL

作者&#xff1a;Zichen Liu, Siyi Li, Wee Sun Lee, Shuicheng YAN, Zhongwen Xu 论文链接&#xff1a;Efficient Offline Policy Optimization with a Learned Model | OpenReview 发表时间&#xff1a; ICLR 2023年1月21日 代码链接&#xff1a;https://github.com/s…

什么是Maven ??? (以及关于依赖,中央仓库,国内源)

文章目录 什么是 Maven创建第一个 Maven 项目依赖管理Maven 的仓库Maven 如何设置国内源 什么是 Maven Maven &#xff1a;用于构建和管理任何基于java的项目的工具。**说白了就是管理 Java项目 的工具。**我们希望我们已经创建了一些东西&#xff0c;可以使Java开发人员的日常…

鸿蒙HarmonyOS- 弹框组件库

简介 今天介绍一个基于ArkUI框架开发的弹框组件库&#xff0c;该库基于ArkUI的弹框基础功能和自定义能力。针对通用的弹框业务场景&#xff0c;该库提供了丰富的组件弹窗功能。 包括确认输入弹窗、列表展示选择弹窗、自定义底部/顶部弹窗、自定义动画弹窗、自定义全屏弹窗、消息…