版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
現(xiàn)代軟件工程
主講(zhǔjiǎng):劉念
liu-nian@
05一月2025共四百零一頁課程(kèchéng)概述一、軟件工程學科介紹(jièshào)二、學習目標三、部分參考資料四、課程特點和學習的注意事項五、教材簡介共四百零一頁一、軟件工程(ruǎnjiànɡōnɡchénɡ)學科介紹軟件程學科發(fā)展歷史三個階段(jiēduàn):概念提出、學科雛形、學科確立第一階段:概念提出1968年NATO會議(北大西洋公約組織的計算機科學家的國際會議)提出“軟件工程”概念。當時對“軟件工程”代表性定義:為了經(jīng)濟地獲得在真實機器上可靠工作的軟件而制定和使用的合理工程原則和方法。1972年IEEE學會的計算機分會IEEE一CS第一次出版了“軟件工程學報”共四百零一頁第二階段:學科(xuékē)雛形上世紀70年代末,美國將軟件工程教程列入研究生教育計劃。1980年代末和1990年代初,軟件工程教育得到卡內(nèi)基一梅隆大學軟件工程研究所(CMU/SEI)的支持。1991年,“軟件工程”被ACM(美國計算機協(xié)會)和IEEE/CS列為計算學科的九個知識領(lǐng)域之一。
1993年,IEEE一CS和ACM為了把軟件工程建設(shè)成為一個專業(yè)(zhuānyè),建立了IEEE一CS/ACM聯(lián)合指導(dǎo)委員會。共四百零一頁第三階段:學科(xuékē)確立2004年8月,IEEE一CS和ACM給出:軟件工程知識體(SWEBOK,SoftwareEngineeringBodyofKnowledge)軟件工程教育知識體(SEEK)最終版,標志著軟件工程學科在世界范圍正式確立。軟件工程(gōngchéng)、計算機科學、計算機工程(gōngchéng)、信息系統(tǒng)、信息技術(shù)并列成為計算學科下的獨立學科。軟件工程知識體(SWEBOK):全面描述了軟件工程實踐所需的知識。共四百零一頁SWEBOK(軟件工程知識(zhīshi)體》10個領(lǐng)域軟件需求(xūqiú)軟件設(shè)計軟件構(gòu)造軟件測試軟件維護軟件配置管理軟件工程管理軟件工程過程軟件工程工具和方法軟件質(zhì)量參考資料:[1]白征.SWEBOK:軟件工程知識體,計算機科學,2001年07期[2]萬江平.軟件工程知識體系指南綜述,計算機應(yīng)用研究,2006年10期共四百零一頁SWEBOK詳細(xiángxì)結(jié)構(gòu)(1)共四百零一頁共四百零一頁軟件工程與其他(qítā)學科的關(guān)系1、軟件工程是計算學科9個領(lǐng)域之一.算法和數(shù)據(jù)結(jié)構(gòu)計算機系統(tǒng)結(jié)構(gòu)人工智能和機器人學數(shù)據(jù)庫和信息檢索人一機交互操作系統(tǒng)(cāozuòxìtǒnɡ)程序設(shè)計語言軟件方法學和軟件工程數(shù)字和符號計算共四百零一頁2、8個相關(guān)(xiāngguān)學科知識域計算機工程計算機科學數(shù)學(shùxué)管理學項目管理質(zhì)量管理系統(tǒng)工程學軟件人類工程學其中:計算機科學、數(shù)學是基礎(chǔ)工程學科、管理學科也非常重要共四百零一頁軟件工程是一門(yīmén)什么樣的學科?
是指導(dǎo)計算機軟件開發(fā)與維護的一門工程學科。工程:將科學及數(shù)學原理運用于實際用途(yòngtú)的應(yīng)用手段,如:設(shè)計、制造、機器操縱、構(gòu)架等。典型的傳統(tǒng)工程:建筑工程、機械工程、電力工程等。概括的說,軟件工程即用工程、科學和數(shù)學的原則和方法研制、維護計算機軟件的有關(guān)技術(shù)及方法,其優(yōu)點是以較小的代價開發(fā)高質(zhì)量的軟件并有效地維護它。共四百零一頁二、學習(xuéxí)目標(1)
掌握軟件工程的基礎(chǔ)知識和理論,對軟件工程學有一個全貌的了解(liǎojiě);熟悉軟件項目開發(fā)和維護的一般過程;熟練掌握軟件需求分析、設(shè)計、編碼和測試等階段的主要思想和技術(shù)方法;共四百零一頁二、學習(xuéxí)目標(2)
通過學習,真正運用和深刻(shēnkè)體會軟件工程的思想方法,轉(zhuǎn)變對軟件開發(fā)的認識:從個人的單純編程活動轉(zhuǎn)移到進行系統(tǒng)分析與設(shè)計方面上來轉(zhuǎn)變思維定式:程序員―系統(tǒng)工程師(系統(tǒng)分析員)共四百零一頁教材(jiàocái)現(xiàn)代(xiàndài)軟件工程清華大學出版社~張曉龍(編者)共四百零一頁三、部分(bùfen)參考資料《軟件工程理論與實踐》許家冶等編著,高等教育出版社,2005年《軟件工程》(第二版),齊治昌等,高等教育出版社,2004年《面向?qū)ο蟮南到y(tǒng)分析》,楊芙清等編著,清華大學出版社,2001年《UML用戶(yònghù)指南》GBooch等著,邵維忠等譯,機械工業(yè)出版社2002年共四百零一頁四、課程(kèchéng)特點和學習的注意事項1、知易行難要將理論知識與實踐運用結(jié)合,進行對照,以加深理解和掌握。2、內(nèi)容紛雜軟件工程涉及計算機科學、數(shù)學、工程科學和管理科學等多個領(lǐng)域。其中:計算機科學和數(shù)學用于構(gòu)造模型與算法(suànfǎ);工程科學用于制定規(guī)范、設(shè)計范型、評估成本及確定權(quán)衡管理科學用于計劃、資源、質(zhì)量和成本的管理。共四百零一頁五、教材(jiàocái)總目錄第1章現(xiàn)代(xiàndài)軟件工程概述第2章面向?qū)ο筌浖_發(fā)方法第3章面向?qū)ο蠓治雠c設(shè)計技術(shù)第4章UML建模技術(shù)第5章軟件復(fù)用基礎(chǔ)第6章基于組件與WebService的軟件開發(fā)技術(shù)第7章軟件設(shè)計模式第8章軟件體系結(jié)構(gòu)第9章敏捷軟件過程第10章軟件測試技術(shù)與工具第11章軟件項目管理第12章面向?qū)ο髮崿F(xiàn)軟件成熟度模型與軟件過程共四百零一頁第1章現(xiàn)代軟件工程(ruǎnjiànɡōnɡchénɡ)概述1.1軟件1.2軟件危機(wēijī)
1.3軟件工程1.4軟件的生命周期1.5軟件過程的目標和原則1.6本章小結(jié)共四百零一頁學習(xuéxí)重點1、軟件危機、軟件工程產(chǎn)生的原因2、軟件工程過程和軟件生命周期3、軟件生命周期模型(móxíng)掌握幾個基本概念軟件危機軟件工程軟件過程軟件生命周期軟件生命周期模型共四百零一頁§1.1軟件(ruǎnjiàn)§1.1.1軟件的概念計算機軟件(ComputerSoftware)是指計算機系統(tǒng)中的程序及其文檔。程序是計算(jìsuàn)任務(wù)的處理對象和處理規(guī)則的描述;文檔是為了便于了解程序所需的闡明性資料。程序必須裝入機器內(nèi)部才能工作,文檔一般是給人看的,不一定裝入機器。軟件是用戶與硬件之間的接口界面。用戶主要是通過軟件與計算機進行交流。軟件是計算機系統(tǒng)設(shè)計的重要依據(jù)。為了方便用戶,為了使計算機系統(tǒng)具有較高的總體效用,在設(shè)計計算機系統(tǒng)時,必須通盤考慮軟件與硬件的結(jié)合,以及用戶的要求和軟件的要求。共四百零一頁§1.1軟件(ruǎnjiàn)§1.1.2軟件的特點是一種邏輯實體,具有抽象性;生產(chǎn)方式不同;依賴于計算機系統(tǒng);沒有像硬件(yìnɡjiàn)那樣的機械磨損和老化;手工開發(fā)為主;復(fù)雜性;成本高;涉及社會因素。共四百零一頁§1.1軟件(ruǎnjiàn)§1.1.3軟件的分類計算機軟件總體(zǒngtǐ)分為系統(tǒng)軟件和應(yīng)用軟件兩大類:系統(tǒng)軟件是各類操作系統(tǒng),如windows、Linux、UNIX等,還包括操作系統(tǒng)的補丁程序及硬件驅(qū)動程序,都是系統(tǒng)軟件類。應(yīng)用軟件可以細分的種類就更多了,如工具軟件、游戲軟件、管理軟件等都屬于應(yīng)用軟件類。
共四百零一頁§1.1軟件(ruǎnjiàn)§1.1.3軟件的分類系統(tǒng)軟件系統(tǒng)軟件是負責管理計算機系統(tǒng)中各種獨立的硬件,使得它們可以協(xié)調(diào)工作。系統(tǒng)軟件使得計算機使用者和其他軟件將計算機當作一個整體而不需要顧及到底層每個硬件是如何工作的。一般來講,系統(tǒng)軟件包括操作系統(tǒng)和一系列基本的工具(比如編譯器,數(shù)據(jù)庫管理,存儲器格式化,文件系統(tǒng)管理,用戶(yònghù)身份驗證,驅(qū)動管理,網(wǎng)絡(luò)連接等方面的工具)。共四百零一頁§1.1軟件(ruǎnjiàn)§1.1.3軟件的分類應(yīng)用軟件應(yīng)用軟件是為了某種特定(tèdìng)的用途而被開發(fā)的軟件。它可以是一個特定(tèdìng)的程序,比如一個圖像瀏覽器。也可以是一組功能聯(lián)系緊密,可以互相協(xié)作的程序的集合,比如微軟的Office軟件。也可以是一個由眾多獨立程序組成的龐大的軟件系統(tǒng),比如數(shù)據(jù)庫管理系統(tǒng)。較常見的有:
文字處理軟件如WPS、Word等信息管理軟件
輔助設(shè)計軟件如AutoCAD實時控制軟件教育與娛樂軟件
共四百零一頁軟件(ruǎnjiàn)危機與軟件(ruǎnjiàn)工程學軟件工程學的產(chǎn)生要從“軟件危機”說起1968年,第一屆NATO(北大西洋公約組織的計算機科學家的國際會議)會議,“軟件工程”的慨念作為一種有效(yǒuxiào)解決“軟件危機”的途徑被正式提出。什么是軟件危機?軟件危機有什么典型表現(xiàn)?為什么會產(chǎn)生軟件危機?怎么解決軟件危機?共四百零一頁§1.2軟件(ruǎnjiàn)危機§1.2.1軟件危機的出現(xiàn)什么是軟件危機?軟件危機指在計算機軟件的開發(fā)和維護過程中,所遇到的一系列嚴重問題。軟件危機主要包括的問題(兩方面(fāngmiàn)):
①如何開發(fā)軟件②如何維護軟件共四百零一頁軟件危機有什么典型(diǎnxíng)表現(xiàn)?(1)開發(fā)費用和進度難以估算和控制,大大(dàdà)超過預(yù)期的資金和規(guī)定日期;軟件需求分析不夠充分,用戶不滿意“已經(jīng)完成”的軟件系統(tǒng)。軟件質(zhì)量難于保證;軟件維護困難;難以改正程序中的錯誤;難以根據(jù)用戶的需要在原有程序中增加一些新的功能。共四百零一頁軟件危機有什么典型(diǎnxíng)表現(xiàn)?通常沒有保留適當?shù)奈臋n資料。文檔的作用:軟件開發(fā)管理人員:用于管理和評價軟件開發(fā)工程的進展狀況軟件開發(fā)人員:用于開發(fā)人員對各個階段的工作都進行周密思考(sīkǎo)、全盤權(quán)衡、從而減少返工。并且可在開發(fā)早期發(fā)現(xiàn)錯誤和不一致性,便于及時加以糾正軟件維護人員:軟件維護的依據(jù)開發(fā)成本逐年上升,軟件開發(fā)生產(chǎn)率提高的速度,遠遠跟不上計算機應(yīng)用迅速普及深入的趨勢。共四百零一頁共四百零一頁幾個軟件(ruǎnjiàn)危機的著名案例①1966年,IBM360機的操作系統(tǒng)。花費5000人一年的工作量,寫了近1萬行代碼。錯誤百出,每次的新版本就是從前一版本中找1000個程序錯誤而修正的結(jié)果。②1963年,美國用于控制火星探測器的計算機軟件中的一個“
,”號被誤寫為“.”,而致使飛往火星的探測器發(fā)生爆炸,造成高達數(shù)億美元的損失。③美國丹佛新國際機場自動化行李系統(tǒng)軟件。投資1.93億美元,計劃1993年萬圣節(jié)啟用。但開發(fā)人員一直為系統(tǒng)錯誤困擾,屢次推后啟用時間,直到(zhídào)
1994年6月,機場計劃者承認無法預(yù)測何時能啟用。④1996年,歐洲阿里亞納5型運載火箭墜毀,造成5億美元損失。原因是控制軟件中的一個錯誤。共四百零一頁§1.2.2產(chǎn)生軟件危機(wēijī)的原因主要兩個原因:
1、與軟件本身的特點有關(guān)(yǒuguān)
2、與軟件開發(fā)與維護的方法不正確有關(guān)。共四百零一頁一、軟件(ruǎnjiàn)本身的特點(1)軟件與硬件、一般程序存在很多不同之處。
1、軟件與硬件不同抽象性。軟件生產(chǎn)沒有明顯的制造過程,難以衡量開發(fā)進展,也難以控制軟件質(zhì)量。問題的隱蔽性。沒有硬件的磨損、老化問題,但存在開發(fā)早期在分析、設(shè)計階段的錯誤(cuòwù),修改難度較大。共四百零一頁失效率蜘線共四百零一頁改正(gǎizhèng)一個問題需付出的代價共四百零一頁2、軟件與一般(yībān)程序不同(1)①軟件遠比一般程序規(guī)模龐大,復(fù)雜性高軟件所反映的實際問題(wèntí)的復(fù)雜性程序邏輯結(jié)構(gòu)的復(fù)雜性。例1:Windows95,1000萬行代碼;
Windows2000,5000萬行代碼例2:Exchange2000和windows2000開發(fā)人員共四百零一頁軟件(ruǎnjiàn)的規(guī)模軟件產(chǎn)品的特殊性和人類智力的局限性,導(dǎo)致(dǎozhì)人們無力處理“復(fù)雜問題”。共四百零一頁2、軟件與一般(yībān)程序不同(2)②大型軟件開發(fā)既有技術(shù)問題,還有社會問題。社會因素:組織(zǔzhī)機構(gòu)、體制、管理方式、觀念、人的心理素等。開發(fā)團隊成員分工合作技術(shù)與管理的矛盾軟件開發(fā)人員對軟件應(yīng)用的領(lǐng)域知識的了解共四百零一頁二、軟件開發(fā)維護方法中存在(cúnzài)的問題(1)①對用戶(yònghù)需求的獲取不正確用戶的原因分析人員的原因
對分析人員的要求:溝通能力、歸納總結(jié)能力、經(jīng)驗越是早期產(chǎn)生的錯誤,付出的代價越大。圖:不同時期引入同一變動的代價共四百零一頁二、軟件開發(fā)維護方法(fāngfǎ)中存在的問題(2)②軟件開發(fā)就是編寫程序。一個完整的軟件產(chǎn)品由一整套完整的配置組成,程序只是其中的一個組成部分。軟件開發(fā)過程包括多個階段,每個階段的產(chǎn)品都是最終的完整的軟件產(chǎn)品的一部分。③軟件開發(fā)只要依靠個別編程高手(gāoshǒu)就能完成。④輕視軟件維護軟件維護約占軟件費用55一75%,包括修改軟件運行的錯誤;對軟件進行改進和功能擴充。共四百零一頁軟件維護在軟件費用(fèiyong)的比例共四百零一頁三、其他(qítā)產(chǎn)生軟件危機的原因①軟件開發(fā)尚未完全擺脫手工藝的開發(fā)方式。②軟件成本相當昂貴,主要(zhǔyào)依靠大量復(fù)雜的、高強度的腦力勞動③軟件的開發(fā)和運行常常受到計算機系統(tǒng)的限制,對計算機系統(tǒng)有著不同程度的依賴性。軟件的“可移植性”就是指的軟件對硬件的依賴程度。好的可移植性依賴少。共四百零一頁§1.2.3消除(xiāochú)軟件危機的途徑1、徹底消除“軟件(ruǎnjiàn)就是程序”的錯誤觀念。2、充分認識到軟件開發(fā)是一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的工程項目,不是個人獨立的勞動。
3、推廣和使用在實踐中總結(jié)出來的軟件開發(fā)的成功技術(shù)和方法。
4、開發(fā)和使用更好的軟件工具共四百零一頁總結(jié):“軟件工程”的方法理論是擺脫軟件危機的一個主要出路(chūlù)。計算機和軟件科學家為解決軟件危機問題,嘗試將在其它領(lǐng)域中行之有效的工程學知識運用到軟件開發(fā)工作中來,經(jīng)過不斷實踐和總結(jié),最后得出一個結(jié)論;按工程化的原則和方法組織軟件開發(fā)工作是有效的,是擺脫軟件危機的一個主要出路。共四百零一頁思考題(1)1)只要是編程高手,即使是不懂軟件工程,也能編出很好的軟件。軟件是服務(wù)于大眾,卻是由個性化的開發(fā)人員完成的。如果(rúguǒ)個性化太強,程序就無法閱讀,其他人員也就無法維護。例:國內(nèi)80年代涌現(xiàn)出來的眾多漢字操作系統(tǒng)均是由編程高手完成的。共四百零一頁思考題(2)2)只要擁有一套講述如何開發(fā)軟件的書籍,并了解了書中的標準與示例,就可以解決軟件開發(fā)中遇到的任何問題。軟件是用來解決現(xiàn)實問題的,現(xiàn)實問題的特殊性對規(guī)范提出了挑戰(zhàn)(要進行(jìnxíng)適應(yīng))。軟件技術(shù)是發(fā)展的,沒有祖?zhèn)髅胤健>拖駬碛惺匙V并不能成為名廚一樣,軟件開發(fā)需要實踐。共四百零一頁思考題(3)3)只要擁有最好的開發(fā)工具、最好的計算機,一定能做出優(yōu)秀的軟件(ruǎnjiàn)。硬件環(huán)境只是必要條件,人才是充分條件,軟件是人在一定的約束條件下創(chuàng)造出來的。因人因事而異。共四百零一頁思考題(4)4)軟件開發(fā)時,如果進度慢,落后于計劃,可以增加更多的程序員來解決。增加人力可以減少開發(fā)時間嗎?新手!任務(wù)的重新劃分!溝通更加復(fù)雜!必須依靠(yīkào)科學地計劃來解決這樣的問題。共四百零一頁思考題(5)5)爭議:如果軟件運行較慢,是換一臺更快的計算機,還是設(shè)計一種更快的算法?軟件的性能問題;應(yīng)用級別→算法的合理性;系統(tǒng)級別→操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)、系統(tǒng)軟件(xìtǒnɡruǎnjiàn)等;硬件級別→機器性能共四百零一頁§1.3軟件工程(ruǎnjiànɡōnɡchénɡ)§1.3.1軟件工程介紹一、“軟件工程”的典型定義1)1968年,第一屆NATO會議為了經(jīng)濟地獲得可靠的且能在實際機器上有效(yǒuxiào)地運行的軟件,而建立和使用完善的工程原理。2)IEEE/CS(電氣電子工程師協(xié)會/計算機科學分會)①1993年,將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運行和維護的過程,即將工程化應(yīng)用于軟件中。②對①中提到的各種方法的研究共四百零一頁3)其他學者(xuézhě)的定義Boehm:運用現(xiàn)代科學技術(shù)知識來設(shè)計并構(gòu)造計算機程序及為開發(fā)、運行和維護這些程序所必需的相關(guān)文件資料。FritzBauer:建立并使用(shǐyòng)完善的工程化原則,以較經(jīng)濟的手段獲得能在實際機器上有效運行的可靠軟件的一系列方法所有定義都強調(diào)在軟件開發(fā)過程中,應(yīng)用工程化原則的重要性共四百零一頁二、軟件工程(ruǎnjiànɡōnɡchénɡ)本質(zhì)特性(2)1)軟件工程關(guān)注于大型程序(chéngxù)的構(gòu)造。
2)軟件工程的中心課題是控制復(fù)雜性主要考慮:如何分解和集成為什么要分解:G.Miller,“7士2”
原則3)軟件經(jīng)常變化4)開發(fā)軟件的效率非常重要5)和諧地合作是開發(fā)軟件的關(guān)鍵6)軟件必須有效地支持它的用戶7)在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品擴展定義:軟件=知識+程序+數(shù)據(jù)+文檔共四百零一頁§1.3.2軟件工程(ruǎnjiànɡōnɡchénɡ)的基本原理B.W.Boehm,1983年提出:
1)用分階段的生命周期計劃嚴格管理
2)堅持(jiānchí)進行階段評審
3)實行嚴格的產(chǎn)品控制基線基線(baseline)控制
4)采用現(xiàn)代程序設(shè)計技術(shù)
5)結(jié)果應(yīng)能清楚地審查
6)開發(fā)小組的人員應(yīng)該少而精7)承認不斷改進軟件工程實踐的必要性共四百零一頁§1.3.3軟件工程(ruǎnjiànɡōnɡchénɡ)方法學軟件工程包括“管理”和“技術(shù)”兩方面內(nèi)容(nèiróng):管理——對人、財、物的合理使用和配置;技術(shù)——指軟件開發(fā)中采用的方法、工具和過程。什么是軟件工程方法學?通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(methodology),也稱為范型(paradigm)。共四百零一頁一、軟件工程方法學三要素:工具(gōngjù)、方法和過程要素一:軟件工程過程規(guī)定了完成各項任務(wù)的工作步驟(bùzhòu)。要素二:軟件工程方法完成軟件開發(fā)的各項任務(wù)的技術(shù)方法,為軟件開發(fā)提供了“如何做”的技術(shù)。如項目計劃與估算、軟件系統(tǒng)需求分析、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)總體結(jié)構(gòu)的設(shè)計、算法過程的設(shè)計、編碼、測試以及維護等。要素三:軟件工程工具計算機輔助軟件工程CASE(computerAidedsottwareEngineering),為軟件工程方法提供自動或半自動的軟件支撐環(huán)境。共四百零一頁二、軟件工程(ruǎnjiànɡōnɡchénɡ)方法學思想兩種:1、傳統(tǒng)方法學(生命周期方法學或結(jié)構(gòu)化范型(fànxínɡ))
2、面向?qū)ο蠓椒ü菜陌倭阋豁?.傳統(tǒng)(chuántǒng)方法學(生命周期方法學或結(jié)構(gòu)化范型)采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計和結(jié)構(gòu)化實現(xiàn))來完成軟件開發(fā)的各項任務(wù);把軟件生命周期劃分為若干個階段,按順序完成每個階段的任務(wù);每個階段開始和結(jié)束都有嚴格的標準,對任何兩個相鄰的階段而言,前一個(yīɡè)階段的結(jié)束標準就是后一階段的開始標準;每一個階段結(jié)束之前都必須進行正式嚴格的技術(shù)審查和管理復(fù)審共四百零一頁傳統(tǒng)(chuántǒng)方法學的優(yōu)點:分解任務(wù),分工合作(fēngōnghézuò),降低整個軟件開發(fā)工程的困難;采用科學的管理技術(shù)和良好的技術(shù)方法對每個階段成果都進行嚴格的審查。保證了軟件的質(zhì)量。傳統(tǒng)方法學的缺點:把數(shù)據(jù)和操作人為地分離成兩個獨立的部分,增加了軟件開發(fā)與維護的難度。當軟件規(guī)模龐大時,或者對軟件的需求是模糊的或會承受時間而變化的時候,開發(fā)出的軟件往往不成功;共四百零一頁2、面向?qū)ο蠓椒▽W(OO,Object-oriented)
模擬人類習慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認識世界解決問題的方法與過程,從而使描述問題的問題空間(也稱為問題域)與實現(xiàn)(shíxiàn)解法的解空間(也稱為求解域)在結(jié)構(gòu)上盡可能一致。共四百零一頁面向?qū)ο蠓椒▽W4要點(yàodiǎn)把對象(object)作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。把所有對象都劃分(huàfēn)成類(class)。按照父類(或稱為基類)與子類(或稱為派生類)的關(guān)系,把若干個相關(guān)類組成一個層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級)。對象彼此間僅能通過發(fā)送消息互相聯(lián)系。共四百零一頁優(yōu)點(yōudiǎn)面向?qū)ο蠓椒ㄊ侵鲃拥囟啻畏磸?fù)迭代的演化過程。優(yōu)點(yōudiǎn):降低了軟件產(chǎn)品的復(fù)雜性;提高了軟件的可理解性;簡化了軟件的開發(fā)和維護工作;促進了軟件重用。共四百零一頁3軟件(ruǎnjiàn)生命周期一、什么是軟件生命周期(lifecycle)指軟件孕育、誕生、成長(chéngzhǎng)、成熟、衰亡的生存過程
GB一8567中將軟件生命周期分為7個階段:可行性研究和項目開發(fā)計劃;需求分析;慨要設(shè)計;詳細設(shè)計;編碼;測試;維護其他分法,5個階段:需求定義、設(shè)計、編碼、測試及維護;需求定義階段包括可行性研究和項目開發(fā)計劃、需求分析;設(shè)計階段包括慨要設(shè)計和詳細設(shè)計。共四百零一頁本教材(jiàocái)對軟件生命周期的劃分共四百零一頁1、軟件(ruǎnjiàn)定義時期任務(wù):確定軟件開發(fā)工程必須完成的總目標;確定工程的可行性;導(dǎo)出實現(xiàn)工程目標應(yīng)該(yīnggāi)采用的策略及系統(tǒng)必須完成的功能;估計完成該項工程需要的資源和成本,并且制定工程進度表。通常分為問題定義、可行性研究和需求分析三個階段。共四百零一頁軟件定義(dìngyì)時期的三個階段①問題定義階段回答:
回答:“要解決的問題是什么?”
②可行性研究階段回答:“對于(duìyú)上一個階段所確定的問題有行得通的解決辦法嗎?
③需求分析(RequirementAnalysis)回答“為了解決這個問題,目標系統(tǒng)必須做什么?
用正式文檔準確地記錄對目標系統(tǒng)的需求,這份文檔通常稱為規(guī)格說明書(specification)。共四百零一頁2、軟件開發(fā)時期(shíqī)具體(jùtǐ)設(shè)計和實現(xiàn)前一個時期定義的軟件,通常分為四個階段:①總體設(shè)計(概要設(shè)計)回答:“概括地說,應(yīng)該怎樣實現(xiàn)目標系統(tǒng)?”根據(jù)需求分析,設(shè)計軟件的體系結(jié)構(gòu);定義結(jié)構(gòu)中的組成模塊。②詳細設(shè)計(模塊設(shè)計)回答:“應(yīng)該怎樣具體地實現(xiàn)這個系統(tǒng)呢?”對每個模塊要完成的工作進行具體的描述,為源程序編寫打下基礎(chǔ)。編寫設(shè)計說明書,提交評審。二者統(tǒng)稱系統(tǒng)設(shè)計
共四百零一頁軟件開發(fā)時期(shíqī)四個階段③程序編寫(Coding,Programming):把軟件設(shè)計轉(zhuǎn)換成計算機可以(kěyǐ)接受的程序代碼。④軟件測試(Testing):按規(guī)定的各項需求,逐項進行有效性測試,決定已開發(fā)的軟件是否合格,能否交付用戶使用,包括單元測試和組裝測試。二者統(tǒng)稱系統(tǒng)實現(xiàn)共四百零一頁3、運行維護(wéihù)(軟件維護(wéihù))時期使軟件持久的滿足用戶的需要。包括:改正性維護:運行中發(fā)現(xiàn)了軟件中的錯誤需要修正。適應(yīng)性維護:為了適應(yīng)變化了的軟件工作環(huán)境(huánjìng),需做適當變更。完善性維護:當用戶有新的要求時,應(yīng)該及時改進軟件以滿足用戶的要求。預(yù)防性維護:即修改軟件為將來的維護活動預(yù)先做準備。共四百零一頁1.4軟件(ruǎnjiàn)的生命周期1、什么是軟件過程為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項任務(wù)的工作步驟。
ISO9000的定義:使用資源將輸入轉(zhuǎn)化為輸出的活動所構(gòu)成的系統(tǒng)?!跋到y(tǒng)”是相互關(guān)聯(lián)或相互作用的一組要素。過程是軟件工程(ruǎnjiànɡōnɡchénɡ)三要素之一。通常用軟件生命周期模型來描述。共四百零一頁2、什么(shénme)是軟件生命周期模型又稱:軟件開發(fā)模型/軟件過程模型/軟件工程范型。指軟件項目(xiàngmù)從需求定義直至軟件經(jīng)使用后廢棄為止,跨越整個生存周期的系統(tǒng)開發(fā)、運作和維護所實施的全部過程、活動和任務(wù)的結(jié)構(gòu)框架。常見的有:瀑布模型、演化模型、螺旋模型、噴泉模型、智能模型共四百零一頁瀑布(pùbù)模型(waterfallmodel)1970年,由W.Royce提出
一、瀑布模型的過程
1、傳統(tǒng)的瀑布模型從上一階段接受本階段
的工作對象,作為輸入;利用輸入,完成本階段活
動的內(nèi)容.本階段的工作成果作為輸出(shūchū)
傳入下一階段。共四百零一頁瀑布模型(móxíng)
—實際的瀑布模型
需求(xūqiú)分析驗證規(guī)格說明驗證設(shè)計驗證編碼測試綜合測試維護變化的需求驗證
增加了一個評審活動,評審每個階段完成的活動,若得到確認,則進行下一階段的活動;否則返回前一階段,甚至更前階段返工;共四百零一頁二、瀑布(pùbù)模型特點階段間具有順序性和依賴性推遲(tuīchí)實現(xiàn)的觀點質(zhì)量保證的觀點共四百零一頁三、瀑布(pùbù)模型優(yōu)缺點優(yōu)點:可強迫開發(fā)人員采用規(guī)范的方法;嚴格地規(guī)定了每個階段必須提交的文檔;要求每個階段的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細驗證(yànzhèng);缺點:無法解決軟件需求不明確或不準確的問題;可能導(dǎo)致最終開發(fā)的產(chǎn)品不能真正滿足用戶需要。瀑布模型比較適合開發(fā)需求明確的軟件。共四百零一頁快速原型(yuánxíng)模型1、什么是“原型”?
原型是快速實現(xiàn)和運行的早期版本,反映最終系統(tǒng)部分重要特性。常見的原型實例:人機界面;系統(tǒng)主要(zhǔyào)功能。
優(yōu)點:
1、通常能反映用戶真實需求;
2、軟件產(chǎn)品的開發(fā)基本上是線性順序進行的。共四百零一頁2、快速原型(yuánxíng)的過程如右圖。獲得用戶的基本需求說明,據(jù)此快速建立一個小型軟件系統(tǒng).用戶試用,對其評價;開發(fā)人員按照用戶的意見快速地修改原型系統(tǒng),獲得新的原型版本(bǎnběn),再請用戶試用,如此反復(fù),直到滿足用戶的要求;用戶確認原型系統(tǒng)之后,開發(fā)人員據(jù)此書寫規(guī)格說明文檔,進行下一步開發(fā)。共四百零一頁增量(zēnɡliànɡ)(漸增)模型
把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計、編碼、集成和測試。每個構(gòu)件由多個相互作用的模塊構(gòu)成,并且(bìngqiě)能夠完成特定的功能。使用增量模型時,第一個階段的增量構(gòu)件往往實現(xiàn)軟件的基本需求,提供最核心的功能;后面的增量構(gòu)架逐漸添加系統(tǒng)的功能。共四百零一頁圖:增量(zēnɡliànɡ)(漸增)模型需求(xūqiú)分析驗證規(guī)格說明驗證設(shè)計驗證維護針對每個構(gòu)件完成詳細設(shè)計、編碼和集成,經(jīng)測試后交付給用戶共四百零一頁增量(zēnɡliànɡ)模型注意事項增量構(gòu)件規(guī)模適中;分解的約束條件是當把新構(gòu)件集成到現(xiàn)有軟件中時,所形成的產(chǎn)品必須是可測試的;軟件體系必須是開放(kāifàng)的,即在對現(xiàn)有系統(tǒng)添加新增量構(gòu)件時,不能破壞系統(tǒng)原有功能。共四百零一頁增量(zēnɡliànɡ)模型優(yōu)缺點優(yōu)點:能在較短的時間內(nèi),提供可完成部分工作的初步產(chǎn)品給用戶;用戶有較為充裕的時間學習和適應(yīng)新產(chǎn)品。缺點:對開發(fā)人員技術(shù)能力要求較高,要求能從系統(tǒng)整體出發(fā)正確劃分增量(zēnɡliànɡ)構(gòu)件,并進行分別開發(fā),最后能很好地集成這些構(gòu)件。共四百零一頁各種模型(móxíng)的比較模型優(yōu)點缺點瀑布模型規(guī)范,文檔驅(qū)動系統(tǒng)可能不滿足客戶真正的需求快速原型克服了瀑布型的缺點增量模型開發(fā)早期回報明確,易于維護要求開放的軟件體系結(jié)構(gòu)80
共四百零一頁1.5.1軟件工程的基本(jīběn)目標1.5軟件工程的目標(mùbiāo)和原則低成本開發(fā)易于維護按時交付高可靠性高性能互斥關(guān)系互補關(guān)系軟件工程目標之間的關(guān)系共四百零一頁1.5.2軟件工程(ruǎnjiànɡōnɡchénɡ)的原則§1.5軟件工程(ruǎnjiànɡōnɡchénɡ)的目標和原則抽象互斥關(guān)系互補關(guān)系信息隱蔽模塊化局部化確定性一致性完備性可驗證性共四百零一頁第一章小結(jié)(xiǎojié)共四百零一頁第2章面向?qū)ο筌浖_發(fā)方法(fāngfǎ)2.1面向?qū)ο蠡舅枷?.2面向?qū)ο蠡靖拍?.3面向?qū)ο蠓椒?.4面向?qū)ο箝_發(fā)(kāifā)統(tǒng)一過程2.5本章小結(jié)面向?qū)ο箝_發(fā)方法(ObjectOriented,OO)又稱:快速原型法共四百零一頁面向?qū)ο蠓椒ǜ攀觥尘?bèijǐng)傳統(tǒng)開發(fā)方法由一整套過程、方法和工具作為支撐,在一定時期內(nèi)對解決軟件危機起了很大作用,曾指導(dǎo)開發(fā)出很多成功的系統(tǒng),但其缺點也日益顯現(xiàn)傳統(tǒng)軟件開發(fā)方法不能完全消除軟件危機,并且生產(chǎn)率的提高不能滿足需要從50年代到80年代,美國的軟件生產(chǎn)率翻了兩翻。但社會對軟件的需求每年以兩位數(shù)字的百分比在增長。軟件的開發(fā)已成為影響(yǐngxiǎng)計算機應(yīng)用的瓶頸共四百零一頁面向?qū)ο蠓椒ǜ攀觥尘?1)傳統(tǒng)開發(fā)方法存在的問題軟件維護系統(tǒng)是圍繞著如何實現(xiàn)(shíxiàn)一定的行為來進行的,當系統(tǒng)行為易變,需要常常修改時,修改極為困難軟件結(jié)構(gòu)嚴重依賴于系統(tǒng)功能,基于功能分解的系統(tǒng)結(jié)構(gòu)將很難進行修改和擴充用戶功能需求的改變將導(dǎo)致軟件結(jié)構(gòu)的相應(yīng)改變,給軟件的開發(fā)及維護造成很大困難數(shù)據(jù)和對數(shù)據(jù)的處理操作是分離的,對數(shù)據(jù)的修改將影響某個功能的實現(xiàn)傳統(tǒng)開發(fā)方法的軟件維護比軟件開發(fā)效率低幾十倍。80年代,美國一年花費的軟件維護費用(fèiyong)高達300多億美元。90年代,軟件維護費用占系統(tǒng)研制、開發(fā)總費用的70%。共四百零一頁面向?qū)ο蠓椒ǜ攀觥尘?2)傳統(tǒng)開發(fā)方法存在的問題自頂向下功能分解的分析方法極大地限制了軟件的可重用性結(jié)構(gòu)化分析、設(shè)計技術(shù)的本質(zhì)是功能分析從代表目標系統(tǒng)整體功能的單個處理著手,自頂向下不斷把復(fù)雜的處理分解為子處理,層層分解下去(xiàqù),直至僅剩下若干個容易實現(xiàn)的子處理為止傳統(tǒng)方法通過建立標準函數(shù)庫和子程序庫實現(xiàn)軟件的可重用性,然而標準函數(shù)庫等只是對建立在數(shù)學模型基礎(chǔ)上的應(yīng)用(yìngyòng)問題有可重用的功效,而對其它實際應(yīng)用(yìngyòng)問題則不能很好地進行軟件重用共四百零一頁面向?qū)ο蠓椒ǜ攀觥尘?3)傳統(tǒng)開發(fā)方法存在的問題以輸入-處理-輸出為核心的分析和設(shè)計方法不符合人類的思維(sīwéi)方式軟件不能真正了解用戶的需要,以致開發(fā)出的軟件系統(tǒng)與用戶預(yù)期的系統(tǒng)不一致,不能滿足用戶的需要功能與數(shù)據(jù)分離的軟件設(shè)計結(jié)構(gòu)與人類的現(xiàn)實世界環(huán)境很不一樣,和人的自然思維也就很不一致,因此對現(xiàn)實世界的認識與編程之間存在著一道很深的理解上的鴻溝Standish94報告中指出:31%軟件項目沒有完全完成,53%的項目花費最先預(yù)算的200%之多,并且(bìngqiě)估計美國的公司和政府機構(gòu)在1995年為了取消軟件項目的生產(chǎn)而花費了810億美元共四百零一頁面向?qū)ο蠓椒ǜ攀觥尘?4)傳統(tǒng)開發(fā)方法存在的問題系統(tǒng)中模塊之間控制作用的重要影響在系統(tǒng)中,實際控制發(fā)生(fāshēng)的根源來自分散的各個模塊之中時,由于在“好的模塊結(jié)構(gòu)”中的模塊間的控制作用只能通過上下之間的調(diào)用關(guān)系來進行,造成信息傳遞路徑過長,效率低,易受干擾,甚至出錯共四百零一頁面向?qū)ο蠓椒ǜ攀觥尘?5)為了解決傳統(tǒng)開發(fā)方法的問題,在軟件開發(fā)實踐中人們提出了許多針對具體開發(fā)的方法快速原型法面向?qū)ο蠓椒ā?誕生了面向?qū)ο蟪绦蛟O(shè)計語言(yǔyán),并基于面向?qū)ο笏枷胝Q生了面向?qū)ο筌浖_發(fā)方法共四百零一頁面向?qū)ο蠓治觯∣OA)OOA主要考慮與一個特定應(yīng)用有關(guān)的對象及對象與對象之間在結(jié)構(gòu)與相互作用上的關(guān)系OOA的關(guān)鍵是識別出問題域內(nèi)的對象,并分析它們相互之間的關(guān)系,最終建立起問題域的精確、可理解的正確模型OOA階段主要是明確問題中存在哪些數(shù)據(jù)實體,它們的意義是什么,而不考慮對它們的處理OOA最終目的(mùdì)是產(chǎn)生一個符合用戶需求,并能夠直接反映問題域的OOA模型及其軟件需求規(guī)格說明共四百零一頁面向?qū)ο蠓治鯫OA基本任務(wù)運用OO方法,對問題域進行分析和理解形式地說明所面對的應(yīng)用問題,最終成為軟件系統(tǒng)(xìtǒng)基本構(gòu)成的對象,還有系統(tǒng)(xìtǒng)所必須遵從的,由應(yīng)用環(huán)境所決定的規(guī)則和約束明確地規(guī)定構(gòu)成系統(tǒng)的對象如何協(xié)同合作,完成指定的功能找出描述問題域所需的對象及類定義這些對象和類的屬性與服務(wù)定義對象和類之間所形成的結(jié)構(gòu)、靜態(tài)聯(lián)系和動態(tài)聯(lián)系共四百零一頁面向?qū)ο蠓治觥⒎治瞿P兔枋鱿到y(tǒng)的功能以面向?qū)ο笏枷霝榛A(chǔ),通過構(gòu)造一組相關(guān)模型獲得關(guān)于問題的全面認識(即問題領(lǐng)域模型)對象模型(objectmodel)代表(dàibiǎo)了系統(tǒng)的靜態(tài)的、結(jié)構(gòu)方面的特性動態(tài)模型(dynamicmodel)代表了系統(tǒng)對象之間的時間的、行為的、控制方面的特性功能模型(functionalmodel)主要描述值與值之間的函數(shù)關(guān)系共四百零一頁面向?qū)ο蠓治觥⒎治瞿P兔枋鱿到y(tǒng)的功能(1)上述三個模型從不同角度對系統(tǒng)進行描述,分別描述系統(tǒng)的一個重要方面,組合起來構(gòu)成對系統(tǒng)的完整描述對象(duìxiàng)模型指出事件要發(fā)生在什么方面動態(tài)模型指出什么時候發(fā)生功能模型則指出要發(fā)生什么共四百零一頁面向?qū)ο蠓治觥⒎治瞿P兔枋鱿到y(tǒng)的功能(2)對象模型對象模型描述了系統(tǒng)中對象的結(jié)構(gòu)對象的標識、對象與其它對象之間的關(guān)系、屬性以及操作對象模型為動態(tài)模型和功能模型提供了重要(zhòngyào)的框架只有當事物變化時,動態(tài)模型和功能模型才有存在的意義對象模型用包含對象及對象的關(guān)系圖表示共四百零一頁面向?qū)ο蠓治觥⒎治瞿P兔枋鱿到y(tǒng)的功能(3)對象模型的5個層次第一個層次主要是識別類和對象,是整個分析模型的基礎(chǔ)第二層和第三層是屬性(shǔxìng)層和服務(wù)層,用以說明前面已識別的類和對象共四百零一頁面向?qū)ο蠓治觥⒎治瞿P兔枋鱿到y(tǒng)的功能(4)對象模型的5個層次第四層是結(jié)構(gòu)層OOA允許兩種類型的基本結(jié)構(gòu):1)整體(zhěngtǐ)與部分結(jié)構(gòu)(組裝結(jié)構(gòu)),表示聚合,即由屬于不同類的成員聚合而成新的類;2)泛化與特化結(jié)構(gòu)(分類結(jié)構(gòu)),特化類是泛化類的子類,泛化類是特化類的父類。分類結(jié)構(gòu)具有繼承性。第五層是主題層,是一些類和對象的特定組合表示,用來幫助和指導(dǎo)模型的讀者共四百零一頁面向?qū)ο蠓治觥⒎治瞿P兔枋鱿到y(tǒng)的功能(5)動態(tài)模型動態(tài)模型描述系統(tǒng)中與時間有關(guān)的方面以及操作執(zhí)行的順序包括引起(yǐnqǐ)變化的事件、事件的序列、定義事件序列上下文的狀態(tài)、以及事件和狀態(tài)的主次動態(tài)建模中的主要概念是事件和狀態(tài)一個對象的狀態(tài)是指對象所擁有的屬性值和連接關(guān)系動態(tài)模型由多個狀態(tài)圖組成每個用來描述一個類的重要動態(tài)行為,并表明整個系統(tǒng)的活動方式,不同類的狀態(tài)圖通過共享的事件組成一個動態(tài)模型共四百零一頁面向?qū)ο蠓治觥⒎治瞿P兔枋鱿到y(tǒng)的功能(6)功能模型功能模型表示怎樣從輸入值得到輸出值包括(bāokuò)函數(shù)、映射、約束和功能性依賴功能是由動態(tài)模型的動作引起,并在對象模型里表示對對象的操作共四百零一頁面向?qū)ο蠓治觥9ぞ哂美║seCase)將客戶需求收集起來之后,分析員可以創(chuàng)建一組標識(biāozhì)一串待構(gòu)造系統(tǒng)的使用場景,這些場景就被稱為“用例”(use-case)CRC共四百零一頁面向?qū)ο蠓治觥美S美峁┝讼到y(tǒng)將被如何使用的描述(miáoshù)用例從終端用戶的觀點對系統(tǒng)進行建模共四百零一頁面向?qū)ο蠓治觥狾OA目標實現(xiàn)關(guān)鍵USECASE都已獲得適當?shù)慕馕龊兔枋鲆呀?jīng)提取了大部分關(guān)鍵對象和類為OOD做好了充分的準備在OOA階段,重點在于分析ACTOR與系統(tǒng)的交互,并把業(yè)務(wù)邏輯(luójí)充分體現(xiàn)出來在OOD階段,在OOA模型的基礎(chǔ)上進行層次的分離和責任的再分配,這時候的重點是業(yè)務(wù)邏輯的封裝OOA的注釋和說明是OOD和OOP的重要提示共四百零一頁面向?qū)ο笤O(shè)計(OOD)OOD是用OO觀點建立求解域模型的過程OOA到OOD實際上是一個逐漸擴充模型的過程面向?qū)ο蠓治鲋饕M問題空間和系統(tǒng)(xìtǒng)任務(wù)而面向?qū)ο笤O(shè)計則是對其進行擴充,主要是增加各種組成部分OOA識別和定義的類/對象,是一些直接反映問題空間和系統(tǒng)任務(wù)的而OOD識別和定義的類/對象則是附加的,反映需求的一種實現(xiàn)共四百零一頁面向?qū)ο笤O(shè)計——OOD的目標提高生產(chǎn)率OOD是一種系統(tǒng)設(shè)計活動OOD使用重用類機制來改進效率,類庫是這種結(jié)構(gòu)的主要組成部分提高質(zhì)量OOA和OOD過程能夠減少開發(fā)后期發(fā)現(xiàn)(fāxiàn)的錯誤,大大提高系統(tǒng)的質(zhì)量提高可維護性O(shè)O方法開發(fā)的系統(tǒng)中,穩(wěn)定的是類,可變的是服務(wù),服務(wù)的復(fù)雜程度、外部接口是最可能變化的部分,把系統(tǒng)中穩(wěn)定的部分和易變的部分分離開來共四百零一頁面向?qū)ο笤O(shè)計——面向?qū)ο笤O(shè)計的準則模塊化對象就是模塊抽象支持過程抽象、數(shù)據(jù)抽象、規(guī)格(guīgé)說明抽象和參數(shù)化抽象信息隱藏通過封裝性實現(xiàn)共四百零一頁面向?qū)ο笤O(shè)計——面向?qū)ο笤O(shè)計的準則弱耦合對象間有兩類耦合“交互耦合”(消息傳遞)和“繼承偶合”(父、子類間的聯(lián)系)強內(nèi)聚服務(wù)內(nèi)聚(一個服務(wù)完成(wánchéng)一個功能)類內(nèi)聚(一個類應(yīng)只有一個用途)一般-特殊內(nèi)聚(這是對領(lǐng)域知識的正確抽?。┛芍赜帽M量使用已有類;設(shè)計新類時要考慮可重用共四百零一頁OOA與OOD環(huán)境OOA過程中與具體工程環(huán)境有關(guān)的不太多,與最終(zuìzhōnɡ)系統(tǒng)實現(xiàn)環(huán)境關(guān)聯(lián)不太密切OOD過程與具體工程環(huán)境相關(guān)的已經(jīng)很多相關(guān)部分也正是OOD所包括的內(nèi)容共四百零一頁OOA與OOD(1)定義OOA過程是知道系統(tǒng)要做什么的過程USECASE定義了系統(tǒng)為使用者提供的服務(wù)通過OOA過程來定義系統(tǒng)要做什么才能(cáinéng)達到提供服務(wù)的目的,也就是定義系統(tǒng)目標的過程OOD過程是知道系統(tǒng)怎么做的過程實現(xiàn)系統(tǒng)目標的過程,與具體的實現(xiàn)環(huán)境密切相關(guān)共四百零一頁OOA與OOD(2)作用OOA把UseCase映射為系統(tǒng)目標,并把責任綁定到將來實際系統(tǒng)中的關(guān)鍵對象(duìxiàng)上去,為OOD的細化提供基礎(chǔ)OOD結(jié)合系統(tǒng)體系結(jié)構(gòu)等具體實現(xiàn)因素進一步把責任分解或綁定到系統(tǒng)的對象上,并按照環(huán)境配置規(guī)律生成所需要的代碼框架共四百零一頁OOA與OOD(3)協(xié)作從OOA到OOD平滑過渡,無縫連接,保留OOA、OOD兩階段的作用主要是提供不同的復(fù)用層次OOA階段定義的對象和責任,在OOD階段通過分解或細化得到進一步落實OOA通過描述性方法定義了系統(tǒng)對象的目標(mùbiāo),OOD用形式化表示方法精確定義了系統(tǒng)對象及責任實現(xiàn)接口共四百零一頁本章(běnzhānɡ)小結(jié)面向?qū)ο蠓治龇椒ㄊ沟密浖治鋈藛T能夠通過對對象、屬性和操作的表示來對問題建模。OOA中引入了許多面向?qū)ο蟮母拍詈驮瓌t;并利用這些概念和原則將客觀世界中的實體抽象為問題域中的對象,明確為完成系統(tǒng)功能,對象間應(yīng)具有的聯(lián)系(liánxì)和相互作用。
當OOA建模完成后,便可以開始設(shè)計整個系統(tǒng)。OOA側(cè)重于用戶需求的分析和對問題域的理解,OOD則側(cè)重于系統(tǒng)的實現(xiàn)。OOD首先從OOA的結(jié)果開始,從問題域映射到實現(xiàn)域;還要增加一些類、結(jié)構(gòu)及屬性和服務(wù),并對原有類及屬性進行調(diào)整。還要完成任務(wù)管理、人機交互界面的設(shè)計等。共四百零一頁UML建模技術(shù)(jìshù)共四百零一頁4.1面向?qū)ο蠼<癠ML簡介4.2用例視圖4.3動態(tài)(dòngtài)模型圖4.4靜態(tài)模型圖4.5本章小結(jié)共四百零一頁面向?qū)ο蠼<癠ML簡介(jiǎnjiè)面向?qū)ο蠼=J菫榱四軌蚋玫乩斫庹陂_發(fā)的系統(tǒng)。所謂模型,就為了理解事物而對事物作出的一種抽象模擬,是對事物的一種無歧義的書面描述。通常,模型由一組圖示符號和組織這些符號的規(guī)則組成,利用它們來定義和描述問題域中的術(shù)語和概念。更進一步講,模型是一種思考工具,利用這種工具可以把知識規(guī)范(guīfàn)地表示出來。模型可以幫助思考問題、定義術(shù)語、在選擇術(shù)語時作出適當?shù)募僭O(shè),并且可以保持定義和假設(shè)的一致性。共四百零一頁面向?qū)ο蠼<癠ML簡介(jiǎnjiè)通過建模,可以達到四個目的:有助于按照(ànzhào)實際情況或按照(ànzhào)所需要的樣式對系統(tǒng)進行可視化能夠規(guī)約系統(tǒng)的結(jié)構(gòu)或行為給出指導(dǎo)構(gòu)造系統(tǒng)的模板對做出的決策進行文檔化面向?qū)ο蠼9菜陌倭阋豁撁嫦驅(qū)ο蠼<癠ML簡介(jiǎnjiè)統(tǒng)一建模語言UML是一種標準的建模語言,是用為面向?qū)ο箝_發(fā)系統(tǒng)的產(chǎn)品進行說明、可視化和編制文檔的方法。它主要以圖形的方式對系統(tǒng)進行分析、設(shè)計。軟件工程領(lǐng)域在1995年至1997年取得了前所未有的進展,其成果超過軟件工程領(lǐng)域過去15年來的成就總和(zǒnghé)。其中最重要的、具有劃時代重大意義的成果之一就是UML的出現(xiàn)。UML簡介共四百零一頁4.1面向?qū)ο蠼<癠ML簡介(jiǎnjiè)從第一個UML語言標準1.0于1997年推出以來,軟件產(chǎn)業(yè)界支持UML的各種工具和平臺也被迅速推出,UML及其平臺已被廣泛應(yīng)用于軟件開發(fā)的各個階段,包括分析、設(shè)計、測實現(xiàn)、配織置和維護過程。由于UML已由國際對象管理組OMG(ObjectManagementGroup)標準化為軟件建模的統(tǒng)一語言,因此在工業(yè)界、學術(shù)界已被廣泛(guǎngfàn)承認與采用。在世界范圍內(nèi),UML是面向?qū)ο蠹夹g(shù)領(lǐng)域內(nèi)占主導(dǎo)地位的標準建模語言。UML簡介共四百零一頁面向?qū)ο蠼<癠ML簡介(jiǎnjiè)UML簡介(jiǎnjiè)圖4.1UML建模結(jié)構(gòu)圖共四百零一頁4.2用例視圖(shìtú)用例視圖中可以包含若干個用例(UseCase)。用例圖用來表示系統(tǒng)能夠提供的功能(用法),一個用例是系統(tǒng)功能(用法)的一個通用描述。用例視圖是其它視圖的核心和基礎(chǔ),其它視圖的構(gòu)造和發(fā)展依賴于用例圖中所描述的內(nèi)容。因為系統(tǒng)的最終目標是提供用例視圖中描述的功能,同時附帶一些非功能的性質(zhì),因此用例視圖影響(yǐngxiǎng)著其它的視圖。同時,用例視圖還可用于測試系統(tǒng)是否滿足用戶的需求和驗證系統(tǒng)的有效性。共四百零一頁用例視圖(shìtú)在UML中,用例用橢圓來表示,它用來(yònɡlái)記錄用戶或外界環(huán)境從頭到尾使用系統(tǒng)的一系列事件。用戶被稱為“執(zhí)行者”(Actor),執(zhí)行者可以是人,也可以是另一個系統(tǒng)。它與當前的系統(tǒng)進行交互,向系統(tǒng)提供輸入或從系統(tǒng)中獲得輸出,用一個人形(Stickman)來表示。用例圖顯示了用例和執(zhí)行者、用例與用例之間以及執(zhí)行者與執(zhí)行者之間的關(guān)系。關(guān)系描述模型元素之間的語義連接;在UML中,關(guān)系使用實線來表示,實線可以有箭頭,也可以沒有箭頭。共四百零一頁用例視圖(shìtú)(1)執(zhí)行者執(zhí)行者是指在系統(tǒng)外部與系統(tǒng)交互的人或其它系統(tǒng),他以某種方式參與系統(tǒng)內(nèi)用例的執(zhí)行。當劃分了系統(tǒng)的范圍并明確了系統(tǒng)邊界后,從系統(tǒng)應(yīng)用的角度出發(fā),找尋那些與系統(tǒng)進行信息交換(包括數(shù)據(jù)信息和控制信息)的外部事物,包括系統(tǒng)使用人員、硬件設(shè)備及外部系統(tǒng),來確定執(zhí)行者。我們(wǒmen)可以從以下角度來尋找和確定執(zhí)行者:
1)使用系統(tǒng)主要功能的人。
2)需要借助于系統(tǒng)完成日常工作的人。共四百零一頁4.2用例視圖(shìtú)3)維護、管理系統(tǒng),保證系統(tǒng)正常工作的人。4)系統(tǒng)是否使用使用外部資源。5)系統(tǒng)和已經(jīng)存在的系統(tǒng)是否存在交互。例如在學生成績管理系統(tǒng)中,除了查詢成績的學生之外,還有以下執(zhí)行者:1)系統(tǒng)管理員對系統(tǒng)的更新(gēngxīn)和維護。2)老師對學生成績查詢和更新數(shù)據(jù)共四百零一頁4.2用例視圖(shìtú)(2)用例用例代表的是一個完整的功能,是執(zhí)行者想要系統(tǒng)做的事情;它是特定執(zhí)行者對系統(tǒng)的“使用情況”。
用例一般具有以下的特征1用例總是從執(zhí)行者的角度來編寫的用例所代表的功能必須(bìxū)由執(zhí)行者激活,然后才能執(zhí)行。2用例總是從執(zhí)行者的角度來編寫的由于用例描述的是用戶的功能需求,只能從用戶的角度出發(fā)才能真正了解用戶需要什么樣的功能。共四百零一頁4.2用例視圖(shìtú)3用例具有完全性用例是一個完整的描述。雖然在編程實現(xiàn)時,一個用例可以被分解成為多個小用例(函數(shù)(hánshù)或方法),用例之間可以互相調(diào)用執(zhí)行,但是只有最終產(chǎn)生了返回給執(zhí)行者的結(jié)果值,才能說用例執(zhí)行完畢。共四百零一頁4.2用例視圖(shìtú)(3)用例圖內(nèi)元素的關(guān)系一般將執(zhí)行者和用例之間的關(guān)系稱為通信,而用例與用例之間可以存在(cúnzài)的關(guān)系分為泛化(eneralization)包含(Include)、擴展(Extend)和使用(Use)四種。另外執(zhí)行者與執(zhí)行者之間也可以存在泛化關(guān)系。共四百零一頁4.2用例視圖(shìtú)(1)泛化關(guān)系UML中的泛化關(guān)系就是通常所說的繼承關(guān)系,表示幾個元素某些共性。它是通用元素和具體元素之間的一種分類(fēnlèi)關(guān)系。在UML中,用一端為空心三角形的連線表示泛化關(guān)系,三角形的頂角緊挨著通用元素。例如在買票系統(tǒng)中,個人購買和團體定購都是買票的特例,肯有一些共同的特征,將這些共同的特征抽象出來,定義一個“買票”的基本用例(基用例),個人購買和團體定購從“買票”的基用例繼承??梢杂脠D4.3所示的用例圖來表示。共四百零一頁4.2用例視圖(shìtú)圖4.3用例的泛化關(guān)系(guānxì)圖4.4執(zhí)行者的泛化關(guān)系共四百零一頁4.2用例視圖(shìtú)如果多個執(zhí)行者之間存在很多共性,就可以使用泛來分解共性行為。比如學生成績管理系統(tǒng)中,涉及用戶包括(bāokuò)系統(tǒng)管理員(Admin)和學生(Student),他們都是用例圖中的執(zhí)行者,他們的主要特征相似,都具有姓名、賬號等信息,所以可以抽象出“基”執(zhí)行者。用例圖可以表示為圖4.4的形式。共四百零一頁4.2用例視圖(shìtú)(2) 包含關(guān)系包含關(guān)系指的是兩個用例之間的關(guān)系,其中一個(yīɡè)用例(基用例)的行為包含了另一個用例的功能。如果兩個以上的用例有相同的功能,則可以將這個功能分解到另一個用例中,基用例則包含了分解出來的新用例的功能。例如在學生成績管理系統(tǒng)中,學生和系統(tǒng)管理員都需要先登錄然后才能進行相關(guān)的操作。這時就可以分解一個登錄用例出來,讓學生和系統(tǒng)管理員都包含它。在UML中使用<<include>>表示包含關(guān)系,如圖4.5所示。共四百零一頁4.2用例視圖(shìtú)
包含關(guān)系(guānxì)是比較特殊的依賴關(guān)系(guānxì),它們比一般的依賴關(guān)系多了一些語義。在包含關(guān)系中,箭頭的指向是從基本用例到包含用例,也就是說,基本用例依賴于包含用例。圖4.5學生成績管理系統(tǒng)用例圖中的包含關(guān)系共四百零一頁4.2用例視圖(shìtú)(3)擴展關(guān)系擴展關(guān)系的基本含義與泛化關(guān)系類似,但對擴展用例有更多的限制,即基用例必須具有“擴展點”。而擴展用例只能在擴展點上增加新的行為和含義。也就是說,擴展關(guān)系允許一個用例(可選)擴展另一個用例(基用例)提供的功能。與包含關(guān)系一樣,擴展關(guān)系也是依賴(yīlài)關(guān)系,而包含關(guān)系是特殊的依賴關(guān)系,這兩個關(guān)系都是把相同功能分離到另一個用例中。共四百零一頁4.2用例視圖(shìtú)在UML中使用<<extend>>表示擴展關(guān)系,箭頭(jiàntóu)的方向是從擴展用例到基用例。例如,在自動售貨機系統(tǒng)中,“售貨”是一個基本的用例,如果顧客購買罐裝飲料,售貨功能可以順利完成。但是,如果顧客要購買用紙杯裝的散裝飲料,則不能執(zhí)行該用例提供的常規(guī)動作,而要做些改動。我們可以修改售貨用例,使之既能提供售罐裝飲料的常規(guī)動作又能提供售散裝飲料的非常規(guī)動作。我們可以把常規(guī)動作放在售貨用例中,把非常規(guī)動作放置于售散裝飲料用例中,這兩個用例之間的關(guān)系就是擴展關(guān)系,如圖4.6所示。共四百零一頁4.2用例視圖(shìtú)圖4.6自動售貨系統(tǒng)(xìtǒng)用例中的擴展關(guān)系共四百零一頁4.2用例視圖(shìtú)(4)使用關(guān)系使用關(guān)系也是一種繼承關(guān)系。在使用關(guān)系中,一個用例使用另一個用例的功能和行為。在UML中,用例之間的使用關(guān)系的圖形描述和用例的繼承關(guān)系一樣,用一條帶空心箭頭的實線連接一個子用例和一個父用例,實線上方標明構(gòu)造型<<use>>表明(biǎomíng)兩個用例是使用關(guān)系。如圖4.7所示:共四百零一頁4.2用例視圖(shìtú)圖中表明,子用例在使用父用例的功能(gōngnéng)和行為。如果有多個子用例使用同一個父用例,表明這些子用例在共享父用例的功能和行為。圖4.7用例之間的使用關(guān)系共四百零一頁
本章(běnzhānɡ)小結(jié)統(tǒng)一建模語言UML是國際對象管理組織OMG批準的基于面向?qū)ο蠹夹g(shù)的標準建模語言。通常,使用UML的類圖來建立對象模型(móxíng),使用UML的狀態(tài)圖來建立動態(tài)模型,使用UML的用例圖來建立功能模型。在UML中把用例圖建立起來的系統(tǒng)模型稱為用例模型。
共四百零一頁
軟件(ruǎnjiàn)復(fù)用基礎(chǔ)共四百零一頁
主要(zhǔyào)內(nèi)容軟件復(fù)用技術(shù)軟件構(gòu)件基于構(gòu)件的軟件開發(fā)三種(sānzhǒnɡ)特殊的構(gòu)件模型共四百零一頁一位程序員編寫了一些排序程序,通過不同參數(shù)調(diào)用多次使用;C程序員編寫了解三角方程的程序,整個程序共調(diào)用了12次正弦函數(shù);一位Ada程序員編寫了一段模擬程序,涉及處理(chǔlǐ)隊列和一個處理(chǔlǐ)器數(shù)組,為此查找通用Ada隊列和數(shù)組程序包,并將其插入運行Ada環(huán)境中,并實例化隊列兩次(就緒隊列和阻塞隊列),實例化數(shù)組一次(處理器數(shù)組).共四百零一頁為什么軟件復(fù)用會成為一個問題(wèntí),而硬件復(fù)用不會成為問題(wèntí)?軟件復(fù)用在那些方面與軟件設(shè)計不同?共四百零一頁…..復(fù)用(fùyònɡ)(Reuse)既不是殺手锏,也不是神奇的減肥藥.
復(fù)用是一種食譜和鍛煉程序……PaulG.Basset,1997共四百零一頁軟件復(fù)用是在軟件開發(fā)中避免重復(fù)勞動的解決方案。通過軟件復(fù)用,可以提高軟件開發(fā)的效率和質(zhì)量。它通??煞譃?fēnwéi)產(chǎn)品復(fù)用和過程復(fù)用兩條途徑?;跇?gòu)件(Components)的復(fù)用是產(chǎn)品復(fù)用的主要形式,也是當前復(fù)用研究的焦點。當前軟件構(gòu)件技術(shù)被視為實現(xiàn)成功復(fù)用的關(guān)鍵因素之一。共四百零一頁
軟件復(fù)用是在軟件開發(fā)中避免重復(fù)勞動的解決方案,其出發(fā)點是應(yīng)用系統(tǒng)(Application)的開發(fā)不再采用一切“從零開始”的模式,而是以已有的工作為基礎(chǔ)
,充分利用過去應(yīng)用系統(tǒng)開發(fā)中積累的知識和經(jīng)驗,如:需求分析結(jié)果、設(shè)計方案、源代碼、測試計劃及測試案例等,從而將開發(fā)的重點集中于應(yīng)用的特有構(gòu)成成分。通過軟件復(fù)用,在應(yīng)用系統(tǒng)開發(fā)中可以充分地利用已有的開發(fā)成果,消除了包括分析、設(shè)計、編碼、測試等在內(nèi)的許多重復(fù)勞動,從而提高了軟件開發(fā)的效率,同時,通過復(fù)用高質(zhì)量的已有開發(fā)成果,避免了重新開發(fā)可能(kěnéng)引入的錯誤,從而提高了軟件的質(zhì)量。共四百零一頁復(fù)用(fùyònɡ)的基本概念
軟件復(fù)用是指重復(fù)使用“為了復(fù)用目的而設(shè)計的軟件”的過程。相應(yīng)地,可復(fù)用軟件是指為了復(fù)用目的而設(shè)計的軟件.與軟件復(fù)用的概念相關(guān),重復(fù)使用軟件的行為還可能是重復(fù)使用“并非為了復(fù)用目的而設(shè)計的軟件”的過程,或在一個應(yīng)用系統(tǒng)的不同版本間重復(fù)使用代碼的過程,這兩類行為都不屬于(shǔyú)嚴格意義上的軟件復(fù)用。
共四百零一頁軟件復(fù)用的發(fā)展過程子程序的概念也體現(xiàn)了復(fù)用的思想.1968年NATO軟件工程會議上,Mcilroy的論文“大量生產(chǎn)的軟件構(gòu)件”中第一次提出(tíchū);在其后的發(fā)展過程中,有許多復(fù)用技術(shù)的研究成果和成功的復(fù)用實踐活動.但是,復(fù)用技術(shù)在整體上對軟件產(chǎn)業(yè)的影響卻并不盡如人意;近十幾年來,面向?qū)ο蠹夹g(shù)出現(xiàn)并逐步成為主流技術(shù),為軟件復(fù)用提供了基本的技術(shù)支持;軟件構(gòu)件技術(shù)(及Web服務(wù)等)的產(chǎn)生,為軟件復(fù)用提供了更高層次的支撐。共四百零一頁分析傳統(tǒng)產(chǎn)業(yè)的發(fā)展,其基本模式均是符合標準的零部件(構(gòu)件)生產(chǎn)以及基于標準構(gòu)件的產(chǎn)品生產(chǎn)(組裝),其中,構(gòu)件是核心(héxīn)和基礎(chǔ),“復(fù)用”是必需的手段.軟件產(chǎn)業(yè)要發(fā)展并形成(xíngchéng)規(guī)模經(jīng)濟,標準構(gòu)件的生產(chǎn)和構(gòu)件的復(fù)用是關(guān)鍵因素.這正是軟件復(fù)用受到高度重視的根本原因共四百零一頁為什么要復(fù)用
通常應(yīng)用軟件系統(tǒng)的開發(fā)過程包含以下幾個階段:
需求分析、設(shè)計(shèjì)、編碼、測試、維護等.
應(yīng)用系統(tǒng)通常包含三類成分:①通用基本構(gòu)件:是特定于計算機系統(tǒng)的構(gòu)成成分。②領(lǐng)域共性構(gòu)件:是應(yīng)用系統(tǒng)所屬領(lǐng)域的共性構(gòu)成成分。③應(yīng)用專用構(gòu)件:是每個應(yīng)用系統(tǒng)的特有構(gòu)成成分。從這些內(nèi)容是不是可以找到一些(yīxiē)提高軟件效率的方法呢?共四百零一頁
長期以來,由于多數(shù)軟件都是針對某個具體的應(yīng)用(yìngyòng)開發(fā)的,所以大量的軟件開發(fā)都是從頭開始的,即從需求分析開始,經(jīng)過設(shè)計,編寫每一行代碼,測試,最后交付使用,從而出現(xiàn)了大量的同類軟件(如財務(wù)軟件、MIS軟件等)的重復(fù)開發(fā),造成了大量人力、財力的浪費,而且軟件的質(zhì)量也不高軟件復(fù)用(fùyònɡ)的需求共四百零一頁工業(yè)界大多數(shù)新產(chǎn)品的生產(chǎn)離不開已有的部件(通過組裝完成)在軟件生產(chǎn)領(lǐng)域,也希望有一些軟件工廠或車間專門生產(chǎn)軟件組件(Component),在軟件的生產(chǎn)中模擬工業(yè)產(chǎn)品設(shè)計及生產(chǎn)的經(jīng)驗,大量復(fù)用已有的構(gòu)件(gòujiàn),降低成本,提高生產(chǎn)率軟件(ruǎnjiàn)復(fù)用的需求共四百零一頁軟件的復(fù)雜性持續(xù)增長計算機技術(shù)變化的速度增加了具有較長生命周期項目的風險,早期技術(shù)過時了十年前開發(fā)的關(guān)鍵(guānjiàn)系統(tǒng)仍在運行軟件開發(fā)過程(guòchéng)面臨的挑戰(zhàn)共四百零一頁軟件復(fù)雜性的增長主要表現(xiàn)在:功能需求:
計算機解決方案成為各領(lǐng)域技術(shù)創(chuàng)新核心非功能需求:出錯率、并發(fā)用戶數(shù)、事務(wù)吞吐量等要求技術(shù)需求:分布式計算機網(wǎng)絡(luò)軟件需求量增大;中央計算機及端到端系統(tǒng)的普及使目標執(zhí)行平臺具有多樣性組織需求:需要分布式開發(fā)團隊和遠程辦公第三方產(chǎn)品和軟件包的使用中經(jīng)常遇到定義問題(wèntí)、說明問題(wèntí)、開發(fā)維護費用問題(wèntí)軟件(ruǎnjiàn)復(fù)雜性持續(xù)增長共四百零一頁業(yè)務(wù)變化(biànhuà)政府政策變化破壞了傳統(tǒng)供應(yīng)鏈的壟斷,導(dǎo)致新的競爭形式出現(xiàn)商業(yè)界面臨越來越多的組織之間的收購和兼并對原有系統(tǒng)的評估和升級成為一種趨勢技術(shù)變化:新領(lǐng)域的出現(xiàn)牽引軟件行業(yè)自身的發(fā)展組織變化:人員流動;興起了外包和第三方服務(wù);出現(xiàn)了系統(tǒng)集成者組織軟件開發(fā)要求(yāoqiú)能快速適應(yīng)變化軟件開發(fā)面臨環(huán)境的變化共四百零一頁存在哪些分布式系統(tǒng)構(gòu)架(ɡòujià),優(yōu)點和不足是什么?什么樣的開發(fā)方法適合基于Web的分布式應(yīng)用?原有的數(shù)據(jù)和程序能否復(fù)用?有什么好的工具包,軟件包,設(shè)計模板庫和例子?
未來(wèilái)程序開發(fā)的關(guān)鍵問題基于上述問題,提出:移動的、面向服務(wù)的解決方案!共四百零一頁過去應(yīng)用程序構(gòu)架(ɡòujià)和應(yīng)用程序支持工具功能典型的工具功能生成數(shù)據(jù)庫模式數(shù)據(jù)庫優(yōu)化用戶界面設(shè)計(shèjì)數(shù)據(jù)分布和復(fù)制
服務(wù)器應(yīng)用程序如數(shù)據(jù)庫
局域網(wǎng)胖客戶客戶端共四百零一頁當前應(yīng)用程序構(gòu)架和應(yīng)用程序支持(zhīchí)工具功能典型的工具功能(gōngnéng)生成數(shù)據(jù)庫模式數(shù)據(jù)庫優(yōu)化用戶界面設(shè)計數(shù)據(jù)分布和復(fù)制
局域網(wǎng)Web服務(wù)器和應(yīng)用程序代理Internet/Intranet客戶端
服務(wù)器應(yīng)用程序如數(shù)據(jù)庫提供對服務(wù)器的遠程訪問生成瀏覽器界面服務(wù)器到Web頁面的轉(zhuǎn)換共四百零一頁未來(wèilái)應(yīng)用程序構(gòu)架
局域網(wǎng)Web服務(wù)器和應(yīng)用程序代理Internet/Intranet客戶端
服務(wù)器應(yīng)用程序如數(shù)據(jù)庫
可復(fù)用構(gòu)件外部服務(wù)共四百零一頁生成(shēnɡchénɡ)數(shù)據(jù)庫模式數(shù)據(jù)庫優(yōu)化用戶界面設(shè)計數(shù)據(jù)分布和復(fù)制分類可復(fù)用構(gòu)件智能(zhìnénɡ)構(gòu)件搜索瀏覽/查詢構(gòu)件現(xiàn)有構(gòu)件的更新遠程構(gòu)件集成未來應(yīng)用程序典型的工具功能提供對服務(wù)器的遠程訪問生成瀏覽器界面服務(wù)器到Web頁面的轉(zhuǎn)換
共四百零一頁(1)簡化(jiǎnhuà)大規(guī)模分布式軟件構(gòu)架的設(shè)計,管理和演化任務(wù)在最抽象(chōuxiàng)層—構(gòu)架層,開發(fā)者決定解決方案的基本“形狀”(構(gòu)架風格)在機制層—考慮分布式系統(tǒng)的實現(xiàn)、部署和運行時的管理等未來程序開發(fā)關(guān)鍵問題的解決共四百零一頁在服務(wù)層—考慮構(gòu)架成員之間的接口及交互(jiāohù)一種觀點:集中解決方案的邏輯構(gòu)架,系統(tǒng)由抽象服務(wù)組成,這些抽象服務(wù)通過接口來訪問。開發(fā)者考慮提供服務(wù)可以訪問的操作、服務(wù)的特征描述及抽象行為另一種觀點:這些服務(wù)是為了提供某些要求的行為而在一起工作的協(xié)同代理。因此,主要問題是這些服務(wù)的交互方式的協(xié)調(diào)或結(jié)構(gòu).在這個層次上要解決的問題:服務(wù)的復(fù)制、對某些錯誤的容錯以及數(shù)據(jù)的無效處理等共四百零一頁(2)為系統(tǒng)的可復(fù)用(fùyònɡ)部分建模軟件(ruǎn
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024影視作品授權(quán)播放合同播放平臺及時間
- 2025門面房出租經(jīng)營權(quán)質(zhì)押合同經(jīng)營權(quán)質(zhì)押
- 市場營銷臨時用電施工合同
- 飼料店門鎖使用規(guī)范
- 銀行授權(quán)操作規(guī)程
- 親子攀巖活動免責承諾書
- 飲料廠防疫操作指南
- 四川省文化場館建設(shè)招標文件
- 商業(yè)街信用管理體系
- 建筑工程設(shè)備租賃合同協(xié)議
- 期末(試題)-2024-2025學年人教PEP版英語六年級上冊
- 2024年公安基礎(chǔ)知識考試題庫及答案
- 三創(chuàng)賽獲獎-非遺文化創(chuàng)新創(chuàng)業(yè)計劃書
- 教你成為歌唱達人智慧樹知到期末考試答案2024年
- 2024分娩鎮(zhèn)痛ppt課件完整版
- 少年宮籃球活動教案
- 國有建設(shè)企業(yè)《大宗材料及設(shè)備采購招標管理辦法》
- 民間秘術(shù)絕招大全
- N摻雜TiO2納米管的合成及光催化性能研究
- 二沉池設(shè)計說明書
- (完整版)展廳展館博物館美術(shù)館設(shè)計標招標評分細則及打分表
評論
0/150
提交評論