版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《軟件工程》備考知識點(diǎn)匯總
第一章緒論
1.軟件工程這一術(shù)語首次出現(xiàn)在1968年的NATO會議上.
2.軟件危機(jī):隨著計(jì)算機(jī)的廣泛應(yīng)用,軟件生產(chǎn)率、軟件質(zhì)量遠(yuǎn)遠(yuǎn)滿足不了社
會發(fā)展的需求,成為社會、經(jīng)濟(jì)發(fā)展的制約因素,人們通常把這--現(xiàn)象稱為“軟件
危機(jī)”.
3.軟件工程:軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)理論和技術(shù)以及工程管理原則和方
法,按預(yù)算和進(jìn)度實(shí)現(xiàn)滿足用戶要求的軟件產(chǎn)品的工程,或以此為研究對象的學(xué)
科.
4.軟件工程概念的提出,其目的是倡導(dǎo)以工程的原理、原則和方法進(jìn)行軟件
開發(fā),以期解決出現(xiàn)的“軟件危機(jī)”.
5.20世紀(jì)60年代末到80年代初,提出了瀑布模型,試圖為開發(fā)人員提供有
關(guān)活動組織方面的指導(dǎo);開發(fā)了諸多過程式語言C例如,Pascal語言、C語
言、Ada語言等)和開發(fā)方法(例如,Jackson方法、結(jié)構(gòu)化方法等),
試圖為開發(fā)人員提供好的需求分析和設(shè)計(jì)手段,并開發(fā)了一些支持工具,如
調(diào)試工具、測試工具等.在這一時(shí)期,開始出現(xiàn)各種管理方法(例如,費(fèi)用估算、文
檔復(fù)審〉,開發(fā)了一些相應(yīng)支持工具(例如,計(jì)劃工具、配置管理工具)等.
6.20世紀(jì)80年代以來,這一時(shí)期的主要成果是提出了《軟件生存周期過
程》等一系列軟件工程標(biāo)準(zhǔn);大力開展了計(jì)算機(jī)輔助軟件工程(CASE)的研究與實(shí)
踐(例如,我國在“七五”、“八五”、“九五”期間,均把這一研究作為國家
重點(diǎn)科技攻關(guān)項(xiàng)目〉,各類CASE產(chǎn)品相繼問世.與此同時(shí),在工程技術(shù)方
面,出現(xiàn)了最引人注目的面向?qū)ο笳Z言,例如Smalltalk、c++、Eiffel等;提出
了面向?qū)ο筌浖_發(fā)方法;在工程管理方面,開展了一系列過程改進(jìn)項(xiàng)目,
其目標(biāo)是在軟件產(chǎn)業(yè)的實(shí)踐中,建立一種量化的評估程序,判定軟件組織和
過程的成熟度,提高組織的過程能力.
7.計(jì)算機(jī)軟件一般是指計(jì)算機(jī)系統(tǒng)中的程序及其文檔.
8.軟件開發(fā)的本質(zhì)概括為:不同抽象層術(shù)語之間的“映射",以及不同抽象層
處理邏輯之間的“映射”.
9.模型是在特定意圖下所確定的角度和抽象層次上對物理系統(tǒng)的描述,通常
包含對該系統(tǒng)邊界的描述、對系統(tǒng)內(nèi)各模型元素以及它們之間關(guān)系的語義描述.
10.軟件系統(tǒng)模型大體上可分為兩類:概念模型和軟件模型
11.實(shí)施軟件開發(fā)的基本途徑:實(shí)施軟件開發(fā)的基本途徑是系統(tǒng)建模.所謂系
統(tǒng)建模,是指運(yùn)用所掌握的知識,通過抽象,給出該系統(tǒng)的一個(gè)結(jié)構(gòu)——系統(tǒng)模型.
12.軟件開發(fā)所涉及的兩大類技術(shù):一是求解軟件的開發(fā)邏輯(過程方向),二
是求解軟件的開發(fā)手段(過程途徑).
第二章軟件需求與需求規(guī)約
1.一個(gè)需求是有關(guān)一個(gè)“要予構(gòu)造”的陳述,描述了待開發(fā)產(chǎn)品/系統(tǒng)(或
項(xiàng))功能上的能力、性能參數(shù)或其他性質(zhì).
2.對于單一一個(gè)需求,必須具有如下5個(gè)基本性質(zhì):
?必要的(Necessary),該需求是用戶所要求的.
,元歧義的(Unambiguous),該需求只能用一種方式解釋.
?可測的(Testable),該需求是可進(jìn)行測試的.
?可跟蹤的(Traceable),該需求可從一個(gè)開發(fā)階段跟蹤到另一個(gè)階
段.
,可測量的(Measurable),該需求是可測量的.
3.需求分為兩大類:一類是功能需求,一類是非功能需求,而非功能需求又可
分為性能需求、外部接口需求、設(shè)計(jì)約束和質(zhì)量屬性需求.
4.功能需求規(guī)約了系統(tǒng)或系統(tǒng)構(gòu)件必須執(zhí)行的功能.
5.接口需求可分為以下主要7類:
1)用戶接口(UserInterfaces):描述軟件系統(tǒng)和用戶之間交互的邏
輯特性,即這類接口需求應(yīng)規(guī)約對給定用戶所顯示的數(shù)據(jù),要從用戶那里得到的數(shù)
據(jù)以及用戶如何控制該用戶接口.
2)硬件接口(HardwareInterfaces):描述軟件系統(tǒng)與硬件設(shè)備之間
的交互,以實(shí)現(xiàn)對硬件設(shè)備的響應(yīng)和控制,其中應(yīng)描述所要求的支持和協(xié)議類型.
3)軟件接口(SoftwareInterlaces):描述與其他軟件產(chǎn)品(例如,數(shù)
據(jù)管理系統(tǒng)、操作系統(tǒng)或數(shù)學(xué)軟件包)進(jìn)行的交互.
4)通信接口(CommunicationInterfaces):描述待開發(fā)系統(tǒng)與通信設(shè)
施(例如,局域網(wǎng))之間的交互.如果通信需求包含了系統(tǒng)必須使用的網(wǎng)絡(luò)類型
(TCP/IP、MicrosoftWindows
NT,Novell),那么有關(guān)類型的信息就應(yīng)包含在該需求描述中.
5)內(nèi)存約束:描述易失性存儲和永久性存儲的特性和限制,特別應(yīng)描述
它們是否被用于與一個(gè)系統(tǒng)中其他處理的通信.
6)運(yùn)行(Operation):描述用戶如何使系統(tǒng)進(jìn)入正常和異常的運(yùn)行,以
及在系統(tǒng)正常和異常運(yùn)行下如何與系統(tǒng)進(jìn)行交互,其中應(yīng)描述在用戶組織中的運(yùn)
行模式,包括交互模式和非交互模式;
描述每一模式的數(shù)據(jù)處理支持功能;描述有關(guān)系統(tǒng)備份、恢復(fù)和升
級功能方面的需求.
7)地點(diǎn)需求(SiteAdaptationRequiremen創(chuàng):描述系統(tǒng)安裝以及如
何調(diào)整一個(gè)地點(diǎn),以適應(yīng)新的物理環(huán)境.
6.設(shè)計(jì)約束是一種需求,它限制了軟件系統(tǒng)或軟件系統(tǒng)構(gòu)件的設(shè)計(jì)方案的范
圍.
7.質(zhì)量屬性(QualityAttribute)規(guī)約了軟件產(chǎn)品所具有的一個(gè)性質(zhì)(包括
功能和其他需求)必須達(dá)到其質(zhì)量方面一個(gè)所期望的水平.
8.初始發(fā)現(xiàn)需求的常用技術(shù)包括以下幾個(gè).
(1)自悟(Introspection).需求人員把自己作為系統(tǒng)的最終用戶,審
視該系統(tǒng)并提出問題:“如果是我使用這一系統(tǒng),則我需要……
適用情況:需求人員不能直接與用戶進(jìn)行交流,自悟就可能是一種
切實(shí)可行的、比較有吸引力的方法.
成功條件:需求人員必須具有比最終用戶還要多的應(yīng)用領(lǐng)域和過程
方面的知識,并具有豐富的想象力.
存在的風(fēng)險(xiǎn):無法驗(yàn)證發(fā)現(xiàn)的需求是否滿足用戶的要求,無法驗(yàn)證
發(fā)現(xiàn)的需求是不是正確的.
(2)交談(IndividualInterview).為了確定系統(tǒng)應(yīng)該提供的功能,
需求人員通過提出問題/用戶回答這一方式,直接詢問用戶需要的是一個(gè)什么樣
的系統(tǒng).
適用情況:客戶支持需求人員與最終用戶進(jìn)行有關(guān)系統(tǒng)需求的交
流.
成功條件:依賴于
?需求人員是否具有“正確提出問題”的能力.
?回答人員是否具有“揭示需求本意”的能力.
存在的風(fēng)險(xiǎn):在交談期間所獲得的需求可能不斷增長,或是以前沒
有認(rèn)識到的合理需求的一種表現(xiàn),或是“完美蠕行"(CreepingElegance)病癥
的體現(xiàn),以至于很難控制,可能導(dǎo)致超出項(xiàng)目成本和進(jìn)度的限制.
應(yīng)對措施:項(xiàng)目管理人員和客戶管理人員應(yīng)該定期地對交談過程的
結(jié)果進(jìn)行復(fù)審.其中具有挑戰(zhàn)的問題是,判斷以下內(nèi)容:
?什么時(shí)候界定這一增長.
?什么時(shí)候?qū)⑦@一增長通知客戶.
(3)觀察(Observation).通過觀察用戶執(zhí)行其現(xiàn)行的任務(wù)和過程,或
通過觀察他們?nèi)绾尾僮髋c所期望的新系統(tǒng)有關(guān)的現(xiàn)有系統(tǒng),了解系統(tǒng)運(yùn)行的環(huán)境,
特別是了解要建立的新系統(tǒng)與現(xiàn)存系統(tǒng)、過程以及工作方法之間必須進(jìn)行的交
互.
與“交談”的比較:盡管了解的這些信息可以通過交談獲取,但“第
一手材料”一般總能比較好地“符合現(xiàn)實(shí)”.
適用情況:用戶允許需求人員進(jìn)入工作現(xiàn)場,并可進(jìn)行觀察,可與有
關(guān)人員就有關(guān)問題進(jìn)行交流.
成功條件:需求人員具有洞察事物本質(zhì)的能力.
存在的風(fēng)險(xiǎn):
?客戶可能抵觸這一觀察.其原因是他們認(rèn)為開發(fā)者打擾了他
們的正常業(yè)務(wù).
?客戶可能認(rèn)為開發(fā)者在簽約之前,就已經(jīng)熟悉了他們的業(yè)務(wù).
(4)小組會(GroupSession).舉行客戶和開發(fā)人員的聯(lián)席會議,與客
戶組織的一些代表共同開發(fā)需求.其中:
1)通常是由開發(fā)組織的一個(gè)代表作為首席需求工程師或軟件
工程項(xiàng)目經(jīng)理,主持這一會議.當(dāng)然,還可以采用其他形式,這依賴于其應(yīng)用領(lǐng)域和
主持人的能力.主持人的作用主要是掌握會議的進(jìn)程.
2)必須仔細(xì)地選擇該小組的成員,不僅要考慮他們對目前和未
來運(yùn)行環(huán)境的理解程度,還要考慮他們的人品.
適用情況:各方組織在管理層面上重視需求工作,并有能力提供人力
資源.
成功條件:會議組織得當(dāng),包括責(zé)權(quán)分明,參與會議的人員具有良好
的需求發(fā)現(xiàn)能力,并允許發(fā)表不同的觀點(diǎn),以便很快地標(biāo)識需求,揭示需求中存在
的問題,并與客戶達(dá)成共識.
存在的風(fēng)險(xiǎn):如果會議組織不到位或受到某些客觀環(huán)境的限制,就有
可能過多地召開這樣的會議,并產(chǎn)生一些相互矛盾的需求.
(5)提煉(Extraction).復(fù)審技術(shù)文檔(例如,有關(guān)需要的陳述、功能
和性能目標(biāo)的陳述、系統(tǒng)規(guī)約接口標(biāo)準(zhǔn)、硬件設(shè)計(jì)文檔等),并提取相關(guān)的信息.
適用情況:提煉方法是針對已經(jīng)有了部分需求文檔的情況.依據(jù)產(chǎn)品
的本來情況,可能有很多文檔需要復(fù)審,以確定其中是否包含相關(guān)聯(lián)的信息.有時(shí),
也可能只有少數(shù)文檔需要復(fù)審.
成功條件:已存在項(xiàng)目背景文檔以及一些緊密相關(guān)的需求文檔,并且
需求人員具有很好的想象力和需求標(biāo)識能力,包括熟悉相關(guān)的技術(shù)標(biāo)準(zhǔn)和法規(guī)政
策等.
存在的風(fēng)險(xiǎn):與自悟方法一樣,無法驗(yàn)證所發(fā)現(xiàn)的需求是否滿足用戶
的要求,無法驗(yàn)證發(fā)現(xiàn)的需求是否正確.
9.需求規(guī)約是一個(gè)軟件項(xiàng)/產(chǎn)品/系統(tǒng)所有需求陳述的正式文檔,它表達(dá)了
一個(gè)軟件產(chǎn)品/系統(tǒng)的概念模型.
10.需求規(guī)約一般需要滿足以下4個(gè)基本性質(zhì).
1)重要性和穩(wěn)定性程度:按需求的重要性和穩(wěn)定性,對需求進(jìn)行分級,例
如:基本需求、可選需求和期望需求.
2)可修改的:在不過多地影響其他需求的前提下,可以容易地修改一個(gè)
單一需求.
3)完整的:沒有被遺漏的需求.
4)一致的:不存在互斥的需求.
11.需求規(guī)約的表達(dá)主要存在3種不同的風(fēng)格.
(1)非形式化的需求規(guī)約.
(2)半形式化的需求規(guī)約
(3)形式化的需求規(guī)約
12.需求規(guī)約的作用可概括為以下4點(diǎn):
1)需求規(guī)約是軟件開發(fā)組織和用戶之間一份事實(shí)上的技術(shù)合同書,是產(chǎn)
品功能及其環(huán)境的體現(xiàn).
2)對于項(xiàng)目的其余大多數(shù)工作,需求規(guī)約是一個(gè)管理控制點(diǎn).
3)對于產(chǎn)品/系統(tǒng)的設(shè)計(jì),需求規(guī)約是一個(gè)正式的、受控的起始點(diǎn).
4)需求規(guī)約是創(chuàng)建產(chǎn)品驗(yàn)收測試計(jì)劃和用戶指南的基礎(chǔ),即基于需求規(guī)
約一般還會產(chǎn)生另外兩個(gè)文檔一一初始測試計(jì)劃和用戶系統(tǒng)操作描述.
13.簡述需求規(guī)約和項(xiàng)目需求的不同.
需求規(guī)約和項(xiàng)目需求是兩個(gè)不同的概念.需求規(guī)約是軟件開發(fā)組織和用
戶之間一份事實(shí)上的技術(shù)合同書,即關(guān)注產(chǎn)品需求,回答“交付給客戶的產(chǎn)品/系
統(tǒng)是什么”;
而項(xiàng)目需求是客戶和開發(fā)者之間有關(guān)技術(shù)合同一一產(chǎn)品/系統(tǒng)需求的理
解,應(yīng)記錄在工作陳述中或其他某一項(xiàng)目文檔中,即關(guān)注項(xiàng)目工作與管理,回答
“開發(fā)組要做的是什么”.
14..什么是驗(yàn)證和確認(rèn)?簡述它們的區(qū)別.
第三章結(jié)構(gòu)化方法
為了實(shí)現(xiàn)以上的分析目標(biāo),作為支持需求分析的結(jié)構(gòu)化分析方法,一要給出
一些基本術(shù)語(參見第3.1.1節(jié)),支持表達(dá)分析中所需要使用的信息;二要給
出表達(dá)系統(tǒng)模型的工具(參見第3.1.2節(jié)),支持表達(dá)系統(tǒng)功能;三要給出過程
指導(dǎo)(參見第3.1.3節(jié)〉,
支持如何系統(tǒng)化地使用相關(guān)信息來建造系統(tǒng)模型.
----結(jié)構(gòu)化需求分析----
1.在進(jìn)行軟件系統(tǒng)/產(chǎn)品的需求工作中,通常面臨三大挑戰(zhàn).
(1)問題空間理解.
(2)人與人之間的通信.
(3)需求的變化性.
2.數(shù)據(jù)流是一類術(shù)語,用于表達(dá)在分析中所要使用的、用于表達(dá)“客體”的
信息.
3.加工也是一類術(shù)語,用于表達(dá)在分析中所使用的、用于表達(dá)“處理”的信
息.
4.數(shù)據(jù)存儲也是一類術(shù)語,用于表達(dá)在分析中所使用的、表達(dá)“結(jié)構(gòu)化客
體”的信息.
5.建模過程
1.建立系統(tǒng)環(huán)境圈,確定系統(tǒng)語境.結(jié)構(gòu)化方法是通過系統(tǒng)頂層數(shù)據(jù)流
圖來定義系統(tǒng)語境的.
2.自頂向下,逐步求精,建立系統(tǒng)的層次數(shù)據(jù)流圖.在頂層數(shù)據(jù)流圖的基
礎(chǔ)上,按功能分解的設(shè)計(jì)思想,進(jìn)行“自頂向下,逐步求精”,即對加工進(jìn)行分解,
自頂向下地畫出各層數(shù)據(jù)流圖,直到底層的加工足夠簡單,功能清晰易
懂,不必再繼續(xù)分解為止,并把這樣的加工稱為葉加工.
3.定義數(shù)據(jù)字典,該步的目標(biāo)為依據(jù)系統(tǒng)的數(shù)據(jù)流圖,定義其中包含的
所有數(shù)據(jù)流和數(shù)據(jù)存儲的數(shù)據(jù)結(jié)構(gòu),直到給出構(gòu)成以上數(shù)據(jù)的各數(shù)據(jù)項(xiàng)的基本數(shù)
據(jù)類型.
所有客體均可用以下3種基本結(jié)構(gòu)表示,這3種結(jié)構(gòu)分別為
順序結(jié)構(gòu)(指數(shù)據(jù)A是由數(shù)據(jù)B和數(shù)據(jù)C順序構(gòu)成的):學(xué)生成績=
姓名+性別+學(xué)號+科目+成績
選擇結(jié)構(gòu)(指由數(shù)據(jù)A或是由數(shù)據(jù)B.或是由數(shù)據(jù)C.定義的):性別=
男I女
重復(fù)結(jié)構(gòu)(是指數(shù)據(jù)A是由多個(gè)重復(fù)出現(xiàn)的數(shù)據(jù)B構(gòu)成的):學(xué)生成
績表=(學(xué)生成績)
4.描述加工,該步的目標(biāo)為依據(jù)系統(tǒng)的數(shù)據(jù)流圖,給出其中每一加工的
小說明.由于需求分析的目的是定義問題,因此對DFD圖中的每一加工只需給出
加工的輸入數(shù)據(jù)和輸出數(shù)據(jù)之間的關(guān)系,即從外部來“視察”一個(gè)加工的邏輯.
3種表達(dá)工具:
(1)結(jié)構(gòu)化自然語言.
(2)判定表.
(3)判定樹.
6.抽象和分解是結(jié)構(gòu)化分析方法采用的兩個(gè)基本手段.
7.需求階段:需求發(fā)現(xiàn)、需求分析和需求驗(yàn)證.
=======結(jié)構(gòu)化需求設(shè)計(jì)=======
----總體設(shè)計(jì)----
8.結(jié)構(gòu)化設(shè)計(jì)的主要任務(wù)是在需求分析的基礎(chǔ)上,定義滿足需求所需要的結(jié)
構(gòu),即針對給定的問題,給出該問題的軟件解決方案,確定“怎么做”的問題.
9.結(jié)構(gòu)化方法在總體設(shè)計(jì)中引入了兩個(gè)基本概念:一是模塊,即指軟件中具有
特定標(biāo)識的獨(dú)立成分;二是模塊調(diào)用,即指模塊之間的一種使用關(guān)系.
10.總體設(shè)計(jì)階段的基本任務(wù)是把系統(tǒng)的功能需求分配到一個(gè)特定的軟件體
系結(jié)構(gòu)中.表達(dá)這一軟件體系結(jié)構(gòu)的工具很多,主要有以下幾種.
(1)Yourdon提出的模塊結(jié)構(gòu)圖.
模塊結(jié)構(gòu)圖是系統(tǒng)的一個(gè)高層“藍(lán)圖”,允許設(shè)計(jì)人員在較高的層
次上進(jìn)行抽象思維,避免過早地陷入特定的條件、算法和過程步等實(shí)現(xiàn)細(xì)節(jié).尾部
是空心圓的箭頭線標(biāo)明傳遞的是數(shù)據(jù)信息,尾部是實(shí)心圓的箭頭線
標(biāo)明傳遞的是控制信息.
(2)層次圖.層次圖很適合在自頂向下設(shè)計(jì)軟件的過程中使用.
(3)I1IP0圖.HIPO是由美國IBM公司提出的,其中HIPO是“層次圖+
輸入/處理/輸出”的英文縮寫,實(shí)際上,HIPO圖由H圖和IP0圖兩部分組成
的.H圖就是上面所講的層次圖.但是,為了使HIPO圖具有可跟蹤性,除H圖〈層
次圖)最頂層的方框之外,為每個(gè)方框都加了編號
11.如何將需求分析所得到的系統(tǒng)DFD圖映射為設(shè)計(jì)層面上的模塊和模塊調(diào)
用,這是結(jié)構(gòu)化設(shè)計(jì)方法所要回答的問題.
12.該方法在分類DFD的基礎(chǔ)上,基于自頂向下、功能分解的設(shè)計(jì)原則,定
義了兩種不同的“映射”,即變換設(shè)計(jì)和事務(wù)設(shè)計(jì).其基本步驟是,首先將系統(tǒng)的
DFD圖首先轉(zhuǎn)化為初始的模塊結(jié)構(gòu)圖,再基于“高內(nèi)聚低搞合”這一軟件設(shè)計(jì)原
理,通過模塊化,將初始的模塊結(jié)構(gòu)圖轉(zhuǎn)化為最終的、可供詳細(xì)設(shè)計(jì)使用的模
塊結(jié)構(gòu)圖(MSD).
13.通過大量軟件開發(fā)的實(shí)踐,人們發(fā)現(xiàn),無論待建系統(tǒng)的數(shù)據(jù)流圖如何復(fù)雜,
一般總可以把它們分成兩種基本類型,即變換型數(shù)據(jù)流圖和事務(wù)型數(shù)據(jù)流圖.
14.系統(tǒng)/產(chǎn)品的模塊結(jié)構(gòu)圖以及相關(guān)的全局?jǐn)?shù)據(jù)結(jié)構(gòu)和每一模塊的接口,是
軟件設(shè)計(jì)中的一個(gè)重要制品,是系統(tǒng)/產(chǎn)品的高層設(shè)計(jì)“藍(lán)圖”.
15.總體設(shè)計(jì)步驟
(1)變換型數(shù)據(jù)流圖.
(2)事務(wù)型數(shù)據(jù)流圖.
16.在實(shí)際應(yīng)用中,任何軟件系統(tǒng)從本質(zhì)上來說都是信息的變換裝置,因此,原
則上所有的數(shù)據(jù)流圖都可以歸為變換型.
17.總體設(shè)計(jì)分為3個(gè)階段.
第一階段為初始設(shè)計(jì),在對給定的數(shù)據(jù)流圖進(jìn)行復(fù)審和精化的基礎(chǔ)上,將
其轉(zhuǎn)換為初始的模塊結(jié)構(gòu)圖.
(1)變換設(shè)計(jì).
第1步:設(shè)計(jì)準(zhǔn)備一復(fù)審并精化系統(tǒng)模型.
第2步:確定輸入、變換、輸出這三部分之間的邊界.
從物理輸入端到邏輯輸入,構(gòu)成系統(tǒng)的輸入部分.
第3步:第一級分解一一系統(tǒng)模塊結(jié)構(gòu)圖頂層和第一層的設(shè)計(jì)
根據(jù)變換型數(shù)據(jù)流圖的基本特征顯然它所對應(yīng)的軟件系統(tǒng)
應(yīng)由輸入模塊、變換模塊和輸出模塊組成.并且,為了協(xié)調(diào)這些模塊的“有序”工
作,還應(yīng)設(shè)計(jì)一個(gè)所謂的主模塊,作為系統(tǒng)的頂層模塊.因此,變換型數(shù)據(jù)流圖所對
應(yīng)的軟件結(jié)構(gòu)有一個(gè)主模塊以及由它控制的3個(gè)部分組成.
第4步:“第二級分解”一一自頂向下,逐步求精.
(2)事務(wù)設(shè)計(jì).
第1步:設(shè)計(jì)準(zhǔn)備一一復(fù)審并精化系統(tǒng)模型.
第2步:確定事務(wù)處理中心.
第3步:“第一級分解"一一系統(tǒng)模塊結(jié)構(gòu)圖頂層和第一層的
設(shè)計(jì).
第4步:“第二級分解”一一自頂向下,逐步求精.
第二階段為精化設(shè)計(jì),依據(jù)模塊“高內(nèi)聚低藕合”的原則,精化初始的模
塊結(jié)構(gòu)圖,并設(shè)計(jì)其中的全局?jǐn)?shù)據(jù)結(jié)構(gòu)和每一模塊的接口.
第三階段為復(fù)審階段對前兩個(gè)階段所得到的高層軟件結(jié)構(gòu)進(jìn)行復(fù)審,必
要時(shí)還可能需要對該軟件結(jié)構(gòu)做一些精化工作,這對軟件的一些性質(zhì),特別是對軟
件質(zhì)量的提高將產(chǎn)生非常大的影響.
18.實(shí)踐中,一個(gè)大型的軟件系統(tǒng)一般是變換型流圖和事務(wù)型流圖的混合結(jié)
構(gòu).在軟件總體設(shè)計(jì)中,通常以變換設(shè)計(jì)為主,事務(wù)設(shè)計(jì)為輔進(jìn)行結(jié)構(gòu)設(shè)計(jì).即首先
利用變換設(shè)計(jì),把軟件系統(tǒng)分為輸入、中心變換和輸出3個(gè)部分,設(shè)計(jì)上層模塊,
然后根據(jù)各部分?jǐn)?shù)據(jù)流圖的結(jié)構(gòu)特點(diǎn),適當(dāng)?shù)乩米儞Q設(shè)
計(jì)和事務(wù)設(shè)計(jì)進(jìn)行細(xì)化,得到初始的模塊結(jié)構(gòu)圖,再按照“高內(nèi)聚低藕
合”的原則,對初始的模塊結(jié)構(gòu)圖進(jìn)行精化,得到最終的模塊結(jié)構(gòu)圖.
19.模塊是執(zhí)行一個(gè)特殊任務(wù)的一個(gè)過程以及相關(guān)的數(shù)據(jù)結(jié)構(gòu).模塊通常由兩
部分組成.一部分是接口,給出可由其他模塊或例程訪問的常量、變量、函數(shù)等.
接口不但可用于刻畫各個(gè)模塊之間的連接,以體現(xiàn)其功能,而且還對其他模塊的設(shè)
計(jì)者和使用者提供了一定的可見性.模塊的另一部分是模塊體,是接口的實(shí)現(xiàn).
20.耦合:耦合是指不同模塊之間相互依賴程度的度量.
①內(nèi)容耦合:當(dāng)一個(gè)模塊直接修改或操作另一個(gè)模塊的數(shù)據(jù),或一個(gè)模塊
不通過正常入口而轉(zhuǎn)入到另一個(gè)模塊時(shí),這樣的耦合被稱為內(nèi)容耦合.內(nèi)容精合是
最高程度的耦合,應(yīng)該盡量避免使用.
②公共耦合:兩個(gè)或兩個(gè)以上的模塊共同引用一個(gè)全局?jǐn)?shù)據(jù)項(xiàng),這種耦合
被稱為公共耦合.在具有大量公共藕合的結(jié)構(gòu)中,確定究竟是哪個(gè)模塊給全局變量
賦了一個(gè)特定的值是十分困難的.
③控制耦合:一個(gè)模塊通過接口向另一個(gè)模塊傳遞一個(gè)控制信號,接收信
號的模塊根據(jù)信號值進(jìn)行適當(dāng)?shù)膭幼?這種精合被稱為控制搞合.在實(shí)際設(shè)計(jì)中,
通過保證每個(gè)模塊只完成一個(gè)特定的功能,這樣就可以大大減少模塊之間的這種
耦合.
④標(biāo)記耦合:若一個(gè)模塊A通過接口向兩個(gè)模塊B和C傳遞一個(gè)公共
參數(shù),那么稱模塊B和C之間存在一個(gè)標(biāo)記耦合.
⑤數(shù)據(jù)耦合:模塊之間通過參數(shù)來傳遞數(shù)據(jù),則稱為數(shù)據(jù)耦合.數(shù)據(jù)耦合
是最低的一種耦合形式,系統(tǒng)中一般都存在這種類型的藕合,因?yàn)闉榱送瓿梢恍┯?/p>
意義的功能,往往需要將某些模塊的輸出數(shù)據(jù)作為另一些模塊的輸入數(shù)據(jù).耦合影
響軟件復(fù)雜程度和設(shè)計(jì)質(zhì)量的一個(gè)重要因素,在設(shè)計(jì)上我們應(yīng)采取以下原則:
如果模塊間必須存在耦合,就盡量使用數(shù)據(jù)藕合,少用控制耦合,限制公
共搞合的范圍,盡量避免使用內(nèi)容精合.
21.內(nèi)聚:內(nèi)聚是指一個(gè)模塊內(nèi)部各成分之間相互關(guān)聯(lián)程度的度量.
①偶然內(nèi)聚:如果一個(gè)模塊的各成分之間基本不存在任何關(guān)系,則稱為偶
然內(nèi)聚.例如,有時(shí)在編寫一段程序時(shí),發(fā)現(xiàn)有一組語句在兩處或多處出現(xiàn),于是把
這組語句作為一個(gè)模塊,以減少書寫工作量,但這組語句彼此間沒有任何關(guān)系,這
時(shí)就出現(xiàn)了偶然內(nèi)聚.
因?yàn)檫@樣的模塊一般沒有確定的語義或很難了解它的語義,那么當(dāng)在一個(gè)應(yīng)
用場合需要對之進(jìn)行理解或修改時(shí),就會產(chǎn)生相當(dāng)大的困難.事實(shí)上,系統(tǒng)中如果
存在偶然內(nèi)聚的模塊,那么對系統(tǒng)進(jìn)行修改所發(fā)生的錯(cuò)誤概率就比其他類型的模
塊高得多.
②邏輯內(nèi)聚:幾個(gè)邏輯上相關(guān)的功能被放在同一模塊中,則稱為邏輯內(nèi)
聚.例如,一個(gè)模塊讀取各種類型外設(shè)的輸入(包括卡片、磁帶、磁盤、鍵盤等),
而不管這些輸入從哪兒來、做什么用,因?yàn)檫@個(gè)模塊的各成分都執(zhí)行輸入,所以,
該模塊是邏輯內(nèi)聚的.盡管邏輯內(nèi)聚比偶然內(nèi)聚度高一些,
但邏輯內(nèi)聚的模塊各成分在功能上并無關(guān)系,即使局部功能的修改有時(shí)也會
影響全局,因此,這類模塊的修改也比較困難.
③時(shí)間內(nèi)聚:如果一個(gè)模塊完成的功能必須在同一時(shí)間內(nèi)執(zhí)行(例如,初
始化系統(tǒng)或一組變量),但這些功能只是因?yàn)闀r(shí)間因素關(guān)聯(lián)在一起則稱為時(shí)間內(nèi)
聚.時(shí)間內(nèi)聚在一定程度上反映了系統(tǒng)的某些實(shí)質(zhì),因此,比邏輯內(nèi)聚高一些.
④過程內(nèi)聚:如果一個(gè)模塊內(nèi)部的處理成分是相關(guān)的,而且這些處理必須
以特定的次序執(zhí)行,則稱為過程內(nèi)聚.使用程序流程圖作為工具設(shè)計(jì)軟件時(shí),常常
通過研究流程圖確定模塊的劃分,這樣得到的往往是過程內(nèi)聚的模塊.
⑤通信內(nèi)聚:如果一個(gè)模塊的所有成分都操作同一數(shù)據(jù)集或生成同一數(shù)
據(jù)集,則稱為通信內(nèi)聚,如圖3-43所示.在實(shí)際設(shè)計(jì)中這樣的處理有時(shí)是很自然
的,而且也顯得很方便,但是出現(xiàn)的通信內(nèi)聚經(jīng)常破壞設(shè)計(jì)的模塊化和功能獨(dú)立
性.
⑥順序內(nèi)聚:如果一個(gè)模塊的各個(gè)成分和同一個(gè)功能密切相關(guān),而且一個(gè)
成分的輸出作為另一個(gè)成分的輸入,則稱為順序內(nèi)聚.
⑦功能內(nèi)聚:最理想的內(nèi)聚是功能內(nèi)聚,模塊的所有成分對于完成單一的
功能都是基本的.功能內(nèi)聚的模塊對完成其功能而言是充分必要的.
內(nèi)聚和耦合是密切相關(guān)的,同其他模塊存在高耦合的模塊常意味著是低
內(nèi)聚的,而高內(nèi)聚的模塊常意味著該模塊同其他模塊之間是低搞合的.在進(jìn)行軟件
設(shè)計(jì)時(shí),應(yīng)力爭做到高內(nèi)聚、低耦合.
18.啟發(fā)式規(guī)則.不論是變換設(shè)計(jì)還是事務(wù)設(shè)計(jì),都涉及一個(gè)共同的問題,即
“基于高內(nèi)聚低藕合的原理,采用一些經(jīng)驗(yàn)性的啟發(fā)式規(guī)則,對初始的模塊結(jié)構(gòu)圖
進(jìn)行精化,形成最終的模塊結(jié)構(gòu)圖”.
1)改進(jìn)軟件結(jié)構(gòu),提高模塊獨(dú)立性.
2)力求模塊規(guī)模適中.
3)力求深度、寬度、扇出和扇入適中.
1.深度表示其控制的層數(shù),寬度是指同一個(gè)層次上模塊總數(shù)的最大
值,模塊扇出是指一個(gè)模塊直接控制(調(diào)用)的下級模塊數(shù)目.
2.通過對大量軟件系統(tǒng)的研究,發(fā)現(xiàn)設(shè)計(jì)得很好的軟件結(jié)構(gòu),通常頂
層模塊扇出比較大,中間層模塊扇出較小,而底層模塊具有較大的扇人,即系統(tǒng)的
模塊結(jié)構(gòu)呈現(xiàn)“葫蘆”形狀.
4)盡力使模塊的作用域在其控制域之內(nèi).
1.模塊的控制域是指這個(gè)模塊本身以及所有直接或間接從屬于它的
模塊的集合.
2.模塊的作用域是指受該模塊內(nèi)一個(gè)判定所影響的所有模塊的集
&
口?
5)盡力降低模塊接口的復(fù)雜度.
6)力求模塊功能可以預(yù)測.也就是說,只要輸入的數(shù)據(jù)相同就產(chǎn)生同樣
的輸出,這個(gè)模塊的功能就是可以預(yù)測的.但對那種其內(nèi)部狀態(tài)與時(shí)間有關(guān)的模
塊,采用同樣的方法就很難預(yù)測其功能,因?yàn)樗妮敵隹赡芤Q于所處的狀態(tài).
由于其內(nèi)部狀態(tài)對于上級模塊而言是不可見的,所以,這樣的模塊既不易理解又難
以測試和維護(hù).
----詳細(xì)設(shè)計(jì)----
19.詳細(xì)設(shè)計(jì)的目標(biāo)是將總體設(shè)計(jì)階段所產(chǎn)生的系統(tǒng)高層結(jié)構(gòu)映射為以這些
術(shù)語所表達(dá)的低層結(jié)構(gòu),也是系統(tǒng)的最終結(jié)構(gòu).
20.程序設(shè)計(jì)方法學(xué)的第一種含義是,以程序設(shè)計(jì)方法和技術(shù)為研究對象的學(xué)
科.第二種含義是,針對某一領(lǐng)域或某一領(lǐng)域的一類特定問題,所用的一整套特定
程序設(shè)計(jì)方法所構(gòu)成的體系.作為一整套特定程序設(shè)計(jì)方法所構(gòu)成的體系(第二種
含義),目前已出現(xiàn)多種程序設(shè)計(jì)
方法學(xué),例如,結(jié)構(gòu)化程序設(shè)計(jì)方法學(xué)、各種邏輯式程序設(shè)計(jì)方法學(xué)、函數(shù)式
程序設(shè)計(jì)方法學(xué)、面向?qū)ο蟪绦蛟O(shè)計(jì)方法學(xué)等.
21.詳細(xì)設(shè)計(jì)工具
(1)程序流程圖(從20世紀(jì)40年代未到70年代中期,).程序流程圖
中的箭頭代表的是控制流而不是數(shù)據(jù)流,這一點(diǎn)同數(shù)據(jù)流圖中的箭頭是不同的.
它的主要優(yōu)點(diǎn)是對控制流程的描繪很直觀,便于初學(xué)者掌握.
程序流程圖的主要缺點(diǎn)如下:
1)不是一種逐步求精的工具,它誘使程序員過早地考慮程序的
控制流程,而不去考慮程序的全局結(jié)構(gòu).
2)所表達(dá)的控制流,往往不受任何約束可隨意轉(zhuǎn)移,從而會影
響甚至破壞好的系統(tǒng)結(jié)構(gòu)設(shè)計(jì).
3)不易表示數(shù)據(jù)結(jié)構(gòu).
(2)盒圖(N-S圖)早在20世紀(jì)70年代初,Nassi和Shneiderman
出于不允許違背結(jié)構(gòu)化程序設(shè)計(jì)的考慮提出了盒圖,又稱為N-S圖.
(3)PAD圖(1973)是英文“ProblemanalysisDiagram"的縮寫.
(4)類程序設(shè)計(jì)語言.類程序設(shè)計(jì)語言(ProgramDesignLanguage,
PDL)也稱為偽碼,在20世紀(jì)70年代至80年代,人們設(shè)計(jì)了多種PDL,它是一種
用正文形式表示數(shù)據(jù)結(jié)構(gòu)和處理過程的設(shè)計(jì)工具.
另外,IP0圖、判定樹和判定表等也可以作為詳細(xì)設(shè)計(jì)工具.
22.概要設(shè)計(jì)規(guī)約指明高層軟件體系結(jié)構(gòu),其主要內(nèi)容如下:
1)系統(tǒng)環(huán)境,包括硬件、軟件接口、人機(jī)界面、外部定義的數(shù)據(jù)庫及其
與設(shè)計(jì)有關(guān)的限定條件等.
2)軟件模塊的結(jié)構(gòu),包括模塊之間的接口及設(shè)計(jì)的數(shù)據(jù)流和主要數(shù)據(jù)結(jié)
構(gòu)等.
3)模塊描述,包括模塊接口定義、模塊處理邏輯及必要的注釋等.
4)文件結(jié)構(gòu)和全局?jǐn)?shù)據(jù)文件的邏輯結(jié)構(gòu),包括記錄描述、訪問方式以及
交叉引用信息等.
5)測試需求等.
概要設(shè)計(jì)規(guī)約是面向軟件開發(fā)者的文檔,主要作為項(xiàng)目管理人員、系統(tǒng)
分析人員與設(shè)計(jì)人員之間交流的媒體.
23.詳細(xì)設(shè)計(jì)規(guī)約是對軟件各成分內(nèi)部屬性的描述.它是概要設(shè)計(jì)的細(xì)化,即
在概要設(shè)計(jì)規(guī)約的基礎(chǔ)上,增加以下內(nèi)容:
①各處理過程的算法.
②算法所涉及的全部數(shù)據(jù)結(jié)構(gòu)的描述,特別是,對主要數(shù)據(jù)結(jié)構(gòu)往往包括
與算法實(shí)現(xiàn)有關(guān)的描述.
詳細(xì)設(shè)計(jì)規(guī)約主要作為軟件設(shè)計(jì)人員與程序員之間交流的媒體.
第四章面向?qū)ο蠓椒?UML
1.在面向?qū)ο蠹夹g(shù)的發(fā)展中,一個(gè)重要的里程碑是UML(UnifiedModeling
Language).
2.從語言學(xué)的角度,為了規(guī)約這八大范疇的事物,UML引入了8個(gè)術(shù)語,即類
與對象、接口、協(xié)作、用況、主動類、構(gòu)件、節(jié)點(diǎn)和制品,并給出了它們的含義
和表示.UML把它們統(tǒng)稱為類目,作為元信息,以便對客觀世界的一切事物進(jìn)行模
型化.
3.為了描述事物之間的相互依賴和相互作用,即為了表達(dá)各類事物之間的關(guān)
系,UML給出了4個(gè)術(shù)語,即關(guān)聯(lián)、泛化、實(shí)現(xiàn)和依賴.
4.除了這兩類術(shù)語之外,為了控制信息組織的復(fù)雜性,UML還引入了用于組
織特定對象結(jié)構(gòu)的包,一個(gè)包相當(dāng)一個(gè)可管理的“預(yù)制塊”.
5.最后,為了使建造的系統(tǒng)模型容易理解,UML引入了表達(dá)注釋的術(shù)語一一
注解,用于對模型增加一些輔助性說明.
6.類是一組具有相同屬性、操作、關(guān)系和語義的對象的描述.對象是類的一
個(gè)實(shí)例.
7.類的屬性是類的一個(gè)命名特性,該特性是由該類的所有對象所共享、用于
表達(dá)對象狀態(tài)的數(shù)據(jù).
8.所謂信息隱蔽是指在每個(gè)模塊中所包含的信息(包括具有特定語義的數(shù)據(jù)
和處理過程)不允許其他不需要這些信息的模塊訪問.信息隱蔽是實(shí)現(xiàn)模塊低耦合
的一種有效途徑.但是,如果一個(gè)模塊中的所有信息都是不可見的,即該模塊是
“絕對”信息隱蔽的,那么這種模塊對系統(tǒng)而言也是毫無意義的.
9.所謂類范圍的屬性是指該屬性被該類所有對象所共享.
10.操作是對一個(gè)類中所有對象要做的事情的抽象.
leaf指明該操作是“葉子”操作.
abstract指明該操作是抽象操作.
query指明該操作的運(yùn)行不會改變系統(tǒng)狀態(tài),即是完全沒有副作用的純
函數(shù).
sequential指明在該類對象中,一次僅有一個(gè)控制流.當(dāng)出現(xiàn)多個(gè)控制
流時(shí),就不能保證該對象的語義和完整性.
guarded指明執(zhí)行該操作的條件,實(shí)現(xiàn)操作調(diào)用的順序化,即一次只能調(diào)
用對象的一個(gè)操作,以保證在出現(xiàn)多控制流的情況下,對象具有的語義和完整性.
concurrent指明來自并發(fā)控制流的多個(gè)調(diào)用可以同時(shí)作用于一個(gè)對象
的任何一個(gè)并發(fā)操作,而所有操作均能以正確的語義并發(fā)進(jìn)行.并發(fā)操作必須設(shè)計(jì)
成,在對一個(gè)對象同時(shí)進(jìn)行順序的或監(jiān)護(hù)的操作情況下仍能正確地執(zhí)行.
static指明該操作沒有關(guān)于目標(biāo)對象的隱式參數(shù),其行為如同傳統(tǒng)的全
局過程.
1L關(guān)于類語義的進(jìn)一步表達(dá):
①詳細(xì)敘述類的職責(zé).
②通過類的注解和/或操作的注解,以結(jié)構(gòu)化文本的形式和/或編程語
言,詳述注釋整個(gè)類的語義和/或各個(gè)方法.
③通過類的注解或操作的注解,以結(jié)構(gòu)化文本形式,詳述注釋各操作的前
置條件和后置條件,甚至注釋整個(gè)類的不變式.
④詳述類的狀態(tài)機(jī).
⑤詳述類的內(nèi)部結(jié)構(gòu).
⑥類與其他類的協(xié)作.
由此可見,類的語義表達(dá),其詳細(xì)程度取決于所采用的描述手段.應(yīng)用中
到底需要表達(dá)到何種程度,這取決于建模的意圖.
?如果是為了與最終用戶和領(lǐng)域?qū)<覝贤?那么就可以采用較低的
形式化手段.
?如果是為了支持正向和逆向工程,即需要在模型和代碼之間進(jìn)行
轉(zhuǎn)換,那么就應(yīng)該采用較高的形式化手段.
?如果是為了對模型進(jìn)行推理,證明其正確性,那么就應(yīng)該采用很高
的形式化手段.
12.,類的作用主要有3個(gè).
①模型化問題域中的概念(詞匯).
②建立系統(tǒng)的職責(zé)分布模型.
③模型化建模中使用的基本類型.
13.接口是操作的一個(gè)集合,其中每個(gè)操作描述了類、構(gòu)件或子系統(tǒng)的一個(gè)服
務(wù).
14.在系統(tǒng)/產(chǎn)品建模中,接口的主要作用可概括為一句話,即對系統(tǒng)/產(chǎn)品
中的‘‘接縫"予以模型化.
15.協(xié)作是一個(gè)交互,涉及交互的三要素:交互各方、交互方式以及交互內(nèi)容.
16.用況是對一組動作序列的描述,系統(tǒng)執(zhí)行這些動作應(yīng)產(chǎn)生對特定參與者有
值的、可觀察的結(jié)果.
17.制品是系統(tǒng)中包含物理信息(比特)的、可替代的物理部件.
18.關(guān)聯(lián)是類目之間的一種結(jié)構(gòu)關(guān)系,是對一組具有相同結(jié)構(gòu)、相同鏈
(links)的描述.
19.類是一組具有相同屬性、操作、關(guān)系和語義的對象的描述;而關(guān)聯(lián)是一組
具有相同結(jié)構(gòu)和語義的鏈的描述.
20.聚合(Aggregation).分類是增強(qiáng)客觀實(shí)際問題語義的一種手段.通過
“一個(gè)類(類目〉是另一類〈類目)的一部分”這一性質(zhì),對關(guān)聯(lián)集進(jìn)行分類,凡
滿足這一性質(zhì)的關(guān)聯(lián),都稱為一個(gè)聚合.顯然聚合是關(guān)聯(lián)的一種特殊形式,表達(dá)的
是一種“整體/部分”關(guān)系
聚合是對象之間的一種結(jié)構(gòu)關(guān)系,不是類(類目)之間的部分一種結(jié)
構(gòu)關(guān)系.
21.組合(Composition).組合又是聚合的一種特殊形式.如果在一個(gè)時(shí)間
段內(nèi),整體類的實(shí)例中至少包含一個(gè)部分類的實(shí)例,并且該整體類的實(shí)例負(fù)責(zé)創(chuàng)建
和消除部分類的實(shí)例,特別是如果整體類的實(shí)例和部分類的實(shí)例具有相同的生存
周期,那么這樣的聚合稱為組合.
22.泛化是一般性類目(稱為超類或父類)和它的較為特殊性類目(稱為子類)
之間的一種關(guān)系,有時(shí)稱為"is-a-kind-of'關(guān)系.
23.為了進(jìn)一步表達(dá)泛化的語義,UML給出了4個(gè)約束.
①完整(Complete):表明已經(jīng)在模型中給出了泛化中的所有子類,盡管
在表達(dá)的圖形中有所省略,但也不允許增加新的子類.
②不完整(Incomplete):表明在模型中沒有給出泛化中的所有子類,因
此可以增加新的子類.
③互斥(Disjoint):表明父類的對象最多允許該泛化中的一個(gè)子類作
為它的類型.例如,如果父類為Person,有兩個(gè)子類Woman和Man,顯然父類的
一個(gè)對象,其類型或是子類Man,或是子類Woman
④重疊(Overlapping):表明父類的對象可能具有該泛化中的多個(gè)子類
作為它的類型.例如,類“交通工具”的一個(gè)對象可能是兩棲工具,既是水上的又
是陸地的.
24.細(xì)化是類目之間的語義關(guān)系,其中一個(gè)類目規(guī)約了保證另一個(gè)類目執(zhí)行的
契約.
25.依賴是一種使用關(guān)系,用于描述一個(gè)類目使用另一類目的信息和服務(wù).
26.按照UML的觀點(diǎn),客觀世界一切事物之間的關(guān)系都可用依賴來規(guī)約,但為
了對各種關(guān)系賦予特定的語義,采用分類手段將它們分為4類,如圖4-49所示.
關(guān)聯(lián)、泛化和細(xì)化都是一類特定的依賴.如此處理,可以保證UML提出的4個(gè)術(shù)
語能夠表達(dá)客觀世界中各種各樣的關(guān)系,
即概念體系的完備性.因此,在系統(tǒng)建模中,為了模型化其中所遇到的關(guān)系,應(yīng)
首先使用關(guān)聯(lián)、泛化和細(xì)化這3個(gè)術(shù)語,只有在不能使用它們時(shí),再使用依賴.
27.UML的圖形化工具分為兩類,一類是結(jié)構(gòu)圖,用于表達(dá)系統(tǒng)或系統(tǒng)成分的
靜態(tài)結(jié)構(gòu)模型,給出系統(tǒng)或系統(tǒng)成分的一些說明性信息;一類是行為圖,用于表達(dá)
系統(tǒng)或系統(tǒng)成分的動態(tài)結(jié)構(gòu)模型,給出系統(tǒng)或系統(tǒng)成分的一些行為信息,例如行為
的功能性信息,行為的交互信息以及行為的生存狀態(tài)信息.
28.類圖是構(gòu)件圖和部署圖的基礎(chǔ).
29.創(chuàng)建一個(gè)系統(tǒng)的類圖,依賴于所使用的方法學(xué),但一般來說要涉及以下4
方面的工作.
(1)模型化待建系統(tǒng)中的概念(詞匯),形成類圖中的基本元素.
(2)模型化待建系統(tǒng)中的各種關(guān)系,形成該系統(tǒng)的初始類圖.
(3)模型化系統(tǒng)中的協(xié)作,給出該系統(tǒng)的最終類圖.
(4)模型化邏輯數(shù)據(jù)庫模式.
30.實(shí)踐經(jīng)驗(yàn)告訴人們,認(rèn)識行為的一個(gè)有效途徑是要從多個(gè)視角對其進(jìn)行抽
象.一般來說,一是從(行為)功能的視角,二是從(行為)交互的視角,三是從(行
為)生存周期的視角.為了支持從以上3個(gè)視角來認(rèn)識系統(tǒng)(或系統(tǒng)成分)行為,對
行為進(jìn)行抽象,
UML提供了7種圖形工具,其中USECASE圖支持系統(tǒng)功能的建模,交互圖支
持系統(tǒng)交互的建模,狀態(tài)圖支持系統(tǒng)生存周期的建模.
31.在一個(gè)用況圖中,用況之間可以具有3種關(guān)系,即泛化、擴(kuò)展和包含.注
意箭頭方向.
32.一個(gè)用況圖通常包含6個(gè)模型元素,它們是主題(Subject)、用況
(Usecases)、參與者(Actor)、關(guān)聯(lián)、泛化、依賴.
33.使用用況圖可以為系統(tǒng)建模,描述軟件系統(tǒng)行為的功能結(jié)構(gòu);也可以對業(yè)
務(wù)建模,描述企業(yè)或組織的業(yè)務(wù)過程結(jié)構(gòu).業(yè)務(wù)模型和系統(tǒng)模型之間具有“整體/
部分”關(guān)系,即業(yè)務(wù)模型是“整體”,而系統(tǒng)模型是業(yè)務(wù)模型的一個(gè)組成部分.不
論是對系統(tǒng)建模還是對業(yè)務(wù)建模,都涉及兩方面的模型化工作,一是系統(tǒng)/業(yè)務(wù)
語境的模型化,二是系統(tǒng)/業(yè)務(wù)需求的模型化.
1)關(guān)于對系統(tǒng)/業(yè)務(wù)語境的模型化.在對系統(tǒng)語境的模型化中,應(yīng)研究以
下4個(gè)問題.
①系統(tǒng)邊界的確定,即確定哪些行為是系統(tǒng)的一部分,哪些行為是由
外部實(shí)體執(zhí)行的,同時(shí)定義主題.
②參與者與用況的交互,即在用況圖中表明參與者與系統(tǒng)用況之間
的關(guān)聯(lián).
③參與者的語義表達(dá),在需要加深理解的地方,為每個(gè)參與者提供一
個(gè)衍型.
④參與者的結(jié)構(gòu)化處理,即將一些相似的參與者組織為一肋特殊結(jié)
構(gòu).
2)關(guān)于系統(tǒng)/業(yè)務(wù)需求的模型化.
①確定系統(tǒng)/業(yè)務(wù)的基本用況,即考慮每個(gè)參與者所期望或需要的系
統(tǒng)行為,并把這些行為規(guī)約為相應(yīng)的用況,如圖4-63所示.
②用況的結(jié)構(gòu)化處理,即分解行為,形成必要的泛化結(jié)構(gòu)和擴(kuò)展、包
含結(jié)構(gòu),并在用況圖中給出各種已確定的關(guān)系.
③用況的語義表達(dá),即通過注解和約束來修飾用況,特別應(yīng)給出用況
的一些非功能需求.
第四章面向?qū)ο蠓椒?RUP
1.RUP是一種軟件開發(fā)過程框架,基于面向?qū)ο蠓栿w系給出了有關(guān)軟件開
發(fā)過程組織及實(shí)施的指導(dǎo).該框架體現(xiàn)了3個(gè)突出特征,即以用況驅(qū)動、體系結(jié)
構(gòu)為中心以及迭代、增量式開發(fā).
2.RUP和UML是一對“姐妹”,它們構(gòu)成了一種特定的軟件開發(fā)方法學(xué).其
中,UML作為一種可視化建模語言,給出了表達(dá)事物和事物之間關(guān)系的基本術(shù)語
給出了多種模型的表達(dá)工具;而RUP利用這些術(shù)語定義了需求獲取層、系統(tǒng)分析
層、設(shè)計(jì)層、實(shí)現(xiàn)層,并給出了實(shí)現(xiàn)各層模型之間映射的基本活動以及相關(guān)的指
導(dǎo).
3.RUP的突出特點(diǎn)是,它是一種以用況(UseCase)為驅(qū)動的、以體系結(jié)構(gòu)
為中心的迭代、增量式開發(fā).
4.在RUP中,規(guī)定了4個(gè)開發(fā)階段:初初始階段(theInception
Phase)、精化階段(theElaborationPhase)、構(gòu)造階段(由e
ConstructionPhase)和移交階段(theTransitionPhase),
5.系統(tǒng)體系結(jié)構(gòu)是對系統(tǒng)語義的概括表述,對所有項(xiàng)目有關(guān)人員來說都是能
夠理解的,因此便于用戶和其他關(guān)注者對系統(tǒng)達(dá)成共識,以便建立和控制系統(tǒng)的開
發(fā)、復(fù)用和演化.
6.迭代、增量式開發(fā)是指通過開發(fā)活動的迭代,不斷地產(chǎn)生相應(yīng)的增量.
7.兩次相鄰迭代所得到的發(fā)布版本之差,稱為一個(gè)增量,因此增量是系統(tǒng)中一
個(gè)較小的、可管理的部分(一個(gè)或幾個(gè)構(gòu)造塊兒).
8.次里程碑是進(jìn)行后續(xù)迭代的決策點(diǎn).
9.初始階段的基本目標(biāo)是:獲得與特定用況和平臺無關(guān)的系統(tǒng)體系結(jié)構(gòu)輪廓,
以此建立產(chǎn)品功能范圍;編制初始的業(yè)務(wù)實(shí)例,從業(yè)務(wù)角度指出該項(xiàng)目的價(jià)值,減
少項(xiàng)目主要的錯(cuò)誤風(fēng)險(xiǎn).
精化階段的基本目標(biāo)是:通過捕獲并描述系統(tǒng)的大部分需求(一些關(guān)鍵用
況),建立系統(tǒng)體系結(jié)構(gòu)基線的第一個(gè)版本,主要包括用況模型和分析模型,減少次
要的錯(cuò)誤風(fēng)險(xiǎn);到該階段末,就能夠估算成本、進(jìn)度,并能詳細(xì)地規(guī)劃構(gòu)造階段.
構(gòu)造階段的基本目標(biāo)是:通過演化,形成最終的系統(tǒng)體系結(jié)構(gòu)基線(包括系
統(tǒng)的各種模型和各模型視角下的體系結(jié)構(gòu)描述),開發(fā)完整的系統(tǒng),確保產(chǎn)品可以
開始向客戶交付,即具有初始操作能力.
移交階段的基本目標(biāo)是:確保有一個(gè)實(shí)在的產(chǎn)品發(fā)布給用戶群.期間,培訓(xùn)
用戶如何使用該軟件.
10.在RUP的每次迭代中都要經(jīng)歷一個(gè)核心工作流,即需求獲取、分析、設(shè)
計(jì)、實(shí)現(xiàn)和測試.
11.RUP采用UseCase技術(shù)來獲取需求.其目標(biāo)是:使用UML中的用況、參
與者以及依賴等術(shù)語來抽象客觀實(shí)際問題,形成系統(tǒng)的需求獲取模型-----種特
定的系統(tǒng)/產(chǎn)品模型,并產(chǎn)生該模型視角下的體系結(jié)構(gòu)描述.
1.列出候選需求
2.理解系統(tǒng)語境
為了理解系統(tǒng)語境,往往需要創(chuàng)建領(lǐng)域模型或業(yè)務(wù)模型.在RUP中,
領(lǐng)域模型一般是以類圖予以表達(dá)的,用于捕獲系統(tǒng)語境中的一些重要領(lǐng)域?qū)ο箢?
其中領(lǐng)域?qū)ο蟊磉_(dá)系統(tǒng)工作環(huán)境中存在的事物或發(fā)生的事件.一般來說,領(lǐng)域類以
3種形態(tài)出現(xiàn).
?業(yè)務(wù)對象:表示那些由業(yè)務(wù)操縱(Manipulate)的事物
('Thing),如訂單、賬目和合同等.
?實(shí)在對象(Real-worldObjects)和概念;如教室、運(yùn)動場
地等.
,事件(Events):如上課鈴響九討論開始等.
在RUP中,為了捕獲業(yè)務(wù)處理和其中的業(yè)務(wù)對象,通過以下兩個(gè)層
次來抽象一個(gè)業(yè)務(wù):
(1)業(yè)務(wù)用況模型.業(yè)務(wù)用況模型是以用況圖予以表達(dá)的,如圖
5-7所示.其中包含一些“業(yè)務(wù)用況”和一些“業(yè)務(wù)參與者”,每一個(gè)業(yè)務(wù)用況對
應(yīng)一個(gè)業(yè)務(wù)處理,每一個(gè)業(yè)務(wù)參與者對應(yīng)客戶.
(2)業(yè)務(wù)對象模型.為了精化業(yè)務(wù)用況模型中的每一個(gè)業(yè)務(wù)用
況,RUP引入了3個(gè)術(shù)語,用于表達(dá)參與業(yè)務(wù)的業(yè)務(wù)對象〉:工作人員
(Workers)、業(yè)務(wù)實(shí)體(BusinessEntities)和工作單元(WorkUnits).
其中,工作人員用于表達(dá)參與業(yè)務(wù)處理的各類人員;業(yè)務(wù)實(shí)體用
于表達(dá)在一個(gè)業(yè)務(wù)用況中所使用的某一事物,如一張發(fā)票;工作單元是對最終用戶
而言可形成一個(gè)認(rèn)知整體的實(shí)體的集合.業(yè)務(wù)實(shí)體和工作單元是領(lǐng)域類(如訂單、
貨物項(xiàng)、發(fā)票等)的對象.
RUP通過它們以及它們之間的關(guān)系來描述業(yè)務(wù)用況模型中的每
一個(gè)業(yè)務(wù)用況,其結(jié)果稱為業(yè)務(wù)對象模型.業(yè)務(wù)對象模型可通過交互圖和活動圖予
以表達(dá)
3.捕獲系統(tǒng)功能需求
用況模型是系統(tǒng)的一種概念模型,是對系統(tǒng)功能的抽象,包括系統(tǒng)參
與者、系統(tǒng)用況以及它們之間的關(guān)系.
為了創(chuàng)建系統(tǒng)的用況模型應(yīng)進(jìn)行以下活動.
(1)活動1:發(fā)現(xiàn)并描述參與者(Actor).
(2)活動2:發(fā)現(xiàn)并描述用況.用況模型(概述]
(3)活動3:確定用況的優(yōu)先級(Priority).
(4)活動4:精化用況.
(5)活動5:構(gòu)造用戶界面原型.
(6)活動6:用況模型的結(jié)構(gòu)化.
1)抽取用況描述中那些一般性的、共享的功能,并使用泛
化關(guān)系標(biāo)識和描述那些共享功能.
2)抽取用況描述中附加的或可選的功能,可以使用擴(kuò)展關(guān)
系對它們進(jìn)行標(biāo)識和描述.
3)標(biāo)識用況之間的包含關(guān)系.
12.RUP的需求分析目標(biāo)是:在系統(tǒng)用況模型的基礎(chǔ)上,創(chuàng)建系統(tǒng)分析模型以
及在該分析模型視角下的體系結(jié)構(gòu)描述.
13.為了支持系統(tǒng)分析,RUP引入了以下術(shù)語:分析類、分析包和用況細(xì)化,
并通過這些術(shù)語以及描述它們之間特定關(guān)系的術(shù)語,定義了一個(gè)抽象層.
14.需求分析基本術(shù)語
(1)分析類.分析類(Analys總C~ass)是類的一種衍型,很少有操作和
特征標(biāo)記,而用責(zé)任來定義其行為,并且其屬性和關(guān)系也是概念性的.分析類分為
邊界類、實(shí)體類和控制類3種.
1)邊界類{BoundaryClasses).邊界類用于規(guī)約系統(tǒng)與其參與者
之間的交互,該交互一般涉及向用戶/外部系統(tǒng)發(fā)出請求和從他們那里接受信息.
2)實(shí)體類{EntityClasses).實(shí)體類用于規(guī)約那些需要長期駐
留在系統(tǒng)中的模型化對象以及與行為相關(guān)的某些現(xiàn)象,如人的信息以及實(shí)際的一
個(gè)事件.
3)控制類(ControlClasses).控制類用于規(guī)約基本動作和控制
流的處理與協(xié)調(diào),涉及向其他對象(如邊界類對象、實(shí)體類對象)委派工作.
(2)用況細(xì)化.用況細(xì)化是一個(gè)協(xié)作.針對一個(gè)用況,其行為可用多個(gè)分
析類之間的相互作用來細(xì)化,并記為用況細(xì)化[分析].
(3)分析包{AnalysisPackage).分析包是一種控制信息組織復(fù)雜性
的機(jī)制,提供了分析制品的一種組織手段,形成了一些可管理的部分.
15.分析的主要活動
(1)活動1:體系結(jié)構(gòu)分析(ArchitecturalAnalysis).該活動的目
標(biāo)是:通過標(biāo)識分析包和分析類,建立分析模型和體系結(jié)構(gòu)“骨架飛并標(biāo)識有關(guān)分
析包和分析類的特定需求.
1)任務(wù)1:標(biāo)識分析包.該任務(wù)的基本輸入是系統(tǒng)的用況模型.首
先,基于功能需求和問題域,即考慮需要的應(yīng)用和業(yè)務(wù),對分析工作進(jìn)行劃分,從而
可形成一些分析包.
2)任務(wù)2:處理分析包之間的共性.在已標(biāo)識了系統(tǒng)的一些分析包
的基礎(chǔ)上,就要處理分析包之間的共性.
3)任務(wù)3:標(biāo)識服務(wù)包.在包的層次結(jié)構(gòu)中,除了考慮以上對“共
性”的依賴之外時(shí)常還要考慮對“服務(wù)”的依賴,即應(yīng)用層的包依賴下層提供的
服務(wù)包.
4)任務(wù)4:定義分析包的依賴.該任務(wù)的目標(biāo)是:發(fā)現(xiàn)相對獨(dú)立的
包,實(shí)現(xiàn)包的高內(nèi)聚和低藕合.為此,通常使用特定應(yīng)用包和共用包把分析模型分
為兩個(gè)層面,從而可清晰地區(qū)分特殊性功能和一般性功能.
5)任務(wù)5
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西門子杯S120培訓(xùn)
- 10 巴黎奧運(yùn)-2025年中考英語新熱點(diǎn)時(shí)文閱讀
- 2024年山東省淄博市中考化學(xué)試題卷(含答案解析 ) +2023年中考化學(xué)及答案
- 天津市紅橋區(qū)2024-2025學(xué)年八年級上期中-生物試卷
- 2024年江蘇省淮安市中考語文試題卷(含答案解析)+2023年中考語文及答案
- 2024年聚合工藝?yán)碚摽荚?00題及答案
- 質(zhì)量管理體系過程方法和風(fēng)險(xiǎn)思維專業(yè)解讀與應(yīng)用之34:9績效評價(jià)-9.1監(jiān)視、測量、分析和評價(jià)-9.1.3分析與評價(jià)(雷澤佳編制-2024B1)
- 關(guān)于城鎮(zhèn)道路工程與質(zhì)量驗(yàn)收規(guī)范及新增改表格
- Windows Server網(wǎng)絡(luò)管理項(xiàng)目教程(Windows Server 2022)(微課版)8.5 拓展案例1 RDS的RemoteApp功能
- 心理健康教案
- 新婦聯(lián)活動自我介紹范文通用6篇
- 共和國勛章獲得者申紀(jì)蘭
- 津巴布韋地區(qū)金礦開發(fā)投資項(xiàng)目可行性研究報(bào)告
- 安徽省江淮十校2024屆高三第二次聯(lián)考試題生物
- 大學(xué)生信息安全競賽創(chuàng)新實(shí)踐能力賽題庫(附答案)
- 人工智能與物聯(lián)網(wǎng)的融合發(fā)展
- 腎結(jié)石一病一品
- 鋼管英寸對照表(全)
- 2023年安全工程師《安全生產(chǎn)技術(shù)基礎(chǔ)》考試備考重點(diǎn)題庫(600題版)
- 民事檢察監(jiān)督程序中檢察機(jī)關(guān)調(diào)查取證
- 管道工程新材料與新工藝研究
評論
0/150
提交評論