軟件工程課件_第1頁
軟件工程課件_第2頁
軟件工程課件_第3頁
軟件工程課件_第4頁
軟件工程課件_第5頁
已閱讀5頁,還剩1500頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

什麼是軟體軟件的分類軟件的發(fā)展軟件生存期

軟體工程軟件工程的目的和要求第一章軟體工程概論軟體是電腦系統(tǒng)中與硬體相互依存的另一部分,它是包括程式,數(shù)據(jù)及其相關(guān)文檔的完整集合。程式是按事先設(shè)計的功能和性能要求執(zhí)行的指令序列數(shù)據(jù)是使程式能正常操縱資訊的數(shù)據(jù)結(jié)構(gòu)文檔是與程式開發(fā),維護(hù)和使用有關(guān)的圖文材料什麼是軟體?軟體的特點軟體是一種邏輯實體,而不是具體的物理實體。因而它具有抽象性軟體的生產(chǎn)與硬體不同,在它的開發(fā)過程中沒有明顯的製造過程在軟體的運行和使用期間,沒有硬體那樣的機械磨損,老化問題軟體的開發(fā)和運行常受到電腦系統(tǒng)的限制,對電腦系統(tǒng)有著不同程度的依賴性軟體的開發(fā)至今尚未完全擺脫手工藝的開發(fā)方式軟體本身是複雜的實際問題的複雜性程式邏輯結(jié)構(gòu)的複雜性軟體成本相當(dāng)昂貴相當(dāng)多的軟體工作涉及到社會因素軟體的分類按軟體的功能進(jìn)行劃分:系統(tǒng)軟體操作系統(tǒng)資料庫管理系統(tǒng)設(shè)備驅(qū)動程式通信處理程式等

支撐軟體文本編輯程式檔格式化程式磁片向磁帶向數(shù)據(jù)傳輸?shù)某淌匠淌綆煜到y(tǒng)支持需求分析、設(shè)計、實現(xiàn)、測試和支持管理的軟體

應(yīng)用軟體商業(yè)數(shù)據(jù)處理軟體工程與科學(xué)計算軟體電腦輔助設(shè)計/製造軟體系統(tǒng)仿真軟體智能產(chǎn)品嵌入軟體醫(yī)療、制藥軟體事務(wù)管理、辦公自動化軟體電腦輔助教學(xué)軟體按軟體規(guī)模進(jìn)行劃分:類別參加人員數(shù)研製期限根源程式行數(shù)

微型 1 1~4周0.5k小型1 1~6月1k~2k中型2~5 1~2年5k~50k大型5~20 2~3年50k~100k甚大型100~10004~5年1M(=1000k)極大型2000~50005~10年1M~10M

按軟體工作方式劃分:即時處理軟體分時軟體互動式軟體批處理軟體按軟體服務(wù)對象的範(fàn)圍劃分:專案軟體產(chǎn)品軟體按使用的頻度進(jìn)行劃分:一次使用頻繁使用按軟體失效的影響進(jìn)行劃分:高可靠性軟體一般可靠性軟體軟體發(fā)展階段程式設(shè)計階段—50至60年代程式系統(tǒng)階段—60至70年代 軟體工程階段—70年代以後軟體工程過程軟體規(guī)格說明:規(guī)定軟體的功能及其運行的限制軟體開發(fā):產(chǎn)生滿足規(guī)格說明的軟體軟體確認(rèn):確認(rèn)軟體能夠完成客戶提出的要求軟體演進(jìn):為滿足客戶的變更要求,軟體必須在使用的過程中演進(jìn)軟體工程過程的特性易理解性可見性可支持性可接受性可靠性健壯性可維護(hù)性速度軟體生存期lifecycle軟體有一個孕育、誕生、成長、成熟、衰亡的生存過程。這個過程即為電腦軟體的生存期軟體生存期的六個步驟,即制定計畫、需求分析、設(shè)計、程式編碼、測試及運行維護(hù)瀑布模型

RETURN制定計畫確定要開發(fā)軟體系統(tǒng)的總目標(biāo)給出功能、性能、可靠性以及介面等方面的要求完成該軟體任務(wù)的可行性研究估計可利用的資源

(硬體,軟體,人力等)、成本、效益、開發(fā)進(jìn)度制定出完成開發(fā)任務(wù)的實施計畫,連同可行性研究報告,提交管理部門審查需求分析和定義對用戶提出的要求進(jìn)行分析並給出詳細(xì)的定義編寫軟體需求說明書或系統(tǒng)功能說明書及初步的系統(tǒng)用戶手冊提交管理機構(gòu)評審軟體設(shè)計概要設(shè)計

—把各項需求轉(zhuǎn)換成軟體的體系結(jié)構(gòu)。結(jié)構(gòu)中每一組成部分都是意義明確的模組,每個模組都和某些需求相對應(yīng)詳細(xì)設(shè)計

—對每個模組要完成的工作進(jìn)行具體的描述,為根源程式編寫打下基礎(chǔ)編寫設(shè)計說明書,提交評審。程式編寫把軟體設(shè)計轉(zhuǎn)換成電腦可以接受的程式代碼,即寫成以某一種特定程式設(shè)計語言表示的“根源程式清單”寫出的程式應(yīng)當(dāng)是結(jié)構(gòu)良好、清晰易讀的,且與設(shè)計相一致的軟體測試單元測試,查找各模組在功能和結(jié)構(gòu)上存在的問題並加以糾正組裝測試,將已測試過的模組按一定順序組裝起來按規(guī)定的各項需求,逐項進(jìn)行有效性測試,決定已開發(fā)的軟體是否合格,能否交付用戶使用運行/維護(hù)改正性維護(hù)運行中發(fā)現(xiàn)了軟體中的錯誤需要修正適應(yīng)性維護(hù)為了適應(yīng)變化了的軟體工作環(huán)境,需做適當(dāng)變更完善性維護(hù)為了增強軟體的功能需做變更軟體生存期模型軟體生存期模型是跨越整個生存期的系統(tǒng)開發(fā)、運作和維護(hù)所實施的全部過程、活動和任務(wù)的結(jié)構(gòu)框架瀑布模型演化模型螺旋模型噴泉模型智能模型演化模型由於在專案開發(fā)的初始階段人們對軟體的需求認(rèn)識常常不夠清晰,因而使得開發(fā)專案難於做到一次開發(fā)成功,出現(xiàn)返工再開發(fā)在所難免。做兩次第一次只是試驗開發(fā),其目標(biāo)只是在於探索可行性,弄清軟體需求第二次則在此基礎(chǔ)上獲得較為滿意的軟體產(chǎn)品螺旋模型螺旋模型沿著螺線旋轉(zhuǎn),在四個象限上分別表達(dá)四個方面的活動,即:制定計畫──確定軟體目標(biāo),選定實施方案,弄清專案開發(fā)的限制風(fēng)險分析──分析所選方案,考慮如何識別和消除風(fēng)險實施工程──實施軟體開發(fā)客戶評估──評價開發(fā)工作,提出修正建議

噴泉模型迭代重複演進(jìn)無間隙各階段間無明顯界限軟體工程的定義Boehm:運用現(xiàn)代科學(xué)技術(shù)知識來設(shè)計並構(gòu)造電腦程式及為開發(fā)、運行和維護(hù)這些程式所必需的相關(guān)檔資料IEEE:軟體工程是開發(fā)、運行、維護(hù)和修復(fù)軟體的系統(tǒng)方法FritzBauer:建立並使用完善的工程化原則,以較經(jīng)濟的手段獲得能在實際機器上有效運行的可靠軟體的一系列方法軟體工程三要素:

方法、工具和過程軟體工程方法為軟體開發(fā)提供了“如何做”的技術(shù)軟體工具為軟體工程方法提供了自動的或半自動的軟體支撐環(huán)境軟體工程過程定義了:

方法使用的順序要求交付的文檔資料為保證品質(zhì)和適應(yīng)變化所需要的管理軟體開發(fā)各個階段完成的里程碑

某些元素的一個集合或排列這些元素被組織起來以實現(xiàn)某種方法,過程或借助處理資訊進(jìn)行控制?;峨娔X的系統(tǒng)基於電腦系統(tǒng)的系統(tǒng)元素系統(tǒng)元素軟體—

電腦程式、數(shù)據(jù)結(jié)構(gòu)、相關(guān)文檔硬體—

電子計算設(shè)備(如CPU,記憶體)和外部機電設(shè)備(如感測器、馬達(dá)等)人—

硬體和軟體的用戶資料庫—

一個大型的有組織的資訊集合文檔—

手冊、表格和其他用以描述系統(tǒng)使用和操作的資訊過程—

定義每一種系統(tǒng)元素的特定使用步驟,或系統(tǒng)駐留的過程性環(huán)境系統(tǒng)的層次結(jié)構(gòu)基於電腦的系統(tǒng)本身可以成為一個更大的基於電腦系統(tǒng)中的一個元素,並稱為那個更大系統(tǒng)的宏元素。工廠自動化

系統(tǒng)電腦系統(tǒng)工程電腦系統(tǒng)工程是一個問題求解活動,目的是揭示、分析所期望的功能,並把它們分配到各個單獨的系統(tǒng)元素中去。系統(tǒng)工程師的任務(wù)與用戶合作確認(rèn)用戶的目標(biāo)和約束導(dǎo)出功能、性能、介面、設(shè)計約束和資訊結(jié)構(gòu)的表示將它們分配到每一個系統(tǒng)元素中

電腦系統(tǒng)工程師選擇硬體元件的某種組合以構(gòu)成基於電腦系統(tǒng)的硬體元素硬體工程過程可以分為三個階段計畫和定義階段設(shè)計和樣機實現(xiàn)階段生產(chǎn)、銷售和售後服務(wù)階段硬體和硬體工程

軟體與軟體工程為實現(xiàn)要求的功能和性能,必須製作或獲取一系列軟體部件軟體元素分為兩類

應(yīng)用軟體用來實現(xiàn)資訊處理的功能

系統(tǒng)軟體完成使應(yīng)用軟體能與其它系統(tǒng)元素交互的控制功能

人類工程是應(yīng)用從心理學(xué)和方法論導(dǎo)出的知識來確定和設(shè)計高質(zhì)量HCI的多學(xué)科活動人類工程過程包括以下步驟(1)活動分析──環(huán)境交互及劃分任務(wù),進(jìn)行任務(wù)分析

(2)語義分析和設(shè)計──動作精確定義,“對話”設(shè)計(3)語法和詞法設(shè)計──各個動作和命令的形式,硬體與軟體實現(xiàn)

(4)用戶環(huán)境設(shè)計──將硬體、軟體和其他系統(tǒng)生成元素組合起來形成用戶環(huán)境(5)原型──從人的角度出發(fā)來評價HCI資料庫和數(shù)據(jù)庫工程資料庫工程(包括資料庫分析、設(shè)計和實現(xiàn))對於使用資料庫的系統(tǒng),資訊倉庫往往是所有功能的核心資料庫工程的應(yīng)用是在資料庫的資訊域定義完成之後

系統(tǒng)工程師的作用是

定義資料庫中包含的資訊處理查詢的類型數(shù)據(jù)存取的方式資料庫的容量等數(shù)據(jù)分析和設(shè)計是基本的軟體工程活動系統(tǒng)分析的目標(biāo)識別用戶要求評價系統(tǒng)的可行性進(jìn)行經(jīng)濟分析和技術(shù)分析把功能分配給硬體、軟體、人、資料庫和其他系統(tǒng)元素建立成本和進(jìn)度限制生成系統(tǒng)規(guī)格說明,形成所有後續(xù)工程的基礎(chǔ)需求識別系統(tǒng)分析過程的第一步就是識別用戶要求分析員必須考慮以下問題:功能和性能

可靠性和品質(zhì)

總的系統(tǒng)目標(biāo)

成本與進(jìn)度限制製造需求

市場與競爭情況

有效的技術(shù)

將來可能的擴充系統(tǒng)分析的任務(wù)識別希望的功能和性能範(fàn)圍確定系統(tǒng)的功能、性能、約束和介面將功能賦予一個或多個系統(tǒng)元素(即軟體、硬體、人等)提出一些候選方案並做評價

專案考慮商業(yè)考慮技術(shù)分析生產(chǎn)評估

對同一功能,可以分配不同的系統(tǒng)元素為選取最有效的分配方案,使用一組權(quán)衡準(zhǔn)則進(jìn)行評價人員問題環(huán)境介面法律考慮1、專案考慮在預(yù)估的成本與進(jìn)度範(fàn)圍內(nèi)所選的系統(tǒng)配置能否實現(xiàn)?與成本與進(jìn)度估算相關(guān)的風(fēng)險有哪些?

2、商業(yè)考慮所選的系統(tǒng)配置是最可能有效益的解決方案嗎?能否成功地佔領(lǐng)市場?最終的報償是否能表明所冒的開發(fā)風(fēng)險是值得的?

3、技術(shù)分析是否具備開發(fā)所有系統(tǒng)元素的技術(shù)實力?能否確保功能和性能得到滿足?能否對這種系統(tǒng)配置進(jìn)行充分的維護(hù)?是否具備技術(shù)資源?與技術(shù)相關(guān)的風(fēng)險有哪些?

4、生產(chǎn)評估生產(chǎn)工具與設(shè)備是否有效?必需的過程是否短缺?是否充分地實施了品質(zhì)保證?

5、人員問題開發(fā)人員是否得到培訓(xùn)?是否存在政治問題?用戶是否瞭解這個系統(tǒng)將要做什麼?

6、環(huán)境介面所提交的系統(tǒng)配置與系統(tǒng)的外部環(huán)境的介面是否合適?機器與機器、人與機器之間的通信是否以智能方式處理?

7、法律考慮這種配置是否會引入違法的責(zé)任風(fēng)險?對責(zé)任問題是否給予了足夠的保護(hù)?是否存在潛在的破壞問題?

可行性研究問題識別市場調(diào)查分析準(zhǔn)備環(huán)境分析物理分析功能分析資訊分析動態(tài)分析確立系統(tǒng)方案,作出各種估算模型評審

問題的初步認(rèn)識瞭解系統(tǒng)應(yīng)解決的問題,這些問題使如何提出的設(shè)想這些問題如何解決才能滿足要求瞭解問題的結(jié)構(gòu)

市場調(diào)查瞭解市場對待開發(fā)軟體的需求情況調(diào)查市場上已有的類似軟體系統(tǒng)的功能、性能、價格情況

分析準(zhǔn)備確立分析計畫規(guī)定由誰參加分析作業(yè),任務(wù)分配對參加分析的人員進(jìn)行必要的培訓(xùn)

環(huán)境分析明確系統(tǒng)的目的和限制條件使用單位的狀況、經(jīng)營方針和組織機構(gòu)使用單位的電腦利用情況相關(guān)的硬體、軟體及其它介面部分用戶的操作環(huán)境及操作要求習(xí)慣、法律、制度上對軟體的制約開發(fā)能具備的技術(shù)條件和設(shè)備條件

物理分析瞭解實際業(yè)務(wù)活動狀況,特別對一些活動要點進(jìn)行分析明確在這些要點之間什麼東西在流動,如何進(jìn)行流動對物理流量進(jìn)行分析對其模型化,得到實際業(yè)務(wù)系統(tǒng)(當(dāng)前系統(tǒng))的物理模型

功能分析決定系統(tǒng)應(yīng)具備的功能(工作域)分析功能的結(jié)構(gòu):功能展開和功能分配分析各功能之間的關(guān)係,整理它們之間傳遞的資訊利用數(shù)據(jù)流圖,描述資訊在系統(tǒng)流動與處理的情況

資訊分析調(diào)查系統(tǒng)的輸入、輸出、保存資訊明確資訊的結(jié)構(gòu)及各資訊之間的關(guān)係調(diào)查各資訊的資訊量調(diào)查各種報表和文件的格式建立粗略的數(shù)據(jù)詞典,定義系統(tǒng)中使用的數(shù)據(jù)

動態(tài)分析系統(tǒng)內(nèi)每一部分有幾種狀態(tài)各種狀態(tài)轉(zhuǎn)換的條件同步產(chǎn)生的條件與同步後狀態(tài)的變化

確立系統(tǒng)方案,進(jìn)行各種估算粗略地估算成本估算可能取得的效益提出可能需要的資源,包括人員、硬體、軟體等提出大概的進(jìn)度安排

軟體需求分析的任務(wù)深入描述軟體的功能和性能確定軟體設(shè)計的約束和軟體同其他系統(tǒng)元素的介面細(xì)節(jié)定義軟體的其他有效性需求需求分析研究的對象是軟體專案的用戶要求準(zhǔn)確地表達(dá)被接受的用戶要求確定被開發(fā)軟體系統(tǒng)的系統(tǒng)元素將功能和資訊結(jié)構(gòu)分配到這些系統(tǒng)元素中需求分析的任務(wù)就是借助於當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)的邏輯模型,解決目標(biāo)系統(tǒng)的“做什麼”的問題。通常軟體開發(fā)專案是要實現(xiàn)目標(biāo)系統(tǒng)的物理模型目標(biāo)系統(tǒng)的具體物理模型是由它的邏輯模型經(jīng)實例化,即具體到某個業(yè)務(wù)領(lǐng)域而得到的需求分析的過程(1)問題識別從系統(tǒng)的角度來理解軟體並評審軟體範(fàn)圍是否恰當(dāng)確定對目標(biāo)系統(tǒng)的綜合要求,即軟體的需求提出這些需求實現(xiàn)條件,以及需求應(yīng)達(dá)到的標(biāo)準(zhǔn)軟體的需求包括:功能需求性能需求環(huán)境需求可靠性需求安全保密要求用戶介面需求資源使用需求成本消耗需求開發(fā)進(jìn)度需求預(yù)先估計以後系統(tǒng)可能達(dá)到的目標(biāo)問題識別的另一項工作是建立分析所需要的通信途徑,以保證能順利地對問題進(jìn)行分析。(2)分析與綜合從資訊流和資訊結(jié)構(gòu)出發(fā),逐步細(xì)化所有的軟體功能,找出系統(tǒng)各元素之間的聯(lián)繫、介面特性和設(shè)計上的約束,分析它們是否滿足功能要求,是否合理。剔除其不合理的部分,增加其需要部分。最終綜合成系統(tǒng)的解決方案,給出目標(biāo)系統(tǒng)的詳細(xì)邏輯模型。常用的分析方法面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法(SA)面向數(shù)據(jù)結(jié)構(gòu)的Jackson方法(JSD)面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù)系統(tǒng)開發(fā)方法(DSSD)面向?qū)ο蟮姆治龇椒?OOA)等(3)編制需求分析階段的文檔軟體需求說明書數(shù)據(jù)要求說明書初步的用戶手冊修改、完善與確定軟體開發(fā)實施計畫(4)需求分析評審系統(tǒng)定義的目標(biāo)是否與用戶的要求一致;系統(tǒng)需求分析階段提供的文檔資料是否齊全;文檔中的所有描述是否完整、清晰、準(zhǔn)確反映用戶要求;與所有其他系統(tǒng)成分的重要介面是否都已經(jīng)描述;被開發(fā)專案的數(shù)據(jù)流與數(shù)據(jù)結(jié)構(gòu)是否足夠,確定;所有圖表是否清楚,在不補充說明時能否理解;主要功能是否已包括在規(guī)定的軟體範(fàn)圍之內(nèi),是否都已充分說明;設(shè)計的約束條件或限制條件是否符合實際;開發(fā)的技術(shù)風(fēng)險是什麼;是否考慮過軟體需求的其他方案;是否考慮過將來可能會提出的軟體需求;是否詳細(xì)制定了檢驗標(biāo)準(zhǔn),它們能否對系統(tǒng)定義是否成功進(jìn)行確認(rèn);需求分析流程軟體需求分析的原則需要能夠表達(dá)和理解問題的資訊域和功能域要能以層次化的方式對問題進(jìn)行分解和不斷細(xì)化要給出系統(tǒng)的邏輯視圖和物理視圖軟體需求規(guī)格說明的原則從現(xiàn)實中分離功能,即描述要“做什麼”而不是“怎樣實現(xiàn)”要求使用面向處理的規(guī)格說明語言(或稱系統(tǒng)定義語言)如果被開發(fā)軟體只是一個大系統(tǒng)中的一個元素,那麼整個大系統(tǒng)也包括在規(guī)格說明的描述之中規(guī)格說明必須包括系統(tǒng)運行環(huán)境規(guī)格說明必須是一個認(rèn)識模型規(guī)格說明必須是可操作的規(guī)格說明必須容許不完備性並允許擴充規(guī)格說明必須局部化和鬆散耦合軟體需求方法需求分析方法由對軟體問題的資訊域和功能域的系統(tǒng)分析過程及其表示方法組成大多數(shù)的需求分析方法是由資訊驅(qū)動的資訊域具有三種屬性:資訊流、資訊內(nèi)容和資訊結(jié)構(gòu)。結(jié)構(gòu)化分析方法

面向數(shù)據(jù)流進(jìn)行需求分析的方法結(jié)構(gòu)化分析方法適合於數(shù)據(jù)處理類型軟體的需求分析具體來說,結(jié)構(gòu)化分析方法就是用抽象模型的概念,按照軟體內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)係,自頂向下逐層分解,直到找到滿足功能要求的所有可實現(xiàn)的軟體為止結(jié)構(gòu)化分析方法使用工具:

數(shù)據(jù)流圖數(shù)據(jù)詞典結(jié)構(gòu)化英語判定表與判定樹數(shù)據(jù)流圖數(shù)據(jù)流圖中的主要圖形元素數(shù)據(jù)加工(數(shù)據(jù)變換)數(shù)據(jù)源點或終點(外部實體)數(shù)據(jù)流數(shù)據(jù)存儲檔描述銀行取款過程的數(shù)據(jù)流圖數(shù)據(jù)流與數(shù)據(jù)加工之間的關(guān)係數(shù)據(jù)流圖的層次結(jié)構(gòu)為了表達(dá)數(shù)據(jù)處理過程的數(shù)據(jù)加工情況,需要採用層次結(jié)構(gòu)的數(shù)據(jù)流圖。按照系統(tǒng)的層次結(jié)構(gòu)進(jìn)行逐步分解,並以分層的數(shù)據(jù)流圖反映這種結(jié)構(gòu)關(guān)係,能清楚地表達(dá)和容易理解整個系統(tǒng)分層的數(shù)據(jù)流圖在多層數(shù)據(jù)流圖中,頂層流圖僅包含一個加工,它代表被開發(fā)系統(tǒng)。它的輸入流是該系統(tǒng)的輸入數(shù)據(jù),輸出流是系統(tǒng)所輸出數(shù)據(jù)底層流圖是指其加工不需再做分解的數(shù)據(jù)流圖,它處在最底層中間層流圖則表示對其上層父圖的細(xì)化。它的每一加工可能繼續(xù)細(xì)化,形成子圖。結(jié)構(gòu)化分析方法步驟示例

商店業(yè)務(wù)處理系統(tǒng)這個數(shù)據(jù)流圖只是一個高層的系統(tǒng)邏輯模型,它反映了目標(biāo)系統(tǒng)要實現(xiàn)的功能數(shù)據(jù)流圖繪製步驟首先確定系統(tǒng)的輸入和輸出根據(jù)商店業(yè)務(wù),畫出頂層數(shù)據(jù)流圖,以反映最主要業(yè)務(wù)處理流程

經(jīng)過分析,商店業(yè)務(wù)處理的主要功能應(yīng)當(dāng)有銷售、採購、會計三大項。主要數(shù)據(jù)流輸入的源點和輸出終點是顧客和供應(yīng)商。然後從輸入端開始,根據(jù)商店業(yè)務(wù)工作流程,畫出數(shù)據(jù)流流經(jīng)的各加工框,逐步畫到輸出端,得到第一層數(shù)據(jù)流圖第一層數(shù)據(jù)流圖加細(xì)每一個加工框 銷售細(xì)化採購細(xì)化檢查和修改數(shù)據(jù)流圖的原則數(shù)據(jù)流圖上所有圖形符號只限於前述四種基本圖形元素數(shù)據(jù)流圖的主圖必須包括前述四種基本元素,缺一不可數(shù)據(jù)流圖的主圖上的數(shù)據(jù)流必須封閉在外部實體之間每個加工至少有一個輸入數(shù)據(jù)流和一個輸出數(shù)據(jù)流在數(shù)據(jù)流圖中,需按層給加工框編號。編號表明該加工所處層次及上下層的親子關(guān)係規(guī)定任何一個數(shù)據(jù)流子圖必須與它上一層的一個加工對應(yīng),兩者的輸入數(shù)據(jù)流和輸出數(shù)據(jù)流必須一致。此即父圖與子圖的平衡可以在數(shù)據(jù)流圖中加入物質(zhì)流,幫助用戶理解數(shù)據(jù)流圖圖上每個元素都必須有名字?jǐn)?shù)據(jù)流圖中不可夾帶控制流初畫時可以忽略瑣碎的細(xì)節(jié),以集中精力於主要數(shù)據(jù)流數(shù)據(jù)詞典數(shù)據(jù)詞典與數(shù)據(jù)流圖配合,能清楚地表達(dá)數(shù)據(jù)處理的要求詞條描述——對於在數(shù)據(jù)流圖中每一個被命名的圖形元素,均加以定義,其內(nèi)容有:名字,別名或編號,分類,描述,定義,位置,其他,等(1)數(shù)據(jù)流詞條描述數(shù)據(jù)流名:說明:簡要介紹作用即它產(chǎn)生的原因和結(jié)果數(shù)據(jù)流來源:來自何方數(shù)據(jù)流去向:去向何處數(shù)據(jù)流組成:數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)量流通量:數(shù)據(jù)量,流通量(2)數(shù)據(jù)元素詞條描述數(shù)據(jù)元素名:類型:數(shù)字(離散值,連續(xù)值),文字(編碼類型)長度:取值範(fàn)圍:相關(guān)的數(shù)據(jù)元素及數(shù)據(jù)結(jié)構(gòu):(3)數(shù)據(jù)檔詞條描述數(shù)據(jù)檔案名:簡述:存放的是什麼數(shù)據(jù)輸入數(shù)據(jù):輸出數(shù)據(jù):數(shù)據(jù)檔組成:數(shù)據(jù)結(jié)構(gòu)存儲方式:順序,直接,關(guān)鍵碼存取頻率:(4)加工邏輯詞條描述加工名:加工編號:反映該加工的層次簡要描述:加工邏輯及功能簡述輸入數(shù)據(jù)流:輸出數(shù)據(jù)流:加工邏輯:簡述加工程式,加工順序(5)源點及匯(終)點詞條描述名稱:外部實體名簡要描述:什麼外部實體有關(guān)數(shù)據(jù)流:數(shù)目:數(shù)據(jù)結(jié)構(gòu)的描述

符號

含義

舉例=被定義為+與

x=a+b[...,...]或[...|...]或

x=[a,b],x=[a|b]{...}或m{...}n重複

x={a},x=3{a}8(...)可選

x=(a)“...”基本數(shù)據(jù)元素

x=“a”.. 連結(jié)符

x=1..9存摺格式存?。綉裘枺珟ぬ枺_戶日+性質(zhì)+(印密)+1{存取行}50戶名=2{字母}24所號=“001”..“999”帳號=“00000001”..“99999999”開戶日=年+月+日性質(zhì)=“1”..“6”注:“1”表示普通戶,“5”表示工資戶等印密=“0”注:印密在存摺上不顯示存取行=日期+(摘要)+支出+存入+餘額+操作+復(fù)核

對數(shù)據(jù)流圖的每一個基本加工,必須有一個基本加工邏輯說明基本加工邏輯說明必須描述基本加工如何把輸入數(shù)據(jù)流變換為輸出數(shù)據(jù)流的加工規(guī)則加工邏輯說明必須描述實現(xiàn)加工的策略而不是實現(xiàn)加工的細(xì)節(jié)加工邏輯說明中包含的資訊應(yīng)是充足的,完備的,有用的,無冗餘的基本加工邏輯說明用於寫加工邏輯說明的工具

結(jié)構(gòu)化英語判定表判定樹(1)結(jié)構(gòu)化英語結(jié)構(gòu)化英語的辭彙表由英語命令動詞數(shù)據(jù)詞典中定義的名字有限的自定義詞邏輯關(guān)係詞IF_THEN_ELSE、

CASE_OF、

WHILE_DO、

REPEAT_UNTIL等組成。是一種介於自然語言和形式化語言之間的語言語言的正文用基本控制結(jié)構(gòu)進(jìn)行分割,加工中的操作用自然語言短語來表示其基本控制結(jié)構(gòu)有三種:簡單陳述句結(jié)構(gòu):避免複合語句;重複結(jié)構(gòu):while_do

repeat_until結(jié)構(gòu)。判定結(jié)構(gòu):if_then_else

case_of結(jié)構(gòu);商店業(yè)務(wù)處理系統(tǒng)中“檢查發(fā)貨單”if發(fā)貨單金額超過$500then

if

欠款超過了60天then

在償還欠款前不予批準(zhǔn)

else

(欠款未超期)發(fā)批準(zhǔn)書,發(fā)貨單

else

(發(fā)貨單金額未超過$500)

if

欠款超過60天then

發(fā)批準(zhǔn)書,發(fā)貨單及賒欠報告

else

(欠款未超期)發(fā)批準(zhǔn)書,發(fā)貨單

(2)判定表如果數(shù)據(jù)流圖的加工需要依賴於多個邏輯條件的取值,使用判定表來描述比較合適以“檢查發(fā)貨單”為例(3)判定樹判定樹也是用來表達(dá)加工邏輯的一種工具。有時侯它比判定表更直觀。檢查發(fā)貨單金額>$500金額

$500

欠款>60天不發(fā)出批準(zhǔn)書

欠款

60天發(fā)貨單發(fā)出批準(zhǔn)書、

欠款>60天發(fā)出批準(zhǔn)書、發(fā)貨單及賒欠報告

欠款

60天發(fā)出批準(zhǔn)書、發(fā)貨單原型化方法在開發(fā)初期,要想得到一個完整準(zhǔn)確的規(guī)格說明不是一件容易的事。特別是對一些大型的軟體專案。用戶往往對系統(tǒng)只有一個模糊的想法,很難完全準(zhǔn)確地表達(dá)對系統(tǒng)的全面要求。軟體開發(fā)者對於所要解決的應(yīng)用問題認(rèn)識更是模糊不清隨著開發(fā)工作向前推進(jìn),用戶可能會產(chǎn)生新的要求,或因環(huán)境變化,要求系統(tǒng)也能隨之變化;開發(fā)者又可能在設(shè)計與實現(xiàn)的過程中遇到些沒有預(yù)料到的實際困難,需要以改變需求來解脫困境。因此規(guī)格說明難以完善、需求的變更、以及通信中的模糊和誤解,都會成為軟體開發(fā)順利推進(jìn)的障礙。為解決這些問題,逐漸形成了軟體系統(tǒng)的快速原型的概念。軟體原型的分類在軟體開發(fā)中,原型是軟體的一個早期可運行的版本,它反映最終系統(tǒng)的部分重要特性。

探索型:目的是要弄清對目標(biāo)系統(tǒng)的要求,確定所希望的特性,並探討多種方案的可行性。

實驗型:這種原型用於大規(guī)模開發(fā)和實現(xiàn)之前,考核方案是否合適,規(guī)格說明是否可靠。

進(jìn)化型:這種原型的目的不在於改進(jìn)規(guī)格說明,而是將系統(tǒng)建造得易於變化,在改進(jìn)原型的過程中,逐步將原型進(jìn)化成最終系統(tǒng)。原型使用策略

廢棄策略追加策略

建立快速原型,進(jìn)行系統(tǒng)的分析和構(gòu)造的好處:

增進(jìn)軟體者和用戶對系統(tǒng)服務(wù)需求的理解,使比較含糊的具有不確定性的軟體需求(主要是功能)明確化。軟體原型化方法提供了一種有力的學(xué)習(xí)手段。

使用原型化方法,可以容易地確定系統(tǒng)的性能,確認(rèn)各項主要系統(tǒng)服務(wù)的可應(yīng)用性,確認(rèn)系統(tǒng)設(shè)計的可行性,確認(rèn)系統(tǒng)作為產(chǎn)品的結(jié)果。軟體原型的最終版本,有的可以原封不動地成為產(chǎn)品,有的略加修改就可以成為最終系統(tǒng)的一個組成部分,這樣有利於建成最終系統(tǒng)。

原型開發(fā)技術(shù)可執(zhí)行規(guī)格說明基於腳本(scenario)的設(shè)計自動程式設(shè)計專用語言可複用(reusable)的軟體簡化假設(shè)可執(zhí)行規(guī)格說明可執(zhí)行規(guī)格說明是用於需求規(guī)格說明的一種自動化技術(shù)。使用這種方法,人們可以直接觀察他們用語言規(guī)定的任何系統(tǒng)性行為。包括

代數(shù)規(guī)格說明

有限狀態(tài)模型

可執(zhí)行的數(shù)據(jù)流圖

(1)代數(shù)規(guī)格說明代數(shù)規(guī)格說明使用集合、定義於這些集合上的函數(shù)和定義於這些函數(shù)上的方程來描述對象。規(guī)格說明的操作語義用這些方程表示。

NEW_STACK:→StackPUSH:Stack,Element→StackPOP:Stack→(Element|Undefined)POP(NEW_STACK())=UndefinedPOP(PUSH(stk,elem))=elem其中,前三行定義了操作的語法,後兩行把它們的語義定義為一些方程。舉例:定義一個無界的棧及其操作

(2)有限狀態(tài)模型parnas提出的使用最廣泛的一種可執(zhí)行規(guī)格說明形式。從一個初始狀態(tài)開始接收輸入,到產(chǎn)生輸出,狀態(tài)在推移變化。施加在狀態(tài)元素上的約束確定了有效狀態(tài)的推移。舉例:建立用戶/程式對話

(3)可執(zhí)行的數(shù)據(jù)流圖數(shù)據(jù)流圖是基於結(jié)構(gòu)化開發(fā)方法的結(jié)構(gòu)化規(guī)格說明用一種可執(zhí)行的語言程式代替定義處理邏輯的結(jié)構(gòu)化英語,數(shù)據(jù)流圖就成為由可執(zhí)行語言程式模組組成的網(wǎng)路,在一定環(huán)境或工具的支持下就可成為一個可以執(zhí)行的原型系統(tǒng)。

基於腳本的設(shè)計腳本是指用戶介面的原型。一個腳本用以模擬在系統(tǒng)運行期間用戶經(jīng)歷的事件。它提供了輸入─處理─輸出的螢?zāi)桓袷胶陀嘘P(guān)對話的模型。因此,軟體開發(fā)者能夠給用戶顯示系統(tǒng)的逼真的視圖,使用戶得以判斷是否符合他的意圖??稍谌我荒_本中使用一套可複用的軟體模組,以表達(dá)某一方面的要求??墒褂靡环N原型語言來描述原型系統(tǒng)。原型開發(fā)過程中用這種語言來定義螢?zāi)?、資料項目、及其相關(guān)的操作。從系統(tǒng)的外部描述開始,開發(fā)與資料庫的介面、錯誤處理和恢復(fù)過程等系統(tǒng)的與外部視圖一致的細(xì)節(jié)。

自動程式設(shè)計自動程式設(shè)計是指在程式自動生成環(huán)境的支持下,利用電腦實現(xiàn)軟體的開發(fā)。它可以自動地或半自動地把用戶的非過程式問題規(guī)格說明轉(zhuǎn)換為某種高級語言程式:

演繹綜合手段:基於數(shù)學(xué)推理的構(gòu)造式證明。程式變換手段:將一程式轉(zhuǎn)換成另一功能等價的程式,並保持其正確性不變。實例推廣手段:從實例特徵出發(fā),將它推廣為待編程序的特徵,最後得到程式。

過程化手段:研究甚高級語言的編譯和知識的過程化。

專用語言專用語言是應(yīng)用領(lǐng)域的模型化語言。在原型開發(fā)中使用專用語言,可方便用戶和軟體開發(fā)者在計畫中的系統(tǒng)特性方面的交流。

軟體複用技術(shù)利用可複用的模組,做出適當(dāng)?shù)慕M合,就可得到快速構(gòu)造的原型系統(tǒng)。為了快速地構(gòu)造原型,這些模組首先必須有簡單而清晰的介面;其次它們應(yīng)當(dāng)儘量不依賴其他的模組或數(shù)據(jù)結(jié)構(gòu);第三,它們應(yīng)具有一些通用的功能。

簡化假設(shè)簡化假設(shè)是在開發(fā)過程中使設(shè)計者迅速得到一個簡化的系統(tǒng)所做的假設(shè)。儘管這些假設(shè)可能實際上並不能成立,但它們在原型開發(fā)過程中可以使開發(fā)者的注意力集中在一些主要的方面。

在修改一個檔時,可以假設(shè)這個檔確實存在在存取檔時,待存取的記錄總是存在一旦計畫中的系統(tǒng)滿足用戶所有的要求,就可以撤銷這些假設(shè),並追加一些細(xì)節(jié)。系統(tǒng)動態(tài)分析系統(tǒng)的需求規(guī)格說明通常是用自然語言來敘述的,但是用自然語言描述往往會出現(xiàn)歧義性。為了直觀地分析系統(tǒng)的動作,從特定的視點出發(fā)描述系統(tǒng)的行為,需要採用動態(tài)分析的方法。最常用的動態(tài)分析方法狀態(tài)遷移圖時序圖Petri網(wǎng)狀態(tài)遷移圖狀態(tài)遷移圖是描述系統(tǒng)的狀態(tài)如何相應(yīng)外部的信號進(jìn)行推移的一種圖形表示。

圓圈“○”表示可得到的系統(tǒng)狀態(tài)

箭頭“→”表示從一種狀態(tài)向另一種狀態(tài)的遷移。例如,當(dāng)有多個申請佔用CPU運行的進(jìn)程時,有關(guān)CPU分配的進(jìn)程的狀態(tài)遷移??傻玫降臓顟B(tài)=就緒,運行,等待生成的事件=t1,t2,

t3,

t4

t1─

中斷事件

t2─

中斷已處理

t3─

分配CPU

t4─

用完CPU時間狀態(tài)遷移圖的優(yōu)點狀態(tài)之間的關(guān)係能夠直觀地捕捉到由於狀態(tài)遷移圖的單純性,能夠機械地分析許多情況,可很容易地建立分析工具在系統(tǒng)分析中,用時序圖於對比在系統(tǒng)中處理事件的時序和相應(yīng)的處理時間。在右圖中,對於事件e,功能1~功能3

的處理時間總計為(T1

+T2+T3)其中功能間切換時間0。時序圖採用擴充時序圖可表示進(jìn)程間的通信流,用於分析幾個事件的交錯現(xiàn)象。,C1與C2,R1與R2是交錯的。因此,可以做如下分析:“必須設(shè)計成HOST1在等待C1的回答R1期間要能接收從HOST2發(fā)出的命令C2?!盤etri網(wǎng)

Petri網(wǎng)已廣泛地應(yīng)用於硬體與軟體系統(tǒng)的開發(fā)中,它適用於描述與分析相互獨立、協(xié)同操作的處理系統(tǒng),也就是併發(fā)執(zhí)行的處理系統(tǒng)。Petri網(wǎng)簡稱PNG(PetriNetGraph),它有兩種結(jié)點:位置(place):符號為“○”,它用來表示系統(tǒng)的狀態(tài)。轉(zhuǎn)移(transition):符號為“

”,它用來表示系統(tǒng)中的事件。

圖中的有向邊表示對轉(zhuǎn)移的輸入,或由轉(zhuǎn)移的輸出標(biāo)記,或稱令牌(token),是表明系統(tǒng)當(dāng)前處於什麼狀態(tài)的標(biāo)誌

處理兩個進(jìn)程的同步問題

數(shù)據(jù)及資料庫需求在數(shù)據(jù)詞典中,強調(diào)對數(shù)據(jù)存儲結(jié)構(gòu)的邏輯設(shè)計,並用數(shù)據(jù)結(jié)構(gòu)表達(dá)資料項目之間的邏輯關(guān)係。但任何一個軟體系統(tǒng)都可能有成千上萬個數(shù)據(jù)項,僅僅描述這些資料項目是不夠的,更重要的是如何把它們以最優(yōu)的方式組織起來,以滿足系統(tǒng)對數(shù)據(jù)的要求。有關(guān)資料庫的基本概念在軟體系統(tǒng)中需要處理的數(shù)據(jù)是現(xiàn)實世界中存在的事物及其聯(lián)繫的反映。人們通常將與數(shù)據(jù)處理有關(guān)的的領(lǐng)域分為三個世界:

現(xiàn)實世界資訊世界數(shù)據(jù)世界現(xiàn)實世界是存在於人們頭腦之外的客觀世界,現(xiàn)實世界中的事物可分成對象和性質(zhì)兩大類。對象可以是人、是物,還可以是實際的東西或概念的東西,例如,大學(xué)、城市等。對象還可以指事物與事物間的聯(lián)繫。性質(zhì)則是指事物的性質(zhì)或特徵。資訊世界也叫做觀念世界,是現(xiàn)實世界在人們頭腦中的反映??陀^世界中的事物在資訊世界中叫做實體,反映事物之間聯(lián)繫的叫做實體模型。實體是由若干屬性的屬性值組成。屬性是實體某一方面的特徵,相應(yīng)於事物的性質(zhì)。例如,一個學(xué)生實體是如下的一個5元組:(951149,袁秋慧,女,19,軟體)5元組中每一元素是學(xué)生的某一屬性的屬性值。他們對應(yīng)的屬性集合是:這些屬性集合表徵了“學(xué)生”實體的類型,叫做實體型。同一類型的實體的集合叫做實體集。數(shù)據(jù)世界則是資訊世界中資訊的數(shù)據(jù)化,現(xiàn)實世界中的事物及其聯(lián)繫在數(shù)據(jù)世界中用數(shù)據(jù)模型描述。(學(xué)號,姓名,性別,年齡,專業(yè))描述每一實體的數(shù)據(jù)稱為記錄,描述屬性的數(shù)據(jù)叫做資料項目或字段。與實體集相對應(yīng)的稱為檔。例如,學(xué)生檔就由多個記錄組成,這些記錄放在一起構(gòu)成一個二維表。表中每一橫排叫做一個記錄或元組,每一縱列叫做一個屬性。

記錄由資料項目組成,正如實體由若干屬性的屬性值組成一樣。一般資料項目沿用屬性名。用做屬性名時表示觀念資訊,用做資料項目名時表示數(shù)據(jù)資訊。每個資料項目包括兩個特徵:即數(shù)據(jù)類型和數(shù)據(jù)長度。若干同類型的記錄構(gòu)成檔。為了對檔中的記錄有效組織和存取,通常指定一個資料項目進(jìn)行區(qū)別,這個資料項目叫做關(guān)鍵字。E-R方法(Entity-RelationshipApproach)和實體模型在需求分析階段進(jìn)行資料庫邏輯設(shè)計過程中,使用E-R圖,可定義一個實體模型。實體模型是現(xiàn)實世界的純表示,它不涉及數(shù)據(jù)世界的數(shù)據(jù)結(jié)構(gòu)、存取路徑、存取效率等問題。因此,它可以轉(zhuǎn)換成數(shù)據(jù)庫中的數(shù)據(jù)模型。數(shù)據(jù)可以按相應(yīng)數(shù)據(jù)模型進(jìn)行組織。E-R圖中表示實體聯(lián)繫的符號如下:在E-R圖中,每個方框表示實體型或?qū)傩?,方框之間的連線表示實體之間,或?qū)嶓w與屬性之間的聯(lián)繫。出現(xiàn)在連線上的短豎線可以看成是“1”,而圓圈隱含表示“0”。例如,在教學(xué)管理中,一個教師可以教授零門、一門或多門課程,每位學(xué)生也需要學(xué)習(xí)幾門課程。因此,教學(xué)管理中涉及的對象(實體型)有學(xué)生、教師和課程。用E-R圖描述它們之間的聯(lián)繫,得下圖。其中,學(xué)生與課程是多對多的聯(lián)繫,而教師與課程的聯(lián)繫是零、一對多。進(jìn)一步,要確定屬性。例如,學(xué)生具有學(xué)號、姓名、性別、年齡、專業(yè)(其他略)等屬性;課程具有課程號、課程名、學(xué)分、學(xué)時數(shù)等屬性;教師具有職工號、姓名、年齡、職稱等屬性。此外,學(xué)生通過學(xué)號、分?jǐn)?shù)與課程發(fā)生聯(lián)繫。如此可得教學(xué)實體模型。教學(xué)實體模型數(shù)據(jù)結(jié)構(gòu)的規(guī)範(fàn)化資訊域分析需要確定數(shù)據(jù)的內(nèi)容,每個資料項目要用表格列出,最後組織成文件的邏輯結(jié)構(gòu),即面向應(yīng)用而不是面向存儲的結(jié)構(gòu)。為了便於資料庫的設(shè)計,常常要對這種結(jié)構(gòu)做一些簡化,其中最常見的一種方法就是規(guī)範(fàn)化技術(shù)?!耙?guī)範(fàn)化”將數(shù)據(jù)的邏輯結(jié)構(gòu)歸結(jié)為滿足一定條件的二維表(關(guān)係)。

表格中每個資訊項必須是一個不可分割的資料項目,不可是組項。

表格中每一列(列表示屬性)中所有資訊項必須是同一類型,各列的名字(屬性名)互異,列的次序任意。

表格中各行(行表示元組)互不相同,行的次序任意。不滿足上述要求的二維表或關(guān)係,叫做非規(guī)範(fàn)化關(guān)係。對於非規(guī)範(fàn)化的關(guān)係,必須將它規(guī)範(fàn)化,即利用更單純、更規(guī)則的關(guān)係來代替原來的關(guān)係。規(guī)範(fàn)化的目的是:

消除數(shù)據(jù)冗餘,即消除表格中數(shù)據(jù)的重複;消除多義性,使關(guān)係中的屬性含義清楚、單一;使關(guān)係的“概念”單一化,讓每個資料項目只是一個簡單的數(shù)或字串,而不是一個組項或重複組;方便操作。使數(shù)據(jù)的插入、刪除與修改操作可行並方便;使關(guān)係模式更靈活,易於實現(xiàn)接近自然語言的查詢方式。用教學(xué)管理例說明如何規(guī)範(fàn)化有三個實體型,即課程、學(xué)生和教師,用三個關(guān)係保存它們的資訊:

學(xué)生(學(xué)號,姓名,性別,年齡,專業(yè),籍貫)

教師(職工號,姓名,年齡,職稱,工資級別,工資)

課程(課程號,課程名,學(xué)分,學(xué)時,課程類型)為表示實體型之間的聯(lián)繫,又建立兩個關(guān)係:

選課

(學(xué)號,課程號,聽課出勤率,作業(yè)完成率,分?jǐn)?shù))

教課

(職工號,課程號)這五個關(guān)係,組成了資料庫的模型。在每個關(guān)係中,屬性名下加下劃線)指明關(guān)鍵字。並規(guī)定關(guān)鍵字能唯一地標(biāo)識一個元組。關(guān)係規(guī)範(fàn)化的程度,通常按屬性間的依賴程度來區(qū)分,並以範(fàn)式NF(NormalForm)來表達(dá)。常用的範(fàn)式分為第一範(fàn)式(1NF)、第二範(fàn)式(2NF)和第三範(fàn)式(3NF)。設(shè)R是一個關(guān)係,X和Y是R中的兩個屬性。若對於X的任一個值,Y僅有一個值與之對應(yīng),則稱R的屬性Y函數(shù)依賴於屬性X。例如,教師(職工號,姓名,年齡,)其中,屬性“姓名”,“年齡”等都函數(shù)依賴於屬性“職工號”。屬性X可以是複合屬性,如:選課(學(xué)號,課程號,聽課出勤率,)如果屬性Y函數(shù)依賴於複合屬性X,而不與X的任何真子集函數(shù)依賴,則稱屬性Y完全函數(shù)依賴於複合屬性X。例如在“選課”關(guān)係中,屬性“聽課出勤率”、“作業(yè)完成率”和“分?jǐn)?shù)”等表示某個學(xué)生學(xué)習(xí)某門課程時的學(xué)習(xí)情況。只有同時指定“學(xué)號”和“課程號”,才能準(zhǔn)確地說明是哪位學(xué)生學(xué)習(xí)哪門課程時的學(xué)習(xí)情況。因此,“分?jǐn)?shù)”等屬性完全函數(shù)依賴於“學(xué)號,課程號”。判斷規(guī)範(fàn)化程度的條件是:

關(guān)係中所有屬性都是“單純域”,即不出現(xiàn)“表中有表”

非主屬性完全函數(shù)依賴於關(guān)鍵字

非主屬性相互獨立,即任何非主屬性間不存在函數(shù)依賴。如果一個關(guān)係連條件

都不滿足,則這個關(guān)係是非規(guī)範(fàn)化的。如果一個關(guān)係僅滿足條件

,則這個關(guān)係滿足第一範(fàn)式(1NF)。如果一個關(guān)係滿足條件

,但不滿足

,則這個關(guān)係滿足第二範(fàn)式(2NF)。如果一個關(guān)係同時滿足條件

,則這個關(guān)係表滿足第三範(fàn)式(3NF)。當(dāng)數(shù)據(jù)模型達(dá)到3NF,一般情況下就能滿足資料庫應(yīng)用的需要。資料庫分析的過程在需求分析階段進(jìn)行資料庫分析的流程為開發(fā)一個系統(tǒng)所使用的資料庫,在開始分析資料庫的需求前,分析員必須瞭解該系統(tǒng)的總目標(biāo)和範(fàn)圍。然後建立一個完整並高度細(xì)化的資訊模型。此信息模型應(yīng)包括一個綜合的數(shù)據(jù)詞典,定義所有在開發(fā)資料庫時用到的資料項目。接著資料庫分析定義資料庫的邏輯特性和物理特性。以資訊模型和系統(tǒng)規(guī)格說明為指導(dǎo),定義資料庫的邏輯數(shù)據(jù)結(jié)構(gòu)。這種邏輯結(jié)構(gòu)必須適應(yīng)數(shù)據(jù)存取、修改、關(guān)聯(lián)性及其它相關(guān)需求。一旦邏輯數(shù)據(jù)結(jié)構(gòu)建立起來,就可以研製資料庫的物理結(jié)構(gòu)。物理資料庫結(jié)構(gòu)定義檔結(jié)構(gòu)、記錄格式、與硬體相關(guān)的處理方式以及資料庫管理系統(tǒng)的特性。最後,要對模式和物理特性進(jìn)行完全的評審。在資料庫分析過程中所考慮的因素間存在著複雜的相互聯(lián)繫。改變其中的任何一個因素都會(潛在地)影響其他的因素。所以必須在各個因素之間進(jìn)行折衷。這種折衷包括專用性和通用性的折衷,資訊關(guān)聯(lián)程度、擴充潛力及操作特性等方面的折衷。考慮資訊關(guān)聯(lián)程度和擴充潛力(包括資訊規(guī)模和資訊內(nèi)容兩方面)主要基於需求分析和設(shè)計階段分派給資料庫的專用性程度。專用的資料庫要為系統(tǒng)特定的資訊需求服務(wù),因此資訊結(jié)構(gòu)要設(shè)計得能適應(yīng)要求的關(guān)聯(lián)性和預(yù)計的擴充。通用的資料庫可以適應(yīng)更為廣泛的各種資訊需求,但是為了獲得通用性要付出代價。軟體設(shè)計的目標(biāo)和任務(wù)根據(jù)用資訊域表示的軟體需求,以及功能和性能需求,進(jìn)行數(shù)據(jù)設(shè)計系統(tǒng)結(jié)構(gòu)設(shè)計過程設(shè)計。數(shù)據(jù)設(shè)計側(cè)重於數(shù)據(jù)結(jié)構(gòu)的定義。系統(tǒng)結(jié)構(gòu)設(shè)計定義軟體系統(tǒng)各主要成份之間的關(guān)係。過程設(shè)計則是把結(jié)構(gòu)成份轉(zhuǎn)換成軟體的過程性描述。在編碼步驟,根據(jù)這種過程性描述,生成根源程式代碼,然後通過測試最終得到完整有效的軟體。開發(fā)階段的資訊流程式模組測試編碼設(shè)計資訊域需求功能與性能需求數(shù)據(jù)設(shè)計過程設(shè)計系統(tǒng)結(jié)構(gòu)設(shè)計組裝好的有效的軟體軟體設(shè)計是後續(xù)開發(fā)步驟及軟體維護(hù)工作的基礎(chǔ)。如果沒有設(shè)計,只能建立一個不穩(wěn)定的系統(tǒng)結(jié)構(gòu)軟體設(shè)計任務(wù)從工程管理的角度來看,軟體設(shè)計分兩步完成。

概要設(shè)計,將軟體需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟體的系統(tǒng)結(jié)構(gòu)。

詳細(xì)設(shè)計,即過程設(shè)計。通過對結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟體的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和演算法。軟體設(shè)計過程1.制定規(guī)範(fàn)在進(jìn)入軟體開發(fā)階段之初,首先應(yīng)為軟體開發(fā)組制定在設(shè)計時應(yīng)該共同遵守的標(biāo)準(zhǔn),以便協(xié)調(diào)組內(nèi)各成員的工作。包括:

閱讀和理解軟體需求說明書,確認(rèn)用戶要求能否實現(xiàn),明確實現(xiàn)的條件,從而確定設(shè)計的目標(biāo),以及它們的優(yōu)先順序根據(jù)目標(biāo)確定最合適的設(shè)計方法規(guī)定設(shè)計文檔的編制標(biāo)準(zhǔn)規(guī)定編碼的資訊形式,與硬體,操作系統(tǒng)的介面規(guī)約,命名規(guī)則2.軟體系統(tǒng)結(jié)構(gòu)的總體設(shè)計基於功能層次結(jié)構(gòu)建立系統(tǒng)。採用某種設(shè)計方法,將系統(tǒng)按功能劃分成模組的層次結(jié)構(gòu)確定每個模組的功能建立與已確定的軟體需求的對應(yīng)關(guān)係確定模組間的調(diào)用關(guān)係確定模組間的介面評估模組劃分的品質(zhì)3.處理方式設(shè)計確定為實現(xiàn)系統(tǒng)的功能需求所必需的演算法,評估演算法的性能確定為滿足系統(tǒng)的性能需求所必需的演算法和模組間的控制方式

周轉(zhuǎn)時間回應(yīng)時間吞吐量精度確定外部信號的接收發(fā)送形式4.數(shù)據(jù)結(jié)構(gòu)設(shè)計確定軟體涉及的檔系統(tǒng)的結(jié)構(gòu)以及資料庫的模式、子模式,進(jìn)行數(shù)據(jù)完整性和安全性的設(shè)計確定輸入,輸出檔的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)結(jié)合演算法設(shè)計,確定演算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作確定對邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程式模組(軟體包)限制和確定各個數(shù)據(jù)設(shè)計決策的影響範(fàn)圍若需要與操作系統(tǒng)或調(diào)度程式介面所必須的控制表等數(shù)據(jù)時,確定其詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則數(shù)據(jù)的保護(hù)性設(shè)計

防衛(wèi)性設(shè)計:在軟體設(shè)計中就插入自動檢錯,報錯和糾錯的功能

一致性設(shè)計:保證軟體運行過程中所使用的數(shù)據(jù)的類型和取值範(fàn)圍不變在併發(fā)處理過程中使用封鎖和解除封鎖機制保持?jǐn)?shù)據(jù)不被破壞冗餘性設(shè)計:針對同一問題,由兩個開發(fā)者採用不同的程式設(shè)計風(fēng)格不同的演算法設(shè)計軟體,當(dāng)兩者運行結(jié)果之差不在允許範(fàn)圍內(nèi)時,利用檢錯系統(tǒng)予以糾正,或使用表決技術(shù)決定一個正確結(jié)果。

5.可靠性設(shè)計可靠性設(shè)計也叫做品質(zhì)設(shè)計在運行過程中,為了適應(yīng)環(huán)境的變化和用戶新的要求,需經(jīng)常對軟體進(jìn)行改造和修正。在軟體開發(fā)的一開始就要確定軟體可靠性和其他品質(zhì)指標(biāo),考慮相應(yīng)措施,以使得軟體易於修改和易於維護(hù)。6.編寫概要設(shè)計階段的文檔概要設(shè)計階段完成時應(yīng)編寫以下文檔:

概要設(shè)計說明書資料庫設(shè)計說明書用戶手冊制定初步的測試計畫7.概要設(shè)計評審可追溯性:確認(rèn)該設(shè)計是否複蓋了所有已確定的軟體需求,軟體每一成份是否可追溯到某一項需求介面:確認(rèn)該軟體的內(nèi)部介面與外部介面是否已經(jīng)明確定義。模組是否滿足高內(nèi)聚和低耦合的要求。模組作用範(fàn)圍是否在其控制範(fàn)圍之內(nèi)風(fēng)險:確認(rèn)該設(shè)計在現(xiàn)有技術(shù)條件下和預(yù)算範(fàn)圍內(nèi)是否能按時實現(xiàn)

實用性:確認(rèn)該設(shè)計對於需求的解決方案是否實用技術(shù)清晰度:確認(rèn)該設(shè)計是否以一種易於翻譯成代碼的形式表達(dá)可維護(hù)性:確認(rèn)該設(shè)計是否考慮了方便未來的維護(hù)品質(zhì):確認(rèn)該設(shè)計是否表現(xiàn)出良好的品質(zhì)特徵各種選擇方案:看是否考慮過其他方案,比較各種選擇方案的標(biāo)準(zhǔn)是什麼限制:評估對該軟體的限制是否現(xiàn)實,是否與需求一致其他具體問題:對於文檔、可測試性、設(shè)計過程..等進(jìn)行評估在詳細(xì)設(shè)計過程中,需要完成的工作是:確定軟體各個組成部分內(nèi)的演算法以及各部分的內(nèi)部數(shù)據(jù)組織選定某種過程的表達(dá)形式來描述各種演算法。進(jìn)行詳細(xì)設(shè)計的評審詳細(xì)設(shè)計軟體設(shè)計基礎(chǔ)

自頂向下,逐步細(xì)化

軟體結(jié)構(gòu)

程式結(jié)構(gòu)

結(jié)構(gòu)圖

模組化

抽象化

資訊隱蔽自頂向下,逐步細(xì)化將軟體的體系結(jié)構(gòu)按自頂向下方式,對各個層次的過程細(xì)節(jié)和數(shù)據(jù)細(xì)節(jié)逐層細(xì)化,直到用程式設(shè)計語言的語句能夠?qū)崿F(xiàn)為止,從而最後確立整個的體系結(jié)構(gòu)。軟體結(jié)構(gòu)軟體結(jié)構(gòu)包括兩部分。程式的模組結(jié)構(gòu)和數(shù)據(jù)的結(jié)構(gòu)軟體的體系結(jié)構(gòu)通過一個劃分過程來完成。該劃分過程從需求分析確立的目標(biāo)系統(tǒng)的模型出發(fā),對整個問題進(jìn)行分割,使其每個部分用一個或幾個軟體成份加以解決,整個問題就解決了程式結(jié)構(gòu)程式結(jié)構(gòu)表明了程式各個部件(模組)的組織情況,是軟體的過程表示。

結(jié)構(gòu)圖結(jié)構(gòu)圖反映程式中模組之間的層次調(diào)用關(guān)係和聯(lián)繫:它以特定的符號表示模組、模組間的調(diào)用關(guān)係和模組間資訊的傳遞①

模組:模組用矩形框表示,並用模組的名字標(biāo)記它。②

模組的調(diào)用關(guān)係和介面:模組之間用單向箭頭聯(lián)結(jié),箭頭從調(diào)用模組指向被調(diào)用模組。③

模組間的資訊傳遞:當(dāng)一個模組調(diào)用另一個模組時,調(diào)用模組把數(shù)據(jù)或控制資訊傳送給被調(diào)用模組,以使被調(diào)用模組能夠運行。而被調(diào)用模組在執(zhí)行過程中又把它產(chǎn)生的數(shù)據(jù)或控制資訊回送給調(diào)用模組④

在模組A的箭頭尾部標(biāo)以一個菱形符號,表示模組A有條件地調(diào)用另一個模組B。當(dāng)一個在調(diào)用箭頭尾部標(biāo)以一個弧形符號,表示模組A反復(fù)調(diào)用模組C和模組D。程式的系統(tǒng)結(jié)構(gòu)圖模組化軟體系統(tǒng)的模組化是指整個軟體被劃分成若干單獨命名和可編址的部分,稱之為模組。這些模組可以被組裝起來以滿足整個問題的需求。把問題/子問題的分解與軟體開發(fā)中的系統(tǒng)/子系統(tǒng)或系統(tǒng)/模組對應(yīng)起來,就能夠把一個大而複雜的軟體系統(tǒng)劃分成易於理解的比較單純的模組結(jié)構(gòu)。抽象化軟體系統(tǒng)進(jìn)行模組設(shè)計時,可有不同的抽象層次。在最高的抽象層次上,可以使用問題所處環(huán)境的語言概括地描述問題的解法。在較低的抽象層次上,則採用過程化的方法。(1)過程的抽象

在軟體工程中,從系統(tǒng)定義到實現(xiàn),每進(jìn)展一步都可以看做是對軟體解決方法的抽象化過程的一次細(xì)化。

在軟體需求分析階段,用“問題所處環(huán)境的為大家所熟悉的術(shù)語”來描述軟體的解決方法。

在從概要設(shè)計到詳細(xì)設(shè)計的過程中,抽象化的層次逐次降低。當(dāng)產(chǎn)生根源程式時到達(dá)最低抽象層次。例:開發(fā)一個CAD軟體的三層抽象抽象層次Ⅰ.

用問題所處環(huán)境的術(shù)語來描述這個軟體:

該軟件包括一個計算機繪圖界面,向繪圖員顯示圖形,以及一個數(shù)字化儀界面,用以代替繪圖板和丁字尺。所有直線、折線、矩形、圓及曲線的描畫、所有的幾何計算、所有的剖面圖和輔助視圖都可以用這個CAD軟體實現(xiàn)……。抽象層次Ⅱ.

任務(wù)需求的描述。

CADSOFTWARETASKS

userinteractiontask;

2-Ddrawingcreationtask;graphicsdisplaytask;

drawingfilemanagementtask;

end.

在這個抽象層次上,未給出“怎樣做”的信息,不能直接實現(xiàn)。抽象層次Ⅲ.

程式過程表示。以2-D(二維)繪圖生成任務(wù)為例:

PROCEDURE:2-Ddrawingcreation

REPEATUNTIL(drawingcreationtaskterminates)

DOWHILE(digitizerinteractionoccurs)digitizerinterfacetask;

DETERMINEdrawingrequestCASE;

line:linedrawingtask;

rectangle:rectangledrawingtask;

circle:circledrawingtask;

……(2)數(shù)據(jù)抽象

在不同層次上描述數(shù)據(jù)對象的細(xì)節(jié),定義與該數(shù)據(jù)對象相關(guān)的操作。

例如,在CAD軟體中,定義一個叫做drawing的數(shù)據(jù)對象??蓪rawing規(guī)定為一個抽象數(shù)據(jù)類型,定義它的內(nèi)部細(xì)節(jié)為:

TYPEdrawingISSTRUCTUREDEFIND

numberISSTRINGLENGTH(12);

geometryDEFIND……

notesISSTRINGLENGTH(256);

BOMDEFIND

ENDdrawingTYPE;數(shù)據(jù)抽象drawing本身由另外一些數(shù)據(jù)抽象,如geometry、BOM(billofmaterials)構(gòu)成定義drawing的抽象數(shù)據(jù)類型之後,可引用它來定義其他數(shù)據(jù)對象,而不必涉及drawing的內(nèi)部細(xì)節(jié)例如,定義:

blue-printISINSTANCEOFdrawing;

schematicISINSTANCEOFdrawing;

資訊隱蔽由parnas方法提倡的資訊隱蔽是指,每個模組的實現(xiàn)細(xì)節(jié)對於其他模組來說是隱蔽的。也就是說,模組中所包含的資訊(包括數(shù)據(jù)和過程)不允許其他不需要這些資訊的模組使用。模組的獨立性模組(Module) “模組”,又稱“組件”。它一般具有如下三個基本屬性:功能:描述該模組實現(xiàn)什麼功能邏輯:描述模組內(nèi)部怎麼做狀態(tài):該模組使用時的環(huán)境和條件在描述一個模組時,還必須按模組的外部特性與內(nèi)部特性分別描述模組的外部特性模組的模組名、參數(shù)表、其中的輸入?yún)?shù)和輸出參數(shù),以及給程式以至整個系統(tǒng)造成的影響模組的內(nèi)部特性完成其功能的程式代碼和僅供該模組內(nèi)部使用的數(shù)據(jù)模組獨立性模組獨立性,是指軟體系統(tǒng)中每個模組只涉及軟體要求的具體的子功能,而和軟體系統(tǒng)中其他的模組的介面是簡單的例如,若一個模組只具有單一的功能且與其它模組沒有太多的聯(lián)繫,則稱此模組具有模組獨立性一般採用兩個準(zhǔn)則度量模組獨立性。即模組間耦合和模組內(nèi)聚

耦合是模組之間的互相連接的緊密程度的度量。

內(nèi)聚是模組功能強度(一個模組內(nèi)部各個元素彼此結(jié)合的緊密程度)的度量。模組獨立性比較強的模組應(yīng)是高內(nèi)聚低耦合的模組。模組間的耦合

非直接耦合(NondirectCoupling)

兩個模組之間沒有直接關(guān)係,它們之間的聯(lián)繫完全是通過主模組的控制和調(diào)用來實現(xiàn)的。非直接耦合的模組獨立性最強。數(shù)據(jù)耦合(DataCoupling)

一個模組訪問另一個模組時,彼此之間是通過簡單數(shù)據(jù)參數(shù)

(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變數(shù))來交換輸入、輸出資訊的。標(biāo)記耦合(StampCoupling)

一組模組通過參數(shù)表傳遞記錄資訊,就是標(biāo)記耦合。這個記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡單變數(shù)??刂岂詈?ControlCoupling)

如果一個模塊通過傳送開關(guān)、標(biāo)誌、名字等控制資訊,明顯地控制選擇另一模組的功能,就是控制耦合。外部耦合(ExternalCoupling)

一組模組都訪問同一全局簡單變數(shù)而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變數(shù)的資訊,則稱之為外部耦合。公共耦合(CommonCoupling)

若一組模組都訪問同一個公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共用的通信區(qū)、記憶體的公共覆蓋區(qū)等。公共耦合的複雜程度隨耦合模組的個數(shù)增加而顯著增加。若只是兩模組間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。鬆散公共耦合和緊密公共耦合。內(nèi)容耦合(ContentCoupling)

如果發(fā)生下列情形,兩個模組之間就發(fā)生了內(nèi)容耦合

(1)一個模組直接訪問另一個模組的內(nèi)部數(shù)據(jù);

(2)一個模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部;

(3)兩個模塊有一部分程序代碼重迭(只可能出現(xiàn)在組合語言中);

(4)一個模塊有多個入口。

c

模組內(nèi)聚功能內(nèi)聚

(FunctionalCohesion)

一個模組中各個部分都是完成某一具體功能必不可少的組成部分,或者說該模組中所有部分都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)繫,不可分割的。則稱該模組為功能內(nèi)聚模組。資訊內(nèi)聚

(InformationalCohesion)

這種模組完成多個功能,各個功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項功能有一個唯一的入口點。這個模組將根據(jù)不同的要求,確定該執(zhí)行哪一個功能。由於這個模組的所有功能都是基於同一個數(shù)據(jù)結(jié)構(gòu)(符號表),因此,它是一個資訊內(nèi)聚的模組。資訊內(nèi)聚模組可以看成是多個功能內(nèi)聚模組的組合,並且達(dá)到資訊的隱蔽。即把某個數(shù)據(jù)結(jié)構(gòu)、資源或設(shè)備隱蔽在一個模組內(nèi),不為別的模組所知曉。通信內(nèi)聚

(CommunicationCohesion)

如果一個模組內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模組。通常,通信內(nèi)聚模組是通過數(shù)據(jù)流圖來定義的。過程內(nèi)聚(ProceduralCohesion)

使用流程圖做為工具設(shè)計程式時,把流程圖中的某一部分劃出組成模組,就得到過程內(nèi)聚模組。例如,把流程圖中的迴圈部分、判定部分、計算部分分成三個模組,這三個模組都是過程內(nèi)聚模組。時間內(nèi)聚(ClassicalCohesion)

時間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模組大多為多功能模組,但模組的各個功能的執(zhí)行與時間有關(guān),通常要求所有功能必須在同一時間段內(nèi)執(zhí)行。例如初始化模組和終止模組。邏輯內(nèi)聚(LogicalCohesion)

這種模組把幾種相關(guān)的功能組合在一起,每次被調(diào)用時,由傳送給模組的判定參數(shù)來確定該模組應(yīng)執(zhí)行哪一種功能。巧合內(nèi)聚(CoincidentalCohesion)

巧合內(nèi)聚(偶然內(nèi)聚)。當(dāng)模組內(nèi)各部分之間沒有聯(lián)繫,或者即使有聯(lián)繫,這種聯(lián)系也很鬆散,則稱這種模塊為巧合內(nèi)聚模組,它是內(nèi)聚程度最低的模組。結(jié)構(gòu)化設(shè)計方法首先研究、分析和審查數(shù)據(jù)流圖。從軟體的需求規(guī)格說明中弄清數(shù)據(jù)流加工的過程,對於發(fā)現(xiàn)的問題及時解決。然後根據(jù)數(shù)據(jù)流圖決定問題的類型。數(shù)據(jù)處理問題典型的類型有兩種:變換型和事務(wù)型。針對兩種不同的類型分別進(jìn)行分析處理。

由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。利用一些啟發(fā)式原則來改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。修改和補充數(shù)據(jù)詞典。制定測試計畫。

在系統(tǒng)結(jié)構(gòu)圖中的模組傳入模組─從下屬模組取得數(shù)據(jù),經(jīng)過某些處理,再將其傳送給上級模組。它傳送的數(shù)據(jù)流叫做邏輯輸入數(shù)據(jù)流。傳出模組─從上級模組獲得數(shù)據(jù),進(jìn)行某些處理,再將其傳送給下屬模組。它傳送的數(shù)據(jù)流叫做邏輯輸出數(shù)據(jù)流。變換模組─它從上級模組取得數(shù)據(jù),進(jìn)行特定的處理,轉(zhuǎn)換成其他形式,再傳送回上級模組。它加工的數(shù)據(jù)流叫做變換數(shù)據(jù)流。協(xié)調(diào)模組─對所有下屬模組進(jìn)行協(xié)調(diào)和管理的模組。變換型系統(tǒng)結(jié)構(gòu)圖變換型數(shù)據(jù)處理問題的工作過程大致分為三步,即取得數(shù)據(jù),變換數(shù)據(jù)和給出數(shù)據(jù)。相應(yīng)於取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換型系統(tǒng)結(jié)構(gòu)圖由輸入、中心變換和輸出等三部分組成。事務(wù)型系統(tǒng)結(jié)構(gòu)圖它接受一項事務(wù),根據(jù)事務(wù)處理的特點和性質(zhì),選擇分派一個適當(dāng)?shù)奶幚韱卧?,然後給出結(jié)果。在事務(wù)型系統(tǒng)結(jié)構(gòu)圖中,事務(wù)中心模組按所接受的事務(wù)的類型,選擇某一事務(wù)處理模組執(zhí)行。各事務(wù)處理模組並列。每個事務(wù)處理模組可能要調(diào)用若干個操作模組,而操作模組又可能調(diào)用若干個細(xì)節(jié)模組。變換分析變換分析方法由以下四步組成:重畫數(shù)據(jù)流圖;區(qū)分有效(邏輯)輸入、有效(邏輯)輸出和中心變換部分;進(jìn)行一級分解,設(shè)計上層模組;進(jìn)行二級分解,設(shè)計輸入、輸出和中心變換部分的中、下層模組。①

在選擇模組設(shè)計的次序時,必須對一個模組的全部直接下屬模組都設(shè)計完成之後,才能轉(zhuǎn)向另一個模組的下層模塊的設(shè)計。②

在設(shè)計下層模組時,應(yīng)考慮模組的耦合和內(nèi)聚問題,以提高初始結(jié)構(gòu)圖的品質(zhì)。③使用“黑箱”技術(shù):在設(shè)計當(dāng)前模組時,先把這個模組的所有下層模組定義成“黑箱”,在設(shè)計中利用它們時,暫時不考慮其內(nèi)部結(jié)構(gòu)和實現(xiàn)。在這一步定義好的“黑箱”,在下一步就可以對它們進(jìn)行設(shè)計和加工。這樣,又會導(dǎo)致更多的“黑箱”。最後,全部“黑箱”的內(nèi)容和結(jié)構(gòu)應(yīng)完全被確定。④

在模組劃分時,一個模組的直接下屬模組一般在5個左右。如果直接下屬模組超過10個,可設(shè)立中間層次。⑤如果出現(xiàn)了以下情況,就停止模組的功能分解:

當(dāng)模組不能再細(xì)分為明顯的子任務(wù)時;

當(dāng)分解成用戶提供的模組或程式庫的副程式時;

當(dāng)模組的介面是輸入/輸出設(shè)備傳送的資訊時;

當(dāng)模組不宜再分解得過小時。

事務(wù)分析在很多軟體應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能。這種數(shù)據(jù)流就叫做事務(wù)。與變換分析一樣,事務(wù)分析也是從分析數(shù)據(jù)流圖開始,自頂向下,逐步分解,建立系統(tǒng)到結(jié)構(gòu)圖。

事務(wù)分析過程①

識別事務(wù)源

利用數(shù)據(jù)流圖和數(shù)據(jù)詞典,從問題定義和需求分析的結(jié)果中,找出各種需要處理的事務(wù)。通常,事務(wù)來自物理輸入裝置。有時,設(shè)計人員還必須區(qū)別系統(tǒng)的輸入、中心加工和輸出中產(chǎn)生的事務(wù)。②

規(guī)定適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)

在確定了該數(shù)據(jù)流圖具有事務(wù)型特徵之後,根據(jù)模組劃分理論,建立適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)。③

識別各種事務(wù)和它們定義的操作。

從問題定義和需求分析中找出的事務(wù)及其操作所必需的全部資訊,對於系統(tǒng)內(nèi)部產(chǎn)生的事務(wù),必須仔細(xì)地定義它們的操作。④

注意利用公用模組

在事務(wù)分析的過程中,如果不同事務(wù)的一些中間模組可由具有類似的語法和語義的若干個低層模組組成,則可以把這些低層模組構(gòu)造成公用模組。⑤

對每一事務(wù),或?qū)β?lián)系密切的一組事務(wù),建立一個事務(wù)處理模組;

如果發(fā)現(xiàn)在系統(tǒng)中有類似的事務(wù),可以把它們組成一個事務(wù)處理模組。⑥

對事務(wù)處理模組規(guī)定它們?nèi)康南聦硬僮髂=M⑦對操作模組規(guī)定它們的全部細(xì)節(jié)模組

變換分析是軟體系統(tǒng)結(jié)構(gòu)設(shè)計的主要方法。一般,一個大型的軟體系統(tǒng)是變換型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu)。所以,我們通常利用以變換分析為主,事務(wù)分析為輔的方式進(jìn)行軟體結(jié)構(gòu)設(shè)計。

軟體模組結(jié)構(gòu)的改進(jìn)模組功能的完善化

一個完整的模組應(yīng)當(dāng)有以下幾部分:

①執(zhí)行規(guī)定的功能的部分;

②出錯處理的部分。當(dāng)模組不能完成規(guī)定的功能時,必須回送出錯標(biāo)誌,出現(xiàn)例外情況的原因。

③如果需要返回數(shù)據(jù)給它的調(diào)用者,在完成數(shù)據(jù)加工或結(jié)束時,應(yīng)當(dāng)給它的調(diào)用者返回一個狀態(tài)碼。

消除重複功能,改善軟體結(jié)構(gòu)

完全相似:在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類型上不一致。此時可以採取完全合併的方法。

②局部相似:找出其相同部分,分離出去,重新定義成一個獨立的下一層模組。還可以與它的上級模組合併。模組的作用範(fàn)圍應(yīng)在控制範(fàn)圍之內(nèi)

模組的控制範(fàn)圍包括它本身及其所有的從屬模組。模組的作用範(fàn)圍是指模組內(nèi)一個判定的作用範(fàn)圍,凡是受這個判定影響的所有模組都屬於這個判定的作用範(fàn)圍。如果一個判定的作用範(fàn)圍包含在這個判定所在模組的控制範(fàn)圍之內(nèi),則這種結(jié)構(gòu)是簡單的,否則,它的結(jié)構(gòu)是不簡單的。

盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。

如果一個模塊的扇出數(shù)過大,就意味著該模塊過分復(fù)雜,需要協(xié)調(diào)和控制過多的下屬模塊。應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊。

避免或減少使用病態(tài)聯(lián)接

應(yīng)限制使用如下三種病態(tài)聯(lián)接:

直接病態(tài)聯(lián)接即模組A直接從模組B內(nèi)部取出某些數(shù)據(jù),或者把某些數(shù)據(jù)直接送到模組B內(nèi)部。

公共數(shù)據(jù)域病態(tài)聯(lián)接模組A和模組B通過公共數(shù)據(jù)域,直接傳送或接受數(shù)據(jù),而不是通過它們的上級模組。這種方式將使得模組間的耦合程度劇增。它不僅影響模組A和模組B,而且影響與公共數(shù)據(jù)域有關(guān)聯(lián)的所有模組。③

通信模組聯(lián)接即模組A和模組B通過通信模組TABLEIT傳送數(shù)據(jù)。從表面看,這不是病態(tài)聯(lián)接,因為模組A和模組B都未涉及通信模組TABLEIT的內(nèi)部。然而,它們之間的通信(即數(shù)據(jù)傳送)沒有通過它們的上級模組。從這個意義上講,這種聯(lián)接是病態(tài)的。模組的大小要適中

模組的大小,可以用模組中所含語句的數(shù)量的多少來衡量。把模組的大小限制在一定的範(fàn)圍之內(nèi)。通常規(guī)定其語句行數(shù)在50~100左右,保持在一頁紙之內(nèi),最多不超過500行。設(shè)計功能可預(yù)測的模組,但要避免過分受限制的模組一個功能可預(yù)測的模組,不論內(nèi)部處理細(xì)節(jié)如何,但對相同的輸入數(shù)據(jù),總能產(chǎn)生同樣的結(jié)果。但是,如果模組內(nèi)部蘊藏有一些特殊的鮮為人知的功能時,這個模組就可能是不可預(yù)測的。對於這種模組,如果調(diào)用者不小心使用,其結(jié)果將不可預(yù)測。

如果一個模組的局部數(shù)據(jù)結(jié)構(gòu)的大小、控制流的選擇或者與外界(人、硬軟體)的介面模式被限制死了,則很難適應(yīng)用戶新的要求或環(huán)境的變更。為了能夠適應(yīng)將來的變更,軟體模組中局部數(shù)據(jù)結(jié)構(gòu)的大小應(yīng)當(dāng)是可控制的,控制流的選擇對於調(diào)用者來說,應(yīng)當(dāng)是可預(yù)測的。而與外界的介面應(yīng)當(dāng)是靈活的。

軟體包應(yīng)滿足設(shè)計約束和可移植性

為了使得軟體包可以在某些特定的環(huán)境下能夠安裝和運行,對軟體包提出了一些設(shè)計約束和可移植的要求。例如,設(shè)計約束有時要求一個程式段在記憶體中覆蓋自身。當(dāng)這種情況出現(xiàn)時,設(shè)計出來的軟體程式結(jié)構(gòu)不得不根據(jù)重複程度、訪問頻率、調(diào)用間隔等等特性,重新加以組織。設(shè)計的後處理為每一個模組寫一份處理說明為每一個模組提供一份介面說明確定全局?jǐn)?shù)據(jù)結(jié)構(gòu)和局部數(shù)據(jù)結(jié)構(gòu)指出所有的設(shè)計約束和限制進(jìn)行概要設(shè)計的評審進(jìn)行設(shè)計的優(yōu)化(如果需要和可能的話)數(shù)據(jù)設(shè)計及檔設(shè)計數(shù)據(jù)設(shè)計的原則檔設(shè)計數(shù)據(jù)設(shè)計的原則R.S.Pressman數(shù)據(jù)設(shè)計的過程

為在需求分析階段所確定的數(shù)據(jù)對象選擇邏輯表示,需要對不同結(jié)構(gòu)進(jìn)行演算法分析,以便選擇一個最有效的結(jié)構(gòu);設(shè)計對於這種邏輯數(shù)據(jù)結(jié)構(gòu)的一組操作,以實現(xiàn)各種所期望的運算。

確定對邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程式模組(軟體包),以便限制或確定各個數(shù)據(jù)設(shè)計決策的影響範(fàn)圍。Pressman提出了一組原則,用來定義和設(shè)計數(shù)據(jù)。實際上,在進(jìn)行需求分析時往往就開始了數(shù)據(jù)設(shè)計。1.用於軟體的系統(tǒng)化方法也適用於數(shù)據(jù)。在導(dǎo)出、評審和定義軟體的需求和軟體系統(tǒng)結(jié)構(gòu)時,必須定義和評審其中所用到的數(shù)據(jù)流、數(shù)據(jù)對象及數(shù)據(jù)結(jié)構(gòu)的表示。應(yīng)當(dāng)考慮幾種不同的數(shù)據(jù)組織方案,還應(yīng)當(dāng)分析數(shù)據(jù)設(shè)計給軟體設(shè)計帶來的影響。2.確定所有的數(shù)據(jù)結(jié)構(gòu)和在每種數(shù)據(jù)結(jié)構(gòu)上施加的操作。設(shè)計有效的數(shù)據(jù)結(jié)構(gòu),必須考慮到要對該數(shù)據(jù)結(jié)構(gòu)進(jìn)行的各種操作。3.應(yīng)當(dāng)建立一個數(shù)據(jù)詞典並用它來定義數(shù)據(jù)和軟體的設(shè)計。數(shù)據(jù)詞典清楚地說明了各個數(shù)據(jù)之間的關(guān)係和對數(shù)據(jù)結(jié)構(gòu)內(nèi)各個數(shù)據(jù)元素的約束。

4.低層數(shù)據(jù)設(shè)計的決策應(yīng)推遲到設(shè)計過程的後期進(jìn)行。在進(jìn)行需求分析時確定的總體數(shù)據(jù)組織,應(yīng)在概要設(shè)計階段加以細(xì)化,在詳細(xì)設(shè)計階段才規(guī)定具體的細(xì)節(jié)。5.數(shù)據(jù)結(jié)構(gòu)的表示只限於那些必須直接使用該數(shù)據(jù)結(jié)構(gòu)內(nèi)數(shù)據(jù)的模組才能知道。此原則就是資訊隱蔽和與此相關(guān)的耦合性原則。6.應(yīng)當(dāng)建立一個存放有效數(shù)據(jù)結(jié)構(gòu)及相關(guān)操作的庫。數(shù)據(jù)結(jié)構(gòu)應(yīng)當(dāng)設(shè)計成為可複

溫馨提示

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

評論

0/150

提交評論