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

news2024/11/18 7:47:00

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

软件开发项目立项时,重要工作之一就是开发团队的组建;在软件工程实施(把软件工程研究结果产生的标准或规范如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.coloradmin.cn/o/1352150.html

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

相关文章

Spring Security 6.x 系列(13)—— 会话管理及源码分析(一)

一、会话概念 在实现会话管理之前,我们还是先来了解一下协议和会话的概念,连协议和会话都不知道是啥,还谈啥管理。 1.1 http 协议 因为我们现在的会话,基本上都是基于HTTP协议的,所以在讲解会话之前,我再…

openmediavault(OMV) (26)网络(1)ddns-go

简介 "ddns-go" 是一个动态域名解析(Dynamic DNS)工具,用于更新域名的IP地址。它可以自动检测你的公共IP地址,并将其更新到指定的域名解析服务商,以确保你的域名始终与最新的IP地址相匹配。 安装 hub.docker.com上下载ddns-go镜像 配置compose文件 --- versio…

使用 Process Explorer 和 Windbg 排查软件线程堵塞案例分享

目录 1、问题说明 2、线程堵塞的可能原因分析 3、使用Windbg和Process Explorer确定线程中发生了死循环 4、根据Windbg中显示的函数调用堆栈去查看源码,找到问题 4.1、在Windbg定位发生死循环的函数的方法 4.2、在Windbg中查看变量的值去辅助分析 4.3、是循环…

ModStartCMS v7.9.0 内容推荐支持,用户授权升级

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…

CMake入门教程【基础篇】HelloCMake

文章目录 概述核心实现代码示例使用技巧注意事项 总结 概述 CMake是一个强大的跨平台构建系统,广泛用于C和C项目。它使用简单的配置文件来生成标准的构建文件,从而使得构建过程跨平台且易于管理。本教程将通过一个“Hello World”示例(命名为…

必看 | 如何用「八爪鱼RPA」搬迁旧帮助中心站点到「HelpLook」?

对于工具类产品而言,帮助中心的搭建是非常重要的:一个好用的帮助中心,不仅可以帮助用户快速找到所需内容,提升用户的满意度;还可以减轻客服人员的压力,为公司节约大量的人力资源。 以八爪鱼采集器的帮助中心…

【Leetcode】466. 统计重复个数

文章目录 题目思路代码 题目 466. 统计重复个数 思路 题目要求找出一个最大整数 m,使得经过 n2 个字符串 s2 组成的字符串能够被经过 n1 个字符串 s1 组成的字符串完全包含的次数。使用动态规划来记录每个位置匹配的情况,并通过循环节的分析来计算最…

安全数据交换系统:有效提升网间文件交换能力

各级政府部门和金融、能源、电力这些行业,以及一些大中型企业组织,为了保护内部的重要数据不外泄,普遍都采用了多网络并行的方式,也是做了网络隔离划分,不同的网络拥有不同的密级以及人员权限。然后再通过安全数据交换…

C++Qt6 哈夫曼编码求解 数据结构课程设计 | JorbanS

一、 问题描述 在进行程序设计时,通常给每一个字符标记一个单独的代码来表示一组字符,即编码。在进行二进制编码时,假设所有的代码都等长,那么表示 n 个不同的字符需要 位,称为等长编码。如果每个字符的使用频率相等&…

系列七、Ribbon

一、Ribbon 1.1、概述 Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具,是Netflix发布的一款开源项目,其主要功能是提供客户端的软件负载均衡算法和服务调用,Ribbon客户端组件提供一系列完善的配置项,例如&#xff1a…

免费证书Let’s Encrypt

免费SSL证书是一种用于保护网站数据传输安全的加密技术。它能够确保用户与网站之间的信息传输是加密的,防止被黑客窃取或篡改。随着网络安全意识的提高,越来越多的网站开始使用SSL证书来保护用户的隐私和数据安全。 在过去,SSL证书需要购买才…

OpenAI官方发布ChatGPT 提示词指南,六大策略让你玩转大语言模型!

OpenAI前段时间官方放出了自己的提示工程指南,从大模型小白到开发者,都可以从中消化出不少营养。看看全世界最懂大模型的人,是怎么写提示词的。官方给出了6 个大提示策略: 1、清晰的指令: 告诉AI你具体想要什么。比如…

ElasticSearch的DSL查询语法解析

Elasticsearch提供了基于ISON的DSL (Domain Specific Lanquage)来定义查询。 目录 一、常见查询类型 二、DSLQuery基本语法 三、全文检索查询 3.1 match查询:会对用户输入内容分词,常用于搜索框搜索 ,语法: 3.2 multi match…

RK3568 学习笔记 : 解决 linux_sdk 编译 python 版本报错问题

前言 最近买了 【正点原子】 的 RK3568 开发板,下载了 开发板的资料,包括 Linux SDK,这个 Linux SDK 占用的空间比较大,扩展了一下 VM 虚拟机 ubuntu 20.04 的硬盘空间,编译才正常通过。 编译 RK3568 Linux SDK 时&am…

STM32存储左右互搏 SPI总线读写FRAM MB85RS2M

STM32存储左右互搏 SPI总线读写FRAM MB85RS2M 在中低容量存储领域,除了FLASH的使用,,还有铁电存储器FRAM的使用,相对于FLASH,FRAM写操作时不需要预擦除,所以执行写操作时可以达到更高的速度,其…

Postgresql源码(119)PL/pgSQL中ExprContext的生命周期

前言 在PL/pgSQL语言中,执行任何SQL都需要通过SPI调用SQL层解析执行,例如在SQL层执行表达式的入口: static bool exec_eval_simple_expr(PLpgSQL_execstate *estate,PLpgSQL_expr *expr,Datum *result,bool *isNull,Oid *rettype,int32 *re…

RK3568驱动指南|第九篇 设备模型-第95章 创建属性文件并实现读写功能实验1

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

《PySpark大数据分析实战》-23.Pandas介绍DataFrame介绍

📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP…

STM32H5XX和STM32H7XX选型对比

文章目录 STM32H563/H573STM32H743/753对比内核不同H5独有安全管理器H7的外设资源更丰富 STM32H563/H573 STM32H563和STM32H573微控制器扩展了STM32高性能产品组合。这两款微控制器具有增强的性能和安全性、更高的能效和更多的片内外设。 STM32H563/573产品系列提供1至2 MB的…

ChatGPT 4.0真的值得花钱买入吗?

性能提升: ChatGPT 4.0的推出不仅意味着更先进的技术,还代表着更强大的性能。相较于3.5,4.0在处理任务时更为高效,响应更迅速。 更智能的理解: 随着版本的升级,ChatGPT 4.0对语境的理解能力得到了进一步的…