本套書匯集了兩位作者豐富的軟件過程經驗、10余位業(yè)界杰出人士的親身體會以及《軟件開發(fā)》和《計算機語言》雜志中的精彩論文,提出了軟件開發(fā)過程中的最佳實踐方法,指導讀者有效而且高效地執(zhí)行這些過程。同時,作者還綜合了統(tǒng)一過程和其他軟件過程,形成了一個處理真實世界軟件開發(fā)和產品需要的更完整、更健壯的統(tǒng)一過程。本套書共有四本,其中介紹的最佳實踐方法分別對應統(tǒng)一軟件過程的四個階段:初始階段、細化階段、構造階段、移交和產品化階段。本書是這套書的第一本,重點介紹與統(tǒng)一軟件過程初始階段有關的最佳實踐。本書可以作為軟件項目管理人員、軟件開發(fā)工程師、過程工程師、系統(tǒng)工程師等專業(yè)人員的指導用書,也可作為高等院校計算機及相關專業(yè)學生的參考書。本書前言近來,在幾乎所有的組織中,對軟件過程改進的關注越來越多了。這一部分是因為千年蟲(Y2K)問題、大規(guī)模軟件項目的高失敗率以及人們漸漸意識到遵循成熟的軟件過程是軟件項目成功的關鍵因素。從20世紀90年代中期開始,Rational公司控股和合并了其他一些軟件工具公司;隨著公司的發(fā)展,這些工具所支持的各種過程也被合并成一種開發(fā)方法,稱為“統(tǒng)一過程”(UnifiedProcess)。是否有可能讓整個軟件過程自動化?如果有可能,那么Rational公司是否擁有一套完整的工具集?對上述問題我們并不確定。但幸運的是,其他人也在定義軟件過程,所以我們還可以從多個角度來看事物應怎樣運作。這些過程包括:OPEN聯(lián)盟的OPEN過程、面向對象軟件過程(OOSP)的過程模式以及極限編程(XP)。這些不同的視角可以用來推動統(tǒng)一過程觀點,使其更加健壯,結果就產生了一個更能準確反映你所在組織現(xiàn)實需要的增強的統(tǒng)一過程生命周期。因為我們相信《軟件開發(fā)》中包含的多年收集下來的智慧能夠用來充實統(tǒng)一過程—真正將我們產業(yè)的最佳實踐統(tǒng)一起來,所以我們編寫了本系列叢書。為什么軟件過程如此重要呢?讓我們先設想一下。假如你想請人給你建造一間房子,讓兩位承包商來競標。第一位承包商告訴你,通過使用一項最新的建筑技術給你蓋房,如果從明天就開始的話,他能在兩個星期內就把房子建好,造價只有10萬美元。這個承包商手下有一流的木匠和水管工,他們以前用這項新技術建造過一個花園涼棚,他們愿意日夜加班以按期交付你的新屋。而第二位承包商告訴你,她需要先和你討論你想要建一間什么類型的房子。然后,一旦她確定明白你的需要,她將在一個星期內提供一整套設計藍圖供你審閱和反饋。這個初始階段只會花你1萬美元,當你決定了最終方案,對于其余的工作她將給出詳細計劃和成本進度。你會覺得選哪個承包商更放心呢?是想馬上開始建房的那個,還是先搞清楚要建什么樣的房子,再建模型,再詳細計劃,最后動工修建的那個?顯然,后者更有可能成功地交付給你一間符合你實際需要的房子。現(xiàn)在,設想你要構建的是軟件—這通常是復雜好幾個級別而且遠比房子更昂貴的項目,再設想你還是面對兩個與前面采取相同方法的承包商。選擇哪個你會更放心呢?希望你的回答仍是第二個;她有一個更明智的過程。但不幸的是,實踐顯示:在大多數(shù)時間里,組織似乎喜歡選擇第一個承包商的方法;任意刪改過程。當然,實踐也顯示:在我們的產業(yè)里,建造大型的、具有關鍵任務的系統(tǒng)的失敗率在85以上。(在這種情況下,項目的失敗被定義為嚴重超出成本預算或已經被徹底取消。)也許這兩種現(xiàn)象有一定的關聯(lián)。實際上,問題甚至更糟??赡苣阍噲D造一間房子,而所能用的所有承包商卻都只有蓋花園涼棚的經驗。甚至更糟,他們可能只在熱帶地區(qū)工作過,從來沒有處理過霜凍地方的情況,但是你卻生活在加拿大偏僻的森林地帶中。更進一步說,他們根本不熟悉加拿大政府所規(guī)定的各種不同的法規(guī),這些法規(guī)完全不同于他們曾經面對的簡單常識。這個例子再一次說明,第一個承包商雜亂無章的方法有可能陷入麻煩之中。初始階段在統(tǒng)一過程的增強生命周期中,初始階段是5個階段(初始、細化、構造、移交和產品化階段)中的第1個階段,每個軟件的發(fā)布版本在其生命周期內都將遍歷這些階段。初始階段的主要目標是為你的項目構造堅實的基礎。要實現(xiàn)這點,需要:*證明系統(tǒng)本身和開發(fā)/獲得該系統(tǒng)的方法是正確的。*描述系統(tǒng)的最初需求。*確定系統(tǒng)的范圍。*確定和該系統(tǒng)交互的人員、組織及其他外部系統(tǒng)。*對系統(tǒng)進行最初的風險評價、進度安排以及估算。*對統(tǒng)一過程進行滿足確切需要的初步定制。當你回頭再想的時候,你所需要做的最重要的事是確保你的系統(tǒng)以及應用于系統(tǒng)的方法都是被證明可行的(即,你有業(yè)務用例)。如果項目沒有意義,可能是經濟方面的原因,可能是技術方面的原因,也可能是可操作性方面的原因。不管是哪個方面的原因,項目都不應該繼續(xù)。7/8的項目都失敗了。如果沒有堅實的基礎,沒有能夠運作的架構,沒有現(xiàn)實的項目計劃以及專業(yè)的項目團隊,那么你的項目很可能會成為7個失敗項目中的一個。本書向讀者呈現(xiàn)了業(yè)界專家所撰寫的描述軟件領域最佳實踐的文章。本書乃至本系列叢書的一個目標是提供已證實的統(tǒng)一過程所包含技術的可替代方案。另一個目標是彌補統(tǒng)一過程中的一些缺陷。因為統(tǒng)一過程是一個開發(fā)過程,而不是軟件過程,它不可避免地遺漏或缺少了一些對軟件專業(yè)人員來說非常重要的概念。幸運的是,《軟件開發(fā)》雜志的作者們已經對過程范圍有了更廣泛的了解,并已經為我們彌補了許多缺陷。關于本套叢書本套叢書由四卷組成:第一卷介紹初始階段,第二卷介紹細化階段,第三卷介紹構造階段,第四卷介紹移交和產品化階段。每卷都可獨立成書,但是如果想對整個軟件過程有一個完整的認識,你需要通讀全套叢書。本套叢書的文章覆蓋了整個過程,在每卷之間沒有重復。