軟體模塊設計
一、善用UML工具
用例圖
用於需求分析階段,從用戶角度描述系統功能。
用例圖
靜態圖:類圖、對象圖、包圖
類圖:同UML靜態圖,此處不再展開。
2. 什麼是軟體系統架構設計
「架構」一詞最早來自建築學,原意為建築物設計和建造的藝術。但是在軟體工程領域,軟體架構不是一個新名詞,只是在早期的著作中人們將軟體架構稱為軟體體系架構。這就是架構的概念。所謂架構,就是人們對一個結構內的元素及元素間關系的一種主觀影射的產物。
系統架構的主要任務是界定系統級的功能與非功能要求、規劃要設計的整體系統的特徵、規劃並設計實現系統級的各項要求的手段,同時利用各種學科技術完成子系統的結構構建。
在系統架構中,由於對軟體越來越深入的依賴,軟體架構的任務也體現出重要的作用。而且系統架構與軟體架構是緊密聯系和相互依賴的。
1997年,Eberhadrt Rechtin 與MarkW Maier 在其論著中,為計算機科學總結了系統架構方面的實踐成果,從而奠定了系統科學和系統架構在計算機科學中的基石:
無論何種系統架構應用領域,目的都是一樣的,即完整地、高一致性的、平衡各種利弊的、有技術和市場前瞻性的設計系統和實施系統。
3. linux 怎麼寫軟體模塊詳細設計
概要設計階段通常得到軟體結構圖
詳細設計階段常用的描述方式有:流程圖、N-S圖、PAD圖、偽代碼等
概要設計和詳細設計
在軟體設計中,大家經常問到的一個問題是:概要設計應該怎樣一個概要法,詳細設計應該怎樣一個詳細法?
這個問題在公司內部經常有人問。現在陳述一下。
我們公司的研發流程是瀑布型的,這個模型中的分析、設計階段是基於經典的結構化方法。
結構化設計方法的基本思路是:按照問題域,將軟體逐級細化,分解為不必再分解的的模塊,每個模塊完成一定的功能,為一個或多個父模塊服務(即接受調用),也接受一個或多個子模塊的服務(即調用子模塊)。模塊的概念,和編程語言中的子程序或函數是對應的。
這樣一來,設計可以明顯地劃分成兩個階段:
概要(結構)設計階段:把軟體按照一定的原則分解為模塊層次,賦予每個模塊一定的任務,並確定模塊間調用關系和介面。
詳細設計階段:依據概要設計階段的分解,設計每個模塊內的演算法、流程等。
概要設計階段:
在這個階段,設計者會大致考慮並照顧模塊的內部實現,但不過多糾纏於此。主要集中於劃分模塊、分配任務、定義調用關系。模塊間的介面與傳參在這個階段要定得十分細致明確,應編寫嚴謹的數據字典,避免後續設計產生不解或誤解。概要設計一般不是一次就能做到位,而是反復地進行結構調整。典型的調整是合並功能重復的模塊,或者進一步分解出可以復用的模塊。在概要設計階段,應最大限度地提取可以重用的模塊,建立合理的結構體系,節省後續環節的工作量。
概要設計文檔最重要的部分是分層數據流圖、結構圖、數據字典以及相應的文字說明等。以概要設計文檔為依據,各個模塊的詳細設計就可以並行展開了。
詳細設計階段:
在這個階段,各個模塊可以分給不同的人去並行設計。在詳細設計階段,設計者的工作對象是一個模塊,根據概要設計賦予的局部任務和對外介面,設計並表達出模塊的演算法、流程、狀態轉換等內容。這里要注意,如果發現有結構調整(如分解出子模塊等)的必要,必須返回到概要設計階段,將調整反應到概要設計文檔中,而不 能就地解決,不打招呼。
詳細設計文檔最重要的部分是模塊的流程圖、狀態圖、局部變數及相應的文字說明等。一個模塊一篇詳細設計文檔。
概要設計文檔相當於機械設計中的裝配圖,而詳細設計文檔相當於機械設計中的零件圖。文檔的編排、裝訂方式也可以參考機械圖紙的方法。
我們公司對模塊的認識和傳統定義有所不同,認為是較大的軟體功能單元才可以稱作模塊。這種認識使大家對概要設計和詳細設計的分工產生了混亂的理解,降低了文檔的可用性,應該予以糾正。
概要設計中較頂層的部分便是所謂的方案。方案文檔的作用是在宏觀的角度上保持設計的合理性。
有的項目採用面向對象的分析、設計方法。可能在概要設計、詳細設計的分工上疑問更多。其實,面向對象的分析、設計方法並沒有強調結構化方法那樣的階段性,因此一般不引入概要、詳細設計的概念。如果按照公司的文檔體系,非要有這種分工的話,可以將包的劃分、類及對象間的關系、類的對外屬性、方法及協作設計看做 概要設計;類屬性、方法的內部實現看做詳細設計。
1.需求分析--產生軟體功能規格說明書,需要確定用戶對軟體的需求,要作到明確、無歧義。不涉及具體實現方法。用戶能看得明白,開發人員也可據此進行下面的工作(概要設計)。
2.概要設計--產生軟體概要設計說明書,說明系統模塊劃分、選擇的技術路線等,整體說明軟體的實現思路。並且需要指出關鍵技術難點等。
3.詳細設計--產生軟體詳細設計說明書,對概要設計的進一步細化,一般由各部分的擔當人員依據概要設計分別完成,然後在集成,是具體的實現細節。理論上要求可以照此編碼。
概要設計和詳細設計的區別與聯系
軟體設計採用自頂向下、逐次功能展開的設計方法,首先完成總體設計,然後完成各有機組成部分的設計。
根據工作性質和內容的不同,軟體設計分為概要設計和詳細設計。概要設計實現軟體的總體設計、模塊劃分、用戶界面設計、資料庫設計等等;詳細設計則根據概要設計所做的模塊劃分,實現各模塊的演算法設計,實現用戶界面設計、數據結構設計的細化,等等。
概要設計是詳細設計的基礎,必須在詳細設計之前完成,概要設計經復查確認後才可以開始詳細設計。概要設計,必須完成概要設計文檔,包括系統的總體設計文檔、以及各個模塊的概要設計文檔。每個模塊的設計文檔都應該獨立成冊。
詳細設計必須遵循概要設計來進行。詳細設計方案的更改,不得影響到概要設計方案;如果需要更改概要設計,必須經過項目經理的同意。詳細設計,應該完成詳細設計文檔,主要是模塊的詳細設計方案說明。和概要設計一樣,每個模塊的詳細設計文檔都應該獨立成冊。
概要設計裡面的資料庫設計應該重點在描述數據關繫上,說明數據的來龍去脈,在這里應該結合我們的一個結果數據,說明這些結果數據的源點,我們這樣設計的目的和原因。詳細設計里的資料庫設計就應該是一份完善的數據結構文檔,就是一個包括類型、命名、精度、欄位說明、表說明等內容的數據字典。
概要設計里的功能應該是重點在功能描述,對需求的解釋和整合,整體劃分功能模塊,並對各功能模塊進行詳細的圖文描述,應該讓讀者大致了解系統作完後大體的結構和操作模式。詳細設計則是重點在描述系統的實現方式,各模塊詳細說明實現功能所需的類及具體的方法函數,包括涉及到的sql語句等。
4. 軟體設計思路
這個很難用一本書來進行概括。自主要靠工作經驗,而且要做好一個設計方案,不是一會就能完成的事。建議你先按照你的想法把具體的需求先整理出來。然後根據需求,整理出軟體功能模塊,針對每個功能模塊進行具體的設計。等把具體的設計做完之後,你可以從中找出共通的模塊,抽象出共同類或函數。再往後就是界面的設計以及資料庫、數據表的設計了。
5. 軟體設計包括哪些方面
1基本內容
基本內容詳細設計詳細設計的主要任務是設計每個模塊的實現演算法、所需的局部數據結構。詳細設計的目標有兩個:實現模塊功能的演算法要邏輯上正確和演算法描述要簡明易懂。
傳統軟體開發方法的詳細設計主要是用結構化程序設計法。詳細設計的表示工具有圖形工具和語言工具。圖形工具有程序流程圖、PAD(Problem Analysis Diagram)圖、NS(由 Nassi和 Shneidermen開發,簡稱 NS)圖。語言工具有偽碼和 PDL(Program Design Language)等。
主要任務:
1.為每個模塊確定採用的演算法,選擇某種適當的工具表達演算法的過程,寫出模塊的詳細過程性描述;
2.確定每一模塊使用的數據結構;
3.確定模塊介面的細節,包括對系統外部的介面和用戶界面,對系統內部模塊的介面,以及模塊輸入數據、輸出數據及局部數據的全部細節。
在詳細設計結束時,應該把上述結果寫入詳細設計說明書,並且通過復審形成正式文檔。交付給下一階段(編碼階段)的工作依據。
4.要為每一個模塊設計出一組測試用例,以便在編碼階段對模塊代碼(即程序)進行預定的測試,模塊的測試用例是軟體測試計劃的重要組成部分,通常應包括輸入數據,期望輸出等內容。
詳細設計的工具:
1.圖形工具
利用圖形工具可以把過程的細節用圖形描述出來。
2.表格工具
可以用一張表來描述過程的細節,在這張表中列出了各種可能的操作和相應的條件。
3.語言工具
用某種高級語言(稱之為偽碼)來描述過程的細節。
6. 什麼是軟體設計
軟體設計是從軟體需求規格說明書出發,根據需求分析階段確定的功能設計軟體系統的整體結構、劃分功能模塊、確定每個模塊的實現演算法以及編寫具體的代碼,形成軟體的具體設計方案
軟體設計是把許多事物和問題抽象起來,並且抽象它們不同的層次和角度。將問題或事物分解並模塊化使得解決問題變得容易,分解的越細模塊數量也就越多,它的副作用就是使得設計者考慮更多的模塊之間耦合度的情況
軟體設計是從軟體需求規格說明出發,形成軟體的具體設計方案的過程,也就是說在需求分析階段明確軟體是「做什麼」的基礎上,解決軟體「怎麼做」的問題。結構化設計方將把軟體設計分為概要設計和詳細設計兩個階段。概要設計的主要任務是,通過分析需求規格說明對軟體進行功能分解,確定軟體的總體結構;詳細設計階段確定每個模塊功能所需要的演算法和數據結構,設計出每個模塊的邏輯結構。軟體設計階段結束時的工作成果是軟體設計說明書,它描述軟體系統的組成模塊結、模塊間的調用關系,以及每個模塊的輸入、輸出和詳細的過程描述
設計基礎
軟體設計的基本目標是用比較抽象、概括的方式確定目標系統如何完成預定的任務,軟體設計是確定系統的物理模型。軟體設計是開發階段最重要的步驟,是將需求准確地轉化為完整的軟體產品或系統的唯一途徑[4] 。
從技術觀點上看,軟體設計包括軟體結構設計、數據設計、介面設計、過程設計
(1)結構設計定義軟體系統各主要部件之間的關系
(2)數據設計將分析時創建的模型轉化為數據結構的定義;
(3)介面設計描述軟體內部、軟體和協作系統之間及軟體與人之間如何通信
(4)過程設計則把系統結構部件較換為軟體的過程性描述
軟體設計
基本原理
(1)抽象
軟體設計中考慮模塊化解決方案時,可以定出多個抽象級別。抽象的層次從概要設計到詳細設計逐步降低
(2)模塊化
模塊是指把一個待開發的軟體分解成若干小的簡單的部分。模塊化是指解決一個復雜問題時自頂向下逐層把軟體系統劃分成若干模塊的過程
(3)信息隱蔽
信息隱蔽是指在一個模塊內包含的信息(過程或數據),對於不需要這些信息的其他模塊來說是不能訪問的
(4)模塊獨立性
模塊獨立性是指每個模塊只完成系統要求的獨立子功能,並且與其他模塊的聯系最少且介面簡單。模塊的獨立程度是評價設計好壞的重要度量標准。衡量軟體的模塊獨立性使用耦合性和內聚性兩個定性的度量標准。內聚性是信息隱蔽和局部化概念的自然擴展。一個模塊的內聚性越強,則該模塊的獨立性越強。一個模塊與其他模塊的耦合性越強則該模塊的獨立性越弱。
內聚性是度量一個模塊功能強度的一個相對指標。內聚是從功能角度來衡量模塊的聯系,它描述的是模塊內的功能聯系。內聚有如下種類:偶然內聚、邏輯內聚、時間內聚、過程內聚、通信內聚、順序內聚、功能內聚。它們之間的內聚度由弱到強排列[4] 。
耦合性是模塊之間互相連接的緊密程度的度量。耦合性取決於各個模塊之間介面的復雜度、調用方式及哪些信息通過介面。耦合可以分為下列幾種:內容耦合、公共耦合、外部耦合,控制耦合、標記耦合、數據耦合、非直接耦合。它們之間的耦合度由高到低排列
7. 軟體模塊化設計的優點是什麼
如果是一抄個人或者是很小的軟體,他們沒有任何的優越性,反而顯得更加復雜。但是如果是許多人協同作業,或者軟體工程非常大是,它就會有非常明顯的優越性,因為其他人不需要知道你這個工作組究竟是怎樣寫的,只是需要知道你這部分所實現的功能,知道他所擁有的介面就可以了,這樣程序設計就會更加簡便,而且你還可以把某個部分外包,可以集中人力、物力先完成其中一部分的模塊,等等