軟件項目交付風險管控
背景
人員組織結構
XXX
周邊集成系統
SSOProxy 1個接口
Classroom 2個接口
DocMan 2個接口
CodeHub 1個接口
ProjectMan 3個接口
APIGateway 所有開發雲服務接口
判題系統 2個接口
系統部署架構
XXX
系統技術棧
C#語言 HTML/CSS/JS RAZOR模板引擎
Windows Server 2012 IIS容器部署
交付工作時間線
2017.11 決策接受系統開發任務
2018.1.8啟動大賽平臺的開發工作
2018.2.15~2018.2.21春節放假
2018.3.1大賽平臺上線運行
開發工作是1月8日開始,3月1日截止,2月15月-2月21日春節假期,共計35天。
開發:易思智外包,2後臺+1前臺+1個實習生
測試:華為方1人+外包1人(1月15投入)
CIE:華為方1人(2月7日投入)
交付過程風險
TOP1 需求風險 (無人管控、隨意變更、需求反復、重視不足)
(1)缺少需求列表
完全沒有需求文檔,需求細節完全靠問,時間都浪費在各種溝通中。
(2)領導改需求
開發到1月26日改了一版需求,首頁頁面完全基本換掉、其他頁面調整、報名流程調整(增加25人天開發工作量)
(3)後期改實現方案
1、判題串行執行改並行執行,配合聯調(增加5人力)
2、為了架構穩定性,同步接口改異步接口(增加10人力)
3、增加可測試行,增加灰度功能(增加5人力)
(4)需求反復
1、賽事直播頁面先是移除,後又要上線
(5)PD投入不足
1月29日一周 杭州授課,事項委托姚傳存
(6)需求基本處於無管控狀態
HR那邊的需求負責人換成一個完全不懂業務的人,基本什麽需求細節都不了解,還得由開發給他講業務細節。
(7)交付時間提前
原定交付上線時間是3月8日,提前為3月1日
(8)與開發雲深度集成
與17年相比,最大特性是利用開發雲進行開發活動,且集成開發雲的4個服務。工作量比17年大大增加,預估工作量嚴重不足,預估工作量為14人天,實際工作量為3倍不止。
最開始需求為儲存學生答案(DocMan),後經領導要求深入使用開發雲功能
TOP2 周邊系統風險 (集成系統越多,風險越大)
個人感受:真正的開發工作量其實只占了1/5,其余時間全是在等待、聯調、驗證、定位問題
個人體會:你能對自己系統了解,但你永遠無法了解其他系統的風險。(添加成員無法加入倉庫,後經定位為不支持跨租戶成員添加,但是文檔裏也沒有寫)
TOP3 技術/架構風險 (前期考慮方案不全面,導致後期風險大)
我1月5日接受此任務時,各環境服務器資源沒有申請、部署架構沒有梳理。
(1)與開發雲服務集成需經過APIGateway交付,這是我沒有識別到的,導致內部開發時按照內網的對接,後又全部改為APIGateway對接。
(2)與CodeHub集成內部開發完成,後經了解網絡不通,又改為新加服務來支撐此功能。
(3)與IAM直接集成後改為SSOProxy集成
TOP4 人力風險 (前期不緊張,後期時間緊任務重,再緊張已經晚了)
1、由於PO問題,外包進場比預計晚了1月。導致開發周期被大大壓縮,17年大賽12月外包就進場了。
2、1月8日後陸續人力才到齊。
3、前年前後外包請假比較多,前年前後全員各3天,後經多方交涉派了兩個人,還是階段支撐,且新員工工作效率低。
4、從1月8日開始全部處於加班狀態,基本都加班到10點,外包抱怨較多,周末至少加班1天,中間一名外包扛不住離職了。
5、易思智沒有提供測試人力,後從Cloud BU協調了兩名人力。
6、人越多管理成本就會越高。
7、一個項目全部圍繞一個人轉就會出現瓶頸,解決瓶頸就是要多培養對業務負責的骨幹。
環境風險
研發環境(Alpha/Beta/Gamma/性能環境)
現網環境
性能環境搭建耗費大量時間,codehub、classroom出現大量功能問題,組織升級,定位耗時長(工作量14人天)
新服務交付面臨巨大挑戰(基礎工作量大)
1、流水線搭建:組內沒有人懂流水線,多方求助,慢慢搭建起流水線,編譯構建、自動部署。
2、新服務上線要做大量的工作來滿足性能、安全、可靠性要求。
個人總結
1、要合理管控PD提出的需求,往往PD對需求實現不了解,工作難度也不了解,所以要給PD合理的反饋,不要一味承接需求。
2、需求還是要有文檔有郵件,可追查,不然就需求變更帶來是全盡的痛苦。
3、項目交付全部依賴於人,多掌握幾個能力強負責人的人是關鍵。
4、多培養幾個對業務熟悉對架構熟悉的人,如果只有SL懂,那將成為整個項目進度的瓶頸。而且還會特別累。
5、項目交付是個工程事件,需首先從全局著手,切忌一頭紮入實施細節,從而忽略了很多前期應該開展的工作。
6、系統的架構設計是不能出錯的,後期改動架構是一件很痛苦的事情,這就要求我們一定要多方面論證方案的可行性。
7、如果集成的系統過多,那你就要小心了,這表明你花費的溝通成本將大大增加,不可控因素也大大增加。
8、遇到風險千萬該求助就求助,該上升就上升。
反思
1、讓自己成為項目團隊的瓶頸
2、架構應該提前識別到網絡風險,但是沒有及時識別到。
改進思路
需求把控,PD要管控需求,不能在有限的時間承接無限的需求,SL針對不合理的需求要給出意見
可以並行搞的事情不要串行搞(環境搭建可以在開發活動開始時就開始,開發完成再進行就影響進度)
DevCloud工具要怎麽幫助用戶成功(真正提高研發活動效率,整個流水線搭建熟手都要一周)
周邊系統要了解需求的背景,不然開發完才發現不對造成反復。(對端到端的業務沒有明確的說明。 )
人很關鍵,交付過程中最重要的是人的能力,培養幾個業務骨幹,技術骨幹
出現風險的時候,要調整,比如人力、功能特性( 12月份討論方案只接入DOCMan,1月確定深入集成DevCloud )
架構設計要具有擴展性(需求變動不可避免,盡量做到可擴展,SSO方案)
交付流程精簡,提高交付效率(從出包到上線要一天時間)
人員管理,調動人員積極性,讓大家團結起來把力用在一點上
多投入華為人力(熟悉交付流程,投入SE對架構進行把控)
流水線搭建過程中,對C#編譯構建,Windows部署支撐起來有點吃力。
新服務上線面臨諸多挑戰,要如何幫助服務成功,快速上線
軟件項目交付風險管控