第1章 軟件工程概述_第1頁
第1章 軟件工程概述_第2頁
第1章 軟件工程概述_第3頁
第1章 軟件工程概述_第4頁
第1章 軟件工程概述_第5頁
已閱讀5頁,還剩65頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第一章軟件(ruǎnjiàn)與軟件(ruǎnjiàn)工程馬偉鋒mawf@浙江科技學院(xuéyuàn)信息與電子工程學院(xuéyuàn)1共七十頁本章(běnzhānɡ)內容1.1軟件基本概念軟件概念、軟件特點、軟件分類、軟件發展1.2軟件工程(ruǎnjiànɡōnɡchénɡ)“軟件危機”、軟件工程1.3軟件生命周期1.4軟件過程共七十頁31.1軟件(ruǎnjiàn)基本概念

1.1.1什么是軟件?軟件是:(1)指令的集合(計算機程序),通過執行這些指令來滿足預期的特征、功能和性能需求;

(2)數據結構,使得程序可以(kěyǐ)合理的利用信息;(3)文檔描述,用來描述程序操作和使用。程序=?軟件共七十頁41.1.2軟件(ruǎnjiàn)的特點軟件是邏輯產品,不同于物理產品,軟件更新復雜,硬件簡單替換。硬件會磨損(浴缸曲線),軟件不會(失效曲線)。軟件本身復雜,設計開發復雜,如人員要求高,成本、進度難控制,風險(fēngxiǎn)大、維護困難等。

采用構件的構造模式發展,然而大多數軟件仍是根據實際的顧客需求定制的。共七十頁5磨損(mósǔn)vs.退化磨合調整磨損用壞修改點實際曲線理想曲線硬件失效率曲線時間失效率時間失效率軟件失效率曲線共七十頁61.1.3軟件(ruǎnjiàn)的分類系統軟件(xìtǒnɡruǎnjiàn)應用軟件工程/科學軟件嵌入式軟件產品線軟件Web應用軟件人工智能軟件共七十頁7軟件(ruǎnjiàn)新的分類開放計算—普遍的,分布式計算普適計算—無線網絡網絡資源—萬維網發展為一個計算引擎(yǐnqíng)開放源碼—“免費”

源代碼開放了計算機群體(它是一種福利,但也是一種潛在的威脅!)其他

(參見第31章)數據挖掘網格計算認知機納米技術軟件共七十頁1.1.4軟件(ruǎnjiàn)的發展共七十頁早期面向批處理有限(yǒuxiàn)的分布自定義軟件第二階段多用戶實時(shíshí)數據庫軟件產品第三階段分布式系統嵌入“智能”低成本硬件消費者的影響第四階段強大的桌面系統面向對象技術專家系統人工神經網絡并行計算網路計算機195019601970198019902000角色轉變:程序–

工具–

服務–

知識共七十頁10遺留(yíliú)軟件軟件必須進行適應性調整,以滿足新的計算環境和技術的需求。軟件必須升級以實現新的商業需求。軟件必須擴展使之具有(jùyǒu)與更多現代系統和數據庫的互操作能力。軟件必須進行改建使之能適應多樣化的網絡環境。為什么一定要變更?共七十頁11軟件(ruǎnjiàn)發展面臨問題對軟件的質量要求越來越高。軟件的體量變得越來越龐大,“個人英雄主義”很難在存在了。軟件企業面臨激烈(jīliè)的競爭。軟件必須進行改建使之能適應多樣化的網絡環境。軟件開發的方法嚴重落后?!?968年10月,北大西洋公約組織(NATO)的科學家在德國召開的學術會議上正式提出了軟件危機問題。共七十頁1.1.5軟件(ruǎnjiàn)危機

共七十頁一些實際(shíjì)例子80年代歐洲亞麗安娜火箭的發射失敗,原因是軟件錯誤(cuòwù)。美國阿托拉斯火箭的發射失敗,原因是軟件故障。日本第5代機因為軟件問題在投入50億美元后于1993年下馬。共七十頁一組統計數字共七十頁危機(wēijī)原因共七十頁軟件規模(guīmó)類別參加人員數研制期限源程序行數

微型 1 1~4周0.5k小型1 1~6月1k~2k中型2~5 1~2年5k~50k大型5~20 2~3年50k~100k甚大型100~10004~5年1M(=1000k)極大型2000~50005~10年1M~10M

共七十頁引入“工程(gōngchéng)”思想工程:以某組設想的目標為依據,應用有關的科學知識和技術手段,通過一群人的有組織活動將某個(mǒuɡè)(或某些)現有實體(自然的或人造的)轉化為具有預期使用價值的人造產品過程。建筑工程機械工程共七十頁軟件工程:克服軟件(ruǎnjiàn)危機的努力(1)從管理的角度

軟件開發過程的研究、文檔的標準化以及人們的交流方式等。(2)軟件開發技術(jìshù)、方法的研究

如結構化軟件開發方法,面向對象的開發共七十頁20世紀80年代末,美國DoD和工業界開始認識到管理的重要性。美國DoD的一項研究表明,70%的項目由于管理不善導致難以控制進步、成本和質量進一步的研究發現:管理是影響軟件項目成功開發的全局性因素,而技術只影響局部如果軟件開發組織不能對軟件項目進行(jìnxíng)有效管理,就不能充分發揮軟件開發方法和工具的潛力,也就不能高效率地開發出高質量的軟件產品1.解決危機(wēijī)的管理途徑共七十頁提出有效的方法和工具支持軟件開發:1968年提出軟件工程概念和思想20世紀70年代的結構化軟件開發方法20世紀80年代的面向對象的軟件開發方法新的技術(jìshù):軟件重用、快速原型、需求工程典型技術:COM,Java,C++,J2EE,.Net,….支撐工具和環境:Jbuilder,VisualStudio,WebLogic,…2.解決(jiějué)危機的技術方法途徑共七十頁211.2軟件工程(ruǎnjiànɡōnɡchénɡ)種子定義:軟件工程是建立和使用(shǐyòng)一套合理的工程原則,以便經濟地獲得可靠的、可以在實際機器上高效運行的軟件。共七十頁軟件工程(ruǎnjiànɡōnɡchénɡ)定義:軟件工程是:(1)將系統化的、規范的、可量化的方法應用于軟件的開發、運行和維護,即將(jíjiāng)工程化方法應用于軟件。(2)在(1)中所述方法的研究?!狪EEE共七十頁軟件工程(ruǎnjiànɡōnɡchénɡ)的特點1.軟件工程關注于大型程序的構造2.軟件工程的中心課題是控制復雜性3.軟件經常變化4.開發軟件的效率非常重要5.和諧地合作是開發軟件的關鍵6.軟件必須有效地支持它的用戶7.在軟件工程領域中是由具有(jùyǒu)一種文化背景的人替具有(jùyǒu)另一種文化背景的人共七十頁軟件工程(ruǎnjiànɡōnɡchénɡ)的基本原理用分階段的生命周期計劃嚴格管理堅持進行階段評審實行嚴格的產品控制采用現代程序設計技術結果應能清楚(qīngchu)地審查開發小組的人員應該少而精承認不斷改進軟件工程實踐的必要性共七十頁SoftwareEngineeringa“quality”focusprocessmodelmethodstools工具(gōngjù)過程(guòchéng)方法質量關注點軟件工程:一種層次化技術軟件工程共七十頁舉例(jǔlì):去杭州千島湖旅游共七十頁ALM(ApplicationLifecycleManagement)MSF(MicrosoftSolutionFramework)共七十頁軟件工程學通常把在軟件生命周期全過程中使用(shǐyòng)的一整套技術方法的集合稱為方法學(methodology),也稱為范型(paradigm)。共七十頁軟件工程(ruǎnjiànɡōnɡchénɡ)的擴展共七十頁1.3軟件(ruǎnjiàn)生命周期模型共七十頁1.4軟件(ruǎnjiàn)過程軟件過程是各個環節的粘合劑,串聯。軟件產品構建時所執行的一系列活動(activity)、動作(action)和任務(rènwu)(task)的集合。過程框架:框架活動+普適性活動Frameworkactivity+umbrellaactivity共七十頁32過程(guòchéng)框架舉例:過程框架框架活動軟件工程動作工作任務工作產品(chǎnpǐn)里程碑和可交付成果QA檢查點普適性活動共七十頁33一個通用的框架包含(bāohán)5個活動:溝通策劃建模需求分析(fēnxī)設計構建代碼生成測試部署共七十頁34普適性活動(huódòng)軟件項目管理正式技術(jìshù)評審軟件質量保證軟件配置管理工作產品的準備和生產可復用管理測量風險管理共七十頁1.4.1過程(guòchéng)流-框架活動流程溝通(gōutōng)策劃建模構建部署共七十頁361.4.1過程流-框架(kuànɡjià)活動流程共七十頁37注意:項目不同(bùtónɡ),過程可能不同(bùtónɡ)活動、動作和任務的總體流程(liúchéng),以及它們之間相互依賴關系在每一個框架活動中,動作和任務細化的程度工作產品的定義和要求的程度質量保證活動應用的方式項目跟蹤和控制活動應用的方式過程描述的詳細程度和嚴謹程度客戶和利益相關者對項目參與的程度軟件團隊所賦予的自主權隊伍組織和角色明確程度共七十頁38軟件工程(ruǎnjiànɡōnɡchénɡ)實踐的精髓Polya建議:1.理解問題(溝通分析)。2.計劃解決方案(建模和軟件設計)。3.實施(shíshī)計劃

(代碼生成)。4.檢查結果的準確性(測試和質量保證)。共七十頁1.5經典軟件過程(guòchéng)模型(1)瀑布(pùbù)模型(WaterfallModel)傳統瀑布模型共七十頁

傳統瀑布(pùbù)模型的特點提供了軟件過程模型的基本框架(模板)。強調了每一階段活動的嚴格順序。質量保證觀點:以經過評審確認了的階段工作(gōngzuò)產品(文檔)驅動下一階段的工作,便于管理。是一種整體開發模型,程序的物理實現集中在開發階段的后期,用戶在最后才能看到自己的產品。傳統瀑布模型存在什么問題?1.5經典軟件過程模型共七十頁實際(shíjì)的瀑布模型1.5經典軟件過程(guòchéng)模型共七十頁瀑布模型適合于用戶需求明確、完整、無重大變化的軟件項目開發。瀑布模型的成功在很大程度上是由于它基本上是一種文檔驅動的模型“瀑布模型是由文檔驅動的”這個事實也是它的一個主要缺點:實際項目很少按照該模型給出的順序進行(jìnxíng);用戶常常難以清楚地給出所有需求;用戶必須有耐心,等到系統開發完成。瀑布(pùbù)模型的優缺點1.5經典軟件過程模型共七十頁(2)原型(yuánxíng)模型—快速原型模型(RapidPrototypeModel)在用戶不能給出完整、準確的需求說明,或者開發者不能確定算法的有效性、操作系統的適應性或人機交互的形式等許多情況下,可以根據用戶的一組基本需求,快速建造一個原型(yuánxíng)(可運行的軟件),然后進行評估,進一步精化、調整原型(yuánxíng),使其滿足用戶的要求,也使開發者對將要做的事情有更好的理解。建造/修改原型

聽取用戶意見用戶測試運行原型原型實現范型1.5經典軟件過程模型共七十頁快速(kuàisù)原型驗證(yànzhèng)規格說明驗證設計驗證編碼測試綜合測試維護變化的需求驗證維護過程開發過程1.5經典軟件過程模型共七十頁原型模型存在的問題⑴為了使原型盡快的工作,沒有考慮軟件的總體質量和長期的可維護性。⑵為了演示,可能采用不合適的操作系統、編程語言、效率低的算法,這些不理想的選擇成了系統的組成部分。⑶開發過程不便于管理。有效的使用原型模式建造(jiànzào)原型僅是為了定義需求,之后就被拋棄(或被部分拋棄),實際的軟件在充分考慮了質量和可維護性之后才被開發。1.5經典軟件(ruǎnjiàn)過程模型共七十頁(3)增量(zēnɡliànɡ)模型(IncrementalModel)是一種漸進地開發逐步完善的軟件(ruǎnjiàn)版本的模型。需求分析驗證規格說明驗證設計驗證維護針對每個構件完成詳細設計、編碼和集成,經測試后交付給用戶1.5經典軟件過程模型共七十頁分析(fēnxī)分析(fēnxī)分析分析設計設計設計設計編碼編碼編碼編碼測試測試測試測試增量1增量2增量3增量4交付交付交付交付●●●●●

?

反復的應用瀑布模型的基本成分和原型模型的迭代特征,每一個線型過程產生一個“增量”的發布或提交,該增量均是一個可運行的產品。

?

早期的版本實現用戶的基本需求,并提供給用戶評估的平臺。增量模型共七十頁在較短時間內向用戶提交可完成部分工作的產品,并分批、逐步地向用戶提交產品。從第一個構件交付之日起,用戶就能做一些有用的工作。整個軟件產品被分解成許多個增量構件,開發人員可以一個構件一個構件地逐步開發。逐步增加產品功能可以使用戶有較充裕的時間學習和適應新產品,從而減少一個全新的軟件可能給客戶組織帶來的沖擊。采用增量模型比采用瀑布模型和快速原型模型需要更精心的設計,但在設計階段多付出的勞動將在維護階段獲得(huòdé)回報。增量(zēnɡliànɡ)模型的優點1.5經典軟件過程模型共七十頁增量模型(móxíng)的困難在把每個新的增量構件集成到現有軟件體系結構中時,必須不破壞原來已經開發出的產品。此外,必須把軟件的體系結構設計得便于按這種方式進行擴充,向現有產品中加入新構件的過程必須簡單、方便,也就是說,軟件體系結構必須是開放(kāifàng)的。開發人員既要把軟件系統看作整體。又要看成可獨立的構件,相互矛盾。多個構件并行開發,具有無法集成的風險。1.5經典軟件過程模型共七十頁(4)螺旋(luóxuán)模型(SpiralModel)軟件風險是任何軟件開發項目中都普遍存在的實際問題,項目越大,軟件越復雜,承擔該項目所冒的風險也越大。對于復雜的大型軟件,開發一個原型往往達不到要求。螺旋模型將瀑布模型和增量(zēnɡliànɡ)模型結合起來,加入了風險分析。在該模型中,軟件開發是一系列的增量(zēnɡliànɡ)發布,早期的迭代中,發布的增量(zēnɡliànɡ)可能是一個紙上的模型或原型,在以后的迭代中,逐步產生系統更加完善的版本。螺旋模型的基本思想是降低風險。1.5經典軟件過程模型共七十頁快速(kuàisù)原型驗證(yànzhèng)規格說明驗證設計驗證編碼測試綜合測試維護變化的需求驗證風險分析風險分析風險分析風險分析風險分析風險分析可看作在每個階段之前都增加了風險分析過程的快速原型模型。簡化的螺旋模型1.5經典軟件過程模型共七十頁完整(wánzhěng)的螺旋模型1.5經典(jīngdiǎn)軟件過程模型共七十頁

溝通螺旋(luóxuán)模型風險(fēngxiǎn)分析工程實施用戶通信用戶評估產品維護項目產品增強項目新產品開發項目概念開發項目計劃建造及發布共七十頁螺旋模型的優點對可選方案和約束條件的強調有利于已有軟件的重用,也有助于把軟件質量作為軟件開發的一個重要目標減少了過多測試或測試不足維護和開發之間并沒有本質區別螺旋模型的特點風險驅動,需要相當豐富的風險評估經驗和專門知識,否則風險更大主要適用于內部(nèibù)開發的大規模軟件項目,隨著過程的進展演化,開發者和用戶能夠更好的識別和對待每一個演化級別上的風險隨著迭代次數的增加,工作量加大,軟件開發成本增加1.5經典軟件過程(guòchéng)模型共七十頁(5)面向對象模型(móxíng)噴泉(pēnquán)模型(FountainModel)分析設計實現測試集成演化特點:主要用于支持面向對象開發過程體現了軟件創建所固有的迭代和無間隙的特征1.5經典軟件過程模型共七十頁可重用(zhòngyòng)部件組裝模型(構件集成模型)

(ComponentIntegrationModel)

構件(components)也稱為組件,是一段實現一系列有確定接口的程序體,具有自己的功能和邏輯,能同其他構件集成起來協調工作。該模型支持軟件重用(Reusability),對縮短軟件開發周期、降低項目成本有重要的現實意義。同時,建造符合某應用領域體系結構標準的構件,可以用來搭建分布式的、跨越不同操作平臺(集成化軟件開發環境(ISEE))的軟件,擴展(kuòzhǎn)了軟件的應用前景,促進了軟件標準化、商品化的發展。因此,在此基礎上專家們又提出了“基于構件的軟件工程”(CBSE)。構件集成模型如下圖所示:1.5經典軟件過程模型共七十頁

構件集成模型軟件體系結構被建立后,必須用構件去充實(chōngshí),這些構件可從復用庫中獲得,或者根據專門需要而開發。整個過程可以演化地進行,面向對象方法給予技術上的支持。1.5經典軟件過程(guòchéng)模型共七十頁Sommerville提出基于組件開發有兩種思路:完成高層設計,對設計中的組件給出描述,以便找出可復用的組件,這些組件可在體系結構層次上加入或更詳細(xiángxì)的設計層次上加入。先根據需求搜尋可復用組件,再將設計建立在獲得的組件基礎上。這兩種思路可結合起來。設計(shèjì)系統體系結構描述組件搜尋可復用組件集成系統先完成架構設計的復用系統需求描述搜尋可復用組件對需求作某些修改體系結構設計集成系統復用驅動設計1.5經典軟件過程模型共七十頁

構件技術主要有三種流行標準:OMG的CORBA:

對象管理組織發布的公用對象請求代理體系結構(CommonObjectRequestBrokerArchitecture)。通過一個對象請求代理(ORB)提供(tígōng)一系列服務,使得一個構件和其他構件通信,而不管它們在系統中的位置,實現了遠程對象通過接口進行通信的機制。為了解決CORBA對象引用不透明、缺少多重接口、系統過于復雜等問題,專家們又開發了新一代面向對象中間件平臺ICE(InternetCommunicationsEngine—互聯網通信引擎)。使構建分布式應用系統更容易、性能和伸縮性更好。

1.5經典軟件過程(guòchéng)模型共七十頁微軟的COM/DCOM:微軟開發了構件對象模型(ComponentObjectModel),它提供了運行(yùnxíng)于windows之上的單個應用系統使用不同廠商生產的構件的規約。基于分布式環境下的COM稱為DCOM(DistributeCOM)。SUN的EJB(EnterpriseJavaBean):隨著Java在企業級應用的地位日趨重要,Sun提出了一個統一的企業級Java平臺—J2EE(Java2EnterpriseEdition)。在J2EE中,EJB負責最核心的業務處理。它為服務器端的應用程序提供了一種與廠商無關的Java接口,讓任何符合EJB規范的構件都可以運行在每一臺這樣的服務器上。

構件技術主要(zhǔyào)有三種流行標準:共七十頁(6)統一軟件開發過程

是由Rational公司的Booch、Jacobson、Rumbaugh提出的軟件過程模型,也稱RUP(RationalUnifiedProcess)。RUP重復一系列周期(zhōuqī),每個周期(zhōuqī)由一個交付給用戶的產品結束。每個周期劃分為初始、細化、構造和移交四個階段,每個階段圍繞著五個核心工作流(需求、分析、設計、實現、測試)分別迭代。

模型見下圖:1.5經典軟件過程(guòchéng)模型共七十頁RUP軟件開發生命周期共七十頁初始階段:進行問題定義,確定目標,評估其可行性,降低關鍵風險。細化階段:制定項目計劃、配置各類資源、建立系統架構(包括各類視圖)。構造階段:開發(kāifā)整個產品,并確保產品可移交給用戶。移交階段:產品發布、安裝、用戶培訓。在每個階段的每次迭代的最后,用例模型、分析模型、設計模型、實現模型都會增量,每個階段結束的里程碑處,管理層做出是否繼續、進度、預算、是否給下一階段提供資助等決定。不同階段工作流的側重點不同,前兩階段大部分工作集中在需求、分析和架構設計上;在構造階段,重點轉移到詳細設計、實現和測試上。1.5經典軟件過

溫馨提示

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

評論

0/150

提交評論