1、結構化分析與設計結構化分析與設計2大綱為何要做系統分析與設計結構化分析結構化設計為何要做系統分析與設計4為何要做系統分析傳統軟體開發方法的問題l直接設計與撰寫程式:分析階段更改一個錯誤花一塊錢,延遲到維護階段可能要100元。l軟體危機:軟體品質不良生產力不夠、同樣的錯誤一再發生、發展完成的軟體與使用者的需求不合、沒有良好而完整的軟體開發方法、沒有文件無法維護等等。符合使用者需求(meet user requirement)結構化分析6結構化分析Graphic and ConciseTop-down partitionedNonredundantEssential7結構化分析工具資料流程圖資料流
2、程序(處理)資料儲存體源頭/終點資料字典迷你規格書 E-R ModelDATA FLOW 61PROCESSDATA STORESOURCESINK2PROCESSDATA FLOW 1DATA FLOW 5DATA FLOW 3DATA FLOW 2DATA FLOW 48系統分析策略描繪現行實體作業系統描繪現行邏輯作業系統描繪新邏輯作業系統描繪新實體作業系統9進行分結構化分析 描繪整體系統 自上而下分割 層次化 標號 分割至單一功能為止(Functional primitive)檢查資料流的進出數目資料儲存體是否恰當程序是否確實能完成其功能10描繪整體系統0WORLDON-A-CHIP,I
3、NC.CUSTOMERPLANNINGDEPTPAYROLLDEPTMANUFACTURERChipShipmentChipStockPurchaseOrderManufacturerInvoicePaymentFinancialReportSalesmanCommissionFormPaymentCustomerTransactionCustomerReply11自上而下分割層次化標號分割至單一功能為止(Functional primitive)22.12.22.312自上而下分割CUSTOMER1SALESDEPT3ACCOUNTING DEPT2DHIPDEPTPLANNINGDEPTP
4、AYROLLDEPTMANUFACTURERCHIPINVENTORYPURCHASEORDER FILECustomerTransactionCustomerReplyChipsAvail-ableChipsStockPurchaseOrderManufacturerInvoiceManufacturerPaymentSalesmanCommissionFromFinancialReportCustomerPaymentOrderCancellationSalesOrderChipShipmentChip SalesInvoice13自上而下分割1.1ROUTECUSTOMERTRANS-A
5、CTION1.2INQUIREABOUTCHIPAVAILABILITY1.3CANCELORDER1.4ORDERCHIPSUnknownTransactionCustomerTransactionCustomerChip OrderCustomerInquiryInvalidCancellationCustomerCancellationInvalidOrderCustomerReplyChipAvailableOrderCancellationChipsHeldSalesOrderChipsHeld14系統包裝ABCReal-timeOn-LineBatchManual15如何描繪DFD
6、(1)源頭/終點(External Entity)NAMEaq利用小寫字母在左上角標示以為區別q中間標示儲存體名稱customeracustomeracustomeracustomeraemployeebemployeeb 若有重複情況可在左下角劃一斜線以為區隔16 資料流(Data Flow)q 源頭/終點、程序與資料儲存體中若有資料進出,以資料流之符號連結q 若對於兩實體中間之資料流同時存在流進與流出,則可以雙箭頭表示,但要注意其資料流名稱之差異q 資料流可以結合多個資料元素並以一個名稱表示,但須在資料字典中加以定義如何描繪DFD(2)1PROCESSData Storecustomera
7、1PROCESSOrdersPaymentsReturnsInquiriescustomera1PROCESSCustomer Transactionscustomera1PROCESSCustomer Transactions2PROCESS17如何描繪DFD(3)程序(Process)1PROCESSq處理程序以圓圈表示並加註編號q程序中間必須加以命名,命名原則為V+N 資料儲存體(Data Store)Data StoreD Data StoreD Data Store1PROCESSq資料儲存體與程序之資料流可以將名稱省略q若根據某一鍵值以取得整筆紀錄,亦可在資料流上表示C_ID#Cu
8、stomer Trans.18練習 王子書店需要一客戶訂貨處理系統,當接獲客戶訂單時,除了檢查庫存餘額之外,尚須檢查客戶信用狀況,接單之處理情況需即刻回應客戶。當餘額夠時直接從倉庫出貨並將整筆資料送至會計部列印發票,若餘額不夠,則列印採購單向出版社訂貨,同時將採購交易紀錄送至會計部,當出版社送貨到達時,須先入庫再行出貨。每天進出貨狀況須向管理部門報告,每月交易狀況須向總經理報告。19資料字典 用來記錄或描述在資料流程圖中所使用到的資料 資料結構與資料元素 三種基本描述方式SequenceRepetitionSelectionData item AData item BData item CIs
9、 data item Pand data item Qand data item Ris iterations of data item Seither data item Tor data item Uor data item V20資料字典Long formSequence:telephone number is area code and office code and numberrepetition:passenger list is iterations of passenger nameselection:customer order is either vacuum clean
10、er order or jet engine orderSequence:telephone number=area code+office code+numberrepetition:passenger list=passenger nameselection :customer order=vacuum cleaner order|jet engine order Short form21資料字典TELEPHONENUMBERAREACODEOFFICECODENUMBERPASSENGERLISTPASSENGERNAMECUSTOMERORDERVACUUMCLEANERORDERJE
11、TENGINEORDERSequenceRepetitionSelectionGraphic form22資料字典基本符號=is composed of+and()optional(may be present or absent)iteration select one of several alternative choices*commentidentifier(key field)for a store|separates alternative choices in the construction23範例Name=courtesy-title+first-name+(middle-
12、name)+last-nameCourtesy-title=Mr.|Miss|Mrs.|Ms.|Dr.|ProfessorFirst-name=legal-characterMiddle-name=legal-characterLast-name=legal-characterLegal-character=A-Z|a-z|0-9|-|24資料字典定義A=B+C具備以下三種含意:意義(meaning):資料之意義,可以使用“*”來表示組成(composition):由其他資料元素或資料結構所組成值(values):資料元素不能再被分解,而必須將其在應用系統中所代表的值表達出來25基本使用方式(
13、一)CommentExample:Current-height=*units:pounds;range:1-400*Date-of-birth=*units:days since Jan 1,1900;range:0-36500*Sex=*value:M|F*OptionalExample:Customer-address=(shipping-addr)+(billing-addr)Customer-address=shipping-addr|billing-addr|shipping-addr+billing-addrCustomer-address=shipping-addr+(billi
14、ng-addr)26基本使用方式(二)IterationExample:Order=customer-name+shipping-addr+itemOrder=customer-name+shipping-addr+1item10 SelectionExample:Customer-type=government|industry|university|other AliasesExample:Client=*alias for customer*27迷你規格書結構化英文狀態轉換圖決策樹決策表以祈使句為開頭使用資料字典所定義之文句使用保留關鍵字使用sequence,decision,repet
15、ition 句型ABC28迷你規格書之描述12343.33.23.43.1這些程序需要描述程序規格(及迷你規格書)這些程序不需要描述程序規格29結構化英文 通常以結構化語言之型態表現 定義一組完整之關鍵字 描述過程中以簡潔之英文(中文)表達 在一程序中可能會用到暫時變數,但此變數應只出現在此一程序之中Example:Daily-total=0DO WHILE there are more orders in ORDERS with invoice-date=todays date READ next order in ORDERS with invoice-date=todays dateDI
16、SPLAY to Accounting invoice-number,customer-name,total-amountDaily-total=daily-total+total-amountENDDODISPLAY to Accounting daily-total30結構化英文指引描述每個程序應盡量在一頁之內,如果無法在一頁之內描述完,分析師應考慮用其發方法處理,或者這個程序需要進一步分割巢狀結構應盡量在三層以內使用內縮格式(indentation)31PRE/POST 條件 若程序本身非常清楚或因時間不足 分析師知道有許多解決方法,或讓程式設計師能自己設計解決方法 一種最方便的描述方式
17、ExampleProcess specification 3.5:Compute sales taxPrecondition 1Sale-data occurs with item-type matching an item-category in tax-categoriesPostcondition 1 Sales-tax is set to sale-amount*tax-rate32PRE/POST 描述規範PRECONDITION What inputs must be available.What relationships must exist between inputs or
18、 within inputs.What relationships must exist between inputs and data stores.What relationships must exist between different stores or within a single store.POSTCONDITION The outputs that will be generated or produced by the process.The relationships that will exist between output values and the orig
19、inal input values.The relationships that will exist between output values and values in one or more stores.The changes that will have been made to stores:new items added,existing items modified,or existing items deleted.33決策表Condition 1Condition 2.Action 1Action 2Action 3.34決策表規範找出所有規格中的條件並決定每一條件的值決
20、定每一個可能的行動檢查可能的條件組合或所應採取的行動是否有矛盾與衝突之處是否某些條件或行動可以一並考量將所有列出之條件及行動再一次的開會討論35E-R Model 描述邏輯資料庫設計之工具 使用圖形方式描繪資料儲存體彼此之間的關係部門員工專案結構化設計37系統設計 一連串將需求轉換為輪廓、結構或計畫的動作,使得最後可以在電腦上執行 將系統分割為黑盒子每一黑盒子恰可解決一完整小問題每一小黑盒子的功能很容易了解黑盒子與黑盒子之間的關係僅只於兩者之間的連結黑盒子的分割將盡可能的獨立 將黑盒子組成為一架構38結構化設計結構圖模組規格書實體資料庫設計輸出入介面39結構圖模組輸出入功能描述機制內部資料名稱
21、檢查電話號碼預訂模組計算每月薪資模組名稱資料耦合旗標40結構圖ISSUEPAY CHECKSFOR ALLEMPLOYEESGETEMPLOYEEPAY RECORDCALCULATENET PAYFOR HOURLYWORKERCALCULATENET PAY FORSALARIEDWORKERPRINTPAYCHECKCALCULATEGROSS PAYFOR HOURLYWORKERCALCULATENORMALDEDUCTIONSCALCULATEGROSS PAYFOR SALARIEDWORKEREmployeePayRecordEnd ofEmployeePayRecordsHo
22、urlyPayRecordNetHourlyPaySalariedPayRecordNetSalariedPayEmployeeNumberEmployeeNameEmployeePayPay RateHoursWorkedGrossHourlyPayTaxDetailsNormalDeductionsGrossSalariedPayTaxDetailsGrossSalariedPayNormal PayBonuses41結構圖符號ABAB正常呼叫正常呼叫非同步啟動非同步啟動ABB被被A重複呼叫重複呼叫42結構圖符號(續)Aremrem連結符號連結符號ecbAd交易中心交易中心Acbfdeg實
23、體包裝實體包裝43設計原則內聚力功能內聚順序內聚溝通內聚程序內聚暫時內聚邏輯內聚巧合內聚耦合力資料耦合戳記耦合控制耦合共通耦合內容耦合44內聚力 功能內聚:模組內部成員都為解決同一問題而存在 順序內聚:模組內部成員從事多項活動,而在各項活動中,前一項活動的輸出要作為後一項活動之輸入 溝通內聚:模組內部成員從事多項活動,而這些活動使用相同的輸入資料 程序內聚:模組內部成員從事多項活動,而這些活動彼此間可能毫無關係,這些活動聚集在同一模組的原因是控制流由一個活動轉移至另一個活動 暫時內聚:模組內部成員要在同一時間一起執行而聚集一塊 邏輯內聚:模組內活動屬於同一種類,而模組被呼叫時,這些活動會被執行
24、是由外在的因素控制 巧合內聚:模組內活動沒有任何有意義的關係45耦合力 資料耦合:假如兩模組之間的聯繫是使用參數傳遞,每一參數又僅是單一欄位或同類表 戳記耦合:假如兩模組之間的聯繫是使用參數,且其參數為資料結構 控制耦合:某一模組藉著傳遞某些資料以控制另一模組內部邏輯 共通耦合:兩個模組參考到相同的整體資料區域 內容耦合:某一模組參考到另一模組的內容46內聚力與耦合力 內聚力是對模組內各個成員間功能結合強度的度量 兩個模組的連結性愈少,引起連鎖反應之機會就愈少 我們希望更改某一模組使得必須更改另外模組的危險性減低到最少,同時我們希望客戶的更改僅可能的影響少一點的模組 維護模組時不需考慮到模組內
25、部細節 我們期望高內聚力低耦合力的模組47設計策略轉換分析繪製DFD尋找轉換中心產生第一層結構圖細分第一層結構圖確認工作交易分析48轉換分析1EDITFIELD2COLLECTTRANACTION3CROSS-VALIDATETRANSAC-TION5MATCHTRANSAC-TION WITHMASTERRECORD4VALIDATEMASTERRECORD7UPDATEMASTERRECORD6REFORMATNEWMASTERRECORD8FORMATREPORTLINEInvalidFieldFieldEdited FieldTransactionEdited FieldInvalid
26、FieldValidTransactionUnmatchedTransactionValid MasterRecord andValid TransactionAppliedTransactionAppliedTransactionReport LineNewMasterRecordMasterRecordInvalidMasterRecordValidMasterRecordUnmatchedMasterRecordUpdateMasterRecordABCDEFIHGABCDEFGHIJbeginning of afferent streamsends of efferent stream
27、smost logical data flowson afferent streamsmost logical data flowson afferent streamsboundary of the central transform49轉換分析BCFHEIJabcedfghijCentralTransformcbaedgfhij50轉換分析WHOLESYSTEMGETcGETePUTfGETbREADdPUTg or hPUTiWRITEjREADacefghijabd51模組規格書模組名稱:SELECT PASSENGER SEAT目的:To choose for a customer
28、a seat that is valid for his class and is as close as possible to his seating preference輸入參數:Weighted_Seating_Pref輸出參數:Selected_Seat,Pref_Available功能描述:1.Scan the available seats,beginning in the passengers assigned class and working to lower classes.2.Note for each seat its difference from the cust
29、omers preference.3.Select the seat with the least difference:this is SELECTED_SEAT.52練習某公司欲計算每月員工薪資,並將其轉換成美元後製成報表印出,員工薪資有月薪及日薪兩種,並要計算出缺勤及加班費請繪製DFD並轉成結構圖53其他設計原則分解決策分割系統形狀錯誤報告編輯限制性與一般性靜態記憶資料叢集起始與終止模組扇出與扇入54分解減小模組尺寸加強系統模組化,使系統易於了解及易於修改避免相同功能製作在兩個以上的模組內將工作與管理分開提供更通用模組簡化製作55決策分割 決策包含兩部分:認知與執行認知If custom
30、er account number is not knownthen reject whole customer record endif執行當認知所需資料與執行所需資料不在同一模組時,就產生決策分裂 56系統形狀ABCD57錯誤報告系統中負責報告錯誤發生的模組應同時具備有偵測錯誤和認知錯誤型態之兩種能力另一種方式是將錯誤訊息集中放置同一模組錯誤訊息之格式及詞彙較能有一致性避免重複訊息較為容易更正錯誤訊息或轉換他國語言較為容易58編輯先編輯已知的,再編輯未知的先編輯語法,再編輯語意先單獨編輯,再交互編輯先編輯內部,再編輯外部59資料叢集 資料叢集為一種集合若干模組的方法,常被用於該群模組需要存
31、取結構非常複雜或是有安全性顧慮的資料Common data area60限制性與一般性模組功能不能太過狹隘也不可太過通用限制性模組 從事非常特定工作 處理非常特定的資料值型態或結構 模組使用上有許多限制一般性模組 從事工作廣泛 同時處理多種資料值型態或結構 將資料以參數或讀入的方式取得61扇入與扇出 扇入:指一模組直接上司模組數目 扇出:指一模組直接下屬之數目 模組扇出數目最好不要超過7+2 人類有錯誤之傾向,扇出數目不宜太多 高扇入模組必須具備良好內聚力 模組每個介面必須要有相同數量及型態參數62包裝分析後的包裝工作分析後設計前的包裝工作設計後的包裝工作63分析後的包裝工作將系統包裝成工作(
32、Job)的手段就是要再資料流程圖中將實體界線確認出來硬體界線:中央電腦處理或分散處理軟體界線:線上作業或批次作業週期界線:每日作業或每月作業64分析後設計前的包裝工作 將工作(job)分割為工作步驟(job step)時,僅可能使工作步驟愈少愈好 所謂工作步驟是指一個主程式加一組副程式 考量重點:套裝軟體安全需求:例如平均故障出現率(Mean Time Between Failure,MTBF)或稽核資源因素65設計後的包裝工作 考量載入單元(load unit)之問題 不同載入單元彼此叫用會嚴重影響系統效率 系統限制載入單元之大小,因此不可能將經常彼此叫用之模組都放至於同一載入單元 原則 經
33、常彼此呼叫之模組需放置同一載入單元 甚少使用之模組應單獨包裝 處理例外情形及錯誤模組應單獨包裝66製作傳統製作方法遞增式製作方法自上而下遞增式製作方法自下而上遞增式製作方法三明治式遞增式製作方法67最佳化系統品質與最佳化管理系統效率控制系統調整68系統品質與最佳化管理 品質之基本要素為有效性、親和性、可靠性、維護性和效率性,而必須要前面要素均達到之後才可談效率性 系統效率好壞取決於設計者之能力 在許多狀況下,最簡單的方法即是最好的方法 在整個系統中,影響效率的僅是一小部分模組而已 簡單模組化系統較易做最佳化處理 過度最佳化會貶抑了其他設計目標 程式不能正常執行時,做最佳化是沒有用的 只有在系統效率產生問題時才做最佳化最佳化守則:不要最最佳化還未到最佳化時候69系統效率控制 找出執行時間曲線圖對每個模組決定其執行時間檢查每個模組評估更改可能性評估更改所需花費時間及費用排定優先次序對最高優先次序之模組進行最佳化ab執行時間曲線圖模組指令時間70系統調整削減不必要的中間檔案將系統結構薄煎餅化壓縮衝新撰寫程式分析71與結構化設計並行之工作 實體資料庫設計 程式製作計畫 製作測試準備 系統測試準備 驗收測試準備 實體系統介面規格 使用者說明文件 專案整體計畫