多年來軟件開發(fā)項(xiàng)目不能如期交付,軟件產(chǎn)品的質(zhì)量不能令客戶滿意,加之軟件開發(fā)的開銷超出項(xiàng)目開始時所做的預(yù)算,這些是許多軟件開發(fā)機(jī)構(gòu)遇到的難題。近20年中,不少人力圖采用新的軟件開發(fā)技術(shù)來解決軟件生產(chǎn)率和軟件質(zhì)量存在的問題,但結(jié)果卻不令人十分滿意。這一現(xiàn)象促使人們進(jìn)一步考察軟件過程,從而發(fā)現(xiàn),關(guān)鍵問題在于軟件過程的管理不盡人意。事實(shí)表明,在無規(guī)則和混亂的管理?xiàng)l件下,先進(jìn)的技術(shù)和工具并不能發(fā)揮應(yīng)有的作用。人們認(rèn)識到,改進(jìn)軟件過程的管理是解決上述難題的突破口,再不能忽視軟件過程的影響了。
我們觀察到,有時個別項(xiàng)目完成得比較好,那是因?yàn)橛袀€別優(yōu)秀的軟件人員參與工作,并不是因?yàn)樽裱顺墒斓能浖^程。要想使多個項(xiàng)目都能很好地完成,不出現(xiàn)上述問題,除非讓這幾個優(yōu)秀的軟件人員承擔(dān)所有的項(xiàng)目。但這畢竟是不可能的。穩(wěn)定、持續(xù)地保證軟件高質(zhì)量地完成,只能依靠建立反映有效軟件工程實(shí)踐和管理實(shí)踐的過程基礎(chǔ)設(shè)施才能達(dá)到。
拋開個人因素不談,因?yàn)檫@在集體完成項(xiàng)目的過程中,不是起決定性作用的??荚嚧筇崾緦τ诓煌能浖_發(fā)機(jī)構(gòu),在組織人員完成軟件項(xiàng)目中所依據(jù)的管理策略有很大差別,因而軟件項(xiàng)目所遵循的軟件過程也有很大差別。在此,可用軟件機(jī)構(gòu)的成熟度(Maturity)加以區(qū)別。
不成熟的軟件機(jī)構(gòu)有著自己的特征:
(1)軟件過程一般在項(xiàng)目進(jìn)行中由參與開發(fā)的人員臨時確定。有時即使確定了,實(shí)際上并不嚴(yán)格執(zhí)行。
(2)軟件機(jī)構(gòu)是反應(yīng)型的,管理人員經(jīng)常要集中精力去應(yīng)付難以預(yù)料的突發(fā)事件。
(3)項(xiàng)目的進(jìn)度和經(jīng)費(fèi)預(yù)算由于估計(jì)得不切實(shí)際,所以常常突破。在項(xiàng)目進(jìn)度拖延,交付時間緊迫的情況下,往往不得不削減軟件的功能,降低軟件的質(zhì)量。
(4)產(chǎn)品質(zhì)量難以預(yù)測。質(zhì)量保證活動,如質(zhì)量評審、測試等,常被削弱或被取消。
成熟的軟件機(jī)構(gòu)具有的特點(diǎn)是:
(1)建立了機(jī)構(gòu)級的軟件開發(fā)和維護(hù)過程。軟件人員對其有較好的理解。一切活動均遵過程的要求進(jìn)行,做到工作步驟有次序,且有章可循。
(2)軟件過程必要時可做改進(jìn),但需在經(jīng)小型試驗(yàn)和成本一效益分析基礎(chǔ)上進(jìn)行。
(3)軟件產(chǎn)品的質(zhì)量和客戶對軟件產(chǎn)品的滿意程度不是由開發(fā)人員,而是由負(fù)責(zé)質(zhì)量保證的經(jīng)理負(fù)責(zé)監(jiān)控。
(4)項(xiàng)目進(jìn)度和預(yù)算是根據(jù)以往項(xiàng)目取得的實(shí)踐經(jīng)驗(yàn)確定,因而比較符合實(shí)際情況
我們觀察到,有時個別項(xiàng)目完成得比較好,那是因?yàn)橛袀€別優(yōu)秀的軟件人員參與工作,并不是因?yàn)樽裱顺墒斓能浖^程。要想使多個項(xiàng)目都能很好地完成,不出現(xiàn)上述問題,除非讓這幾個優(yōu)秀的軟件人員承擔(dān)所有的項(xiàng)目。但這畢竟是不可能的。穩(wěn)定、持續(xù)地保證軟件高質(zhì)量地完成,只能依靠建立反映有效軟件工程實(shí)踐和管理實(shí)踐的過程基礎(chǔ)設(shè)施才能達(dá)到。
拋開個人因素不談,因?yàn)檫@在集體完成項(xiàng)目的過程中,不是起決定性作用的??荚嚧筇崾緦τ诓煌能浖_發(fā)機(jī)構(gòu),在組織人員完成軟件項(xiàng)目中所依據(jù)的管理策略有很大差別,因而軟件項(xiàng)目所遵循的軟件過程也有很大差別。在此,可用軟件機(jī)構(gòu)的成熟度(Maturity)加以區(qū)別。
不成熟的軟件機(jī)構(gòu)有著自己的特征:
(1)軟件過程一般在項(xiàng)目進(jìn)行中由參與開發(fā)的人員臨時確定。有時即使確定了,實(shí)際上并不嚴(yán)格執(zhí)行。
(2)軟件機(jī)構(gòu)是反應(yīng)型的,管理人員經(jīng)常要集中精力去應(yīng)付難以預(yù)料的突發(fā)事件。
(3)項(xiàng)目的進(jìn)度和經(jīng)費(fèi)預(yù)算由于估計(jì)得不切實(shí)際,所以常常突破。在項(xiàng)目進(jìn)度拖延,交付時間緊迫的情況下,往往不得不削減軟件的功能,降低軟件的質(zhì)量。
(4)產(chǎn)品質(zhì)量難以預(yù)測。質(zhì)量保證活動,如質(zhì)量評審、測試等,常被削弱或被取消。
成熟的軟件機(jī)構(gòu)具有的特點(diǎn)是:
(1)建立了機(jī)構(gòu)級的軟件開發(fā)和維護(hù)過程。軟件人員對其有較好的理解。一切活動均遵過程的要求進(jìn)行,做到工作步驟有次序,且有章可循。
(2)軟件過程必要時可做改進(jìn),但需在經(jīng)小型試驗(yàn)和成本一效益分析基礎(chǔ)上進(jìn)行。
(3)軟件產(chǎn)品的質(zhì)量和客戶對軟件產(chǎn)品的滿意程度不是由開發(fā)人員,而是由負(fù)責(zé)質(zhì)量保證的經(jīng)理負(fù)責(zé)監(jiān)控。
(4)項(xiàng)目進(jìn)度和預(yù)算是根據(jù)以往項(xiàng)目取得的實(shí)踐經(jīng)驗(yàn)確定,因而比較符合實(shí)際情況