




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、軟件工程軟件工程系軟件工程系 殷殷 旭旭課件:課件: 教材n 張海藩:軟件工程導(dǎo)論(第6版) 清華大學(xué)出版社 實驗指導(dǎo)書n 自編,郵箱、課程網(wǎng)站o 實驗參考書n 李龍澍,軟件工程課程設(shè)計,機械工業(yè)出版n 圖形工具Microsoft VISIO / Rational Rose 2003 / EA考試成績o 平時成績平時成績50%50% 課堂練習(xí)、作業(yè)、考勤課堂練習(xí)、作業(yè)、考勤 20%20% 實驗實驗2 2次次+ + 報告報告 30%30%o 期末考試期末考試50%50%實驗安排1. 系統(tǒng)分析與設(shè)計1 第13周周四10-13節(jié)2. 系統(tǒng)分析與設(shè)計2 第14周周四10-13節(jié)地點:教2-407內(nèi)容:
2、 教師指定或?qū)W生自選一個自己所熟悉的小型應(yīng)用系統(tǒng);學(xué)生利用軟件工程思想,對該系統(tǒng)進行分析和設(shè)計;學(xué)生需要利用需求與設(shè)計工具描述分析和設(shè)計結(jié)果,書寫該系統(tǒng)的軟件需求說明書和軟件設(shè)計說明書。軟件工程課程網(wǎng)站o 提供教學(xué)提供教學(xué)和實驗所需的各種在線資源和實驗所需的各種在線資源1 1、課程、課程在線資源公網(wǎng)訪問地址:在線資源公網(wǎng)訪問地址:http:/ 2、課程、課程在線資源校內(nèi)訪問地址:在線資源校內(nèi)訪問地址:http:/0/courses/se/index.html0/courses/se/index.html3 3、更多、更多在線資源訪問地
3、址:在線資源訪問地址:公網(wǎng):公網(wǎng):http:/ 1:o 我們已經(jīng)學(xué)習(xí)過:計算機組成原理、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、程序設(shè)計等課程,是否具備完成一般軟件目標(biāo)能力呢?o 能否開發(fā)出合格的網(wǎng)上招聘系統(tǒng)?o 有了上述技術(shù)夠不夠?o 有了上述技術(shù)還不夠,還要有軟件開發(fā)的專門技術(shù),如:n 每一個軟件技術(shù)人員都希望有軟件項目開發(fā)。那么是不是有投資就可以開發(fā)呢?這就是所謂的可行性問題。n 如何計算一個軟件工程的費用與開發(fā)周期。n 對該問題要進行分析、設(shè)計。n 如果軟件開發(fā)周期比較長,如何應(yīng)付開發(fā)對象的變化。n 參加的人員多的時候。對參加人員的分工、布局。n 軟件質(zhì)量怎么管理?n 一個軟件的開發(fā)用什么工具。o o 只
4、有學(xué)習(xí)軟件工程,才能回答上述問題。軟件工程第1章軟件工程學(xué)概述本章學(xué)習(xí)目標(biāo)o 掌握幾個基本概念:u 軟件與軟件工程u 軟件生存周期u 軟件開發(fā)模型o 了解軟件開發(fā)的幾個模型(瀑布型、增量型、螺旋型等)本章內(nèi)容1.1、軟件的定義1.2、軟件危機1.3、軟件工程1.4、軟件生存期1.5、軟件過程什么是軟件-1q 軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是指揮控制計算機系統(tǒng)工作的神經(jīng)思維中樞。q 它是包括程序,數(shù)據(jù)及其相關(guān)文檔的完整集合(從計算機角度看)。 如果將硬件比作人的身體,那么軟件就相當(dāng)于人的 。神經(jīng)中樞和知識才能神經(jīng)中樞和知識才能1.1、軟件的定義軟件的定義什么是軟件-2q 軟件的簡要
5、定義: 軟件=程序+數(shù)據(jù)+文檔+規(guī)則1.1、軟件的定義軟件的定義程序程序:是計算機需要遵照執(zhí)行的一系列指令,是計算機需要遵照執(zhí)行的一系列指令,它作為一種具有邏輯結(jié)構(gòu)的信息,精確而完整它作為一種具有邏輯結(jié)構(gòu)的信息,精確而完整地描述計算任務(wù)中的處理對象和處理規(guī)則。地描述計算任務(wù)中的處理對象和處理規(guī)則。文檔文檔:開發(fā)、使用和維護程序所需要的圖文資開發(fā)、使用和維護程序所需要的圖文資料。料。數(shù)據(jù)數(shù)據(jù):向一個程序提供的輸入。向一個程序提供的輸入。 規(guī)則規(guī)則:通常是在文檔中說明并在程序中實現(xiàn)的。通常是在文檔中說明并在程序中實現(xiàn)的。程序怎樣定義程序怎樣定義(1).面向過程的程序面向過程的程序 = 算法算法 +
6、 數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)。(2).面向?qū)ο蟮某绦蛎嫦驅(qū)ο蟮某绦?=(3).面向構(gòu)件的程序面向構(gòu)件的程序 = 什么是程序?qū)ο髮ο?+ 消息。消息。構(gòu)件構(gòu)件 + 構(gòu)架。構(gòu)架。1.1、軟件的定義軟件的定義Roger S.Pressman說:說:“越早開始寫代碼的人,就是越遲越早開始寫代碼的人,就是越遲完成代碼的人完成代碼的人”。對軟件的認(rèn)識開發(fā)軟件就是編寫程序?開發(fā)軟件就是編寫程序?程序、軟件與軟件產(chǎn)品:程序、軟件與軟件產(chǎn)品: 獨唱獨唱小合唱小合唱合唱合唱萬人大合唱萬人大合唱 | | | 簡單程序簡單程序 較復(fù)雜程序較復(fù)雜程序 軟件(程序間協(xié)軟件(程序間協(xié)作)作)1.1、軟件的定義軟件的定義邏輯實體軟件
7、的特點-1物理實體1.1、軟件的定義軟件的定義-軟件的特點-2制造是開發(fā)的,而不是制造的是開發(fā)的,而不是制造的需求需求.-軟件質(zhì)量取決于開發(fā)人員的個人軟件質(zhì)量取決于開發(fā)人員的個人技能和創(chuàng)造能力技能和創(chuàng)造能力1.1、軟件的定義軟件的定義軟件的特點-3具有柔性具有柔性設(shè)計房屋如果需要修改,首先修改設(shè)計房屋如果需要修改,首先修改設(shè)計對于大多數(shù)工程產(chǎn)品而言對于大多數(shù)工程產(chǎn)品而言 1.1、軟件的定義軟件的定義軟件的特點-3具有柔性具有柔性如果需要修改,可以修改產(chǎn)品本身,而不需要如果需要修改,可以修改產(chǎn)品本身,而不需要修改設(shè)計,為后期維護留下隱患修改設(shè)計,為后期維護留下隱患對于軟件而言設(shè)計設(shè)計-需要修改.
8、1.1、軟件的定義軟件的定義軟件的特點-4不磨損不磨損對于機械產(chǎn)品而言對于機械產(chǎn)品而言機械部件用了會磨損機械部件用了會磨損可以用備件替代可以用備件替代1.1、軟件的定義軟件的定義軟件的特點-4不磨損不磨損對于軟件而言對于軟件而言-.軟件用后不磨損軟件用后不磨損隨著時間的推移,應(yīng)用程序隨著時間的推移,應(yīng)用程序的某些部分可能會變得不再的某些部分可能會變得不再相關(guān)(例如,需求改變時),相關(guān)(例如,需求改變時),而需要修改而需要修改沒有備件的概念沒有備件的概念需要修改1.1、軟件的定義軟件的定義硬件和軟件故障率曲線硬件和軟件故障率曲線 軟件不會用壞(軟件不會用壞(wear out).軟件會退化(軟件會
9、退化( deteriorate)!1.1、軟件的定義軟件的定義軟件的特點-5q 軟件的開發(fā)和運行常受到計算機系統(tǒng)的限制,對計算機系統(tǒng)有著不同程度的依賴性;q 軟件的開發(fā)至今尚未完全擺脫手工藝的開發(fā)方式,成本相當(dāng)昂貴;q 軟件開發(fā)本身是復(fù)雜的:實際問題的復(fù)雜性程序邏輯結(jié)構(gòu)的復(fù)雜性 q 相當(dāng)多的軟件開發(fā)工作涉及到社會因素。軟件的分類-1p 按軟件的功能進行劃分:系統(tǒng)軟件系統(tǒng)軟件支撐軟件支撐軟件應(yīng)用軟件應(yīng)用軟件 1.1、軟件的定義軟件的定義p按照軟件服務(wù)對象的范圍劃分 定制軟件 由客戶委托開發(fā)的軟件。 通用軟件 由軟件開發(fā)機構(gòu)開發(fā),提供給市場的。軟件的分類-21.1、軟件的定義軟件的定義p3軟件開發(fā)
10、經(jīng)歷的階段軟件開發(fā)經(jīng)歷的階段1.1、軟件的定義軟件的定義軟件工程軟件工程“軟件作坊軟件作坊”個體化的軟件環(huán)境個體化的軟件環(huán)境上世紀(jì)上世紀(jì)60年代中期年代中期上世紀(jì)上世紀(jì)70年代年代上世紀(jì)上世紀(jì)80年代年代面向?qū)ο筌浖_發(fā)面向?qū)ο筌浖_發(fā)面向?qū)ο蠹夹g(shù)的應(yīng)面向?qū)ο蠹夹g(shù)的應(yīng)用改變了軟件界的用改變了軟件界的開發(fā)方式。開發(fā)方式。計算機應(yīng)用領(lǐng)域越來越廣,系統(tǒng)規(guī)模越計算機應(yīng)用領(lǐng)域越來越廣,系統(tǒng)規(guī)模越來越大,邏輯越來越復(fù)雜,而且功能上來越大,邏輯越來越復(fù)雜,而且功能上需要不斷更改和擴充。軟件開發(fā)需要多需要不斷更改和擴充。軟件開發(fā)需要多個開發(fā)者一起開發(fā),開發(fā)人員按各自的個開發(fā)者一起開發(fā),開發(fā)人員按各自的愛好和習(xí)
11、慣進行工作,沒有統(tǒng)一的標(biāo)準(zhǔn)愛好和習(xí)慣進行工作,沒有統(tǒng)一的標(biāo)準(zhǔn)可以遵循,以手工藝的方式形成可以遵循,以手工藝的方式形成“軟件軟件作坊作坊”來進行。來進行。1968年,北大西洋公約組織的計算機科學(xué)年,北大西洋公約組織的計算機科學(xué)家,在聯(lián)邦德國召開國際會議,討論軟件家,在聯(lián)邦德國召開國際會議,討論軟件危機問題。正式提出危機問題。正式提出“軟件工程軟件工程”這個名這個名詞詞新興工程學(xué)誕生了。新興工程學(xué)誕生了。用用“工程化工程化”的思想作指導(dǎo),可以大大減的思想作指導(dǎo),可以大大減少軟件開發(fā)成本并提高軟件開發(fā)質(zhì)量,少軟件開發(fā)成本并提高軟件開發(fā)質(zhì)量,“工程化工程化”為人們開辟了新的道路,為人們開辟了新的道路,
12、“軟件軟件工程學(xué)工程學(xué)”蓬勃發(fā)展起來。蓬勃發(fā)展起來。軟件規(guī)模小,編寫者和使用者往往是同一個軟件規(guī)模小,編寫者和使用者往往是同一個人,除程序清單外,無其它文檔資料人,除程序清單外,無其它文檔資料。軟件開發(fā)經(jīng)歷的階段軟件開發(fā)經(jīng)歷的階段1.1、軟件的定義軟件的定義時間時間特點特點程序設(shè)計程序設(shè)計50506060年代年代程序系統(tǒng)程序系統(tǒng)60607070年代年代軟件工程軟件工程7070年代年代-80-80年代年代第四階段第四階段9090年代至今年代至今 軟件所指軟件所指程序程序程序及說明書程序及說明書程序、文檔、數(shù)據(jù)程序、文檔、數(shù)據(jù)軟件工程定義軟件工程定義主要程序設(shè)計語言主要程序設(shè)計語言 匯編及機器語言
13、匯編及機器語言高級語言高級語言軟件語言軟件語言軟件語言及輔助工具軟件語言及輔助工具軟件工作范圍軟件工作范圍 程序編寫程序編寫包括設(shè)計和測試包括設(shè)計和測試軟件生命周期軟件生命周期軟件生命周期軟件生命周期需求者需求者程序設(shè)計者本人程序設(shè)計者本人少數(shù)用戶少數(shù)用戶市場用戶市場用戶市場用戶市場用戶開發(fā)軟件的組織開發(fā)軟件的組織個人個人開發(fā)小組開發(fā)小組開發(fā)小組及大中型軟件開發(fā)小組及大中型軟件開發(fā)機構(gòu)開發(fā)機構(gòu)開發(fā)小組及大中型軟開發(fā)小組及大中型軟件開發(fā)機構(gòu)件開發(fā)機構(gòu)軟件規(guī)模軟件規(guī)模小型小型中小型中小型大中小型大中小型大中小型大中小型決定質(zhì)量的因素決定質(zhì)量的因素個人程序技術(shù)個人程序技術(shù)小組技術(shù)水平小組技術(shù)水平管理
14、水平管理水平管理水平、管理水平、CMM開發(fā)技術(shù)和手段開發(fā)技術(shù)和手段子程序子程序程序庫程序庫結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序設(shè)計數(shù)據(jù)庫、開發(fā)工具、開數(shù)據(jù)庫、開發(fā)工具、開發(fā)環(huán)境、工程化開發(fā)方發(fā)環(huán)境、工程化開發(fā)方法、標(biāo)準(zhǔn)和規(guī)范、網(wǎng)絡(luò)法、標(biāo)準(zhǔn)和規(guī)范、網(wǎng)絡(luò)及分布式開發(fā)、面向?qū)胺植际介_發(fā)、面向?qū)ο蠹夹g(shù)、嵌入式技術(shù)象技術(shù)、嵌入式技術(shù)WebWeb應(yīng)用、異構(gòu)環(huán)境應(yīng)用、異構(gòu)環(huán)境下分布式開發(fā)、軟件下分布式開發(fā)、軟件復(fù)用和構(gòu)件技術(shù)、智復(fù)用和構(gòu)件技術(shù)、智能技術(shù)應(yīng)用、信息共能技術(shù)應(yīng)用、信息共享和服務(wù)享和服務(wù)維護責(zé)任者維護責(zé)任者程序設(shè)計者程序設(shè)計者開發(fā)小組開發(fā)小組專職維護者專職維護者維護小組維護小組硬件特征硬件特征價格高價格高存
15、儲容量小存儲容量小工作可靠性差工作可靠性差降價、速度、容降價、速度、容量及工作可靠性量及工作可靠性有明顯提高有明顯提高向超高速、大容量、微向超高速、大容量、微型化及網(wǎng)絡(luò)化方向發(fā)展型化及網(wǎng)絡(luò)化方向發(fā)展微型化、網(wǎng)絡(luò)計算機微型化、網(wǎng)絡(luò)計算機軟件特征軟件特征完全不受重視完全不受重視軟件技術(shù)的發(fā)展軟件技術(shù)的發(fā)展不能滿足需要,不能滿足需要,出現(xiàn)軟件危機出現(xiàn)軟件危機開發(fā)技術(shù)有進步,但未開發(fā)技術(shù)有進步,但未獲突破性進展,價高,獲突破性進展,價高,未完全擺脫軟件危機未完全擺脫軟件危機先進的軟件開發(fā)和管先進的軟件開發(fā)和管理工具不斷出現(xiàn),軟理工具不斷出現(xiàn),軟件過程控制及管理件過程控制及管理軟件危機軟件工程軟件工程“
16、軟件作坊軟件作坊”個體化的軟件環(huán)境個體化的軟件環(huán)境上世紀(jì)上世紀(jì)60年代中期年代中期上世紀(jì)上世紀(jì)70年代年代上世紀(jì)上世紀(jì)80年代年代面向?qū)ο筌浖_發(fā)面向?qū)ο筌浖_發(fā)o 軟件生產(chǎn)的第二個階段,硬件生產(chǎn)成本下降、效率提高、性能提高,激發(fā)了軟件需求;o 軟件復(fù)雜性要求提高、生產(chǎn)效率低,與硬件生產(chǎn)進一步拉開距離;o 軟件質(zhì)量差,難維護,成本急劇增加;o 軟件項目成功率低;o 上述矛盾的進一步激化,瀑發(fā)了軟件危機軟件開發(fā)經(jīng)歷的階段軟件開發(fā)經(jīng)歷的階段1.1、軟件的定義軟件的定義本章內(nèi)容q 1.1、軟件的定義q 1.2、軟件危機q 1.3、軟件工程q 1.4、軟件生存期q 1.5、軟件過程軟件危機“軟件危機”
17、(Software crisis)的出現(xiàn)是由于:o 軟件的規(guī)模越來越大,復(fù)雜度不斷增加,軟件需求量增大。o 軟件開發(fā)過程是一種高密集度的腦力勞動,軟件開發(fā)的模式及技術(shù)不能適應(yīng)軟件發(fā)展的需要。o 致使大量質(zhì)量低劣的軟件涌向市場,有的甚至花費了大量人力財力,并且在開發(fā)過程中就夭折。Crisis!1.2、軟件危機、軟件危機軟件危機的主要表現(xiàn)軟件預(yù)算經(jīng)常突破,完成時間一拖再拖用戶對“已完成的”軟件不滿意的現(xiàn)象經(jīng)常發(fā)生軟件不可維護軟件產(chǎn)品的質(zhì)量靠不住軟件沒有適當(dāng)?shù)奈臋n資料軟件的生產(chǎn)率低軟件的可重用性差1.2、軟件危機、軟件危機軟件危機的表現(xiàn)o 概括起來:o “軟件危機”主要表現(xiàn)在兩個方面: o (1)軟
18、件產(chǎn)品質(zhì)量低劣,甚至開發(fā)過程就夭折。o (2)軟件生產(chǎn)率低,不能滿足需要。1.2、軟件危機、軟件危機軟件預(yù)算經(jīng)常突破,完成時間一拖再拖案例1:以丹佛新國際機場為例 該機場規(guī)模是曼哈頓機場的兩倍,寬為希思機場的10倍,可以全天侯同時起降三架噴氣式客機;投資1.93億美元建立了一個地下行李傳送系統(tǒng),總長21英里,有4,000臺遙控車,可按不同線路在20家不同航空公司柜臺、登機門和行李領(lǐng)取處之間發(fā)送和傳遞行李;支持該系統(tǒng)的是5,000個電子眼、400臺無線電接受機、56臺條形碼掃描儀和100臺計算機。按原定計劃要在1993年萬圣節(jié)前啟用,但一直到1994年6月,該系統(tǒng)還無法正常運行。軟件危機案例1.
19、2、軟件危機、軟件危機原因:o 軟件復(fù)雜度高,開發(fā)周期長。缺乏開發(fā)經(jīng)驗和數(shù)據(jù)的積累,導(dǎo)致盲目制定計劃,執(zhí)行起來和實際情況有很大差距,o 另外,軟件開發(fā)過程也會出現(xiàn)一些難以預(yù)料的問題,導(dǎo)致項目一拖再拖,經(jīng)費增加。據(jù)研究結(jié)果統(tǒng)計:只有15%的項目是按計劃完成的 。軟件危機案例1.2、軟件危機、軟件危機用戶對“已完成的”軟件不滿意的現(xiàn)象經(jīng)常發(fā)生案例:1984年,經(jīng)歷18個月的開發(fā),一個耗資2億美元的保險系統(tǒng)交付給威斯康星州的一家健康保險公司,但該系統(tǒng)不能滿足用戶的正常工作,只好追加6千萬美金,又花了3年才解決問題。原因:軟件開發(fā)人員不是用戶業(yè)務(wù)的專家,用戶不懂計算機軟件技術(shù),因此軟件人員按照自己理解
20、開發(fā)出的軟件往往與用戶要求有差距。 另外,用戶在初期提出的需求不充分,之后又沒有和開發(fā)人員好好交流,也是導(dǎo)致用戶不滿意的原因。軟件危機案例1.2、軟件危機、軟件危機3 軟件產(chǎn)品的質(zhì)量靠不住案例: o 1996 年6 月, ARIANE 5 火箭,耗資70 億美元,發(fā)射37 秒后爆炸。發(fā)射失敗的原因在于軟件的錯誤;程序中試圖將64 位浮點數(shù)轉(zhuǎn)換成16 位整數(shù)時產(chǎn)生溢出。o 原因:軟件測試不充分是其中的原因。o 對這些投資巨大測試充分的軟件也難保不出質(zhì)量問題。因為軟件的質(zhì)量和可靠性的評估非常困難。軟件危機案例1.2、軟件危機、軟件危機4、軟件不可維護 原因: 1、設(shè)計結(jié)構(gòu)不適合軟件功能的增加和修改
21、 2、軟件開發(fā)過程中起著重要作用的是開發(fā)者的邏輯思維過程。若干年后由其他人來修改,必須要理解開發(fā)者的思想,若沒有相對應(yīng)的文檔來描述這些思想,讀別人的程序相當(dāng)?shù)睦щy。軟件危機案例1.2、軟件危機、軟件危機軟件沒有適當(dāng)?shù)奈臋n資料 原因:軟件不可能一個版本就成功,而是經(jīng)歷反復(fù)修改,其中的文檔很難與 每次的修改保持一致,錯誤的文檔就像錯誤的地圖一樣更危險。軟件危機案例1.2、軟件危機、軟件危機產(chǎn)生軟件危機的原因o 一方面是與軟件本身的特點有關(guān);n 軟件系統(tǒng)復(fù)雜而抽象。o 另一方面軟件開發(fā)和維護的方法不正確:n 忽視軟件開發(fā)前期的需求分析;n 開發(fā)過程沒有統(tǒng)一、規(guī)范方法論的指導(dǎo);n 文檔資料不齊全;n
22、忽視人與人的交流;n 忽視測試工作,提交給用戶的軟件質(zhì)量差;n 輕視軟件的維護。1.2、軟件危機、軟件危機復(fù)雜性舉例例如,Windows 95有1000萬行代碼,Windows 2000有5000萬行代碼。Exchange2000和 Windows2000開發(fā)人員結(jié)構(gòu)Exchange2000Windows2000項目經(jīng)理25人約250人開發(fā)人員140人約1700人測試人員350人約3200人1.2、軟件危機、軟件危機o 布魯克斯(Brooks)分別于1975和1987年出版了兩本著名的軟件工程知識著作“人月神話”和“沒有銀彈”(No Silver Bullet)o Brooks的著名論斷“軟件
23、工作是人類所從事的最復(fù)雜的工作.” o 針對軟件的特點,用什么辦法解決軟件危機?復(fù)雜性是復(fù)雜性是“軟件危機軟件危機”的本質(zhì)原因!的本質(zhì)原因!“軟件危機軟件危機”的本質(zhì)原因?的本質(zhì)原因?1.2、軟件危機、軟件危機1. 對計算機軟件有一個正確的認(rèn)識: 軟件程序軟件程序數(shù)據(jù)文檔2.必須充分認(rèn)識到軟件開發(fā)不是某種個體勞動的神秘技巧,而應(yīng)該是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程項目。3.推廣使用在實踐中總結(jié)出來的開發(fā)軟件的成功經(jīng)驗和方法。4.開發(fā)和使用更好的軟件工具。5. 對軟件的實現(xiàn)提供有效的構(gòu)件塊。6. 為保證軟件質(zhì)量提供自動設(shè)計技術(shù)。消除軟件危機的辦法1.2、軟件危機、軟件危機
24、消除軟件危機的辦法意識到意識到生命周期生命周期1.2、軟件危機、軟件危機本章內(nèi)容q 1.1、軟件的定義q 1.2、軟件危機q 1.3、軟件工程q 1.4、軟件生存期q 1.5、軟件過程軟件工程的提出o 軟件工程(Software Engineering)n 北大西洋公約組織(NATO)科學(xué)技術(shù)委員會1968年秋,在當(dāng)時的聯(lián)邦德國召集有50名第一流的編程人員、計算機科學(xué)家和工業(yè)巨頭為制定擺脫“軟件危機”的辦法時提出來的n 借鑒硬件工程的辦法,不僅創(chuàng)造了一個新名詞,確實解決了軟件開發(fā)這一難題,還使軟件工程有了方向n 軟件工程今天已經(jīng)發(fā)展成為一門獨立的學(xué)科1.3、軟件工程、軟件工程o 手工(Craf
25、t): 小規(guī)模的設(shè)計與建造 簡單問題與單一目標(biāo) 個人控制與個人技能 比如:茅草棚o 工程(Engineering):是按照事先制定的計劃進行的工作和活動,是將理論和知識應(yīng)用于實踐的科學(xué)。大規(guī)模的設(shè)計與建造 復(fù)雜問題與目標(biāo)分解 需要規(guī)劃、設(shè)計、構(gòu)建等步驟 多人參與,需要考慮運營、管理、成本、質(zhì)量控制、安全等 -比如:高樓大廈工程與手工的區(qū)別1.3、軟件工程、軟件工程工程與手工的區(qū)別#includeint main()printf(“HelloWord!”);o 太簡單,不必規(guī)劃和設(shè)計,直接編程就可以。o 但是,要開發(fā)一個圖書管理系統(tǒng)軟件,就必須要設(shè)計。o 軟件的設(shè)計同設(shè)計高樓大廈一樣,也要有設(shè)計
26、圖,結(jié)構(gòu)圖-手工手工-工程工程因此軟件開發(fā)和維護與其它行業(yè)的生產(chǎn)一樣,也必須走因此軟件開發(fā)和維護與其它行業(yè)的生產(chǎn)一樣,也必須走工程化的道路!工程化的道路!1.3、軟件工程、軟件工程軟件工程定義o 是指導(dǎo)計算機軟件開發(fā)和維護的一門工程學(xué)科。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟地開發(fā)出高質(zhì)量的軟件并有效地維護它.o 基本思想:是強調(diào)在軟件開發(fā)過程中應(yīng)用工程化原則,解決軟件的整體質(zhì)量較低、最后期限和費用沒有保證等問題。 提高軟件的質(zhì)量與生產(chǎn)率,最終實現(xiàn)軟件的工業(yè)化生產(chǎn)。1.3、軟件工程、軟件工程軟件工程定義
27、o 軟件工程:借鑒了傳統(tǒng)工程的原則和方法,以求高效地開發(fā)高質(zhì)量軟件。其中應(yīng)用了計算機科學(xué)、數(shù)學(xué)和管理科學(xué)。n 計算機科學(xué)和數(shù)學(xué)用于構(gòu)造模型與算法,n 管理科學(xué)用于計劃、資源、質(zhì)量和成本的管理。1.3、軟件工程、軟件工程 o 【例】 請開發(fā)一個“圖書館信息系統(tǒng)”,即圖書館MIS。o 首先要選擇軟件開發(fā)模型,確定開發(fā)方法,準(zhǔn)備開發(fā)工具,設(shè)計開發(fā)環(huán)境和運行環(huán)境,o 然后進行需求分析、概要設(shè)計、詳細設(shè)計、編程、測試、試運行、正式運行、驗收和交付,o 最后是系統(tǒng)維護或系統(tǒng)升級換代。o 這樣按照所選擇的開發(fā)模型,走完了軟件的一個生存周期。o 這一系列的軟件開發(fā)過程和管理過程,就是軟件工程。 1.3、軟件工
28、程、軟件工程軟件工程的定義軟件工程的定義(1)軟件工程關(guān)注于大型程序的構(gòu)造u “大”與“小”的分界線并不十分清晰。通常把一個人在較短時間內(nèi)寫出的程序稱為小型程序,而把多人合作用時半年以上才寫出的程序稱為大型程序。軟件工程關(guān)注的關(guān)鍵問題軟件工程關(guān)注的關(guān)鍵問題1.3、軟件工程、軟件工程(2)軟件工程的中心課題是控制復(fù)雜性控制復(fù)雜性的有效方控制復(fù)雜性的有效方法是分解:法是分解:面向過程的方法,是面向過程的方法,是按功能分解;按功能分解;面向?qū)ο蟮姆椒?,是面向?qū)ο蟮姆椒ǎ前簇?zé)任分解。按責(zé)任分解。軟件工程關(guān)注的關(guān)鍵問題軟件工程關(guān)注的關(guān)鍵問題1.3、軟件工程、軟件工程(3)軟件需求經(jīng)常變化變化需求變更是
29、軟件開發(fā)活動與生俱來的特性,不可避免,需求變更是軟件開發(fā)活動與生俱來的特性,不可避免,也是軟件開發(fā)面臨的最大挑戰(zhàn)。也是軟件開發(fā)面臨的最大挑戰(zhàn)。軟件工程追求的是、封裝變更,靈活設(shè)計,應(yīng)對變更,軟件工程追求的是、封裝變更,靈活設(shè)計,應(yīng)對變更,通過好的設(shè)計方法,使變更對原有設(shè)計方案和已有代碼通過好的設(shè)計方法,使變更對原有設(shè)計方案和已有代碼影響最小。影響最小。軟件工程關(guān)注的關(guān)鍵問題軟件工程關(guān)注的關(guān)鍵問題1.3、軟件工程、軟件工程(4)開發(fā)軟件的效率非常重要規(guī)范的開發(fā)過程規(guī)范的開發(fā)過程好的開發(fā)環(huán)境和工具、好的開發(fā)環(huán)境和工具、提高軟件復(fù)用提高軟件復(fù)用是軟件工程提高效率的是軟件工程提高效率的有效辦法。有效辦
30、法。軟件工程關(guān)注的關(guān)鍵問題軟件工程關(guān)注的關(guān)鍵問題1.3、軟件工程、軟件工程(5 5)和諧地合作是開發(fā)軟件的關(guān)鍵)和諧地合作是開發(fā)軟件的關(guān)鍵o軟件處理的問題日益復(fù)雜和龐大,軟件開發(fā)往軟件處理的問題日益復(fù)雜和龐大,軟件開發(fā)往往是多人協(xié)同工作的成果,明確的往是多人協(xié)同工作的成果,明確的責(zé)任劃分和責(zé)任劃分和有效的互通信有效的互通信是團隊成員協(xié)作的關(guān)鍵。是團隊成員協(xié)作的關(guān)鍵。o事實上僅有上述規(guī)定還不夠,每個人還必須嚴(yán)事實上僅有上述規(guī)定還不夠,每個人還必須嚴(yán)格地按規(guī)定行事。為了迫使團隊成員遵守規(guī)定,格地按規(guī)定行事。為了迫使團隊成員遵守規(guī)定,應(yīng)該應(yīng)該運用標(biāo)準(zhǔn)和規(guī)程運用標(biāo)準(zhǔn)和規(guī)程。通常,可以用工具來支。通常,
31、可以用工具來支持這些標(biāo)準(zhǔn)和規(guī)程??傊?,紀(jì)律是成功地完成持這些標(biāo)準(zhǔn)和規(guī)程??傊?,紀(jì)律是成功地完成軟件開發(fā)項目的一個關(guān)鍵。軟件開發(fā)項目的一個關(guān)鍵。團隊合作是必團隊合作是必須的,使用有須的,使用有效的工具,進效的工具,進行有效的溝通行有效的溝通是關(guān)鍵是關(guān)鍵軟件工程關(guān)注的關(guān)鍵問題軟件工程關(guān)注的關(guān)鍵問題1.3、軟件工程、軟件工程軟件工程原理1.3、軟件工程、軟件工程o 軟件工程專家B.W.BOEHM 提出軟件工程的七條原理:1. 按軟件生存周期分階段制定計劃并認(rèn)真實施2. 堅持進行階段評審3. 實行嚴(yán)格的產(chǎn)品控制4. 采用現(xiàn)代程序設(shè)計技術(shù)5. 明確責(zé)任6. 開發(fā)小組人員少而精7. 不斷改進開發(fā)過程軟件工
32、程研究內(nèi)容軟件開發(fā)技術(shù)軟件開發(fā)技術(shù)軟件工程管理軟件工程管理軟件開發(fā)方法學(xué)軟件開發(fā)方法學(xué)軟件工具軟件工具軟件開發(fā)過程軟件開發(fā)過程軟件管理學(xué)軟件管理學(xué)軟件經(jīng)濟學(xué)軟件經(jīng)濟學(xué)軟件度量學(xué)軟件度量學(xué)1.3、軟件工程、軟件工程方法使用的順序;要求交付的方法使用的順序;要求交付的文檔資料;為保證質(zhì)量和適應(yīng)文檔資料;為保證質(zhì)量和適應(yīng)變化所需要的管理;軟件開發(fā)變化所需要的管理;軟件開發(fā)各個階段完成的里程碑。各個階段完成的里程碑。軟件開發(fā)提供了軟件開發(fā)提供了 “如如何做何做” 的技術(shù)。的技術(shù)。為軟件工程方法提供了為軟件工程方法提供了自動的或半自動的軟件自動的或半自動的軟件支撐環(huán)境,支撐環(huán)境,CASE軟件工程研究內(nèi)容
33、軟件工程研究內(nèi)容軟件工程的三要素軟件工程的三要素1.3、軟件工程、軟件工程低開發(fā)成本低開發(fā)成本易于維護易于維護高可靠性高可靠性高性能高性能按時交付按時交付互斥互補可見,軟件工程所追求的目標(biāo)是:可見,軟件工程所追求的目標(biāo)是: 軟件工程的目標(biāo)1.3、軟件工程、軟件工程軟件工程方法學(xué) 軟件工程的發(fā)展已經(jīng)歷了軟件工程的發(fā)展已經(jīng)歷了個重要階段:個重要階段:1 1、第一代第一代軟件工程軟件工程 傳統(tǒng)傳統(tǒng)的軟件工程的軟件工程 6 0 年 代 末 到 7 0 年 代 為 了 克 服 “ 軟 件 危 機 ” (Software crisis)提出“軟件工程”的名詞, 將軟件開發(fā)納入工程化的軌道,基本形成軟件工程
34、的概念、框架、技術(shù)和方法-結(jié)構(gòu)化的開發(fā)方法,稱為傳統(tǒng)的軟件工程1.3、軟件工程、軟件工程軟件工程方法學(xué)軟件工程的發(fā)展已經(jīng)歷了軟件工程的發(fā)展已經(jīng)歷了個重要階段:個重要階段:3 3、第三代第三代軟件工程軟件工程 構(gòu)件工程(軟件復(fù)用)構(gòu)件工程(軟件復(fù)用)2 2、第二代第二代軟件工程軟件工程 對象工程對象工程1 1、第一代第一代軟件工程軟件工程 傳統(tǒng)傳統(tǒng)的軟件工程的軟件工程 80年代中到90年代,面向?qū)ο蟮姆椒ㄅc技術(shù)得到發(fā)展,研究的重點轉(zhuǎn)移到面向?qū)ο蟮姆治雠c設(shè)計,演化為一種完整的軟件開發(fā)方法和技術(shù)體系,稱為對象工程。1.3、軟件工程、軟件工程軟件工程方法學(xué)軟件工程的發(fā)展已經(jīng)歷了軟件工程的發(fā)展已經(jīng)歷了個
35、重要階段:個重要階段:3 3、第三代第三代軟件工程軟件工程 構(gòu)件工程(軟件復(fù)用)構(gòu)件工程(軟件復(fù)用)2 2、第二代第二代軟件工程軟件工程 對象工程對象工程1 1、第一代第一代軟件工程軟件工程 傳統(tǒng)傳統(tǒng)的軟件工程的軟件工程 90起年代,基于構(gòu)件(Component)的開發(fā)方法取得重要進展,軟件系統(tǒng)的開發(fā)可通過使用現(xiàn)成的可復(fù)用構(gòu)件組裝完成,而無需從頭開始構(gòu)造,以此達到提高效率和質(zhì)量,降低成本的目的。稱為構(gòu)件工程。1.3、軟件工程、軟件工程軟件工程方法學(xué)q本課程具體討論以下兩種方法: 結(jié)構(gòu)化開發(fā)方法 面向?qū)ο蟮拈_發(fā)方法 1.3、軟件工程、軟件工程o 軟件工程是為了克服日益嚴(yán)重的軟件危機而發(fā)展起來o
36、目的-成功地建造一個大型軟件系統(tǒng),能在開發(fā)成本、開發(fā)時間、軟件功能及性能等方面達到預(yù)期目標(biāo)。o 為了實現(xiàn)這一目標(biāo),提出了軟件工程化的思想-從管理和技術(shù)兩方面指導(dǎo)軟件開發(fā)。o 雖然目前軟件工程并不能使我們完全擺脫軟件危機,但對于在軟件開發(fā)和維護過程中盡快消除一些錯誤的認(rèn)識和做法,并使用一些在實踐中總結(jié)出來的成功的經(jīng)驗和方法,以提高軟件的生產(chǎn)率和成功率起到了積極的作用。小結(jié)小結(jié)軟件工程 思想 流程 方法 工具 最佳實踐 思想思想流程流程方法方法工具工具最佳最佳實踐實踐基本要素小結(jié)小結(jié)軟件工程的內(nèi)涵o 軟件工程學(xué)科包含為完成軟件需求、設(shè)計、構(gòu)建、測試和維護所需的知識、方法和工具。o 軟件工程不局限在
37、理論之上,更重要在實踐上,能夠幫助軟件組織協(xié)調(diào)團隊、運用有限的資源,遵守已定義的軟件工程規(guī)范,通過一系列可復(fù)用的、有效的方法,在規(guī)定的時間內(nèi)達到預(yù)先設(shè)定的目標(biāo) 小結(jié)小結(jié)常用軟件工具1、圖稿繪制工具 office visio 畫流程圖等2、源碼瀏覽工具 sourceInsight 看調(diào)用關(guān)系 3、配置管理工具 VSS 、ClearCase4、數(shù)據(jù)庫建模工具 Powerdesigner5、UML建模工具 Rational rose6、項目管理工具 Ms Project7、軟件測試工具 QPT 、Loadruner作業(yè)o P32 1、3o 了解軟件開發(fā)工具o 思考:1 1、有人說:軟件開發(fā)時,一個錯
38、誤發(fā)現(xiàn)得越、有人說:軟件開發(fā)時,一個錯誤發(fā)現(xiàn)得越晚,為改正它所付出的代價就越大。對否?晚,為改正它所付出的代價就越大。對否?請解釋你的回答。請解釋你的回答。2、軟件與程序有什么不同?思考練習(xí)2 2、有人說:軟件開發(fā)時,一個錯誤發(fā)現(xiàn)得越晚,為改正它所、有人說:軟件開發(fā)時,一個錯誤發(fā)現(xiàn)得越晚,為改正它所付出的代價就越大。對否?請解釋你的回答。付出的代價就越大。對否?請解釋你的回答。對的。對的。在在19701970年代,年代,GTEGTE、TRWTRW和和IBMIBM等三家公司對此問題做了獨等三家公司對此問題做了獨立研究,最后它們得到相似的結(jié)論:立研究,最后它們得到相似的結(jié)論:從表中可以看出,在需求
39、分析階段檢查和修復(fù)一個錯誤所需的從表中可以看出,在需求分析階段檢查和修復(fù)一個錯誤所需的代價只有編碼階段所需代價的代價只有編碼階段所需代價的1/51/5到到1/101/10,而在維護階段做,而在維護階段做同樣的工作所付出的代價卻是編碼階段的同樣的工作所付出的代價卻是編碼階段的2020倍。倍。階段階段需 求 分需 求 分析析軟 件 設(shè)軟 件 設(shè)計計程 序 編程 序 編碼碼單 元 測單 元 測試試驗收測驗收測試試 維維 護護相對修復(fù)代價相對修復(fù)代價 0.10.1 0.2 0.5 1 2 5 20思考練習(xí)2 2、軟件與程序有什么不同?o 軟件包括程序、數(shù)據(jù)及其相關(guān)文檔的完整集合。o 重點:軟件是由兩部分組成
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 彩鋼板建筑群與產(chǎn)業(yè)園區(qū)時空關(guān)聯(lián)關(guān)系研究
- 高管團隊異質(zhì)性對制造企業(yè)創(chuàng)新投入的影響研究
- 隧道工程系統(tǒng)韌性影響因素及評價研究
- 科技企業(yè)如何進行高效的財務(wù)管理與稅務(wù)規(guī)劃
- 2025年油氣鉆采設(shè)備項目建議書
- 《山火與洪水-1979年至今人類氣候變化歷程》(節(jié)選)英漢翻譯實踐報告
- 電競產(chǎn)業(yè)與教育領(lǐng)域的融合發(fā)展
- 櫟葉繡球再生及光響應(yīng)機制和遺傳轉(zhuǎn)化體系研究
- 偶然情緒對自我-他人風(fēng)險決策的影響
- 防腐蝕添加劑企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- 2025勞動合同法重點法條導(dǎo)讀附案例詳解
- 2025年內(nèi)蒙古自治區(qū)政府工作報告測試題及參考答案
- 2024年全國中學(xué)生生物學(xué)聯(lián)賽試題及答案詳解
- 小學(xué)班會-交通安全伴我行(共25張課件)
- 建筑施工現(xiàn)場安全警示(案例)
- 《生產(chǎn)與運作管理 第4版》課件 第1、2章 概論、需求預(yù)測與管理
- 護理禮儀與人文關(guān)懷
- 患者隱私保護的考試試題及答案
- 2025年中考數(shù)學(xué)一輪教材復(fù)習(xí)-第六章 圓 與圓有關(guān)的概念及性質(zhì)
- 2025年村兩委工作計劃
- 2025年日歷(日程安排-可直接打印)
評論
0/150
提交評論