趙俊 石春
摘要:軟件工程是軟件產品開發進程中的工程化方法,而項目管理是針對一個項目的管理方法。不論是軟件工程還是項目管理在軟件開發進程中都占據著重要的位置,項目管理與軟件工程的有效結合,能夠進一步促進企業軟件開發的效率,促使企業效益最大化。因此,本文基于項目管理與軟件工程的含義與二者之間的關系,探究軟件開發進程中項目管理與軟件工程的結合及應用。
關鍵詞:軟件開發;項目管理;軟件工程
中圖分類號:TP399 文獻標識碼:A
隨著電腦、移動終端等設備的普及,軟件成為必不可少的一部分,改變著人們的日常生活與工作。然而近年來,軟件規模不斷擴大,其復雜程度也隨之加深,這對企業軟件開發進程中的效率、質量以及成本控制提出了新的要求,在此背景下傳統的僅遵循軟件工程規律缺乏項目管理的軟件開發模式逐漸不再適用于新時代需求。20世紀70年代中期,美國在調查軟件開發進程中出現不能按時交付、成本過高以及質量低下等問題時發現,絕大部分的問題都是由于管理不善所導致,由此,軟件開發者意識到軟件開發進程不僅僅是軟件工程還是項目管理的一個過程。企業應當以通用的項目管理知識體系為基礎,結合軟件工程自身的科學規律,采用適合軟件產品自身特點的管理方法,從而把控好軟件開發進程中的方方面面,促使效益最大化。
1軟件工程與項目管理
1.1軟件工程
軟件工程目前并沒有一個明確的定義,但說起軟件工程就會說到20世紀60年代的軟件危機。20世紀60年代以前,計算機剛剛投入實際應用中,軟件也并非現代社會中具有豐富界面與功能的軟件,而是功能單一的小規模軟件。60年代中期,計算機技術的進步使得軟件規模越來越大、復雜程度越來越高,由此導致軟件生產率與質量大幅下降,軟件危機開始爆發。1968年,北大西洋公約組織的計算機科學家在聯邦德國召開國際會議,就軟件危機的問題展開討論,并首次提出“軟件工程”這一概念,軟件工程學也由此誕生。目前,軟件工程仍舊缺乏一個統一的定義,學者們對此眾說紛紜。BarryBoehm在發表的文章中指出軟件工程是借助于現代科學技術知識去對計算機程序進行設計與構造的必要的資料;電子與電子工程協會則將軟件工程定義為是一種能夠應用于軟件開發、運維進程中的系統化的嚴格約束的可量化的方法;《計算機科學技術百科全書》則認為軟件工程是借鑒了傳統工程原則與方法,集數學、計算機科學等原理用于開發軟件的工程;IS09000將軟件工程定義為是輸入轉化為輸出的一組彼此相關的資源和活動。綜上所述,軟件工程實際上是結合數學、工程等學科用以軟件開發的規范化、可量化的一種過程化方法。
1.2項目管理
在早期軟件開發進程中,根據調查,發現軟件研發的情況中僅有百分之十的開發項目能夠在原本約定的時間與成本下完成,由此軟件開發者開始重視項目管理的作用。項目管理通常由項目范圍管理、項目時間管理、項目成本管理、項目質量管理、項目團隊管理、項目風險管理等方面所構成,項目管理在實際的應用中是一個循環的過程,開始——計劃——執行——控制——結束,這一系列的過程一步步促進項目的實現。
軟件項目管理也是項目管理的一種,在軟件開發進程中為實現軟件項目在整個軟件生命周期中能夠按照預定的時間、成本以及質量中完成開發從而對軟件項目中的軟件需求分析、軟件產品設計、軟件產品維護等方面進行把控與管理的工程活動。
1.3軟件工程與項目管理之間的關系
軟件工程與項目管理之間息息相關且相輔相成,軟件工程關注軟件的生命周期,為軟件生命周期中的各個階段提供工程化方法。項目管理則關注項目生命周期,針對項目生命周期中各個階段進行管理。軟件工程側重于軟件,而項目管理側重于項目過程。二者之間的關系主要為:
1)軟件本身具有一定的科學規律,在上述關于軟件工程的定義中BarryBoehm等人對于軟件工程總結了許多具有規律性的內容,并且將其整合成一系列的工程化方法。軟件項目管理究其根本是依托于軟件工程,離開了軟件工程那么軟件項目管理也就失去了基本意義,項目管理的本質是為了能夠提交符合要求的軟件產品,而軟件產品的開發亦離不開軟件工程。因此,要做好軟件項目的管理就必須能夠對軟件工程有個深刻的認知與理解。
2)不論是軟件工程還是項目管理,都涉及一些重疊的部分。在軟件工程中包含著一些管理方面的問題,而在項目管理中亦包含著軟件工程的工程方法。二者之間,內容有重疊卻又不完全相同,存在相互補充相互依賴的關系。例如在項目管理知識體系中強調人力資源管理的有關管理方法,而在軟件工程中則強調系統分析人員、編程人員、測試人員等不同角色在不同階段的責任。在軟件項目管理中,應充分注意這兩者的有機結合。
2軟件開發現狀
由于我國軟件開發技術起步較晚,導致我國軟件開發中軟件工程技術以及項目管理的應用存在許多弊端。
2.1缺乏合適的軟件開發管理模式
目前來說,企業大部分都能夠樹立工程理念,采用現代軟件工程方法,即分析—設計——編碼——測試——維護這五個方面,然而對于每個企業來說,業務與制度各不相同。然而很多企業都沒有一個根據企業特點制定的軟件開發管理模式,在不合理的軟件開發管理模式下進行軟件開發會導致效率與質量的下降。
2.2軟件開發缺少規范性
目前,我國大部分的軟件公司的規模較小,在技術上和管理存在很多不足,相對來說更加重視軟件工程技術,而忽視項目管理對軟件開發的作用,缺乏對軟件開發項目的統籌協調,沒有一個規范性的制度體系,導致人員疲軟,無法發揮最大效益。雖然,有一部分的企業正對該問題采取了一些措施,建立關于軟件工程技術以及項目管理的規范,但是由于檢查監督不力,導致可執行力不強,對軟件開發進程中的項目周期依舊存在無法把控的問題。
2.2.3缺乏軟件工程與項目管理的結合
當下,越來越多的企業逐漸重視起項目管理工作的重要性,認為在軟件開發過程中項目經理的位置最為關鍵,接下來才是程序員、網站開發人員、設計師等職位。然而,片面的注重項目管理會導致背離軟件工程方法的基本規律,使得軟件開發進度滯后、質量脫節等問題出現。
3軟件工程與項目管理相結合的對策
3.1建立完善的軟件工程與項目管理體制
完善的軟件工程與項目管理體制能夠促使企業規范化管理,為軟件開發提供一個大致的流程與框架,提高開發效率與質量。軟件開發所涉及的內容繁雜,建立完善的軟件工程與項目管理體制是一項道阻且長的任務。筆者認為首先,企業應當完善員工培訓機制,樹立以人為核心的觀念,加強關于軟件工程技術的培訓;加強軟件項目管理方法的培訓;加強溝通技巧與能力的培訓。并且,能夠將理論用于實踐,培養軟件開發人員的實際操作能力,構建理論、實踐、經驗三方位一體的培訓機制,致力于能夠為軟件工程項目配備專業的開發與管理人員,從而達到促進工作效率的目的。另外,企業需要進一步完善獎懲機制。科學有效的獎懲措施能夠為軟件開發人員提供晉升空間,最大限度上激發開發人員的工作熱情與積極性,使其更好地遵循軟件工程規律與項目管理的要求。
3.2加強對軟件生命周期的細化管理
傳統的基于軟件工程規律的項目管理屬于粗放式的項目管理,并沒有對每個階段的管理進行細分,因此仍舊會出現軟件項目無法按照預計的時間、質量交付的情況出現。因此,針對這一問題,企業應當對項目管理進行細分,采用精細化的管理方式。具體來說應當加強管理者對軟件生命周期的每個環節的認知,然后將任務具體化到每個開發人員,再設置相應的管理人員對任務的進度流程進行監督并構建評估報告,實現精細化的監督管理,全面把控軟件開發進程。另外,管理人員之間也應當通過例會進行溝通交流,一旦發現某個環節出現錯誤能夠及時的進行補救,確保整個軟件項目能夠按照利益相關者的需求與預期逐步開發。
3.3項目管理結合軟件工程自身科學規律
B.W.Boehm一位著名的軟件工程師曾在80年代初總結出用分階段的生命周期計劃嚴格管理、嚴格的產品控制、階段評審、開發團隊少而精等相關規律。同樣,我們在進行軟件開發項目管理的同時也用當遵循軟件工程自身的科學規律或原則。從軟件工程的角度講,軟件開發主要分為六個階段:需求分析階段、概要設計階段、詳細設計階段、編碼階段、測試階段、安裝及維護階段。因此,企業應當以通用的項目管理知識體系為基礎,結合軟件工程自身的科學規律,采用適用于該階段特點的管理方式方法,做好項目階段評估與風險規避。
4結束語
總而言之,在軟件產業蓬勃發展且競爭激烈的當下,互聯網企業與機構都應當把握住時代的步伐,推陳出新,進一步加強對軟件工程的重視與管理,在正確認知軟件項目管理的基礎上結合軟件工程自身的規律與原則做好軟件開發項目管理工作,一方面,加強對開發人員關于軟件工程與項目管理的培訓,另一方面,有效監督軟件開發進程,從而推進開發效率效益的逐步提升。