軟件體系結(jié)構(gòu)完整版課件_第1頁
軟件體系結(jié)構(gòu)完整版課件_第2頁
軟件體系結(jié)構(gòu)完整版課件_第3頁
軟件體系結(jié)構(gòu)完整版課件_第4頁
軟件體系結(jié)構(gòu)完整版課件_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1內(nèi)容提要1.1 軟件軟件的本質(zhì) 軟件神話 61.2 軟件工程 軟件工程 軟件過程和軟件工程實踐 網(wǎng)絡環(huán)境帶來的影響 1.3 軟件設計 軟件工程中的設計 設計過程和設計質(zhì)量軟件設計原則1.4 軟件體系結(jié)構(gòu)什么是軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)的內(nèi)容設計階段的軟件體系結(jié)構(gòu)1.5 小結(jié)

21.1 軟件軟件的本質(zhì)計算機軟件,是由專業(yè)人員開發(fā)并長期維護的軟件產(chǎn)品。軟件科學成為了今天商業(yè)、科學、工程必需的技術(shù),促進了新科技的創(chuàng)新和發(fā)展但是,無論國外、國內(nèi),軟件危機的達摩克利斯之劍,一直高懸在軟件從業(yè)者頭頂,至今揮之不去。軟件與信息轉(zhuǎn)換軟件不是有形的物理產(chǎn)品,而是人類思維的產(chǎn)物,軟件不是被制造出來,而是思考出來的。

4軟件的特性軟件是設計開發(fā)的,而不是傳統(tǒng)意義上生產(chǎn)制造的軟件不會磨損!隨著基于構(gòu)件的構(gòu)造模式發(fā)展,大多數(shù)軟件需要根據(jù)實際的顧客需求定制硬件和軟件的失效曲線軟件,不會受引起硬件磨損的環(huán)境問題的影響。6計算機軟件分類系統(tǒng)軟件應用軟件嵌入式軟件科學和工程計算軟件產(chǎn)品線軟件人工智能軟件網(wǎng)絡化軟件計算機軟件分為七個大類,軟件工程師正面臨著持續(xù)挑戰(zhàn)。7新的挑戰(zhàn)開放計算網(wǎng)絡資源開源軟件所有這些新的挑戰(zhàn),毫無疑問,將對商務人員、軟件工程師、最終用戶產(chǎn)生無法預測的結(jié)果。軟件專案都有特定的進度與時間表投資人:想知道項目是否能夠在給定的資源和進度約束下完成。面向軟件體系結(jié)構(gòu)的需求工程,從需求到軟件體系結(jié)構(gòu)的轉(zhuǎn)換隨著技術(shù)和用戶需求的不斷變化,軟件開發(fā)人員必須時刻調(diào)整自己的開發(fā)以適應當前的需求。性能:產(chǎn)品達到怎樣的性能?典型的利益相關(guān)人及其關(guān)注點包括:能在較為抽象的級別上描述整個軟件系統(tǒng)的結(jié)構(gòu),成為大規(guī)模、復雜軟件系統(tǒng)設計中必不可少的步驟。可構(gòu)建性:如何將軟件構(gòu)建為一組組件,并能夠獨立實現(xiàn)和驗證這些組件?哪些組件應該復用其它產(chǎn)品,哪些應該從外部供應商處獲得?計劃復用:復用既省時又省力。在面向?qū)ο蟮脑O計系統(tǒng)中,從一個公共的模版中產(chǎn)生快速的、相近的實現(xiàn)與之并發(fā)運行、可能會與之并發(fā)運行;能在較為抽象的級別上描述整個軟件系統(tǒng)的結(jié)構(gòu),成為大規(guī)模、復雜軟件系統(tǒng)設計中必不可少的步驟。形成上述圖樣或模式的藝術(shù)。構(gòu)建:包括手寫的、自動生成的編碼和測試,以發(fā)現(xiàn)編碼中的錯誤。建模:無論是庭園設計家、橋梁建造者、航空工程師、木匠還是建筑師,每天的工作都離不開模型。自頂向下分解、逐步求精的開發(fā);用層次結(jié)構(gòu)描述軟件單元間的相互關(guān)系;包括軟件工程在內(nèi)的任何工程方法,必須構(gòu)建在質(zhì)量的基礎之上?;谙到y(tǒng),以中央處理器為核心;軟件的演變和認識過程9程序設計語言的發(fā)展有三個層面以標準C語言簇為典型代表的面向過程的軟件設計方法以JAVA語言簇為典型代表的面向?qū)ο蟮能浖O計方法以XML語言為典型代表的面向構(gòu)件的軟件設計方法人月神話《人月神話》的內(nèi)容,源于作者布魯克斯在IBM公司SYSTEM/360家族(最長壽的計算機體系結(jié)構(gòu)之一)和OS/360中的項目管理經(jīng)驗。對軟件設計有一個全面的理解。建筑師的角色和溝通依據(jù)軟件生命周期中軟件體系結(jié)構(gòu)的研究與應用資源分配、項目結(jié)構(gòu)化和規(guī)劃;(4)軟件體系結(jié)構(gòu)形式化支持的研究。JohnBackus,DanBricklin,蒂姆·伯納斯-李林納斯·托瓦茲,理查德·馬修·斯托曼基于軟件體系結(jié)構(gòu)的應用部署所有這些新的挑戰(zhàn),毫無疑問,將對商務人員、軟件工程師、最終用戶產(chǎn)生無法預測的結(jié)果。軟件體系結(jié)構(gòu)的描述,設計方法,以及設計經(jīng)驗的記錄和重用傳統(tǒng)的與互聯(lián)網(wǎng)時代的軟件工程觀比較建模:無論是庭園設計家、橋梁建造者、航空工程師、木匠還是建筑師,每天的工作都離不開模型。以標準C語言簇為典型代表的面向過程的軟件設計方法可變性:軟件可能需要哪些改變?哪些改變不太可能發(fā)生,不需要特別容易進行這些改變?這類研究產(chǎn)生了針對一類特殊軟件的體系結(jié)構(gòu)框架,比如,航空電子控制系統(tǒng)、移動機器人、用戶界面。20世紀50年代的類似硬件工程80年代的軟件生產(chǎn)率和可擴展性產(chǎn)品化:如果產(chǎn)品以幾種變體的形式存在,如何開發(fā)一個產(chǎn)品線,并利用這些變體的共性?產(chǎn)品線中的產(chǎn)品以怎樣的步驟開發(fā)?在創(chuàng)建一條軟件產(chǎn)品線時,要進行哪些投資?性能:產(chǎn)品達到怎樣的性能?至于如何知道M的附近位置?如何將軟件劃分成模塊?性能:產(chǎn)品達到怎樣的性能?包括軟件工程在內(nèi)的任何工程方法,必須構(gòu)建在質(zhì)量的基礎之上。重視在不同時間段、不同軟件規(guī)模上的軟件間的相互關(guān)系和協(xié)同;111.2 軟件工程軟件工程美國電氣與電子工程師協(xié)會(IEEE)給出的:軟件工程是:(1)將系統(tǒng)化的、規(guī)范的、可量化的方法應用于軟件的開發(fā)、運行和維護,即將工程化方法應用于軟件。(2)在(1)中所述方法的研究。軟件工程層次圖包括軟件工程在內(nèi)的任何工程方法,必須構(gòu)建在質(zhì)量的基礎之上。質(zhì)量關(guān)注點(qualityfocus)過程(process)方法(method)工具(tool)軟件工程是一種層次化的技術(shù)!軟件工程與計算機科學的差別軟件工程計算機科學目標在時間、資源、人員這3個主要限制條件下構(gòu)建滿足用戶需求的軟件系統(tǒng)探索正確的計算和建模方法,從而改進計算方法本身產(chǎn)品軟件(比如辦公包和編譯器)算法(比如希爾排序法)和抽象的問題(比如哲學家進餐問題)進度與時間表軟件專案都有特定的進度與時間表研究專案一般不具有設置的進度與時間表關(guān)注點軟件工程關(guān)注如何為用戶實現(xiàn)價值軟件理論關(guān)注的是軟件本身運行的原理,比如時間復雜度,空間復雜度,和算法的正確性變化程度隨著技術(shù)和用戶需求的不斷變化,軟件開發(fā)人員必須時刻調(diào)整自己的開發(fā)以適應當前的需求。同時軟件工程本身也處于不斷的發(fā)展中對于某一種特定問題的正確解決方法將永遠不會改變需要的其他知識相關(guān)領(lǐng)域的知識數(shù)學著名的探索者和教育家BarryBoehm,DavidParnas,布魯克斯EdsgerDijkstra,高德納,RobertTarjan,PeterSlater,艾倫·圖靈,姚期智著名的實踐者JohnBackus,DanBricklin,蒂姆·伯納斯-李林納斯·托瓦茲,理查德·馬修·斯托曼無14軟件過程和軟件工程實踐一個通用的軟件工程過程框架,通常包含5個活動:溝通:在技術(shù)工作開始之前,和客戶的溝通、協(xié)作極其重要目的是理解利益相關(guān)者的項目目標,并收集需求,以定義軟件特性、功能。策劃:軟件項目好比是一個復雜的旅程,策劃活動,就是創(chuàng)建一個使任何復雜的旅程都變得簡單的地圖,以指導團隊的項目旅程,該地圖稱為軟件。建模:無論是庭園設計家、橋梁建造者、航空工程師、木匠還是建筑師,每天的工作都離不開模型。他們會畫一張草圖,來輔助理解整個項目大的構(gòu)想,包括體系結(jié)構(gòu)、不同的構(gòu)件如何結(jié)合,以及其它特征。構(gòu)建:包括手寫的、自動生成的編碼和測試,以發(fā)現(xiàn)編碼中的錯誤。部署:軟件以全部、部分增量的形式交付給用戶,用戶對其進行評測,并給出反饋意見。157條簡單的原則存在價值:軟件系統(tǒng)因能給用戶提供價值,而具有存在價值。所有的決定,都應基于該思想。保持簡潔:軟件設計并不是隨意的過程,軟件設計中需要考慮很多因素。所有的設計,都應該盡可能簡潔,保持愿景:清晰的愿景,是軟件項目成功的基礎。沒有愿景,項目將會有多種設計思想而永遠不能結(jié)束。如果缺乏一致性,關(guān)注使用者:有產(chǎn)業(yè)實力的軟件系統(tǒng),不是在真空中開發(fā)、使用的。通常,軟件系統(tǒng)必定是由開發(fā)者以外的人員使用、維護和編制文檔,等等,這就必須要讓別人理解你的系統(tǒng)。因此,在需求說明、設計和實現(xiàn)過程時面向未來:生命期持久的系統(tǒng),具有更高的價值。在現(xiàn)在的計算環(huán)境中,需求規(guī)格說明隨時會變計劃復用:復用既省時又省力。軟件系統(tǒng)開發(fā)過程中,高水平的復用,是一個很難實現(xiàn)的目標。面向?qū)ο蠹夹g(shù)會給代碼和設計復用帶來好處認真思考:這最后一條規(guī)則,可能最容易忽略。行動之前,清晰定位、完整思考,通常能產(chǎn)生更好的結(jié)果。仔細思考,可以提高做好事情的可能性10個重要的軟件工程思想17網(wǎng)絡環(huán)境帶來的影響美國南加州大學的巴里·貝姆(BarryBoehm)教授,總結(jié)了國際上軟件工程的發(fā)展歷程:20世紀50年代的類似硬件工程60年代的軟件手工生產(chǎn)、70年代的形式化方法和瀑布模型80年代的軟件生產(chǎn)率和可擴展性90年代的軟件并發(fā)和順序進程21世紀初的軟件敏捷性和價值18軟件工程在40年發(fā)展歷程中關(guān)注域轉(zhuǎn)向需求40年來,軟件工程的發(fā)展都是以系統(tǒng)為中心的,基于圖靈計算模式,圖靈計算時代,計算機軟件是與計算機系統(tǒng)操作有關(guān)的程序、規(guī)程、規(guī)則及如何與之有關(guān)的數(shù)據(jù)結(jié)構(gòu)和文檔,即:軟件=程序+數(shù)據(jù)結(jié)構(gòu)+文檔隨著一個劃時代的轉(zhuǎn)變,人們開始推崇“軟件即服務”的思想。那么,計算機軟件是與滿足需求的信息及與之有關(guān)的服務工具,即:軟件=滿足需求的信息+服務工具Google的成功,就是一個現(xiàn)實的例子。傳統(tǒng)的與互聯(lián)網(wǎng)時代的軟件工程觀比較傳統(tǒng)軟件工程觀互聯(lián)網(wǎng)時代軟件工程觀基礎理論基于系統(tǒng),以中央處理器為核心;基于圖靈計算理論和馮·諾依曼結(jié)構(gòu)?;诰W(wǎng)絡,節(jié)點是圖靈機或智能體等主體對象,主體間相互作用;網(wǎng)絡化軟件具有小世界、無標度和高集聚的特性,研究網(wǎng)絡動力學行為。研究方法操作系統(tǒng)屏蔽硬件的異構(gòu)性,中間件屏蔽操作系統(tǒng)的異構(gòu)性;用層次結(jié)構(gòu)描述軟件單元間的相互關(guān)系;自頂向下分解、逐步求精的開發(fā);軟件生命周期、軟件評測和軟件成熟度。網(wǎng)絡成為一個虛擬資源環(huán)境;重視在不同時間段、不同軟件規(guī)模上的軟件間的相互關(guān)系和協(xié)同;軟件按偏好依附生長,逐步演化。工程方法軟件業(yè)是制造業(yè);面向系統(tǒng)的結(jié)構(gòu);要求用戶提供確定的需求、明確的系統(tǒng)邊界。軟件即服務,軟件業(yè)是服務業(yè);面向服務的架構(gòu);用戶主導,隨需即取,規(guī)模定制,敏捷開發(fā)。201.3 軟件設計朗曼字典里,對“設計”的解釋包括:描述某個事物如何被制造出來的圖樣或模式。形成上述圖樣或模式的藝術(shù)。對人造產(chǎn)品中組成部分的一種安排,將對產(chǎn)品在實踐中的可用性具有影響。人的頭腦中的一種規(guī)則,等等。由上述定義可見,設計是一種“圖樣、模式或規(guī)劃”,其目標,就是要描述一個產(chǎn)品如何被制造出來。因此,軟件設計可以被看作是“對軟件將如何開發(fā)出來的一種描述”。如果把設計當作一個動詞,那么軟件設計就是“得到這種描述的活動或過程”。21軟件工程中的設計分析模型數(shù)據(jù)/類設計體系結(jié)構(gòu)設計接口設計構(gòu)件級設計對軟件需求進行分析和建模開始后,軟件設計是建模活動的最后一個軟件工程活動,接著便要進入構(gòu)造階段,并生成代碼和測試。

自頂向下分解、逐步求精的開發(fā);面向軟件體系結(jié)構(gòu)的需求工程,從需求到軟件體系結(jié)構(gòu)的轉(zhuǎn)換面向?qū)ο蠹夹g(shù)會給代碼和設計復用帶來好處20世紀50年代的類似硬件工程可變性:軟件可能需要哪些改變?哪些改變不太可能發(fā)生,不需要特別容易進行這些改變?思維的產(chǎn)物,軟件不是被制造出來,而沒有愿景,項目將會有多種設計思想而永遠不能結(jié)束。傳統(tǒng)的與互聯(lián)網(wǎng)時代的軟件工程觀比較軟件過程和軟件工程實踐計算機軟件分為七個大類,軟件工程師正面臨著持續(xù)挑戰(zhàn)。建筑師準備建筑最初的草圖,展示外觀和內(nèi)部布局,與客戶討論這些草圖,直至所有相關(guān)方都達成一致意見,認為展示的就是想要的。最后,介紹了軟件體系結(jié)構(gòu)的概念、軟件體系結(jié)構(gòu)的內(nèi)容和設計階段的軟件體系結(jié)構(gòu)。40年來,軟件工程的發(fā)展都是以系統(tǒng)為中心的,基于圖靈計算模式,圖靈計算時代,計算機軟件是與計算機系統(tǒng)操作有關(guān)的程序、規(guī)程、規(guī)則及如何與之有關(guān)的數(shù)據(jù)結(jié)構(gòu)和文檔,即:建筑風格,建筑物,組織機構(gòu)、結(jié)構(gòu)的一種樣式、規(guī)矩或風格。容量:多少用戶并發(fā)使用該系統(tǒng)?該系統(tǒng)為用戶保存多少數(shù)據(jù)?80年代的軟件生產(chǎn)率和可擴展性建筑的藝術(shù)或科學,特別是在考慮美感和實用因素的情況下,設計人類使用的大型建筑物所需的技巧和實際。技術(shù)支持人員:關(guān)注幫助平臺電話呼入的數(shù)目和復雜性。建模:無論是庭園設計家、橋梁建造者、航空工程師、木匠還是建筑師,每天的工作都離不開模型。軟件生命周期、軟件評測和軟件成熟度。軟件過程和軟件工程實踐那么,計算機軟件是與滿足需求的信息及與之有關(guān)的服務工具,即:22設計過程和設計質(zhì)量在整個設計過程中,要使用一系列正式技術(shù)評審或設計走查,來評估設計演化的質(zhì)量。標準如下:設計必須實現(xiàn)所有分析模型中的明確需求,而且滿足客戶期望的所有隱性需求。對于生成代碼的人、進行測試的人、維護軟件的人,設計必須是可讀的、可理解的指南。設計必須提供軟件的全貌,并從實現(xiàn)的角度說明數(shù)據(jù)域、功能域、行為域。23軟件設計原則抽象體系結(jié)構(gòu)模式模塊化信息隱蔽功能獨立求精重構(gòu)設計類模塊化和軟件成本模塊化時,位置需要保持在M附近,來避免過少、過多的模塊化。至于如何知道M的附近位置?如何將軟件劃分成模塊?則需要理解后面的設計概念。251.4 軟件體系結(jié)構(gòu)什么是軟件體系結(jié)構(gòu)牛津字典中,“體系結(jié)構(gòu)”一詞定義為:建筑的藝術(shù)或科學,特別是在考慮美感和實用因素的情況下,設計人類使用的大型建筑物所需的技巧和實際。建筑風格,建筑物,組織機構(gòu)、結(jié)構(gòu)的一種樣式、規(guī)矩或風格??▋?nèi)基梅隆大學的軟件工程研究所在網(wǎng)站上公開征集軟件體系結(jié)構(gòu)的定義,至今已有百余種。其中,較有影響力的定義包括:軟件系統(tǒng)的結(jié)構(gòu),包含軟件元素、軟件元素外部可見的屬性以及這些軟件元素之間的關(guān)系;軟件系統(tǒng)的基本組織,包含構(gòu)件、構(gòu)件之間、構(gòu)件與環(huán)境之間的關(guān)系,以及相關(guān)的設計與演化原則等。狗窩、房子和高樓開發(fā)一個具有一定規(guī)模和復雜性的軟件系統(tǒng)和編寫一個簡單的程序,是不一樣的,借用《設計模式》的作者G.Booch的比喻,其中的區(qū)別如同建造一座大廈和搭建一個狗窩的差別。房子的建模建筑師準備建筑最初的草圖,展示外觀和內(nèi)部布局,與客戶討論這些草圖,直至所有相關(guān)方都達成一致意見,認為展示的就是想要的。建筑師的角色和溝通依據(jù)建筑師也充當建造者和客戶之間的協(xié)調(diào)人!體系結(jié)構(gòu)的需要:溫切斯特神秘屋這個大廈沒有制作過建筑藍圖!軟件體系結(jié)構(gòu)的發(fā)展史2001年到2012年間的重要方法、語言、論文、數(shù)據(jù)和會議31軟件生命周期中軟件體系結(jié)構(gòu)的研究與應用需求面向軟件體系結(jié)構(gòu)的需求工程,從需求到軟件體系結(jié)構(gòu)的轉(zhuǎn)換設計軟件體系結(jié)構(gòu)的描述,設計方法,以及設計經(jīng)驗的記錄和重用實踐支持軟件體系結(jié)構(gòu)的開發(fā)過程,從設計模型到系統(tǒng)實現(xiàn)的轉(zhuǎn)換;基于軟件體系結(jié)構(gòu)的測試部署基于軟件體系結(jié)構(gòu)的應用部署開發(fā)后動態(tài)軟件體系結(jié)構(gòu),軟件體系結(jié)構(gòu)恢復和重建整個軟件生命周期中,各階段軟件體系結(jié)構(gòu)的研究熱點32軟件體系結(jié)構(gòu)的內(nèi)容下面將當前軟件體系結(jié)構(gòu)分為4個研究領(lǐng)域:(1)通過提供一種新的體系結(jié)構(gòu)描述語言(ArchitecturalDescriptionLanguage,ADL)解決體系結(jié)構(gòu)描述問題。這種語言的目標,是給實踐者提供設計體系結(jié)構(gòu)更好的方法,以便設計人員相互交流,并可以使用支持體系結(jié)構(gòu)描述語言的工具來分析案例。(2)體系結(jié)構(gòu)領(lǐng)域知識的總結(jié)性研究。這一領(lǐng)域關(guān)心的,是工程師通過軟件實踐,總結(jié)各種體系結(jié)構(gòu)原則和模式的分類和闡釋。(3)針對特定領(lǐng)域的框架的研究。這類研究產(chǎn)生了針對一類特殊軟件的體系結(jié)構(gòu)框架,比如,航空電子控制系統(tǒng)、移動機器人、用戶界面。這類研究一旦成功,這樣的框架便可以被毫不費力實例化來生產(chǎn)這一領(lǐng)域新的產(chǎn)品。(4)軟件體系結(jié)構(gòu)形式化支持的研究。隨著新的符號的產(chǎn)生,以及人們對體系結(jié)構(gòu)設計實踐的理解逐步深入,需要用一種嚴格的形式化方法刻畫軟件體系結(jié)構(gòu)及其相關(guān)性質(zhì)。33創(chuàng)建軟件體系結(jié)構(gòu)典型的利益相關(guān)人及其關(guān)注點包括:投資人:想知道項目是否能夠在給定的資源和進度約束下完成。架構(gòu)師、開發(fā)人員、測試人員:首先考慮的是,最初的構(gòu)建和以后的維護與演進。項目經(jīng)理:需要組織團隊,制定迭代計劃。市場人員:想通過品質(zhì)特點實現(xiàn)與競爭者的差異化。用戶:包括最終用戶、系統(tǒng)管理員,以及安裝、部署、準備、配置人員。技術(shù)支持人員:關(guān)注幫助平臺電話呼入的數(shù)目和復雜性。首先對軟件工程進行介紹,包括軟件的本質(zhì)、軟件危機的出現(xiàn)、軟件神話,然后對層次化的軟件工程以及網(wǎng)絡環(huán)境帶來的影響進行了描述。容量:多少用戶并發(fā)使用該系統(tǒng)?該系統(tǒng)為用戶保存多少數(shù)據(jù)?軟件設計、軟件體系結(jié)構(gòu)與軟件工程密切相關(guān),它們是軟件工程和軟件開發(fā)過程的重要組成部分。在面向?qū)ο蟮脑O計系統(tǒng)中,從一個公共的模版中產(chǎn)生快速的、相近的實現(xiàn)產(chǎn)品化:如果產(chǎn)品以幾種變體的形式存在,如何開發(fā)一個產(chǎn)品線,并利用這些變體的共性?產(chǎn)品線中的產(chǎn)品以怎樣的步驟開發(fā)?在創(chuàng)建一條軟件產(chǎn)品線時,要進行哪些投資?20世紀50年代的類似硬件工程由此,可以看到軟件設計在軟件生存周期和各種軟件開發(fā)過程模型中所處的位置。性能:產(chǎn)品達到怎樣的性能?隨著技術(shù)和用戶需求的不斷變化,軟件開發(fā)人員必須時刻調(diào)整自己的開發(fā)以適應當前的需求。容量:多少用戶并發(fā)使用該系統(tǒng)?該系統(tǒng)為用戶保存多少數(shù)據(jù)?目的是理解利益相關(guān)者的項目目標,并收集需求,以定義軟件特性、功能。對軟件設計有一個全面的理解。和OS/360中的項目管理經(jīng)驗。下面將當前軟件體系結(jié)構(gòu)分為4個研究領(lǐng)域:20世紀50年代的類似硬件工程10個重要的軟件工程思想軟件系統(tǒng)的基本組織,包含構(gòu)件、構(gòu)件之間、構(gòu)件與環(huán)境之間的關(guān)系,以及相關(guān)的設計與演化原則等。可構(gòu)建性:如何將軟件構(gòu)建為一組組件,并能夠獨立實現(xiàn)和驗證這些組件?哪些組件應該復用其它產(chǎn)品,哪些應該從外部供應商處獲得?集成FR和NFR的方法,將FR和NFR視為同等重要的設計輸入,在體系結(jié)構(gòu)設計過程中,同時兼顧FR和NFR,并將其轉(zhuǎn)化成相應體系結(jié)構(gòu)的建模元素具體系統(tǒng),會有其它關(guān)鍵的關(guān)注點。在整個設計過程中,要使用一系列正式技術(shù)評審或設計走查,來評估設計演化的質(zhì)量。他們會畫一張草圖,來輔助理解整個項目大的構(gòu)想,包括體系結(jié)構(gòu)、不同的構(gòu)件如何結(jié)合,以及其它特征。34創(chuàng)建軟件體系結(jié)構(gòu)具體系統(tǒng),會有其它關(guān)鍵的關(guān)注點。功能性:產(chǎn)品向用戶提供哪些功能?可變性:軟件可能需要哪些改變?哪些改變不太可能發(fā)生,不需要特別容易進行這些改變?性能:產(chǎn)品達到怎樣的性能?容量:多少用戶并發(fā)使用該系統(tǒng)?該系統(tǒng)為用戶保存多少數(shù)據(jù)?生態(tài)系統(tǒng):在部署的生態(tài)環(huán)境中,該系統(tǒng)與其他系統(tǒng)進行哪些交互?模塊化:如何將編寫軟件的任務分解為工作指派(模塊),特別是這些模塊可以獨立地開發(fā),并能夠準確、容易地滿足彼此的需要?可構(gòu)建性:如何將軟件構(gòu)建為一組組件,并能夠獨立實現(xiàn)和驗證這些組件?哪些組件應該復用其它產(chǎn)品,哪些應該從外部供應商處獲得?產(chǎn)品化:如果產(chǎn)品以幾種變體的形式存在,如何開發(fā)一個產(chǎn)品線,并利用這些變體的共性?產(chǎn)品線中的產(chǎn)品以怎樣的步驟開發(fā)?在創(chuàng)建一條軟件產(chǎn)品線時,要進行哪些投資?安全性:產(chǎn)品是否需要用戶認證,或者必須限制對數(shù)據(jù)的訪問?數(shù)據(jù)的安全性如何得到保證?如何抵擋“拒絕服務”攻擊或其他攻擊?35設計階段的軟件體系結(jié)構(gòu)根據(jù)在設計過程中,對FR和NFR考慮的階段不同,可以將軟件體系結(jié)構(gòu)設計方法分為3類:FR驅(qū)動的軟件體系結(jié)構(gòu)設計,根據(jù)FR得到初步的體系結(jié)構(gòu)設計模型,然后,通過一定的手段,精化設計結(jié)果以逐步達到NFR的目標,典型的方法,包括評估與轉(zhuǎn)化、自頂向下組裝)等。NFR驅(qū)動的軟件體系結(jié)構(gòu)設計將NFR作為首要考慮因素,將NFR直接映射成為體系結(jié)構(gòu)的建模元素,典型的,包括屬性驅(qū)動的設計ADD等。集成FR和NFR的方法,將FR和NFR視為同等重要的設計輸入,在體系結(jié)構(gòu)設計過程中,同時兼顧FR和NFR,并將其轉(zhuǎn)化成相應體系結(jié)構(gòu)的建模元素這類方法,往往與面向Aspect的方法相結(jié)合,典型的,包括UseCase和目標驅(qū)動、形式化設計分析框架FDAF、Aspect構(gòu)件等。體系結(jié)構(gòu)的復用圣索菲亞大教堂,是拜占庭建筑之美的代表。1100年后,ChristopherWren使用了同樣的設計,來建造圣保羅大教堂的穹頂,并成為倫敦的地標性建筑。系統(tǒng)的構(gòu)架結(jié)構(gòu)軟件結(jié)構(gòu)關(guān)系適用于分解是一個子模塊;與之共享秘密資源分配、項目結(jié)構(gòu)化和規(guī)劃;信息隱藏、封裝;配置控制使用要求正確出現(xiàn)設計子集;設計擴展分層要求正確的出現(xiàn)、使用服務、提供抽象增量式開發(fā);在“虛擬機”可移植性上實現(xiàn)系統(tǒng)類是一個實例;共享訪問方法在面向?qū)ο蟮脑O計系統(tǒng)中,從一個公共的模版中產(chǎn)生快速的、相近的實現(xiàn)客戶機-服務器與之通信;依賴于分布式操作;關(guān)注點的分離;性能分析;負載平衡進程與之并發(fā)運行、可能會與之并發(fā)運行;排除;優(yōu)先于等調(diào)度分析;性能分析并發(fā)在相同的邏輯線程上運行確定存在自資源爭用,線程可以交叉、連接、被創(chuàng)建或被殺死的位置共享數(shù)據(jù)產(chǎn)生數(shù)據(jù);使用數(shù)據(jù)性能;數(shù)據(jù)完整性;可修改性部署分配給;移植到性能、可用性、安全性分析實現(xiàn)存儲到配置控制、集成、測試活動工作分配分配到項目管理、最佳利用專業(yè)技術(shù)、管理通用性381.5 小結(jié)軟件設計、軟件體系結(jié)構(gòu)與軟件工程密切相關(guān),它們是軟件工程和軟件開發(fā)過程的重要組成部分。首先對軟件工程進行介紹,包括軟件的本質(zhì)、軟件危機的出現(xiàn)、軟件神話,然后對層次化的軟件工程以及網(wǎng)絡環(huán)境帶來的影響進行了描述。由此,可以看到軟件設計在軟件生存周期和各種軟件開發(fā)過程模型中所處的位置。然后,對設計過程、設計質(zhì)量、軟件設計原則進行了介紹對軟件設計有一個全面的理解。最后,介紹了軟件體系結(jié)構(gòu)的概念、軟件體系結(jié)構(gòu)的內(nèi)容和設計階段的軟件體系結(jié)構(gòu)。軟件體系結(jié)構(gòu)設計作為軟件設計過程中的活動之一能在較為抽象的級別上描述整個軟件系統(tǒng)的結(jié)構(gòu),成為大規(guī)模、復雜軟件系統(tǒng)設計中必不可少的步驟。39內(nèi)容提要1.1 軟件軟件的本質(zhì) 軟件神話 61.2 軟件工程 軟件工程 軟件過程和軟件工程實踐 網(wǎng)絡環(huán)境帶來的影響 1.3 軟件設計 軟件工程中的設計 設計過程和設計質(zhì)量軟件設計原則1.4 軟件體系結(jié)構(gòu)什么是軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)的內(nèi)容設計階段的軟件體系結(jié)構(gòu)1.5 小結(jié)

軟件與信息轉(zhuǎn)換軟件不是有形的物理產(chǎn)品,而是人類思維的產(chǎn)物,軟件不是被制造出來,而是思考出來的。

投資人:想知道項目是否能夠在給定的資源和進度約束下完成。在面向?qū)ο蟮脑O計系統(tǒng)中,從一個公共的模版中產(chǎn)生快速的、相近的實現(xiàn)項目經(jīng)理:需要組織團隊,制定迭代計劃。研究專案一般不具有設置的進度與時間表圣索菲亞大教堂,是拜占庭建筑之美的代表。首先對軟件工程進行介紹,包括軟件的本質(zhì)、軟件危機的出現(xiàn)、軟件神話,然后對層次化的軟件工程以及網(wǎng)絡環(huán)境帶來的影響進行了描述。軟件生命周期、軟件評測和軟件成熟度。對軟件需求進行分析和建模開始后,軟件設計是建模活動的最后一個軟件工程活動,接著便要進入構(gòu)造階段,并生成代碼和測試。配置控制、集成、測試活動策劃:軟件項目好比是一個復雜的旅程,策劃活動,就是創(chuàng)建一個使任何復雜的旅程都變得簡單的地圖,以指導團隊的項目旅程,該地圖稱為軟件。安全性:產(chǎn)品是否需要用戶認證,或者必須限制對數(shù)據(jù)的訪問?數(shù)據(jù)的安全性如何得到保證?如何抵擋“拒絕服務”攻擊或其他攻擊?對軟件設計有一個全面的理解。自頂向下分解、逐步求精的開發(fā);20世紀50年代的類似硬件工程在現(xiàn)在的計算環(huán)境中,需求規(guī)格說明隨時會變軟件體系結(jié)構(gòu)的描述,設計方法,以及設計經(jīng)驗的記錄和重用那么,計算機軟件是與滿足需求的信息及與之有關(guān)的服務工具,即:90年代的軟件并發(fā)和順序進程軟件體系結(jié)構(gòu)的描述,設計方法,以及設計經(jīng)驗的記錄和重用軟件過程和軟件工程實踐具體系統(tǒng),會有其它關(guān)鍵的關(guān)注點。模塊化:如何將編寫軟件的任務分解為工作指派(模塊),特別是這些模塊可以獨立地開發(fā),并能夠準確、容易地滿足彼此的需要?41軟件過程和軟件工程實踐一個通用的軟件工程過程框架,通常包含5個活動:溝通:在技術(shù)工作開始之前,和客戶的溝通、協(xié)作極其重要目的是理解利益相關(guān)者的項目目標,并收集需求,以定義軟件特性、功能。策劃:軟件項目好比是一個復雜的旅程,策劃活動,就是創(chuàng)建一個使任何復雜的旅程都變得簡單的地圖,以指導團隊的項目旅程,該地圖稱為軟件。建模:無論是庭園設計家、橋梁建造者、航空工程師、木匠還是建筑師,每天的工作都離不開模型。他們會畫一張草圖,來輔助理解整個項目大的構(gòu)想,包括體系結(jié)構(gòu)、不同的構(gòu)件如何結(jié)合,以及其它特征。構(gòu)建:包括手寫的、自動生成的編碼和測試,以發(fā)現(xiàn)編碼中的錯誤。部署:軟件以全部、部分增量的形式交付給用戶,用戶對其進行評測,并給出反饋意見。42軟件工程中的設計分析模型數(shù)據(jù)/類設計體系結(jié)構(gòu)設計接口設計構(gòu)件級設計對軟件需求進行分析和建模開始后,軟件設計是建模活動的最后一個軟件工程活動,接著便要進入構(gòu)造階段,并生成代碼和測試。

43軟件生命周期中軟件體系結(jié)構(gòu)的研究與應用需求面向軟件體系結(jié)構(gòu)的需求工程,從需求到軟件體系結(jié)構(gòu)的轉(zhuǎn)換設計軟件體系結(jié)構(gòu)的描述,設計方法,以及設計經(jīng)驗的記錄和重用實踐支持軟件體系結(jié)構(gòu)的開發(fā)過程,從設計模型到系統(tǒng)實現(xiàn)的轉(zhuǎn)換;基于軟件體系結(jié)構(gòu)的測試部署基于軟件體系結(jié)構(gòu)的應用部署開發(fā)后動態(tài)軟件體系結(jié)構(gòu),軟件體系結(jié)構(gòu)恢復和重建整個軟件生命周期中,各階段軟件體系結(jié)構(gòu)的研究熱點面向?qū)ο蠹夹g(shù)會給代碼和設計復用帶來好處面向軟件體系結(jié)構(gòu)的需求工程,從需求到軟件體系結(jié)構(gòu)的轉(zhuǎn)換建筑師準備建筑最初的草圖,展示外觀和內(nèi)部布局,與客戶討論這些草圖,直至所有相關(guān)方都達成一致意見,認為展示的就是想要的。軟件過程和軟件工程實踐軟件工程是:(1)將系統(tǒng)化的、規(guī)范的、可量化的方法應用于軟件的開發(fā)、運行和維護,即將工程化方法應用于軟件。面向軟件體系結(jié)構(gòu)的需求工程,從需求到軟件體系結(jié)構(gòu)的轉(zhuǎn)換計算機軟件分為七個大類,軟件工程師正面臨著持續(xù)挑戰(zhàn)。軟件體系結(jié)構(gòu)的描述,設計方法,以及設計經(jīng)驗的記錄和重用體系結(jié)構(gòu)的需要:溫切斯特神秘屋軟件系統(tǒng)的結(jié)構(gòu),包含軟件元素、軟件元素外部可見的屬性以及這些軟件元素之間的關(guān)系;技術(shù)支持人員:關(guān)注幫助平臺電話呼入的數(shù)目和復雜性。軟件過程和軟件工程實踐目的是理解利益相關(guān)者的項目目標,并收集需求,以定義軟件特性、功能。構(gòu)建:包括手寫的、自動生成的編碼和測試,以發(fā)現(xiàn)編碼中的錯誤。(2)在(1)中所述方法的研究。部署:軟件以全部、部分增量的形式交付給用戶,用戶對其進行評測,并給出反饋意見。基于系統(tǒng),以中央處理器為核心;可變性:軟件可能需要哪些改變?哪些改變不太可能發(fā)生,不需要特別容易進行這些改變?性能:產(chǎn)品達到怎樣的性能?支持軟件體系結(jié)構(gòu)的開發(fā)過程,從設計模型到系統(tǒng)實現(xiàn)的轉(zhuǎn)換;傳統(tǒng)的與互聯(lián)網(wǎng)時代的軟件工程觀比較作者布魯克斯在IBM公司架構(gòu)師、開發(fā)人員、測試人員:首先考慮的是,最初的構(gòu)建和以后的維護與演進。軟件設計、軟件體系結(jié)構(gòu)與軟件工程密切相關(guān),它們是軟件工程和軟件開發(fā)過程的重要組成部分。安全性:產(chǎn)品是否需要用戶認證,或者必須限制對數(shù)據(jù)的訪問?數(shù)據(jù)的安全性如何得到保證?如何抵擋“拒絕服務”攻擊或其他攻擊?計算機軟件分為七個大類,軟件工程師正面臨著持續(xù)挑戰(zhàn)。包括軟件工程在內(nèi)的任何工程方法,必須構(gòu)建在質(zhì)量的基礎之上。80年代的軟件生產(chǎn)率和可擴展性軟件專案都有特定的進度與時間表基于軟件體系結(jié)構(gòu)的應用部署部署:軟件以全部、部分增量的形式交付給用戶,用戶對其進行評測,并給出反饋意見。(4)軟件體系結(jié)構(gòu)形式化支持的研究。這類研究產(chǎn)生了針對一類特殊軟件的體系結(jié)構(gòu)框架,比如,航空電子控制系統(tǒng)、移動機器人、用戶界面。自頂向下分解、逐步求精的開發(fā);(2)體系結(jié)構(gòu)領(lǐng)域知識的總結(jié)性研究。(1)通過提供一種新的體系結(jié)構(gòu)描述語言(ArchitecturalDescriptionLanguage,ADL)解決體系結(jié)構(gòu)描述問題。部署:軟件以全部、部分增量的形式交付給用戶,用戶對其進行評測,并給出反饋意見。仔細思考,可以提高做好事情的可能性這一領(lǐng)域關(guān)心的,是工程師通過軟件實踐,總結(jié)各種體系結(jié)構(gòu)原則和模式的分類和闡釋。動態(tài)軟件體系結(jié)構(gòu),軟件體系結(jié)構(gòu)恢復和重建傳統(tǒng)的與互聯(lián)網(wǎng)時代的軟件工程觀比較建筑的藝術(shù)或科學,特別是在考慮美感和實用因素的情況下,設計人類使用的大型建筑物所需的技巧和實際。軟件不是有形的物理產(chǎn)品,而是人類軟件工程是:(1)將系統(tǒng)化的、規(guī)范的、可量化的方法應用于軟件的開發(fā)、運行和維護,即將工程化方法應用于軟件。20世紀50年代的類似硬件工程基于軟件體系結(jié)構(gòu)的應用部署然后,對設計過程、設計質(zhì)量、軟件設計原則進行了介紹溝通:在技術(shù)工作開始之前,和客戶的溝通、協(xié)作極其重要要求用戶提供確定的需求、明確的系統(tǒng)邊界。以標準C語言簇為典型代表的面向過程的軟件設計方法軟件按偏好依附生長,逐步演化。軟件體系結(jié)構(gòu)的描述,設計方法,以及設計經(jīng)驗的記錄和重用20世紀50年代的類似硬件工程80年代的軟件生產(chǎn)率和可擴展性性能:產(chǎn)品達到怎樣的性能?能在較為抽象的級別上描述整個軟件系統(tǒng)的結(jié)構(gòu),成為大規(guī)模、復雜軟件系統(tǒng)設計中必不可少的步驟。以標準C語言簇為典型代表的面向過程的軟件設計方法集成FR和NFR的方法,將FR和NFR視為同等重要的設計輸入

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論