|
當我們拿到一個項目的時候,也許我們沒有資深程序員那樣去考慮項目的拓展性,后續(xù)的性能,從整體,未來去把握整個項目,但是作為一個軟件開發(fā)者,我們應該了解并且知道如何去設計一個軟件的基本流程,包括流程圖,用例圖,數(shù)據(jù)結構圖,類與類之間的關系圖,ER圖等等!讓別的同事和自己能直觀的從圖中知道你所想要表達的問題和你的設計方案!
下面就以一個最簡單的項目:圖書館管理系統(tǒng)來說明下基本的一個軟件設計流程
1:功能圖
當我們拿到一個項目的時候,我們需要了解客戶希望實現(xiàn)哪些功能,希望達到什么樣的效果,當設計人員給你一個幾百頁的設計文檔的時候 ,你該如何下手,我們首先要做的肯定是首先要有一個清晰的流程下來,這個系統(tǒng)到底需要實現(xiàn)哪些功能!所以首先我們應該要有系統(tǒng)的功能圖出來,讓我們從長長的設計文檔中抽離出來,從圖中直觀的看出這個系統(tǒng)是為了什么,達到什么樣的效果!
以圖書管管理系統(tǒng)為例的流程圖如下(Excel 2007畫的)
這樣我們就能一目了然的看出系統(tǒng)中需要實現(xiàn)的功能,避免了每次都要到長長的文檔中去尋找,也幫助團隊中的同事去了解系統(tǒng)的功能,
2:功能的流程圖
現(xiàn)在我們知道系統(tǒng)有哪些功能了,那么對于每一個功能的流程是怎么樣的?你清楚么?對于復雜的邏輯來說,流程圖是必不可少的,那樣你可以直觀的看出功能實現(xiàn)的每一個步驟
以下是圖書館管理系統(tǒng)的整體流程圖,當然你也可以針對某一個復雜的功能去實現(xiàn)流程圖(采用word畫的,由于篇幅所限,只有部分)
3:用例圖
有了以上功能圖和流程圖,基本上可以了解系統(tǒng)想要做的事情,如果你還想細分系統(tǒng)中每一個角色參與了哪些上述的哪些功能的話,你還可以實現(xiàn)用例圖,用例圖是被稱作外部用戶所能看到系統(tǒng)功能的模型圖,可以讓開發(fā)者更好的了解用戶所用到的功能和和功能的交互!(staruml畫的)
4:上面都是一些功能方面的設計,面向對象的編程思想讓我們 應該了解每個類與類之間的關系,這在以后的編碼過程中會給我們的編碼帶來極大的靈活性和可行性,類與類之間的關系可以分為關聯(lián),泛化,依賴,聚合,下面只是來從定義上解釋下概念,具體的還要每個人去來理解
4.1:關聯(lián):
對于兩個相對獨立的對象,當一個對象的實例與另一個對象的一些特定實例存在固定的對應關系時,這兩個對象之間為關聯(lián)關系。
4.2:泛化:
表示類與類之間的繼承關系,接口與接口之間的繼承關系,或類對接口的實現(xiàn)關系。一般化的關系是從子類指向父類的,與繼承或實現(xiàn)的方法相反。
4.3:依賴:
對于兩個相對獨立的對象,當一個對象負責構造另一個對象的實例,或者依賴另一個對象的服務時,這兩個對象之間主要體現(xiàn)為依賴關系。
4.4:聚合
當對象A被加入到對象B中,成為對象B的組成部分時,對象B和對象A之間為聚集關系。聚合是關聯(lián)關系的一種,是較強的關聯(lián)關系,強調(diào)的是整體與部分之間的關系。
當我們設計類圖的時候,我們首先要抽取出有多少個類,有的人會問我們在項目中如何去抽取系統(tǒng)中的類,一般一個實體就可以抽象成一個類,如書本是一個實體,人也是一個實體等等,下面是圖書館管理系統(tǒng)的一些類圖,類圖的畫法是很簡單,我們主要分析的是類與類之間的關系,這個是重點(Staruml畫的)
5:數(shù)據(jù)庫表的設計,通常是使用ER圖來建立數(shù)據(jù)模型,下面是圖書館管理系統(tǒng)的ER圖(簡略版),主要是圖要之間描繪出實體與實體之間的關系
6:各個子模塊之間的依賴關系,這也是我們需要注意的,要減少不必要的依賴,如盡量減少遠程調(diào)用,循環(huán)依賴這種情況的發(fā)生,最好把各個模塊之間依賴的關系列出來,
總結:上面講的只是一些簡單卻不可缺少的步驟,因為它能夠讓你很直觀的,最簡單的去看清這個系統(tǒng)究竟要做的是什么,我們需要做的是什么!當然如果一些大的復雜的項目也可以更加具體的去分析,如我們可以畫時序圖,狀態(tài)圖,部署圖等等,但是我覺得,只要能讓自己更加清楚的描述出整個項目,選擇適合自己的圖,那才是最重要的!
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/xiahancslg/archive/2010/12/29/6104978.aspx |
|
|
來自: software1 > 《數(shù)據(jù)庫設計》