楊 帆,劉雅萱*,唐海濤,3
(1.中國電建集團華東勘測設計研究院有限公司,杭州 311122;2.浙江華東工程數字技術有限公司,杭州 311122;3.數字城市CIM技術浙江省工程研究中心,杭州 311122)
在項目管理領域,項目經理大多使用資源日歷來協調人力資源、派發工作任務。項目資源日歷展示了項目資源的可利用時間,本文的項目資源指人力資源。在項目管理過程中,如果項目經理對項目組內員工的工作任務、工作量和可利用時間不夠了解,極易出現工作任務分配不均的情況,這就導致不同員工的工作量飽和程度有較大差別。所以資源日歷的存在是極為必要的,它可以展示人力資源的工作任務、工作量和可利用時間,為管理者后續進行資源配置和任務分發提供了參考。它可以起到兩個主要的作用,首先保證每個員工能夠有適當的工作飽和度,其次是保證每個員工的工作都是有效率的。
近年來,項目管理領域的研究者探究了多種人力資源調度、配置的方法,如基于改進CNN 的人力資源配置方法[1]、針對多技能人員項目調度問題提出的改進布谷鳥搜索算法[2]、在緊急狀態下協同配置護理人員的網格化管理方法[3],還討論了資源受限情況下的多任務調度問題[4]。但是對資源日歷看板的研究較少,目前項目的資源日歷一般采用人工編輯的方式,這種方法存在如下不足:
(1)人工編輯資源日歷的工作量較大,而且隨著項目任務的變化,需要不斷調整,資源日歷無法自動更新。
(2)人工編輯資源日歷只能確定短期內的資源投入,無法預測多個功能模塊或者整個項目的資源投入。
(3)人工編輯資源日歷時一般會對任務所需的工作量進行人工估算,而人工估算工作量一般不夠精準,仍然會導致工作任務分配不均的情況。
(4)人工編輯的資源日歷無法定量計算任務的完成進度。
基于以上不足,本文提出了一個基于功能點的自動生成項目資源日歷的方法,適用于軟件工程行業。該方法無需人工編輯資源日歷,只需要拆分項目的功能,并且批量設置每個功能的投入人員,即可自動生成項目的資源日歷。
1.1.1 識別范圍和邊界
根據招投標文件、用戶需求說明書、需求規格說明書、原型圖、詳細設計說明書或數據庫設計說明書等項目文檔,識別所開發應用程序的范圍,即包括在功能點統計范圍內的功能需求/規格說明的集合。功能點是用來表示項目規模的計量單位。功能點計數可以對項目的規模進行測量,在確定項目的工作量投入和成本時,功能點數是一個必要的參數[5]。
一旦確定了范圍就可以定義邊界,邊界是應用程序和其用戶的概念接口。其中,用戶包括操作當前應用程序的人和與當前應用程序有交互的其他軟件或硬件。
1.1.2 識別功能
在需求范圍內,識別應用程序的數據功能和事務功能,形成項目各功能模塊的功能清單。數據功能是指從用戶的視角看到的數據的一個邏輯分組,包括內部邏輯文件(internal logical file)和外部接口文件(external interface file)兩類。事務功能是指被用戶看作屬于一個工作單元的一連串動作,包括外部輸入(external input)、外部輸出(external output)和外部查詢(external inquery)三類[5]。
1.1.3 設置投入人員和開發狀態
為功能清單中的每個功能設置投入人員,并選定開發狀態,即開發完成或未開發完成。投入人員具有角色屬性,角色包括需求分析、設計開發、系統測試和運維實施四類。設置功能清單中各功能的投入人員和開發狀態不僅包括初始化設置,還包括隨著項目進展更新各功能的投入人員和開發狀態。
基于上述功能清單及投入人員等數據,統計出項目的人力資源列表。首先,篩選項目下所有的投入人員。然后根據不同的投入人員,篩選某投入人員在該項目下參與的所有功能模塊。根據員工的角色屬性和員工參與的功能模塊,生成該員工負責的任務的名稱。如員工A的角色屬性是“設計開發”,他參與了“成本管理”和“計劃管理”模塊的工作,那么員工A有兩個任務,分別是“設計開發-成本管理模塊”和“設計開發-計劃管理模塊”。
計算生成資源日歷所需的數據指標,包括每個員工的工作任務所需工作量、計劃完成日期、計劃開始日期和任務完成進度。
1.3.1 所需工作量
根據不同的功能模塊,篩選某投入人員在功能模塊下參與的功能清單,并計算完成各個功能模塊所需的工作量。具體包括:
(1)根據不同的功能模塊j,篩選某投入人員i在該功能模塊參與的功能清單Listi。
(2)功能清單Listij中,檢查每一個功能的功能類別(EI、EO、EQ、ILF、EIF),以及該功能下與該投入人員具有相同角色的投入人員數量N。
(3)根據該功能的功能類別,得到該功能的功能點數A。假設該功能的功能類別為內部邏輯文件,則該功能的功能點數A為7[5]。
(4)計算出該功能在該投入人員的角色職責下的平均功能點,例如該投入人員的角色為設計開發,該功能共投入了3個角色為設計開發的人員,則該投入人員在該功能所消耗的功能點為。
(5)計算得出該投入人員i在功能模塊j下所有功能投入的功能點之和Uij。
(6)計算得出該投入人員i完成功能模塊j所分配功能的工作量
其中,VAF和C分別為項目設置的規模調整因子和各個角色的生產率。
1.3.2 計劃開始時間和計劃完成時間
其中,任務的計劃完成時間(PF)需要人工填寫。計劃開始時間(PS)可以人工填寫,也可以根據填寫的計劃完成日期和求得的工作量得到計劃開始日期。
1.3.3 任務完成進度
根據功能清單中各功能開發狀態,計算實際完成進度(AC),包括單個任務j的完成進度ACij和員工的總體任務完成進度(ACi)。
首先,計算i員工功能清單Listij中的功能點總數FPij,
其次,計算i員工功能清單Listij中的已完成的功能點總數FPij_finished,
員工i的單個任務j完成進度ACij計算如下:
統計員工i任務進度為100%的任務數量Task_finished和任務總數Task,則員工i的總體任務完成進度ACi計算如下:
根據上述公式所得到的投入人員、功能模塊、計劃開始日期、計劃結束日期、工作量信息、任務完成進度等信息生成該項目的資源日歷。資源日歷生成之后,用戶可對自動生成的資源日歷進行檢查,根據實際需求重新調整計劃開始日期和計劃結束日期。
使用本文提出的項目資源日歷計算方法在K項目中應用,現有5名人員共同完成一個軟件項目,包括A、B、C、D、E 五個功能模塊。表1截取了部分數據。

表1 示例數據
根據上述項目資源日歷計算方法,得到該項目的資源日歷,如圖1所示。

圖1 項目資源日歷看板
本文重點介紹了一種軟件項目的資源日歷計算方法,包括數據準備、資源統計、指標計算、資源日歷生成。該方法可以很好地支持項目管理者查看項目人力資源的可利用時間,幫助項目管理者更好地進行任務分配和人員調度。