版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第9章系統(tǒng)設(shè)計(jì)技術(shù)9.1引言
9.2嵌入式系統(tǒng)的開發(fā)過程和設(shè)計(jì)流程
9.3系統(tǒng)設(shè)計(jì)的形式化方法
9.4需求分析與規(guī)格說明
9.5系統(tǒng)分析與體系結(jié)構(gòu)設(shè)計(jì)9.6質(zhì)量保證
思考與練習(xí)題
9.1引言
多數(shù)真正的嵌入式系統(tǒng)的設(shè)計(jì)實(shí)際上是很復(fù)雜的,其功能要求非常詳細(xì),且必須遵循許多其他要求,如成本、性能、功耗、質(zhì)量、開發(fā)周期等。大多數(shù)嵌入式系統(tǒng)的復(fù)雜程度使得無(wú)法由個(gè)人設(shè)計(jì)和完成,而必須在一個(gè)開發(fā)團(tuán)隊(duì)中相互協(xié)作來完成。這樣就使得開發(fā)人員必須遵循一定的設(shè)計(jì)過程,明確分工,相互交流并能達(dá)成一致。
設(shè)計(jì)過程還會(huì)受到內(nèi)在和外在因素的影響。外在影響包括如消費(fèi)者的變化、需求的變化、產(chǎn)品的變化以及元器件的變化等。內(nèi)在影響包括如工作的改進(jìn)、人員的變動(dòng)等。這些都要求嵌入式系統(tǒng)開發(fā)人員必須掌握一定的系統(tǒng)設(shè)計(jì)方面的技術(shù)。因此,本章我們將研究設(shè)計(jì)方法學(xué)方面的一些知識(shí)。9.2節(jié)介紹嵌入式系統(tǒng)的設(shè)計(jì)流程,內(nèi)容包括嵌入式系統(tǒng)開發(fā)的一般過程和通常采用的一些設(shè)計(jì)流程。9.3節(jié)介紹系統(tǒng)設(shè)計(jì)的形式化方法,首先簡(jiǎn)要介紹UML的一些基礎(chǔ)知識(shí),?然后介紹如何利用UML進(jìn)行系統(tǒng)的結(jié)構(gòu)描述和行為描述。9.4節(jié)介紹系統(tǒng)定義過程中進(jìn)行需求分析和規(guī)格說明的方法。9.5節(jié)介紹在規(guī)格說明的基礎(chǔ)上如何進(jìn)行系統(tǒng)的體系結(jié)構(gòu)設(shè)計(jì)。9.6節(jié)討論關(guān)于質(zhì)量保證方面的一些問題。
9.2嵌入式系統(tǒng)的開發(fā)過程和設(shè)計(jì)流程
9.2.1開發(fā)過程
嵌入式系統(tǒng)是專用的計(jì)算機(jī)系統(tǒng),運(yùn)行在特定的目標(biāo)環(huán)境中,需要同時(shí)滿足功能和性能等方面的要求。在嵌入式系統(tǒng)的開發(fā)過程中,要考慮到實(shí)時(shí)性、可靠性、穩(wěn)定性、可維護(hù)性、可升級(jí)、可配置、易于操作、接口規(guī)范、抗干擾、物理尺寸、重量、功耗、成本、開發(fā)周期等多種因素。良好的設(shè)計(jì)方法在嵌入式系統(tǒng)的開發(fā)過程中是必不可少的。首先,好的方法有助于規(guī)劃一個(gè)清晰的工作進(jìn)度,避免遺漏重要的工作,例如性能的優(yōu)化和可靠性測(cè)試對(duì)于一個(gè)合格的嵌入式產(chǎn)品而言是不可或缺的。其次,采用有效的方法可以將整個(gè)復(fù)雜的開發(fā)過程分解成若干可以控制的步驟,通過一些先進(jìn)計(jì)算機(jī)輔助設(shè)計(jì)工具的輔助,我們可以按部就班、有條不紊地完成整個(gè)項(xiàng)目。最后,通過定義全面的設(shè)計(jì)過程,可以使整個(gè)開發(fā)團(tuán)隊(duì)的各個(gè)成員更好地理解自身的工作,方便成員之間相互交流與協(xié)作。在嵌入式系統(tǒng)的開發(fā)過程中,團(tuán)隊(duì)的概念至關(guān)重要。
圖9-1是嵌入式系統(tǒng)開發(fā)的一般過程。圖9-1嵌入式系統(tǒng)開發(fā)的一般過程
1.系統(tǒng)定義階段
系統(tǒng)定義階段需要確定系統(tǒng)開發(fā)最終實(shí)現(xiàn)的目標(biāo)、實(shí)現(xiàn)目標(biāo)的可行性、實(shí)現(xiàn)目標(biāo)應(yīng)采用的策略、估計(jì)完成系統(tǒng)開發(fā)所需的資源和成本、制定工程進(jìn)度安排計(jì)劃。這一階段的工作主要包括了系統(tǒng)定義、可行性分析、需求分析和規(guī)格說明這四方面的內(nèi)容。其中,需求分析是指從用戶那里搜集系統(tǒng)的非形式描述。以此為基礎(chǔ)經(jīng)過進(jìn)一步提煉得到系統(tǒng)的規(guī)格說明,并以此來設(shè)計(jì)系統(tǒng)的體系結(jié)構(gòu)和系統(tǒng)構(gòu)件。通常,用戶僅了解和關(guān)心實(shí)際使用問題和需要具備的功能,但是往往不能完整、準(zhǔn)確地表達(dá)這種需求,更不清楚怎樣利用計(jì)算機(jī)去實(shí)現(xiàn)所需的功能。為了對(duì)系統(tǒng)進(jìn)行準(zhǔn)確無(wú)誤地定義,就要求開發(fā)人員和用戶之間充分交流,開發(fā)人員需要詳細(xì)考察,最終得出經(jīng)用戶確認(rèn)的、明確的系統(tǒng)實(shí)現(xiàn)邏輯模型。
需求可分為功能部分和非功能部分。非功能性需求包括了性能、價(jià)格、物理尺寸和重量、功耗等方面的因素。
確認(rèn)需求最好的方法是建立模型。模型可以使用原始數(shù)據(jù)來模擬功能,并可以在計(jì)算機(jī)上運(yùn)行。模型還應(yīng)讓用戶了解系統(tǒng)是如何工作的,以及用戶如何與系統(tǒng)交互。通常,系統(tǒng)的非功能模型可以讓用戶了解系統(tǒng)的特性。對(duì)一個(gè)大型的系統(tǒng)進(jìn)行系統(tǒng)定義和需求分析是一件繁瑣的工作,可以從先獲取相對(duì)少量的、簡(jiǎn)單的信息入手。表9-1演示了一個(gè)簡(jiǎn)單的需求表格的樣本。表9-1需求表格樣本
2.總體設(shè)計(jì)階段
總體設(shè)計(jì)是設(shè)計(jì)的第一步,其目的是描述系統(tǒng)如何實(shí)現(xiàn)由系統(tǒng)定義規(guī)定的那些功能。它需要解決嵌入式系統(tǒng)的總體構(gòu)架,從功能實(shí)現(xiàn)上對(duì)軟硬件進(jìn)行劃分;在此基礎(chǔ)上,選定處理器和基本接口器件;根據(jù)系統(tǒng)的復(fù)雜程度確定是否使用操作系統(tǒng),以及選擇哪種操作系統(tǒng);此外,還需要選擇系統(tǒng)的開發(fā)環(huán)境。本階段應(yīng)提供系統(tǒng)總體設(shè)計(jì)報(bào)告,推薦一個(gè)基本的軟硬件配置方案,包括系統(tǒng)中各模塊間的接口關(guān)系。確立總體方案時(shí),要使用系統(tǒng)流程圖或其他工具,描述每一種可能的系統(tǒng)組成,估計(jì)每一種方案的成本和效益,最終使總體方案建立在充分權(quán)衡各種方案利弊的基礎(chǔ)上??傮w設(shè)計(jì)中對(duì)系統(tǒng)體系結(jié)構(gòu)的描述必須同時(shí)滿足功能上和非功能上的需求。一般地,功能約束在構(gòu)建系統(tǒng)總體框圖時(shí)集中考慮,而非功能約束在構(gòu)建硬件和軟件體系結(jié)構(gòu)時(shí)考慮。在構(gòu)建體系結(jié)構(gòu)時(shí)對(duì)非功能約束的估算部分來源于經(jīng)驗(yàn),而建造一個(gè)簡(jiǎn)化的模型往往有助于做出更精確的估算。
3.構(gòu)件設(shè)計(jì)階段
構(gòu)件通常包括硬件和軟件兩部分。構(gòu)件設(shè)計(jì)使得構(gòu)件、體系結(jié)構(gòu)和規(guī)格說明相一致。
一些構(gòu)件是標(biāo)準(zhǔn)的,可以直接使用,如CPU和存儲(chǔ)器。如果采用標(biāo)準(zhǔn)數(shù)據(jù)庫(kù),我們就可以用標(biāo)準(zhǔn)例程對(duì)該數(shù)據(jù)庫(kù)進(jìn)行訪問。這些數(shù)據(jù)庫(kù)中的數(shù)據(jù)不僅使用預(yù)定義的格式,而且被高度壓縮以節(jié)省存儲(chǔ)空間。在這些訪問函數(shù)中使用標(biāo)準(zhǔn)軟件不僅節(jié)約設(shè)計(jì)時(shí)間,而且有可能較快地實(shí)現(xiàn)像數(shù)據(jù)解壓縮這樣的專用函數(shù)。
4.系統(tǒng)集成與性能測(cè)試階段
系統(tǒng)集成與性能測(cè)試階段的工作包括將測(cè)試完成的軟件系統(tǒng)裝入制作好的硬件系統(tǒng)中,進(jìn)行系統(tǒng)綜合測(cè)試,驗(yàn)證系統(tǒng)功能是否能夠準(zhǔn)確無(wú)誤地實(shí)現(xiàn),各方面指標(biāo)是否符合設(shè)計(jì)要求,最后將正確無(wú)誤的軟件固化在目標(biāo)硬件中。在系統(tǒng)集成階段通常會(huì)發(fā)現(xiàn)錯(cuò)誤。按階段構(gòu)建系統(tǒng)并正確運(yùn)行選好的測(cè)試,可以更容易地找出這些錯(cuò)誤。如果每次只對(duì)一部分模塊排錯(cuò),則可以更容易地發(fā)現(xiàn)和識(shí)別較簡(jiǎn)單的錯(cuò)誤。也只有在早期修正這些簡(jiǎn)單的錯(cuò)誤,才能發(fā)現(xiàn)那些只有在系統(tǒng)高負(fù)荷時(shí)才能確定的、較復(fù)雜、較含混的錯(cuò)誤。因此,我們必須
確保在體系結(jié)構(gòu)和構(gòu)件設(shè)計(jì)階段盡可能容易地按階段組裝系統(tǒng)和相對(duì)獨(dú)立地測(cè)試系統(tǒng)功能。9.2.2設(shè)計(jì)流程
設(shè)計(jì)流程是指在系統(tǒng)設(shè)計(jì)期間應(yīng)遵遁的一系列步驟,其中的一些步驟可以由工具軟件,如編譯程序或者CAD系統(tǒng)完成;其他的步驟只可用手工完成。本節(jié)將講述設(shè)計(jì)流程的基本特性。
1.瀑布模型
圖9-2演示了瀑布模型,這是一個(gè)為軟件開發(fā)過程提出的模型。圖9-2軟件開發(fā)的瀑布模型
2.螺旋模型
圖9-3演示了螺旋模型。圖9-3軟件設(shè)計(jì)的螺旋模型
3.逐步求精
圖9-4演示了逐步求精的設(shè)計(jì)方法。圖9-4逐步求精開發(fā)模型
4.分層設(shè)計(jì)流程
許多復(fù)雜的嵌入式系統(tǒng)自身是由更多的小設(shè)計(jì)組成的。完整的系統(tǒng)可能需要有效的軟件構(gòu)件、專用的集成電路(ASIC)等,而且這些部件又可能由尚需設(shè)計(jì)的更小的部件組成。從最抽象的完整系統(tǒng)設(shè)計(jì)到為個(gè)別部件的設(shè)計(jì),設(shè)計(jì)流程隨著系統(tǒng)中的抽象層次而變化。流程的實(shí)現(xiàn)階段從規(guī)格說明到測(cè)試,本身是一個(gè)完整的流程。在一個(gè)大項(xiàng)目中,每一個(gè)流程可能會(huì)由單獨(dú)的人或小組來完成,每個(gè)組必須依靠其他組的結(jié)果。各個(gè)分組從上級(jí)小組獲得要求,同時(shí)上級(jí)小組依靠各個(gè)分組的設(shè)計(jì)質(zhì)量和測(cè)試性能。充分交流在這樣的大項(xiàng)目中非常重要。其設(shè)計(jì)流程如圖9-5所示。圖9-5嵌入式系統(tǒng)分層設(shè)計(jì)工作流程
5.并行工程
當(dāng)眾多的設(shè)計(jì)者一起設(shè)計(jì)一個(gè)大系統(tǒng)時(shí),非常容易偏離完整的設(shè)計(jì)流程,導(dǎo)致每個(gè)設(shè)計(jì)者對(duì)自己在設(shè)計(jì)流程中的角色產(chǎn)生狹隘的看法。并行工程試圖采用一種更寬的方法,使整個(gè)流程優(yōu)化。對(duì)于并行工程而言,縮減設(shè)計(jì)時(shí)間是一個(gè)重要的目標(biāo),它為設(shè)計(jì)流程的很多方面提供了捷徑,例如可靠性、性能、功耗等。特別需要指出的是,要從并行工程中獲得最多收益,通常需要消除設(shè)計(jì)和制造之間的隔閡。為了獲得最優(yōu)結(jié)果,需要注意以下幾點(diǎn):
(1)交叉功能組應(yīng)包括來自不同學(xué)科的成員,包括制造業(yè)、硬件/軟件設(shè)計(jì)和市場(chǎng)營(yíng)銷等。
(2)并行產(chǎn)品實(shí)現(xiàn)過程的活動(dòng)是并行工程的中心。同時(shí)做幾件事,例如同時(shí)設(shè)計(jì)幾個(gè)不同的子系統(tǒng),減少設(shè)計(jì)時(shí)間是關(guān)鍵性的。
(3)遞增的信息共享和使用將有助于減少并行產(chǎn)品的實(shí)現(xiàn)導(dǎo)致意外的可能性。一旦新的信息可用,它就被共享并且集成到設(shè)計(jì)中。交叉功能組對(duì)于及時(shí)和高效的信息共享是很重要的。
(4)綜合的工程管理保證有人對(duì)整個(gè)工程負(fù)責(zé),而且這種職責(zé)決不能在工程的某一方面一旦完成就放棄。
(5)提供商盡早地和不間斷地參與有助于充分利用提供商的能力。
(6)客戶盡早地和不間斷地關(guān)注有助于確保產(chǎn)品能最好地滿足其需要。
6.其他
軟件工程的方法直接影響到設(shè)計(jì)流程。目前,軟件開發(fā)過程結(jié)合了面向?qū)ο蟮姆椒ê偷谒拇ぞ?。該方法針?duì)嵌入式系統(tǒng)還在不斷完善。
在基于面向?qū)ο蟮拈_發(fā)過程中,開發(fā)組成員可以遵循并行過程的方法,并發(fā)地設(shè)計(jì)組件。
第四代軟件工具能夠根據(jù)較高級(jí)的設(shè)計(jì)規(guī)范生成代碼,例如自動(dòng)報(bào)表生成、自動(dòng)高級(jí)圖形生成、創(chuàng)建數(shù)據(jù)庫(kù)查詢以及在創(chuàng)建網(wǎng)站時(shí)自動(dòng)生成HTML代碼等。
總之,不斷改進(jìn)的模型,其過程生命周期是迭代的,直到進(jìn)行驗(yàn)證、確認(rèn)和交付或安裝到系統(tǒng)的ROM中為止。 9.3系統(tǒng)設(shè)計(jì)的形式化方法
9.3.1UML簡(jiǎn)介
在上一節(jié)我們將嵌入式系統(tǒng)的開發(fā)過程劃分為四個(gè)階段,在不同的設(shè)計(jì)階段將按照不同層次的抽象完成許多不同的設(shè)計(jì)任務(wù)。在實(shí)際工作中,隨著設(shè)計(jì)過程的延伸,很可能會(huì)出現(xiàn)這樣的情況,即每到一個(gè)新的抽象層次可能會(huì)對(duì)系統(tǒng)重新考慮設(shè)計(jì)。這種情況的發(fā)生主要是由于我們沒有在設(shè)計(jì)工作的起始就為系統(tǒng)建立一個(gè)合適的模型而引起的。我們希望的設(shè)計(jì)過程是一種逐步求精的過程,即隨著設(shè)計(jì)過程的延伸逐漸在設(shè)計(jì)中加入新的細(xì)節(jié)而不是徹底推翻原先的設(shè)計(jì)。因此,系統(tǒng)設(shè)計(jì)中就需要用到一種建模語(yǔ)言,以幫助我們不會(huì)偏離設(shè)計(jì)的主線。統(tǒng)一建模語(yǔ)言UML是一種面向?qū)ο蟮目梢暬Z(yǔ)言,它可以用圖表的方式概念化這些不同的設(shè)計(jì)任務(wù),顯然這對(duì)于設(shè)計(jì)過程中的多層抽象非常有用。
面向?qū)ο蟮囊?guī)格說明可以看成互補(bǔ)的兩個(gè)方面:
(1)面向?qū)ο蟮囊?guī)格說明允許用精確地模擬真實(shí)世界的對(duì)象和它們之間的交互方式來描述系統(tǒng)。
(2)面向?qū)ο蟮囊?guī)格說明提供一個(gè)基本的原語(yǔ)集,可以用特殊屬性來描述系統(tǒng),而不管系統(tǒng)構(gòu)件和真實(shí)世界對(duì)象的關(guān)系如何。
1.UML基本元素
UML最基本的元素是對(duì)象和類,對(duì)象是類的實(shí)例。另外,對(duì)象和類之間可能存在著各種不同的關(guān)系。類具有屬性和行為?;钴S類是能實(shí)現(xiàn)獨(dú)立控制線程的類。對(duì)象可能有被賦予特定的值的屬性。匿名對(duì)象屬于某一個(gè)類但沒有標(biāo)識(shí)名。程序包是系統(tǒng)的組織單元,可能包括類定義、對(duì)象等。狀態(tài)在狀態(tài)圖中描述行為。物理處理器是硬件部件。構(gòu)件是實(shí)現(xiàn)一組接口的系統(tǒng)的物理組成部分。
我們常常發(fā)現(xiàn),在一個(gè)對(duì)象或類中會(huì)多次用到一些元素的特定組合。我們可以對(duì)這些組合命名,這樣的一個(gè)定義在UML中稱為模板(stereotype)。
表9-2列出了UML的基本元素。圖9-6給出了這些基本元素的表示。表9-2UML基本元素圖9-6UML基本元素
2.UML圖
UML的基本元素可以通過多種方式組合到一起。使用圖形組可以完成以下建模任務(wù):軟件可視化、數(shù)據(jù)設(shè)計(jì)、算法設(shè)計(jì)、軟件設(shè)計(jì)、軟件說明書、軟件開發(fā)過程、工業(yè)過程等。表9-3列出了幾種基本的UML圖。圖9-7給出了這些圖的示例。表9-3UML圖圖9-7UML圖示例9.3.2結(jié)構(gòu)描述
結(jié)構(gòu)描述用于定義系統(tǒng)的基本構(gòu)件。面向?qū)ο笤O(shè)計(jì)的首要構(gòu)件自然是對(duì)象。一個(gè)對(duì)象包括定義其內(nèi)部狀態(tài)的屬性集。當(dāng)使用程序設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)時(shí),這些屬性通常是一種數(shù)據(jù)結(jié)構(gòu)中的變量或常量。有時(shí),我們會(huì)在屬性名后加上類型聲明,但不總是對(duì)屬性指定類型。圖9-8說明了一個(gè)用UML符號(hào)表示的描述顯示器(如CRT屏幕)的對(duì)象。折角頁(yè)狀圖標(biāo)中的文字是注釋,它不對(duì)應(yīng)于系統(tǒng)中的對(duì)象。在這里,屬性是保存顯示器內(nèi)容的像素?cái)?shù)組。對(duì)象有兩個(gè)特征:它有唯一的標(biāo)識(shí)名以及它是一個(gè)類的成員。圖9-8UML表示法中的對(duì)象
1.類
類是類型定義的一種形式——從同一個(gè)類導(dǎo)出的所有對(duì)象盡管其屬性可能有不同的值,但它們都有相同的性質(zhì)。類定義了對(duì)象可能有的屬性,也定義了對(duì)象與外界交互的操作。?使用編程語(yǔ)言,操作將變成用來控制對(duì)象的一小段代碼。圖9-9所示是Display類的UML描述。Display類定義了對(duì)象中的pixels屬性。當(dāng)對(duì)象將一個(gè)類實(shí)例化時(shí),對(duì)象就有了自己的存儲(chǔ)空間,以便同一個(gè)類的不同對(duì)象有自己的屬性值。其他的類能檢查和修改類的屬性。圖9-9UML表示法中的類
2.選擇合適的界面
顯然,選擇界面是面向?qū)ο笤O(shè)計(jì)中非常重要的決策。正確的界面必須提供訪問對(duì)象狀態(tài)的方法(因?yàn)閷傩圆荒苤苯釉L問)和更新狀態(tài)的方法。對(duì)象的界面必須通用,以充分利用它的性能。然而,過分通用會(huì)使對(duì)象龐大而緩慢。大而復(fù)雜的界面同樣會(huì)使定義類的工作對(duì)于設(shè)計(jì)者來說難以理解和使用。
對(duì)象和類之間存在若干種類型的關(guān)系:
關(guān)聯(lián)——發(fā)生在彼此通信但沒有從屬關(guān)系的對(duì)象間。
聚集——描述由較小的對(duì)象組成的復(fù)雜對(duì)象。
組合——是一種聚集類型,其中所有者不允許訪問構(gòu)件對(duì)象。
泛化——允許我們通過其他類定義類。
3.類和對(duì)象的軟件實(shí)現(xiàn)
因?yàn)閁ML用于設(shè)計(jì)的很多階段,所以它不是一種程序設(shè)計(jì)語(yǔ)言。因此,它的概念有時(shí)看起來很抽象。它有助于在程序設(shè)計(jì)語(yǔ)言中使用類和對(duì)象前理解其抽象概念。首先,我
們用直接支持面向?qū)ο蠹夹g(shù)的C++語(yǔ)言實(shí)現(xiàn)Display類和d1對(duì)象。下面是Display類的定義:
4.派生類
像大多數(shù)面向?qū)ο笳Z(yǔ)言一樣,UML允許根據(jù)其他的類來定義一個(gè)類。如圖9-10所示的例子中,派生了兩種特殊的顯示器類型:一個(gè)是BW_display,描述黑白顯示器,不需要增加新的屬性和操作,但可以規(guī)定其以每像素一位的方式工作;另一個(gè)是Color_map_display,使用稱為顏色映射表的圖形設(shè)備,允許用戶即使在每像素只有很少幾位時(shí),也可以從大量現(xiàn)有顏色中選擇。這個(gè)類定義了color_map屬性,該屬性決定如何把像素值映射到顯示顏色。一個(gè)派生類從它的基類繼承所有的屬性和操作。圖9-10UML中派生類作為泛化的一種形式
5.泛化和繼承
UML認(rèn)為繼承是泛化的一種形式。泛化關(guān)系在UML圖中用空心箭頭顯示。BW_display和Color_map_display都是Display的特定版本,因此Display泛化了它的兩個(gè)版本。UML允許多重繼承,即一個(gè)類繼承不止一個(gè)基類(大部分面向?qū)ο缶幊陶Z(yǔ)言都支持多重繼承)。圖9-11所示是一個(gè)多重繼承的例子,為了簡(jiǎn)便起見,我們忽略類的屬性和操作的細(xì)節(jié)。在此,將Display類和處理聲音的Speaker類合并建立了Multimedia_display類,該類繼承兩個(gè)基類Display和Speaker的所有屬性和操作。多重繼承會(huì)導(dǎo)致屬性集的大小迅速增加和操作的迅速增多,因此須小心使用。圖9-11UML中的多重繼承一個(gè)鏈接描述對(duì)象間的關(guān)系。關(guān)聯(lián)與鏈接的關(guān)系就像類與對(duì)象的關(guān)系,需要鏈接是因?yàn)閷?duì)象通常不是孤立的,關(guān)聯(lián)使我們獲得這些鏈接的類型信息。圖9-12顯示了鏈接和一個(gè)關(guān)聯(lián)的例子。圖9-12鏈接和關(guān)聯(lián)9.3.3行為描述
行為描述用來規(guī)定系統(tǒng)的行為和結(jié)構(gòu)。規(guī)定操作的行為采用的一種方法是狀態(tài)機(jī)。圖9-13表示UML狀態(tài),兩種狀態(tài)間的轉(zhuǎn)換用箭頭表示。圖9-13UML中的狀態(tài)和轉(zhuǎn)換這些狀態(tài)機(jī)不依賴硬件時(shí)鐘的操作,一個(gè)狀態(tài)向另一個(gè)狀態(tài)的轉(zhuǎn)換由事件觸發(fā)。事件是某一種動(dòng)作,可能來自系統(tǒng)外部,如用戶按了一個(gè)按鈕;也可能來自系統(tǒng)內(nèi)部,如一個(gè)例程完成計(jì)算并將結(jié)果傳送到另一個(gè)例程。下面將集中討論圖9-14中顯示的用UML定義的三種類型的事件。圖9-14UML中的信號(hào)、調(diào)用和定時(shí)器事件考慮一個(gè)簡(jiǎn)單的狀態(tài)機(jī)規(guī)則來理解UML狀態(tài)機(jī)的語(yǔ)義。圖9-15展示了顯示操作的狀態(tài)機(jī)。開始和結(jié)束狀態(tài)是特殊的狀態(tài),它有助于組織狀態(tài)機(jī)的流程。狀態(tài)機(jī)中的狀態(tài)代表了不同的概念性的操作。某些情況下,根據(jù)輸入或狀態(tài)中的計(jì)算結(jié)果,我們采用狀態(tài)條件轉(zhuǎn)移,其他情況下都無(wú)條件轉(zhuǎn)移到下一個(gè)狀態(tài)。條件轉(zhuǎn)移和無(wú)條件轉(zhuǎn)移都使用調(diào)用事件。將復(fù)雜操作分解成幾個(gè)狀態(tài)有助于證明需求的步驟,類似于使用子例程來構(gòu)建代碼。圖9-15UML中的狀態(tài)機(jī)規(guī)格說明有時(shí)給出隨時(shí)間的操作順序是很有用的,特別是在涉及許多對(duì)象時(shí)。在這種情況下,可以建立一個(gè)順序圖,就像圖9-16顯示的鼠標(biāo)單擊事件一樣。順序圖有時(shí)與硬件時(shí)序圖很相似(雖然時(shí)間流在順序圖中是垂直的而在時(shí)序圖中是水平的)。設(shè)計(jì)順序圖來顯示特定情景或事件的選擇,這不便于顯示互斥可能性的多寡。圖9-16UML中的順序圖 9.4需求分析與規(guī)格說明
9.4.1需求分析
創(chuàng)建一個(gè)需求文檔的目的是使用戶和設(shè)計(jì)者可以有效地交流。設(shè)計(jì)者應(yīng)該知道用戶期望他們?cè)O(shè)計(jì)什么,而用戶應(yīng)該明白他們將得到什么。
需求有兩種類型:功能性需求和非功能性需求。一個(gè)功能性需求說明了這個(gè)系統(tǒng)必須做什么,例如FFT運(yùn)算。一個(gè)非功能性需求可以是其他屬性中的一些性質(zhì),包括物理尺寸、價(jià)格、功耗、開發(fā)周期、可靠性等。一套好的需求分析應(yīng)該滿足以下測(cè)試要求:
(1)正確性——需求不能錯(cuò)誤地描述用戶的要求。正確性還包括應(yīng)該避免超出需要的需求,需求不應(yīng)該加上那些不必要的條件。
(2)無(wú)二義性——需求文檔應(yīng)該清晰,并且只用一種明確的語(yǔ)言解釋。
(3)完整性——所有的需求都應(yīng)該被包括。
(4)可檢驗(yàn)性——應(yīng)該有一個(gè)有效的方法來確保最后的產(chǎn)品滿足每一種需求。例如,在不符合“吸引力”定義的情況下,一個(gè)想使系統(tǒng)組裝吸引人的需求是很難驗(yàn)證的。
(5)一致性——一個(gè)需求不能和另一個(gè)需求相矛盾。
(6)可修改性——需求文檔應(yīng)結(jié)構(gòu)化,以便在不影響一致性、可檢驗(yàn)性等情況下可以被修改以適應(yīng)變化的需求。
(7)可追蹤性——每個(gè)需求應(yīng)滿足以下可追蹤性:
——可以追蹤需求知道每個(gè)需求存在的價(jià)值。
——可以追蹤需求之前創(chuàng)建的文檔來理解它們?nèi)绾闻c最終的需求相關(guān)聯(lián)。
——可以向前追蹤來理解每個(gè)需求在實(shí)現(xiàn)中如何被滿足。
——可以向后追蹤以便知道哪一個(gè)需求是用戶滿意的。9.4.2規(guī)格說明
1.SDL
使用狀態(tài)機(jī)可以確定UML中的控制。SDL(SystemDescriptiveLanguage,系統(tǒng)描述語(yǔ)言)是一種廣泛使用狀態(tài)機(jī)的規(guī)格說明語(yǔ)言,這種語(yǔ)言是通信產(chǎn)業(yè)為通信協(xié)議、電話系統(tǒng)等開發(fā)的。如圖9-17所示,SDL規(guī)格說明包括狀態(tài)、操作以及狀態(tài)間有條件的和非條件的轉(zhuǎn)換。SDL是一個(gè)面向事件的狀態(tài)機(jī)模型,狀態(tài)間的轉(zhuǎn)換由內(nèi)部或外部事件引發(fā)。圖9-17SDL規(guī)格說明語(yǔ)言
2.狀態(tài)圖表
狀態(tài)圖表是一種常用的基于狀態(tài)的規(guī)格說明的方法,它基于一種事件驅(qū)動(dòng)模型建立。狀態(tài)圖表允許狀態(tài)被組合在一起表示普通的功能。兩種基本的組合是OR(或)和AND(與)。圖9-18通過用OR狀態(tài)描述的狀態(tài)圖表與傳統(tǒng)的狀態(tài)轉(zhuǎn)換圖的比較演示了一個(gè)OR狀態(tài)的例子。圖9-18狀態(tài)圖表中的OR狀態(tài)圖9-19通過與傳統(tǒng)狀態(tài)機(jī)模型的比較演示了用狀態(tài)圖表符號(hào)表示的AND狀態(tài)。傳統(tǒng)的模型中,狀態(tài)間有大量的轉(zhuǎn)換,并且一組狀態(tài)中只有一個(gè)入口點(diǎn)和一個(gè)出口點(diǎn)。圖9-19狀態(tài)圖表中的AND狀態(tài)
3.AND/OR表
圖9-20演示了一個(gè)AND/OR表的例子及其所描述的布爾表達(dá)式。AND/OR表中的每一行用表達(dá)式中的基本變量標(biāo)記。每一列相當(dāng)于表達(dá)式中的一個(gè)AND項(xiàng)。例如,AND項(xiàng)(條件2與非條件3)在第二列中用使條件2為真、條件3為假、條件1忽略來表示,這就相當(dāng)于AND條件要為真時(shí),必須有條件2為真且條件3為假。我們用這種表來估計(jì)一個(gè)給定的條件在系統(tǒng)中是否有效。變量的當(dāng)前狀態(tài)與表中的元素相比較,如果所有當(dāng)前變量的值與該列中給定的要求的值相等,則該列的值就為真。當(dāng)我們期望一個(gè)AND/OR表達(dá)時(shí),若列中任一值為真,則這個(gè)表為真。這個(gè)符號(hào)表和狀態(tài)圖表最大的不同在于“否”的情況在表中明確地表示了出來。實(shí)踐證明,這樣的表示對(duì)在一個(gè)規(guī)格說明表中尋找問題有很大幫助。圖9-20AND/OR表
9.5系統(tǒng)分析與體系結(jié)構(gòu)設(shè)計(jì)
把一個(gè)規(guī)格說明變成一種體系結(jié)構(gòu)設(shè)計(jì),這對(duì)于理解一個(gè)復(fù)雜系統(tǒng)的整體結(jié)構(gòu)是一種非常有用的方法。
CRC卡方法是幫助分析一個(gè)系統(tǒng)結(jié)構(gòu)的一種普遍、實(shí)用的方法。由于它支持封裝數(shù)據(jù)和功能,因此特別適用于面向?qū)ο蟮脑O(shè)計(jì)。
縮寫CRC代表此方法所要確認(rèn)的以下三個(gè)主要項(xiàng)目:
類(Class)——定義了數(shù)據(jù)和功能的邏輯分組。
責(zé)任(Responsibility)——描述類所要做的工作。
協(xié)作者(Collaborator)——與給定類相關(guān)的其他類。
CRC卡的命名源自人們習(xí)慣于將此方法寫在標(biāo)簽上,在其空白處填寫類的名字、責(zé)任、協(xié)作者以及其他的相關(guān)信息。CRC卡方法的實(shí)質(zhì)是要人們填寫這些卡片,討論并更新卡片內(nèi)容,直到獲得自己滿意的結(jié)果。圖9-21所示為CRC卡的示意圖。圖9-21CRC卡示意圖用CRC卡分析系統(tǒng)時(shí),應(yīng)該按下列步驟進(jìn)行:
(1)設(shè)計(jì)類的初始清單。
(2)書寫責(zé)任和協(xié)作者初始清單。
(3)創(chuàng)建一些使用腳本。
(4)預(yù)演腳本。
(5)求精類、責(zé)任、協(xié)作者。
(6)添加類之間的關(guān)系。 9.6質(zhì)量保證
產(chǎn)品或服務(wù)的質(zhì)量可以用滿足其功能的程度來判斷。造成產(chǎn)品質(zhì)量低下的原因有很多,如粗制濫造、元件設(shè)計(jì)錯(cuò)誤、體系結(jié)構(gòu)構(gòu)思不合理、沒有正確理解產(chǎn)品的需求,等等。質(zhì)量必須作為設(shè)計(jì)的一部分。質(zhì)量保證(QA)過程對(duì)提交一個(gè)令人滿意的系統(tǒng)來說是至關(guān)重要的,而對(duì)質(zhì)量的追求貫穿于整個(gè)設(shè)計(jì)流程中。本節(jié)我們將集中討論旨在改進(jìn)最終系統(tǒng)的質(zhì)量的方法學(xué)部分的內(nèi)容。國(guó)際標(biāo)準(zhǔn)化組織(ISO)制定了ISO9000系列質(zhì)量標(biāo)準(zhǔn)。ISO9000在工業(yè)領(lǐng)域中的應(yīng)用范圍十分廣泛,包括但不限于嵌入式系統(tǒng)的硬件和軟件。針對(duì)某一特定產(chǎn)品的質(zhì)量標(biāo)準(zhǔn)可以制定適應(yīng)該產(chǎn)品的特殊的、具體的規(guī)范,但是涉及范圍廣泛的標(biāo)準(zhǔn)不可能對(duì)工業(yè)中的每一領(lǐng)域都面面俱到。所以,ISO9000重在規(guī)范產(chǎn)品制造和服務(wù)的過程。滿足ISO9000的生產(chǎn)過程將對(duì)整個(gè)組織以及設(shè)計(jì)和制造過程中的每一步產(chǎn)生影響。可用來驗(yàn)證系統(tǒng)設(shè)計(jì)并確保質(zhì)量的技術(shù)有許多種,包括手工的和基于工具的?;诠ぞ叩尿?yàn)證有助于妥善地管理在復(fù)雜設(shè)計(jì)中產(chǎn)生的大量信息。驗(yàn)證系統(tǒng)設(shè)計(jì)的技術(shù)必須適合整個(gè)軟件開發(fā)過程,這一過程的具體內(nèi)容將取決于多個(gè)因素,包括正在設(shè)計(jì)產(chǎn)品的類型、要生產(chǎn)的單元的數(shù)量和設(shè)計(jì)允許的時(shí)間、公司中業(yè)已存在的規(guī)則慣例以及其他一些因素。
檢測(cè)組織軟件開發(fā)過程質(zhì)量的一個(gè)眾所周知的方法是卡內(nèi)基梅隆大學(xué)軟件工程研究所提出的能力成熟度評(píng)價(jià)模型(CMM)。CMM提供了一個(gè)判斷組織成熟度的模型,該模型將組織的成熟度定義為5個(gè)等級(jí)。
(1)初始級(jí)(Initial):開發(fā)過程的組織工作雜亂無(wú)章,缺乏定義良好的軟件開發(fā)過程。項(xiàng)目的成功完全依賴于個(gè)人的努力,與組織自身無(wú)關(guān)。
(2)可重復(fù)級(jí)(Repeatable):提供了跟蹤機(jī)制,使管理人員可以了解軟件開發(fā)的費(fèi)用、調(diào)度、正在開發(fā)系統(tǒng)與目標(biāo)相符的程度等。
(3)定義級(jí)(Defined):管理和開發(fā)過程均已實(shí)現(xiàn)文檔化和標(biāo)準(zhǔn)化。所有項(xiàng)目均使用文檔化的并且核準(zhǔn)了的標(biāo)準(zhǔn)方法。
(4)管理級(jí)(Managed):可對(duì)開發(fā)過程和產(chǎn)品質(zhì)量進(jìn)行詳細(xì)的測(cè)量。
(5)優(yōu)化級(jí)(Optimizing):CMM的最高級(jí)別,利用詳細(xì)的測(cè)量反饋資料來不斷地完善、提高組織的軟件開發(fā)過程。
1.需求驗(yàn)證
驗(yàn)證需求可以采取許多措施來保證客戶和起草需求的人相互交流。原型是一個(gè)與最終用戶溝通的非常有用的工具。與只是用廣泛的技術(shù)術(shù)語(yǔ)向用戶描述系統(tǒng)不同的是,原型至少可使客戶聽到、看到、感受到系統(tǒng)的一些重要方面。當(dāng)然,原型不可能完成系統(tǒng)的所有功能,因?yàn)樵O(shè)計(jì)工作還沒有做。但是,特殊的用戶界面可用于建立原型和用戶測(cè)試??梢杂妙A(yù)先設(shè)定的或隨機(jī)的數(shù)據(jù)來仿真系統(tǒng)的內(nèi)部操作。原型有助于最終用戶判斷許多功能上的和非功能上的需求,如數(shù)據(jù)顯示、操作速度、大小、重量,等等。
2.規(guī)格說明驗(yàn)證
用于驗(yàn)證需求的工具和方法如建立原型、規(guī)格說明語(yǔ)言和參照已存系統(tǒng),對(duì)驗(yàn)證規(guī)格說明的正確性同樣有用。審計(jì)工具可用于檢驗(yàn)一致性、完整性等。使用腳本可幫助設(shè)計(jì)者完成規(guī)格說明的細(xì)節(jié)工作,并確保其完整性和正確性。在某種情況下,形式化技術(shù)(即使用數(shù)學(xué)證明的設(shè)計(jì)技術(shù),證明可手工完成或自動(dòng)完成)可能也很有效。某些復(fù)雜系統(tǒng)說明起來可能很簡(jiǎn)單,但整個(gè)時(shí)間序
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 同意簽訂合同的紀(jì)要
- 《夏商周秦漢大事》課件
- 2025年海南貨運(yùn)從業(yè)資格證恢復(fù)考試題
- 2025年濱州貨運(yùn)資格證考試真題
- 2025年山東貨運(yùn)上崗證模擬考試0題
- 2025年江西貨運(yùn)從業(yè)資證孝試模似題庫(kù)
- 2025年達(dá)州道路運(yùn)輸從業(yè)資格證考試模擬試題
- 治安院務(wù)公開管理辦法
- 智能家居大白施工合同
- 航空航天木地板施工合同
- 小型建筑公司組織架構(gòu)
- 氯酸鈉的生產(chǎn)工藝簡(jiǎn)介
- Camtasia_Studio使用教程
- 業(yè)務(wù)員手冊(cè)內(nèi)容
- 計(jì)劃分配率和實(shí)際分配率_CN
- 《紅燈停綠燈行》ppt課件
- 小學(xué)語(yǔ)文作文技巧六年級(jí)寫人文章寫作指導(dǎo)(課堂PPT)
- 《APQP培訓(xùn)資料》
- 家具銷售合同,家居訂購(gòu)訂貨協(xié)議A4標(biāo)準(zhǔn)版(精編版)
- 食品加工與保藏課件
- 有功、無(wú)功控制系統(tǒng)(AGCAVC)技術(shù)規(guī)范書
評(píng)論
0/150
提交評(píng)論