![軟件與軟件工程-結構化設計_第1頁](http://file4.renrendoc.com/view12/M04/0A/02/wKhkGWcA9IyAVTBqAAHsbyQYOcQ215.jpg)
![軟件與軟件工程-結構化設計_第2頁](http://file4.renrendoc.com/view12/M04/0A/02/wKhkGWcA9IyAVTBqAAHsbyQYOcQ2152.jpg)
![軟件與軟件工程-結構化設計_第3頁](http://file4.renrendoc.com/view12/M04/0A/02/wKhkGWcA9IyAVTBqAAHsbyQYOcQ2153.jpg)
![軟件與軟件工程-結構化設計_第4頁](http://file4.renrendoc.com/view12/M04/0A/02/wKhkGWcA9IyAVTBqAAHsbyQYOcQ2154.jpg)
![軟件與軟件工程-結構化設計_第5頁](http://file4.renrendoc.com/view12/M04/0A/02/wKhkGWcA9IyAVTBqAAHsbyQYOcQ2155.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
結構化設計本章目標2了解軟件設計的意義和目標掌握軟件設計的原則了解軟件設計的分類熟悉數(shù)據(jù)庫結構設計熟悉用戶界面設計了解結構化設計與結構化分析的關系本章目標3掌握面向數(shù)據(jù)流的設計方法熟悉面向數(shù)據(jù)結構的設計方法熟悉接口設計和數(shù)據(jù)設計掌握過程設計的工具和方法了解軟件設計評審目錄45.1軟件設計的基本概念5.2數(shù)據(jù)庫結構設計5.3用戶界面設計5.4結構化軟件設計概述5.5結構化設計與結構化分析的關系目錄55.6體系結構設計5.7接口設計5.8數(shù)據(jù)設計5.9過程設計5.10
軟件設計評審5.1軟件設計的基本概念5.1
軟件設計的基本概念7完成了需求分析,回答了軟件系統(tǒng)能“做什么”的問題,軟件的生命周期就進入了設計階段。軟件設計是軟件開發(fā)過程中的重要階段,在此階段中,開發(fā)人員將集中研究如何把需求規(guī)格說明書里歸納的分析模型轉換為可行的設計模型,并將解決方案記錄到相關的設計文檔中。實際上,軟件設計的目標就是要回答“怎么做”才能實現(xiàn)軟件系統(tǒng)的問題,也可以把設計階段的任務理解為把軟件系統(tǒng)能“做什么”的邏輯模型轉換為“怎么做”的物理模型。軟件設計在軟件開發(fā)中處于核心地位。5.1
軟件設計的基本概念85.1.1軟件設計的意義和目標軟件設計在軟件開發(fā)過程中處于核心地位,它是保證質量的關鍵步驟。設計為我們提供了可以用于質量評估的軟件表示,設計是我們能夠將用戶需求準確地轉化為軟件產品或系統(tǒng)的唯一方法。軟件設計是所有軟件工程活動和隨后的軟件支持活動的基礎。軟件設計是一個迭代的過程,通過設計過程,需求被變換為用于構建軟件的“藍圖”。McGlaughlin提出了可以指導評價良好設計演化的3個特征:1)設計必須實現(xiàn)所有包含在分析模型中的明確需求,而且必須滿足用戶期望的所有隱含需求。2)對于程序員、測試人員和維護人員而言,設計必須是可讀的、可理解的指南。3)設計必須提供軟件的全貌,從實現(xiàn)的角度說明數(shù)據(jù)域、功能域和行為域。以上每一個特征實際上都是設計過程應該達到的目標。5.1
軟件設計的基本概念95.1.2軟件設計的原則為了提高軟件開發(fā)的效率及軟件產品的質量,人們在長期的軟件開發(fā)實踐中總結出一些軟件設計的原則,其基本內容如下。1.模塊化模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序對象的集合,是構成程序的基本構件,可以被單獨命名并通過名字來訪問。在面向過程的設計中,過程、函數(shù)、子程序、宏都可以作為模塊;在面向對象的設計中,對象是模塊,對象中的方法也是模塊。模塊化就是把系統(tǒng)或程序劃分為獨立命名并且可以獨立訪問的模塊,每個模塊完成一個特定的子功能。模塊集成起來可以構成一個整體,完成特定的功能,進而滿足用戶需求。5.1
軟件設計的基本概念10在模塊化的過程中,要注意以下幾點。(1)模塊的規(guī)模要適中。(2)提高模塊的獨立性,降低模塊間的耦合程度。(3)提高模塊的內聚程度。(4)加強模塊的保護性。5.1
軟件設計的基本概念112.抽象
抽象是人們認識復雜的客觀世界時所使用的一種思維工具。抽象主要是為了降低問題的復雜度,以得到問題領域中較簡單的概念,好讓人們能夠控制其過程或以宏觀的角度來了解許多特定的事態(tài)。
抽象在軟件開發(fā)過程中起著非常重要的作用。一個龐大、復雜的系統(tǒng)可以先用一些宏觀的概念構造和理解,然后再逐層地用一些較微觀的概念去解釋上層的宏觀概念,直到最底層的元素。5.1
軟件設計的基本概念123.逐步求精在面對一個新問題時,開發(fā)人員可暫時忽略問題非本質的細節(jié),而關注于與本質相關的宏觀概念,集中精力解決主要問題,這種認識事物的方法就是逐步求精。逐步求精是抽象的逆過程。開發(fā)人員認識問題時逐步求精的過程,同時也是抽象程度逐漸降低的過程。按照逐步求精的思想,程序的體系結構是按照層次結構,逐步精化過程細節(jié)而開發(fā)出來的??梢姡缶褪羌毣?,它與抽象是互補的概念。逐步求精與抽象的關系5.1
軟件設計的基本概念134.信息隱藏信息隱藏與模塊化的概念相關。當一個系統(tǒng)被分解為若干個模塊時,為了避免某個模塊的行為干擾同一系統(tǒng)中的其他模塊,應該讓模塊僅僅公開必須讓外界知道的信息,而將其他信息隱藏起來,這樣模塊的具體實現(xiàn)細節(jié)相對于其他不相關的模塊而言就是不可見的,這種機制就叫做信息隱藏。信息隱藏提高了模塊的獨立性,加強了外部對模塊內部信息進行訪問的限制,它使得模塊的局部錯誤盡量不影響其他模塊。信息隱藏有利于軟件的測試和維護工作。通常,模塊的信息隱藏可以通過接口來實現(xiàn)。模塊通過接口與外部進行通信,而把模塊的具體實現(xiàn)細節(jié)(如數(shù)據(jù)結構、算法等內部信息)隱藏起來。一般來說,一個模塊具有有限個接口,外部模塊通過調用相應的接口來實現(xiàn)對目標模塊的操作。5.1
軟件設計的基本概念145.復用性設計
軟件復用就是將已有的軟件成分用于構造新的軟件系統(tǒng)??梢员粡陀玫能浖煞忠话惴Q作可復用構件,無論對可復用構件原封不動地使用還是作適當?shù)男薷暮笤偈褂茫灰怯脕順嬙煨萝浖?,則都可稱作復用。軟件復用不僅僅是對程序的復用,它還包括對軟件生產過程中任何活動所產生的制成品的復用,如軟件開發(fā)計劃、可行性研究報告、分析模型、設計模型、源程序`、測試用例等等。如果是在一個系統(tǒng)中多次使用一個相同的軟件成分,則不稱作復用,而稱作共享;對一個軟件進行修改,使它運行于新的軟硬件平臺也不稱作復用,而稱作軟件移值。5.1
軟件設計的基本概念155.靈活性設計靈活性設計,簡而言之就是軟件在面對需求修改時的隨機應變能力,可以體現(xiàn)在修改程序代碼的工程量等方面。抽象是軟件設計的關鍵因素。設計模式、軟件架構等可以用來實現(xiàn)更高抽象層次的編程,以達到軟件的靈活性。在設計(尤其是面向對象的設計)中引入靈活性的方法如下。1)降低耦合并提高內聚2)建立抽象:就是創(chuàng)建有多態(tài)操作的接口和父類,主要的目的就是能繼承的就繼承,盡可能不要寫冗余代碼3)不要將代碼寫死:就是消除代碼中的常數(shù)。4)拋出異常:就是由操作的調用者處理異常。5)使用并創(chuàng)建可復用的代碼5.1
軟件設計的基本概念165.1.3軟件設計的分類軟件設計可以從活動任務觀點和工程管理觀點分別對其進行分類。從活動任務來看,軟件設計是對軟件需求進行:數(shù)據(jù)設計、體系結構設計、接口設計、構件設計和部署設計。1)數(shù)據(jù)設計創(chuàng)建在高抽象級別上表示的數(shù)據(jù)模型和信息模型。然后,數(shù)據(jù)模型被精化為越來越多和實現(xiàn)相關的特定表示,即基于計算機的系統(tǒng)能夠處理的表示。2)體系結構設計為我們提供軟件的整體視圖,定義了軟件系統(tǒng)各主要成份之間的關系。3)接口設計告訴我們信息如何流入和流出系統(tǒng)以及被定義為體系結構一部分的構件之間是如何通信的。4)構件設計完整的描述了每個軟件構件的內部細節(jié),為所有本地數(shù)據(jù)對象定義數(shù)據(jù)結構,為所有在構件內發(fā)生的處理定義算法細節(jié),并定義允許訪問所有構件操作的接口。5)部署設計指明軟件功能和子系統(tǒng)如何在支持軟件的物理計算環(huán)境內分布。5.1
軟件設計的基本概念17從工程管理角度來看,軟件設計分為概要設計(總體設計)和詳細設計。前期進行概要設計,得到軟件系統(tǒng)的基本框架。后期進行詳細設計,明確系統(tǒng)內部的實現(xiàn)細節(jié)。1)概要設計確定軟件的結構以及各組成部分之間的相互關系。它以需求規(guī)格說明書為基礎,概要地說明軟件系統(tǒng)的實現(xiàn)方案,包括:目標系統(tǒng)的總體架構每個模塊的功能描述、數(shù)據(jù)接口描述及模塊之間的調用關系數(shù)據(jù)庫、數(shù)據(jù)定義和數(shù)據(jù)結構等其中,目標系統(tǒng)的總體架構為軟件系統(tǒng)提供了一個結構、行為和屬性的高級抽象,由構成系統(tǒng)的元素的描述、這些元素之間的相互作用、指導元素集成的模式以及這些模式的約束組成。5.1
軟件設計的基本概念182)詳細設計確定模塊內部的算法和數(shù)據(jù)結構,產生描述各模塊程序過程的詳細文檔。它對每個模塊的功能和架構進行細化,明確要完成相應模塊的預定功能所需要的數(shù)據(jù)結構和算法,并將其用某種形式描述出來。詳細設計的目標是得到實現(xiàn)系統(tǒng)的最詳細的解決方案,明確對目標系統(tǒng)的精確描述,從而在編碼階段可以方便地把這個描述直接翻譯為用某種程序設計語言書寫的程序。在進行詳細設計的過程中,設計人員的工作涉及到的內容有過程、數(shù)據(jù)和接口等過程設計主要是指描述系統(tǒng)中每個模塊的實現(xiàn)算法和細節(jié)數(shù)據(jù)設計是對各模塊所用到的數(shù)據(jù)結構的進一步細化接口設計針對的是軟件系統(tǒng)各模塊之間的關系或通信方式以及目標系統(tǒng)與外部系統(tǒng)之間的聯(lián)系5.2數(shù)據(jù)庫結構設計5.2
軟件設計的基本概念20
數(shù)據(jù)庫結構設計包括概念結構設計、邏輯結構設計和物理結構設計。數(shù)據(jù)庫的概念結構是系統(tǒng)中各種數(shù)據(jù)模型的共同基礎,它描述了系統(tǒng)最基礎的數(shù)據(jù)結構,獨立于特定的數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫的邏輯結構提供了比較接近數(shù)據(jù)庫內部構造的邏輯描述,它能夠為數(shù)據(jù)庫物理結構的創(chuàng)建提供便利數(shù)據(jù)庫的物理結構是指數(shù)據(jù)庫的物理數(shù)據(jù)模型,它包括數(shù)據(jù)庫服務器物理空間上的表、存儲過程、字段、視圖、觸發(fā)器、索引等,與特定的數(shù)據(jù)庫系統(tǒng)密切相關5.2
軟件設計的基本概念21
通常,數(shù)據(jù)庫的概念結構用E-R圖來表示。在設計數(shù)據(jù)庫的邏輯結構的過程中,首先要將概念結構中的實體、屬性、關系映射為數(shù)據(jù)表結構。形成初始的數(shù)據(jù)表后,要對其進行規(guī)范。一個好的關系模式應當不會發(fā)生插入異常、更新異常、刪除異常,數(shù)據(jù)冗余盡可能少,在設計關系數(shù)據(jù)庫時應該考慮上述問題。設計好數(shù)據(jù)表后,若數(shù)據(jù)表之間存在關聯(lián)關系,那么可以采用主鍵、外鍵的方法,這是數(shù)據(jù)表之間參照完整性規(guī)則的依據(jù)。此外,為了使數(shù)據(jù)具有更高的安全性、方便對數(shù)據(jù)的組織和操作,人們還會采用數(shù)據(jù)視圖的方法來進一步完善數(shù)據(jù)庫的邏輯結構設計。得到數(shù)據(jù)庫的邏輯結構之后,就可以將模型進一步表現(xiàn)為物理空間上的表、字段、索引、存儲過程、觸發(fā)器及相應的數(shù)據(jù)字典了。5.3用戶界面設計5.3用戶界面設計23
5.3用戶界面設計用戶界面設計是接口設計的一個組成部分。對于交互式系統(tǒng)來說,用戶界面設計和數(shù)據(jù)設計、體系結構設計、過程設計一樣重要。近年來,用戶界面在系統(tǒng)中所占的比例越來越大,在個別系統(tǒng)中用戶界面的設計工作量甚至占設計總量的一半以上。用戶界面的設計質量,直接影響用戶對軟件產品的評價,從而影響軟件產品的競爭力和壽命,因此,必須對用戶界面設計給予足夠重視。設計活動是基于一定的目的與流程的,它明確設計活動的最終方向,并保證設計活動的正確性和高效率。下面將介紹在軟件工程過程中,用戶界面設計參與的環(huán)節(jié)以及在這些環(huán)節(jié)中用戶界面設計的工作環(huán)境如何,要做哪些工作,以及完成這些工作的方法。5.3用戶界面設計24
5.3.1設計驅動開發(fā)作為應用程序開發(fā)者,在設計應用程序的過程中必須遵循同類軟件乃至其所運行的操作系統(tǒng)的使用習慣;只有這樣才能避免過高的學習和適應成本,給用戶帶來“熟悉感”,從而讓用戶獲得更好的使用體驗。軟件界面設計的好壞通常不僅僅是美觀與否的問題——一個精良的設計往往能讓應用程序本身變得更加高效和易于使用,相反,一個糟糕的設計則完全可能讓開發(fā)者在應用上的其他努力付諸東流。因此,在現(xiàn)代應用程序的開發(fā)過程中,用戶界面設計所占的地位越來越重要。對于開發(fā)者來說,用戶界面設計并不僅僅是“圖像”或“美學”設計,而是應用一系列簡單而實用的準則或策略來改善軟件易用性的一個步驟。5.3用戶界面設計25
5.3.2目標用戶群體為了幫助用戶更好地在對一個新的軟件產品做需求分析和功能設計之前,必須要明確軟件所針對的用戶群體,以及用戶群的具體特征;只有這樣才能設計并開發(fā)出對用戶有價值的功能。用戶本身的技能、個性、性別、年齡、所受教育以及文化背景上的差異,用戶的基礎計算機操作水平,用戶在相關領域的專業(yè)知識,都可能導致用戶對界面的需求的不同。例如,一個專業(yè)的軟件工程師和對電腦只有有限了解的普通用戶,所能夠接受的界面可能就完全不同。來自中國和法國的用戶,對于同一種配色或圖案的理解也可能是大相徑庭的。用戶界面作為應用程序和用戶交互的核心途徑,必須將不同用戶對界面的不同需求考慮在其中,這樣才能給用戶提供最好的使用體驗。否則,即使軟件內部的功能十分強大,如果界面使用起來體驗非常糟糕,用戶也不會選擇使用它。5.3用戶界面設計26
5.3.3簡潔與清晰在界面設計中,應當仔細斟酌每個界面元素的作用、重要性和交互方式,將重要的界面元素放置在顯著位置,不太重要的界面元素則降級到相對次要的位置;凸顯界面元素之間的層次感和邏輯感,避免對空間進行羅列和堆疊。此外,對于展示實際用戶內容的界面(如圖片瀏覽應用、文檔編輯應用等),不應使得軟件工具欄和其他輔助控件過多地占用用戶實際內容的屏幕空間,或干擾用戶正常瀏覽應用所展示的內容。5.3用戶界面設計27
5.3.4實現(xiàn)模型與心智模型從程序開發(fā)人員的角度出發(fā),開發(fā)一個應用程序所需要用到的技術解決方案,稱之為這個程序的“實現(xiàn)模型”。例如,開發(fā)一個在線的物品交易平臺,使用Python作為后端語言,HTML、CSS、JavaScript等作為前端語言,MySQL作為數(shù)據(jù)庫引擎,這些都屬于實現(xiàn)模型。實現(xiàn)模型往往包含了復雜艱深的理論、技術、算法等內容,這些內容在開發(fā)過程中對開發(fā)者來說是至關重要的,但是卻不會被大多數(shù)用戶所了解。與實現(xiàn)模型不同,軟件的真實用戶對該軟件用法和運作方式的個人理解(或期望),則稱之為“心智模型”。這類心智模型有助于用戶理解自己使用軟件的過程,預測某個操作的結果,并應對出乎意料的情況。換句話說,心智模型能夠幫助用戶“自然地”使用一個程序。5.3用戶界面設計28
5.3.5設計的規(guī)范性
大多數(shù)主流操作系統(tǒng)都有一套專門的“設計規(guī)范”,以供開發(fā)者和程序設計人員參考。例如,對于macOS應用程序,蘋果公司發(fā)布過官方的“人機界面指南”,其完整版本在蘋果開發(fā)者網站即可找到。對于Windows應用程序,微軟公司也發(fā)布過諸如“設計Windows桌面應用程序”和“通用Windows平臺應用程序指南”等設計方面的指導性材料。應用程序的開發(fā)者和設計人員在設計一個應用程序時,應當通讀、理解并嚴格遵守相關設計指南中的設計要求。5.3用戶界面設計29
5.3.6設計的可用性和易用性在設計和開發(fā)中,“可用性”是衡量一個應用程序用戶體驗好壞的重要標準之一。具有良好的可用性,要求應用具有如下3個特性。容易學習和掌握高效令人愉悅5.3用戶界面設計30
沒人喜歡使用復雜、晦澀、難以掌握的應用程序。為獲得良好的可用性,在設計和開發(fā)的每個步驟和每一輪迭代中,開發(fā)人員都應該將軟件的目標用戶作為核心,在實際使用環(huán)境中,以真實用戶的需求、偏好和習慣為導向,對產品的設計進行不斷優(yōu)化。在這一過程中,應該重點關注以下幾個問題:(1)軟件的目標用戶是怎樣一個群體?(2)用戶的實際需求有哪些?(3)用戶在相關領域有哪些背景知識?(4)用戶希望軟件具有哪些功能?(5)為了使用軟件完成某項任務,用戶需要得到哪些信息?這些信息應該以什么樣的方式呈現(xiàn)?(6)根據(jù)現(xiàn)有設計,用戶認為的軟件使用方式和其真實使用方式是否一致?(7)是否右特殊的用戶群體、需求或運行環(huán)境需要額外考慮?5.3用戶界面設計31
5.3.7設計的一致性在界面以及交互設計中,追求一致性是非常重要的。它允許用戶將先前已經建立的使用習慣和知識帶入到一個全新的應用程序中。根據(jù)一致性的范圍,可將其大致分為兩類——外部一致性和內部一致性。每個操作系統(tǒng)都有其固有的操作模式及標準的用戶界面元素,一個設計良好的應用應當遵循這些慣例。這就是“外部一致性”:一個軟件應當和其他軟件,乃至其所運行的操作系統(tǒng)保持一致。有時,某些設計決策在操作系統(tǒng)層面沒有固定的規(guī)范或慣例可供遵循,但在一個應用內部卻應該保持統(tǒng)一,不應產生歧義或自相矛盾。這就是所謂的“內部一致性”。此外,在界面的樣式設計上,一個應用也應當具有一個統(tǒng)一的風格,包括顏色搭配和使用、控件樣式,字體、動畫、陰影等各種設計元素的運用。5.3用戶界面設計32
5.3.8設計的容錯性
良好的“容錯性”允許用戶大膽地探索一個應用程序的所有功能——因為絕大部分操作都是可逆的、非破壞性的。如果用戶確信他們可以大膽地嘗試每個按鈕的用途而不用擔心他們的操作系統(tǒng)或數(shù)據(jù)被損壞,應用程序的用戶體驗會大大提高。此外,良好的容錯性也會讓應用程序顯得更加穩(wěn)定、可靠。如果用戶發(fā)現(xiàn)在一個應用程序中并不會因為無意中的操作就造成嚴重錯誤(如數(shù)據(jù)丟失或損毀),他們自然會更加信任這一應用程序。5.4結構化軟件設計概述5.4
結構化軟件設計概述34
結構化軟件設計的任務是從軟件需求規(guī)格說明書出發(fā),設計軟件系統(tǒng)的整體結構、確定每個模塊的實現(xiàn)算法以及編寫具體的代碼,形成軟件的具體設計方案,解決“怎么做”的問題。在結構化設計中,概要設計(總體設計)階段將軟件需求轉化為數(shù)據(jù)結構和軟件的系統(tǒng)結構。概要設計階段要完成體系結構設計、數(shù)據(jù)設計及接口設計。詳細設計階段要完成過程設計,因此詳細設計一般也稱為過程設計,它詳細地設計每個模塊,確定完成每個模塊功能所需要的算法和數(shù)據(jù)結構。在軟件設計期間我們所做出的決策,將最終決定軟件開發(fā)能否成功,更重要的是,這些設計決策將決定軟件維護的難易程度。軟件設計之所以如此重要,是因為設計是軟件開發(fā)過程中決定軟件產品質量的關鍵階段。5.5結構化設計與結構化分析的關系5.5
結構化設計與結構化分析的關系36
要進行結構化的設計,必須依據(jù)結構化分析的結果,結構化設計與結構化分析的關系如圖所示。圖的左邊是用結構化分析方法所建立的模型,圖的右邊是用結構化設計方法所建立的設計模型。5.5
結構化設計與結構化分析的關系37結構化軟件設計的具體步驟如下:1)從需求分析階段的數(shù)據(jù)流圖出發(fā),制訂幾個方案,從中選擇合理的方案。2)采用某種設計方法,將一個復雜的系統(tǒng)按功能劃分成模塊化的層次結構。3)確定每個模塊的功能、模塊間的調用關系,建立與已確定的軟件需求的對應關系。4)系統(tǒng)接口設計,確定模塊間的接口信息。5)數(shù)據(jù)結構及數(shù)據(jù)庫設計,確定實現(xiàn)軟件的數(shù)據(jù)結構和數(shù)據(jù)庫模式。6)基于以上,并依據(jù)分析模型中的處理(加工)規(guī)格說明、狀態(tài)轉換圖及控制規(guī)格說明進行過程設計。7)制訂測試計劃。8)撰寫軟件設計文檔。5.6體系結構設計5.6
體系結構設計39
5.6體系結構設計相對于面向對象的方法而言,結構化軟件工程方法更關注于系統(tǒng)的功能,采用自頂向下、逐步求精的設計過程,以模塊為中心來解決問題。采用結構化軟件工程方法開發(fā)出來的軟件系統(tǒng)可以看成是一組函數(shù)或過程的集合。結構化設計從系統(tǒng)的功能入手,按照工程標準和嚴格的規(guī)范將目標系統(tǒng)劃分為若干功能模塊。結構化設計方法可以分為面向數(shù)據(jù)流的設計方法和面向數(shù)據(jù)結構的設計方法。5.6
體系結構設計40
5.6.1表示軟件結構的圖形工具1.
層次圖和HIPO圖通常使用層次圖描繪軟件的層次結構。在層次圖中一個矩形框代表一個模塊,框間的連線表示調用關系(位于上方的矩形框所代表的模塊調用位于下方的矩形框所代表的模塊)。每個方框可以帶編號,像這樣帶編號的層次圖稱為HIPO(HierarchyInput-Process-Output)圖。如圖所示。5.6
體系結構設計41
2.結構圖結構圖是描繪軟件結構的圖形工具,圖中一個方框代表一個模塊,框內注明模塊的名字或主要功能;方框之間的箭頭(或直線)表示模塊的調用關系。在結構圖中通常還用帶注釋的箭頭表示模塊調用過程中來回傳遞的信息。如果希望進一步標明傳遞的信息是數(shù)據(jù)還是控制信息,則可以利用注釋箭頭尾部的形狀來區(qū)分:尾部是空心圓表示傳遞的是數(shù)據(jù),實心圓表示傳遞的是控制信息。5.6
體系結構設計42
2.結構圖有時還會用一些附加的符號,如用菱形表示選擇或者條件調用,用弧形箭頭表示循環(huán)調用,如圖所示。5.6
體系結構設計43
5.5.2面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法是常用的結構化設計方法,多在概要設計階段使用。它主要是指依據(jù)一定的映射規(guī)則,將需求分析階段得到的數(shù)據(jù)描述從系統(tǒng)的輸入端到輸出端所經歷的一系列變換或處理的數(shù)據(jù)流圖轉換為目標系統(tǒng)的結構描述。在數(shù)據(jù)流圖中,數(shù)據(jù)流分為變換型數(shù)據(jù)流和事務型數(shù)據(jù)流兩種。所謂變換,是指把輸入的數(shù)據(jù)處理后轉變成另外的輸出數(shù)據(jù)。信息沿輸入路徑流入系統(tǒng),在系統(tǒng)中經過加工處理后又離開系統(tǒng),當信息流具備這種特征時就是變換流。所謂事務,是指非數(shù)據(jù)變換的處理,它將輸入的數(shù)據(jù)流分散成許多數(shù)據(jù)流,形成若干個加工,然后選擇其中一個路徑來執(zhí)行。5.6
體系結構設計44
變換型數(shù)據(jù)流事務型數(shù)據(jù)流5.6
體系結構設計45
5.5.2面向數(shù)據(jù)流的設計方法通常,在一個大型系統(tǒng)中,可能同時存在變換型數(shù)據(jù)流和事務型數(shù)據(jù)流。對于變換型數(shù)據(jù)流,設計人員應該重點區(qū)分其輸入和輸出分支,通過變換分析將數(shù)據(jù)流圖映射為變換結構,從而構造出目標系統(tǒng)的結構圖。針對變換型數(shù)據(jù)流的設計可以分為以下幾個步驟:(1)區(qū)分變換型數(shù)據(jù)流中的輸入數(shù)據(jù)、變換中心和輸出數(shù)據(jù),并在數(shù)據(jù)流圖上用虛線標明分界線。(2)分析得到系統(tǒng)的初始結構圖。(3)對系統(tǒng)結構圖進行優(yōu)化。5.6
體系結構設計46
5.6.2面向數(shù)據(jù)流的設計方法對于事務型數(shù)據(jù)流,設計人員應該重點區(qū)分事務中心和數(shù)據(jù)接收通路,通過事務分析將數(shù)據(jù)流圖映射為事務結構。針對事務型數(shù)據(jù)流的設計可以分為以下幾個步驟:(1)確定以事務為中心的結構,找出事務中心、接收數(shù)據(jù)、處理路徑這三個部分。(2)將數(shù)據(jù)流圖轉換為初始的系統(tǒng)結構圖。(3)分解和細化接收分支和處理分支。5.6
體系結構設計47
5.5.3面向數(shù)據(jù)結構的設計方法顧名思義,面向數(shù)據(jù)結構的設計方法就是根據(jù)數(shù)據(jù)結構設計程序處理過程的方法,具體地說,面向數(shù)據(jù)結構的設計方法按輸入、輸出以及計算機內部存儲信息的數(shù)據(jù)結構進行軟件結構設計,從而把對數(shù)據(jù)結構的描述轉換為對軟件結構的描述。使用面向數(shù)據(jù)結構的設計方法時,分析目標系統(tǒng)的數(shù)據(jù)結構是關鍵。面向數(shù)據(jù)結構的設計方法通常在詳細設計階段使用。比較流行的面向數(shù)據(jù)結構的設計方法包括Jackson方法和Warnier方法。在這里,主要介紹Jackson方法。5.6
體系結構設計48
Jackson方法把數(shù)據(jù)結構分為3種基本類型:順序型結構、選擇型結構和循環(huán)型結構。在順序型結構中,數(shù)據(jù)由一個或多個元素組成,每個元素按照確定的次序出現(xiàn)一次。在順序型圖示中,數(shù)據(jù)A由B、C和D3個元素順序組成。在選擇型結構中,數(shù)據(jù)包含兩個或多個元素,每次使用該數(shù)據(jù)時,按照一定的條件從羅列的多個數(shù)據(jù)元素中選擇一個。在選擇型圖示中,數(shù)據(jù)A根據(jù)條件從B或C或D中選擇一個,元素右上方的符號“°”表示從中選擇一個。在循環(huán)型結構中,數(shù)據(jù)根據(jù)使用時的條件由一個數(shù)據(jù)元素出現(xiàn)零次或多次構成。在循環(huán)型圖示中,數(shù)據(jù)A根據(jù)條件由元素B出現(xiàn)零次或多次組成。元素B后加符號“*”表示重復。5.6
體系結構設計49
運用Jackson圖表達選擇型或循環(huán)型結構時,選擇條件或循環(huán)結束條件不能在圖上直接表現(xiàn)出來,并且如果框間連線為斜線,不易在打印機上輸出,所以產生了改進的Jackson圖,其基本邏輯符號如圖所示。5.6
體系結構設計50
運用Jackson圖進行程序設計有如下優(yōu)點:(1)可以清晰地表示層次結構,易于對自頂向下的結構進行描述。(2)結構易懂、易用,并且比較直觀形象。(3)不僅可以表示數(shù)據(jù)結構,也可以表示程序結構運用Jackson圖進行程序設計的步驟:(1)分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結構,并用Jackson結構來表示這些數(shù)據(jù)結構。(2)找出輸入數(shù)據(jù)結構和輸出數(shù)據(jù)結構中有對應關系的數(shù)據(jù)單元。(3)按照一定的規(guī)則,從描繪數(shù)據(jù)結構的Jackson圖導出描繪程序結構的Jackson圖。(4)列出基本操作與條件,并把它們分配到程序結構圖的適當位置。(5)用偽代碼表示程序。5.7接口設計5.7
接口設計52
5.7.1接口設計概述軟件系統(tǒng)結合業(yè)務、功能、部署等等因素將軟件系統(tǒng)逐步分解到模塊,那么模塊與模塊之間就必須根據(jù)各模塊的功能定義對應的接口。概要設計(總體設計)中的接口設計主要用于子系統(tǒng)/模塊之間或內部系統(tǒng)與外部系統(tǒng)進行各種交互。接口設計的內容應包括功能描述、接口的輸入輸出定義、錯誤處理等。軟件系統(tǒng)接口的種類以及規(guī)范很多,可以有API、服務接口、文件、數(shù)據(jù)庫等等,所以設計的方法也有很大的差異。但是總體來說接口設計的內容應包括通訊方法、協(xié)議、接口調用方法、功能內容、輸入輸出參數(shù)、錯誤/例外機制等。從成果上來看,接口一覽表以及詳細設計資料是必須的資料。5.7
接口設計53
接口設計一般包括3個方面:(1)用戶接口--用來說明將向用戶提供的命令和它們的語法結構以及軟件回答信息(2)外部接口--用來說明本系統(tǒng)同外界的所有接口的安排包括軟件與硬件之間的接口、本系統(tǒng)與各支持軟件之間的接口關系(3)內部接口--用來說明本系統(tǒng)之內的各個系統(tǒng)元素之間的接口的安排。5.7
接口設計54
5.7.2界面設計界面設計是接口設計中的重要組成部分。用戶界面的設計要求在研究技術問題的同時對人加以研究。TheoMandel在其關于界面設計的著作中提出了3條“黃金原則”。1)置用戶于控制之下2)減少用戶的記憶負擔3)保持界面一致
這些黃金原則實際上構成了指導用戶界面設計活動的基本原則。5.7
接口設計55
界面設計是一個迭代的過程,其核心活動包括:1)創(chuàng)建系統(tǒng)功能的外部模型;2)確定為完成此系統(tǒng)功能人和計算機應分別完成的任務;3)考慮界面設計中的典型問題;4)借助CASE工具構造界面原型;5)實現(xiàn)設計模型;6)評估界面質量。在界面的設計過程中先后涉及4個模型:1)由軟件工程師創(chuàng)建的設計模型(designmodel);2)由人機工程師(或軟件工程師)創(chuàng)建的用戶模型(usermodel);3)終端用戶對未來系統(tǒng)的假想(systemperception或user'smodel);4)系統(tǒng)實現(xiàn)后得到的系統(tǒng)映象(systemimage)。5.7
接口設計56
在界面設計中,應該考慮4個問題。1)系統(tǒng)響應時間:指當用戶執(zhí)行了某個控制動作后(如,點擊鼠標器等),系統(tǒng)做出反應的時間(指輸出信息或執(zhí)行對應的動作)。系統(tǒng)響應時間過長、不同命令在響應時間上的差別過于懸殊,用戶將難以接受。2)用戶求助機制:用戶都希望得到聯(lián)機幫助,聯(lián)機幫助系統(tǒng)有兩類,集成式和疊加式,此外,還要考慮諸如幫助范圍(僅考慮部分還是全部功能)、用戶求助的途徑、幫助信息的顯示、用戶如何返回正常交互工作及幫助信息本身如何組織等一系列問題。3)出錯信息:應選用用戶明了、含義準確的術語描述,同時還應盡可能提供一些有關錯誤恢復的建議。此外,顯示出錯信息時,若輔以聽覺(如鈴聲)、視覺(專用顏色)刺激,則效果更佳。4)命令方式:鍵盤命令曾經一度是用戶與軟件系統(tǒng)之間最通用的交互方式,隨著面向窗口的點選界面的出現(xiàn),鍵盤命令雖不再是唯一的交互形式,但許多有經驗的熟練的軟件人員仍喜愛這一方式,更多的情形是菜單與鍵盤命令并存,供用戶自由選用。5.7
接口設計57
5.7.3UX設計與UI設計的區(qū)別5.7
接口設計58
用戶體驗(UX)設計:1)用戶體驗設計與視覺或模型無關,它著眼于整個流程/服務流程、可用性和體驗。用戶體驗設計師創(chuàng)造這些體驗,思考這種體驗如何給用戶帶來感覺,以及用戶完成他們想要的任務有多容易。2)用戶體驗設計時開發(fā)和提高用戶與企業(yè)各方面互動質量的過程。3)用戶體驗設計的最終目的是為用戶創(chuàng)造可用的、高效的、相關的、簡單的、全方位的愉悅體驗。5.7
接口設計59
用戶界面(UI)設計:1)用戶界面設計將品牌的優(yōu)勢和視覺的優(yōu)點傳達到產品的界面上,確保設計是一致的、連貫的、美觀的。2)用戶界面設計考慮了產品界面的所有視覺和交互元素——包括圖標、間距、按鈕、配色方案、排版和響應式設計。3)用戶界面設計的最終目標是通過產品的界面以視覺的方式引導用戶,創(chuàng)造一種不需要用戶過多思考的直觀體驗。5.7
接口設計60
就功能而言,UX是事物的工作方式,UI是事物的外觀。UX是一個過程,而UI是可交付的。
UX和UI是緊密相連的,不能只擁有其中一個(1)在產品開發(fā)過程中,UX設計通常是第一位的,其次是UI設計。(2)UX設計師繪制出用戶體驗的基本框架,而UI設計師則用視覺和交互元素填充其中。(3)UX設計是關于識別和解決用戶問題的,而UI設計是關于創(chuàng)建直觀和美觀的交互界面的。5.8數(shù)據(jù)設計5.8
數(shù)據(jù)設計62
數(shù)據(jù)設計就是將需求分析階段定義的數(shù)據(jù)對象(E-R圖、數(shù)據(jù)字典)轉換為設計階段的數(shù)據(jù)結構和數(shù)據(jù)庫,包括兩個方面。1)程序級的數(shù)據(jù)結構設計:采用(偽)代碼的方式定義數(shù)據(jù)結構(數(shù)據(jù)的組成、類型、缺省值等信息);2)應用級的數(shù)據(jù)庫設計:采用物理級的E-R圖表示。5.8
數(shù)據(jù)設計63
數(shù)據(jù)庫有以下主要特點:1)實現(xiàn)數(shù)據(jù)共享2)減少數(shù)據(jù)的冗余度3)數(shù)據(jù)的獨立性4)數(shù)據(jù)實現(xiàn)集中控制5)數(shù)據(jù)一致性和可維護性,以確保數(shù)據(jù)的安全性和可靠性6)故障修復5.8
數(shù)據(jù)設計64
數(shù)據(jù)的基本結構分三個層次,反映了觀察數(shù)據(jù)庫的三種不同角度。1)物理數(shù)據(jù)層是數(shù)據(jù)庫的最內層,是物理存儲設備上實際存儲的數(shù)據(jù)的集合。這些數(shù)據(jù)是原始數(shù)據(jù),是用戶加工的對象,由內部模式描述的指令操作處理的位串、字符和字組成。2)概念數(shù)據(jù)層是數(shù)據(jù)庫的中間一層,是數(shù)據(jù)庫的整體邏輯表示。指出了每個數(shù)據(jù)的邏輯定義及數(shù)據(jù)之間的邏輯聯(lián)系,是存儲記錄的集合。它所設計的是數(shù)據(jù)庫所有對象的邏輯關系,而不是它們的物理關系,是數(shù)據(jù)庫管理員概念下的數(shù)據(jù)庫。3)邏輯數(shù)據(jù)層是用戶所看到和使用的數(shù)據(jù)庫,表示了一個或一些特定用戶使用的數(shù)據(jù)集合,即邏輯記錄的集合。5.8
數(shù)據(jù)設計65
數(shù)據(jù)庫設計是指根據(jù)用戶的需求,在某一具體的數(shù)據(jù)庫管理系統(tǒng)上,設計數(shù)據(jù)庫的結構和建立數(shù)據(jù)庫的過程。一般,數(shù)據(jù)庫的設計過程大致可分數(shù)據(jù)庫設計為5個步驟,如下所示。1)需求分析;調查和分析用戶的業(yè)務活動和數(shù)據(jù)的使用情況,弄清所用數(shù)據(jù)的種類、范圍、數(shù)量以及它們在業(yè)務活動中交流的情況,確定用戶對數(shù)據(jù)庫系統(tǒng)的使用要求和各種約束條件等,形成用戶需求規(guī)約。2)概念設計;對用戶要求描述的現(xiàn)實世界(可能是一個工廠、一個商場或者一個學校等),通過對其中信息的分類、聚集和概括,建立抽象的概念數(shù)據(jù)模型。這個概念模型應反映現(xiàn)實世界各部門的信息結構、信息流動情況、信息間的互相制約關系以及各部門對信息儲存、查詢和加工的要求等。所建立的模型應避開數(shù)據(jù)庫在計算機上的具體實現(xiàn)細節(jié),用一種抽象的形式表示出來。5.8
數(shù)據(jù)設計66
3)邏輯設計;主要工作是將現(xiàn)實世界的概念數(shù)據(jù)模型設計成數(shù)據(jù)庫的一種邏輯模式,即適應于某種特定數(shù)據(jù)庫管理系統(tǒng)所支持的邏輯數(shù)據(jù)模式。與此同時,可能還需為各種數(shù)據(jù)處理應用領域產生相應的邏輯子模式。這一步設計的結果就是所謂“邏輯數(shù)據(jù)庫”。4)物理設計;根據(jù)特定數(shù)據(jù)庫管理系統(tǒng)所提供的多種存儲結構和存取方法等依賴于具體計算機結構的各項物理設計措施,對具體的應用任務選定最合適的物理存儲結構(包括文件類型、索引結構和數(shù)據(jù)的存放次序與位邏輯等)、存取方法和存取路徑等。這一步設計的結果就是所謂“物理數(shù)據(jù)庫”。5)驗證設計;在上述設計的基礎上,收集數(shù)據(jù)并具體建立一個數(shù)據(jù)庫,運行一些典型的應用任務來驗證數(shù)據(jù)庫設計的正確性和合理性。一般,一個大型數(shù)據(jù)庫的設計過程往往需要經過多次循環(huán)反復。當設計的某步發(fā)現(xiàn)問題時,可能就需要返回到前面去進行修改。因此,在做上述數(shù)據(jù)庫設計時就應考慮到今后修改設計的可能性和方便性。5.9過程設計5.9
過程設計68
5.9.1程序流程圖流程圖是對過程、算法、流程的一種圖形表示,它對某個問題的定義、分析或解法進行描述,用定義完善的符號來表示操作、數(shù)據(jù)、流向等概念。流程圖分為數(shù)據(jù)流程圖、程序流程圖、系統(tǒng)流程圖、程序網絡圖和系統(tǒng)資源圖5種。這里主要介紹程序流程圖。程序流程圖也稱為程序框圖,是一種比較直觀、形象地描述過程的控制流程的圖形工具。它包含5種基本的控制結構:順序型、選擇型、先判定型循環(huán)(WHILE-DO)、后判定型循環(huán)(DO-WHILE)和多分支選擇型。5.9
過程設計
流程圖的基本符號流程圖的控制結構5.9
過程設計
程序流程圖的主要優(yōu)點是:采用簡單規(guī)范的符號,畫法簡單結構清晰,邏輯性強便于描述,容易理解程序流程圖的主要缺點是:不利于逐步求精的設計圖中可用箭頭隨意地對控制進行轉移,與結構化程序設計精神相悖不易于表示系統(tǒng)中所含的數(shù)據(jù)結構當目標系統(tǒng)比較復雜時,流程圖會變得很繁雜、不清晰5.9
過程設計
5.9.2
N-S圖N-S圖是由Nassi和Shneiderman提出的,又被稱為盒圖,是一種符合結構化程序設計原則的圖形工具
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)加工印花合同范本
- 2025年中國新型動力電池行業(yè)市場調研分析及投資戰(zhàn)略規(guī)劃報告
- 中國電網合同范例
- 刻字瓷像合同范本
- 買個合同范例
- 國開電大《幼兒園課程論》形考任務三參考答案
- 出國勞務標準合同范本
- 青島市機動車委托銷售合同范本
- 個人水果訂購合同范本
- 免除責任合同范本
- 無效宣告請求書與意見陳述書代理實務全天版-案例一
- 電子線檢驗標準
- 建筑施工安全員理論考核試題與答案
- 人教版七年級歷史下冊教學計劃(及進度表)
- 建筑工程節(jié)后復工自查表
- 華萊士標準化體系
- 快捷smt全自動物料倉儲方案
- keysight眼圖和抖動噪聲基礎知識與測量方法
- TPU材料項目可行性研究報告寫作參考范文
- 試用期考核合格證明表
- 鍋爐補給水陰陽混床操作步序表
評論
0/150
提交評論