既然軟件開發(fā)是高風(fēng)險項目,如何避免失敗則是眾多軟件從業(yè)者重點關(guān)心的問題。根據(jù)現(xiàn)代軟件工程的特點和對一些典型案例的分析,在軟件工程管理中應(yīng)當(dāng)注意以下一些重要事項:
(1)項目評估
項目評估的意義在于確定軟件項目的規(guī)模、范圍、成本和周期。項目評估更多地是一個商務(wù)過程,只有精確的評估才能對客戶和軟件供應(yīng)商提供正確的商務(wù)參考。在項目精確評估的基礎(chǔ)上,客戶和供應(yīng)商雙方才能建立可信的商務(wù)關(guān)系,這是軟件項目得以正常實施的前提。
項目規(guī)模與范圍的評估需要軟件的供需雙方坦誠相待,共同以軟件應(yīng)用目標(biāo)為導(dǎo)向,深刻分析軟件的作用范圍及其可能的演變。對于規(guī)模過大的軟件項目,可能很難估計,這種情況下就需要對軟件項目進行分解,使其形成相對獨立的評估基準(zhǔn)點。
項目成本和周期的評估聯(lián)系非常緊密,其核心是工作量和資源評估相結(jié)合的過程。軟件開發(fā)活動是科技人員的群體智力活動,由于軟件人力資源的票賦和結(jié)構(gòu)特點,對于相同的工作員,其研發(fā)成本可能出現(xiàn)出幾倍的差異。對于項口開發(fā)周期而言,也會因為軟件開發(fā)資源配置的不同而出現(xiàn)顯著差異。
(2)需求定義
相對于項目評估,需求定義則是對項目規(guī)模和范圍進行細(xì)化。需求定義是在充分理解軟件項目目標(biāo)的基礎(chǔ)上,對其應(yīng)用領(lǐng)域進行業(yè)務(wù)分析與優(yōu)化。需求定義的重點在于對分解的業(yè)務(wù)進行軟件語言的表達,使其能夠被軟件開發(fā)人員無歧義地理解。
需求業(yè)務(wù)的軟件語言表達是指將業(yè)務(wù)表達為計算機科學(xué)善于處理的邏輯業(yè)務(wù)流程、相關(guān)業(yè)務(wù)數(shù)據(jù)以及由此形成的業(yè)務(wù)信息流。
除此以外,需求定義還必須關(guān)心人機界面。軟件的可用性集中體現(xiàn)在人機界面上。隨著計算機圖形技術(shù)的發(fā)展,特別是Windows視窗技術(shù)和瀏覽器技術(shù)的出現(xiàn),在現(xiàn)代軟件工程中已經(jīng)越來越注重軟件界面設(shè)計,用戶對此也提出了更高的要求。
人機界面的定義以方便業(yè)務(wù)處理為目標(biāo),以簡潔性為原則。在此基礎(chǔ)上則兼顧操作員的使用習(xí)慣和用戶的企業(yè)文化等其他因素,從而保證軟件的可用性和外在質(zhì)量。
(3)過程思維
過程思維是管理控制的一種基本思維方法,其核心方法是對所控制的對象進行分解,以增加控制對象的透明度。應(yīng)用這種思維方式,人們在工程管理和生產(chǎn)管理中提出了卓有成效的管理方法,加國際質(zhì)量控制體系ISO9000系列。軟件工程領(lǐng)域也以此思維方式為基礎(chǔ)提出了著名的CMM(I)成熟度模型。
過程思維應(yīng)用在實際的軟件工程管理中就是根據(jù)軟件項目開發(fā)周期的特點,在整個生命周期中設(shè)置若干檢查點和里程碑,增加軟件開發(fā)過程的可靠性??煽康倪^程保證、可靠的軟件開發(fā)過程質(zhì)量是過程思維在軟件開發(fā)中的具體目標(biāo)和方法。
檢查點和里程碑的具體設(shè)置是一種管理藝術(shù),它需要根據(jù)實際情況而定。對某些軟件項目和開發(fā)團隊而言,可以設(shè)置長過程以降低用于質(zhì)量保證的成本;而對某些軟件項目和開發(fā)團隊而言,則適合設(shè)置短過程以保證軟件的成功開發(fā)。
(4)開發(fā)環(huán)境
開發(fā)環(huán)境是指軟件人員在從事軟件開發(fā)過程中所處的工作環(huán)境。開發(fā)環(huán)境是影響軟件開發(fā)人員工作效率的關(guān)鍵因素。
開發(fā)環(huán)境主要包括兩個方面的環(huán)境:
一方面是指開發(fā)團隊了作的技術(shù)環(huán)境,所有開發(fā)人員應(yīng)該有一個一致的工作平臺,該平臺一般內(nèi)配置管理組進行保證。一致的工作平臺可以減少協(xié)同開發(fā)的溝通難度,還可以保持開發(fā)團隊一致的努力方向。
另一方面是指開發(fā)閉隊工作的軟環(huán)境.主要包括企業(yè)文化、團隊精神、協(xié)作方法等人文方面的環(huán)境。一個好的軟環(huán)境能為開發(fā)團隊提供輕松的工作氛圍,增強團隊的凝聚力,這對于需要不斷激勵智力的軟件開發(fā)活動來說尤共重要。軟環(huán)境的好壞直接影響開發(fā)團隊的創(chuàng)新能力。
(5)組織管理
組織管理是軟件項目成功的組織保障,任何社會化生產(chǎn)都離不開組織與管理,發(fā)活動也不例外。然而,沈陽軟件開發(fā)的組織管理又顯著區(qū)別于傳統(tǒng)的組織管理模式,些自己的特點。
管理對象的自主特性。沈陽軟件開發(fā)的從業(yè)人員一般都受過良好的高等教育,有著自己獨立的價值觀和獨特的工作方式,在軟件開發(fā)團隊中,總能表現(xiàn)出多元化的文化特征和行為特征。這對管理者提出廠較高的要求。
科研活動的不可預(yù)測性。軟件開發(fā)過程中,往往伴隨著大量的科技創(chuàng)新工作,這些工作在工作量和工作時間上很難進行精確的評估,這使得對時間、成本和質(zhì)量三方面的控制與權(quán)衡會變得較為困難,也常常是軟件開發(fā)工程管理者難于把握的因素。
軟件項目的外部性。相對于軟件項目本身,軟件開發(fā)活動中還存在外部性特征。軟件項目持別是應(yīng)用軟件項目往往與其他外部因素糾纏在一起,很多問題必須要多方參與才能解決,如何協(xié)調(diào)相關(guān)各方也是組織管理的難題。
因此,在沈陽軟件開發(fā)工程管理中,注重組織管型形式和在此基礎(chǔ)上處理好組織管理活動是執(zhí)行既定軟件項目計劃的關(guān)鍵一環(huán)。
(6)團隊協(xié)作
團隊協(xié)作是個老生常談的問題。只要存在社會化大生產(chǎn),都會存在團隊協(xié)作的問題,只是在軟件開發(fā)活動中該問題顯得尤為突出。
在現(xiàn)代軟件工程中,已經(jīng)不再適合單打獨斗的軟件開發(fā)方式,這也是軟件產(chǎn)業(yè)發(fā)展的自然要求和結(jié)果。軟件汗發(fā)活動中必須注意團隊協(xié)作,這巴經(jīng)在眾多的軟件工程實踐中得到了證明。
軟件開發(fā)活動中的團隊協(xié)作應(yīng)該是一種高層次的協(xié)作,不能像傳統(tǒng)的生產(chǎn)流水線是簡單的、僵硬的協(xié)作。它是一種智力的協(xié)作而非體力的協(xié)作。協(xié)作各方應(yīng)當(dāng)具備較強的溝通能力和溝通愿望,清晰地闡述自己的觀點和知識,使得很多http://www.chang999.cn/問題在交談中或工作會議中即可得到解決。
(7)與用戶互動
用戶是檢驗軟件項目成功與否的權(quán)威,充分了解用戶的想法也就等了解軟件項目努力與成功的方向。因此,在沈陽軟件開發(fā)工程管理中,還要注意加強與用戶互動。
與用戶互動應(yīng)該貫穿整個軟件開發(fā)過程,而不是只在需求階段或測試階段進行。這是因為用戶的觀念是變化的,明日今天提出的需求,明大就想修改。
考慮到用戶對軟件的認(rèn)識程度可能不夠成熟,在與用戶互動的過程中還要注意提高用戶的軟件認(rèn)知成熟度。這種相互充分的溝通容易對變化的軟件日標(biāo)達成共識,將問題盡早提出,從而為低成本解決問題創(chuàng)造條件。
(8)持續(xù)改進
所有事物都是不斷演化的,軟件尤其突出。軟件因為其相對容易的再造過程使得持續(xù)改進成為經(jīng)常件的活動。
社會發(fā)展到現(xiàn)在,軟件是最能模擬人類日常工作和管理的產(chǎn)品,上作和管理制度以及人們自身喜好的變化都會要求軟件隨之進行變化,所以要一蹴就地滿足變化的需求是不可能的,只有分階段的開發(fā)和持續(xù)改進才能緊跟不斷變化的需求。這也是軟件總是行眾多版本的原因。
要適應(yīng)軟件的持續(xù)改進,軟件的基礎(chǔ)架構(gòu)就顯得尤為重要,采用開放的體系結(jié)構(gòu)和遵循相關(guān)的國際/國內(nèi)標(biāo)準(zhǔn)是唯一正確的途徑。