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

下載本文檔

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

文檔簡介

vl.0可編寫可改正vl.0可編寫可改正#難以依據(jù)用戶的需要在原有程序中增添一些新的功能。軟件危機有什么典型表現(xiàn)往常沒有保存合適的文檔資料。文檔的作用:軟件開發(fā)管理人員:用于管理和評論軟件開發(fā)工程的進展情況軟件開發(fā)人員:用于開發(fā)人員對各個階段的工作都進行周祥思慮、通盤衡量、進而減少返工。而且可在開發(fā)初期發(fā)現(xiàn)錯誤和不一致性,便于實時加以糾正軟件保護人員:軟件保護的依照開發(fā)成本逐年上漲,軟件開發(fā)生產(chǎn)率提升的速度,遠遠跟不上計算機應(yīng)用快速普及深入的趨向。iOO卜19站1970年円肋年iOO卜圖L1硬件/軟件成本變化競幾個軟件危機的有名事例1966年,IBM360機的操作系統(tǒng)。花銷5000人一年的工作量,寫了近1萬行代碼。錯誤百出,每次的新版本就是以前一版本中找1000個程序錯誤而修正的結(jié)果。1963年,美國用于控制火星探測器的計算機軟件中的一個“,”號被誤寫為“?”,而以致飛往火星的探測器發(fā)生爆炸,造成高達數(shù)億美元的損失。美國丹佛新國際機場自動化行李系統(tǒng)軟件。投資1.93億美元,計劃1993年萬圣節(jié)啟用。但開發(fā)人員向來為系統(tǒng)錯誤困擾,頻頻推后啟用時間,直到1994年6月,機場計劃者認可沒法展望何時能啟用。1996年,歐洲阿里亞納5型運載火箭墜毀,造成5億美元損失。原由是控制軟件中的一個錯誤?!??1?2產(chǎn)生軟件危機的原由主要兩個原由:1、與軟件自己的特色有關(guān)2、與軟件開發(fā)與保護的方法不正確有關(guān)。一、軟件自己的特色(1)軟件與硬件、一般程序存在好多不一樣之處。1、軟件與硬件不一樣抽象性。軟件生產(chǎn)沒有顯然的制造過程,難以衡量開發(fā)進展,也難以控制軟件質(zhì)量。問題的隱蔽性。沒有硬件的磨損、老化問題,但存在開發(fā)初期在剖析、設(shè)計階段的錯誤,改正難度較大。無效率蜘線失效率(a)確件失效率曲線時間(仍軟件失效率曲錢時聞失效率(a)確件失效率曲線時間(仍軟件失效率曲錢時聞更正一個問題需付出的代價的仕計黠儷1000200(美元)20開發(fā)階段詳細設(shè)計結(jié)構(gòu)設(shè)計需求分析現(xiàn)場系統(tǒng)測試集成淵試編碼的仕計黠儷1000200(美元)20開發(fā)階段詳細設(shè)計結(jié)構(gòu)設(shè)計需求分析現(xiàn)場系統(tǒng)測試集成淵試編碼2、軟件與一般程序不一樣()軟件遠比一般程序規(guī)模宏大,復(fù)雜性高軟件所反應(yīng)的實質(zhì)問題的復(fù)雜性程序邏輯結(jié)構(gòu)的復(fù)雜性。例1:Windows95,1000萬行代碼;

Windows2000,5000萬行代碼例2:Exchange2000和windows2000開發(fā)人員ExchangelOOOVindovs2000項冃邑才25人、細250人開發(fā)人員140人約1700人測試人員:350人均3200人軟件的規(guī)模裘別打參頭人員數(shù)盧研制期眼]產(chǎn)品規(guī)模(溥程序行褻亍11~4周*:0.5k*小型衛(wèi),I&月4lk~2k^中型打275k-^50k-大型J'5~20「2—$年*>5Ok?1002甚大型100~1000^4T年rIM㈢Q00k>j2000—5000^5-10年』INI?10皿軟件產(chǎn)品的特別性和人類智力的限制性,以致人們無力辦理“復(fù)雜問題”。2、軟件與一般程序不一樣(2)大型軟件開發(fā)既有技術(shù)問題,還有社會問題。社會因素:組織機構(gòu)、系統(tǒng)、管理方式、看法、人的心理素等。開發(fā)團隊成員分工合作技術(shù)與管理的矛盾軟件開發(fā)人員對軟件應(yīng)用的領(lǐng)域知識的認識二、軟件開發(fā)保護方法中存在的問題(1)①對用戶需求的獲取不正確用戶的原由剖析人員的原由對剖析人員的要求:交流能力、歸納總結(jié)能力、經(jīng)驗越是初期產(chǎn)生的錯誤,付出的代價越大。圖:不一樣期間引入同一改動的代價變化出現(xiàn)的時期二、軟件開發(fā)保護方法中存在的問題(2)軟件開發(fā)就是編寫程序。一個完好的軟件產(chǎn)品由一整套完好的配置構(gòu)成,程序不過此中的一個構(gòu)成部分。軟件開發(fā)過程包含多個階段,每個階段的產(chǎn)品都是最后的完好的軟件產(chǎn)品的一部分。軟件開發(fā)只需依靠個別編程能手就能達成。小看軟件保護軟件保護約占軟件花費55一75%,包含改正軟件運轉(zhuǎn)的錯誤;對軟件進行改良和功能擴大。軟件保護在軟件花費的比率維護占?0.8%三、其余產(chǎn)生軟件危機的原由軟件開發(fā)還沒有完好掙出手工藝的開發(fā)方式。軟件成真相當昂貴,主要依靠大批復(fù)雜的、高強度的腦力勞動軟件的開發(fā)和運轉(zhuǎn)常常遇到計算機系統(tǒng)的限制,對計算機系統(tǒng)有著不一樣程度的依賴性。軟件的“可移植性”就是指的軟件對硬件的依靠程度。好的可移植性依靠少。§1.1.3除去軟件危機的門路1、完全除去“軟件就是程序”的錯誤看法。2、充足認識到軟件開發(fā)是一種組織優(yōu)異、管理嚴實、各種人員共同配合、共同完成的工程項目,不是個人獨立的勞動。3、推行和使用在實踐中總結(jié)出來的軟件開發(fā)的成功技術(shù)和方法。4、開發(fā)和使用更好的軟件工具總結(jié):“軟件工程”的方法理論是掙脫軟件危機的一個主要出路。計算機和軟件科學家為解決軟件危機問題,試試將在其余領(lǐng)域中卓有成效的工程學知識運用到軟件開發(fā)工作中來,經(jīng)過不停實踐和總結(jié),最后得出一個結(jié)論;按工程化的原則和方法組織軟件開發(fā)工作是有效的,是掙脫軟件危機的一個主要出路。思慮題(1))只假如編程能手,即便是不懂軟件工程,也能編出很好的軟件。軟件是服務(wù)于大眾,倒是由個性化的開發(fā)人員達成的。假如個性化太強,程序就沒法閱讀,其余人員也就沒法保護。例:國內(nèi)80年月浮現(xiàn)出來的眾多漢字操作系統(tǒng)均是由編程能手達成的。思慮題(2))只需擁有一套敘述如何開發(fā)軟件的書本,并認識了書中的標準與示例,就能夠解決軟件開發(fā)中碰到的任何問題。軟件是用來解決現(xiàn)實問題的,現(xiàn)實問題的特別性對規(guī)范提出了挑戰(zhàn)(要進行適應(yīng))。軟件技術(shù)是發(fā)展的,沒有家傳秘方。就像擁有食譜其實不可以成為名廚同樣,軟件開發(fā)需要實踐。思慮題(3))只需擁有最好的開發(fā)工具、最好的計算機,必定能做出優(yōu)異的軟件。硬件環(huán)境不過必需條件,人材是充足條件,軟件是人在必定的拘束條件下創(chuàng)建出來的。因人因事而異。思慮題(4))軟件開發(fā)時,假如進度慢,落伍于計劃,能夠增添更多的程序員來解決。增添人力能夠減少開發(fā)時間嗎生手!任務(wù)的從頭區(qū)分!交流更為復(fù)雜!一定依靠科學地計劃來解決這樣的問題。思慮題(5))爭議:假如軟件運轉(zhuǎn)較慢,是換一臺更快的計算機,仍是設(shè)計一種更快的算法軟件的性能問題;應(yīng)用級別一算法的合理性;系統(tǒng)級別f操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)、系統(tǒng)軟件等;硬件級別一機器性能§1.2軟件工程§1.2.軟件工程介紹一、“軟件工程”的典型定義)1968年,第一屆NATO會議為了經(jīng)濟地獲取靠譜的且能在實質(zhì)機器上有效地運轉(zhuǎn)的軟件,而成立和使用完美的工程原理。)IEEE/CS(電氣電子工程師協(xié)會/計算機科學分會)1993年,將系統(tǒng)化的、規(guī)范的、可胸懷的方法應(yīng)用于軟件的開發(fā)、運轉(zhuǎn)和保護的過程,立刻工程化應(yīng)用于軟件中。對①中提到的各樣方法的研究)其余學者的定義Boehm:運用現(xiàn)代科學技術(shù)知識來設(shè)計并結(jié)構(gòu)計算機程序及為開發(fā)、運轉(zhuǎn)和保護這些程序所必需的有關(guān)文件資料。FritzBauer:成立并使用完美的工程化原則,以較經(jīng)濟的手段獲取能在實質(zhì)機器上有效運轉(zhuǎn)的靠譜軟件的一系列方法所有定義都重申在軟件開發(fā)過程中,應(yīng)用工程化原則的重要性幾個對于軟件工程實質(zhì)特征和基來源理的問題問題一:軟件工程合用范圍問題二:軟件工程如何控制系統(tǒng)開發(fā)的復(fù)雜性的問題三:以你的經(jīng)驗,舉例說明一個成熟的軟件往常采納什么方法來適應(yīng)現(xiàn)實世界的變化的問題四:假定某軟件企業(yè),能為同一個用戶開發(fā)兩個不一樣層次的軟件:一個層次的軟件功能特別強盛,在知足用戶所有需求的基礎(chǔ)上,還可以供給大大超出用戶需求的其余更多更強的功能;另一個層次的軟件不過能知足用戶需求,但沒有供給其余額外的功能。請問假如你是項目負責人,你會選擇為客戶開發(fā)那個層次的軟件問題五:共同工作有什么重要性:如何理解“在軟件工程領(lǐng)域中是由擁有一種文化背景的人替擁有另一種文化背景的人創(chuàng)建產(chǎn)品”這句話問題六:某軟件開發(fā),因為時間和資本都特別緊急,在需求剖析人員特別認真、認真地做完需求剖析以后,說:我們能夠保證我們的需求剖析正確性,不用花時間檢查了,設(shè)計人員能夠直接拿著這份剖析報告,立刻開始設(shè)計。假如你是項目負責人,你會如何決定為何問題七:在需求剖析達成并獲取了用戶的必定,也經(jīng)過了評審,進入軟件設(shè)計階段以后,用戶的想法有了改變,提出了一個新的要求,此時假如你是項目負責人,應(yīng)當如何做二、軟件工程實質(zhì)特征(2))軟件工程關(guān)注于大型程序的結(jié)構(gòu)。)軟件工程的中心課題是控制復(fù)雜性主要考慮:如何分解和集成為何要分解:G.Miller,“7士2”原則)軟件常常變化4)開發(fā)軟件的效率特別重要5)和睦地合作是開發(fā)軟件的重點)軟件一定有效地支持它的用戶)在軟件工程領(lǐng)域中是由擁有一種文化背景的人替擁有另一種文化背景的人創(chuàng)建產(chǎn)品擴展定義:軟件=知識+程序+數(shù)據(jù)+文檔§1?2?2軟件工程的基來源理1983年提出:)用分階段的生命周期計劃嚴格管理)堅持進行階段評審)推行嚴格的產(chǎn)品控制基線基線(baseline)控制)采納現(xiàn)代程序設(shè)計技術(shù))結(jié)果應(yīng)能清楚地審察)開發(fā)小組的人員應(yīng)當少而精)認可精益求精軟件工程實踐的必需性§1.2.軟件工程方法學軟件工程包含“管理”和“技術(shù)”雙方面內(nèi)容:管理一一對人、財、物的合理使用和配置;技術(shù)——指軟件開發(fā)中采納的方法、工具和過程。什么是軟件工程方法學往常把在軟件生命周期全過程中使用的一整套技術(shù)方法的會合稱為方法學(methodology),也稱為范型(paradigm)。一、軟件工程方法學三因素:工具、方法和過程因素一:軟件工程過程規(guī)定了達成各項任務(wù)的工作步驟。因素二:軟件工程方法達成軟件開發(fā)的各項任務(wù)的技術(shù)方法,為軟件開發(fā)供給了“如何做”的技術(shù)。如項目計劃與估量、軟件系統(tǒng)需求剖析、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)整體結(jié)構(gòu)的設(shè)計、算法過程的設(shè)計、編碼、測試以及保護等。因素三:軟件工程工具計算機協(xié)助軟件工程CASE(computerAidedsottwareEngineering),為軟件工程方法供給自動或半自動的軟件支撐環(huán)境。二、軟件工程方法學思想兩種:1、傳統(tǒng)方法學(生命周期方法學或結(jié)構(gòu)化范型)2、面向?qū)ο蠓椒▊鹘y(tǒng)方法學(生命周期方法學或結(jié)構(gòu)化范型)采納結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化剖析、結(jié)構(gòu)化設(shè)計和結(jié)構(gòu)化實現(xiàn))來達成軟件開發(fā)的各項任務(wù);把軟件生命周期區(qū)分為若干個階段,按次序達成每個階段的任務(wù);每個階段開始和結(jié)束都有嚴格的標準,對任何兩個相鄰的階段而言,前一個階段的結(jié)束標準就是后一階段的開始標準;每一個階段結(jié)束以前都一定進行正式嚴格的技術(shù)審察和管理復(fù)審傳統(tǒng)方法學的長處:分解任務(wù),分工合作,降低整個軟件開發(fā)工程的困難;采納科學的管理技術(shù)和優(yōu)異的技術(shù)方法對每個階段成就都進行嚴格的審察。保證了軟件的質(zhì)量。傳統(tǒng)方法學的弊端:把數(shù)據(jù)和操作人為地分別成兩個獨立的部分,增添了軟件開發(fā)與保護的難度。2、面向?qū)ο蠓椒▽W(OO,Object-oriented)模擬人類習慣的思想方式,使開發(fā)軟件的方法與過程盡可能靠近人類認識世界解決問題的方法與過程,進而使描繪問題的問題空間(也稱為問題域)與實現(xiàn)解法的解空間(也稱為求解域)在結(jié)構(gòu)上盡可能一致。面向?qū)ο蠓椒▽W4重點把對象(object)作為交融了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的一致的軟件構(gòu)件。把所有對象都區(qū)分紅類(class)。依照父類(或稱為基類)與子類(或稱為派生類)的關(guān)系,把若干個有關(guān)類構(gòu)成一個層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級)。對象相互間僅能經(jīng)過發(fā)送信息相互聯(lián)系。兩者差別傳統(tǒng)方法學:重申自頂向下次序地達成軟件開發(fā)的各階段任務(wù)。面向?qū)ο蠓椒ǎ菏侵鲃拥囟啻晤l頻迭代的演化過程3軟件生命周期一、什么是軟件生命周期(lifecycle)指軟件孕育、出生、成長、成熟、衰滅的生計過程GB一8567中將軟件生命周期分為7個階段:可行性研究和項目開發(fā)計劃;需求剖析;慨要設(shè)計;詳盡設(shè)計;編碼;測試;保護其余分法,5個階段:需求定義、設(shè)計、編碼、測試及保護;需求定義階段包含可行性研究和項目開發(fā)計劃、需求剖析;設(shè)計階段包含慨要設(shè)計和詳盡設(shè)計。本教材對軟件生命周期的區(qū)分

確定軟件開發(fā)工程一定達成的總目標;總體設(shè)計軟件生命周期確定軟件開發(fā)工程一定達成的總目標;總體設(shè)計軟件生命周期確定工程的可行性;導(dǎo)出實現(xiàn)工程目標應(yīng)當采納的策略及系統(tǒng)一定達成的功能;預(yù)計達成該項工程需要的資源和成本,而且擬訂工程進度表。往常分為問題定義、可行性研究和需求剖析三個階段。軟件定義期間的三個階段①問題定義階段回答:回答:“要解決的問題是什么”可行性研究階段回答:“對于上一個階段所確定的問題有行得通的解決方法嗎需求剖析(RequirementAnalysis)回答“為認識決這個問題,目標系統(tǒng)一定做什么用正式文檔正確地記錄對目標系統(tǒng)的需求,這份文檔往常稱為規(guī)格說明書(specification)。2、軟件開發(fā)期間詳細設(shè)計和實現(xiàn)前一個期間定義的軟件,往常分為四個階段:整體設(shè)計(綱要設(shè)計)回答:“歸納地說,應(yīng)當如何實現(xiàn)目標系統(tǒng)”依據(jù)需求剖析,設(shè)計軟件的系統(tǒng)結(jié)構(gòu);定義結(jié)構(gòu)中的構(gòu)成模塊。詳盡設(shè)計(模塊設(shè)計)回答:“應(yīng)當如何詳細地實現(xiàn)這個系統(tǒng)呢”對每個模塊要達成的工作進行詳細的描繪,為源程序編寫打下基礎(chǔ)。編寫設(shè)計說明書,提交評審。兩者統(tǒng)稱系統(tǒng)設(shè)計。程序編寫(Coding,Programming):把軟件設(shè)計變換成計算機能夠接受的程序代碼。軟件測試(Testing)按規(guī)定的各項需求,逐項進行有效性測試,決定已開發(fā)的軟件能否合格,可否交托用戶使用,包含單元測試和組裝測試。兩者統(tǒng)稱系統(tǒng)實現(xiàn)3、運轉(zhuǎn)保護(軟件保護)期間(Running/Maintenance)使軟件長久的知足用戶的需要。包含:更正性保護:運轉(zhuǎn)中發(fā)現(xiàn)了軟件中的錯誤需要修正。適應(yīng)性保護:為了適應(yīng)變化了的軟件工作環(huán)境,需做合適更改。完美性保護:當用戶有新的要求時,應(yīng)當實時改良軟件以知足用戶的要求。預(yù)防性保護:即改正軟件為未來的保護活動早先做準備。幾個關(guān)干軟件生命周期階段的問題問題一:開發(fā)一個軟件大體需要多少資本、時間,將獲取什么效益一般是在哪個階段確定相對而言,在哪個階段與用戶交流最多問題二:系統(tǒng)剖析員主要工作在哪個期間程序員主要工作在哪個期間問題三:軟件定義期間的三個階段,各自回答什么重點問題問題四:軟件開發(fā)期間有幾個階段各自回答什么重點問題問題五:軟件系統(tǒng)結(jié)構(gòu)最早是在哪個階段決定的問題六:詳盡設(shè)計與程序編寫階段有什么樣的親密聯(lián)系問題七:“軟件測試是為了考證系統(tǒng)的正確性”這句話對嗎問題八:軟件保護有那幾種各有什么功能§軟件過程(SoftwareProcess)1、什么是軟件過程為了獲取高質(zhì)量軟件所需要達成的一系列任務(wù)的框架,它規(guī)定了達成各項任務(wù)的工作步驟。ISO9000的定義:使用資源將輸入轉(zhuǎn)變?yōu)檩敵龅幕顒铀鶚?gòu)成的系統(tǒng)?!跋到y(tǒng)”是相互關(guān)系或相互作用的一組因素。過程是軟件工程三因素之一。往常用軟件生命周期模型來描繪。2、什么是軟件生命周期模型又稱:軟件開發(fā)模型/軟件過程模型/軟件工程范型。指軟件項目從需求定義直至軟件經(jīng)使用后荒棄為止,超越整個生計周期的系統(tǒng)開發(fā)、運作和保護所實行的所有過程、活動和任務(wù)的結(jié)構(gòu)框架。常有的有:瀑布模型、演化模型、螺旋模型、噴泉模型、智能模型§1.4.1瀑布模型(waterfallmodel)1970年,由提出一、瀑布模型的過程1、傳統(tǒng)的瀑布模型從上一階段接受本階段的工作對象,作為輸入;利用輸入,達成本階段活動的內(nèi)容.本階段的工作成就作為輸出傳入下一階段。去見鋼各旦月lit11維護2瀑布模型一實質(zhì)的瀑布模型增添了一個評審活動,評審每個階段達成的活動,若獲取確認,則進行下一階段的活動;不然返回前一階段,甚至更前階段返工;二、瀑布模型特色階段間擁有次序性和依靠性推延實現(xiàn)的看法質(zhì)量保證的看法三、瀑布模型優(yōu)弊端長處:可逼迫開發(fā)人員采納規(guī)范的方法;嚴格地規(guī)定了每個階段一定提交的文檔;要求每個階段的所有產(chǎn)品都一定經(jīng)過質(zhì)量保證小組的認真考證;弊端:沒法解決軟件需求不明確或不正確的問題;可能以致最后開發(fā)的產(chǎn)品不可以真切知足用戶需要。瀑布模型比較合適開發(fā)需求明確的軟件?!??4.2快速原型模型、什么是“原型”原型是快速實現(xiàn)和運轉(zhuǎn)的初期版本,反應(yīng)最后系統(tǒng)部分重要特征。常有的原型實例:人機界面;系統(tǒng)主要功能。長處:1、往常能反應(yīng)用戶真切需求;、軟件產(chǎn)品的開發(fā)基本上是線性次序進行的。2、快速原型的過程以下列圖。

獲取用戶的基本需求說明,據(jù)此快速成立一個小型軟件系統(tǒng).用戶試用,對其評論;開發(fā)人員依照用戶的建議快速地改正原型系統(tǒng),獲取新的原型版本,再請用戶試用,這樣頻頻,直到知足用戶的要求;用戶確認原型系統(tǒng)以后,開發(fā)人員據(jù)此書寫規(guī)格說明文檔,進行下一步開發(fā)。增量(漸增)模型把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計、編碼、集成和測試。每個構(gòu)件由多個相互作用的模塊構(gòu)成,而且能夠達成特定的功能。使用增量模型時,第一個階段的增量構(gòu)件常常實現(xiàn)軟件的基本需求,供給最核心的功能;后邊的增量構(gòu)架漸漸增添系統(tǒng)的功能。增量模型注意事增量構(gòu)件模適中;分解的束條件是當把新構(gòu)件集成到有件中,所形成的品必是可的;件系統(tǒng)必是開放的,即在

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論