




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
知識重點(軟件工程部分)
一、軟件工程基本原理1.1軟件危機1.2軟件工程1.3軟件生命周期1.4軟件過程軟件及軟件工程為什么要講軟件和軟件工程只有對軟件和軟件的開發(fā)過程有充分的認識,才能更好的開發(fā)出過程受控、質(zhì)量受控的軟件產(chǎn)品。對于軟件和軟件開發(fā)過程的認識是困難的,存在很多困惑,需要對此有深刻的認識。一些對軟件的偏見或誤解軟件就是程序,軟件開發(fā)就是編寫程序。編完了程序,就一切OK了。掌握了最新的語言和工具,就能寫程序了。軟件是靈活的,軟件的修改很容易。只要會編程,就能寫軟件,就是程序員;一個公司,只要召些程序員,就能開發(fā)好的軟件產(chǎn)品。只要有幾個有經(jīng)驗的程序員,再找些兼職的大學生,就能組成一個軟件公司。什么是軟件軟件的定義—軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,軟件由三部分組成:程序:在運行時,能提供所希望的功能和性能的指令集數(shù)據(jù):使程序能夠正確運行的數(shù)據(jù)文檔:描述程序研制過程、方法及使用的文檔軟件的開發(fā),絕不僅僅是編寫程序軟件可看做一個信息交換器,產(chǎn)生、管理、獲取、修改、顯示或傳送信息軟件≠程序1.1軟件危機軟件危機的介紹隨著計算機應(yīng)用的日益普及,軟件數(shù)量急劇膨脹軟件開發(fā)和維護成本越來越大,令人吃驚地高失敗的軟件開發(fā)項目屢見不鮮什么是軟件危機、軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題1.1軟件危機軟件危機的表現(xiàn)對軟件開發(fā)成本和進度的估計常常很不準確用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生軟件產(chǎn)品的質(zhì)量往往靠不住軟件常常是不可維護的軟件通常沒有適當?shù)奈臋n資料軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升軟件開發(fā)生產(chǎn)率提高的速度,遠遠跟不上計算機應(yīng)用迅速普及深入的趨勢1.1軟件危機軟件危機的原因軟件規(guī)模越來越大,軟件復雜度越來越高軟件開發(fā)缺乏正確的理論指導,過分依靠個人技巧和創(chuàng)造性沒有充分的文檔資料(軟件配置主要包括程序、文檔和數(shù)據(jù)等)軟件可靠性缺少度量的標準,質(zhì)量無法保證輕視軟件維護(維護費用占軟件總費用的55%-70%)用戶需求沒有完整準確的認識,就匆忙著手編寫程序(主要原因)1.1軟件危機軟件危機的原因軟件本身的特點軟件開發(fā)與維護的方法不正確如何克服軟件危機:軟件工程概念:軟件生命周期1.1軟件危機消除軟件危機的途徑對計算機軟件正確認識。(軟件不僅僅是程序)推廣使用開發(fā)軟件成功的技術(shù)和方法,研究探索更好更有效的技術(shù)和方法,消除錯誤概念和做法。開發(fā)和使用更好的軟件工具。需要組織管理措施。軟件工程正是從技術(shù)和管理兩方面研究如何更好地開發(fā)和維護計算機軟件的一門新興學科。無章法(個人英雄主義)工程項目管理模式(團隊合作開發(fā))1.2軟件工程軟件工程1968年秋,提出軟件工程IEEE1993年給出定義:1)將系統(tǒng)化、規(guī)范化、可量化的工程原則和方法,應(yīng)用于軟件的開發(fā)、運行和維護。2)對1)中方法的理論研究。1.2軟件工程概括地說,軟件工程是指導計算機軟件開發(fā)和維護的工程學科。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當前能夠得到的最好的技術(shù)方法結(jié)合起來,經(jīng)濟地開發(fā)出高質(zhì)量的軟件并有效地維護它。軟件工程基本原理(開發(fā)與維護的指導)用分階段的生命周期計劃嚴格管理堅持進行階段評審實行嚴格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組的人員應(yīng)該少而精承認不斷改進軟件工程實踐的必要性1.2軟件工程把在軟件生命周期全過程中使用的一整套技術(shù)的集合稱為方法學(methodology),也稱范型(paradigm)。軟件工程方法學三個要素:方法、工具和過程。方法是完成軟件開發(fā)各項任務(wù)的技術(shù),回答“如何做”;工具是為方法的運用提供自動或半自動軟件支撐環(huán)境,回答“用什么做”;過程是為獲得高質(zhì)量的軟件要完成的一系列任務(wù)的框架,規(guī)定完成各項任務(wù)步驟,回答“如何控制、協(xié)調(diào)、保證質(zhì)量”。目前使用得最廣泛的軟件工程方法學傳統(tǒng)方法學:也稱為生命周期方法學或結(jié)構(gòu)化范型。
面向?qū)ο蠓椒▽W1.2軟件工程傳統(tǒng)方法的特點生命周期模型軟件過程劃分為若干個階段每個階段有各自的任務(wù)階段之間有某種順序性傳統(tǒng)方法的缺點當軟件規(guī)模較大,或?qū)浖男枨笫悄:幕螂S時間變化的時候,使用結(jié)構(gòu)化范型開發(fā)軟件往往不成功;此外,使用傳統(tǒng)方法學開發(fā)出的軟件,維護起來通常都很困難。1.2軟件工程面向?qū)ο蠓椒ǎ簩ο笞鳛槿诤蠑?shù)據(jù)及在數(shù)據(jù)之上的操作行為的統(tǒng)一的軟件構(gòu)件。把所有對象都劃分成類(Class)。每個類都定義了一組數(shù)據(jù)和一組操作。按照父類(或稱為基類)與子類(或稱為派生類)的關(guān)系,把若干個相關(guān)類組成一個層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級)。在類等級中,下層派生類自動擁有上層基類中定義的數(shù)據(jù)和操作,稱為繼承。對象彼此間僅能通過發(fā)送消息互相聯(lián)系-封裝性。1.2軟件工程面向?qū)ο蟮奶攸c面向?qū)ο蠓椒▽W的出發(fā)點和基本原則,是盡可能模擬人類習慣的思維方式。用面向?qū)ο蠓椒▽W開發(fā)軟件的過程,是一個主動地多次反復迭代的演化過程。概念和表示方法上的一致性,階段間平滑(無縫)過渡。特殊到一般的歸納思維過程;一般到特殊的演繹思維過程。(繼承的思想)最終產(chǎn)品中的對象與現(xiàn)實世界中的實體相對應(yīng),降低了復雜性,提高了可理解性,簡化了軟件的開發(fā)和維護工作。對象是相對獨立的實體,容易在軟件產(chǎn)品中重復使用,促進了軟件重用。面用對象方法特有的繼承性,也進一步提高了面向?qū)ο筌浖目芍赜眯浴?.3軟件生命周期
軟件生命周期由軟件定義、軟件開發(fā)和運行維護三個時期組成,每個時期又可進一步劃分成若干個階段,每個階段有各自的任務(wù)。1軟件定義2軟件開發(fā)3運行維護問題定義(領(lǐng)域分析1)確定要開發(fā)軟件系統(tǒng)的總目標必須回答的關(guān)鍵問題是:“要解決的問題是什么”。2023/12/9大連理工大學軟件學院192.可行性研究(領(lǐng)域分析2,問題背景)給出功能、性能、可靠性以及接口等方面的要求估計可利用的資源(計算機硬件、軟件、人力等)、成本、效益、開發(fā)進度制定出完成開發(fā)任務(wù)的實施計劃,連同可行性研究報告,提交管理部門審查回答的關(guān)鍵問題是:“上一個階段所確定的問題是否有行得通的解決辦法”。2023/12/9203.需求分析對待開發(fā)軟件提出的需求進行分析并給出詳細的定義用正式文檔準確地記錄對目標系統(tǒng)的需求,這份文檔通常稱為規(guī)格說明(specification)。提交管理機構(gòu)評審仍然不是具體地解決客戶的問題,而是準確地回答“目標系統(tǒng)必須做什么”。了解問題,不能準確表達,不知道怎樣利用計算機實現(xiàn)了解軟件實現(xiàn),不清楚用戶要求與用戶配合,充分交流,得出系統(tǒng)需求需求分析概要設(shè)計概括地回答“怎樣實現(xiàn)目標系統(tǒng)?”這個問題。概要設(shè)計又稱為初步設(shè)計、邏輯設(shè)計、高層設(shè)計或總體設(shè)計。可以給出實現(xiàn)目標系統(tǒng)的幾種可能的方案。另一項主要任務(wù)是設(shè)計程序的體系結(jié)構(gòu),即確定程序由哪些模塊組成以及模塊間的關(guān)系。詳細設(shè)計任務(wù)是把解法具體化,回答“應(yīng)該怎樣具體地實現(xiàn)這個系統(tǒng)”這個關(guān)鍵問題。還不是編寫程序,而是設(shè)計出程序的詳細規(guī)格說明。又稱為模塊設(shè)計、物理設(shè)計或低層設(shè)計。編碼和單元測試關(guān)鍵任務(wù)是寫出正確的容易理解、容易維護的程序模塊,并測試。綜合測試關(guān)鍵任務(wù)是通過各種類型的測試(及相應(yīng)的調(diào)試)使軟件達到預定的要求。主要包括:集成測試和驗收測試分析系統(tǒng)的可靠性記錄測試計劃、詳細測試方案及實際測試結(jié)果,作為軟件配置的一部分。軟件維護維護階段的關(guān)鍵任務(wù)是,通過各種必要的維護活動使系統(tǒng)持久地滿足用戶的需要。通常有四類維護活動改正性維護,也就是診斷和改正在使用過程中發(fā)現(xiàn)的軟件錯誤;適應(yīng)性維護,即修改軟件以適應(yīng)環(huán)境的變化;完善性維護,即根據(jù)用戶的要求改進或擴充軟件使它更完善;預防性維護,即修改軟件為將來的維護活動預先做準備。1.4軟件過程在實際軟件開發(fā)時,軟件規(guī)模、種類、開發(fā)環(huán)境及開發(fā)時使用的技術(shù)方法等因素,影響階段的劃分。軟件開發(fā)軟件維護軟件定義生命周期模型規(guī)定了把生命周期劃分成哪些階段及各個階段的執(zhí)行順序,因此,也稱為過程模型。瀑布模型
在20世紀80年代之前,唯一被廣泛采用的生命周期模型現(xiàn)在仍然是軟件工程中應(yīng)用得最廣泛的過程模型。瀑布模型傳統(tǒng)的瀑布模型開發(fā)軟件特點:階段間具有順序性和依賴性前一階段完成后開始后一階段前一階段輸出作為后一階段輸入瀑布模型傳統(tǒng)的瀑布模型開發(fā)軟件特點:推遲實現(xiàn)不可急于求成清楚地區(qū)分邏輯設(shè)計與物理實現(xiàn)盡可能推遲程序的物理實現(xiàn)瀑布模型傳統(tǒng)的瀑布模型開發(fā)軟件特點:質(zhì)量保證
每個階段都必須完成規(guī)定的文檔每個階段結(jié)束前都要對所完成的文檔進行評審
瀑布模型不希望有“變化”變化來的越晚,付出的代價越高。設(shè)計階段過多的假設(shè),導致理想化、一廂情愿的東西過多。瀑布模型傳統(tǒng)的瀑布模型實際的瀑布模型瀑布模型帶“反饋環(huán)”(實線箭頭表示開發(fā)過程,虛線箭頭表示維護過程)發(fā)現(xiàn)錯誤時,需要沿圖中左側(cè)的反饋線返回前面的階段,修正前面階段的產(chǎn)品之后再繼續(xù)完成后面階段的任務(wù)。瀑布模型優(yōu)點:一定程度解決“變化”的問題。缺點:文檔驅(qū)動,完全依賴書面文字??焖僭湍P涂焖俳⑵鹂梢栽谟嬎銠C上運行的程序,其功能往往是最終產(chǎn)品功能的子集。模型的第一步是快速建立一個能反映用戶主要需求的原型系統(tǒng),讓用戶試用,通過實踐來了解目標系統(tǒng)的概貌。(實線箭頭表示開發(fā)過程,虛線箭頭表示維護過程)。快速原型模型用戶試用
提出修改意見
快速地修改原型系統(tǒng)
用戶再次試用
…一旦用戶認為原型系統(tǒng)確實能做他們所需要的工作,開發(fā)人員便可據(jù)此書寫規(guī)格說明文檔,根據(jù)這份文檔開發(fā)出的軟件可以滿足用戶的真實需求??焖僭湍P涂焖僭偷谋举|(zhì)是“快速”。開發(fā)人員應(yīng)該盡可能快地建造出原型系統(tǒng),以加速軟件開發(fā)過程,節(jié)約軟件開發(fā)成本。原型的用途是獲知用戶的真正需求,一旦需求確定了,原型將被拋棄。(原型通常沒有嚴格的規(guī)范化,缺少文檔,難以維護)快速原型模型增量模型每個構(gòu)件由多個相互作用的模塊構(gòu)成,并且能夠完成特定的功能。第一個增量構(gòu)件往往實現(xiàn)軟件的基本需求,提供最核心的功能。(滾雪球方式)增量模型,也稱漸增模型。把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計、編碼、集成和測試。增量模型增量模型:逐步增加系統(tǒng)功能。較短時間內(nèi)提交可以工作的產(chǎn)品。減少全新產(chǎn)品帶給客戶的沖擊。困難:需要開放的架構(gòu)設(shè)計。瀑布、快速原型:力求一次性給用戶完整的系統(tǒng)。逐個構(gòu)件進行分析、設(shè)計。風險更大。實現(xiàn)各個構(gòu)件之前完成全部需求分析、規(guī)格說明、概要設(shè)計。螺旋模型應(yīng)采取適當措施消除或減少開發(fā)軟件時的風險。螺旋模型的基本思想:使用原型及其他方法來盡量降低風險??梢岳斫鉃樵诿總€階段之前都增加了風險分析過程的快速原型模型。簡化的螺旋模型螺旋模型帶箭頭的點劃線的長度代表當前累計的開發(fā)費用。螺線旋過的角度值代表開發(fā)進度。每周期對應(yīng)一個開發(fā)階段完整的螺旋模型螺旋模型優(yōu)點:對可選方案和約束條件的強調(diào)有利于軟件的重用,也有助于把軟件質(zhì)量作為軟件開發(fā)的目標減少過多測試或測試不足帶來的風險維護作為開發(fā)的一個周期,與開發(fā)沒有本質(zhì)區(qū)別風險驅(qū)動:及時終止項目適用于內(nèi)部開發(fā)的大規(guī)模軟件項目弱點:風險驅(qū)動:需要專業(yè)的風險評估人員,花費風險分析的費用噴泉模型迭代是軟件開發(fā)過程中普遍存在的一種內(nèi)在屬性。軟件過程各個階段之間的迭代或一個階段內(nèi)各個工作步驟之間的迭代,在面向?qū)ο蠓缎椭斜仍诮Y(jié)構(gòu)化范型中更常見。噴泉模型是典型的面向?qū)ο笊芷谀P汀娙P兔嫦驅(qū)ο蠓椒ǎ簢@面向問題的“對象”展開,分析、設(shè)計、編碼不存在明顯的邊界。圓圈重疊:開發(fā)活動之間存在交迭。向下箭頭:階段內(nèi)的迭代(求精)。概念和表示方法的一致性:保證無縫過渡。體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性。噴泉模型把一個線性過程作為總目標——避免開發(fā)過程過分無序。快速原型模型圖中的中心垂線思考題假設(shè)要你開發(fā)一個軟件,該軟件的功能是把讀入的浮點數(shù)開平發(fā),所得結(jié)果應(yīng)該精確到小數(shù)點后4位。一旦實現(xiàn)并測試完之后,該產(chǎn)品將被拋棄。你打算選用哪種軟件生命周期模型?請說明理由。思考題答案:瀑布模型。需求明確、算法成熟,無需通過原型來分析需求。實現(xiàn)之后即被拋棄,無需使用有助于提高軟件可維護性的增量模型或螺旋模型。2023/12/949思考題假設(shè)你被任命為一家軟件公司的項目負責人,你的工作是管理該公司已被廣泛應(yīng)用的字處理軟件的新版本開發(fā)。由于市場競爭激烈,公司規(guī)定了嚴格的完成期限并且已對外公布。你打算采用哪種軟件生命周期模型?請說明理由。2023/12/950思考題2、增量模型。時間緊,需要選擇能夠加速產(chǎn)品開發(fā)的模型,增量模型可以實現(xiàn)任務(wù)并行。開發(fā)軟件的新版本,舊版本即相當于原型。已經(jīng)被廣泛應(yīng)用,以后可能擴充,體系結(jié)構(gòu)設(shè)計成開放式。二、可行性研究2.1可行性研究的任務(wù)2.2可行性研究過程2.3系統(tǒng)流程圖2.4數(shù)據(jù)流圖許多問題不可能在預定的系統(tǒng)規(guī)模或時間期限內(nèi)解決目的:使用最小的代價,盡可能在短的時間內(nèi),確定問題是否能夠解決2.1可行性研究的任務(wù)確定問題是否值得去解分析可能的解法判定系統(tǒng)規(guī)模和目標是否能夠?qū)崿F(xiàn)效益是否可觀較高層次的系統(tǒng)分析和設(shè)計過程2.1可行性研究的任務(wù)進一步分析和澄清“問題定義”是否正確如有錯誤加以改正如有約束和限制必須清楚的列出導出系統(tǒng)邏輯模型
探索實現(xiàn)方案(若干種)
每種方案分別研究可行性2.1可行性研究的任務(wù)可行性的4個方面技術(shù)可行性經(jīng)濟可行性操作可行性法律可行性預期工程總成本的5%~10%3.1需求分析的任務(wù)需求分析的任務(wù)就是借助于當前系統(tǒng)的邏輯模型導出目標系統(tǒng)的邏輯模型,解決目標系統(tǒng)的“做什么”的問題。軟件需求分析階段的工作,可以分為以下4個方面:對問題的識別分析與綜合編寫需求分析文檔需求分析評審
結(jié)構(gòu)化設(shè)計傳統(tǒng)的軟件工程方法學采用結(jié)構(gòu)化設(shè)計(StructuredDesign,SD)技術(shù)完成軟件設(shè)計工作,分為兩階段??傮w設(shè)計(概要設(shè)計、初步設(shè)計)詳細設(shè)計總體設(shè)計基本目的:概括地說,系統(tǒng)應(yīng)該如何實現(xiàn)。劃分系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫、人工過程、文檔。設(shè)計軟件的結(jié)構(gòu)——每個程序由哪些模塊組成,這些模塊相互間的關(guān)系結(jié)構(gòu)化設(shè)計與結(jié)構(gòu)化分析關(guān)系軟件設(shè)計必須依據(jù)對軟件的需求來進行,結(jié)構(gòu)化分析的結(jié)果為結(jié)構(gòu)化設(shè)計提供了最基本的輸入信息。分析模型的每個元素都提供了創(chuàng)建設(shè)計模型時所需要的信息。下圖描繪了軟件設(shè)計過程中的信息流。由數(shù)據(jù)模型、功能模型和行為模型清楚地表示的軟件需求被傳送給軟件設(shè)計者,他們使用適當?shù)脑O(shè)計方法完成數(shù)據(jù)設(shè)計、體系結(jié)構(gòu)設(shè)計、接口設(shè)計和過程設(shè)計。結(jié)構(gòu)化設(shè)計與結(jié)構(gòu)化分析關(guān)系在軟件設(shè)計期間所做出的決策,將最終決定軟件開發(fā)能否成功,更重要的是,這些設(shè)計決策將決定軟件維護的難易程度。設(shè)計是軟件開發(fā)過程中決定產(chǎn)品質(zhì)量的關(guān)鍵階段:提供了可以進行質(zhì)量評估的軟件表示把用戶需求準確轉(zhuǎn)變?yōu)樽罱K產(chǎn)品是后續(xù)所有軟件開發(fā)與維護步驟的基礎(chǔ)設(shè)計的重要性設(shè)計過程總體設(shè)計的兩個階段系統(tǒng)設(shè)計階段,確定系統(tǒng)的具體實現(xiàn)方案結(jié)構(gòu)設(shè)計階段,確定軟件結(jié)構(gòu)1、設(shè)想供選擇的方案2、選取合理的方案系統(tǒng)流程圖組成系統(tǒng)的物理元素清單成本/效益分析實現(xiàn)這個系統(tǒng)的進度計劃
設(shè)計過程3、推薦最佳方案對比各種合理方案,推薦一個最佳方案制定詳細的實現(xiàn)計劃4、功能分解設(shè)計所有程序和文件(或數(shù)據(jù)庫)結(jié)構(gòu)設(shè)計——程序由哪些模塊組成、模塊間的關(guān)系過程設(shè)計——確定每個模塊的處理過程(詳細設(shè)計階段任務(wù))
設(shè)計過程從實現(xiàn)角度把復雜功能進一步分解將數(shù)據(jù)流圖細化使用IPO圖描述每個算法5、設(shè)計軟件結(jié)構(gòu)把模塊組織成良好的層次(層次圖、結(jié)構(gòu)圖)6、設(shè)計數(shù)據(jù)庫7、制定測試計劃模塊獨立“模塊獨立化”原因:易于開發(fā)易于測試和維護模塊的獨立程度可以由兩個定性標準來度量,這兩個標準分別稱為內(nèi)聚和耦合。耦合衡量不同模塊彼此間互相依賴(連接)緊密程度;內(nèi)聚衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。耦合是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。耦合強弱取決于模塊間接口的復雜程度,進入或訪問一個模塊的點,以及通過接口的數(shù)據(jù)。在軟件設(shè)計中應(yīng)該追求盡可能松散耦合的系統(tǒng)。在這樣的系統(tǒng)中可以研究、測試或維護任何一個模塊,而不需要對系統(tǒng)的其他模塊有很多了解。此外,由于模塊間聯(lián)系簡單,發(fā)生在一處的錯誤傳播到整個系統(tǒng)的可能性就很小。因此,模塊間的耦合程度強烈影響系統(tǒng)的可理解性、可測試性、可靠性和可維護性。
耦合常見的耦合程度:無耦合:任何一個模塊都獨立工作,現(xiàn)實系統(tǒng)中不存在數(shù)據(jù)耦合:模塊間交換的信息只有數(shù)據(jù)(例如:函數(shù)參數(shù)傳遞)控制耦合:模塊間傳遞控制信息(例如:傳遞參數(shù)flag,用于控制不同功能)特征耦合:把整個數(shù)據(jù)結(jié)構(gòu)作為參數(shù)傳遞,而被調(diào)用的模塊只需要使用其中一部分數(shù)據(jù)(例如:日期結(jié)構(gòu))公共環(huán)境耦合:多個模塊通過公共數(shù)據(jù)環(huán)境相互作用(公共環(huán)境包括:全局變量、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)、文件、物理設(shè)備等)松散的公共環(huán)境耦合(一個讀數(shù)據(jù),一個取數(shù)據(jù))緊密的公共環(huán)境耦合(兩個既讀數(shù)據(jù)又取數(shù)據(jù))內(nèi)容耦合:一個模塊訪問另一個模塊的內(nèi)部數(shù)據(jù)一個模塊不通過正常入口而轉(zhuǎn)到另一個模塊的內(nèi)部兩個模塊有一部分程序代碼重迭一個模塊有多個入口
耦合總之,耦合是影響軟件復雜程度的一個重要因素。應(yīng)該采取下述設(shè)計原則:盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。高耦合:一個程序員完成一個大任務(wù)低耦合:兩個程序員各完成一個小任務(wù)耦合思考題確定模塊之間的耦合類型。
假設(shè)模塊P、T、U更新同一個數(shù)據(jù)庫數(shù)據(jù)耦合控制耦合數(shù)據(jù)or特征P、T、U公共環(huán)境耦合內(nèi)聚標志一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度,它是信息隱蔽和局部化概念的自然擴展。簡單地說,理想內(nèi)聚的模塊只做一件事情。力求高內(nèi)聚;通常中等程度的內(nèi)聚也是可以采用的,而且效果和高內(nèi)聚相差不多;低內(nèi)聚很不好,不要使用。內(nèi)聚內(nèi)聚和耦合是密切相關(guān)的,模塊內(nèi)的高內(nèi)聚往往意味著模塊間的松耦合。內(nèi)聚和耦合都是進行模塊化設(shè)計的有力工具,但是實踐表明內(nèi)聚更重要,應(yīng)該把更多注意力集中到提高模塊的內(nèi)聚程度上。低內(nèi)聚:偶然內(nèi)聚:一個模塊任務(wù)間關(guān)系松散或者沒有關(guān)系邏輯內(nèi)聚:一個模塊完成的任務(wù)在邏輯上屬于相同或者相似的一類時間內(nèi)聚:模塊包含的任務(wù)必須在同一段時間內(nèi)執(zhí)行內(nèi)聚中內(nèi)聚過程內(nèi)聚:一個模塊內(nèi)的處理元素相關(guān),并且以特定的次序執(zhí)行通信內(nèi)聚:模塊中所有元素都使用同一個輸入數(shù)據(jù)、產(chǎn)生同一個輸出數(shù)據(jù)高內(nèi)聚順序內(nèi)聚:一個模塊內(nèi)的處理元素和同一個功能密切相關(guān),并且必須順序執(zhí)行功能內(nèi)聚:模塊內(nèi)所有處理元素屬于一個整體,完成一個單一的功能內(nèi)聚事實上,沒有必要精確確定內(nèi)聚的級別。重要的是設(shè)計時力爭做到高內(nèi)聚,并且能夠辨認出低內(nèi)聚的模塊,有能力通過修改設(shè)計提高模塊的內(nèi)聚程度,降低模塊間的耦合程度,從而獲得較高的模塊獨立性。內(nèi)聚思考題確定每個模塊的內(nèi)聚類型。功能內(nèi)聚偶然內(nèi)聚啟發(fā)規(guī)則軟件工程師們在開發(fā)計算機軟件的長期實踐中積累了豐富的經(jīng)驗,總結(jié)這些經(jīng)驗得出了一些啟發(fā)規(guī)則。啟發(fā)規(guī)則雖然不像前兩節(jié)講述的基本原理那樣普遍適用,但是在許多場合仍然能給軟件工程師有益的啟示,往往能幫助他們找到改進軟件設(shè)計提高軟件質(zhì)量的途徑,因此有助于實現(xiàn)有效的模塊化。1改進軟件結(jié)構(gòu)提高模塊獨立性2模塊規(guī)模應(yīng)該適中3深度、寬度、扇出和扇入都應(yīng)適當4模塊的作用域應(yīng)該在控制域之內(nèi)5力爭降低模塊接口的復雜程度6設(shè)計單入口單出口的模塊7模塊功能應(yīng)該可以預測啟發(fā)規(guī)則1改進軟件結(jié)構(gòu)提高模塊獨立性軟件初步結(jié)構(gòu)
審查分析
模塊分解或合并
降低耦合提高內(nèi)聚比如:多個模塊共有的子功能可以獨立成一個模塊2模塊規(guī)模應(yīng)該適中規(guī)模過大:理解不充分,進行分解規(guī)模過?。合到y(tǒng)接口復雜啟發(fā)規(guī)則3深度、寬度、扇出和扇入都應(yīng)適當深度:軟件結(jié)構(gòu)中控制的層數(shù)寬度:軟件結(jié)構(gòu)中同一個層次上的模塊總數(shù)最大值扇出:一個模塊直接控制(調(diào)用)的模塊數(shù)目扇入:有多少個上級模塊直接調(diào)用它啟發(fā)規(guī)則啟發(fā)規(guī)則4模塊的作用域應(yīng)該在控制域之內(nèi)
啟發(fā)規(guī)則作用域:受該模塊內(nèi)一個判定影響的所有模塊的集合??刂朴颍哼@個模塊本身以及所有直接或者間接從屬于它的模塊的集合。4模塊的作用域應(yīng)該在控制域之內(nèi)
啟發(fā)規(guī)則例:模塊A做出的判定影響模塊G。模塊G在模塊A的控制域中模塊G不在模塊A的作用域中出現(xiàn)控制耦合,如何調(diào)整?方案1:模塊A移到模塊M中方案2:模塊G移動模塊A底下5力爭降低模塊接口的復雜程度仔細設(shè)計模塊接口——信息傳遞簡單、和模塊的功能一致例:求一元二次方程的根模塊QUAD_ROOT(TBL,X),其中TBL為系數(shù)數(shù)組,X為根數(shù)組。參數(shù)含義不清晰,容易引起混淆產(chǎn)生錯誤,改為: QUAD_ROOT(A,B,C,ROOT1,ROOT2),其中A、B、C為系數(shù),ROOT1和ROOT2為根。啟發(fā)規(guī)則5力爭降低模塊接口的復雜程度接口復雜接口不一致(即看起來傳遞的數(shù)據(jù)之間沒有聯(lián)系)是緊耦合或低內(nèi)聚的征兆。
啟發(fā)規(guī)則6設(shè)計單入口單出口的模塊避免內(nèi)容耦合
7模塊功能應(yīng)該可以預測模塊可預測:相同的輸入產(chǎn)生相同的輸出啟發(fā)規(guī)則五、系統(tǒng)實現(xiàn)1、實現(xiàn)2、白盒測試3、黑盒測試通常把編碼和測試統(tǒng)稱為實現(xiàn)。所謂編碼就是把軟件設(shè)計翻譯成計算機可以理解的形式——用某種程序設(shè)計語言書寫的程序。作為軟件工程過程的一個階段,編碼是設(shè)計的自然結(jié)果,因此,程序的質(zhì)量主要取決于軟件設(shè)計的質(zhì)量。但是,所選用的程序設(shè)計語言的特點和編碼風格也會對程序的可靠性、可讀性、可測試性和可維護性產(chǎn)生深遠的影響。無論怎樣強調(diào)軟件測試的重要性和它對軟件可靠性的影響都不過分人的主觀認識不可能完全符合客觀現(xiàn)實與工程密切相關(guān)的各類人員之間的通信和配合也不可能完美無缺在軟件生命周期的每個階段都不可避免地會產(chǎn)生差錯階段審查,盡可能早地發(fā)現(xiàn)并糾正差錯經(jīng)驗表明階段審查并不能發(fā)現(xiàn)所有差錯此外在編碼過程中還不可避免地會引入新的錯誤2023/12/988測試的目的就是在軟件投入生產(chǎn)性運行之前,盡可能多地發(fā)現(xiàn)軟件中的錯誤目前軟件測試仍然是保證軟件質(zhì)量的關(guān)鍵步驟,它是對軟件規(guī)格說明、設(shè)計和編碼的最后復審。軟件測試在軟件生命周期中橫跨兩個階段。在編寫出每個模塊之后就對它做必要的測試,稱為單元測試,模塊的編寫者和測試者是同一個人,編碼和單元測試屬于軟件生命周期的同一個階段。對軟件系統(tǒng)還應(yīng)該進行各種綜合測試,這是軟件生命周期中的另一個獨立的階段,通常由專門的測試人員承擔這項工作。2023/12/990大量統(tǒng)計資料表明,軟件測試的工作量往往占軟件開發(fā)總工作量的40%以上,在極端情況,測試那種關(guān)系人的生命安全的軟件所花費的成本,可能相當于軟件工程其他步驟總成本的3~5倍。
測試目標是發(fā)現(xiàn)軟件中的錯誤,但是,發(fā)現(xiàn)錯誤并不是最終目的。軟件工程的根本目標是開發(fā)出高質(zhì)量的完全符合用戶需要的軟件,因此,通過測試發(fā)現(xiàn)錯誤之后還必須診斷并改正錯誤,這就是調(diào)試的目的。調(diào)試是測試階段最困難的工作。在對測試結(jié)果進行收集和評價的時候,軟件所達到的可靠性也開始明朗了。軟件可靠性模型使用故障率數(shù)據(jù),估計軟件將來出現(xiàn)故障的情況并預測軟件的可靠性。思考題根據(jù)下面的規(guī)格說明,利用等價類劃分的方法,給出測試用例。"一個程序讀入3個整數(shù),它們分別代表一個三角形的3個邊長。該程序判斷所輸入的整數(shù)是否構(gòu)成一個三角形,以及該三角形是一般的、等腰的或等邊的,并將結(jié)果打印出來。"要求:設(shè)三角形的3條邊分別為A、B、C,列出等價類,設(shè)計測試用例。思考題答案(1)用例1(3,4,5),輸出構(gòu)成三角形(2)用例2(0,4,4),輸出不構(gòu)成三角形(3)用例3(3,4,10),輸出不構(gòu)成三角形(4)用例4(3,3,4),輸出構(gòu)成等腰三角形(5)用例5(3,4,5),輸出不構(gòu)成等腰三角形(同用例1)(6)用例6(3,3,3),輸出構(gòu)成等邊三角形(7)用例7(,3,4,5),輸出不構(gòu)成等邊三角形(同用例1)Chap.1軟件工程學概述何謂軟件危機產(chǎn)生軟件危機的原因及解決途徑軟件工程定義及基本原理軟件工程方法學包含哪三個要素軟件生命周期階段劃分及各階段的任務(wù)各種生命周期模型的概念和特點了解敏捷過程和極限編程的基本思想練習題軟件工程中描述生存周期的瀑布模型一般包括計劃、需求分析、設(shè)計、編碼、測試、維護等幾個階段,其中設(shè)計階段在管理上又可以依次分成概要設(shè)計和()兩步。A.方案設(shè)計B.代碼設(shè)計C.數(shù)據(jù)設(shè)計D.詳細設(shè)計答案:D練習題軟件工程方法學包括三個要素:方法、工具和()。A.程序開發(fā)環(huán)境B.文檔C.過程D.人員答案:C練習題噴泉模型對軟件復用和生存周期中多項開發(fā)活動的集成提供了支持,主要支持面向?qū)ο蟮拈_發(fā)方法?!皣娙币辉~本身體現(xiàn)了迭代和()特性。A.從上至下B.無縫C.靈活D.順序答案:B練習題軟件需求分析階段的工作,可以分為以下4個方面:對問題的識別、分析與綜合、編寫需求分析文檔以及()。A.總結(jié)B.階段性報告C.需求分析評審D.以上答案都不正確答案:C練習題在結(jié)構(gòu)化分析方法中,用以表達系統(tǒng)內(nèi)數(shù)據(jù)的運動情況的工具有()。A.數(shù)據(jù)流圖B.數(shù)據(jù)詞典C.結(jié)構(gòu)化英語D.判定表與判定樹答案:A練習題在結(jié)構(gòu)化分析方法中用狀態(tài)圖表達系統(tǒng)或?qū)ο蟮男袨椤T跔顟B(tài)圖中,由一個狀態(tài)和一個事件所決定的下一狀態(tài)可能會有()個。A.1B.2C.多個D.不確定答案:C練習題需求規(guī)格說明書的內(nèi)容不應(yīng)當包括()。A.對重要功能的描述B.對算法的詳細過程性描述C.軟件確認準則D.軟件的性能答案:B練習題()是模塊獨立性最弱的耦合。A.內(nèi)容耦合B.控制耦合C.數(shù)據(jù)耦合D.公共耦合答案:A練習題將幾個邏輯上相似的成分放在同一個模塊中,通過模塊入口處的一個判斷決定執(zhí)行哪一個功能。該模塊的內(nèi)聚性是()的。A.功能內(nèi)聚B.通信內(nèi)聚C.過程內(nèi)聚D.邏輯內(nèi)聚答案:D練習題下列關(guān)于模塊化程序設(shè)計的敘述中錯誤的是()。A.便于由多個人分工編制大型程序。B.軟件的功能便于擴充。C.程序易于理解,也便于排錯。D.模塊越小,模塊化的優(yōu)點越明顯。答案:D練習題按照軟件工程的原則,模塊的作用域和模塊的控制域之間的關(guān)系是:()A.模塊的作用域應(yīng)在模塊的控制域之內(nèi)B.模塊的控制域應(yīng)在模塊的作用域之內(nèi)C.模塊的控制域與模塊的作用域互相獨立D.以上說法都不對答案:A練習題結(jié)構(gòu)化程序之所以具有易于閱讀,并且有可能驗證其正確性,這是由于()。A.良好的編程風格B.良好的數(shù)據(jù)結(jié)構(gòu)和算法C.GOTO語句的靈活性D.只有三種基本流程結(jié)構(gòu)答案:D練習題程序的三種基本控制結(jié)構(gòu)是()。A.過程,子程序,分程序B.順序,條件,循環(huán)C.遞歸,堆棧,隊列D.調(diào)用,返回,轉(zhuǎn)移答案:B練習題某程序功能說明中列出“每名學生的參賽作品為1~5項”,應(yīng)用黑盒法中的等價分類法確定等價類是()。A.1≤作品數(shù)≤5B.作品數(shù)<1C.作品數(shù)>5 D.以上都是答案:D練習題軟件的集成測試工作最好由()承擔,以提高集成測試的效果。A.該軟件的設(shè)計人員B.該軟件開發(fā)組的負責人C.不屬于該軟件開發(fā)組的軟件設(shè)計人員D.該軟件的編程人員答案:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025中鐵快運(鄭州公司)招聘98人(河南)筆試參考題庫附帶答案詳解
- 2025年上半年安徽池州東至縣縣直機關(guān)選調(diào)工作人員11人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽廣播電視臺傳輸發(fā)射序列(宿州市)招考人員易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽安慶潛山市事業(yè)單位招聘53人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽合肥市廬江縣農(nóng)委下屬事業(yè)單位招考工作人員易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽六新國投資控股集團限公司招聘10名易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年寧波市環(huán)境保護局局屬事業(yè)單位招考2名緊缺人才易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年寧波工程學院招考非事業(yè)編制人員易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年寧德市古田縣事業(yè)單位招聘工作人員73人重點基礎(chǔ)提升(共500題)附帶答案詳解-1
- 2025華能瀾滄江水電股份有限公司校園招聘筆試參考題庫附帶答案詳解
- 成功八步課件
- 異物管控記錄表
- 模具保養(yǎng)記錄表
- 數(shù)字信號處理課后習題答案(吳鎮(zhèn)揚)
- 蜂膠表彰會中宏全國通用版模板課件
- 消化系統(tǒng)疾病PBL教學案例
- DBJ∕T 15-104-2015 預拌砂漿混凝土及制品企業(yè)試驗室管理規(guī)范
- 2022年HTD-8M同步帶輪尺寸表
- 皮帶滾筒數(shù)據(jù)標準
- 腳手架操作平臺計算書
- 煤礦供電系統(tǒng)及供電安全講座方案課件
評論
0/150
提交評論