以角色為基礎(chǔ)的軟件開發(fā)團(tuán)隊(duì)建設(shè)(以角色為基礎(chǔ)的軟件開發(fā)團(tuán)隊(duì)建設(shè)方案)
軟件開發(fā)管理的重要任務(wù)之一就是團(tuán)隊(duì)的組建。本文提出了一種以角色為基礎(chǔ)的團(tuán)隊(duì)建設(shè)方法,以有效提高團(tuán)隊(duì)建設(shè)能力。在軟件開發(fā)過程中,對開發(fā)和管理活動(dòng)進(jìn)行分解會(huì)產(chǎn)生一系列的子活動(dòng),對子活動(dòng)及其相關(guān)知識的抽象產(chǎn)生角色——問題角色;對人的分析和抽象也產(chǎn)生角色——人員角色。
在軟件開發(fā)過程中,對開發(fā)和管理活動(dòng)進(jìn)行分解會(huì)產(chǎn)生一系列的子活動(dòng),對子活動(dòng)及其相關(guān)知識的抽象產(chǎn)生角色——問題角色;對人的分析和抽象也產(chǎn)生角色——人員角色。
問題角色與人員角色的有效關(guān)聯(lián)也就是團(tuán)隊(duì)的組建,問題角色與人員角色的再定義和改進(jìn)也就是團(tuán)隊(duì)的建設(shè)。以角色為基礎(chǔ)來進(jìn)行軟件開發(fā)團(tuán)隊(duì)的組織,能夠比較全面地解決項(xiàng)目管理問題,而且團(tuán)隊(duì)建設(shè)很容易達(dá)到可持續(xù)改進(jìn)的目的。
角色抽象作為一種載體,可以很好地進(jìn)行軟件工程知識體系和企業(yè)知識地圖的組織,滿足企業(yè)知識體系持續(xù)改進(jìn)的需要,因此角色團(tuán)隊(duì)組建和建設(shè)也可以作為軟件工程實(shí)施方法之一。
軟件開發(fā)項(xiàng)目立項(xiàng)時(shí),重要工作之一就是開發(fā)團(tuán)隊(duì)的組建;在軟件工程實(shí)施(把軟件工程研究結(jié)果產(chǎn)生的標(biāo)準(zhǔn)或規(guī)范如ISO、RUP、MSF、XP具體應(yīng)用到軟件開發(fā)活動(dòng)的程稱為軟件工程實(shí)施)的過程中,要解決的問題之一就是關(guān)于團(tuán)隊(duì)組建規(guī)則的定義;從企業(yè)發(fā)展的角度來看,軟件開發(fā)團(tuán)隊(duì)建設(shè)是企業(yè)建設(shè)的重要任務(wù)。總之,軟件開發(fā)團(tuán)隊(duì)的組建和建設(shè)是企業(yè)經(jīng)營和發(fā)展的重要內(nèi)容之一。
幾乎所有的管理知識體系或規(guī)范都涉及到個(gè)體和團(tuán)隊(duì)建設(shè)問題,比如組織行為學(xué)[Stephen P.Robbins,1997]對個(gè)體和團(tuán)隊(duì)的行為進(jìn)行了研究;項(xiàng)目管理[PMI,2000]中的計(jì)劃、人力資源管理、項(xiàng)目集成管理、項(xiàng)目溝通管理等多個(gè)項(xiàng)目管理領(lǐng)域都涉及到團(tuán)隊(duì)建設(shè)和管理;在軟件能力成熟度模型(CMM)[SEI,2000]的發(fā)展過程中,從個(gè)體軟件過程和團(tuán)隊(duì)軟件過程來研究軟件的開發(fā)和管理。對個(gè)體和團(tuán)隊(duì)管理的研究是管理學(xué)的核心任務(wù),涉及到的知識和學(xué)科紛繁、復(fù)雜。
然而,在管理的具體實(shí)施過程中,客觀上管理環(huán)境的不同及主觀上管理者的偏好,一般會(huì)在理論或規(guī)范基礎(chǔ)上進(jìn)行簡化、刪減、方向取向、分類歸納等工作,最后表現(xiàn)為各自獨(dú)立的制度、規(guī)則、知識、評估方法、認(rèn)證等多種獨(dú)立體系,失去了其內(nèi)在的聯(lián)系,管理工作仍然復(fù)雜,而且不利于改進(jìn)。
瑞理統(tǒng)一過程(RUP)[Rational,2001]通過對工作流分解的方式進(jìn)行了軟件開發(fā)過程及活動(dòng)的分解和定義,并以角色為中心來進(jìn)行知識、活動(dòng)、規(guī)則、工具等的關(guān)聯(lián)組織,從而把軟件開發(fā)活動(dòng)一體化、層次化、結(jié)構(gòu)化,并保持其內(nèi)在的有機(jī)聯(lián)系,為個(gè)體和團(tuán)隊(duì)軟件開發(fā)活動(dòng)提供了很好的指導(dǎo)。
本文以“角色”這一概念為基礎(chǔ),提出了“以角色為基礎(chǔ)的軟件開發(fā)團(tuán)隊(duì)建設(shè)”的觀點(diǎn),闡述了其原理和方法,并對其優(yōu)、缺點(diǎn)進(jìn)行了分析,簡要說明了該方法對“軟件工程過程改進(jìn)”的支持。
為簡化敘述,文中“以角色為基礎(chǔ)的軟件開發(fā)團(tuán)隊(duì)”簡稱為“角色團(tuán)隊(duì)”,對應(yīng)地,其它一般團(tuán)隊(duì)簡稱為“一般團(tuán)隊(duì)”;許多地方把文檔、資源、信息、規(guī)則等統(tǒng)稱為“知識體系”。
一、角色的含義
根據(jù)RUP[Rational,2001]的定義(如 “圖 1 RUP中角色的含義”所示),角色的含義是:角色是抽象的職責(zé)定義,它定義的是所執(zhí)行的一組活動(dòng)和所擁有的一組資源。角色通常由一個(gè)人或作為團(tuán)隊(duì)相互協(xié)作的多個(gè)人來實(shí)現(xiàn)。
圖 1 RUP中角色的含義
角色定義是一種管理上的要求,是“以活動(dòng)為基礎(chǔ)的管理”的表現(xiàn)形式,角色定義的依據(jù)是:問題、人、管理都可以分析為一系列活動(dòng)的組合,這些活動(dòng)有輸入、輸出,需要一定的環(huán)境和工具,需要活動(dòng)承擔(dān)者具有一定的能力,所有這些要素都是可以定義的,其聯(lián)系的核心可以稱為“角色”;管理本身的任務(wù)包括對問題域的角色分解、對人的角色分解、問題角色與人員角色的配對等。
因此,我們可以定義通用的角色模型如“圖 2 通用角色模型”所示。
圖 2 通用角色模型
通用角色模型的含義:
- 角色是活動(dòng)的承擔(dān)者,角色與所需要的知識、工具、環(huán)境、輸入、輸出相關(guān),是分析和定義結(jié)果的抽象,是一個(gè)容器;
- 角色是構(gòu)成知識體系的基本粒子,角色粒度大小和層次構(gòu)成根據(jù)企業(yè)對角色團(tuán)隊(duì)掌握的成熟度靈活控制。
問題角色容納了對問題域的認(rèn)識和分析結(jié)果,人員角色滿足預(yù)定義的能力和人格要求,并在掌握了相關(guān)知識和工具后獲得認(rèn)證;問題角色和人員角色關(guān)聯(lián)后,人員角色利用知識、工具、輸入文檔等進(jìn)行創(chuàng)造性活動(dòng),解決問題角色的需求;關(guān)聯(lián)活動(dòng)產(chǎn)生的結(jié)果經(jīng)過總結(jié)、分析,進(jìn)行經(jīng)驗(yàn)總結(jié)反饋,從而可以改進(jìn)問題角色和人員角色的定義和認(rèn)證,為組織進(jìn)步提供通道。
二、角色團(tuán)隊(duì)組建原理
在軟件開發(fā)實(shí)踐中涉及到的問題、人、管理都具有一個(gè)共同特點(diǎn):復(fù)雜,人類解決復(fù)雜問題的方法離不開“分解”,分解結(jié)果被定義為一系列的“信息點(diǎn)”,由于這些“信息點(diǎn)”的粒度、層次、構(gòu)成還是太復(fù)雜,因此又被進(jìn)行分類、歸納、總結(jié)成為一系列的“知識體系”,這些“知識體系”各自有重點(diǎn),同時(shí)又具有一定的相關(guān)性,有的發(fā)展為“學(xué)科”,有的發(fā)展為“規(guī)范”,知識體系在具體應(yīng)用時(shí)又以知識、規(guī)則、制度、工具等各種方式來具體體現(xiàn)。
在這些分析、綜合、歸納、合并的過程中,關(guān)聯(lián)性并沒有消失,但是變得難以掌握和理解——在學(xué)習(xí)的過程中很少有機(jī)會(huì)同時(shí)應(yīng)用多種知識及其關(guān)聯(lián)性,而在知識的具體應(yīng)用過程中,由于其龐大、復(fù)雜,只有少數(shù)專家能夠充分理解、綜合應(yīng)用,大部分人難見全貌、只見一斑,能夠?qū)W習(xí)獨(dú)立的學(xué)科,但是很難根據(jù)相關(guān)性進(jìn)行綜合應(yīng)用。于是,又產(chǎn)生了一個(gè)新的問題:良好的知識體系得不到良好的應(yīng)用,這就是常見的“理論與實(shí)踐脫節(jié)”問題。
“角色”是一個(gè)抽象的概念,通過角色,能夠有機(jī)地把知識體系以及實(shí)踐結(jié)果聯(lián)系在一起,而且是恰到好處——只有需要的知識體系和實(shí)踐結(jié)果才和對應(yīng)的角色進(jìn)行關(guān)聯(lián),通過角色粒度的控制甚至可以達(dá)到這樣一種效果:只要符合了角色定義要求,那么就能夠順利完成角色活動(dòng)。另一方面,角色概念與“社會(huì)化分工”原理不謀而合,主要差別僅僅是粒度、層次上的差別而已。
人員角色并不代表個(gè)人,而是說明個(gè)人在某一具體業(yè)務(wù)活動(dòng)中應(yīng)該如何表現(xiàn)以及他們應(yīng)該承擔(dān)的責(zé)任。角色有一組互相聯(lián)系的活動(dòng)需要執(zhí)行,這些活動(dòng)密切相關(guān),在功能上互相補(bǔ)充,所以最好由同一個(gè)人來執(zhí)行?;顒?dòng)與知識體系密切相關(guān):知識體系提供活動(dòng)的輸入和輸出,并提供活動(dòng)之間的通信機(jī)制。項(xiàng)目團(tuán)隊(duì)成員在履行角色職能的過程中,一個(gè)人可以擔(dān)任許多不同的角色,一個(gè)角色也可以由多個(gè)人來承擔(dān)。
三、角色團(tuán)隊(duì)組建方法
根據(jù)“角色團(tuán)隊(duì)組建原理”,角色團(tuán)隊(duì)組建就是面向問題、人進(jìn)行角色的定義和關(guān)聯(lián),把相關(guān)知識有機(jī)地分布到角色上去,在具體團(tuán)隊(duì)組建時(shí)進(jìn)行合理關(guān)聯(lián)配對:讓合適的人在合適的時(shí)間利用合適的工具完成合適的任務(wù)。
1. 從問題分析角色需求
根據(jù)相關(guān)知識體系、過去的定義、經(jīng)驗(yàn)、角色定義原則,把解決問題的過程分解為子問題及子活動(dòng),控制子活動(dòng)的粒度甚至粒度層次,并就每個(gè)子活動(dòng)進(jìn)行關(guān)聯(lián)分析、環(huán)境分析、知識分析,最后定義為角色,稱為問題解決角色,如“圖 3 從問題分析角色需求”所示。
圖 3 從問題分析角色需求
2. 從人員分析角色認(rèn)可
根據(jù)企業(yè)發(fā)展要求、角色定義原則、人的能力、興趣等要素,對人進(jìn)行分析和認(rèn)可,控制知識體系的粒度、相關(guān)性等,最后定義為角色,稱為人員認(rèn)可角色,如“圖 4 從人員分析角色認(rèn)可”所示。
圖 4 從人員分析角色認(rèn)可
四、角色團(tuán)隊(duì)組建
在項(xiàng)目團(tuán)隊(duì)組建時(shí),根據(jù)對問題域的分析結(jié)果,在成員角色表中選取對應(yīng)的角色去承擔(dān)問題角色任務(wù),并從項(xiàng)目管理的角度來進(jìn)行工作時(shí)間分配、費(fèi)用預(yù)算等。如果企業(yè)內(nèi)部沒有所需要的角色,則可以考慮尋求外部資源。如“圖 5 以角色為基礎(chǔ)的團(tuán)隊(duì)組建”所示。
圖 5 以角色為基礎(chǔ)的團(tuán)隊(duì)組建
五、角色團(tuán)隊(duì)組建與建設(shè)過程
角色團(tuán)隊(duì)組建是發(fā)生在項(xiàng)目立項(xiàng)時(shí)的工作,而角色團(tuán)隊(duì)建設(shè)是在企業(yè)經(jīng)營的整個(gè)生命周期內(nèi)都要進(jìn)行的,建設(shè)結(jié)果是角色團(tuán)隊(duì)組建的基礎(chǔ)。建設(shè)是持續(xù)性的,組建是臨時(shí)性的,建設(shè)為組建提供基礎(chǔ),組建后的項(xiàng)目團(tuán)隊(duì)的實(shí)施結(jié)果為建設(shè)提供依據(jù),整個(gè)過程如“圖 6 角色團(tuán)隊(duì)組建與建設(shè)過程”所示。
圖 6 角色團(tuán)隊(duì)組建與建設(shè)過程
角色團(tuán)隊(duì)建設(shè)要完成的工作有:
- 通用問題域角色定義:定義企業(yè)開發(fā)領(lǐng)域的通用問題,根據(jù)對通用問題的解決“從問題分析角色”工作,定義問題域角色體系;
- 通用人員角色定義:根據(jù)“問題域角色體系”,對人進(jìn)行分析、定義和認(rèn)證,建立關(guān)于“人員角色體系”;對某些超出問題域角色體系的人的角色也進(jìn)行定義,選擇標(biāo)準(zhǔn)可以根據(jù)企業(yè)的發(fā)展方向進(jìn)行選擇;
- 問題域角色與人員角色映射規(guī)則:為了適應(yīng)企業(yè)業(yè)務(wù)的變化和發(fā)展、滿足管理要求,問題域角色與人員角色不一定要一一對應(yīng),甚至粒度、層次也可以不一樣,所以要建立映射規(guī)則為以后的工作安排提供指導(dǎo)。
角色團(tuán)隊(duì)組建時(shí)要完成的工作有:
- 具體問題域角色定義:以“問題域角色體系”為基礎(chǔ),分析項(xiàng)目所面臨的問題,定義“項(xiàng)目角色體系”;
- 具體人員角色定義:對照“項(xiàng)目角色體系”和“人員角色體系”,根據(jù)映射規(guī)則,進(jìn)行配合、關(guān)聯(lián)、調(diào)整,完成項(xiàng)目團(tuán)隊(duì)的組建和任務(wù)計(jì)劃,進(jìn)行項(xiàng)目實(shí)施;
- 角色體系改進(jìn):在項(xiàng)目實(shí)施的任何時(shí)刻,如果有超出“問題域角色體系”的角色產(chǎn)生,可以根據(jù)需要補(bǔ)充到“問題域角色體系”中,對人員角色體系的變化也可以采取同樣方法處理。
在具體的角色團(tuán)隊(duì)建設(shè)過程中,實(shí)際上可以保留多個(gè)層次的角色體系,主要原則就是適應(yīng)企業(yè)的經(jīng)營要求和發(fā)展要求,其它相關(guān)內(nèi)容如取舍、粒度控制、層次控制、結(jié)構(gòu)控制、管理、認(rèn)證等原則和方法本文不再贅述,部分內(nèi)容可參考RUP。
在過去的實(shí)際管理過程中,一般團(tuán)隊(duì)存在很多問題,包括:
- 結(jié)構(gòu)簡單:過于簡單化,“開發(fā)團(tuán)隊(duì)”等于“工程師集合”,其相關(guān)性控制、團(tuán)隊(duì)配合等全部依賴于領(lǐng)導(dǎo)者的直覺或感覺;盡管不會(huì)完全錯(cuò)誤,但是不夠精細(xì),屬于“粗放”管理范疇;
- 管理困難:缺乏層次級別,幾乎都處于同一個(gè)層次上,令難行,禁難止;
- 職責(zé)不清:針對工作內(nèi)容,一方面缺乏規(guī)范,另一方面范圍模糊,因此導(dǎo)致職責(zé)不清楚,工作目標(biāo)模糊;
- 資源浪費(fèi):由于組織和管理不力,軟件開發(fā)效率低、成功率低,并期望通過提高個(gè)體素質(zhì)來提高效率或成功率,片面追求文憑,本科不行用碩士,碩士不行用博士,等等,導(dǎo)致資源浪費(fèi),經(jīng)營成本高;
- 發(fā)展緩慢:團(tuán)隊(duì)的進(jìn)步?jīng)]有明確的計(jì)劃和方向,團(tuán)隊(duì)的進(jìn)步依賴于個(gè)體的隨意發(fā)展,因此團(tuán)隊(duì)的建設(shè)變成了艱難地培養(yǎng)“全才”,很難培養(yǎng)“專才”;企業(yè)發(fā)展不明確,員工發(fā)展也不明確。
導(dǎo)致上述問題存在的根本原因是什么?我們認(rèn)為,主要的原因有:
- 對問題的認(rèn)識不充分:沒有對問題域進(jìn)行定義、分析、內(nèi)容組織,或者比較薄弱,僅僅從比較高層的軟件開發(fā)的“需求、分析、設(shè)計(jì)、開發(fā)”出發(fā)來進(jìn)行開發(fā)團(tuán)隊(duì)的組織,缺乏“具體問題具體分析環(huán)節(jié)”;
- 對人的認(rèn)識不充分:對個(gè)體的認(rèn)識依賴于管理者的直覺、感覺和經(jīng)驗(yàn),個(gè)體的發(fā)展依賴于自己的興趣,把工作當(dāng)成任務(wù),過多依賴于文憑評價(jià);
- 對管理的認(rèn)識不充分:過分依賴管理者的直覺和感覺,安排任務(wù)時(shí)“大體上”知道存在的問題、什么人能解決什么問題,但是沒有進(jìn)行問題的分化、定義、具體化等細(xì)節(jié)工作,比較“粗放”;管理過于依賴于權(quán)力;
- 過于平面化和大粒度:從問題認(rèn)識、人的認(rèn)識、管理認(rèn)識三個(gè)方面都缺乏層次化、模塊化和結(jié)構(gòu)化,分工粒度過大,忽略問題的多樣性、人的多樣性、管理的多樣性,決策一刀切;
最基本的原因是全面性問題,不夠全面導(dǎo)致管理不到位:用不合適的方法去解決模糊的問題,如“圖 7 一般團(tuán)隊(duì)的問題域覆蓋程度”所示,應(yīng)該解決的問題沒有解決,解決問題的人又不一定是合適的。
圖 7 一般團(tuán)隊(duì)的問題域覆蓋程度
六、角色團(tuán)隊(duì)對問題的解決
角色團(tuán)隊(duì)通過“問題角色體系”的建立來促進(jìn)對問題的分析,很大程度上解決了一般團(tuán)隊(duì)存在的“不夠全面”問題,改善了對問題域的覆蓋程度,如圖“圖 8 角色團(tuán)隊(duì)提高問題域覆蓋程度”所示。通過“人員角色體系”的建立來進(jìn)行培訓(xùn)、認(rèn)證、甄別,促進(jìn)團(tuán)隊(duì)建設(shè),并為薪酬體系、績效考核提供依據(jù)。角色團(tuán)隊(duì)組建后,管理定位更加容易:管理者有事可做,有章可循;被管理者明確管理定位和職責(zé),依照角色關(guān)聯(lián)的合作更加順暢。
圖 8 角色團(tuán)隊(duì)提高問題域覆蓋程度
更重要的是,角色團(tuán)隊(duì)的組建和建設(shè)過程,就是企業(yè)知識體系的建設(shè)過程,角色體系也就是知識體系,角色體系的改進(jìn)就是知識體系的挖掘和進(jìn)步,是學(xué)習(xí)性組織的良好選擇。
七、角色團(tuán)隊(duì)的缺點(diǎn)
角色團(tuán)隊(duì)的建立和組建,其本身就是一項(xiàng)復(fù)雜的管理活動(dòng),需要有力的資源支持;角色團(tuán)隊(duì)的建設(shè)是一個(gè)持續(xù)性發(fā)展的過程,不是一蹴而就的,因此需要企業(yè)具有持續(xù)建設(shè)的需要和能力,也就不適合那些業(yè)務(wù)方向頻繁變化、業(yè)務(wù)領(lǐng)域不明確的企業(yè)。
八、角色團(tuán)隊(duì)原理在軟件工程實(shí)施中的作用
在目前軟件工程實(shí)施中,“持續(xù)改進(jìn)”無疑是最重要的思想;首先,改進(jìn)就必須要有一個(gè)載體,這個(gè)載體必然是企業(yè)知識體系,因此也可以采用“角色團(tuán)隊(duì)”作為這一載體;其次,改進(jìn)必須是持續(xù)的,也就意味著過去定義的知識體系能夠在一定程度上重用。角色團(tuán)隊(duì)通過“角色”這一概念來進(jìn)行知識體系的分解,通過粒度和層次的控制很容易達(dá)到高程度重用的目的,因此,角色團(tuán)隊(duì)原理可以在軟件工程實(shí)施中作為實(shí)施載體來使用。
以角色團(tuán)隊(duì)為基礎(chǔ)的企業(yè)知識體系還可以很方便地容納軟件工程規(guī)范,因而對軟件工程的實(shí)施具有很高的支持性;通過“人員角色體系”的建立,可以達(dá)到對個(gè)體的針對性培訓(xùn)和學(xué)習(xí)引導(dǎo),對團(tuán)隊(duì)的進(jìn)步具有很好的引導(dǎo)作用。
由于角色粒度、層次控制的靈活性,角色團(tuán)隊(duì)的組建和建設(shè)可以從任何時(shí)候、任何規(guī)模開始逐步建設(shè),非常靈活,滿足企業(yè)逐步成熟的要求。
小結(jié)
軟件開發(fā)是一項(xiàng)知識性活動(dòng)、創(chuàng)造性活動(dòng),軟件技術(shù)日新月異,軟件應(yīng)用領(lǐng)域復(fù)雜多變,所有的這些原因造成了軟件開發(fā)管理的困難,導(dǎo)致了軟件危機(jī)的產(chǎn)生。軟件管理問題的解決,離不開對知識體系的依賴和對變化的適應(yīng)。角色團(tuán)隊(duì)原理作為一個(gè)知識體系的載體以及對持續(xù)改進(jìn)的充分支持,可以作為軟件工程實(shí)施方法之一。
參考資料
[1] Stephen P.Robbins,《組織行為學(xué)》(第七版),1997,中國人民大學(xué)出版社;
[2] PMI,《A Guide to The Project Management Body of Knowledge》,2000;
[3] SEI,《CMMI for Systems Engineering/ Software Engineering》,2000;
[4] Rational,《Rational Unified Process 》,2000。
本文由 @我觀世界觀 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Unsplash,基于 CC0 協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲(chǔ)空間服務(wù)。