——對分析模型的一點兒見解
當需求分析結束、需求確認完成、需求討論告一段落的時候,我們的需求分析員拿出了厚厚的一打用例分析模型、領域設計模型,需求分析階段結束,開始進入開發階段。但是,這時候雖然需求分析階段結束了,卻千萬不要以為需求分析就結束了,如果你還這樣認為,說明你還沒有擺脫瀑布式開發的思維。瀑布式開發的思維的關鍵點就是認為,需求分析階段應當完成所有的需求分析和確認的工作,否認需求分析階段以後還會變更需求。擁抱變化是現代軟體開發思想的核心之一,什麼敏捷開發、迭代開發、極限程式設計,都是圍繞這個主題展開的。擁抱變化,意味著我們的軟體需求總是在變化,因此需求分析文件,包括用例模型、領域模型,總是在與之同步。總之,不要期望在需求分析階段就完成所有的事,在分析設計,以及之後的程式設計開發階段、實施和維護階段,我們都應當隨時與客戶保持聯絡,注意與他們的反饋。
在需求分析階段結束以後,許多公司(包括我們)通常的做法都是立即進入開發程式設計階段。開發人員與需求人員坐在一起開了乙個簡短的動員會,按照模組和功能的劃分,給所有的人進行一次任務分配,緊接著開發人員就領著自己的任務開始埋頭開發。誠然,幾乎所有的開發任務時間都是非常緊張的,但是沒有經過規劃和設計的系統,往往是無序和低效的。那些我在《談談軟體開發的那些事兒》中提到的噩夢就是這樣開始的。隨意地建立物件,隨意地分配屬性和方法,隨意地相互呼叫,都會大大降低軟體的可維護性。乙個小小的變更,就會讓我們的軟體大動筋骨,從何談起擁抱變化呢?要提高軟體的可維護性、可變更性,就必須讓我們的設計低耦合、高內聚,也就必須做到職責驅動設計(rdd
)。建立必要的分析模型和設計模型,可以幫助我們做到這一點。
分析模型和設計模型就是在需求分析結束後、程式開發開始前的這段分析設計階段使用的。按照rup
的流程,應當先建立分析模型,然後再建立設計模型。但是分析模型和設計模型沒有明顯的時間分隔,通常都是經過無數次迭代,從分析模型逐漸過渡到設計模型。分析模型是在不考慮任何技術實現的前提下進行的純oo
分析的模型。不論你的系統是採用j2ee
實現還是c++
實現,分析模型都是一樣的。而設計模型則相反,設計模型開始考慮具體技術的實現。因此,從分析模型到設計模型是乙個從抽象到逐漸細化的過程。
另乙個問題是,誰來完成從分析模型到設計模型的整個過程?我認為,應當是需求分析人員和架構分析師共同來完成。然而,在實際情況是,更多的工作是需求分析人員來完成的。因此,那些由技術出身的,擁有紮實oo
分析設計基礎的需求分析員在完成這些工作時會更加得心應手。下面我們看看分析模型是怎樣開始分析和設計的。(續)
談談Js繼承的那些事兒
1.使用物件冒充實現繼承 實現原理 讓父類的建構函式成為子類的方法,然後呼叫該子類的方法,以實現物件的繼承。var people function name,age people.prototype.showpinfo function var men function men.prototype....
談談微博外鏈的那些事兒
自從微博出現後,微博裡的短 外鏈一直被seoer議論著,究竟微博的外鏈有沒有促進seo的作用。目前可以看到的現象是微博短 是做了跳轉的,既然是跳轉那可以簡單地認為該外鏈只有引流作用。平時搜尋發現,搜乙個人的名字,很容易就出現他的微博結果,假如該微博裡邊發了鏈結,並且發的那條帶鏈結的微博內容被收錄了 ...
python之迴圈中的那些事兒
盤點python中的迴圈也就那麼回事,廢話不羅嗦,下面一起看看吧!if 語句 python中if語句的一般形式如下所示 if condition 1 statement block 1 elif condition 2 statement block 2 else statement block 3...