2011年3月31日 星期四

愚人節的愚人之見-呼應Mia大大的TOC單一專案規劃方法


肥蝦在【專案管理的生活思維】看到了Mia大大的專作「該如何改變(Part 2) TOC單一專案規劃方法」(http://www.projectup.net/blog/index.phpoption=com_content&view=article&id=4027:to-what-to-change-to-part-2-toc&catid=8:pmp-pm&Itemid=18#yvComment4027)因此也來呼應一下TOC

經濟學中很多理論都引用物理學的觀念如最有名的"彈性"TOC的創始人Eliyahu Moshe Goldratt(圖片來源:http://en.wikipedia.org/wiki/Eliyahu_M._Goldratt)正是一名物理學家!當初看到TOC理論,就覺得好親切!

經濟學把生產資源區別為土地、資本勞動力跟企業家精神,對應到一個軟體專案,就好像是軟硬體設備、資金、勞動力跟專案管理精神一般!在生產要素有限之下,為達到目標如何加以組合?這就是企業家精神或專案管理精神的重點所在。

因為在constraint下追求MaximumMinimum幾乎是經濟學中個體經濟的基礎,因此TOC一下子就擄獲肥蝦的心意。

因此針對目標所安排出來的schedule必須在因應constraint下重新安排,取其最適解,但這最適解糾就悠關了兩個重點:

(1)目標

Target經濟學很強調目標的明確性,就是可測量性。因此如何界定目標,設定量測的標準與方法,就很重要!經濟學知道一個目標的量測很難用單一方法或Metric就可以掌握,因此有所謂的先驗指標,落後指標,同步指標;以及資料的正確性(資料的掌握,瞭解,取樣,估計,機率,正也是統計的重點)!這在衡量專案時也是要注意的!PM教科書中一再強調EVM,但PM應謹記:「每個呈現數值中得組合成份與數字的特性!」, (基本上現在所有的PM Tool所提供的EVM都只能算落後指標!)

(2)限制

在經濟學中所強調的限制式,主要在生產資源,但除了軟硬體設備,資金,勞動力,跟專案管理精神之外,也應該可以呼應PMBOK的九大知識領域中的時間,成本,品質,人力,等要素!因應限制,感覺上TOC強調:一是緩衝的使用,二是限制的突破!

在緩衝上TOC提出了:

(i)資源緩衝:針對資源有限性。

(ii)接駁緩衝:針對步驟依存性。

(iii)瓶頸緩衝:針對必要程序限制性。

(iv)專案緩衝:針對整體專案性。

在突破限制上,TOC強調

(i)確認制約。

(ii)有效剝削制約。

(iii)其他一切遷就制約。

(iv)鬆綁制約。

(v)重新檢視。

這五個重複循環的流程!

Mia是一位TOC的專家,在此篇中的舉例也正呼應了TOC的精神,雖然例子中Mia以資源為主,(PMBOK也以為TOC主要在資源)但肥蝦以為Mia的重點是在限制,限制的範圍涵蓋遠大於資源!但講資源一般人比較有感覺,講流程,講人際關係等無形的限制,可能就不好說明了!

此外,PM的觀念中都是估完範圍後再來確認資源,就經濟的觀點(或肥蝦認為的TOC)限制是一開始就存在的!甚至在範圍之前就存在!因此Buffer的增加也要遵循這限制!

因此專案最好的思維應該是在限制中保留Buffer,因此一開始就要設法以最精省的方式來達成目標,然後(限制-最精省的方法)就是Buffer!為了確保目標的達成,再來安排Buffer

經濟學從十九世紀中從追求靜態的均衡解到強調動態的均衡!關鍵就在時間,物換星移,因此就算環境如您所料,但隨著時間的經過,市場的變動,原先的架構也會脫離當初的均衡解,再經過調適,而最後這均衡解是收斂還是發散,就決定了這目標能否達成!(就因為太複雜,所以經濟才會強調:其他條件不變下,但這在現實當然是不可能的!)

因此肥蝦看到了很多的軟體專案的流程都follow一些開發方法論,從簽約、kickoff會議、需求訪談、規格確認、程式開發、單元測試、整合測試、驗收測試,等程序均是一成不變!心中有時覺得是"讀書反被讀書誤!"

就像Mia所舉例的流程可以調整的!就專案層級而言,不變的只有目標跟限制;若就Business來說,這目標跟限制也是會變的!因此一個PM必須隨時注意目標跟限制,並且要常「眼觀四面,耳聽八方!」所有的流程都要能因應實際的限制而去動態的調整!

還有這目標!到底是MaximumMinimum,很多人一開始都不清楚到底是要Maximum?還是Minimum?在經濟中,雖然認為在大多的情況下Minimum CostMaximum Profit的必要且充份的條件!但肥蝦印象下,有些就不會是如此了!

因此一個專案的目標,大家都說是要『如期,如質,如預算!』但沒有這麼好的事啦!目標還是要先弄清楚!

還有‧‧‧‧

今天愚人節,肥蝦就寫些愚人的看法,來逗大家開心!!!!

2011年2月24日 星期四

殺雞儆猴-新官上任是否要燒火?


肥蝦上任,一下子除了自己原有的專案外,還要作一些Presale的工作,過年前就這樣一直忙到了2/19,好不容2/20有個空檔,跑去聽了金融研訓院開辦的「中小企業授信產品風險管理實務」課程。看了金研院的網站,想不到身為IT人員的我,在金研院也是花了將進一、二十萬,唉!只能怪自己的好奇心太重。

在課堂中,老師提到了中小企業在信用評分的項目,以及事前的實勘與後續的複審之中要特別注意一些企業異常警訊及癥兆,其中在管理上的重點有著:負責人或重要主管辭職、重要主管調動反常、員工出勤情況不佳、人員離職率高、士氣低落等項。這就讓肥蝦想起前陣子,在FaceBook上也看到一個在User Side工作的年輕朋友,說她的處境艱困,委外廠商駐點的工程師每個都掛什處長經理之類的,可能他們這些人欺負她年輕,所以壓不住陣腳,使得她公司內外遭收煎熬。另外,上週一個哥們告訴我他們公司的狀況,以及他自己也要離職。其中最大的導火線就是一個剛上任的專案經理跟公司高層報告說團隊中有老人不願跟他配合,希望能殺雞儆猴一下。我朋友可說已是該公司的創業元老,更是這新初任專案經理的指導前輩,因此我這換帖的就成了那隻雞。

殺雞儆猴、陣前立威!?一個專案經理或是部門經理,當然都希望專案團隊的成員,部門內的同仁,個個都要聽命於他,以他馬首是瞻;在與公司其他部門溝通,以及與專案利害關係人的互動中,大家都只以他為窗口,只有他說了才能算數;在面對專案贊助人或公司高層,他就代表這個專案、整個部門,所有光芒都在他身上。當然,以上所寫應該是每個專案經理或部門經理所想的;但說實在的,確也是最不應該發生的!

記得2009年寫過一篇「專案經理追求的修為-"Pursuing the Perfect Project Manager"讀後感」,在Permalink這一篇文章中所載明專案經理的特質中,第一項-自我與無我(Total ego/No ego);第二項-獨斷者/委託者(Autocrat / Delegator)第三項-領導者/管理者(Leader/Manager);第八項-急迫/耐心(Impatient/Patient)的說明,特別可以說明肥蝦對於【殺雞儆猴、陣前立威】目前的想法-「有功不必在我」,才能使您達到「我在必成功」的終極目標!

權力使人意亂情迷,奪權爭利是一般人性的寫照,在工作職場上更是如此!身為一個專案經理或部門主管,身處人與人溝通互動的要徑之中,有幸者,更是在權力角力糾葛拓樸的一個Node,因此如何妥適的利用,並且有效的擴大與渲染,以利於執行專案與部門的工作,實在是一門高深與艱難的學問。肥蝦在職場渾渾噩噩十幾載,這門課一直修得不好,自我的工作因此跌跌撞撞,一路走來也是備嘗艱辛!在此也只能分享自己的慘痛經驗,以供各位先進作為前車之鑑!

當進入一個新的專案團隊,首先會遇到的人際緊張,可能來自資深前輩、既得利益者、團隊內藏鏡人的同仁挑戰;但一方面,也可能有原先弱勢者、既有小團體的拉攏與示好;最可怕者,為別有居心者企圖利用您一時情況未明時趁時誤導您,讓您來個威信盡失、天恩不在。因此要能如何解套呢?

有些朋友會趁著天眷正隆之時,來個新官上任三把火,殺雞儆猴,馬上立威,勢圖以恐懼管理為立基,再進而圖以小恩,攏絡人心。此等作法,早已是古有明訓,就如大陸劇那『雍正皇朝』中的康熙於彌留之際,降能臣、黜幹吏,為得就是鄔先生所言的:「不致使這些棟樑因皇位鬥爭斷喪;更使得繼位者得以恩駕馭,不致有以下犯上之虞。」因此我這淪落為雞的哥們,就成為此劇本下的龍套!當然在更深一層上,上位經營者也是另有他圖,只是這後果如何都與上位者無關,因為這是新任專案經理的建議!

再來,殺雞是否可以儆到猴,還是落得個人心盡失?這也得要看您要殺那支雞!俗話說得好:「打狗也要看主人!」但是很多時後不打老虎,是收不到人心;打了老虎,卻是虎患依舊,個人徒留身後名,記得小蔣貴為太子也曾吃過這個排頭,那非為皇親國戚的我們豈可不慎!但是很多時後,那許多狐假虎威的,這個打了不但大快人心,收效宏大,對自身威信的建立是有加分的效果。肥蝦去年當社區主委之際,就是用了這招,後續也較少有刁戶來叨擾!

而最常的狀況,大多就像前陣子看的「萬曆首輔張居正」,書中所寫的張居正與那馮保都是為了奪權隱忍長久的環境壓迫,惟有與權勢者虛與委蛇,待那日身處權力核心,才能展現作為。但要「忍人不能」這哪是一般無知小民的肥蝦作的到呢?德川家康的那招「等到鳥自己叫!」難呀!

因此遇到團隊成員或同仁執意的挑戰你,就要衡情酌勢的處理,先行分析局勢與人員的重要性與可取代性,看看Networking以及每個人Power的大小與其來源!再來藉著建立Ground Rules來建立一些最低與最基礎的遊戲規則,利用Interpersonal Skills以及Recognition and Rewards來建立向心力與您的鐵核心,再藉由鐵核心的成員來加乘人際網路與人員互動。這C n2的溝通管道,身為專案經理要儘量去依其利害性排出每個點之間的最短路徑,進而推演出樹狀的架構,如此能有效的駕御專案的溝通管理。

那要是被臨危授命,接手一個分崩離析的團隊呢?當然安內才能攘外的政策是第一優先選項。惟有安定了團隊,才能建立客戶與您之間的信賴與安全感;除非,原有團隊的價值盡失,人人唾罵,那大動作的作為才有必要。就如那講授中小企業的老師所言:「管理上的負責人或重要主管辭職、重要主管調動反常、員工出勤情況不佳、人員離職率,都是客戶評價您這團隊與專案是否能如質、如期完成的重要指標。」

每個人都喜歡享受權力,有些初任專案經理,以為自己是大權在握,盼學著那歷史先例,來個「殺雞儆猴-新官上任三把火!」也許換個角度,重新思考!想想在「自我與無我;獨斷者/委託者;領導者/管理者;急迫/耐心」要如何取捨!如何進退!才是「明哲保身」的正道呀!

2011年1月31日 星期一

專案經理 Versus 部門經理之第一步


「有點權力之後,執行專案應該就會更順手。」執行長口吐裊裊白煙的回應著肥蝦所說的:「我喜歡當專案經理,可以享受帶兵打仗,征服的快感。」對於以往支援業務與專案作業需要而將技術人才名義上有個歸屬的部門,在以往長官的長期忽視下,其實可說是名存實亡已久,執行長的一句話,想著兩年前的輸尿管事件(請參看:看醫生我會怕!-專案的風險回應與品質控管”)之時執行長相挺地讓我放了近兩個月的病假,也只能摸摸鼻子硬著頭皮上任去!轉眼之間,從人事佈達到今日也快滿一個月了!隨著名片上名稱的變更,這近一個月的時間裏,會議、會議與會議,長官談話、指示與詢問,加上公司歲末的尾牙、聚餐與聚會,幾乎佔了一天中最精華的時光;以部門經理協助其他專案經理,以及其他日常的行政作業,又佔據了其他鎖碎的時間;對於自我負責的專案進行更深入與完整的思考,以及與專案成員一同閒情逸致的聚在一起暢談對專案技術想法的時間幾乎是不復存在。(更遑論塗鴉些自己心得感想的時間!)

記得去年中買得一本上奇出版的「走出軟體工場」,肥蝦雖然也是一心希望我們這在公司中的小小部門也能「走出軟體工場」,創造點績效。但是就如約耳在那一本「Joel on Software」的導論所說從程式開發人員到專案經理的角色變換一般,從一個專案經理到兼任部門經理(更嚴格地說,應該是部門經理兼專案經理。)其間模式作業的變化也是讓肥蝦一時無所適從。以前專注的焦點與範圍變得更多樣化了!以往互相競爭資源的專案經理間也多了些不同的衝突!以往對肥蝦頤指氣使的行政人員更是加上了些資源與權力上的糾葛!先前不需要互動的部門變得密切起來!往常不需要出面應付的迎合場面變得被交代要出席與會!正是所謂「未蒙其利,先受其弊。」部門經理所要克服的困難,以及要挑戰的目標,與當自己是專案經理之時所推想的「開開會、回回mail、喝喝酒」是有所不同的!

如同專案需要績效,部門也有績效上的壓力!如同溝通在專案管理上的重要性,跨部門與部門間的溝通也是一門大學問!如同專案團隊內與利害關係人間的政治運作,公司的政治力道也是不遑多讓!專案管理所遭遇的問題,部門也一樣會有,差別在於目的、範圍、對象、時間、地點、程序,更慘得是除非肥蝦被換掉、部門被裁掉、或者公司,不然部門經營是沒有明確的結束日期,是沒法咬牙硬撐的!

就拿一上任讓肥蝦最頭痛的問題-部門績效!一個技術人員為主,以支援業務與專案為目的的部門,部門的績效該如何看待?就拿平衡計分卡中的學習與成長構面來說好,此一構面著重在讓企業能確認長期變動的能力。在人力有限之下,現有的人力所有的技能來自於以往的訓練與學習,隨著IT科技的日新月異、市場環境的變化,部門必須著眼於人員與新技能的培訓與養成。但是業務部門所承接到專案內需要的技能!專案經理對於部門所派遣過去人員的安排與訓練!這一切是否都能跟部門的規劃一致?業務求得是賣出既有的產品,求得是承接所有能接到的案子,要得是能要對他所聽到客戶的任何需要(wants)都能說可以做的答案;專案經理期盼的是給他已有經驗的人員,要得是充分足夠的人力,不要的是新手,不肯的是部門抽回可能稍為閒空的人員。那部門要如何配合公司目標的人力規劃,著手人才的培育,業務經理跟專案經理說:「那是部門經理要做的事!」

講到專案經理與部門經理間的政治角力,記得以前肥蝦說過:「專案要人有時必須從高層施壓!」現在當了部門經理就回頭吃到這個苦楚!除此之外,又因為自己還兼著負責原有的專案,搞得自己裡外不是,在Bryan and Joe的部落格中落下這一句話:「以前可以抱怨部門派來的人素質太差!現在都不敢講話!以前會想搶高手,現在反而不敢把高手調到自己的案子!」原因就在-怕落人口實!增加與其他專案經理間的衝突!記得在漫畫「家栽之人」看過桑田義雄說過一句話:「犯的罪大,處罰就重;犯的罪輕,處罰就輕,這是基本常識。不管判得罪再重,他還是得回到社會上生活。」同樣地,身為一個部門經理也會直覺得以專案的金額與壓力去作判別-「那個案子金額大、重要性高,就派遣能力強的去;那個案子金額少、不具有未來性,所派出的人力跟該專案經理所要的人力就有點落差,這也是基本常識呀!而且專案中的人員,要是在專案參與中沒有離開,那他還是會回到公司裏來。」因此部門經理所期盼的是專案經理帶回來的人,不管是新手或老手,都是再經過歷練成長的。但以肥蝦身為專案經理的經驗,專案經理都會以為自己的專案具有獨特的重要性與未來性,專案所需求的人力與其能力都應該是充分足夠的,因此就造成了部門與專案間的衝突!

此篇文章是肥蝦上任一個月的小小心得,往後在推動部門管理,以及身兼專案經理應該還有一段路要走,屆時再來popo自己的看法與想法,還請 各位先進給予指導!

2011年1月11日 星期二

軟體專案管理第十六週課程心得_什麼是configuration management

什麼是configuration management

光就譯名,Configuration Management這在台灣有人翻譯成建構管理、組態管理、構型管理、或稱之為型態管理;在大陸則稱為配置管理。Configuration Management這個管理作業,因為台灣專案管理環境尚未成熟使然,常常使得光看字意而缺乏實際運作經驗的人很難瞭解其中的要義,或者與version control很難界分清楚。

本周的第十五章型態管理,因為焜安同學有事未能與課故由老師代打,老師在課堂直接就指出現實環境中因為軟體專案的成本與期限壓力,台灣地區甚少有軟體公司會於專案團隊中安排專門的Configuration Management人員與工具,加以Configuration Management也會增加程式開發人員開發作業的複雜度,因此一般有規模的公司也僅僅是作到版本控管(version control)。接續報告的子嵐同學因為並未實際接觸到軟體的開發與維護,因此對於此部分有著些許的陌生。幸而代興同學於銀行的資訊單位工作,無私的與大家分享了銀行在資訊系統的維護或者建構上,對於系統維護與變更的流程規定與實際經驗,其中從需求的提出到確認,以及程式變更的分析、申請、測試與上線都有著一套秩序井然的規定。

說實話,肥蝦也是身處在台灣的軟體產業之中,雖然也過使用單位,但對於Configuration Management也是僅有初淺的認識,尤其是對應到PMI所出版的”Practice Standard for Project Configuration Management”這一本內文僅有26頁,加上附錄也才共51頁的手冊,更是顯得所知有限,在此就只能以管窺天的向大家報告肥蝦的認知與心得,還請 先進們不吝指正。

()型態管理的標準定義

PMBOK的第三版與第四版中,就Configuration 這個字眼的落點處主要在Enterprise Environment Factors中的PMIS(Project Management Information System)Organizational Process AssetsOrganizational corporate knowledge base、第四章整合管理、第五章範疇管理,以及第八章8.1.3品質規劃的產出中的程序改善計畫(Process Improvement Plan)有著Process Configuration。就內文來說兩版間最大的差別在於第三版2004有強調PMO(Project Management Office)Configuration Management中可扮演的角色5.5 control scope 4.3Develop Project Management Plan的工具與技能Project Management Information System中都明列了Configuration Management System。但在第四版2008就將Configuration Management Plan明示於專案管理計畫十二個子計畫與三個基準之中。在PMI所出版的”Practice Standard for Project Configuration Management”第一章介紹中,開門見山所說的定義「Project Configuration Management (PCM) is the collective body of processes, activities, tools, and methods used to manage certain items during the project life cycle. These items are normally referred to as Configuration Items (CIs). Configuration management (CM) typically describes the mechanisms for managing the physical state of these items during their life cycle.」此說明除了集合美國國防部與IEEE的定義外,更加上的生命週期-專案跟型態項目。大陸的機械工業出版社出版,韓萬江姜立新兩位先生在其著軟件項目管理案例教程第九章軟件項目配置管理計劃中對於配置管理所下的定義:「配置管理是在整個系統週期中對一個系統中的配置項進行標識和定義的過程,這個過程是通過控制某個配置項及其後續變更,通過記錄並報告配置項的狀態以及變更要求,證明配置項的完整性和正確性實現的。」

肥蝦對於【軟體專案管理】第十五章開頭列示美國國防部對於型態項目(以下為方便暨與書本一致起見,將Configuration統稱為型態),以及IEEE對於型態管理的說明描述實在是不太認同,不認同的原因是型態項目說:「軟體或硬體的組合元件能夠滿足使用者的需求,而且能夠應用在型態管理上之用途者。」而型態管理定義為:「在整個軟體生命週期中,針對型態項目予以定義與控制各種變更、記錄與報告型態項目的實際狀況,以確保其整體性(Integrity)與可追蹤性(Tractability)的管理過程。」如此把型態項目的說明推到說是要能夠應用在型態管理上之用途;型態管理又說是針對型態項目,那到底什麼是型態?什麼又是型態管理? 對於僅有接觸過版本管理、變更管理,而沒有實際執行過完整型態管理的肥蝦來說,這些說明實在是更令人感到玄上加玄。

()從軟體開發遭遇到的問題看型態管理的定義

因此肥蝦建議,我們從實務現狀中,去瞭解現在一般在開發專案之時容易碰到的問題,也許對於型態管理會有一番不同的體會。肥蝦把我【軟體專案管理】與軟件項目管理案例教程中對於軟體開發工作碰到屬於型態管理可協助改善的問題整理如下表:

項次

問題

出處

1

多人同時更新某一個軟體。

【軟體專案管理】

2

多人共用一個程式碼,部分程式已被更新,但是仍然有些人不知程式內容已經更新。

【軟體專案管理】

3

使用的版本不一致。

【軟體專案管理】

4

發現程式的錯誤原因,無法有效通知相關的人員。

【軟體專案管理】

5

許多設計人員原本可以共用一支程式,但是設計者卻自行開發相同的程式。

【軟體專案管理】

6

找不到某個文件的歷史版本。

軟件項目管理案例教程

7

開發人員使用錯誤的版本修改程式碼或文件。

軟件項目管理案例教程

8

開發人員未經授權修改程式碼或文件,或修改的結果不能及時反應到各個相關部分,導致研發過程不一致。

軟件項目管理案例教程

9

人員流動,交接工作不徹底造成關鍵程式遺失。

軟件項目管理案例教程

10

已修復的錯誤在新版本中出現。

軟件項目管理案例教程

11

沒有保存歷史版本的相關文件,無法重新編譯歷史版本。

軟件項目管理案例教程

12

因協同開發或者異地研發,版本變更混亂。

軟件項目管理案例教程

肥蝦綜合以上的問題,自大的定義了一個針對型態項目的定義:「從專案開始到專案結束之間所有專案進行的文件、開發環境、開發流程、開發工具、程式碼、界面、產出,攸關軟體專案完成的一切要項。」在不考慮多人共同開發之下,就比如由您一人獨挑大樑,從老闆或業務簽下合約開始,到交付出產出,這一連串過程中所要的需求訪談、確認、評估,決定平台、架構、模組元件等設計,工作分派與時程基準,開發過程的溝通記錄,會議與追蹤稽核的記錄,程式與變數的命名規則,程式的版本、品質管控,後續的單元、整合、系統、驗收測試案例與結果,這以上的種種一切有關於專案都應該加以控管;但是一個專案經理或管理團隊,應就公司與客戶的環境與文化、專案成本與時程負擔、專案成敗關鍵等內外在因素進行取捨,就是要於型態管理之前要先行確認型態項目。換言之,就是要先確認專案開發中有哪些要項是在攸關專案成功的!我們所必要與利害關係人溝通的!必須保有正確性、完整性、可見性、協調性、可歸責性、可追蹤性、可重複性、可回溯性、與可控制性的重要項目!

圖一】

參考【軟體專案管理】圖15.1所繪的軟體開發程序,肥蝦把從硬體需求分析到硬體型態項目測試的硬體型態項目發展過程曲線移除,因為硬體型態項目,也應從系統分析需求中的非功能需求開始管控起。因此從系統需求分析到安裝的過程中,都應該有必須被列為型態項目的重要元素。

為了達成專案目標,確保專案努力的成果與方向的正確性,對於認定為型態項目要特別在意變更管理的提出、評估、確認、修改、測試與釋出過程的一致性與充分性,因此對於型態項目現今的狀態,變更的管理,都要能確實的掌控,因此肥蝦以為應該參考”Practice Standard for Project Configuration Management”加上型態管理規劃。何為?因為要確認何種項目為型態要項,型態項目的命名規則,型態變更的流程,型態檢測的頻率與指標,型態項目的存放實體與位置等這一切,應該要有一個先視、全面觀的計畫。因此【軟體專案管理】圖15.1型態項目的管理工作肥蝦修改後繪製如【圖二】。

至於專案管理、專案型態管理與專案變更管理,三者之間的範圍與相關性,可以圖三】表示:

上圖正說明了PMBOK第三版(2004)把型態管理系統(Configuration Management Sysytem)與變更管理系統(Change Control System)納進於專案管理資訊系統(Project Management Information System)之內的原因。

雖說廣意的專案型態管理工具應該包含型態管理系統,但說實話,也可能肥蝦的經驗有限,目前市場上主流的專案管理資訊系統對這一塊均是非常Weak甚至付之闕如。現行實務上,大多使用CVS作為版本管控與文件的管控,【軟體專案管理】書本上所提到的Rational ClearCase因為要價不菲,除非身為IBM的協力夥伴,不然甚少使用;就像那微軟的協力廠商多用Visual SourceSafe一樣。現在已有把專案管理、軟體開發與版本管理整合的趨勢,就如微軟所提出Visual Studio 2010藍圖一樣,這麼的宏大,但是價格也跟這圖四】藍圖一樣的偉大。

()產品型態管理與專案型態管理

最後,肥蝦要進一步說明產品型態管理與專案型態管理間的互動與關聯。專案的產出可能是產品、服務或結果,假設一個研發新網路下單資訊應用系統的專案,專案結束後將交付一套網路下單系統,該系統也會對應一個產品的生命週期,在以專案所產生的網路下單系統必須以產品的Business Idea為始,引發出資訊開發專案,因應專案的型態項目,產品推廣中也將印製與提供系統的操作手冊予公司的客戶與業務人員;同時也將交付系統維護與管理手冊予資訊部門;也將交付系統網路配置圖與維護手冊予網管部門,這將成為也將對應將該產品型態管控的項目,因此產品與專案的流程整合如圖五】

再以Institute of Configuration Management2003年所提供的BUSINESS PROCESS INFRASTRUCTURE,以及焜安同學預擬報告的期刊” Combined application of Product Lifecycle and Software Configuration Management systems for ITER remote handling”為例,肥蝦把兩個重要圖型整合如下圖六】。

因此在商業觀點來看型態管理,將呈現出”Practice Standard for Project Configuration Management”第二章所說明的圖七】架構。

記得肥蝦網站中有一位匿名的先進問了一個問題,肥蝦將其中對於Configuration Management的陳述摘要如下:「其實一直不是很懂Configuration Management,看了一些您的文章後...有點了解 它是屬於PMIS系統中版本或變更相關的部分,是這樣解釋的嗎? 不過..... (1)在第四版P 94中又提到"focus on the spec of both the deliverables and the processes" 覺得 越來越混亂 (2)Product Configuration又是什麼呢? 是指功能性嗎? 可以舉個例子嗎? 謝謝您!! (3)在第四版P 110中又提到configuration management activities such as how changes to the product, service, or result requirements will be initiated, how impacts will be analyzed.....怎麼又跟版本不太像呢??」這位先進已把第四版(2008)中對於描述Configuration Management的頁次都明白標示,可見該位先進對於PMBOK的精研程度。但是肥蝦以為PMBOK4.5 Perform Integrated Change Control(9495)中對於Configuration Management的說明僅是以整合變更控制程序(integrated change control process)中所涵蓋的Configuration Management加以說明;在5.1 搜集需求(Collect Requirements)產出中的Requirement Management Plan(110)所說明的Configuration Management actives也僅是就Configuration Management中對於需求處理部分的活動。

因此肥蝦在網站上回答了如下的言語:「基本上CM包含了所謂的版本控管,更遠大於版本控管,不只是程式碼,文件,開發的SDK....都包含在CM之內!(開發的工具版本當然也要控管,不然團隊中有人用JDK1.1,JDK1.2,JDK1.6,那不就亂套了) PMI中又把它分為Project Configuration ManagementProduct Configuration Management(如產品技術手冊等)! 然後中間又有CM Interface.」意思是,除了專案開發所對應的Project Configuration Management之外,對於Project完成所交付的產品也有著Product Configuration Management並且彼此間有著緊密的關聯。

以上是肥蝦對型態管理的初淺認識,還請 先進們多多指正!

2011年1月3日 星期一

軟體專案管理第十五週課程心得_風險值多少


風險值多少?

1228尚文仕賢同學報告第十四章風險管理之時,正巧班上的一位任職於富X證券的同學,因為27日晚機房起火,正忙著幫忙處理善後,不克與課!這對風險的管理,正是一個絕佳的範例。

在書本中,對於風險的定義為:(公式一)

P:機率、L:損失。

而風險降低比的值為:(管理前之風險損失-管理後之風險損失)/(風險降低所花費的成本)

看著這些公式,對照著書本中解釋風險與專案的困難或問題的差異說明:

(1)風險是針對未來的事件。

(2)風險的發生及造成的損失均不確定。

(3)風險一旦發生將對專案造成重大或致命性的影響。

未來、不確定、重大或致命性!這是多麼模糊主觀的字眼。既然是以後的事,造成的影響又是不確定,這不確定又要重大或致命,這不是在玩文字堆砌嗎?在描述專案風險的經典名著【與熊共舞】之中,對於專案的風險有著不少精彩的討論。在其第二章中說明風險包含兩個要素:(1)一個有可能在未來造成意外結果的事件。(2)意外結果本身。這對這未來的意外結果要如何衡量呢?又如何能得知管理後的意外結果價值如何?

看看書中對於風險的辨識與損失暨機率的評估方法,幾乎全是人為主觀方法的認定與評選,不管是一肥蝦或是一群人!在PMBOK中對於風險屬量性資料的研究提出了:Sensitivity Analysis(敏感度分析)Excepted Monetary Value(EMV) Analysis(期望貨幣價值分析)Modeling and Simulation(模型與模擬)這三種方式。也許常有人聽說用蒙地卡羅模擬跑一下,不就知道了風險值!但是以上方式都有一個很重要的基礎:瞭解風險的要項,以及其可能的機率分佈樣貌。不管是蒙地卡羅模擬、或是決策樹、或是迴歸,這些都是基於以往的歷史資料,或者是假設為一種機率分配型態,就有著衡量不確定性的不確性內涵於其中。

舉例而言,相對於專案風險值的計算,財務金融領域對於風險值是有著比較明確與完整的方法,雖然該等計算方式仍不脫於歷史經驗與機率理論,但因為有著國際性組織-國際清算銀行下的巴塞爾銀行監理委員會(BCBS),定義了相關的規範-巴塞爾協定,因此金融業者之間對於風險有著共通性的語言與定義。在巴塞爾協定中將金融風險區分為信用、市場與作業之外,還有著更難衡量的其它風險-信譽風險、策略風險、受託人風險。協定中除了定義的風險要項,並且提供由淺入深的階段性計算方法,信用風險有:Simplified StandardizedStandardized ApproachFoundation Internal Ratings-Based ApproachAdvanced Internal Ratings-Based Approach;市場風險有:Standardized ApproachInternal Models Approach;作業風險有:Basic Indicator ApproachStandardized ApproachAdvanced Measurement Approach。上述該等方法,其實都源自於大型國際性金融單位的經驗與認知所推演而出,因此一些非歐美系、或者地區性小型金融單位於推展之時不免有諸多難處。但是,但是2007年的全球行次貸危機還是使得一些大型金融機構應聲而倒,因此可證,基於歷史資料或者主觀經驗的風險值仍隱含著若干未知的風險,因此風險的價值估算目前仍是一個難解的議題。

就算如此,但肥蝦以為,風險的估算仍是軟體專案不可或缺的重要部分,就像Edward De Bono在【在「沒有問題」裡找問題】一書中第十講中所說的:「計畫是依照現實狀況及推斷當下潮流而擬定的,在快速運轉的世界裡,計畫幾乎總會有失誤。計畫的不可靠不能作為忽視它的藉口,而是要視為一種提醒我們計畫不能做得沒彈性的警訊。做計畫時要考量到狀況會改變,同時也得顧及特定狀況會不會持續。重要的是規畫時就要顧慮到彈性和不確定性。」相較於計畫,風險也是基於經驗、現實狀況,以及推斷當下潮流所進行的估計,也萬不可以因為估計上的誤差,就予以放棄,而是要設法保持風險估計與回應方法上的彈性與穩健性。

在軟體專案的風險衡量上,應該要如何進行呢?目前不管是參考功能點法、快速功能點法、PERTRiskologyISO 27005或者STSCGuidelines for Successful Acquisition and Management of Software Intensive Systems, Version 3.0 對於軟體專案中風險的估算,都有著參考者需要自行客製化的部分要素,甚至需要設定所可能面對的機率分配,因此風險估算並非是依據特定不變的公式計算,這是一般應有的基本認知。

就肥蝦的經驗與認知,在專案初起之時,風險值的估算與回應,可以依據下述步驟進行:(1)風險要素的判別。(2)風險要素的機率設定。(3)風險要素的量值。(4)風險要素回應的規劃。

在此須先述明,以下的作法與邏輯僅為肥蝦的認知,並未有任何相關文獻與統計的支持,因此分享的目的在提供大家一起集思廣義而已。

(1)風險要素的判別

肥蝦建議風險要素的判別可以先從三個面向,以及參考【與熊共舞】第三章所陳述的不確定性來源作以下的風險要項矩陣分類:

面向

議題

已知的未知

未知的未知

商業觀點

客戶觀點

技術觀點

需求(requirement)

要作的究竟是什麼?

匹配(match)

要如何與使用者,以及其他周邊設備進行互動?

變動的環境(changing environment)

在開發期間,若需求與目標改變的話,該怎麼辦?

資源(resources)

哪些關鍵的專業技術是必備的?

管理(management)

有足夠的管理天份去組織一個具生產力的團隊,維持士氣,低離職率,以及協調眾多錯綜複雜的工作?

供應鏈(supply chain)

都能如期得到開發的其他單位的支援嗎?

政治(politics)

如果動用政治力來影響現實會有什麼效果?對專案最後的成功會造成什麼限制?

衝突(conflict)

不同的利害關係人(stakeholder)的目標彼此衝突時,該如何排解?

創新(innovation)

影響專案最終成果的各種技術和方案有多麼獨特?

規模(scale)

把份量和範圍擴大之後,對專案執行績效的衝擊會有多大?

依據上面的矩陣,進一步利用Rubin JenPMI網站所發表的-「Visual Ishikawa Risk Technique(VIRT) – An Approach to Risk Management」的方法,由專案參與的先導者進行悲觀式的風險思考,將思考所得的悲觀因素填入上面的風險要項矩陣表。

Visual Ishikawa Risk Technique(VIRT)是一個以圖形呈現與分類風險因子的工具。以圖形陳列出高階的風險群組與風險因子,在依據每個高階的風險因子,繼續探究其下的相關風險要項,其間用實線描繪出風險因素間直接的關聯性,如此可以呈現出一個風險的整體架構,也易讓人具有完整的印象。其步驟為-(1)建立風險分解結構(Create the RBS)(2)鑑別專案失敗要點(Identify Points of Failure)(3)鑑別顯著的障礙(Identify Significant Obstacles)(4)分解專案失敗要點至風險細項(Decompose Points of Failure to Detailed Risks)(5)完成後續的風險管理活動(Complete Following Risk Management Activities)(6)運用至持續狀態報告與重複狀態顯示(Apply to Ongoing Status Reports and Recurring Status Presentations)

(圖一)

肥蝦深覺VIRT是一個不錯的鑑別、追蹤與重新檢視風險的好工具,如果再以虛線描述之間的不同群組或類別間風險因素的互動,如此將更能助益於之後的風險回應計劃的討論與建構。本文所展現的圖形,即是肥蝦稍加修改過的圖形表示法。但是麻煩的是會把圖形弄得非常複雜,因此可以利用MS Visio的圖層屬性去分層表示以保持圖形的明確性與可見性。

(2)風險要素的機率設定。

接著,專案的先導成員可以主觀的設定各風險要項的發生機率,每一項機率值為,此要項發生對專案違約或失敗的可能性。所有的機率總合不必為一,但是必須能有效的說明出理由。機率給定的方式可以取所有人的給定值的均數或眾數;但是需要標註所有人給定機率值的上下數字間的差距。此時,如果公司內部或者外界相關單位有著可以參考的數據或量表,可以提供予成員參考,但不可就用外部的資源源數據就具以填入要項表格之中,因為每個企業、部門、或者專案,都有相對的獨特性,因此任何外部資料僅供於參考即可。

面向

議題

已知的未知

未知加權

商業觀點

客戶觀點

技術觀點

聯集

要項

P

R

要項

P

R

要項

P

R

要項

P

R

需求(requirement)

上表中的P代表該項的發生機率的均數;R為專案先導成員對此要項給定機率值中最高與最低的差距。

(3)風險要素的量值。

有了風險要項,以及機率,接著要如何衡量每個風險要項?其實每個要項可能的損失額為何,是一個難以衡量的價值。因此肥蝦以為就以專案的報價或者該專案的合約金額為所以計算風險值的基礎價值。一來,可以簡化風險值的計算。二來,經由一些文獻上的實證,早期的風險或失誤,所導致的修正成本隨著專案的進行而成幾何級數的增加。

因此,對於公式一之風險定義值中,L將統一為專案的合約金額,但是必須再加入對於風險機率差距的權重,以及針對十項不確定性來源中可能未知的風險部分,此就是PMBOK中所提到的unknown risks,這部分因為是未知的風險,所以可以依據主觀的經驗設定,根據以往的專案經驗,根據業界參數值的調整後結果,或者就照著已知風險估計的分配狀況。因此風險的定義值可修改為為:公式二

其中的j為不確定性類別,i為類別中的風險要項,R為該風險要項中的機率全距,UP不確定性類別中unknown risk的比率權重。

(4)風險要素回應的規劃。

接著對於風險的回應,除了參考書中所描述的風險減緩策略-風險預防、風險解決、風險避免、風險分散、風險移轉的部分外,也可以參在PMBOK上所定義的幾種方式:

風險回應策略類別

風險回應作業

Strategies for Negative Risks or Threats

-Avoid(避免)

-Transfer(移轉)

-Mitigate(減緩)

-Accept(接受)

Strategies for Positive Risks or Opportunities

-Exploit(利用)

-Share(分享)

-Enhance(擴大)

-Accept(接受)

Contingent Response Strategy

更重要的是,可以根據專案開發的模式與時程,決定風險策略的執行與檢核時點。比如於建議書的撰寫中就必須考慮閃躲的風險,在專案規劃階段就必須強調的風險與對應的工作項目,在專案執行間根據風險的trigger所驅動的風險回應作業等等。

肥蝦以為,風險回應的即時性、有效性與彈性遠重於風險回應的完整性。針對規劃階段對於風險回應的思考,可以參考【與熊共舞】第三章所陳述的內容:

(1)為什麼沒有XXX,專案就無法完成?

(2)為什麼XXX是在要徑(critical path)?

(3)沒有其他替代方法來取代XXX的功能嗎?

(4)XXX無法如期完工,為何不動用這些替代方法讓專案目標達成?

(5)不能重新設計(replan)讓替代方法發生功能嗎?

(6)不能在執行特定活動前,就先重新設計嗎?

(7)之前有察覺到XXX的延誤會是一個潛在的風險嗎?

(8)先前類似XXX的活動都不曾延誤嗎?

(9)之前類似的專案中有任何歷史記錄嗎?

(10)開發團隊有參考先前類似專案的經驗嗎?如果有參考過有從中學到什麼嗎?

(11)那專案的管理階層上有採納建議嗎?

(12)對可能造成的延誤,專案團隊有提出足夠的警告嗎?

風險的處置都需要花費成本,更重要的是風險回應的重點不再於消除專案所有的風險,而是要能明瞭我們需要負擔哪些風險,以及所能承受的風險。就像那巴塞爾協定-所有風險的計算轉為要求金融單位計提的自有資本,惟有明瞭自我的風險承受度,才能確保所承作專案的安全性。

以上是肥蝦對於專案初起階段計算專案風險值的簡略想法,疏漏或錯誤在所難免,還請 先進指正!