第-5-講-需求分析建模-readpudnc課件_第1頁
第-5-講-需求分析建模-readpudnc課件_第2頁
第-5-講-需求分析建模-readpudnc課件_第3頁
第-5-講-需求分析建模-readpudnc課件_第4頁
第-5-講-需求分析建模-readpudnc課件_第5頁
已閱讀5頁,還剩132頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5講需求分析建模需求分析建模抽象與模型需求分析建模的過程需求分析建模的方法結構化分析面向對象分析Jackson分析結構化分析數據建模功能建模和信息流行為建模抽象(Abstract)計算中抽象的本質和使用。在處理復雜事務、構造系統、隱藏細節和獲取重復模式方面使用抽象,通過對不同層次的細節和指標的抽象,能夠表達一個實體和系統。源于實驗科學,主要要素是數據采集方法和假設的形式說明,模型的構造與預測實驗分析結果分析。在為可能的算法、數據結構和系統結構等構造模型時使用抽象。抽象的結果是概念符號模型。模型(model)模型是對現實世界某些重要方面的抽象表示。模型是一種抽象,從某個視點、在某種抽象層次上詳細說明被建模的系統。有時我們使用術語“抽象”來表示模型,因為我們從現實世界中抽象出對我們特別有用的東西。分類具體模型:直觀模型、物理模型等;抽象模型:思維模型、符號模型、數學模型等。

系統包含一組模型,每個參與軟件系統開發的人員都需要有一個獨特的系統視角。系統構架工程師項目經理系統分析員設計人員測試人員用戶1

通過對現實環境的調查,獲得當前系統的物理模型。

學生學生購書申請購書單發票領書單書信北107張教務科信北206王會計室信北206李出納員(實南)趙教材科學生購買教材的實際處理流程:當前系統物理模型需求分析的過程需求分析的過程2

去掉具體模型中的非本質因素:抽取現實系統的實質,抽象出當前系統的邏輯模型。

學生學生購書申請購書單發票領書單書審查有效性開發票開領書單發書學生購買教材的邏輯模型需求分析的過程3分析當前系統與目標系統的差別,建立目標系統的邏輯模型。學生審查并開發票購書單發票領書單開領書單無效書單學生計算機教材管理系統的邏輯模型需求分析的過程4對目標系統的邏輯模型進行細化、改進與優化5需求分析的驗證當前系統目標系統物理模型邏輯模型邏輯模型物理模型模型化抽象化具體化實例化怎么做做什么當前系統目標系統需求定義需求分析的過程邏輯模型和物理模型模型是對對象系統的形式化的特征抽象,概括性或近似地表示;構造模型的過程是一個抽象、分析的過程。對象系統模型系統抽象(映射)模型應用模型構造的過程邏輯模型

物理模型

(本質模型、概念模型)(實施模型、技術模型)現行系統目標系統描述重要的業務功能,無論系統是如何實施的。描述現實系統是如何在物理上實現的。描述新系統的主要業務功能和用戶新的需求,無論系統應如何實施。描述新系統是如何實施的(包括技術)。模型化或模型方法是通過抽象、概括和一般化,把研究的對象或問題轉化為本質(關系或結構)相同的另一對象或問題,從而加以解決的方法。模型化方法要求所建立的模型能真實反映所研究對象的整體結構、關系或某一過程、某一局部、某一側面的本質特征和變化規律。模型的作用在建模過程中了解系統通過抽象降低復雜性有助于回憶所有的細節有助于開發小組間的交流有助于與用戶的交流為系統的維護提供文檔需求分析建模方法按照信息的流向、結構、和內容三個方面可以將現有的需求分析建模方法劃分為:面向信息流向:結構化分析方法面向信息結構:Jackson分析方法面向信息內容:面向對象分析方法描述系統需求時可以從系統的功能、行為和信息三個方面進行,側重點可以不一樣。計算機世界現實世界影射傳統的開發模型不能完全適應具體的應用領域開發

軟件開發過程實際是:人通過抽象、歸納把客觀系統變換到軟件系統,并保證軟件系統的解等價客觀系統的解。

由于客觀系統與軟件系統差異很大,所以變換過程必須通過一個中間過渡系統。不同的軟件開發模型采用不同的過度系統完成變換過程。客觀系統客觀系統的解軟件系統軟件系統的解變換解的等價計算機世界現實世界結構化開發方法結構化分析結構化設計結構化編程OOAOODOOP面向對象開發方法結構化分析方法SA結構化分析(StructuredAnalysis,SA)是由DouglasRoss

提出的,由DeMarco進行推廣的。采用自頂向下、逐層進行功能分解的系統分析方法來定義系統的需求。適用于分析大型的數據處理系統。方法的特點:利用數據流圖(DataFlowDiagram,DFD)來幫助理解問題,對問題進行分析。一般工具:DFD、數據字典、結構化英語、判定表、判定樹等。結構化分析方法功能分析工具:DFD、DD、結構化英語、判定表和判定樹。行為分析工具:狀態遷移圖、Petri網等。數據分析工具:ER圖或者EER(擴展ER)圖。SA主要針對數據處理領域,因此,系統分析的側重點在于功能分析和數據分析,而行為分析使用得較少。結構化分析結構化分析遵循的三條基本原則:

分解抽象映射三個主要目標:描述用戶需要建立創建軟件設計的基礎定義軟件完成后可被確認的一組需求SA的結構E-R圖狀態變遷圖(STD圖)加工規約控制規約數據對象規約數據字典(DD)數據流圖(DFD)分析模型的構成元素數據字典(DD)

模型核心,包含了所有數據對象的描述的中心庫。E-R圖(ERD)表示數據對象以及相互的關系,用于數據建模。數據流圖(DFD)

指明數據在系統中移動時如何被變換;描述對數據流進行變換的功能;DFD中每個功能的描述包含在加工規約(小說明)。用于功能建模。狀態變遷圖(STD)

指明作為外部事件的結果,系統將如何動作。用于行為建模。數據建模最常用的表示概念性數據模型的方法,是實體聯系方法(Entity-RelationshipApproach)ER圖描述現實世界中的實體,而不涉及這些實體在系統中的實現方法。E-R圖元素⑴Entities例:,

,StudentInstructorClass實體是客觀世界中存在的且可相互區分的事務。實體可以是人也可以是物,可以是具體的事物也可以是抽象概念。例如,職工、學生、課程、教師等都是實體。E-R圖元素客觀世界中的事物彼此間往往是有聯系的,例如,教師與課程間存在“教”這種聯系。⑵Relations例:EnrolledinTeach111NMNE-R圖元素屬性是實體或聯系所具有的性質。通常一個實體由若干個屬性來刻畫。例如,“學生”實體有學號、姓名、性別、系、年級⑶Attributes例:,NameID#E-R圖…………InstructorStudentEnrolledinTeachClassID#ID#NameNameSexSexTitleInstructorIDClassIDGradeStudentIDClassIDCreditID#Subject例:客人入住客房狀態客房服務服務類別姓名地址身份證號碼護照號碼電話……客房號床位數房間類別價格1……住宿編號住宿時間支付方式……日期,客人數狀態(已預定/占用/維修中)……日期,數量……名稱,價格……數據建模實例:簡單的酒店系統數據模型變換輸入信息信息流模型輸出信息外部實體外部實體外部實體輸入信息外部實體外部實體輸出信息輸出信息功能建模和信息流數據存儲1數據流圖數據流圖說明(Yourdon表示):表示外部實體,代表數據源和數據池。表示加工,代表接收輸入,經過變換,繼而產生輸出的處理過程。表示數據流,代表數據的流向和路徑。表示數據存儲,代表系統加工的數據所存儲的地方。外部實體變換數據存儲外部實體數據流過程(加工)數據存儲條目查詢請求查詢可用條目1客戶目錄產品條目庫存條目可用條目查詢結果目的地響應來源觸發器動作DFD的Gane表示1數據流圖數據流圖(DFD,DataFlowDiagram)描述邏輯模型的圖形工具,表示數據在系統內的變化。DFD可以分層表示信息流和功能的細節,既提供了功能建模的機制,又提供了信息流建模的機制。第0層的DFD也被稱為基本系統模型或語境模型。DFD沒有提供顯式的處理順序,過程或順序式隱含在DFD中的,顯式的推遲到系統設計時。不要混淆DFD和程序流程圖!人事部門人事工資管理系統會計部門職工出缺勤報表職工出缺勤信息職工工資信息職工工資報表職工職工基本信息職工工資單人事工資管理系統的頂層DFD(概圖)范例職工基本信息管理子系統1.02.0人事工資管理系統0層DFD范例職工出缺勤信息職工工資管理子系統3.0職工出缺勤管理子系統職工基本信息職工工資信息人事部門會計部門職工職工出缺勤報表職工出缺勤信息職工工資信息職工工資報表職工基本信息職工工資單建立職工出缺勤信息3.1人事工資管理系統1層DFD:加工3.0的分解圖職工出缺勤信息3.2制作職工出缺勤信息統計表職工基本信息職工出缺勤報表職工出缺勤信息分層DFD實例一個簡單的考務處理系統功能描述:(1)對考生送來的報名單進行檢查;(2)對合格的報名單編好準考證號后將準考證送給考生,并將匯總后的考生名單送給閱卷站;(3)對閱卷站送來的成績單進行檢查,并根據考試中心制定的合格標準審定合格者;(4)制作考生通知單(含成績及合格/不合格標志)送給考生;(5)按地區進行成績分類統計和試題難度分析,產生統計分析表。考生考務處理系統考試中心閱卷站不合格報名單報名單準考證考生通知單成績清單合格標準錯誤成績清單考生名單統計分析表頂層數據流圖登記報名單報名單準考證1統計成績2不合格報名單考生通知單成統計分析表考生名冊績清單合格標準考生名單成績清單錯誤0層數據流圖1層數據流圖(a)檢查報名單報名單準考證1.1編準考證號1.2不合格報名單考生名冊考生名單合格報名單登記考生1.3一層數據流圖(b)檢查成績清單2.1審定合格者2.2考生名冊正確成績清單制作通知單2.3分析統計成績2.4分析試題難度2.5試題得分清單考生通知單難度分析表合格標準分類統計表成績清單錯誤成績清單經審定的成績清單

數據流圖分解原則DFD可以用來表示一個系統或軟件在任何層次上的抽象。較大型軟件系統DFD分成多層(子圖、父圖概念),可以表示數據流和功能的進一步的細節。0層數據流圖應當把系統或軟件作為一個單一的功能來描述。應當注意原始的輸入和輸出。每個過程的每次細化一般控制在3-4個分過程。所有圓圈和箭頭應用有意義的名稱標注。一個名稱標注在同一個DFD中只能出現一次。每次細化時,細化部分的輸入和輸出必須保持一致,即保持信息流連續性,有時稱為平衡。一次最好只對一個圓圈細化。S2132.22.12.33.13.2頂層(不編號)0層1層監控固件和操作接口每個固件狀態動作警告機器人初始化控制操作命令部件狀態緩沖器位置命令開始/停止處理機器人命令機器人命令文件操作設置處理活動記錄機器人動作位串數據流和控制流舉例

(使用Ward和Mellor符號)數據和控制模型的關系

DFD加工規約加工模型DFD控制規約控制模型數據輸出數據條件數據輸入控制輸入控制輸出加工激活者SafeHomede控制面板與用戶交互SAFEHOMEARMEDPOWER01123456789*0#OFFARAYSTAYMAXTESTBYPASSINSTANTCODECHIMEREADYpanicalarmcheckfireawaystayinstantbypassnotreadySafeHomede的第0層DFD

SafeHomede軟件系統用戶命令和數據顯示信息控制面板傳感器傳感器狀態警鈴電話線警告類型電話號碼撥音控制面板顯示SafeHomede的第1層DFD控制面板與用戶交互控制面板顯示密碼電話號碼撥音傳感器狀態顯示信息配置請求用戶命令和數據配置系統警鈴電話線傳感器配置信息顯示信息和狀態監控傳感器激活/不激活系統傳感器信息密碼處理警告類型檢驗id信息開始停止狀態信息監控傳感器的第2層DFD電話號碼撥音傳感器狀態配置數據顯示格式配置信息產生警告信息撥號評估設置傳感器信息讀傳感器警告類型傳感器id類型傳感器id類型定位SafeHomede的第一層CFD控制面板與用戶交互控制面板顯示顯示活動狀態(完成、在處理中)配置系統警鈴電話線傳感器配置信息顯示信息和狀態監控傳感器激活/不激活系統警告信號密碼處理傳感器事件警告狀態超時閃爍標志開/關切換控制規格說明控制規格說明用兩種不同的方法表示系統的行為。狀態轉換圖STD--順序說明過程啟動表PAT--組合說明過程規格說明過程規格說明描述所有流模型的過程,該過程是最后的細化層次上的過程。包括解說詞文本、用PDL描述的過程算法、數學方程、圖或表。行為建模采用動態分析方法,直觀地分析系統的動作。最常用的動態分析方法:

狀態遷移圖STDSTD通過描述狀態以及導致系統改變狀態的事件來表示系統的行為。狀態是任意可觀察的行為模式,一個狀態代表系統的一種行為模式。STD指明了系統如何在狀態間移動。時序圖

Petri網就緒t1t4t2t3等待運行狀態事件運行就緒等待t1t2t3t4運行就緒就緒等待進程的狀態遷移圖和狀態遷移表狀態遷移圖SafeHomede的狀態變遷圖讀用戶輸入超時監視系統狀態傳感器事件行為顯示用戶反饋與“用戶交互”有關開關/切換與“監視&控制系統”有關顯示活動狀態與“用戶交互”有關傳感器事件與“顯示信息&狀態”有關與“監視&控制系統”有關傳感器事件傳感器事件與“監視&控制系統”有關傳感器事件與“顯示信息&狀態”有關閃爍與“顯示信息&狀態”有關數據字典DD是對所有與系統相關的數據元素的一個有組織的列表,以及精確的、嚴格的定義,使得用戶和系統分析員對于輸入、輸出、存儲成分和中間計算有共同的理解。數據字典的內容名稱數據項或控制項、數據存儲或外部實體的主要名稱。要求命名唯一性、一致性、“見名知義”。別名(alias)最早使用的另一個名稱何處用/如何用使用數據或控制項的加工列表,以及如何使用。內容描述表示內容的符號。附加信息關于數據類型、預設值、限制或局限等信息。

操作符含義描述

=定義為+與(順序結構)

{...}n

重復n次(循環結構)〔..|..〕或(選擇結構)〔..,..〕(...)任選

m..n界域*...,*注釋符DD內容描述符號表示F1:航班信息文件={航空公司名稱+航班號+起點+終點+日期+起飛時間+降落時間}航空公司名稱=2{字母}4

航班號=3{十進制數字}3

字母=“A”…“Z”十進制數字=“0”…“9”起點=終點=1{漢字}10

起飛時間=降落時間=時+分時=“00”…“23”

分=“00”…“59”

日期=年+月+日年=[2000|2001|2002|2004]

月=“01”…“12”

日=“01”…“31”重復項:起點=終點=1{漢字}10

航空公司名稱=2{字母}4

航班號=3{十進制數字}3

組合項:日期=年+月+日

起飛時間=降落時間=時+分選擇項:年=[2000|2001|2002|2004]原數據項:字母=“A”…“Z”

十進制數字=“0”…“9”

時=“00”…“23”

分=“00”…“59”

月=“01”…“12”

日=“01”…“31”數據流條目給出DFD中某個數據流的定義,通常包括:

數據流標識數據流來源數據流去向數據流的數據組成流動屬性描述:頻率、數據量購書單發票領書單審查并開發票開領書單無效書單學生12各班學生用書表舉例:學生教材存量表數據流條目說明舉例數據流名:發票別名:

無簡述:

學生購書時填寫的項目來源:

學生去向:

加工1“審查并開發票”組成:(學號)+姓名+{書號+數量}數據流量:1000次/周

高峰值:開學期間1000次/天

數據存儲條目(數據文件詞條)對某個文件的定義,包括:

文件名描述數據結構數據存儲方式關鍵碼存取頻率和數據量安全性要求數據存儲條目說明舉例文件名:庫存記錄別名:無簡述:存放庫存所有可供貨物的信息組成:貨物名稱+編號+生產廠家+單價+庫存量組織方式:索引文件,以貨物編號為關鍵字查詢要求:要求能夠立即查詢數據項條目(數據元素詞條)不可再分解的數據單位,包括:

名稱描述數據類型長度(精度)

取值范圍及缺省值計量單位相關數據元素及數據結構數據項條目說明舉例數據項名:貨物編號別名:G-No,G-num簡述:本公司的所有貨物的編號類型:字符串長度:10取值范圍及含義:

第1位:[J|G](進口/國產)

第2~4位:LB01..LB29(類別)

第5~7位:“A00”..“A99”(規格)

第8~10位:“001”..“999”(品名編號)(1)人工方法(2)自動方法(利用字典管理程序)DD應具特點(1)通過名字可方便查閱數據定義(2)無冗余(3)易更新修改數據字典實現方法1.確定系統邊界,畫出系統環境圖2.自頂向下,畫出各層數據流圖3.定義數據字典結構化分析實施步驟結構化分析方法的弊病基于功能分析和數據分析,將功能和數據分離,與人類現實世界環境不一樣,和人的自然思維也就不一致了。以功能為主,數據只是被動的信息載體。當系統行為發生變化時,系統維護非常困難。DFD中不涉及系統的控制信息,因此,SA不適合于分析以控制信息為主的系統需求。小結需求分析建模的過程需求分析建模的方法結構化分析面向對象分析Jackson分析結構化分析數據建模功能建模和信息流行為建模第6講設計概念與原理內容提要軟件設計的重要性設計過程設計基本原則設計概念模塊化設計模塊設計的啟發規則概述軟件設計:應用各種技術和原理,對一個軟件系統做出足夠詳細的決策,使之有可能在物理上得以實現的過程。軟件是一個迭代的過程。設計目標:將需求分析的結果(分析模型與需求分析規約)轉化為實際軟件系統的一個模型或軟件表達式,即用于構造軟件的“藍圖”。最終產品:設計規約,包括描述體系結構、數據、過程和界面設計模型。評審:清晰性、正確性、完整性。軟件設計與程序設計不同。1.軟件設計的重要性軟件需求分析和定義完成之后,進入軟件設計階段。軟件設計是構造和驗證軟件所需的技術(設計、編碼、測試)之一。開發階段的信息流翻譯分析模型到軟件設計THEANALYSISMODELproceduraldesigninterfacedesignarchitecturaldesigndatadesignTHEDESIGNMODELDataobjectdescriptionProcessspecificationControlspecificationE-RDFDSTDDDRepresentationsofsoftwarethatcanbeassessedforquality翻譯分析模型到軟件設計數據設計將分析時創建的信息域模型變換為軟件所需的數據結構,側重于數據結構的定義。體系結構設計定義軟件系統各主要結構構件之間的關系。過程設計則是把結構構件轉換成軟件的過程性描述。在編碼步驟,根據這種過程性描述,生成源程序代碼,然后通過測試最終得到完整有效的軟件。接口設計是建立軟件內部的關系以及軟件人-機之間的交互機制。軟件設計的重要性可以用“質量”表達。軟件設計的重要性軟件設計是后續開發步驟及軟件維護工作的基礎。如果沒有設計,只能建立一個不穩定的系統結構。總體設計從回答“做什么”到回答“怎樣做”劃分出組成系統的物理元素——程序、文件、數據庫、過程和文檔等等每個元素還是黑盒子---“全局高度,抽象層次”2.設計過程從項目管理的角度來看,軟件設計分兩步完成。概要設計,將軟件需求轉化為數據結構和軟件體系結構。詳細設計,即過程設計。通過對體系結構表示進行細化,得到軟件的詳細的數據結構和算法。P.63設計技術和管理方面之間的關系設計和軟件質量McGlaughlin提出的良好設計的演化的特征:設計必須實現所有在分析模型中的顯式需求,并且滿足用戶希望的隱式需求。設計必須是可讀的、可理解的指南,對于編碼和測試人員。設計應該提供軟件的完整概貌。設計和軟件質量指導性原則設計應該展示一種層次性結構。設計應該模塊化。設計應該包括數據、體系結構、接口和模塊(構件)的清楚的表示。設計應有性質不同的可區分的數據結構和過程。設計應該具有獨立功能特征的模塊。設計應該降低模塊和外部環境之間接口的復雜性。設計應該利用需求分析中獲得的信息和可重復的方法。軟件設計的演化模塊化程序設計和自頂向下求精軟件體系結構的方法。結構化程序設計面向數據流的程序設計面向對象的設計方法軟件體系結構的設計基于設計模式的軟件設計3.設計基本原理軟件設計概念提供了完善的設計方法,還可以幫助軟件設計人員回答下列問題:能使用什么標準將軟件化分為單個構件?如何將功能或數據結構的細節與軟件的概念表達分離?是否存在定義軟件設計的技術質量的統一標準?設計基本原理1.抽象Abstraction:抽出事物的本質特性而暫時不考慮無關的細節。忽略細節,分層理解問題,自頂向下層層細化,包括對過程、數據和控制抽象。過程抽象:一個命名的指令序列,具有特定和有限的功能。數據抽象是命名的數據集合,描述一個數據對象。控制抽象隱含了不必說明的內部細節的程序控制機制。是實現模塊化的手段之一。doorimplementedasadatastructuremanufacturermodelnumbertypeswingdirectioninsertslightstypenumberweightopeningmechanismopenimplementedwitha"knowledge"oftheobjectthatisassociatedwithenterdetailsofenteralgorithmwalktodoor;reachforknob;switchtheknobopendoor;walkthrough;closedoor.過程抽象例:開發一個CAD軟件,實現一個二維繪圖系統的全部功能,供低級計算機輔助設計使用。抽象層次I:用問題所處環境的術語來描述這個軟件。該軟件包括一個計算機繪圖界面,向繪圖員顯示圖形,以及一個數字化儀界面,用以代替繪圖板和丁字尺。所有直線、折線、矩形、圓及曲線的描畫、所有的幾何計算、所有的剖面圖和輔助視圖都可以用這個CAD軟件實現……。過程抽象抽象層次II:任務需求的描述。列出“What”而不是“How”。

CADSOFTWARETASKS:

userinteractiontask;2-Ddrawingcreationtask;graphicsdisplaytask;drawingfilemanagementtask;END過程抽象抽象層次III:程序過程表示。以2-D繪圖生成任務為例:

PROCEDURE2-DdrawingcreationREPEATUNTILE(drawingcreationtaskterminates)DOWHILE(digitizerinteractionoccurs)Digitizerinterfacetask;DETERMINEdrawingrequestCASELine:linedrawingtask;Rectangle:rectangledrawingtask;Circle:circledrawingtask;……END;

DOWHILE(keyboardinteractionoccurs)keyboardinteractiontask;PROCESSanalysis/computationCASEView:auxiliaryviewtask;Section:crosssectioningtask;……END;

……ENDREPETITION;

ENDPROCEDURE.

過程抽象在這個抽象層次上,給出了初步的過程表示,所用的術語都已面向軟件,而且模塊化的工作已經開始顯露。逐步細化和模塊化的概念與抽象緊密相連。數據抽象定義“繪圖drawing”數據對象作為一種抽象數據類型。TYPEdrawingISSTRUCTUREDEFINED

numberISSTRING

LENGTH(12)

geometry

DEFINED…

notesISSTRING

LENGTH(256)…ENFdrawingTYPE;BlueprintISINSTANCEOFdrawing;SchematicISINSTANCEOFdrawing;設計基本原理2.細化Refinement:自頂向下的設計策略。doorimplementedasadatastructuremanufacturermodelnumbertypeswingdirectioninsertslightstypenumberweightopeningmechanismopenimplementedwitha"knowledge"oftheobjectthatisassociatedwithenterdetailsofenteralgorithmwalktodoor;reachforknob;Switchtheknob;opendoor;walkthrough;closedoor.repeatuntildooropensturnknobclockwise;ifknobdoesn'tturn,thentakekeyout;findcorrectkey;insertinlock;endifpull/pushdoormoveoutofway;endrepeat細化設計的細化過程與需求分析的劃分類似,只是考慮的細節層次不同,而不是方法。細化實際是一個詳細描述的過程。抽象與細化是互補的概念。設計基本原理模塊化:Modularity模塊是數據說明、可執行語句等程序對象的集合,是單獨命名的并且可以通過名字來訪問,例如過程、函數、子程序、宏、modula等。軟件被劃分成獨立命名和可獨立訪問的被稱作模塊的構件,每個模塊完成一個子功能,它們集成到一起滿足問題需求。easiertobuild,easiertochange,easiertofix...模塊化模塊化論據:C(x)定義為問題x的感知復雜性E(x)定義為解決問題x所需要的工作量對p1和p2兩個問題,若C(p1)>C(p2),則E(p1)>E(p2)C(p1+p2)>C(p1)+C(p2)E(p1+p2)>E(p1)+E(p2)不要過度模塊化!每個模塊的簡單性將被集成的復雜性所掩蓋。模塊化模塊化和軟件成本如何確定地預測最小成本區?成本成本/模塊最小成本區接口成本軟件總成本模塊數目模塊化如何確定模塊的大小:模塊可分解性模塊可組裝性模塊可理解性模塊連續性模塊保護設計基本原理4.軟件體系結構Architecture是過程構件(模塊)的層次結構、模塊間交互的方式以及其使用的數據結構。軟件結構的演變從確定問題開始,當該問題的每個部分用一個或多個軟件加以解決以后,整個問題的解也就有了。軟件體系結構結構的演化P3P1P2P4P5S1S2S3S4S5體系結構設計基本原理5.控制層次ControlHierarchy也稱為程序結構深度:表示控制的層數。寬度:表示控制(同一層次)總跨度。扇出數:指由一模塊直接控制的其他模塊的數目。扇入數:指有多少個模塊直接控制一個給定的模塊。上級模塊從屬模塊控制層次McbalkedmfgihjnopqrWidth

DepthFan-outFan-in控制層次控制層次代表了兩種不同的體系結構特征:可見性visibility和連接性connectivity

。可見性:構件集合可以直接或間接引用一個給定構件作為數據。連接性:構件集合直接引用一個給定構件作為數據。設計基本原理Mcbalkedmfgh6.結構劃分如體系結構是層次式的,則程序結構可以被水平劃分和垂直劃分。n設計基本原理Mcbalkedmfgh6.垂直劃分n設計基本原理7.數據結構數據結構是數據元素之間邏輯關系的表示。數據結構決定了信息的組織、訪問方法、關聯程度、可替換的處理方法。典型的數據結構:標量項、順序向量、數組、鏈表、樹、堆等。設計基本原理8.軟件過程softwareprocedure體系結構定義了控制層次,而軟件過程著重于每個單獨模塊的處理細節。過程必須提供精確定義,包括事件順序、準確的抉擇點、重復的操作,以及數據組織和結構。體系結構與軟件過程是相互關聯的。設計基本原理9.信息隱藏informationhiding信息隱蔽:應該這樣設計和確定模塊,使得一個模塊內包含的信息(過程和數據)對于不需要這些信息的模塊來說,是不可訪問的。是實現模塊化的手段之一。Theclientsofamoduleknowaboutitsservicesonlythroughitsinterface;theimplementationishiddenfromthem(hencemaychangewithoutaffectingtheclients).

隱藏就是有效的模塊化可以通過定義一組獨立模塊來實現。信息隱藏modulecontrolledinterface"secret"?algorithm?datastructure?detailsofexternalinterface?resourceallocationpolicyclientsaspecificdesigndecision信息隱藏“信息隱藏”,更準確地描述應是“細節隱藏”,因為隱藏的不是信息,而是實現的細節。4.模塊化設計實現模塊化的手段:抽象和信息隱蔽。在軟件體系結構中,從綁定時間、激活機制和控制模式來劃分模塊類型。在程序結構中,分為順序、增量和并行模塊。模塊化設計模塊獨立性通過開發具有單一功能和反對同其它模塊的過多交互的模塊而實現的。好設計的關鍵:每個模塊完成一個相對獨立的子功能,并且與其它模塊間的接口簡單。好處:更有利于開發、設計/編碼修改的副作用減小、模塊的復用可能。功能獨立性是良好設計的關鍵,設計又是軟件質量的關鍵。度量標準:內聚cohesion和耦合coupling。內聚是一個模塊內部的交互程度;耦合是模塊之間交互的程度。內聚內聚:Theelementsofamodulearedirectedtoperformthesametask.Goal:ascohesiveaspossible.內聚級別:偶然內聚邏輯內聚時間內聚過程內聚通信內聚順序內聚功能內聚最差最好內聚低內聚偶然內聚(Coincidentalcohesion):Unrelatedfunctions,processes,ordataarefoundinthesamemodule(forconvenience).例:readdiskfile;calculatecurrentvalues;produceuseroutput;…嚴重的缺點:產品的可維護性退化;模塊是不可復用的,增加軟件成本。解決途徑:將模塊分成更小的模塊,每個小模塊執行一個操作。內聚低內聚邏輯內聚(Logicalcohesion):Logicallyrelatedfunctionsordataareplacedinthesamemodule.問題:接口難于理解;完成多個操作的代碼互相糾纏在一起,導致嚴重的維護問題。A:Readinputsfromdiskfromtapefromkeyboard內聚低內聚時間內聚(Temporalcohesion):Thefunctionsarerelatedonlybythetiminginvolved.例如:系統的初始化

openoldmasterfile;newmasterfile,transactionfileandprintfile;initializesalesregiontable;readfirsttransactionrecordandfirstoldmasterfilerecord;問題:不同的功能混在一個模塊中,有時共用部分編碼,使局部功能的修改牽動全局。內聚中內聚過程內聚(Proceduralcohesion):Functionsaregroupedtogetherinamoduletoensureacertainorderofperformance.例子:Readpartnumberfromdatabaseandupdaterepairrecordonmaintenancefile.enterdatacheckdatamanipulatedata內聚中內聚通信內聚(Communicationalcohesion):Allthefunctionsinamoduleoperateonorproducethesamedataset.例如:從同一磁帶上讀取不相干的數據——可能破壞獨立性。內聚高內聚順序內聚(Sequentialcohesion):Theoutputfromonepartofamoduleistheinputtothenextpart.功能內聚(Functionalcohesion):Everyprocessingelementisessentialtotheperformanceofasinglefunction.原則:在實際工作中,確定內聚的精確級別是不必要的,重要的是力爭高內聚和識別低內聚,可以使得設計的軟件具有較高的功能獨立性。內聚示例計算多個地點的每日平均溫度功能聚合初始化“求和”并打開文件偶然聚合關閉文件并打印平均溫度偶然聚合創建新的溫度記錄功能聚合存儲溫度記錄功能聚合讀取地點、時間和溫度功能聚合編輯地點、時間和溫度字段邏輯聚合存儲特定地點的溫度功能聚合??耦合耦合是度量系統中模塊之間的交互程度。Goal:aslooseaspossible=asindependentaspossible耦合從低到高依次為:非直接耦合(最好),數據耦合,標記耦合,控制耦合,外部耦合,公共耦合和內容耦合(最差)。GreatdealofdependenceIndependent

HighlycoupledLooselycoupledUncoupled耦合內容耦合contentcoupling如果兩個模塊中的一個直接引用了另一個模塊的內容,則它們之間是內容耦合。Onemodulemodifiesanother.……ABCDA:……………………gotoC1……………………C:……………………C1:…………例1:A訪問C的內部數據或不通過正常入口而轉入C的內部。例2:部分代碼重疊(常出現在匯編程序中)BA例3:一個模塊有多個入口(功能)A:………………………………entry1:………………………………entry2:………………………………Theleastdesirablemustbeavoided耦合耦合公共耦合commoncoupling如果兩個模塊都可以存取相同的全局數據,則它們之間是公共耦合。Dataareaccessiblefromacommondatastore.Global:V1V2A:……

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論