考研學(xué)習(xí)筆記 《軟件工程導(dǎo)論》(第6版)筆記和課后習(xí)題詳解_第1頁
考研學(xué)習(xí)筆記 《軟件工程導(dǎo)論》(第6版)筆記和課后習(xí)題詳解_第2頁
考研學(xué)習(xí)筆記 《軟件工程導(dǎo)論》(第6版)筆記和課后習(xí)題詳解_第3頁
考研學(xué)習(xí)筆記 《軟件工程導(dǎo)論》(第6版)筆記和課后習(xí)題詳解_第4頁
考研學(xué)習(xí)筆記 《軟件工程導(dǎo)論》(第6版)筆記和課后習(xí)題詳解_第5頁
已閱讀5頁,還剩444頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

我國各大院校一般都把國內(nèi)外通用的權(quán)威教科書作為本科生和研張海藩所著的《軟件工程導(dǎo)論》(第6版,清華大學(xué)出版社)是我國高校采用較多的計算機1.整理名校筆記,濃縮內(nèi)容精華。在參考了國內(nèi)外名校名師講授張海藩《軟件工程導(dǎo)論》2.解析課后習(xí)題,提供詳盡答案。本書參考大量軟件工程導(dǎo)論相關(guān)資料對該教材的重難點課(章)后習(xí)題進行了詳細的分析和解答,并對相關(guān)重要知識點進行了延伸和歸納。要深深牢記:考研不同一般考試,概念題(名詞解釋)要當(dāng)作簡答題來回答,簡答題要當(dāng)作優(yōu)秀的論文(其實很多考研真題就是選自一篇專題論文),完全需要當(dāng)作論文來回答!計算機類()提供全國各高校計算機類專業(yè)考研考博輔導(dǎo)班【保過班、網(wǎng)授班、3D電子書、3D題庫等】、全套資料(歷年真題及答案、筆記講義等)、計算機類國內(nèi)外經(jīng)典教材1.互動學(xué)習(xí):搖一搖,找學(xué)友,交友學(xué)習(xí)兩不誤頻、語音等形式),交友學(xué)習(xí)兩不誤;學(xué)習(xí)圈內(nèi)有學(xué)霸解答本書學(xué)習(xí)中的問題,并配有專職2.720度立體旋轉(zhuǎn):好用好玩的全新學(xué)習(xí)體驗3.手機掃碼即可閱讀,精彩內(nèi)容,輕松分享掃碼即可在手機閱讀,隨處隨學(xué)??梢圆挥每?.質(zhì)量保證:每本e書都經(jīng)過圖書編輯隊伍多次反復(fù)修改,年年升級5.免費升級:更新并完善內(nèi)容,終身免費升級6.功能強大:記錄筆記、答案遮擋等十大功能(1)知識點串聯(lián)列舉——相同知識點內(nèi)容列表呈現(xiàn),便于讀者記憶和復(fù)習(xí),舉一反三,觸(2)劃線添加筆記——使用顏色筆工具,劃一條線,寫筆記,提交糾錯。【獨家推出】(3)答案遮擋——先看題后看答案,學(xué)習(xí)效果好?!惊毤彝瞥觥?4)全文檢索輸入關(guān)鍵詞,本書相關(guān)內(nèi)容一覽無余。【獨家推出】7.多端并用:電腦手機平板等多平臺同步使用本書一次購買,多端并用,可以在PC端(在線和下載)、手機(安卓和蘋果)、平板(安卓和蘋果)等多平臺同步使用。同一本書,使用不同終端登錄,可實現(xiàn)云同步,即更換不同()是一家為全國各類考試和專業(yè)課學(xué)習(xí)提供輔導(dǎo)方案【保過班、網(wǎng)授班、3D電子書、3D題庫】的綜合性學(xué)習(xí)型視頻學(xué)習(xí)網(wǎng)站,擁有近100種考試(含418個考試科目)、194種經(jīng)典教材(含英語、經(jīng)濟、管理、證券、金融等共16大類),合計近萬小時的面授班、網(wǎng)授于時間和水平,書中難免存有不足之處,敬請廣大讀者批評指正!詳情訪問:(計算機類)第1章軟件工程學(xué)概述1.1復(fù)習(xí)筆記1.2課后習(xí)題詳解第2章可行性研究第4章形式化說明技術(shù)4.1復(fù)習(xí)筆記4.2課后習(xí)題詳解5.2課后習(xí)題詳解7.1復(fù)習(xí)筆記8.2課后習(xí)題詳解第9章面向?qū)ο蠓椒▽W(xué)引論第10章面向?qū)ο蠓治?0.1復(fù)習(xí)筆記第11章面向?qū)ο笤O(shè)計第12章面向?qū)ο髮崿F(xiàn)第13章軟件項目管理第1章軟件工程學(xué)概述1.軟件危機的介紹(1)概念(2)典型表現(xiàn)件質(zhì)量保證技術(shù)(審查、復(fù)審、程序正確性證明和測試)還沒有堅持不懈地應(yīng)用到軟件開發(fā)2.產(chǎn)生軟件危機的原因(1)客觀原因(2)主觀原因3.消除軟件危機的途徑(1)應(yīng)該對計算機軟件有一個正確的認識。應(yīng)該徹底消除在計算機系統(tǒng)早期發(fā)展階段形成(2)應(yīng)該充分認識到軟件開發(fā)是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成(3)應(yīng)該推廣使用在實踐中總結(jié)出來的開發(fā)軟件的成功的技術(shù)和方法,并且研究探索更好(4)應(yīng)該開發(fā)和使用更好的軟件工具。在軟件開發(fā)的每個階段都有許多繁瑣重復(fù)的工作需1.軟件工程的介紹(1)概念(2)產(chǎn)生為了更有效地開發(fā)與維護軟件,軟件工作者在20世紀(jì)60年代后期開始認真研究消除軟件危機的途徑,從而逐漸形成了一門新興的工程學(xué)科—計算機軟件工程學(xué)((3)本質(zhì)特征⑦軟件工程領(lǐng)域由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品2.軟件工程的基本原理(1)七條基本原理a.一切有關(guān)修改軟件的建議,特別是涉及對基準(zhǔn)配置的修改建議,都必須按照嚴(yán)格的規(guī)程b.絕對不能誰想修改軟件(包括尚在開發(fā)過程中的軟件),就隨意進行修改。(2)意義3.軟件工程方法學(xué)(1)概念(2)三要素軟件工程方法學(xué)包括3個要素:方法、工具和過程。(3)傳統(tǒng)方法學(xué)(生命周期方法學(xué)或結(jié)構(gòu)化范型)采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計和結(jié)構(gòu)化實現(xiàn))來完成軟件開發(fā)的各項任務(wù),并②開發(fā)步驟a.從對問題的抽象邏輯分析開始,一個階段一個階段地順序進行開發(fā)。b.前一個階段任務(wù)的完成是開始進行后一個階段工作的前提和基礎(chǔ),而后一階段任務(wù)的完c.每一個階段的開始和結(jié)束都有嚴(yán)格標(biāo)準(zhǔn),對于任何兩個相鄰的階段而言,前一階段的結(jié)d.在每一個階段結(jié)束之前都必須進行正式嚴(yán)格的技術(shù)審查和管理復(fù)審,從技術(shù)和管理兩個③優(yōu)點a.把軟件生命周期劃分成若干個階段,每個階段的任務(wù)相對獨立,而且比較簡單,便于不b.在軟件生命周期的每個階段都采用科學(xué)的管理技術(shù)和良好的技術(shù)方法,且在每個階段結(jié)④缺點a.當(dāng)軟件規(guī)模龐大,或者對軟件的需求是模糊的或會隨時間變化而變化的時候,傳統(tǒng)方法b.結(jié)構(gòu)化范型技術(shù)要么面向行為,要么面向數(shù)據(jù),沒有既面向數(shù)據(jù)又面向行為的結(jié)構(gòu)化技(4)面向?qū)ο蠓椒▽W(xué)③要點a.把對象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件b.把所有對象都劃分成類c.繼承性d.對象彼此間僅能通過發(fā)送消息互相聯(lián)系a.傳統(tǒng)方法學(xué)強調(diào)自頂向下順序地完成軟件開發(fā)的各階b.用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件的過程,是一個主動地多次反復(fù)迭代的演化過程。面向?qū)ο蠓椒ㄔ诟拍詈捅硎痉椒ㄉ系囊恢滦?,保證了在各項開發(fā)活動之間的平滑(即無縫)過渡。⑤優(yōu)點b.提高了軟件的可理解性;d.提高了軟件的可重用性。軟件生命周期由軟件定義、軟件開發(fā)和運行維護(也稱為軟件維護)3個時期組成,每個時(1)軟件定義軟件定義時期通常進一步劃分成3個階段,即問題定義、可行性(2)軟件開發(fā)通常由下述4個階段組成:總體設(shè)計,詳細設(shè)計,編碼和單元測試,(3)運行和維護2.軟件生命周期各階段的基本任務(wù)。(1)問題定義(2)可行性研究(3)需求分析(3)表示需求規(guī)格說明書(SRS)。(4)總體設(shè)計(概要設(shè)計)(5)詳細設(shè)計(模塊設(shè)計)(6)編碼和單元測試(7)綜合測試a.集成測試是根據(jù)設(shè)計的軟件結(jié)構(gòu),把經(jīng)過單元測試檢驗的模塊按某種選定的策略裝配起b.驗收測試則是按照軟件需求規(guī)格說明書的規(guī)定,由用戶對目標(biāo)系統(tǒng)進行驗收。(8)軟件維護(1)定義做什么事(what)以及怎樣(how)做這些事以實現(xiàn)某一個特定的具體目標(biāo)。在完成開發(fā)任(2)構(gòu)成使用生命周期模型簡潔地描述軟件過程。生命周期模型(過程模型)規(guī)定了把生命周期劃分成哪些階段及各個階段的執(zhí)行順序。2.典型軟件過程模型(1)瀑布模型在20世紀(jì)80年代之前,瀑布模型一直是唯一被廣泛采用的生命周期模型,現(xiàn)在它仍然是軟件工程中應(yīng)用得最廣泛的過程模型。傳統(tǒng)軟件工程方法學(xué)的軟件過程,基本上可以用瀑布模型來描述。①傳統(tǒng)的瀑布模型傳統(tǒng)軟件工程方法學(xué)的軟件過程,基本上可以用瀑布模型來描述,如圖1-1所示為傳統(tǒng)的瀑布模型。需求分析需求分析驗證規(guī)格說明驗證設(shè)計驗證編碼測試綜合測試維護圖1-1傳統(tǒng)的瀑布模型第一,階段間具有順序性和依賴性必須等前一階段的工作完成之后,才能開始后一階段的工作;前一階段的輸出文檔是后一階段的輸入文檔,即只有前一階段的輸出文檔正確,后一階段的工作才能獲得正確的結(jié)果。第二,推遲實現(xiàn)的觀點瀑布模型在編碼之前設(shè)置了系統(tǒng)分析與系統(tǒng)設(shè)計的各個階段,分析與設(shè)計階段的基本任務(wù)規(guī)定,在這兩個階段主要考慮目標(biāo)系統(tǒng)的邏輯模型,不涉及軟件的物理實現(xiàn)。清楚地區(qū)分邏輯設(shè)計與物理設(shè)計,盡可能推遲程序的物理實現(xiàn),是按照瀑布模型開發(fā)軟件的一條重要的指導(dǎo)思想。第三,質(zhì)量保證的觀點為了保證所開發(fā)的軟件的質(zhì)量,在瀑布模型的每個階段都必須完成規(guī)定的文檔,沒有交出合格的文檔就是沒有完成該階段的任務(wù)。完整、準(zhǔn)確的合格文檔不僅是軟件開發(fā)時期各類人員之間相互通信的媒介,也是運行時期對軟件進行維護的重要依據(jù)。越是早期階段犯下的錯誤,暴露出來的時間就越晚,排除故障改正錯誤所需付出的代價也越高。因此,及時審查,是保a.定義圖1-2實際的瀑布模型b.優(yōu)點(2)快速原型模型能完成的功能的一個子集。如圖1-3所示(圖中實線箭頭表示開發(fā)過程,虛線箭頭表示維護過程)。快速原型的本質(zhì)是“快速”。UNIXShell、超文本、第四代語言(4GL)都是廣泛使用的快速原型語言。圖1-3快速原型模型②原理快速原型模型的第一步是快速建立一個能反映用戶主要需求的原型系統(tǒng),讓用戶通過實踐來了解目標(biāo)系統(tǒng)的概貌。通常,用戶試用原型系統(tǒng)之后會提出許多修改意見,開發(fā)人員按照用戶的意見快速地修改原型系統(tǒng),然后再次請用戶試用,一旦用戶認為這個原型系統(tǒng)確實能做他們所需要的工作,開發(fā)人員便可據(jù)此書寫規(guī)格說明文檔,根據(jù)這份文檔開發(fā)出的軟件便可以滿足用戶的真實需求。③優(yōu)點快速原型模型是不帶反饋環(huán)的,這正是這種過程模型的主要優(yōu)點,即軟件產(chǎn)品的開發(fā)基本上是線性順序進行的。能基本上做到線性順序開發(fā)的主要原因如下:a.原型系統(tǒng)已經(jīng)通過與用戶交互而得到驗證,產(chǎn)生的規(guī)格說明文檔正確地描述了用戶需求。因此,在開發(fā)過程的后續(xù)階段不會因為發(fā)現(xiàn)了規(guī)格說明文檔的錯誤而進行較大的返工。b.開發(fā)人員通過建立原型系統(tǒng)已經(jīng)學(xué)到了許多東西。因此,在設(shè)計和編碼階段發(fā)生錯誤的可能性也比較小,減少了在后續(xù)階段需要改正前面階段所犯錯誤的可能性。(3)增量模型①原理增量模型也稱為漸增模型,如圖1-4所示。使用增量模型開發(fā)軟件時,把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計、編碼、集成和測試。每個構(gòu)件由多個相互作用的模塊構(gòu)成,并且能夠完成特定的功能。使用增量模型時,第一個增量構(gòu)件往往實現(xiàn)軟件的基本需求,提供最核心的功能。把軟件產(chǎn)品分解成增量構(gòu)件時,應(yīng)該使構(gòu)件的規(guī)模適中。分解時唯一必須遵守的約束條件是:當(dāng)把新構(gòu)件集成到現(xiàn)有軟件中時,所形成的產(chǎn)品必須是可測試的。圖1-4增量模型③優(yōu)點a.能在較短時間內(nèi)向用戶提交可完成部分工b.逐步增加產(chǎn)品功能可以使用戶有較充裕的時間學(xué)習(xí)和適應(yīng)新產(chǎn)品,減少了一個全新的軟a.在把每個新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)中時,必須不破壞原來已經(jīng)開發(fā)出的產(chǎn)b.增量模型本身是自相矛盾的。它一方面要求開發(fā)人員把軟件看作一個整體,另一方面又圖1-5是一種風(fēng)險更大的增量模型。用這種方式開發(fā)軟件,不同的構(gòu)件將并行地構(gòu)建,因此圖1-5風(fēng)險更大的增量模型(4)螺旋模型前都增加了風(fēng)險分析過程的快速原型模型,如圖1-6所示。圖1-6簡化的螺旋模型完整的螺旋模型如圖1-7所示。圖中帶箭頭的點劃線的長度代表當(dāng)圖1-7完整的螺旋模型③應(yīng)用④優(yōu)點a.對可選方案和約束條件的強調(diào)有利于已有軟件的重用,有助于把軟件質(zhì)量作為軟件開發(fā)b.減少了過多測試(浪費資金)或測試不足(產(chǎn)品故障多)所帶來的風(fēng)險;c.在螺旋模型中維護只是模型的另一個周期,在維⑤缺點(5)噴泉模型無縫過渡。圖中在一個階段內(nèi)的向下箭頭代表該階段內(nèi)的迭代(或求精)。圖中較小的圓圈圖1-8噴泉模型③要求(6)Rational統(tǒng)一過程Rational統(tǒng)一過程(RationalUnifiedProcess,RUP)是由Rational軟件公司推出的一種完整a.迭代式開發(fā)i.迭代式開發(fā)允許在每次迭代過程中需求都可以有變化,這種開發(fā)方法通過一系列細化來ii.采用迭代式開發(fā)方法,每個迭代過程以完成可執(zhí)行版本結(jié)束,這不僅使最終用戶可以不b.管理需求RUP描述了如何提取、組織系統(tǒng)的功能性需求和約束條件并把它們文檔化。使用用例和腳c.使用基于構(gòu)件的體系結(jié)構(gòu)件組成,因此構(gòu)件使軟件重用成為可能。RUP提供了d.可視化建模e.驗證軟件質(zhì)量f.控制軟件變更②RUP軟件開發(fā)生命周期RUP軟件開發(fā)生命周期是一個二維的生命周期模型,如圖1-9所示。圖中縱軸代表核心工作RUP中有九個核心工作流,前三個為核心過程工作流程,a.業(yè)務(wù)建模:了解使用目標(biāo)系統(tǒng)的機構(gòu)及其商業(yè)運作,評估系統(tǒng)對使用它的機構(gòu)的影響。b.需求:捕獲客戶的需求,并且使開發(fā)人員和用戶達成對需求描述的共識。c.分析與設(shè)計:把需求分析的結(jié)果轉(zhuǎn)化成分析模型與設(shè)計模型。d.實現(xiàn):把設(shè)計模型轉(zhuǎn)換成實現(xiàn)結(jié)果,形式化地定義代碼結(jié)構(gòu),用構(gòu)件實現(xiàn)類和對象,對e.測試:檢查各個子系統(tǒng)的交互與集成,驗證所有需求是否都被正確地實現(xiàn)了,識別、確f.部署:成功地生成目標(biāo)系統(tǒng)的可運行的g.配置與變更管理:跟蹤并維護在軟件開發(fā)過程中產(chǎn)生的所有制品的完整性和一致性。h.項目管理:提供項目管理框架,為軟件開發(fā)項目制定計劃、人員配備、執(zhí)行和監(jiān)控等方i.環(huán)境:向軟件開發(fā)機構(gòu)提供軟件開發(fā)環(huán)境,包括過程管理和工具支持。RUP把軟件生命周期劃分成4個連續(xù)的階段。每個階段都有明確的目標(biāo),并且定義了用來定,要么中止該項目,要么重做該階段的工作。這4個階段的工作目標(biāo)如下。a.初始階段:建立業(yè)務(wù)模型,定義最終產(chǎn)品視圖,并且確定項目的范圍。b.精化階段:設(shè)計并確定系統(tǒng)的體系結(jié)構(gòu),制定項目計劃,確定資源需求。c.構(gòu)建階段:開發(fā)出所有構(gòu)件和應(yīng)用程序,把它們集成為客戶需要的產(chǎn)品,并且詳盡地測⑤RUP迭代式開發(fā)RUP強調(diào)采用迭代和漸增的方式來開發(fā)軟件,整個項目開發(fā)過程由多個迭代過程組成。在等工作,每次迭代都是在系統(tǒng)已完成部分的基礎(chǔ)上進行的,每次給系統(tǒng)增加些N的功能,b.特點域,開發(fā)著或大或小的項目,這表明了RUP的多功能性和廣泛適用性。(7)敏捷過程敏捷過程能夠較好地適應(yīng)商業(yè)競爭環(huán)境下對小型項目提出的有限(8)極限編程a.客戶作為開發(fā)團隊的成員b.使用用戶素材c.短交付周期每兩周完成一次的迭代過程實現(xiàn)了用戶的一些需求,d.驗收測試e.結(jié)對編程f.測試驅(qū)動開發(fā)g.集體所有h.持續(xù)集成極限編程主張在一天之內(nèi)多次集成系統(tǒng),而且隨著需求i.可持續(xù)的開發(fā)速度開發(fā)人員以能夠長期維持的速度努力工作。XP規(guī)定開發(fā)人員每周工作時間不超過40小時,j.開放的工作空間XP項目的全體參與者(開發(fā)人員、客戶等)一起在一個開放的場所中工作,項目組成員在k.及時調(diào)整計劃1.簡單的設(shè)計m.重構(gòu)n.使用隱喻圖1-10描述了極限編程的整體開發(fā)過程。具體開發(fā)過程如下:b.項目組在隱喻和用戶故事的基礎(chǔ)上,根據(jù)客戶設(shè)定的優(yōu)先級制訂交付計劃;c.開始多個迭代過程,在迭代期內(nèi)產(chǎn)生的新用戶故事不在本次迭代內(nèi)解決,以保證本次開a.項目組根據(jù)交付計劃和項目速率,選擇需要優(yōu)先完成的用戶故事或待消除的差錯,將其分解成可在1~2天內(nèi)完成的任務(wù),制訂出本次迭代計劃;c.進行代碼共享式的開發(fā)工作。所開發(fā)出的新功能必須100%通過單元測試,并且立即進行d.開發(fā)人員與客戶代表交流此次代碼共享式編程的情況,討論所發(fā)現(xiàn)的問題,提出新的用圖1-11描述了極限編程的迭代開發(fā)過程。⑤特點a.極限編程為代表的敏捷過程,具有對變化和不確定性的更快速、更敏捷b.在快速的同時仍然能夠保持可持續(xù)的開發(fā)速度。(9)微軟過程a.項目計劃應(yīng)該兼顧未來的不確定因素。b.用有效的風(fēng)險管理來減少不確定因素的影響。c.經(jīng)常生成并快速地測試軟件的過渡版本,從而提高產(chǎn)品的穩(wěn)定性和可預(yù)測性。d.采用快速循環(huán)、遞進的開發(fā)過程。e.用創(chuàng)造性的工作來平衡產(chǎn)品特性和產(chǎn)品成本。g.使用小型項目組并發(fā)地完成開發(fā)工作。h.在項目早期把軟件配置項基線化,項目后期則凍結(jié)產(chǎn)品。i.使用原型驗證概念,對項目進行早期論證。j.把零缺陷作為追求的目標(biāo)。k.里程碑評審會的目的是改進工作,切忌相互指責(zé)。②微軟軟件生命周期微軟過程把軟件生命周期劃分成五個階段,圖1-12描繪了生命周期的階段及每個階段的主圖1-12微軟軟件生命周期階段劃分和主要里程碑a(chǎn).規(guī)劃階段b.設(shè)計階段當(dāng)項目團隊已經(jīng)確定了70%以上的產(chǎn)品需求時,開發(fā)工作就可以進入設(shè)計階段了,主要工c.開發(fā)階段d.穩(wěn)定階段e.發(fā)布階段圖1-13描繪了微軟過程的生命周期模型。微軟過程的每一個生命周期發(fā)布一個遞進的軟件圖1-13微軟過程的生命周期模型b.特點第二,微軟過程也有某些不足之處,例如,對方法、工具和產(chǎn)品等方面的論述不如RUP和過程與RUP和敏捷過程結(jié)合起來,取長補短.針對不同項目的具體情況進行定制。1.什么是軟件危機?它有哪些典型表現(xiàn)?為什么會出現(xiàn)軟件危機?答:(1)軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴(yán)重問題。軟件(2)軟件危機的典型表現(xiàn):③軟件產(chǎn)品的質(zhì)量往往靠不?。虎苘浖3J遣豢删S護的;⑤軟件通常沒有適當(dāng)?shù)奈臋n資料;⑥軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升;⑦軟件開發(fā)跟不上計算機應(yīng)用迅速普及深入的趨勢。(3)軟件危機出現(xiàn)的原因:①軟件是計算機系統(tǒng)中的邏輯部件而不是物理部件;②軟件顯著特點是規(guī)模龐大;③對軟件開發(fā)和維護還有不少糊涂觀念,采用了錯誤的方法和技術(shù);④存在與軟件開發(fā)和維護有關(guān)的許多錯誤認識和做法;⑤對用戶要求沒有完整準(zhǔn)確的認識就匆忙著手編寫程序;⑥一個軟件從定義、開發(fā)、使用和維護,直到最終被廢棄,要經(jīng)歷一個漫長的時期;⑦一個軟件產(chǎn)品必須由一個完整的配置組成,要包括程序、文檔和數(shù)據(jù)等成分;⑧在軟件開發(fā)的不同階段進行修改需要付出的代價是很不相同的;⑨輕視維護。2.假設(shè)自己是一家軟件公司的總工程師,當(dāng)把圖1-14給手下的軟件工程師們觀看,告訴他們及早發(fā)現(xiàn)并改正錯誤的重要性時,有人不同意這個觀點,認為要求在錯誤進入軟件之前就清除它們是不現(xiàn)實的,并舉例說:“如果一個故障是編碼錯誤造成的,那么,一個人怎么能在設(shè)計階段清除它呢?”應(yīng)該怎么反駁他?圖1-14引人同一變動付出的代價隨時間變化的趨勢答:可以從以下兩方面來反駁他:(1)在軟件開發(fā)的不同階段進行修改需要付出的代價是很不相同的,在早期引入變動,涉及的面較少,因而代價也比較低;而在開發(fā)的中期,軟件配置的許多成分已經(jīng)完成,引入一個變動要對所有已完成的配置成分都做相應(yīng)的修改,不僅工作量大,而且邏輯上也更復(fù)雜,因此付出的代價劇增。(2)在軟件“已經(jīng)完成”時再引入變動,當(dāng)然需要付出更高的代價。在后期引入一個變動比在早期引入相同變動所需付出的代價高2~3個數(shù)量級。3.什么是軟件工程?它有哪些本質(zhì)特性?怎樣用軟件工程消除軟件危機?答:(1)軟件工程定義:軟件工程是是從管理和技術(shù)兩方面研究如何更好地開發(fā)和維護計算機軟件的一門新興學(xué)科。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟地開發(fā)出高質(zhì)量的軟件并有效地維護它,這就是軟件工程。(2)軟件工程本質(zhì)特征:①軟件工程關(guān)注于大型程序的構(gòu)造;②軟件工程的中心課題是控制復(fù)雜性;③軟件經(jīng)常變化;④開發(fā)軟件的效率非常重要;⑤和諧地合作是開發(fā)軟件的關(guān)鍵;⑥軟件必須有效地支持它的用戶;⑦由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品。(3)消除軟件危機的方法:①應(yīng)該對計算機軟件有一個正確的認識;②應(yīng)該充分認識到軟件開發(fā)是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工③應(yīng)該推廣使用在實踐中總結(jié)出來的開發(fā)軟件的成功的技術(shù)和方法,并且研究探索更好更有效的技術(shù)和方法;④應(yīng)該開發(fā)和使用更好的軟件工具。4.簡述結(jié)構(gòu)化范型和面向?qū)ο蠓缎偷囊c,并分析它們的優(yōu)缺點。答:(1)結(jié)構(gòu)化范型①要點結(jié)構(gòu)化范型屬于傳統(tǒng)方法學(xué)。傳統(tǒng)的軟件開發(fā)方法大部分采用瀑布模型。這種模型要求每一階段都以前一階段形成的文檔為基礎(chǔ)完成工作。每一階段將要完成時,都要求開發(fā)人員進行驗證或確認。②優(yōu)點把軟件生命周期劃分成基干個階段,每個階段的任務(wù)相對獨立,而且比較簡單,便于不同人員分工協(xié)作,從而降低了整個軟件開發(fā)過程的困難程度。③缺點當(dāng)軟件規(guī)模龐大時,或者對軟件的需求是模糊的或會承受時間而變化時,開發(fā)出的軟件往往不成功;而且維護起來仍然很困難。(2)面向?qū)ο蠓缎廷僖ca.軟件中的任何元素都是對象,復(fù)雜的軟件對象由簡單的軟件對象組合而成。b.所有對象劃分成各種對象類,每個對象都定義了一組數(shù)據(jù)和一組方法。c.按照子類和父類的關(guān)系,把若干個對象類組成一個層次結(jié)構(gòu)的系統(tǒng)。d.對象彼此之間僅能通過傳遞消息互相聯(lián)系。②優(yōu)點a.按照人類習(xí)慣的思維方法,對軟件開發(fā)過程所有階段進行綜合考慮。b.軟件生存期各階段所使用的方法、技術(shù)具有高度的連續(xù)性。c.軟件開發(fā)各個階段有機集成,有利于系統(tǒng)的穩(wěn)定性。5.根據(jù)歷史數(shù)據(jù)可以進行如下的假設(shè)。對計算機存儲容量的需求大致按下面公式描述的趨存儲器的價格按下面公式描述的趨勢逐年下降:如果計算機字長為16位,則存儲器價格下降的趨勢為:P?=0.048×0.72Y-197(美元/字)在上列公式中y代表年份,M是存儲容量(字數(shù)),(1)在1985年對計算機存儲容量的需求估計是多少?如果字長為16位,這個存儲器的價格(2)假設(shè)在1985年一名程序員每天可開發(fā)出10條指令,程序員的平均工資是每月4000(3)假設(shè)在1995年存儲器字長為32位,一名程序員每天可開發(fā)出30條指令,程序員的月平均工資為6000美元,重復(fù)(1)、(2)題。答:(1)在1985年對計算機存儲容量的需求,估計是:如果字長為16位,則這個存儲器的價格是:(2)如果一條指令的長度為一個字,則使存儲器裝滿程序共需4474263條指令。如果每月有20個工作日,則每人每月可開發(fā)200條指令。需要的工作量是:4474263/200=22371(人月)程序員的月平均工資是4000美元,開發(fā)出4474263條指令的成本是:22371*4000=8948400(美元)(3)在1995年對存儲容量的需求估計為:如果字長為32位,則這個存儲器的價格是:如果一條指令的長度為一個字,則使存儲器裝滿程序共需73577679條指令。如果每月有20個工作日,則每人每月可開發(fā)600條指令。需要的工作量是:73577679/600=122629(人月)122629*6000=735776790(美元)6.什么是軟件過程?它與軟件工程方法學(xué)有何關(guān)系?答:(1)軟件過程是為了開發(fā)出高質(zhì)量的軟件產(chǎn)品所需完成的一系列任務(wù)的框架,它規(guī)定7.什么是軟件生命周期模型?試比較瀑布模型、快速原型答:(1)瀑布模型①優(yōu)點b.嚴(yán)格地規(guī)定了每個階段必須提交的文檔;c.要求每個階段交出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細驗證;d.對文檔的約束,使軟件維護變得容易一些,且能降低軟件預(yù)算。a.開發(fā)過程一般不能逆轉(zhuǎn),否則代價太大;b.實際的項目開發(fā)很難嚴(yán)格按該模型進行;c.客戶往往很難清楚地給出所有的需求;d.軟件的實際情況必須到項目開發(fā)的后期客戶才能看到。③適用范圍a.用戶的需求非常清楚全面,且在開發(fā)過程中沒d.開發(fā)工作對用戶參與的要求很低。(2)快速原型模型①優(yōu)點a.可以得到比較良好的需求定義,容易適應(yīng)b.有利于開發(fā)與培訓(xùn)的同步;c.開發(fā)費用低、開發(fā)周期短且對用戶更友好。②缺點b.準(zhǔn)確的原型設(shè)計比較困難;c.不利于開發(fā)人員的創(chuàng)新。b.項目招投標(biāo)時,可以以原型模型作為軟件的開發(fā)模型;c.進行產(chǎn)品移植或升級時,或?qū)σ延挟a(chǎn)品原型進行客戶化工作時。(3)增量模型①優(yōu)點b.逐步增加功能,減少了全新的軟件可能給客戶組織帶來的沖擊。②缺點a.并行開發(fā)構(gòu)件有可能遇到不能集成的風(fēng)險,軟件必須具備開放式的體系結(jié)構(gòu);b.增量模型的靈活性很容易退化為邊做邊改模型,從而是軟件過程的控制失去整體性。c.對所開發(fā)的領(lǐng)域比較熟悉而且已有原型系統(tǒng)。(4)螺旋模型①優(yōu)點c.在螺旋模型中維護只是模型的另一個周期,在維護和開發(fā)之間并沒有本質(zhì)區(qū)別。②缺點a.需要豐富的風(fēng)險評估經(jīng)驗和專門知識,如果未能夠及b.過多的迭代次數(shù)會增加開發(fā)成本,延遲提交時間。8.為什么說噴泉模型較好地體現(xiàn)了面向?qū)ο筌浖_發(fā)過程無縫和迭代的特性?一個階段內(nèi)的向下箭頭代表該階段內(nèi)的迭代(或求精)。9.試討論Rational統(tǒng)一過程的優(yōu)缺點。(2)缺點RUP只是一個開發(fā)過程,并沒有涵蓋軟件過程的全部內(nèi)容,例如它缺少關(guān)于軟件運行和支答:Rational統(tǒng)一過程(RUP)系統(tǒng)增加些N的功能,如此循環(huán)往復(fù)地進行下去,直至完成最終項目。它適用于大型的需11.說明敏捷過程的適用范圍。12.說明微軟過程的適用范圍。第2章可行性研究1.可行性研究的目的2.可行性研究的任務(wù)(1)對以后的行動方針提出建議。如果問題沒有可行的解,分析員應(yīng)該建議停止這項開發(fā)(2)必須分析幾種主要的候選解法的利弊,從而判斷原定的系統(tǒng)目標(biāo)和規(guī)模是否現(xiàn)實,系(3)對每種可能的解決方案都應(yīng)該仔細研究它的可行性,通常,至少從下述三個方面研究3.可行性研究過程(1)復(fù)查系統(tǒng)規(guī)模和目標(biāo)(2)研究目前正在使用的系統(tǒng)個系統(tǒng)可以做什么,為什么這樣做,還要了解使用這個系統(tǒng)的代價。(3)導(dǎo)出新系統(tǒng)的高層邏輯模型的邏輯模型,設(shè)想目標(biāo)系統(tǒng)的邏輯模型,最后根據(jù)目(4)進一步定義問題法呢?分析員應(yīng)該和用戶一起再次復(fù)查問題定義、工程規(guī)模和目標(biāo),這次復(fù)查應(yīng)該把數(shù)據(jù)流(5)導(dǎo)出和評價供選擇的解法分析員應(yīng)該從他建議的系統(tǒng)邏輯模型出發(fā),導(dǎo)出若干個較高層次的(較抽象的)物理解法供(6)推薦行動方針根據(jù)可行性研究結(jié)果應(yīng)該決定的一個關(guān)鍵性問題是:是否繼續(xù)進行這(7)草擬開發(fā)計劃開發(fā)人員(例如,系統(tǒng)分析員、程序員)和各種資源(計算機硬件、軟件工具等)的需要情本。最后應(yīng)該給出下一個階段(需求分析)的詳細進度表和成本估計。(8)書寫文檔提交審查。2.基本思想系統(tǒng)流程圖的基本思想是用圖形符號以黑盒子形式描繪組成系統(tǒng)的每個部件(程序、文檔、數(shù)據(jù)庫、人工過程等)。系統(tǒng)流程圖表達的是數(shù)據(jù)在系統(tǒng)各部件之3.符號(1)以概括的方式抽象地描繪實際系統(tǒng)時,使用圖2-1中列出的基本符號就足夠了。圖2-1基本符號(2)需要更具體地描繪一個物理系統(tǒng)時,還需要使用圖2-2中列出的系統(tǒng)符號。圖2-2系統(tǒng)符號4.實例分析例1:件和產(chǎn)生訂貨報告的任務(wù)。零件庫存量的每一次變化稱為一個事務(wù),由放在倉庫中的CRT輯路徑(信息流動路徑)。5.分層1.概念(1)定義受的變換。(2)特點2.符號(1)表示a.正方形(或立方體):表示數(shù)據(jù)的源點或終點。c.開口矩形(或兩條平行橫線):代表數(shù)據(jù)存儲。+號表示只能從中選一個(互斥的關(guān)系)。圖2-4數(shù)據(jù)流圖的符號(2)注意事項⑦代表同一事物的符號出現(xiàn)在n個地方,在這個符號的角上畫(n-1)條短斜線做標(biāo)記。3.實例分析例2:的CRT終端把事務(wù)報告給訂貨系統(tǒng)。當(dāng)某種零件的庫存數(shù)量少于庫存量臨界值時就應(yīng)該再(1)第一步可以從問題描述中提取數(shù)據(jù)流圖的4種成分:表2-1總結(jié)了上面分析的結(jié)果,其中加星號標(biāo)記的是在問題描述中隱含的成分。表2-1組成數(shù)據(jù)流圖的元素可以從描述問題的信息中提取源點/終點采購員倉庫管理員事務(wù)類型訂貨信息(見訂貨報表)(2)畫數(shù)據(jù)流圖任何系統(tǒng)的基本模型都由若干個數(shù)據(jù)源點/終點以及一個處理組成,這對數(shù)據(jù)加工變換的基本功能。可以畫出圖2-5這樣的基本系統(tǒng)模型。圖2-5訂貨系統(tǒng)的基本系統(tǒng)模型的數(shù)據(jù)相同。在圖2-6中給處理和數(shù)據(jù)存儲都加編號,這樣做的目的是便于引用和追蹤。圖2-6訂貨系統(tǒng)的功能級數(shù)據(jù)流圖訂貨"(圖2-7)。圖2-7把處理事務(wù)的功能進一步分解后的數(shù)據(jù)流圖⑤檢查a.對數(shù)據(jù)流圖分層細化時必須保持信息連續(xù)性;b.注意對處理進行編號的方法。4.命名規(guī)則(1)為數(shù)據(jù)流(或數(shù)據(jù)存儲)命名①名字應(yīng)代表整個數(shù)據(jù)流(或數(shù)據(jù)存儲)的內(nèi)容,而不是只反映它的某些成分。③如果在為某個數(shù)據(jù)流(或數(shù)據(jù)存儲)起名字時遇到了困難,則很可能是因為對數(shù)據(jù)流圖分(2)為處理命名(3)為數(shù)據(jù)源點/終點命名數(shù)據(jù)源點/終點并不需要在開發(fā)目標(biāo)系統(tǒng)的過程中設(shè)計和實現(xiàn),它5.用途(1)目的①作為交流信息的工具(基本目的)(2)自動化邊界邊界可能意味著一個不同的物理系統(tǒng),因此可以根據(jù)①考慮圖2-7,事務(wù)隨時可能發(fā)生,故處理1.1("接收事務(wù)")必須是聯(lián)機的;采購員每天需要一次訂貨報表,因此處理2(“產(chǎn)生報表”)應(yīng)該以批量方式進行放入隊列中,然而更新庫存清單、處理訂貨和產(chǎn)生報表以批量方式進行(圖2-8)。圖2-8這種劃分自動化邊界的方法暗示以批量方式更新庫存清單②改變自動化邊界,把處理1.1,1.2和1.3放在同一邊界內(nèi)(圖2-9),這個系統(tǒng)將聯(lián)機地接收事務(wù)、更新庫存清單和處理訂貨及輸出訂貨信息;處理2將以批量方式產(chǎn)生訂貨報表。圖2-9另一種劃分自動化邊界的方法建議以聯(lián)機方式更新庫存清單(1)定義(2)意義(1)一般來說,數(shù)據(jù)字典應(yīng)該由對下列4類元素的定義組成。(2)數(shù)據(jù)元素的別名就是該元素的其他等價的名字,出現(xiàn)別名主要是以下3個原因引起的。③兩個分析員分別分析同一個數(shù)據(jù)流時,使用了不同的名字。3.定義數(shù)據(jù)的方法(1)數(shù)據(jù)元素組成數(shù)據(jù)的方式④可選即一個分量是可有可無的(重復(fù)零次或一次)。(2)數(shù)據(jù)元素組成數(shù)據(jù)的符號表示①=意思是等價于(或定義為);②+意思是和(即連接兩個分量);③[]意思是或(即從方括弧內(nèi)列出的若干個分量中選擇一個);④|意思是隔開供選擇的分量;⑤{}意思是重復(fù)(即重復(fù)花括弧內(nèi)的分量);⑥()意思是可選(即圓括弧里的分量可有可無)。⑦使用上限和下限進一步注釋表示重復(fù)的花括弧,例如:5{A}和1{A}5含義相同。4.數(shù)據(jù)字典的用途(1)作為分析階段的工具(最重要)。(2)數(shù)據(jù)字典中包含的每個數(shù)據(jù)元素的控制信息是很有價值的。數(shù)據(jù)字典列出了使用一個給定的數(shù)據(jù)元素的所有程序(或模塊),所以很容易估計改變一個(3)數(shù)據(jù)字典是開發(fā)數(shù)據(jù)庫的第一步,而且是很有價值的一步。(1)開發(fā)大型軟件系統(tǒng)是建議使用數(shù)據(jù)字典處理程序。(2)在開發(fā)小型軟件系統(tǒng)時建議采用卡片形式書寫數(shù)據(jù)字典,如圖2-10,給出了幾個數(shù)據(jù)圖2-10數(shù)據(jù)字典卡片五、成本/效益分析成本/效益分析的目的是從經(jīng)濟角度分析開發(fā)一個特定的新系統(tǒng)是2.成本估計的方法軟件開發(fā)成本主要表現(xiàn)為人力消耗(乘以平均工資則得到開發(fā)費用)。成本估計不是精確的科學(xué),因此應(yīng)該使用幾種不同的估計技術(shù)以便相互校驗。成本估計可(1)代碼行技術(shù)(2)任務(wù)分解技術(shù)b.分別估計每個單獨的開發(fā)任務(wù)的成本,先估計完成該項任務(wù)需要用的人力(以人月為單位),再乘以每人每月的平均工資而得出每個任務(wù)的成本;c.最后累加起來得出軟件開發(fā)工程的總成本。典型環(huán)境下各個開發(fā)階段需要使用的人力的百分比大致如表2-2所示。表2-2典型環(huán)境下各個開發(fā)階段需要使用的人力的百分比(3)自動估計成本技術(shù)采用自動估計成本的軟件工具可以減輕人的勞動,并且使得估計的結(jié)果更客觀。但是,采用這種技術(shù)必須有長期搜集的大量歷史數(shù)據(jù)為基礎(chǔ),并且需要有良好的數(shù)據(jù)庫系統(tǒng)支持。3.成本/效益分析的方法(1)方法步驟①估計開發(fā)成本、運行費用和新系統(tǒng)將帶來的經(jīng)濟效益。a.運行費用取決于系統(tǒng)的操作費用和維護費用。b.系統(tǒng)的經(jīng)濟效益等于因使用新系統(tǒng)而增加的收入加上新系統(tǒng)可以節(jié)省的運行費用。c.在進行成本/效益分析時一律假設(shè)生命周期為5年。②比較新系統(tǒng)的開發(fā)成本和經(jīng)濟效益,以便從經(jīng)濟角度判斷這個系統(tǒng)是否值得投資。但是,投資是現(xiàn)在進行的,效益是將來獲得的,不能簡單地比較成本和效益,應(yīng)該考慮貨幣的時間(2)影響經(jīng)濟效益的因素①貨幣的時間價值通常用利率的形式表示貨幣的時間價值。假設(shè)年利率為i,如果現(xiàn)在存入P元,則n年后可以得到的錢數(shù)為:這也就是P元錢在n年后的價值。反之,如果n年后能收入F元錢,那么這些錢的現(xiàn)在價②投資回收期通常用投資回收期衡量一項開發(fā)工程的價值。所謂投資回收期就是使累計的經(jīng)濟效益等于最初投資所需要的時間。投資回收期越短就能越快獲得利潤,那么這項工程也就越值得投資。投資回收期僅僅是一項經(jīng)濟指標(biāo),為了衡量一項開發(fā)工程的價值,還應(yīng)該考慮其他經(jīng)濟指標(biāo)。③純收入工程的純收入是在整個生命周期之內(nèi)系統(tǒng)的累計經(jīng)濟效益(折合成現(xiàn)在值)與投資之差。如果純收人為零,則工程的預(yù)期效益和在銀行存款一樣,但是開發(fā)一個系統(tǒng)要冒風(fēng)險,因此這項工程可能是不值得投資的。如果純收入小于零,那么這項工程顯然不值得投資。④投資回收率計算投資回收率,用它衡量投資效益的大小,并且可以把它和年利率相比較,在衡量工程的經(jīng)濟效益時,它是最重要的參考數(shù)據(jù)。其中,P是現(xiàn)在的投資額;Fi是第i年年底的效益(i=1,2,…,n);n是系統(tǒng)的使用j是投資回收率。2.2課后習(xí)題詳解1.在軟件開發(fā)的早期階段為什么要進行可行性研究?應(yīng)該從哪些方面研究目標(biāo)系統(tǒng)的可行性?答:(1)進行可行性研究的目的(2)從下述三個方面研究每種解決方案的可行性2.為方便儲戶,某銀行擬開發(fā)計算機儲蓄系統(tǒng)。儲戶填寫的存款單或取款單由業(yè)務(wù)員輸入答:(1)問題定義住址(或電話號碼)、身份證號碼、存款類型、存款日期、利率等信息,完成后由系統(tǒng)打印(2)可行性研究方法條件、假定和限制①建議開發(fā)軟件運行的最短壽命:5年。②進行系統(tǒng)方案選擇比較的期限:2個月。據(jù)庫,各個銀行網(wǎng)點都有安好的PC機,安裝有Windows2000及以上的操作系統(tǒng)。⑤建議開發(fā)軟件投入使用的最遲時間:開發(fā)完成后試運行1個月。(3)可行性研究方法(4)處理流程和數(shù)據(jù)流程a.存款(如圖2-11)圖2-11存款系統(tǒng)流程圖b.取款(如圖2-12)圖2-12取款系統(tǒng)流程圖②數(shù)據(jù)流圖(如圖2-13)圖2-13銀行業(yè)務(wù)數(shù)據(jù)流圖(5)分析影響因素⑤局限性工作效率底下,不能符合大量群眾的及時需求,給群眾的生活帶來不便。這是現(xiàn)有系統(tǒng)辦理業(yè)務(wù)的流程中出現(xiàn)的一個嚴(yán)重問題。具體問題如下:a.當(dāng)前銀行使用的銀行儲蓄系統(tǒng)在辦理業(yè)務(wù)時僅僅靠手工操作,人工業(yè)務(wù)占據(jù)了全部,要求銀行業(yè)務(wù)員辦理業(yè)務(wù)時細心耐心,對數(shù)字敏感,算術(shù)水平高。嚴(yán)重影響了工作效率,且出錯率高,儲戶辦理事務(wù)時需要等待時間過長,需要大量的銀行業(yè)務(wù)員才能滿足日益增長的存取款要求。b.用紙張記錄保存用戶存款記錄查找繁瑣,耗時久,不方便,且容易丟失。且人工記錄不能保證萬無一失,容易出現(xiàn)數(shù)據(jù)錄入錯誤。c.存款記錄保密性差,任何一個業(yè)務(wù)員都可以隨意更改查閱用戶數(shù)據(jù),用戶的資料容易泄漏,帶來安全隱患。d.業(yè)務(wù)員服務(wù)的時間有限,不能24小時辦理業(yè)務(wù),沒有應(yīng)急處理。e.所有客戶的業(yè)務(wù)都由業(yè)務(wù)員手工辦理,浪費人力資源。簡單的業(yè)務(wù)經(jīng)改進可由機器完成,完全不用人工參與,這樣節(jié)約了人力成本,也提高效率。f.對現(xiàn)有系統(tǒng)的改進維護只能依靠增多業(yè)務(wù)員數(shù)量,增多銀行分行數(shù)目,提高業(yè)務(wù)員業(yè)務(wù)素質(zhì)來實現(xiàn)。增多業(yè)務(wù)員數(shù)量會導(dǎo)致銀行人員支出大大增多,同時需要多選址建設(shè)分行,或者擴大分行規(guī)模,費用代價巨大。業(yè)務(wù)員的業(yè)務(wù)素質(zhì)需要培養(yǎng),不能短期見成效,這又浪費資金和人力資源。對現(xiàn)用系統(tǒng)的改進型維護已經(jīng)不能解決儲戶越來越多、儲戶時間越來越長3.為方便旅客,某航空公司擬開發(fā)一個機票預(yù)訂系統(tǒng)。旅行社把預(yù)訂機票的旅客信息(姓名、性別、工作單位、身份證號碼、旅行時間、旅行目的地等)輸入進該系統(tǒng),系統(tǒng)為旅客安排航班,印出取票通知和賬單,旅客在飛機起飛的前一天憑取票通知和賬單交款取票,系統(tǒng)校對無誤即印出機票給旅客。寫出問題定義并分析此系統(tǒng)的可行性。①目標(biāo):在一個月內(nèi)建立一個高效率,無差錯的航空公司機票預(yù)定系統(tǒng)。②存在的主要問題:人工不易管理,手續(xù)繁瑣。(2)可行性分析①經(jīng)濟可行性打印機一臺(2000元)+開發(fā)費(3500元)=5500元b.效益估算該系統(tǒng)有很好的社會效益,提高了公司售票效率,方便旅客,售票方便、科學(xué)。②技術(shù)可行性經(jīng)過調(diào)查分析,得到目前航空公司機票預(yù)定系統(tǒng)流程圖如圖2-14和2-15。圖2-14訂票系統(tǒng)流程圖圖2-15訂票系統(tǒng)流程圖③操作的可行性比較以上兩圖看出,與人工系統(tǒng)相比,計算機保留了原有的主要工作流程,可以看出計算機系統(tǒng)是人工系統(tǒng)的優(yōu)化,操作也不復(fù)雜,工作人員在短時間經(jīng)過培訓(xùn)就可熟練掌握。④結(jié)論由于經(jīng)濟、技術(shù)、操作三方面的可行性分析都通過,因此此技術(shù)系開發(fā)航空公司機票預(yù)定系統(tǒng)是可行的。4.目前住院病人主要由護士護理,這樣做不僅需要大量護士,而且由于不能隨時觀察危重病人的病情變化,還可能會延誤搶救時機。某醫(yī)院打算開發(fā)一個以計算機為中心的患者監(jiān)護系統(tǒng),試寫出問題定義,并且分析開發(fā)這個系統(tǒng)的可行性。醫(yī)院對患者監(jiān)護系統(tǒng)的基本要求是隨時接收每個病人的生理信號(脈搏、體溫、血壓、心電圖等),定時記錄病人情況以形成患者日志,當(dāng)某個病人的生理信號超出醫(yī)生規(guī)定的安全范圍時向值班護士發(fā)出警告信息,此外,護士在需要時還可以要求系統(tǒng)印出某個指定病人的病情報告。答:(1)問題定義①本系統(tǒng)的數(shù)據(jù)源點是“病人”和“護士”,他們分別提供生理信號和要求病情報告的信息。從系統(tǒng)應(yīng)該“定時記錄病人情況以形成患者日志”這項要求可以想到,還應(yīng)該有一個提供日期和②本系統(tǒng)的數(shù)據(jù)終點是接收警告信息和病情報告的護士。系統(tǒng)對病人生理信號的處理功能主(2)分析可行性為了分析病人生理信號是否超出了醫(yī)生規(guī)定的安全范圍,應(yīng)該存儲“患者安全范圍”信息。此外,定時記錄病人生理信號所形成的“患者日志”顯然也是一個數(shù)據(jù)存儲。本系統(tǒng)的基本系統(tǒng)模型如圖2-16所示,圖2-17是本系統(tǒng)的功能級數(shù)據(jù)流圖。時鐘系統(tǒng)警告信息護士圖2-16患者監(jiān)護系統(tǒng)的基本系統(tǒng)模型6D2患者日志病人生理信5時間筆信41圖2-17患者監(jiān)護系統(tǒng)的功能級數(shù)據(jù)流圖5.北京某高??捎玫碾娫捥柎a有以下幾類:校內(nèi)電話號碼由4位數(shù)字組成,第1位數(shù)字不是0;校外電話又分為本市電話和外地電話兩類,撥校外電話需先撥0,若是本市電話則再接著撥8位數(shù)字(第1位不是0),若是外地電話則撥3位區(qū)碼再撥8位電話號碼(第1位用定義數(shù)據(jù)的方法,定義上述的電話號碼。答:(1)電話號碼=[校內(nèi)電話號碼|校外電話號碼](2)校內(nèi)電話號碼=非零數(shù)字+3位數(shù)字(3)校外電話號碼=[本市號碼外地號碼](4)本市號碼=數(shù)字零+8位數(shù)字(5)外地號碼=數(shù)字零+3位數(shù)字+8位數(shù)字(7)數(shù)字零=0(8)3位數(shù)字=3{數(shù)字}3(9)8位數(shù)字=非零數(shù)字+7位數(shù)字(10)7位數(shù)字=7{數(shù)字}7(6)約束2.必要性3.準(zhǔn)則求分析的結(jié)果。進行需求分析必須遵循以下4條準(zhǔn)則。(1)必須理解并描述問題的信息域,根據(jù)這條準(zhǔn)則應(yīng)該建立數(shù)據(jù)模型。(2)必須定義軟件應(yīng)完成的功能,這條準(zhǔn)則要求建立功能模型。(3)必須描述作為外部事件結(jié)果的軟件行為,這條準(zhǔn)則要求建立行為模型。(4)必須對描述信息、功能和行為的模型進行分解,用層次的方式展示細節(jié)。1.確定對系統(tǒng)的綜合要求(1)功能需求(2)性能需求性能需求指定系統(tǒng)必須滿足的定時約束或容量約束,通常包括速度(響應(yīng)時間)、信息量速(3)可靠性和可用性需求(4)出錯處理需求(5)接口需求(7)逆向需求(8)將來可能提出的要求2.分析系統(tǒng)的數(shù)據(jù)要求(1)意義(2)工具用的圖形工具有層次方框圖和Warnier圖。(3)規(guī)范3.導(dǎo)出系統(tǒng)的邏輯模型4.修正系統(tǒng)開發(fā)計劃(1)基本形式(2)技術(shù)方法a.概念b.作用2.面向數(shù)據(jù)流自頂向下求精(1)定義(2)原理①通常從數(shù)據(jù)流圖的輸出端著手分析。輸出數(shù)搞清這個問題。每個輸出數(shù)據(jù)元素又是從哪里來的呢?沿數(shù)據(jù)流圖從輸出端往輸入端回溯,錄在IPO圖中。通過分析而補充的數(shù)據(jù)流、數(shù)據(jù)存儲和處理,應(yīng)該添加到數(shù)據(jù)流圖的適當(dāng)經(jīng)過提問和解答的反復(fù)循環(huán),最終得到對系統(tǒng)數(shù)據(jù)和功能要求的滿意3.簡易的應(yīng)用規(guī)格說明技術(shù)(1)定義(2)應(yīng)用過程a.討論的第一個問題是,是否需要這個新產(chǎn)品,一旦確實需要這個新產(chǎn)品,每位與會者就b.共同創(chuàng)建一張組合列表。在組合列表中消去了冗余項,加入了在展示過程中產(chǎn)生的新想c.一旦得出了意見一致的列表,就把與會者分成更小的小組,每個小組的工作目標(biāo)是為每d.每個小組都向全體與會者展示他們制定的小型規(guī)格說明。通過討論可能會增加或刪除一(3)優(yōu)點4.快速建立軟件原型(1)定義(2)特性(3)使用的方法和工具。①第四代技術(shù)使用一組已有的軟件構(gòu)件(組件)來裝配原型。軟件構(gòu)件可以是數(shù)據(jù)結(jié)構(gòu)(或數(shù)據(jù)庫),或軟件體系結(jié)構(gòu)構(gòu)件(程序),或過程構(gòu)件(模塊)。必須把軟件構(gòu)件設(shè)計成能在不知其內(nèi)部在過去的20多年中,人們已經(jīng)研究出許多形式化規(guī)格說明語言和工具,用于替代自然語言1.分析建模(1)模型(2)建模過程2.軟件需求規(guī)格說明1.數(shù)據(jù)模型的定義2.數(shù)據(jù)模型的構(gòu)成數(shù)據(jù)模型中包含3種相互關(guān)聯(lián)的信息:數(shù)據(jù)對象、數(shù)據(jù)對象的屬性(1)數(shù)據(jù)對象②特點a.可以由一組屬性來定義的實體都可以被認為是數(shù)b.數(shù)據(jù)對象彼此間是有關(guān)聯(lián)的。c.數(shù)據(jù)對象只封裝了數(shù)據(jù)而沒有對施加于數(shù)據(jù)上的操作的引用,這也是數(shù)據(jù)對象與面向?qū)?1)必要性(2)屬性(3)聯(lián)系以下3種類型。①一對一聯(lián)系(1:1)②一對多聯(lián)系(1:N)一個數(shù)據(jù)對象可以同時對應(yīng)多個數(shù)據(jù)對象,例如,某校教師③多對多聯(lián)系(M:N)兩個數(shù)據(jù)對象之間的聯(lián)系是多對多的。例如,學(xué)生與課程問的聯(lián)系("學(xué)")是多對多的,即3.實體—聯(lián)系圖的符號(1)定義使用實體聯(lián)系圖來建立數(shù)據(jù)模型。可以把實體—聯(lián)系圖簡稱為E—R圖,把用E—R圖描繪的數(shù)據(jù)模型稱為E—R模型。E—R圖中包含了實體(數(shù)據(jù)對象)、關(guān)系和屬性3種基本成分,通常用矩形框代表實體,用連接相關(guān)實體的菱形框表示關(guān)系,用橢圓形或圓角矩形表示實體(或關(guān)系)的屬性,并用直線把實體(或關(guān)系)與其屬性連接起來。例如,圖3-2是某學(xué)校教學(xué)管理的E—R圖。圖3-2某校教學(xué)管理E—R圖(2)優(yōu)點(2)范式特點(3)各范式的定義。1.定義2.狀態(tài)(1)定義系統(tǒng)對事件的響應(yīng)方式。系統(tǒng)對事件的響應(yīng),既可以是做一個(或一系列)動作,也可以是(2)分類狀態(tài)主要有:初態(tài)(初始狀態(tài))、終態(tài)(最終狀態(tài))和中間狀態(tài)。在一張狀態(tài)圖中只能有一個初態(tài),而終態(tài)則可以有0至多個。(3)表示①描繪循環(huán)運行過程:通常并不關(guān)心循環(huán)是3.事件事件是在某個特定時刻發(fā)生的事情,它是對引起系統(tǒng)做動作或(和)從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài)的外界事件的抽象。簡而言之,事件就是引起系統(tǒng)做動作或(和)轉(zhuǎn)換狀態(tài)的控制信4.狀態(tài)圖的符號(1)符號的表示方法②終態(tài):用一對同心圓(內(nèi)圓為實心圓)表示。③中間狀態(tài):用圓角矩形表示??梢杂脙蓷l水平橫線把它分成上、中、下3個部 (2)組成部分圖3-3給出了狀態(tài)圖中使用的主要組成部分和符號表示。圖3-3狀態(tài)圖中使用的主要符號事件名(參數(shù)表)/動作表達式事件說明[守衛(wèi)條件]/動作表達式其中,事件說明的語法為:事件名(參數(shù)表)。守衛(wèi)條件是一個布爾表達式。如果同時使用5.實例分析圖3-4是電話系統(tǒng)的狀態(tài)圖。圖中表明,沒有人打電話時電話處于閑置狀態(tài);有人拿的人改變主意不想扣了,他把聽筒放下(掛斷),電話重又回到閑置狀態(tài);如果拿起聽筒很長時間不撥號(超時),則進入超時狀態(tài)。圖3-4電話系統(tǒng)的狀態(tài)圖1.層次方框圖(1)定義(2)實例分析例如,描繪一家計算機公司全部產(chǎn)品的數(shù)據(jù)結(jié)構(gòu)可以用圖3-5中的層司的產(chǎn)品由硬件、軟件和服務(wù)3類產(chǎn)品組成,軟件(1)定義圖3-5層次方框圖的一個例子(3)特點2.Warnier圖(1)定義Warnier圖是法國計算機科學(xué)家Warnier提出的表示信息層次結(jié)構(gòu)的另外一種圖像工具,它(2)實例分析圖3-6是用Warnier圖描繪一類軟件產(chǎn)品的例子。圖中花括號用來區(qū)分數(shù)據(jù)結(jié)構(gòu)的層次,在一個花括號內(nèi)的所有名字都屬于同一類信息;異或符號(+)表明一類信息或一個數(shù)據(jù)元素一個名字下面(或右邊)的圓括號中的數(shù)字指明了這個名字代表的信息類(或元素)在這個圖中表示了一種軟件產(chǎn)品要么是系統(tǒng)軟件要么是應(yīng)用軟件。系統(tǒng)軟件中有P1種操作系統(tǒng),P2種編譯程序,此外還有軟件工具。軟件工具是系統(tǒng)軟件的一種,它又可以進一步細分為(2)用法有效的主記錄有效的事務(wù)記錄更新后的主文件處理1.校驗主記錄2.校驗事務(wù)記錄3.更新主記錄輸入舊的主文件事務(wù)文件(3)改進的IPO圖圖3-8改進的IPO圖的形式(4)優(yōu)點1.驗證軟件需求的正確性(1)驗證需求正確性的目的需求分析階段的工作結(jié)果是開發(fā)軟件系統(tǒng)的重(2)進行驗證的四個方面2.驗證軟件需求的方法(1)驗證需求的一致性(2)驗證需求的現(xiàn)實性(3)驗證需求的完整性和有效性3.用于需求分析的軟件工具(1)要求①必須有形式化的語法(或表),因此可以用計算機自動處理使用這種語法說明的內(nèi)容。③必須提供分析(測試)規(guī)格說明書的不一致性和冗余性的手段,并且應(yīng)該能夠產(chǎn)生一組報PSL是用來描述系統(tǒng)的形式語言,PSA是處理PSL描述的分析程序。用PSL描述的系統(tǒng)屬b.創(chuàng)建一個數(shù)據(jù)庫保存對該信息系統(tǒng)的描述符;c.對描述符施加增加、刪除和更改等操作;d.產(chǎn)生格式化的文檔和關(guān)于規(guī)格說明書的各種分析報告。a.改進了文檔質(zhì)量,能保證文檔具有完整性、一致性和無二義性,從而可以減少管理和維b.數(shù)據(jù)存放在數(shù)據(jù)庫中,便于增加、刪除和更改。1.為什么要進行需求分析?通常對軟件系統(tǒng)有哪些需求?答:(1)需求分析的原因(2)對軟件系統(tǒng)的需求2.怎樣與用戶有效地溝通以獲取用戶的真實需求?3.銀行計算機儲蓄系統(tǒng)的工作過程大致如下:儲戶填寫的存款單或取款單由業(yè)務(wù)員輸入系統(tǒng),如果是存款則系統(tǒng)記錄存款人姓名、住址(或電話號碼)、身份證號碼、存款類型、存款日期、到期日期、利率及密碼(可選)等信息,并印出存單給儲戶;如果是取款而且存款答:(1)數(shù)據(jù)流圖,如圖3-9所示。圖3-9銀行計算機儲蓄系統(tǒng)數(shù)據(jù)流圖是多對多(M:N)關(guān)系。M存取款身份證號碼N訂票旅客取票機票預(yù)定系統(tǒng)處理旅客圖3-12購票系統(tǒng)E—R圖5.分析習(xí)題2第4題所述的患者監(jiān)護系統(tǒng)。試用實體聯(lián)系圖描繪本系統(tǒng)中的數(shù)據(jù)對象,畫圖3-13患者監(jiān)護系統(tǒng)ER圖6.復(fù)印機的工作過程大致如下:未接到復(fù)印命令時處于閑置狀態(tài),一旦接到復(fù)印命令則進答:狀態(tài)轉(zhuǎn)換圖,如圖3-14所示。圖3-14復(fù)印機工作狀態(tài)轉(zhuǎn)換圖第4章形式化說明技術(shù)按照形式化的程度,可以把軟件工程使用的方法劃分成非形式化、半形式化和形式化3類。是典型的半形式化方法。所謂形式化方法,是描述系統(tǒng)1.非形式化方法的缺點(1)矛盾:一組相互沖突的陳述。(2)二義性:指讀者可以用不同方式理解的陳述。(3)含糊性:指沒有指明任何有用信息的籠統(tǒng)的陳述。(4)不完整性:指沒有指明具體功能的陳述。(5)抽象層次混亂:指非抽象的陳述中混進了一些關(guān)于細節(jié)的低層次陳述。2.形式化方法的優(yōu)點(1)能夠簡潔準(zhǔn)確地描述物理現(xiàn)象、對象或動作的結(jié)果。準(zhǔn)確到幾乎沒有二義性,而且可 (2)可以在不同的軟件工程活動之間平滑地過渡。不僅功能規(guī)格說明,而且系統(tǒng)設(shè)計也可(3)提供了高層確認的手段??梢允褂脭?shù)學(xué)方法證明,設(shè)計符合規(guī)格說明,程序代碼正確3.應(yīng)用形式化方法的準(zhǔn)則(1)應(yīng)該選用適當(dāng)?shù)谋硎痉椒?2)應(yīng)該形式化,但不要過分形式化(3)應(yīng)該估算成本(4)應(yīng)該有形式化方法顧問隨時提供咨詢(5)不應(yīng)該放棄傳統(tǒng)的開發(fā)方法(6)應(yīng)該建立詳盡的文檔(7)不應(yīng)該放棄質(zhì)量標(biāo)準(zhǔn)形式化方法并不能保證軟件的正確性,它們只不過是有助于開發(fā)出高質(zhì)量軟 (8)不應(yīng)該盲目依賴形式化方法求到形式化規(guī)格說明的轉(zhuǎn)換是正確的,因此,必須用其他方法(例如評審、測試)來驗證軟(9)應(yīng)該測試、測試再測試(10)應(yīng)該重用(1)引入一個保險箱上裝了一個復(fù)合鎖,鎖有3個位置,分別標(biāo)記為1、2、3,轉(zhuǎn)盤可向左(L)或向右(R)轉(zhuǎn)動。在任意時刻轉(zhuǎn)盤都有6種可能的運動,即1L、1R、2L、2R、3L和3R。保險箱的組合密碼是1L、3R、2L轉(zhuǎn)盤的任何其他運動都將引起報警。圖4-1描繪了保險箱的狀態(tài)轉(zhuǎn)換情況。有一個初始態(tài),即保險箱鎖定狀態(tài)。若輸入為1L,則下一個狀態(tài)為A,的序列為從保險箱鎖定到A再到B,最后到保險箱解鎖,即另外一個終態(tài)。圖4-1是一個有窮狀態(tài)機的狀態(tài)轉(zhuǎn)換圖。狀態(tài)轉(zhuǎn)換并不一定要用圖形方式圖4-1保險箱的狀態(tài)轉(zhuǎn)換圖表4-1保險箱的狀態(tài)轉(zhuǎn)換表(2)構(gòu)成一個有窮狀態(tài)機包括下述5個部分:狀態(tài)集J、輸入集K、由當(dāng)前狀態(tài)和當(dāng)前輸入確定下一個狀態(tài)(次態(tài))的轉(zhuǎn)換函數(shù)T、初始態(tài)S和終態(tài)集F。一個有窮狀態(tài)機可以表示為一個5元②輸入集K:{1L,1R,2L,2R,3L,3R}。③轉(zhuǎn)換函數(shù)T:如表4-1所示。④初始態(tài)S:保險箱鎖定。⑤終態(tài)集F:{保險箱解鎖,報警}。(3)狀態(tài)轉(zhuǎn)換(4)擴展對有窮狀態(tài)機做一個擴展,即在前述的5元組中加入第6個組件—謂詞集P,從而把有窮狀態(tài)機擴展為一個6元組,其中每個謂詞都是系統(tǒng)全局狀態(tài)Y的函數(shù)。轉(zhuǎn)換函數(shù)T現(xiàn)在是一個從(J-F)×K×P到J的函數(shù)?,F(xiàn)在的轉(zhuǎn)換規(guī)則形式如下:當(dāng)前狀態(tài)[菜單]+事件[所選擇的項]+謂詞畫下個狀態(tài)2.評價(1)優(yōu)點①有窮狀態(tài)機方法采用了一種簡單的格式來描述規(guī)格說明:當(dāng)前狀態(tài)+事件+謂詞回下個狀(2)缺點①在開發(fā)一個大系統(tǒng)時,三元組(即狀態(tài)、事件、謂詞)的數(shù)量會迅速增長。(1)功能(2)構(gòu)成Petri網(wǎng)包含4種元素:一組位置P、一組轉(zhuǎn)換T、輸入函數(shù)I,以及輸出函數(shù)0。圖4-2舉例說明了Petri網(wǎng)的組成。a.一組位置P為{P?,P?,P?,P?},在圖中用圓圈代表位置。b.一組轉(zhuǎn)換T為{Ti,T?}在圖中用短直線表示轉(zhuǎn)換。c.兩個用于轉(zhuǎn)換的輸入函數(shù),用由位置指向轉(zhuǎn)換的箭頭表示,它們是:d.兩個用于轉(zhuǎn)換的輸出函數(shù),用由轉(zhuǎn)換指向位置的箭頭表示,注意:輸出函數(shù)O(t?)中有兩個P3,是因為有兩個箭頭由t?指向P3。c.I:T→P為輸入函數(shù),是由轉(zhuǎn)換到位置無序單位組(bags)的映射。d.O:T→P為輸出函數(shù),是由轉(zhuǎn)換到位置無序單位組的映射。(3)分配權(quán)標(biāo)在圖4-3中有4個權(quán)標(biāo),其中一個在P?中,兩個在P?中,P?中沒有,還有一個在P?中。標(biāo)記可以用向量(1,2,0,1)表示。由于P?和P?中有權(quán)標(biāo),因此t?啟動(即被激發(fā))。當(dāng)?shù)模谶@個例子中兩個權(quán)標(biāo)被移出,而P?上只能增加一個權(quán)標(biāo)。圖4-3帶標(biāo)記的Petri網(wǎng)在圖4-3中P?上有權(quán)標(biāo),因此t?也可以被激發(fā)。當(dāng)t?被激發(fā)時,P?上將移走一個權(quán)標(biāo),而則其中任意一個都可以被激發(fā)。圖4-3所示Petri網(wǎng)的標(biāo)記為(1,2,0,1),t?和t?都可以被激發(fā)。假設(shè)t?被激發(fā)了,則結(jié)果如圖4-4所示,標(biāo)記為(2,1,0,0)。此時,只有t?可以被激發(fā)。如果t?也被激發(fā)了,則權(quán)標(biāo)從P?中移出,兩個新權(quán)標(biāo)被放在P?上,結(jié)果如圖4-5所示,標(biāo)記為(2,0,2,0)。更形式化地說,Petri網(wǎng)C=(P,T,I,O,M)中的標(biāo)記M,是由一組位置P到一組非負整圖4-4t?被激發(fā)后的情況圖4-5圖t?被激發(fā)后的情況如圖4-6所示,禁止線是用一個小圓圈而不是用箭頭標(biāo)記的輸至少有一個權(quán)標(biāo),而禁止線上沒有權(quán)標(biāo)的時候,相應(yīng)的轉(zhuǎn)換才是允許的。在圖4-6中,P3上有一個權(quán)標(biāo)而P?上沒有權(quán)標(biāo),因此轉(zhuǎn)換t?可以被激發(fā)。圖4-6含禁止線的Petri網(wǎng)使用Z語言需要具備集合論、函數(shù)、數(shù)理邏輯等方面的知識。即使用戶已經(jīng)掌握了所需要還使用一些特殊符號。用Z語言描述的、最(1)給定的集合一個Z規(guī)格說明從一系列給定的初始化集合開始。所謂初始化集合就是不需要詳細定義的(2)狀態(tài)定義圖4-7Z格S的格式(3)初始狀態(tài)(4)操作2.評價(1)可以比較容易地發(fā)現(xiàn)用Z寫的規(guī)格說明的錯誤,特別是在自己審查規(guī)格說明,及根據(jù)(2)要求十分精確地使用Z說明符寫規(guī)格說明。減少了模糊性、不一致性和遺漏。(3)Z是一種形式化語言,在需要時開發(fā)者可以嚴(yán)格地驗證規(guī)格說明的正確性。(4)只用比較短的時間就能夠讓開發(fā)人員學(xué)會編寫Z規(guī)格說明。(5)使用Z語言通過減少開發(fā)過程所需要的總時間來降低軟件開發(fā)費用。(6)用戶可以依據(jù)Z規(guī)格說明用自然語言重寫比直接用自然語言寫出的非形式化規(guī)格說明1.舉例對比形式化方法和欠形式化方法的優(yōu)缺點。答:(1)欠形式化方法的缺點如果在規(guī)格說明書中對一個命令的功能沒有更多的描述,那么,這個命令的細節(jié)是嚴(yán)重不完(2)形式化方法的優(yōu)點在理想情況下,分析員可以寫出系統(tǒng)的數(shù)學(xué)規(guī)格說明,它準(zhǔn)確到幾乎沒有二義性,而且可以用數(shù)學(xué)方法來驗證,以發(fā)現(xiàn)存在的矛盾和不完整性,在這樣的規(guī)格說明中完全沒有含糊性。②可以在不同的軟件工程活動之間平滑地過渡。③提供了高層確認的手段??梢允褂脭?shù)學(xué)方法證明,設(shè)計符合規(guī)格說明,程序代碼正確地實現(xiàn)了設(shè)計結(jié)果。2.在什么情況下應(yīng)該使用形式化說明技術(shù)?使用形式化說明技術(shù)時應(yīng)遵守哪些準(zhǔn)則?答:(1)人們在理解用自然語言描述的規(guī)格說明時,容易產(chǎn)生二義性。為了克服非形式化方法的缺點,人們把數(shù)學(xué)引入軟件工程。創(chuàng)造了基于數(shù)學(xué)的形式化說明技術(shù)。(2)應(yīng)用形式化方法的準(zhǔn)則:①應(yīng)該選用適當(dāng)?shù)谋硎痉椒ā"趹?yīng)該形式化,但不要過分形式化。③應(yīng)該估算成本。④應(yīng)該有形式化方法顧問隨時提供咨詢。⑤不應(yīng)該放棄傳統(tǒng)的開發(fā)方法。⑥應(yīng)該建立詳盡的文檔。⑦不應(yīng)該放棄質(zhì)量標(biāo)準(zhǔn)。⑧不應(yīng)該盲目依賴形式化方法。⑨應(yīng)該測試、測試再測試。⑩應(yīng)該重用。3.一個浮點二進制數(shù)的構(gòu)成是:一個可選的符號(+或-),后跟一個或多個二進制位,再跟上一個字符E,再加上另一個可選符號(+或-)及一個或多個二進制位。例如,下列的字符串都是浮點二進制數(shù):更形式化地,浮點二進制數(shù)定義如下:符號::=表示定義為;符號[….]表示可選項;假設(shè)有這樣一個有窮狀態(tài)機:以一串字符為輸入,判斷字符串中是否含有合法的浮點二進制數(shù)。試對這個有窮狀態(tài)機進行規(guī)格說明。答:(1)自然語言描述入尾數(shù)”狀態(tài)若接收到二進制位,則保持該狀態(tài)不變;若接收到字符“E”,則進入“等待輸入(2)形式化圖,如圖4-8所示。圖4-8有窮機形式化圖4.考慮下述的自動化圖書館流通系統(tǒng):每本書都有一個條形碼,每個借閱人都有一個帶有的條形碼,然后在計算機終端上輸入C;當(dāng)歸還一本書時,圖書管理員將再做一次掃描,并輸入R。圖書管理員可以把一些書加到(+)圖書集合中,也可以刪除(-)它們。借閱人可以在終端上查找到某個作者所有的書(輸入“A=”和作者名字),或具有指定標(biāo)題的所有書籍(輸入"T="和標(biāo)題),或?qū)儆谔囟ㄖ黝}范圍內(nèi)的所有圖書(輸入“S=”加主題范圍)。最時把書留給預(yù)約的借閱人(輸入"H="加書號)。(1)圖書狀態(tài)的有窮狀態(tài)機描述狀態(tài)機J:{書在圖書館S1,書被借出S2,書被預(yù)約S3}輸入集K:{書上條形碼,借閱卡條形碼,終端輸入各種命令}轉(zhuǎn)換函數(shù)T:如圖4-9所示。初始態(tài)S:{書在圖書館S1,書被借出S2}終態(tài)集F:{書被借出S2,書被預(yù)約S3}圖4-9圖書狀態(tài)轉(zhuǎn)換函數(shù)狀態(tài)機J:{管理員設(shè)置狀態(tài),書入庫,書出庫(刪除),預(yù)約}輸入集K:{終端輸入管理員命令,書的各種狀態(tài)(S1,S2,S3)}轉(zhuǎn)換函數(shù)T:如圖4-10所示。初始態(tài)S:{管理員設(shè)置狀態(tài)}終態(tài)集F:{書入庫,書出庫(刪除),預(yù)約,}轉(zhuǎn)換函數(shù)T:如圖4-11所示C及R。第5章總體設(shè)計總體設(shè)計的基本目的就是回答“系統(tǒng)應(yīng)該如何實現(xiàn)”這個問題,總體設(shè)計又稱為概要設(shè)計或初步設(shè)計。2.主要任務(wù)(1)劃分出組成系統(tǒng)的物理元素程序、文件、數(shù)據(jù)庫、人工過程和文檔等,但是每個物理元素仍然處于黑盒子級,這些黑盒子里的具體內(nèi)容將在以后仔細設(shè)計。(2)設(shè)計軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。①尋找實現(xiàn)目標(biāo)系統(tǒng)的各種不同的方案,需求分析階段得到的數(shù)據(jù)流圖是設(shè)想各種可能方案的基礎(chǔ)。②分析員從這些供選擇的方案中選取若干個合理的方案,為每個合理的方案都準(zhǔn)備一份系統(tǒng)流程圖,列出組成系統(tǒng)的所有物理元素,進行成本/效益分析,并且制定實現(xiàn)這個方案的進度計劃。③進行必要的數(shù)據(jù)庫設(shè)計,確定測試要求并且制定測試計劃。4.必要性可以站在全局高度上,花較少成本,從較抽象的層次上分析對比多種可能的系統(tǒng)實現(xiàn)方案和軟件結(jié)構(gòu),從中選出最佳方案和最合理的軟件結(jié)構(gòu),從而用較低成本開發(fā)出較高質(zhì)量的軟件二、設(shè)計過程總體設(shè)計過程通常由兩個主要階段組成:系統(tǒng)設(shè)計階段,確定系統(tǒng)的具體實現(xiàn)方案;結(jié)構(gòu)設(shè)計階段,確定軟件結(jié)構(gòu)。典型的總體設(shè)計過程包括下述9個步驟。1.設(shè)想供選擇的方案在總體設(shè)計階段應(yīng)該考慮各種可能的實現(xiàn)方案,并且力求從中選出最佳方案。在總體設(shè)計階段開始時只有系統(tǒng)的邏輯模型,分析員有充分的自由分析比較不同的物理實現(xiàn)方案,一旦選出了最佳的方案,將能大大提高系統(tǒng)的性能/價格比需求分析階段得出的數(shù)據(jù)流圖是總體設(shè)計的極好的出發(fā)點。常用的方法是,設(shè)想把數(shù)據(jù)流圖中的處理分組的各種可能的方法,拋棄在技術(shù)上行不通的分組方法,余下的分組方法代表可能的實現(xiàn)策略,并且可以啟示供選擇的物理系統(tǒng)。2.選取合理的方案應(yīng)該從前一步得到的一系列供選擇的方案中選取若干個合理的方案,通常至少選取低成本、中等成本和高成本的3種方案。對每個合理的方案,都應(yīng)該準(zhǔn)備下列4份資料:(1)系統(tǒng)流程圖。(2)組成系統(tǒng)的物理元素清單。(3)成本/效益分析。(4)實現(xiàn)這個系統(tǒng)的進度計劃。3.推薦最佳方案應(yīng)該綜合分析對比各種合理方案的利弊,推薦一個最佳的方案,并且為推薦的方案制定詳細的實現(xiàn)計劃。用戶和有關(guān)的技術(shù)專家應(yīng)該認真審查分析員所推薦的最佳系統(tǒng),如果該系統(tǒng)確實符合用戶的需要,并且是在現(xiàn)有條件下完全能夠?qū)崿F(xiàn)的,則應(yīng)該提請使用部門負責(zé)人進一步審批。在使用部門的負責(zé)人也接受了分析員所推薦的方案之后,將進入總體設(shè)計過程的下一個重要階段—結(jié)構(gòu)設(shè)計。4.功能分解(1)定義5.設(shè)計軟件結(jié)構(gòu)6.設(shè)計數(shù)據(jù)庫7.制定測試計劃8.書寫文檔(1)系統(tǒng)說明,主要包括用系統(tǒng)流程圖描繪的系統(tǒng)構(gòu)成方案,組成系統(tǒng)的物理元素清單,成本/效益分析;對最佳方案的概括描述,精化的數(shù)據(jù)流圖,用層次圖或結(jié)構(gòu)圖描繪的軟件結(jié)構(gòu),用IPO圖或其他工具(例如,PDL語言)簡要描述的各個模塊的算法,模塊問的接口(2)用戶手冊。(3)測試計劃,包括測試策略,測試方案,預(yù)期的測試結(jié)果,測試進度計劃等。(4)詳細的實現(xiàn)計劃。(5)數(shù)據(jù)庫設(shè)計結(jié)果。9.審查和復(fù)審1.模塊化(1)模塊(2)模塊化(3)優(yōu)點2.抽象(1)定義(2)原理(3)層次分析(4)在軟件工程中的應(yīng)用(5)優(yōu)點3.逐步求精(1)定義(2)要求同時處理7個以上知識塊。(3)原理②求精實際上是細化過程。人們從在高抽象級別定義的功能陳述(或信息描述)開始,也就(4)抽象與求精4.信息隱藏和局部化信息隱藏原理是在設(shè)計和確定的模塊中,使一個模塊內(nèi)包含的信息(過程和數(shù)據(jù))對于不需(2)局部化與信息隱藏(3)優(yōu)點5.模塊獨立(1)定義開發(fā)具有獨立功能而且和其他模塊之間沒有過多的相(2)重要性(3)耦合①定義的可理解性、可測試性、可靠性和可維護性。耦合衡量不同模塊彼此之間互相依賴(連接)a.完全獨立b.數(shù)據(jù)耦合c.控制耦合如果兩個模塊彼此間通過參數(shù)交換信息,并且傳遞的信息中包以以數(shù)據(jù)的形式出現(xiàn)),則稱它們是控制耦合。控制耦合是中等程度的耦合,它增加了系統(tǒng)d.特征耦合e.公共環(huán)境耦合f.內(nèi)容耦合(4)內(nèi)聚a.內(nèi)聚和耦合是密切相關(guān)的,模塊內(nèi)的高內(nèi)聚往往意味著模塊間的b.內(nèi)聚和耦合都是進行模塊化設(shè)計的工具,但內(nèi)聚更重要,應(yīng)該把更多注意力集中到提高a.低內(nèi)聚b.中內(nèi)聚c.高內(nèi)聚1.改進軟件結(jié)構(gòu)提高模塊獨立性2.模塊規(guī)模應(yīng)該適中(1)過大的模塊往往是由于分解不充分,但是進一步分解必須符合問題結(jié)構(gòu),分解后不應(yīng)(2)過小的模塊開銷大于有效操作,而且模塊數(shù)目過多將使系統(tǒng)接口復(fù)雜。因此過小的模3.深度、寬度、扇出和扇入都應(yīng)適當(dāng)(1)深度(2)寬度(3)扇出③一個設(shè)計得好的典型系統(tǒng)的平均扇出通常是3或4。(4)扇入去(底層模塊有高扇入)。4.模塊的作用域應(yīng)該在控制域之內(nèi)(1)定義(2)規(guī)則(3)修改方法5.力爭降低模塊接口的復(fù)雜程度并且和模塊的功能一致。接口復(fù)雜或不一致(即看起來傳遞的數(shù)據(jù)之間沒有聯(lián)系)是緊耦合6.設(shè)計單入口單出口的模塊7.模塊功能應(yīng)該可以預(yù)測(1)可預(yù)測(2)過分局限1.層次圖(1)定義調(diào)用關(guān)系而不像層次方框圖那樣表示組成關(guān)系。圖5-1是層次圖的圖5-1正文加工系統(tǒng)的層次圖(2)適用性(1)定義最頂層的方框之外,每個方框都加了編號。圖5-1加了編號后得到圖5-2。圖5-2帶編號的層次圖(H圖)(2)特征3.結(jié)構(gòu)圖(1)定義b.方框之間的箭頭(或直線)表示模塊的調(diào)用關(guān)系;b.表示模塊M循環(huán)調(diào)用模塊A、B和C,如圖5-5所示。圖5-4判定為真時調(diào)用A,為假時調(diào)用B圖5-5模塊M循環(huán)調(diào)用模塊A、B、C(2)與層次圖的共性(3)適用性利用IPO圖或數(shù)據(jù)字典中的信息得到模塊調(diào)用時傳遞的信息,從而由層次圖導(dǎo)出結(jié)構(gòu)圖的(1)定義(2)目標(biāo)(3)信息流的類型①變換流圖5-6變換流圖5-6是一個標(biāo)準(zhǔn)的變換流,變換流具有如下特征:b.進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理后沿輸出通路變成外部形式離開軟件系。②事務(wù)流圖5-7事務(wù)流入數(shù)據(jù)的類型在若干個動作序列中選出一個來執(zhí)行。圖5-7中的處理T稱為事務(wù)中心,它完b.分析每個事務(wù)以確定它的類型;c.根據(jù)事務(wù)類型選取一條活動通路。2.設(shè)計過程圖5-8說明了使用面向數(shù)據(jù)流方法逐步設(shè)計的過程。圖5-8面向數(shù)據(jù)流方法的設(shè)計過程3.變換分析(1)例子③指示每小時英里數(shù)(mph),行駛的里程,每加侖油行駛的英里數(shù)(mpg)等。⑤超速警告:如果車速超過55英里/小時,則發(fā)出超速警告鈴聲。(2)設(shè)計步驟b.實際操作假設(shè)在需求分析階段產(chǎn)生的數(shù)字儀表板系統(tǒng)的數(shù)據(jù)流圖如圖5-9所示圖5-9數(shù)字儀表板系統(tǒng)的數(shù)據(jù)流圖a.方法b.實際操作從圖5-9可以看出,數(shù)據(jù)沿著兩條輸入通路進入系統(tǒng),然后沿著5條通路離開,沒有明顯的④確定輸入流和輸出流的邊界,從而孤立出變換中心b.實際操作對于汽車數(shù)字儀表板的例子,設(shè)計人員確定的流的邊界如圖5-10所示。圖5-10具有邊界的數(shù)據(jù)流圖圖5-11第一級分解的方法圖5-11說明了第一級分解的方法。位于軟件結(jié)構(gòu)最頂層的控制模塊Cm協(xié)調(diào)下述從屬的控第一,輸入信息處理控制模塊Ca,協(xié)調(diào)對所有輸入數(shù)據(jù)的接收。第二,變換中心控制模塊Ct,管理對內(nèi)部形式的數(shù)據(jù)的所有操作。第三,輸出信息處理控制模塊Ce,協(xié)調(diào)輸出信息的產(chǎn)生過程。c.實際操作對于數(shù)字儀表板的例子,第一級分解得出的結(jié)構(gòu)如圖5-12所示。每個控制模塊的名字表明圖5-12數(shù)字儀表板系統(tǒng)的第一級分解a.定義圖5-13表示進行第二級分解的普遍途徑。圖5-13第二級分解的方法構(gòu)中Ca控制下的一個低層模塊;第二,沿輸出通路向外移動,把輸出通路中每個處理映射成直接或間接受模塊Ce控制的一第三,最后把變換中心內(nèi)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論