高質(zhì)量軟件的第一要素
到目前為止,我們做了很多工作,但是我一直在強調(diào)這些都還不是需求分析。在很多人心目中,軟件開發(fā)的第一件事就是先做需求分析。那么我們?yōu)槭裁床贿@樣做呢?這牽扯到一個關(guān)鍵的問題:我們都希望開發(fā)高質(zhì)量的軟件,而本系列文章的重點也是如何通過OO實踐開發(fā)高質(zhì)量軟件,那么什么是高質(zhì)量軟件?
對于這個問題,也許很多人會說,是靈活的、是易于修改和擴展的、是可維護(hù)性高的、是用戶體驗好的、是文檔完整的、是代碼規(guī)范的、是性能處理優(yōu)秀的……好吧,我承認(rèn),這些都是高質(zhì)量軟件必不可少的元素,但是,還有一個更重要的要素,就是:軟件必須做客戶希望它做的事。你的軟件再靈活、編碼再規(guī)范,客戶不關(guān)心,客戶最關(guān)心的是軟件是不是完成了他期待的功能,可以做他希望軟件做的事。所以,高質(zhì)量軟件的第一要素就是:讓軟件做客戶希望它做的事。
知道了這點,就知道為什么第一步不是做需求分析了,因為需求分析的重點不是“讓軟件做客戶希望它做的事”,而是“將需求分解歸納成開發(fā)人員容易進(jìn)行領(lǐng)域分析和設(shè)計的信息片段”。所以,需求分析是開發(fā)人員面的東西,而不是客戶面的東西。作為開發(fā)人員,我們要首先站在客戶的角度看問題,而不能總是站在開發(fā)人員角度,和客戶隔著一條河對話。我們要走過去,去河的另一岸。
回顧我們的工作
現(xiàn)在來總結(jié)一下我們目前所做的工作,你會發(fā)現(xiàn),我們所做的全部工作,其目的就是讓軟件做客戶希望它做的事。
我們首先總結(jié)出特性列表,然后通過分析和詢問降低了風(fēng)險,同時修改了特性列表,最后從做出一張用例圖,使得從全局角度對系統(tǒng)進(jìn)行一個概覽。所有這一切,其實都是開發(fā)人員在“努力變成客戶”,或說努力讓自己站在客戶的角度看系統(tǒng),真正了解客戶想讓希望做什么。因為,最好的理解需求的方式就是理解客戶想讓系統(tǒng)做什么。
我們在哪里?看看地圖吧
做了這么多工作,是不是有點迷失方向的感覺?似乎我們已經(jīng)迷失在OO從林中,不知現(xiàn)在身在何處。好的,那我們看看“OO地圖”吧,一方面搞清楚我們在什么地方,另一方面看看我們后續(xù)有哪些路要走。
以上就是實踐中的大致開發(fā)流程。一般來說,開發(fā)大致分為兩個階段:前一階段我們要站在用戶角度,搞清用戶想要系統(tǒng)做什么;后一階段要回到開發(fā)人員角度,進(jìn)行分析、設(shè)計、編碼、測試等一系列操作。而我們現(xiàn)在正處在兩個階段的交界處。
一般在迭代階段提倡使用迭代與增量的方式進(jìn)行開發(fā)。至于這樣有什么好處,以及OO如何于迭代增量方式結(jié)合這些問題,我們將在下一篇文章中結(jié)合我們的案例詳細(xì)討論。
重點總結(jié)
1.高質(zhì)量軟件的第一要素是:軟件做客戶希望它做的事。
2.在開發(fā)初期,我們要盡量站在客戶角度。
3.理解需求的最好方法是明白客戶希望軟件做什么。
4.開發(fā)流程大約分為兩個階段:搞清用戶想要系統(tǒng)做什么和迭代開發(fā)。