南郵軟件工程-Unit-01-軟件與軟件工程_第1頁
南郵軟件工程-Unit-01-軟件與軟件工程_第2頁
南郵軟件工程-Unit-01-軟件與軟件工程_第3頁
南郵軟件工程-Unit-01-軟件與軟件工程_第4頁
南郵軟件工程-Unit-01-軟件與軟件工程_第5頁
已閱讀5頁,還剩42頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

UNIT1軟件與軟件工程教材英文精編版第7版(第1章)本科教學版第7版(第1章)原書第7版(第1章)2軟件是意外效應法則的最好體現(xiàn)沒有人曾預料到軟件科學會成為商業(yè)、科學和工程所必需的技術軟件促進了新科技創(chuàng)新(基因工程、納米技術)、現(xiàn)代科技發(fā)展(通信)、傳統(tǒng)技術的根本轉變(印刷業(yè))軟件技術已經(jīng)成為個人電腦革命的推動力量消費者可以很容易地在附近的商店購買到包裝好的軟件產(chǎn)品軟件由產(chǎn)品逐漸演化為服務,軟件公司隨需應變,通過Web瀏覽器發(fā)布即時更新功能軟件公司比幾乎任何傳統(tǒng)工業(yè)時代的公司更大、更有影響力在大量應用軟件的驅動下,互聯(lián)網(wǎng)將迅速發(fā)展,對人們生活的諸多方面—從圖書館搜索、消費購物、政治演說到年輕人(或者不那么年輕的人)的約會習慣—引起革命性的變化沒有人曾想到軟件可嵌入到各種系統(tǒng)中:交通運輸、醫(yī)療、通信、軍事、工業(yè)、娛樂以及辦公設備等不勝枚舉3軟件角色的演化Before1960’s:軟件=程序Before1980’s:軟件=工具(程序+數(shù)據(jù)+文檔)程序:指令的集合(計算機程序),通過執(zhí)行這些指令可以滿足預期的特征、功能和性能需求數(shù)據(jù):數(shù)據(jù)結構,使得程序可以合理利用信息文檔:軟件描述信息,它以硬拷貝和虛擬形式存在,用來描述程序操作和使用Now:軟件=服務軟件中承載知識

以知識為中心SoftwareProgramsDocumentsDataKnowledge4軟件的本質軟件既是產(chǎn)品也是交付產(chǎn)品的載體作為一個產(chǎn)品,扮演著信息轉換的角色:產(chǎn)生、管理、獲取、修改、顯示或者傳輸各種不同的信息,簡單如幾個比特的傳遞或復雜如從多個獨立的數(shù)據(jù)源獲取的多媒體演示作為產(chǎn)品生產(chǎn)的載體,軟件提供了計算機控制(操作系統(tǒng))、信息通信(網(wǎng)絡)以及應用程序開發(fā)和控制(軟件工具和環(huán)境)的基礎平臺5軟件軟件是設計開發(fā)的,而不是傳統(tǒng)意義上生產(chǎn)制造的軟件不會磨損,但是會退化雖然整個工業(yè)向著基于構件的構造模式發(fā)展,然而大多數(shù)軟件仍然是根據(jù)實際的顧客需求定制的6磨損與退化如果希望降低軟件退化,需要改進軟件的設計軟件工程方法的目的:降低變更突變的幅度,及其實際失效曲線的斜率7軟件的應用領域系統(tǒng)軟件應用軟件工程/科學軟件嵌入式軟件產(chǎn)品線軟件(包括娛樂軟件)Web應用軟件人工智能軟件8應用軟件1.文字處理軟件WPSOffice、MicrosoftOffice、LibreOffice、GoogleDocs2.信息管理軟件OracleDatabase數(shù)據(jù)庫、SQLServer數(shù)據(jù)庫3.輔助設計軟件:如CATIA、NX、AutoCAD4.實時控制軟件5.教育與娛樂軟件6.圖形圖像軟件AdobePhotoshop、GIMP、MAYA、Softimage、3DS7.后期合成軟件aftereffects、combustion、digitalfusion、shake、flame8.網(wǎng)頁瀏覽軟件InternetExplorer、Firefox、Chrome、Safari9應用軟件9.網(wǎng)絡通信軟件WindowsLiveMessenger、Skype、QQ10.影音播放軟件:WMP、暴風影音、風雷影音11.音樂播放軟件:Winamp、千千靜聽12.下載管理軟件Orbit、迅雷、快車、QQ旋風13.電子郵件客戶端WindowsLiveMail、OutlookExpress、Foxmail、KMail14.信息安全軟件360、卡巴斯基、諾頓、瑞星、金山毒霸、PSA密碼管理軟件15.虛擬機軟件VMware、VirtualBox、MicrosoftVirtualPC16.輸入法軟件:谷歌拼音輸入法10軟件—新種類開放計算(Open-worldcomputing)普適計算、分布式計算開發(fā)系統(tǒng)和應用軟件,以使得移動設備、個人電腦和企業(yè)應用,通過網(wǎng)絡設施進行通信網(wǎng)絡資源(Netsourcing)Web作為計算引擎和內(nèi)容提供平臺構建一個結構簡單而智能的應用程序,為全世界的最終用戶市場提供服務開源軟件(OpenSource)free源碼(一個祝福,或一個潛在的詛咒)開放的系統(tǒng)應用程序的源代碼,使得用戶可以輕松、可靠地進行局部的修改11軟件—新種類普適計算12軟件—新種類數(shù)據(jù)挖掘&網(wǎng)格計算13遺留軟件在幾十年前開發(fā),不斷被修改以滿足商業(yè)需要和計算平臺的變化質量差:維護代價高昂、系統(tǒng)演化風險較高設計難以擴展,代碼令人費解,文檔混亂甚至根本沒有,測試用例和結果從未歸檔,變更歷史管理混亂等,有著數(shù)不清的問題具有生命周期長以及業(yè)務關鍵性的特點許多遺留軟件系統(tǒng)仍然支持核心的商業(yè)功能,是業(yè)務‘必不可少’的支撐14遺留軟件演化的原因軟件需要進行適應性調整,從而可以滿足新的計算環(huán)境或者技術的需求軟件必須升級以實現(xiàn)新的商業(yè)需求軟件必須擴展使之具有與更多新的系統(tǒng)和數(shù)據(jù)庫的互操作能力軟件架構必須進行改建使之能適應多樣化的網(wǎng)絡環(huán)境所有軟件工程師都必須認識到:變化是不可避免的,不要反對變化15軟件工程師面臨的問題為什么軟件需要如此長的開發(fā)時間?為什么開發(fā)成本居高不下?為什么在將軟件交付給顧客使用之前,我們無法找到所有的錯誤?為什么維護已有的程序要花費高昂的時間和人力代價?為什么軟件開發(fā)和維護的過程仍舊難以度量?軟件危機軟件危機(SoftwareCrisis):計算機軟件的開發(fā)和維護過程所遇到的一系列嚴重問題;軟件危機的表現(xiàn):對軟件開發(fā)成本和進度的估算很不準確,甚至嚴重拖期和超出預算;無法滿足用戶需求,導致用戶很不滿意;質量很不可靠,經(jīng)常失效;難以更改、調試和增強;沒有適當?shù)奈臋n;軟件成本比重上升;軟件開發(fā)生產(chǎn)率跟不上計算機應用迅速深入的趨勢。軟件復雜性的增長實例:1963年水星計劃系統(tǒng)200萬條指令1967年雙子星座計劃系統(tǒng)400萬條指令1973年阿波羅計劃系統(tǒng)1000萬條指令1979年哥倫比亞航天飛機系統(tǒng)4000萬條指令WindowsVista:3000開發(fā)人員,59個開發(fā)節(jié)點,愈6千萬行代碼每個汽車系統(tǒng)代碼量:10萬行(1970s)-1億行(2010s)波音飛機:總代碼量超過400萬行;宇宙飛船:軟件代碼2000萬行;空間站:軟件代碼10億行問題:假設1個人一年生產(chǎn)一萬條有效指令,那么是否4000人生產(chǎn)一年,或400人生產(chǎn)10年就能完成任務呢?答案是否定的一萬條指令的復雜度決不僅僅是100條指令復雜度的100倍軟件復雜性:指數(shù)級軟件危機典型案例在1963年至1966年開發(fā)的IBM360機的操作系統(tǒng)共有4000多個模塊,約100萬條指令,投入5000人年,耗資數(shù)億美元,結果還是延期交付。在交付使用后的系統(tǒng)中仍發(fā)現(xiàn)大量(2000個以上)的錯誤。這個項目的負責人F.D.Brooks事后總結了他在組織開發(fā)過程中的沉痛教訓時說:……正像一只逃亡的野獸落到泥潭中做垂死的掙扎,越是掙扎,陷得越深。最后無法逃脫滅頂?shù)臑碾y,……程序設計工作正像這樣一個泥潭,……一批批程序員被迫在泥潭中拼命掙扎,……誰也沒有料到竟會陷入這樣的困境……1963年美國飛往火星的火箭爆炸,造成1000萬美元的損失原因是FORTRAN程序:DO5I=1,3誤寫為:DO5I=1.31967年蘇聯(lián)“聯(lián)盟一號”載人宇宙飛船返航時,由于軟件忽略一個小數(shù)點,在進入大氣層時因打不開降落傘而燒毀軟件危機典型案例丹佛新國際機場:機場規(guī)模是曼哈頓機場的兩倍,寬為希思機場的10倍,可以全天侯同時起降三架噴氣式客機;投資1.93億美元建立了一個地下行李傳送系統(tǒng),總長21英里,有4000臺遙控車,可按不同線路在20家不同的航空公司柜臺、登機門和行李領取處之間發(fā)送和傳遞行李;支持該系統(tǒng)的是5000個電子眼、400臺無線電接受機、56臺條形碼掃描儀和100臺計算機按原定計劃要在1993年萬圣節(jié)前啟用,但直到1994年6月,機場計劃者還無法預測“行李系統(tǒng)”何時能達到機場開放的穩(wěn)定程度如何理解軟件工程在軟件開發(fā)中的作用?開發(fā)一段程序,輸入班級所有人的成績,按成績由高到低的次序進行排序你會如何去做?方法1:直接寫程序方法2:先設計算法,然后再用程序語言實現(xiàn)方法3:先建立數(shù)學模型,然后轉換為算法,然后編程實現(xiàn)映射與轉換任何軟件系統(tǒng)開發(fā)的共同本質在于:從現(xiàn)實空間的需求到計算機空間的軟件代碼之間的映射與轉換軟件工程的作用軟件工程的本質:用嚴格的規(guī)范和管理手段來縮小偏差,通過犧牲“時間”來提高“質量”軟件工程映射之1:概念映射概念映射:問題空間的概念與解空間的模型化概念之間的映射例如:“學生”ClassStudent(No,Name,Dept,Grade)“計算機學院大三學生張三” ObjectStudent(1050310401,張三,計算機,大三)“學生成績” StructStudentScore(StudentNo,CourseNo,Score)“張三的軟件工程課成績?yōu)?5分” ZS_SE_SCORE(1050310401,軟件工程,85)軟件工程映射之2:業(yè)務邏輯映射業(yè)務邏輯映射:問題空間的處理邏輯與解空間處理邏輯之間的映射例如:計算某班學生的平均分數(shù)

doublecalculateAvgScore(Struct[]scores){

冒泡排序法; }軟件工程的作用為了實現(xiàn)以上兩個映射,軟件工程需要解決以下問題:需要設置哪些抽象層次——單步映射?多步映射?幾步?每一抽象層次的概念、術語與表達方式——公式?圖形?文字?相鄰的兩個抽象層次之間如何進行映射——需要遵循哪些途徑和原則?軟件工程的作用需求分析:現(xiàn)實空間的需求需求規(guī)約在一個抽象層上建立需求模型的活動,產(chǎn)生需求規(guī)約,作為開發(fā)人員和客戶間合作的基礎,并作為以后開發(fā)階段的輸入設計:需求規(guī)約設計規(guī)約定義了實現(xiàn)需求規(guī)約所需的系統(tǒng)內(nèi)部結構與行為,包括軟件體系結構、數(shù)據(jù)結構、詳細的處理算法、用戶界面等,即所謂設計規(guī)約,給出了實現(xiàn)軟件需求的軟件解決方案實現(xiàn):設計規(guī)約代碼由設計規(guī)約到代碼的轉換,以某種特定的編程語言,對設計規(guī)約中的每一個軟件功能進行編碼驗證/確認一種評估性活動,確定一個階段的產(chǎn)品是否達到前階段確立的需求,或者確認開發(fā)的軟件與需求是否一致27軟件工程范疇28軟件工程的幾個簡單事實在制定軟件的解決方案之前,必須盡力理解問題設計已經(jīng)成為一項關鍵的軟件工程活動軟件必須保證高質量軟件需具備可維護性質量和可維護性都來自于好的設計29軟件工程弗里茨·鮑爾建立和使用一套合理的工程原則,以便經(jīng)濟地獲得可靠的、可以在實際機器上高效運行的軟件IEEE將系統(tǒng)化的、規(guī)范的、可量化的方法應用于軟件的開發(fā)、運行和維護,即將工程化方法應用于軟件。在(1)中所述方法的研究?!禖rossTalk》軟件工程是一種層次化的技術,包括過程、方法和工具30軟件工程是一種層次化的技術質量關注點是支持軟件工程的根基任何工程方法(包括軟件工程)必須構建在質量承諾的基礎之上過程是軟件工程的基礎過程是一個框架結構,將各個技術層次結合在一起,使得合理、及時地開發(fā)計算機軟件、有效實施軟件工程成為可能過程構成了軟件項目管理控制的基礎,建立了工作環(huán)境以便于應用技術方法、提交工作產(chǎn)品(模型、文檔、數(shù)據(jù)、報告、表格等)、建立里程碑、保證質量及正確管理變更方法為構建軟件提供技術上的解決方法(“如何做”)方法包括溝通、需求分析、設計建模、編程、測試和技術支持方法依賴于一組基本原則,這些原則涵蓋了軟件工程所有技術領域,包括建模和其他描述性技術等。工具為過程和方法提供自動化或半自動化的支持工具建立軟件開發(fā)的支撐系統(tǒng),稱為計算機輔助軟件工程31軟件工程是一種層次化的技術例如:去南京紅山森林動物園質量關注點:安全、時間、舒適、費用過程:制定計劃和費用,確定路線和方法方法:騎車、開車、報旅行社工具:自行車、汽車、獲取信息實踐:具體的操作,如:哪里轉彎,哪里有路障軟件實現(xiàn)的三個基礎33通用的軟件過程框架不同案例,過程細節(jié)差別很大,但框架活動都是一致的框架活動的順序可能是線性、迭代、演化或并行的每一個框架活動由很多普適性活動來補充實現(xiàn)普適性活動貫穿整個軟件過程,關注于項目管理、跟蹤和控制(項目進度、質量、變更和風險)對軟件過程的普適性調整是項目成功的關鍵34過程要素活動(activity)主要實現(xiàn)寬泛的目標(如與利益相關者進行溝通)與應用領域、項目大小、結果復雜性或者實施軟件工程的重要程度沒有直接關系動作(action):如體系結構設計包含了主要工作產(chǎn)品(如體系結構設計模型)生產(chǎn)過程中的一系列任務任務(task)關注小而明確的目標,能夠產(chǎn)生實際產(chǎn)品(如構建一個單元測試)工作任務、工作產(chǎn)品、質量保證點、里程碑355個框架活動溝通:客戶協(xié)作、理解利益相關者的目標、收集需求,定義軟件的特性和功能策劃:制定軟件項目計劃,定義和描述了軟件工程工作,包括需要執(zhí)行的技術任務、可能的風險、資源需求、工作產(chǎn)品和工作進度計劃建模:利用模型來更好地理解軟件需求,并完成符合這些需求的軟件設計構建:編碼(手寫的或者自動生成的)和測試以發(fā)現(xiàn)編碼中的錯誤部署:軟件(全部或者部分增量)交付到用戶,用戶對其進行評測并給出反饋意見36普適性活動軟件項目跟蹤和控制—評估進展,采取糾正措施,維護計劃風險管理—評估影響項目成果、產(chǎn)品質量的風險軟件質量保證—確定和執(zhí)行軟件質量保證的活動技術評審—評估產(chǎn)品,在錯誤傳播到下個活動之前,發(fā)現(xiàn)并清除錯誤測量—定義和收集過程、項目和產(chǎn)品的度量,以幫助團隊在發(fā)布軟件的時候滿足利益相關者要求軟件配置管理—管理變更所帶來的影響可復用管理—定義產(chǎn)品復用的標準(包括軟件構件),并且建立構件復用機制工作產(chǎn)品的準備和生產(chǎn)—包括了生成產(chǎn)品(諸如建模、文檔、日志、表格和列表等)所必需的活動37過程模型普適性調整的關注點活動、動作和任務的總體流程,以及相互依賴關系在每一個框架活動中,動作和任務細化的程度工作產(chǎn)品的定義和要求的程度質量保證活動應用的方式項目跟蹤和控制活動應用的方式過程描述的詳細程度和嚴謹程度客戶和利益相關者對項目參與的程度軟件團隊所賦予的自主權隊伍組織和角色明確程度38實踐的精髓1.理解問題(溝通和分析)2.計劃解決方案(建模和軟件設計)3.實施計劃(代碼生成)4.檢查結果的正確性(測試和質量保證)39理解問題誰將從問題的解決中獲益?也就是說,誰是利益相關者?有哪些是未知的?哪些數(shù)據(jù)、功能、特征和行為是解決問題必需的?問題可以劃分嗎?是否可以描述為更小、更容易理解的問題?問題可以圖形化描述嗎?可以建立分析模型嗎?40計劃解決方案以前曾經(jīng)見過類似問題嗎?在潛在的解決方案中,是否可以識別一些模式?是否已經(jīng)有軟件實現(xiàn)了所需要的數(shù)據(jù)、功能、特征和行為?類似問題是否解決過?如果是,解決方案所包含元素是否可以復用?可以定義子問題嗎?如果可以,子問題是否已有解決方案?能用一種可以很快實現(xiàn)的方式來描述解決方案嗎?能構建出設計模型嗎?41實施計劃解決方案和計劃一致嗎?源碼是否可追溯到設計模型?解決方案的每個組成部分是否可以證明正確?設計和代碼是否經(jīng)過評審?或者更好的算法是否經(jīng)過正確性證明?42檢查結果能否測試解決方案的每個部分?是否

溫馨提示

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

評論

0/150

提交評論