结构化设计(实验二)
實驗二:軟件設計規約及評審
概要設計規約
概要設計規約指明軟件的組織結構,其主要內容包括:
- 硬件、軟件接口與人機界面
- 外部定義的數據庫
- 與設計有關的限定條件
- 軟件模塊的結構
- 模塊之間的接口
- 數據流和主要數據結構
- 處理過程外部行為
- 界面定義
- 數據結構
- 必要的注釋
- 文件的邏輯結構、記錄描述以及訪問方式
- 交叉引用信息
詳細設計規約
詳細設計規約是對軟件各組成部分內部屬性的描述,它是概要設計的細化。即在概要設計規約的基礎上,增加以下內容:
設計規約格式
?
實驗二:軟件詳細設計-2
面向數據流的設計方法-2
模塊結構圖
模塊結構圖(Module Structure Diagram, MSD)是用來表示系統的模塊劃分與層次分解關系,表示模塊的調用關系、模塊間數據流與控制流的傳遞關系以及模塊與外界或數據存儲的信息接口的規范化圖形,是結構化系統設計的一種重要的圖表描述工具。
組成元素
- 方框:內有名稱,表示模塊;
- 直線:表示上層模塊對下層模塊的調用;
- 尾部帶空心圓的箭頭:表示按方向傳遞的數據信息;
- 尾部帶實心圓的箭頭:表示按方向傳遞的控制信息。
作用
描述模塊間參數交換情況、評價模塊間耦合情況、確定模塊間的接口。結構圖一般不列入設計文檔,只用于設計階段檢查模塊設計的正確性和模塊獨立性。
變換設計
變換設計就是從變換型數據流圖映射出軟件模塊結構的過程,也稱以變換為中心的設計。
變換設計的基本方法有兩步:
圖1 變換設計
圖2 變換設計
圖3 變換設計
事務設計
事務設計就是從事務型數據流圖映射出軟件模塊結構的過程,也稱為以事務為中心的設計。
事務設計的基本方法有兩步:
圖4 事務設計
圖5 事務設計
圖6 事務設計
、
實驗二:面向數據流的設計方法-1
?
模塊及模塊化設計思想?
模塊及模塊化思想
系統的模塊數目增加,每個模塊的規模減小,開發單個模塊的成本減小,但是,隨著模塊數目增加,設計模塊間接口的工作量增也加。所以隨著模塊數目的增加,系統的總成本先降低后增加,總成本曲線出現一個最小成本區。如果一個大型程序僅有一個模塊,它將很難被人所理解,模塊化的目的之一是為了讓一個大型的程序更容易被人所理解。
采用模塊化原理可以使軟件結構更加清晰,更加易于閱讀和理解。程序錯誤通常出現在部分模塊及它們間的接口,所以模塊化思想使軟件更加容易測試和調試,提高了軟件的可靠性,模塊化使得一個大型的程序分解成不同的模塊,對難易程度不同的模塊可以分配技術熟練程度不同的程序員編寫,有助于軟件開發的組織管理。模塊化的缺點是會造成性能損耗,系統逐步分層,調用鏈長,模塊間通信很耗性能。
逐步求精中每一層中的模塊都是對系統抽象層次的一次精化。軟件結構頂層的模塊,控制系統的主要功能。軟件結構底層的模塊,完成對數據的一個具體處理,軟件結構中,首先抽象出系統的主要功能,然后逐步實現低層細節采用自頂向下,由抽象到具體的方式分配控制,提高了軟件的可理解性和可測試性。
信息隱藏與局部化。在軟件結構中,各個模塊間的信息應該彼此相對獨立,隱藏模塊的實現細節,僅允許訪問其他模塊中為了完成系統功能所需要的的信息,在模塊中使用局部數據元素有助于實現信息隱藏。編寫系統的不同模塊時,可以根據實際需要自由命名局部變量。模塊獨立的概念是模塊化、抽象、信息隱藏和局部化概念的直接結果。
闖關要求
案例介紹
項目背景及介紹
電商系統致力于提供產品展示及訂購,為核心的網上購物服務宣傳自己商店的商品并將自己的產品展現給用戶,讓客戶通過網站能自由地選擇購買產品。
該網站是通過用戶登錄瀏覽商品、查看公告、購買、確定購買、實現用戶模塊功能。其中訂單的生成,網站后臺系統,通過系統管理員管理商品、訂單、用戶來實現。用戶可以在商城前臺進行瀏覽商品,加入購物車,下單等操作。后臺管理模塊可以對商品、訂單、會員以及庫存進行管理。
功能需求
功能塊劃分
網上商城共分兩個部分,一部分是面向用戶的部分,包括:顧客在線注冊、購物、提交訂單、付款等操作;另外一部分是商城管理部分,這部分的內容包括:產品的添加、刪除、查詢、訂單的管理、操作員的管理、注冊用戶的管理等。三,商家(增,刪,改)
功能塊描述
(一)面向用戶部分功能
(二) 后臺管理部分功能
耦合原則
如果模塊間必須存在耦合,就盡量使用數據耦合、少用控制耦合、限制公共耦合的范圍以及堅決避免使用內容耦合。
內聚定義
內聚(Cohesion)是指一個模塊之內各成分之間相互依賴程度的度量。
常見內聚類型(由低到高)
闖關要求
案例介紹
網上商城系統致力于提供產品展示及訂購,為核心的網上購物服務宣傳自己商店的商品并將自己的產品展現給用戶,讓客戶通過網站能自由地選擇購買產品。
用戶可以在商城前臺進行瀏覽商品,加入購物車,下單等操作。后臺管理模塊可以對商品、訂單、會員以及庫存進行管理。
題目
請根據網上商城系統案例描述以及相關知識點,完成相應題目。
常見的啟發規則
1.改進軟件結構提高模塊獨立性
耦合定義
耦合(Coupling)是指不同模塊之間相互依賴程度的度量。
常見耦合類型(由強到弱)
- 定義:一個模塊直接修改或操作另一個模塊的數據。
- 舉例:在模塊A中定義了某個變量,在模塊B中直接使用了該變量。
- 定義:兩個以上的模塊共同引用一個全局數據項。
- 舉例:我們定義了全局變量a,在模塊、模塊B和模塊C中均使用到了此變量a。
- 定義:一個模塊向另一模塊傳遞一個控制信號,接收信號的模塊將依據該信號值進行必要的活動。
- 舉例:模塊A實現了統計最近三天以及最近七天銷量的功能,而具體執行哪種統計由傳入的控制參數決定,則該模塊具有控制耦合。邏輯內聚的模塊調用就是典型的控制耦合。
- 定義:兩個模塊至少有一個通過界面傳遞的公共參數,包含內部結構,如數組、字符串等。
- 舉例:模塊A向模塊B傳遞數組類型數據。
- 定義:模塊間通過參數傳遞基本類型的數據。
- 舉例:模塊A實現兩個數的加法操作,模塊B實現數字的初始化,模塊B將數字傳遞給模塊A,由模塊A完成加法。
- 定義:一個模塊之內各成分之間沒有任何關系,只是把分散的功能整合到了一起。
- 舉例:A模塊中有三條語句(一條賦值,一條求和,一條傳參),表面上看不出任何聯系,但是B、C模塊中都用到了這三條語句,于是將這三條語句合并成了模塊A。模塊A具有偶然內聚。
- 定義:幾個邏輯上相關的功能放在同一模塊中。
- 舉例:模塊A實現了統計最近三天以及最近七天銷量的功能,而具體執行哪種統計由傳入的控制參數決定,則模塊A具有邏輯內聚。
- 定義:一個模塊完成的功能必須在同一時間內完成,而這些功能只是因為時間因素關聯到一起。
- 舉例:模塊A實現了全部全局變量的初始化操作。模塊A這種初始化模塊就具有時間內聚。
- 定義:處理成分必須以特定的次序執行。
- 舉例:模塊A依次讀取用戶的用戶名、密碼和地址信息,并且這個次序是事先規定的,則模塊A具有過程內聚。
- 定義:各成分都操作在同一數據集或生成同一數據集。
- 舉例:模塊A根據員工生日分別計算員工年齡和退休日期,則模塊A具有通信內聚。
- 定義:各成分與一個功能相關,且一個成分的輸出作為另一成分的輸入。
- 舉例:模塊A根據員工生日計算員工年齡,再根據員工年齡計算退休日期,則模塊A具有順序內聚。
- 定義:模塊的所有成分對完成單一功能是最基本的,且該模塊對完成這一功能而言是充分必要的。
- 舉例:模塊A根據員工生日計算員工年齡。
設計出軟件的初步結構以后,應該審查分析這個結構,通過模塊分解或合并,力求降低耦合提高內聚。例如,多個模塊公有的一個子功能可以獨立成一個模塊,由這些模塊調用;有時可以通過分解或合并模塊以減少控制信息的傳遞及對全程數據的引用,并且降低接口的復雜程度。
2.模塊規模應該適中
過大不易理解;太小則接口開銷過大。
經驗表明,一個模塊的規模最好能寫在一頁紙內(通常不超過60行語句)。
3.深度、寬度、扇出和扇入都應適當
深度:表示軟件結構中控制的層數。
深度能粗略地標志一個系統的大小和復雜程度,深度和程序長度之間有粗略的對應關系
寬度:表示軟件結構中控制的總跨度。
寬度是同一個層次上的模塊總數的最大值,寬度越大系統越復雜;對寬度影響最大的因素是模塊的扇出。
扇出:表示一個模塊直接控制(調用)的模塊數目扇出為3-4,上限扇出為5-9。
扇入:表示有多少個上級模塊直接調用該模塊扇入越大則共享該模塊的上級模塊數目越多。
4.模塊的作用域應該在控制域之內
模塊的控制域:這個模塊本身以及所有直接或間接從屬于它的模塊的集合。
模塊的作用域:受該模塊內一個判定影響的所有模塊的集合。
在一個設計得很好的系統中,所有受判定影響的模塊應該都從屬于做出判定的那個模塊,最好局限于做出判定的那個模塊本身及它的直屬下級模塊。
5.力爭降低模塊接口的復雜程度
模塊接口復雜是軟件發生錯誤的一個主要原因。應該仔細設計模塊接口,使得信息傳遞簡單并且和模塊的功能一致。接口復雜或不一致(即看起來傳遞的數據之間沒有聯系),是緊耦合或低內聚的征兆,應該重新分析這個模塊的獨立性。接口復雜可能表明模塊的獨立性差。
6.設計單入口單出口的模塊
這條啟發式規則警告軟件工程師不要使模塊間出現內容耦合。當從頂部進入模塊并且從底部退出來時,軟件是比較容易理解的,因此也是比較容易維護的。
7.模塊功能應該可以預測
模塊的功能應該能夠預測,但也要防止模塊功能過分局限。
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的结构化设计(实验二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OllyDbg动态调试与逆向破解Trac
- 下一篇: 全球与中国汽车线性稳压器市场运营态势及产