close
軟體開發執行固然重要 但支援管理亦不可廢
前言:在重硬體輕軟體的台灣產業結構下,軟體產業處於相對弱勢,其次,由於台灣軟體產業的國際化程度不若硬體產業高,與國際大廠合作、獲取國際大廠經驗的機會也相對較少,因此,台灣企業對軟體研發之重視,以及相關的製程規範,多不若台灣硬體產業嚴謹。不過,在正式邁入知識經濟時代後,各企業為有效因應微利市場的經濟衝擊,且有鑑於歐美及印度軟體工業之興盛,如何透過軟體加值服務創造高附加價值,遂成為台灣企業關注的焦點。
一般而言,軟體程式是由所要處理的宣告資料及邏輯指令組成,若依軟體工程觀點來看,尚應注重軟體開發團隊及軟體使用者等2個構面,不過傳統上,台灣軟體產業多只關注與電腦程式相關的構面,往往忽略了與人員相關的部分。在這樣的產業環境下,台灣軟體從業員閉門造車,以及軟體專案臨時中止等狀況,早已成為業界的常態,因此,如欲提升台灣軟體產業之競爭力,就應該從最基礎的落實軟體工程概念做起,透過工程營建之概念來執行軟體研發,除了能確實改善台灣軟體產業的不良結構,亦可有效提升台灣軟體產業之國際競爭力。
以工程概念落實軟體研發之統籌執行
工程與科學之不同處,在於前者是以具備系統計畫的工作進程來追求最佳化,而後者則以追求卓越為目標,也就是說,工程是考慮當下各種狀況與限制後,以最適的結果為目標,而科學則是力求呈現最極致完美的結果。在這樣的邏輯下,所謂的軟體工程,即是有系統、有計畫的宣告資料、撰寫邏輯指令,並滿足開發人員及軟體用戶的最佳工作進程;而軟體工程標準之導入,更應以各個軟體專案及組織為本,作適度剪裁調整,以期降低不必要的耗費,獲取最大綜效利益。
全球知名的軟體工程標準極多,但是無論各軟體專案是採取何種標準,若以作業面來切割軟體專案,必定不脫專案管理、軟體開發、軟體測試、產品評估/品保及架構管理等5個構面。
為使開發團隊上下齊心、發揮相乘的整體戰力,避免落入「一人一把號,各吹各的調」的窘境,因此,務必落實軟體專案管理。所謂的專案管理,乃是將知識、技術、工具及方法,綜合運用到一專案活動上,以期能符合專案的需求,由於軟體專案管理必涉及人員組織管理(People)、任務技術管理(Technical)及企業經營環境等3項因素,因此,軟體專案的研發過程,必然會遭遇到持續不斷的風險與混亂,諸如顧客需求變更、專案資源不足及成果出錯等皆是。為了避免專案受到各混亂所影響而中止,管理一職至為重要,其中,團隊開發的概念更是關鍵。
一般而言,軟體專案管理涉及軟體開發規劃、開發管理、開發程序、正式審查與稽核、風險管理、保密作業、分包管理、確認與驗證、更正行動處理、問題與修改報告、成本管理、資源管理、人力組織及教育訓練等環節,需要擁有各式各樣專長的人員共同參與,由於軟體專案不若一般持續性的作業程序,而是為特定目的執行的工作,亦即專案組織通常是為了執行該專案而設立,專案終止即告解散,因此,以開發專案為主的團隊,可考慮採行工作小組(Working Unit)的概念建構組織,不僅能靈活調度,也可以滿足專案管理的概念。
所謂的工作小組,是軟體開發團隊中最小的組成單元,必須建基在 1個一致的統籌管理概念下,當軟體組織日趨龐大、軟體專案日趨複雜時,便可將人員依專長編組成一個個3∼4人的工作小組,再由這些工作小組,組合衍生出上層的科、部、處、甚或產品線等單位。無論軟體專案規模之大小,皆可依需求將工作分配給各小組執行,或直接徵調工作小組進入專案組織中。
由於工作小組中的組成人員很少,因此管理需求大幅降低;而以成員專長一致的工作小組為單位安排工作,不僅可以互相交流討論、互相支援工作,又能共同承擔責任、共同享受成果,比較不會覺得孤立無助,也比較能夠凝聚向心力,並且一起學習成長。
至於軟體開發方面,由於軟體開發可用的工程方法與程式語言極為多元,端視各軟體專案之需求來選擇,但總結來看,當企業決定以某一工程方法執行軟體開發作業時,仍需要相關人員全心配合,而該工程方法是否能有效接軌國際軟體市場現狀,亦應列入考量。
至於到了軟體測試階段,各軟體從業員應清楚明瞭測試(Test)及除錯(Debug)之差異;所謂的測試,著重於尋找軟體產品的錯誤及缺陷,而除錯則是偵測軟體產品錯誤之處,並予以修正改善。
若依軟體專案生命週期將測試動作進行分解對應,可簡單分為下列幾個測試層次(Test Level):第一,對應系統需求分析階段,應有測試人員進行系統鑑定測試;第二,對應系統設計階段,應有測試人員進行系統整合及測試;第三,對應軟體需求分析階段,應由測試人員執行軟體鑑定測試;第四,對應軟體設計階段,需有測試人員進行軟體組件整合及測試;第五,對應編碼階段,需由測試人員進行軟體元件測試。每個層次能否有效執行,乃是影響該軟體專案成功與否的關鍵因素。
產品評估及架構管理的支援功能極為重要
軟體研發概念乃由單純的軟體開發、程式系統開發、程式產品開發進展到程式系統產品開發,簡言之,軟體開發所涉及的管理層面日益廣泛,從軟體研發執行端到支援端皆應考量。一般而言,論及軟體研發,多只著重於專案管理、軟體工程及測試管理等執行面,但是就軟體專案的整體生命週期來看,產品評估及架構管理等支援面作業,亦極為重要。
軟體研發的產品評估概念涉及產品評估人員/組織/職責、最後產品評估、軟體評估記錄及評估準則,可將評估的概念依照管理導向觀點(軟體品質因素),決定軟體導向特性(軟體評量準則)及量化特性數據(軟體衡量尺度)的相關標準,並於軟體開發過程中落實該標準。
所謂的軟體架構管理,涉及了規劃、識別、管制、狀況記錄、稽核、媒體儲存/管理/交付及工程變更建議/通知等構面,目前台灣軟體產業較著重於版本管制(Version Control)、出貨管制(Release Control)、變更管制(Change Control)及測試程式管制(Test Suite Control)等軟體架構管制面向,但事實上,應以團隊模式進行軟體架構管理。
簡言之,在理想的狀態下,應由一獨立的軟體架構管理委員會或部門來擔任中控統籌單位,其他軟體相關各部門,包括專案管理單位、軟體開發單位、軟體測試單位、軟體品保單位及軟體使用單位,如果有任何需求,也都可透過該中控部門加值處理後,執行放行、轉交甚或交付,若能徹底落實此概念,必定可提升軟體研發之效率及效能。
以管理者的4力與3感 創造雙贏局面
對台灣軟體業者而言,軟體專案的臨時中止,最令其感到頭痛,促成軟體專案臨時中止的因素極多,就客戶端而言,以客戶需求變更因素最為關鍵,若以軟體供應商本身來看,則有內部工作流程是否具工程概念等問題。
當企業面對諸如此類的專案管理問題時,亟需軟體專案管理者拿出一定的方法與魄力來解決,舉例來說,當軟體專案面臨客戶需求變更時,解決方法之一,是可由軟體專案甲方及乙方,於專案之初即先約定該軟體專案可調變之範圍及時點來排解。
對軟體專案管理人來說,管理步驟可以PDCA循環及回饋控制系統(即計畫、執行、檢測及行動)落實,但最重要的管理要點,則是由策略、常識邏輯及態度3項來執行,簡言之,專案管理人必須先以理論基礎、實務經驗及創意來執行管理策略;其次,藉由不間斷的觀察、學習及用心,來累積管理常識及邏輯;最後,管理人更需具備正向、積極及激勵的態度來管理專案,如此方能帶動軟體專案順遂執行。
由於軟體專案管理者的能力需要由理論基礎、實務經驗及創意來促成,因此,管理者是否能從每次的專案培育自身的洞察力、決策力、執行力,以及管理者是否能針對其所執行過的軟體專案,進行持續性的反省評估,皆是重要關鍵。這裡所謂的反省力,不單指管理者於每個專案結束後的回顧反省,還需要該管理者將每次專案執行之過程心得,進行個案處理,並將之有效運用至其後主導的每個軟體專案當中,未必要照本宣科的引用,重點在於管理意念之有效轉移。
其次,管理者是否能秉持盡力完成軟體專案的使命感以及責任感來執行該專案、是否能對完成該軟體專案具成就感,亦是重點,當管理者能將該軟體專案視如己出的珍惜及愛護時,對該專案的使命感、責任感及成就感便油然而生,當主導該軟體專案的管理者,能以此類的正向態度管理軟體專案時,該專案之成功率將可大為提升。
總結來說,無論是軟體專案的甲方或乙方,都期望能從軟體專案中有所收獲,對軟體專案甲方而言,自然是期待產品符合其需求,而得以享受成果,對專案乙方來說,則是期望能從中賺取利潤,並增進本身技術與專案能力,在這樣的狀況下,負責專案統籌規劃的管理者,即應盡已所能創造出客戶及相關從業員之雙贏效益。
台灣固網資訊專案處/應用服務處處長王紀先
王紀先小檔案
學歷:國立交通大學電信工程系學士、國立交通大學電信研究所碩士。
經歷:中山科學研究院技士、美商瑞理台灣分公司技術顧問、滾石網絡科技娛樂通信事業部(現為滾石移動)技術總監、遠傳電信企業資訊整合暨服務支援部協理。
現職:台灣固網資訊專案處/應用服務處處長。(蔡宜秀攝影)
前言:在重硬體輕軟體的台灣產業結構下,軟體產業處於相對弱勢,其次,由於台灣軟體產業的國際化程度不若硬體產業高,與國際大廠合作、獲取國際大廠經驗的機會也相對較少,因此,台灣企業對軟體研發之重視,以及相關的製程規範,多不若台灣硬體產業嚴謹。不過,在正式邁入知識經濟時代後,各企業為有效因應微利市場的經濟衝擊,且有鑑於歐美及印度軟體工業之興盛,如何透過軟體加值服務創造高附加價值,遂成為台灣企業關注的焦點。
一般而言,軟體程式是由所要處理的宣告資料及邏輯指令組成,若依軟體工程觀點來看,尚應注重軟體開發團隊及軟體使用者等2個構面,不過傳統上,台灣軟體產業多只關注與電腦程式相關的構面,往往忽略了與人員相關的部分。在這樣的產業環境下,台灣軟體從業員閉門造車,以及軟體專案臨時中止等狀況,早已成為業界的常態,因此,如欲提升台灣軟體產業之競爭力,就應該從最基礎的落實軟體工程概念做起,透過工程營建之概念來執行軟體研發,除了能確實改善台灣軟體產業的不良結構,亦可有效提升台灣軟體產業之國際競爭力。
以工程概念落實軟體研發之統籌執行
工程與科學之不同處,在於前者是以具備系統計畫的工作進程來追求最佳化,而後者則以追求卓越為目標,也就是說,工程是考慮當下各種狀況與限制後,以最適的結果為目標,而科學則是力求呈現最極致完美的結果。在這樣的邏輯下,所謂的軟體工程,即是有系統、有計畫的宣告資料、撰寫邏輯指令,並滿足開發人員及軟體用戶的最佳工作進程;而軟體工程標準之導入,更應以各個軟體專案及組織為本,作適度剪裁調整,以期降低不必要的耗費,獲取最大綜效利益。
全球知名的軟體工程標準極多,但是無論各軟體專案是採取何種標準,若以作業面來切割軟體專案,必定不脫專案管理、軟體開發、軟體測試、產品評估/品保及架構管理等5個構面。
為使開發團隊上下齊心、發揮相乘的整體戰力,避免落入「一人一把號,各吹各的調」的窘境,因此,務必落實軟體專案管理。所謂的專案管理,乃是將知識、技術、工具及方法,綜合運用到一專案活動上,以期能符合專案的需求,由於軟體專案管理必涉及人員組織管理(People)、任務技術管理(Technical)及企業經營環境等3項因素,因此,軟體專案的研發過程,必然會遭遇到持續不斷的風險與混亂,諸如顧客需求變更、專案資源不足及成果出錯等皆是。為了避免專案受到各混亂所影響而中止,管理一職至為重要,其中,團隊開發的概念更是關鍵。
一般而言,軟體專案管理涉及軟體開發規劃、開發管理、開發程序、正式審查與稽核、風險管理、保密作業、分包管理、確認與驗證、更正行動處理、問題與修改報告、成本管理、資源管理、人力組織及教育訓練等環節,需要擁有各式各樣專長的人員共同參與,由於軟體專案不若一般持續性的作業程序,而是為特定目的執行的工作,亦即專案組織通常是為了執行該專案而設立,專案終止即告解散,因此,以開發專案為主的團隊,可考慮採行工作小組(Working Unit)的概念建構組織,不僅能靈活調度,也可以滿足專案管理的概念。
所謂的工作小組,是軟體開發團隊中最小的組成單元,必須建基在 1個一致的統籌管理概念下,當軟體組織日趨龐大、軟體專案日趨複雜時,便可將人員依專長編組成一個個3∼4人的工作小組,再由這些工作小組,組合衍生出上層的科、部、處、甚或產品線等單位。無論軟體專案規模之大小,皆可依需求將工作分配給各小組執行,或直接徵調工作小組進入專案組織中。
由於工作小組中的組成人員很少,因此管理需求大幅降低;而以成員專長一致的工作小組為單位安排工作,不僅可以互相交流討論、互相支援工作,又能共同承擔責任、共同享受成果,比較不會覺得孤立無助,也比較能夠凝聚向心力,並且一起學習成長。
至於軟體開發方面,由於軟體開發可用的工程方法與程式語言極為多元,端視各軟體專案之需求來選擇,但總結來看,當企業決定以某一工程方法執行軟體開發作業時,仍需要相關人員全心配合,而該工程方法是否能有效接軌國際軟體市場現狀,亦應列入考量。
至於到了軟體測試階段,各軟體從業員應清楚明瞭測試(Test)及除錯(Debug)之差異;所謂的測試,著重於尋找軟體產品的錯誤及缺陷,而除錯則是偵測軟體產品錯誤之處,並予以修正改善。
若依軟體專案生命週期將測試動作進行分解對應,可簡單分為下列幾個測試層次(Test Level):第一,對應系統需求分析階段,應有測試人員進行系統鑑定測試;第二,對應系統設計階段,應有測試人員進行系統整合及測試;第三,對應軟體需求分析階段,應由測試人員執行軟體鑑定測試;第四,對應軟體設計階段,需有測試人員進行軟體組件整合及測試;第五,對應編碼階段,需由測試人員進行軟體元件測試。每個層次能否有效執行,乃是影響該軟體專案成功與否的關鍵因素。
產品評估及架構管理的支援功能極為重要
軟體研發概念乃由單純的軟體開發、程式系統開發、程式產品開發進展到程式系統產品開發,簡言之,軟體開發所涉及的管理層面日益廣泛,從軟體研發執行端到支援端皆應考量。一般而言,論及軟體研發,多只著重於專案管理、軟體工程及測試管理等執行面,但是就軟體專案的整體生命週期來看,產品評估及架構管理等支援面作業,亦極為重要。
軟體研發的產品評估概念涉及產品評估人員/組織/職責、最後產品評估、軟體評估記錄及評估準則,可將評估的概念依照管理導向觀點(軟體品質因素),決定軟體導向特性(軟體評量準則)及量化特性數據(軟體衡量尺度)的相關標準,並於軟體開發過程中落實該標準。
所謂的軟體架構管理,涉及了規劃、識別、管制、狀況記錄、稽核、媒體儲存/管理/交付及工程變更建議/通知等構面,目前台灣軟體產業較著重於版本管制(Version Control)、出貨管制(Release Control)、變更管制(Change Control)及測試程式管制(Test Suite Control)等軟體架構管制面向,但事實上,應以團隊模式進行軟體架構管理。
簡言之,在理想的狀態下,應由一獨立的軟體架構管理委員會或部門來擔任中控統籌單位,其他軟體相關各部門,包括專案管理單位、軟體開發單位、軟體測試單位、軟體品保單位及軟體使用單位,如果有任何需求,也都可透過該中控部門加值處理後,執行放行、轉交甚或交付,若能徹底落實此概念,必定可提升軟體研發之效率及效能。
以管理者的4力與3感 創造雙贏局面
對台灣軟體業者而言,軟體專案的臨時中止,最令其感到頭痛,促成軟體專案臨時中止的因素極多,就客戶端而言,以客戶需求變更因素最為關鍵,若以軟體供應商本身來看,則有內部工作流程是否具工程概念等問題。
當企業面對諸如此類的專案管理問題時,亟需軟體專案管理者拿出一定的方法與魄力來解決,舉例來說,當軟體專案面臨客戶需求變更時,解決方法之一,是可由軟體專案甲方及乙方,於專案之初即先約定該軟體專案可調變之範圍及時點來排解。
對軟體專案管理人來說,管理步驟可以PDCA循環及回饋控制系統(即計畫、執行、檢測及行動)落實,但最重要的管理要點,則是由策略、常識邏輯及態度3項來執行,簡言之,專案管理人必須先以理論基礎、實務經驗及創意來執行管理策略;其次,藉由不間斷的觀察、學習及用心,來累積管理常識及邏輯;最後,管理人更需具備正向、積極及激勵的態度來管理專案,如此方能帶動軟體專案順遂執行。
由於軟體專案管理者的能力需要由理論基礎、實務經驗及創意來促成,因此,管理者是否能從每次的專案培育自身的洞察力、決策力、執行力,以及管理者是否能針對其所執行過的軟體專案,進行持續性的反省評估,皆是重要關鍵。這裡所謂的反省力,不單指管理者於每個專案結束後的回顧反省,還需要該管理者將每次專案執行之過程心得,進行個案處理,並將之有效運用至其後主導的每個軟體專案當中,未必要照本宣科的引用,重點在於管理意念之有效轉移。
其次,管理者是否能秉持盡力完成軟體專案的使命感以及責任感來執行該專案、是否能對完成該軟體專案具成就感,亦是重點,當管理者能將該軟體專案視如己出的珍惜及愛護時,對該專案的使命感、責任感及成就感便油然而生,當主導該軟體專案的管理者,能以此類的正向態度管理軟體專案時,該專案之成功率將可大為提升。
總結來說,無論是軟體專案的甲方或乙方,都期望能從軟體專案中有所收獲,對軟體專案甲方而言,自然是期待產品符合其需求,而得以享受成果,對專案乙方來說,則是期望能從中賺取利潤,並增進本身技術與專案能力,在這樣的狀況下,負責專案統籌規劃的管理者,即應盡已所能創造出客戶及相關從業員之雙贏效益。
台灣固網資訊專案處/應用服務處處長王紀先
王紀先小檔案
學歷:國立交通大學電信工程系學士、國立交通大學電信研究所碩士。
經歷:中山科學研究院技士、美商瑞理台灣分公司技術顧問、滾石網絡科技娛樂通信事業部(現為滾石移動)技術總監、遠傳電信企業資訊整合暨服務支援部協理。
現職:台灣固網資訊專案處/應用服務處處長。(蔡宜秀攝影)
全站熱搜
留言列表