在設計軟體的時候,必須明確把握資料庫在軟體中的作用,這樣才能做到有的放矢。本人認為資料庫的作用除了做資料的儲存持久化作用之外便沒有其他的作用。之所以需要資料庫就是因為軟體中的前端表示層、服務層以及業務邏輯層都必須是無狀態的,這就要求軟體中有乙個元件來儲存應用程式的狀態。那麼這個職責就由資料庫來承擔。
在以前的軟體開發過程中,往往沒有把握資料庫的核心作用,而且以前的開發正規化(先是設計資料庫,然後加上簡單的業務邏輯,最後再設計程式的介面層等),這樣的正規化往往會導致把所有的精力和重點都放在了資料庫的設計上,最終導致會把一些業務邏輯放在資料庫裡面,大家知道資料庫是乙個物理設計,從大型軟體的schema來看,設計好了之後往往是不能更改了而且也便於修改(雖然有這種改變schema的方法,但是修改schema對於不同使用者不同版本的維護難度太大,所以基本上是不修改的)。
在採用物件導向的設計方法以後的開發正規化就不能先設計資料庫,而是首先分析業務邏輯,建立業務邏輯模型,然後再設計業務層。最後再考慮資料儲存方案。這樣的開發正規化就不斷應對需求的變化,你想業務邏輯在採用了設計模式的方法之後,是靈活的,可以應對需求的不斷變化。而資料庫不能有效應對需求的變化。
前面提到的正規化就是我們的思維方式,拿我們中文和英文來作為例子吧。英文的思維方式和中文有明顯的不同。
中文的語句是主語+修飾+謂語+賓語等,而英文的語句是主語+謂語+修飾+賓語。當然這裡的語句正規化不是絕對的。也許是這種思維正規化的不同導致我們在學習英語的過程中障礙重重。所以大家會發現在閱讀了大量的英文書籍以後,大家在看中文會感覺中文語句會怪怪的,甚者以後都寫不好中文。至少我現在就有這樣的感覺。所以正規化實際上是乙個思維方式。
在以前採用資料庫優先的開發正規化中,我們在後期需要向物件導向的正規化轉換。而現在所提倡的敏捷開發只是一種軟體專案管理方法。目標是以最快的速度,最少的成本來實現滿足使用者需求的軟體。而在具體的軟體設計開發階段就必須採用物件導向的分析、設計、開發等的方式進行具體的軟體開發。也就是敏捷開發方式主要使用者為專案管理人員,然後專案管理人員希望我們採用敏捷實踐來指導我們的開發工作任務。而物件導向是我們程式設計師的必須要掌握的一項武功心法。
軟體工程 專案總結 基礎類的實現
首先想好每乙個model在專案中都需要哪些private屬性,然後通過eclipse中的source generate getter and setter功能自動生成get和set函式。這樣model類中的工作就完成了。service層是為了model層服務的,所以我們應該針對model中的屬性來實...
軟體工程 專案管理的目標和細節
專案管理的最高目標並不是要保證讓 ideal 和 actual 的線吻合,因為專案 現意外和需求的變化是很正常的事。專案管理的目標是處理這些意外和變化,讓軟體能如期發布,盡量滿足客戶的要求。例如 楊弋個人原因 今天比較沒時間。技術原因 需求變更。我看到的ui設計圖和我之前看到的有很大差距,而且差距完...
軟體工程專案實施的一點思考
已經學習軟體工程科目有一段時間了,對軟體專案也有了一定的了解。我們專案組需要完成的是教學管理系統,分由四個人完成。每個人的開發能力 編碼能力都有所不同。對專案的認識存在不同的差別。最初始的開發階段,我們不明確應該用什麼方式來完成我們的專案,整個團隊都是蒙的。不知道該幹什麼 應該從什麼地方著手。老師看...