版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
《軟件工程》串講講義應(yīng)考指導(dǎo)一、課程介紹1、課程性質(zhì)《軟件工程》是全國高等教育自學(xué)考試計算機(jī)及應(yīng)用(獨立本科段)的一門專業(yè)課。軟件工程是研究軟件開發(fā)的一門課程,其主要內(nèi)容包括:軟件開發(fā)所需要的過程、活動和任務(wù),以及這些活動和任務(wù)的組織、實施和管理。2、指定教材本課程指定教材為《軟件工程》,全國高等教育自學(xué)考試指導(dǎo)委員會組編,王立福主編,機(jī)械工業(yè)出版社出版,2011年版。新版教材與2000年版相比,無論是內(nèi)容還是內(nèi)容的組織,都有了很大的變化。整個知識體系、章節(jié)安排、內(nèi)容選取都不一樣,這是考生一定要注意的。新版教材的內(nèi)容組織特點主要體現(xiàn)在:基于對軟件開發(fā)本質(zhì)的認(rèn)識,講解軟件工程的兩大技術(shù)問題:一是開發(fā)邏輯,二是開發(fā)途徑。開發(fā)邏輯涉及軟件生存周期過程、軟件生存周期模型(有關(guān)過程、活動和任務(wù)的組織框架)以及項目軟件生存周期的規(guī)劃與監(jiān)控。開發(fā)途徑涉及結(jié)構(gòu)化方法和面向?qū)ο蠓椒ǎ约爸С周浖u估所需要的軟件測試技術(shù)等。3、章節(jié)體系本課程共有8章:第1章:回答什么是軟件開發(fā)的本質(zhì)第2章:軟件需求與軟件需求規(guī)約第3章:結(jié)構(gòu)化方法第4章:面向?qū)ο蠓椒?UML第5章:面向?qū)ο蠓椒?RUP第6章:軟件測試。第7章:軟件生存周期過程及管理第8章:集成化能力成熟度模型CMMI二、考情分析歷年真題的分布情況由于教材剛剛經(jīng)過改版,新教材剛經(jīng)過2011年10月、2012年01月、2012年10月三次考試。通過對2011年10月、2012年01月這兩次真題的分析,各章所占分值的分布情況如下表所示:年份章名、題型2011-102012-01一、緒論(單項、填空題)3分3分二、軟件需求與軟件需求規(guī)約911三、結(jié)構(gòu)化方法(單、填、簡答、綜合)25分25分四、面向?qū)ο蠓椒?UML(單、填、簡答)11分11分五、面向?qū)ο蠓椒?RUP(單、填、簡答)12分12分六、軟件測試(單、填、簡答、綜合)25分23分七、軟件生存周期過程及管理(單、填、簡)10分10分八、集成化能力成熟度模型CMMI55從上面的統(tǒng)計數(shù)據(jù)可以看出:主要的分值分布在第3章和第6章,分別占到總分的25%左右。第1章和第8章的考核知識點相對較少。題型分析本課程的考試題型分為:單項選擇題,共15小題,每小題2分,共30分填空題,共20個空,每空1分,共20分簡答題,共6小題,每小題5分,共30分綜合應(yīng)用題,共2題,每題10分,共20分復(fù)習(xí)方法(1)以教學(xué)大綱為準(zhǔn)繩。自學(xué)考試的原則是:考試范圍既不超出大綱又不超出教材范圍。所以考生一定根據(jù)教學(xué)大綱規(guī)定的考試內(nèi)容和考核要求,認(rèn)真學(xué)習(xí)教材,要全面、系統(tǒng)了解教材中的基本概念、基本知識。(2)有的放矢。在學(xué)習(xí)的過程中,為了達(dá)到“事半功倍”,要學(xué)會“舍”。要用有限的時間去抓重點,對重點內(nèi)容要進(jìn)行深入細(xì)致的學(xué)習(xí)。(3)注意學(xué)習(xí)方法,理論聯(lián)系實際,注重理解重視理論聯(lián)系實際,訓(xùn)練并逐漸提高運用所學(xué)理論分析和解決實際案例的能力??忌鷳?yīng)當(dāng)注意在全面系統(tǒng)學(xué)習(xí)教材的基礎(chǔ)上,盡可能多地了解和分析實際案例,以便更深刻地領(lǐng)會教材的內(nèi)容,提高分析和解決實際問題的能力。(4)合理安排時間,抓住學(xué)習(xí)重點根據(jù)實際情況自己安排,利用平時空余時間觀看網(wǎng)絡(luò)課件,形成基本的了解。接下來認(rèn)真地做一些練習(xí)題,不清楚的地方再回過頭去看看書,并注意對不同的知識點進(jìn)行比較,加深印象。第一章緒論復(fù)習(xí)建議:本章內(nèi)容較少,主要是讓大家了解軟件工程的提出的背景-軟件危機(jī)以及軟件工程研究的內(nèi)容??荚囶}目類型主要是單項選擇題、填空題,題量在3%~5%之間。第一節(jié)軟件工程概念的提出與發(fā)展軟件危機(jī)速度:軟件的發(fā)展水平遠(yuǎn)遠(yuǎn)滯后于硬件的發(fā)展水平,生產(chǎn)率低下,軟件制造仍然是一種人工集約生產(chǎn)方式質(zhì)量:軟件的質(zhì)量低下,不能滿足用戶的需求、適應(yīng)性差成本:軟件開發(fā)成本居高不下軟件開發(fā)的速度、軟件制品的質(zhì)量、軟件開發(fā)成本是軟件工程的三個核心問題。軟件工程的發(fā)展(1)20世紀(jì)60~80年代瀑布模型;過程化語言;支持工具(2)20世紀(jì)80年代~今軟件復(fù)用技術(shù);軟件生產(chǎn)管理;面向?qū)ο笳Z言(3)近幾年軟件復(fù)用技術(shù):構(gòu)件技術(shù)、平臺技術(shù)、需求工程技術(shù)、領(lǐng)域分析技術(shù)、應(yīng)用集成技術(shù)等。第二節(jié)軟件開發(fā)的本質(zhì)軟件軟件=程序+文檔軟件開發(fā)的本質(zhì):“映射”,即實現(xiàn)問題空間的概念和處理邏輯到解空間的概念和處理邏輯之間的映射。系統(tǒng)建模運用所掌握的知識,通過抽象,給出系統(tǒng)的一個結(jié)構(gòu)。模型模型是一個抽象。模型是在特定意圖下所確定的角度和抽象層次上對物理系統(tǒng)的描述,通常包含對該系統(tǒng)邊界的描述、對系統(tǒng)內(nèi)各模型元素以及它們之間關(guān)系的語義描述。系統(tǒng)模型的類型概念模型:描述軟件是什么軟件模型:實現(xiàn)概念模型的軟件解決方案。包括設(shè)計模型、實現(xiàn)模型和部署模型。第二章需求獲取復(fù)習(xí)建議:正確定義問題,是解決問題的基礎(chǔ)。需求獲取是軟件開發(fā)的第一步,它的工作質(zhì)量決定了整個軟件開發(fā)工作的成敗,因此本章的內(nèi)容是考核的重點內(nèi)容。考核的題目類型主要有:單項選擇題、填空題、簡答題,分值在10%左右。內(nèi)容以基本概念、基本原理為主。需求與需求獲取需求的定義一個需求是有關(guān)一個“要予構(gòu)造”的陳述,描述了待開發(fā)產(chǎn)品/系統(tǒng)功能能力、性能參數(shù)或其它性質(zhì)。需求的基本性質(zhì)必要的無歧義的可測的可跟蹤的可測量的需求的分類★功能需求,是整個需求的主體。非功能需求:性能需求、外部接口需求、設(shè)計約束和質(zhì)量屬性需求。能夠區(qū)分哪些是功能需求,哪些是性能需求。接口需求的類別用戶接口硬件接口軟件接口通信接口內(nèi)存約束運行地點需求設(shè)計約束需求法規(guī)政策硬件限制與其它應(yīng)用的接口并發(fā)操作審計能力控制功能高級語言要求握手協(xié)議應(yīng)用的關(guān)鍵程度安全和保密質(zhì)量屬性可靠性存活性可維護(hù)性用戶友好性需求發(fā)現(xiàn)的技術(shù)自悟交談觀察小組會提煉第二節(jié)需求規(guī)約(SRS)需求規(guī)約的定義★是一個軟件/產(chǎn)品/系統(tǒng)所有需求陳述的正式文檔,它表達(dá)了一個軟件/產(chǎn)品/系統(tǒng)的概念模型。需求規(guī)約的基本性質(zhì)★重要性和穩(wěn)定性程度:對需求進(jìn)行分級可修改的完整的:沒有被遺漏的需求一致的:不存在互斥的需求需求規(guī)約的格式IEEE標(biāo)準(zhǔn)830-1998(IEEE1998)描述的需求規(guī)格說明書模板。需求規(guī)約(規(guī)格說明書)的表達(dá)非形式化的需求規(guī)約半形式化的需求規(guī)約形式化的需求規(guī)約需求規(guī)約的作用★需求規(guī)約是軟件開發(fā)組織和用戶之間一份事實上的技術(shù)合同書,是產(chǎn)品功能及其環(huán)境的體現(xiàn)需求規(guī)約是一個管理控制點對于產(chǎn)品/系統(tǒng)的而設(shè)計,需求規(guī)約是一個正式的、受控的起始點需求規(guī)約是創(chuàng)建產(chǎn)品驗收計劃和用戶指南的基礎(chǔ)第三章結(jié)構(gòu)化方法復(fù)習(xí)建議:自頂向下,逐步求精。本章是整個課程的重點內(nèi)容,其基本思想、基本原理和基本方法是軟件工程理論體系中最經(jīng)典的內(nèi)容,考核題型涉及單項選擇題、填空題、簡答題、綜合應(yīng)用題所有題目類型,占分值25%左右。建議考生在牢記基本概念、基本原理的基礎(chǔ)上,對綜合應(yīng)用題多下工夫,多做練習(xí)。第一節(jié)結(jié)構(gòu)化需求分析需求分析面臨的挑戰(zhàn)問題空間理解人與人之間的通信,“有效溝通”需求的變化性結(jié)構(gòu)化分析中的基本術(shù)語及表示方法數(shù)據(jù)流加工數(shù)據(jù)存儲數(shù)據(jù)源和數(shù)據(jù)潭數(shù)據(jù)流圖DFD圖★用于建立系統(tǒng)功能模型。是一種描述數(shù)據(jù)變換的圖形化工具,其中包含的元素可以是數(shù)據(jù)流、數(shù)據(jù)存儲、加工、數(shù)據(jù)源和數(shù)據(jù)潭等。建模過程(繪制流程圖的過程)自頂向下、功能分解建立系統(tǒng)環(huán)境圖0層圖:從0層圖開始對流程圖中的要素編號1層圖……【例題】繪制數(shù)據(jù)流程圖(2008年10月真題)41.某個學(xué)生成績管理系統(tǒng)的部分功能如下:(1)基本信息管理:教務(wù)管理人員輸入或修改學(xué)期教學(xué)執(zhí)行計劃、學(xué)生名單和教師名單;(2)學(xué)生選課:學(xué)生根據(jù)教學(xué)執(zhí)行計劃進(jìn)行選課;(3)分配任課教師:教務(wù)管理人員為符合開課條件的課程分配教師,并打印任課通知單給教師;(4)成績管理:每門課程的教師在考試評分結(jié)束后將考試成績交給教務(wù)管理人員,教務(wù)管理人員輸入、維護(hù)成績,系統(tǒng)可生成成績單(發(fā)給學(xué)生)、成績統(tǒng)計分析表(發(fā)給教務(wù)管理人員)。請根據(jù)要求畫出該問題的分層數(shù)據(jù)流圖(要求畫出頂層和0層數(shù)據(jù)流圖)?!窘馕觥宽攲訄D:只包含數(shù)據(jù)源/數(shù)據(jù)潭以及相關(guān)的數(shù)據(jù)流和一個處理。成績單學(xué)生成績成績單學(xué)生成績成績管理系統(tǒng)學(xué)生教師成績管理系統(tǒng)學(xué)生教師選課信息任課通知單選課信息任課通知單成績單頂層圖成績單任課通知單教師任課通知單教師學(xué)生學(xué)生成績單成績錄入成績單成績錄入選課信息選課信息任課安排學(xué)生選課基本信息處理任課安排學(xué)生選課基本信息處理學(xué)期教學(xué)執(zhí)行計劃學(xué)生名單學(xué)生選課結(jié)果教師信息0層圖要注意的問題:黑洞(blackhole),即只有輸入而沒有輸出。②只有輸出而沒有輸入。③灰洞(grayhole),即輸入不足以產(chǎn)生輸出。灰洞是經(jīng)常也是不易被察覺的錯誤。④加工處理只用來表示數(shù)據(jù)的處理和變化,避免將計算機(jī)命令作為處理。⑤數(shù)據(jù)流必須起于且/或止于處理,即每一個數(shù)據(jù)流必須有一個處理與之有關(guān),數(shù)據(jù)流不能起于數(shù)據(jù)存貯且止于一個數(shù)據(jù)源/數(shù)據(jù)潭或另一個數(shù)據(jù)存貯;也不能起于某個實體且止于另一個數(shù)據(jù)源/數(shù)據(jù)潭或數(shù)據(jù)存貯。數(shù)據(jù)字典定義數(shù)據(jù)流程圖中所有數(shù)據(jù)流和數(shù)據(jù)存儲的數(shù)據(jù)結(jié)構(gòu)。順序結(jié)構(gòu):+選擇結(jié)構(gòu):|重復(fù)結(jié)構(gòu):{}子界:m..n加工的描述★判定表判斷表(DecisionTable)也稱為決策表,是一個二維表,它說明了每一種條件組合所產(chǎn)生的結(jié)果。該表分為四個象限(quadrants)。左上限代表所有的條件左下限代表可能的結(jié)果右上限代表每一種條件的取值(用Y和N來表示)右下限用X表示所對應(yīng)的條件組合所產(chǎn)生的結(jié)果【例題】畫出顧客購貨的折扣政策的決策表。銷售商在給顧客的折扣時,要考慮付款日期和交易額這兩個因素。若付款日期在10天以內(nèi)(含10天),則當(dāng)交易額超過¥10,000時,給予5%的折扣;當(dāng)交易額在¥5,000到¥10,000之間(含¥5,000)時,給予3%的折扣;當(dāng)交易額低于¥5,000時,沒有折扣。若付款日期超過10天,則無論交易額多少,均不給任何折扣?!窘馕觥颗卸渑袛鄻?DecisionTree)也稱為決策樹,是用來描述在一組不同的條件下,決策的行動是根據(jù)不同條件及其取值來選擇的處理過程。業(yè)務(wù)規(guī)則的描述通??梢允褂门袛鄻溥@一過程描述工具?!纠}】畫出顧客購貨的折扣政策的決策樹。銷售商在給顧客的折扣時,要考慮付款日期和交易額這兩個因素。若付款日期在10天以內(nèi)(含10天),則當(dāng)交易額超過¥10,000時,給予5%的折扣;當(dāng)交易額在¥5,000到¥10,000之間(含¥5,000)時,給予3%的折扣;當(dāng)交易額低于¥5,000時,沒有折扣。若付款日期超過10天,則無論交易額多少,均不給任何折扣。解析:結(jié)構(gòu)化語言【例題】用結(jié)構(gòu)化語言表達(dá):顧客購貨的折扣政策。銷售商在給顧客的折扣時,要考慮付款日期和交易額這兩個因素。若付款日期在10天以內(nèi)(含10天),則當(dāng)交易額超過¥10,000時,給予3%的折扣;當(dāng)交易額在¥5,000到¥10,000之間(含¥5,000)時,給予2%的折扣;當(dāng)交易額低于¥5,000時,沒有折扣。若付款日期超過10天,則無論交易額多少,均不給任何折扣。IF付款日期在10日以上折扣=0ELSEIF交易額>=10000折扣=3%ELSEIF交易額>=5000折扣=2%ELSE折扣=0需求驗證驗證每一個需求滿足5個性質(zhì)驗證需求規(guī)格說明書滿足4個性質(zhì)第二節(jié)結(jié)構(gòu)化設(shè)計分為總體設(shè)計和詳細(xì)設(shè)計總體設(shè)計的任務(wù)把系統(tǒng)的功能需求分配到一個特定的軟件體系結(jié)構(gòu)中。表達(dá)軟件體系結(jié)構(gòu)的工具(1)模塊結(jié)構(gòu)圖(2)層次圖(3)HIPO圖模塊結(jié)構(gòu)圖★結(jié)構(gòu)圖(StructureChart)是對軟件總體結(jié)構(gòu)的一種圖形描述,它顯示了軟件的層次結(jié)構(gòu)、組織和通訊。也就是說,在結(jié)構(gòu)圖中,顯示了軟件是由哪些模塊組成的,這些模塊按照什么樣的層次結(jié)構(gòu)組織在一起以及模塊之間通過什么接口聯(lián)系在一起。結(jié)構(gòu)圖也稱之為控制結(jié)構(gòu)圖、模塊結(jié)構(gòu)圖或系統(tǒng)結(jié)構(gòu)圖。模塊符號模塊調(diào)用關(guān)系模塊間的數(shù)據(jù)傳遞模塊間的控制信息傳遞循環(huán)調(diào)用結(jié)構(gòu)選擇調(diào)用結(jié)構(gòu)數(shù)據(jù)存儲層次圖層次圖中一個矩形框代表一個模塊,框間的連線表示調(diào)用關(guān)系(位于上方的矩形框所代表的模塊調(diào)用位于下方的矩形框所代表的模塊)。HIPO圖HIPO圖是美國IBM公司發(fā)明的“層次圖加輸入/處理/輸出圖”的英文縮寫。為了使HIPO圖具有可追蹤性,在H圖(即層次圖)里除了頂層的方框之外,每個方框都加了編號。H圖+IPO圖總體設(shè)計步驟將DFD圖映射為設(shè)計層面的模塊及模塊調(diào)用。變換流(TransformFlow)?;谧儞Q流的數(shù)據(jù)流程圖是一個線性的順序結(jié)構(gòu),由輸入臂、輸出臂和變換中心三部分組成。其中變換中心使系統(tǒng)數(shù)據(jù)發(fā)生本質(zhì)的變化,輸入臂將物理輸入變換成邏輯輸入,而輸出臂則將邏輯輸出變換成物理輸出。事務(wù)流(TransactionFlow)。事務(wù)流的數(shù)據(jù)流程圖中有一個事務(wù)處理中心,它將輸入分為許多相互平行的加工路徑,然后根據(jù)輸入的屬性,選擇某一加工路徑。如下圖所示。業(yè)務(wù)中心完成以下任務(wù):⑴接收事務(wù)(即輸入數(shù)據(jù));⑵分析每個事務(wù)并確定它的類型;⑶根據(jù)事務(wù)的類型選取一條活動通路?!纠}】控制結(jié)構(gòu)圖的繪制根據(jù)數(shù)據(jù)計算的數(shù)據(jù)流圖:輸入數(shù)據(jù)輸入數(shù)據(jù)數(shù)據(jù)求解打印輸出畫出以轉(zhuǎn)換為中心的控制結(jié)構(gòu)圖?!窘馕觥窟@是一個典型的以“轉(zhuǎn)換為中心”結(jié)構(gòu)的分解,可以轉(zhuǎn)化為:數(shù)據(jù)計算數(shù)據(jù)計算打印輸出數(shù)據(jù)求解輸入數(shù)據(jù)打印輸出數(shù)據(jù)求解輸入數(shù)據(jù)總結(jié):任何處理都可以劃分為兩種轉(zhuǎn)換類型之一:以轉(zhuǎn)換為中心的分解和以業(yè)務(wù)為中心結(jié)構(gòu)的分解。【例題】產(chǎn)生固定資產(chǎn)資料數(shù)據(jù)流程圖如下,做出以業(yè)務(wù)為中心的模塊控制結(jié)構(gòu)圖。【解析】這是以業(yè)務(wù)為中心的處理,根據(jù)模板,可以轉(zhuǎn)化為:報表制作報表制作報表調(diào)度報表類型報表調(diào)度報表類型固定資產(chǎn)卡片資產(chǎn)變動表折舊匯總表固定資產(chǎn)明細(xì)表固定資產(chǎn)卡片資產(chǎn)變動表折舊匯總表固定資產(chǎn)明細(xì)表模塊執(zhí)行一個特殊任務(wù)的一個過程以及相關(guān)的數(shù)據(jù)結(jié)構(gòu)。模塊通常由兩部分組成:模塊接口和模塊體。模塊化“分而治之”和“抽象”。把一個待開發(fā)的軟件分解成若干個簡單的、具有高內(nèi)聚低耦合的模塊,這一過程稱為模塊化。模塊化是系統(tǒng)設(shè)計基本原理/原則之一。內(nèi)聚(Cohesion)是指一個模塊內(nèi)部個成分之間相互關(guān)聯(lián)程度的度量。也就是說,凝聚是對模塊內(nèi)各處理動作組合強度的一種度量。很顯然,一個模塊的內(nèi)聚越大越好。(1)偶然凝聚可維護(hù)性最差(2)邏輯凝聚時間凝聚(4)過程內(nèi)聚(5)通信內(nèi)聚(6)順序凝聚(7)功能凝聚可維護(hù)性最好模塊耦合耦合(coupling)是對兩個模塊之間聯(lián)接程度的一種度量。模塊間的依賴程度越大,則其耦合程度也就越大;反之,模塊間的依賴程度越小,則其耦合程度也就越小。很顯然,為了使軟件具有較好的可維護(hù)性和可修改性,模塊間的關(guān)聯(lián)程度即耦合程度應(yīng)越小越好。因為耦合程度越小,表明模塊間的獨立程度越大,這樣在修改一個模塊時,對其它模塊的影響程度就越小,從而使模塊的修改工作局限于一個最小范圍之內(nèi)。內(nèi)容耦合公共耦合數(shù)據(jù)耦合控制耦合標(biāo)記耦合原則是:盡量用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合的范圍,避免使用內(nèi)容耦合。啟發(fā)式規(guī)則高內(nèi)聚、低耦合。改進(jìn)軟件結(jié)構(gòu),提高軟件獨立性。模塊分解模塊規(guī)模適中力求深度、寬度、扇出、扇入適中。深度:表示其控制的層數(shù)。寬度:同一層次上模塊總數(shù)的最大值。扇出:一個模塊直接控制的下級模塊的數(shù)目。扇入:有多少個上級模塊直接調(diào)用它。原則:頂層模塊扇出比較大,中間層模塊扇出較小,底層模塊具有較大的扇入。盡量使模塊的作用域在其控制域內(nèi)。模塊的控制域:這個模塊本身以及所有直接或間接從屬它的模塊的集合。模塊的作用域:受該模塊內(nèi)一個判斷所影響的所有模塊的集合。盡力降低模塊接口的復(fù)雜度力求模塊功能可以預(yù)測詳細(xì)設(shè)計具體描述模塊結(jié)構(gòu)圖中的每一模塊,即給出實現(xiàn)模塊功能的實施機(jī)制,包括一組例程和數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計方法一種基于結(jié)構(gòu)的編程方法,即采用順序結(jié)構(gòu)、選擇結(jié)構(gòu)和重復(fù)結(jié)構(gòu)進(jìn)行編程,其中每一結(jié)構(gòu)只允許一個入口和一個出口。三種基本的控制結(jié)構(gòu):(a)順序結(jié)構(gòu),先執(zhí)行A再執(zhí)行B;(b)IF-THEN-ELSE型選擇(分支)結(jié)構(gòu);(c)DO-WHILE型循環(huán)結(jié)構(gòu)詳細(xì)設(shè)計工具程序流程圖程序流程圖:程序流程圖又稱為程序框圖,它是歷史最悠久使用最廣泛的描述過程設(shè)計的方法,然而它也是用得最混亂的一種方法。盒圖(N-S圖)出于要有一種不允許違背結(jié)構(gòu)程序設(shè)計精神的圖形工具的考慮,Nassi和Shneiderman提出了盒圖,又稱為N-S圖。(a)順序;(b)IF-THEN-ELSE型分支;(c)CASE型多分支;(d)循環(huán);(e)調(diào)用子程序APAD圖PAD是問題分析圖(ProblemAnalysisDiagram)的英文縮寫,自1973年由日本日立公司發(fā)明以后,已得到一定程度的推廣。它用二維樹形結(jié)構(gòu)的圖來表示程序的控制流,將這種圖翻譯成程序代碼比較容易。下圖給出PAD圖的基本符號。類程序設(shè)計語言PDLPDL也稱為偽碼,它是用正文形式表示數(shù)據(jù)和處理過程的設(shè)計工具。PDL具有嚴(yán)格的關(guān)鍵字外部語法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu);另一方面,PDL表示實際操作和條件的內(nèi)部語法通常又是靈活自由的,以便可以適應(yīng)各種工程項目的需要。因此,一般說來PDL是一種“混雜”語言,它使用一種語言(通常是某種自然語言)的詞匯,同時卻使用另一種語言(某種結(jié)構(gòu)化的程序設(shè)計語言)的語法。可以作為注釋工具直接插在源程序中間。設(shè)計規(guī)約完整準(zhǔn)確地描述滿足需求規(guī)約所要求的所有功能模塊,以及伴隨功能模塊而出現(xiàn)的非功能機(jī)制。設(shè)計規(guī)約包括概要設(shè)計規(guī)約和詳細(xì)設(shè)計規(guī)約。概要設(shè)計規(guī)約指明高層軟件體系結(jié)構(gòu)。系統(tǒng)環(huán)境軟件模塊的結(jié)構(gòu)模塊描述文件結(jié)構(gòu)和全局?jǐn)?shù)據(jù)文件的邏輯結(jié)構(gòu)測試需求詳細(xì)設(shè)計規(guī)約各處理過程的算法算法所涉及的全部數(shù)據(jù)結(jié)構(gòu)的描述【例題】根據(jù)下列變換型的數(shù)據(jù)流圖,設(shè)計出初始軟件結(jié)構(gòu)圖。題40圖【答案】主控模塊主控模塊F9f5F9f5F9f5F9f5輸出模塊G變換模塊輸入模塊輸出模塊G變換模塊輸入模塊輸入A輸入B變換C變換D變換輸入A輸入B變換C變換D變換E變換F【解析】這是一個典型的變換型數(shù)據(jù)流程圖,將其轉(zhuǎn)換為模塊控制圖時,第一層可以分解為三個模塊:輸入模塊、變換模塊、輸出模塊。每一模塊還可以繼續(xù)分解。第四章面向?qū)ο蠓椒║ML復(fù)習(xí)建議:以不變應(yīng)萬變。統(tǒng)一建模語言(UnifiedModelingLanguage,UML)UML是目前流行的建模語言,特別是在網(wǎng)站開發(fā)中廣泛應(yīng)用。UML涉及很多的圖,每一種圖都有不同的圖形符號、作用,在什么情況下用何種圖來描述是本章的重點內(nèi)容。考核題目類型包括單項選擇題、填空題、簡答題,分值在10%~15%之間。需要考生掌握各種UML圖的作用。面向?qū)ο蠼_^程的步驟:需求獲取建立用況(usecase)模型和用況場景需求分析建立活動圖和狀態(tài)圖類圖(建立域模型)順序圖(實現(xiàn)用況)編寫需求規(guī)格說明書需求驗證第一節(jié)UML術(shù)語表對象(object)對象(object)是系統(tǒng)中用來描述客觀事物的一個實體。一個對象由一組屬性和對這組屬性進(jìn)行操作的一組方法組成。對象只描述客觀事物本質(zhì)的與系統(tǒng)目標(biāo)有關(guān)的特征。對象之間通過消息通信,一個對象通過向另一個對象發(fā)送消息激活某一個功能。類類(Class)是具有相同屬性、操作、關(guān)系和語義的一組對象的集合,它為屬于該類的全部對象提供了同一的抽象描述,其內(nèi)部包括屬性和服務(wù)兩個主要部分。類有超類(Superclass)和子類(Subclass)之分。(相對而言)對象與類的關(guān)系猶如程序設(shè)計語言中變量和類型的關(guān)系。對象是類的實例(Instance)。類在類圖上使用包含三個部分的矩形來描述,如下圖4-1所示。最上面的部分顯示類的名稱,中間部分包含類的屬性,最下面的部分包含類的操作(或者說"方法")。圖4-1:類圖中的示例類對象屬性對象或類的屬性(attributes)描述了對象的具體特征。屬性有屬性名和屬性值(或稱屬性狀態(tài))。每條屬性可以包括屬性的可見性、屬性名稱、類型、缺省值和約束特性。UML規(guī)定類的屬性的語法為:可見性屬性名:類型=缺省值{性質(zhì)串}可見性:public(+)、protected(#)、private(-)、包內(nèi)的(~)類的操作通常也被稱為功能,但是它們被約束在類的內(nèi)部,只能作用到該類的對象上。操作名、返回類型和參數(shù)表組成操作界面。UML規(guī)定操作的語法為:可見性操作名(參數(shù)表):返回類型{性質(zhì)串}例如:+取客戶地址(客戶名:字符串):字符串接口接口是操作的一個集合,其中每個操作描述了類、構(gòu)件或子系統(tǒng)的一個服務(wù)。采用具有分欄和關(guān)鍵字<interface>的矩形符號來表示采用小圓圈和半圓圈來表示協(xié)作協(xié)作是一個交互,涉及交互的三要素:交互各方、交互方式以及交互內(nèi)容。用況(usecase)/用況對一組動作序列的描述,系統(tǒng)執(zhí)行這些動作應(yīng)產(chǎn)生對特定參與者有值的、可觀察的結(jié)果。主動類至少具有一個進(jìn)程或線程的類。能夠啟動系統(tǒng)的控制活動,并且其對象的行為通常與其它元素行為并發(fā)的。表示方法:兩條豎線。構(gòu)件系統(tǒng)設(shè)計中的一種模塊化部件,通過外部接口隱藏了它的內(nèi)部實現(xiàn)。制品系統(tǒng)中包含物理信息的、可替代的物理部件。節(jié)點節(jié)點是在運行時存在的物理元素,通常表示一種具有記憶能力和處理能力的計算機(jī)資源。關(guān)聯(lián)(Association)關(guān)聯(lián)反映了類和類之間的靜態(tài)關(guān)系。關(guān)聯(lián)在模型中,特別是在永久業(yè)務(wù)對象模型中是最基本的關(guān)系。鏈(link)是對象之間具有特定語義關(guān)系的抽象。關(guān)聯(lián)名導(dǎo)航角色可見性多重性:多重性(Multiplicity)定義了與一個對象/類相聯(lián)系的對象/類出現(xiàn)一次,該對象/類可能出現(xiàn)的最小和最大的數(shù)目。限定符聚合:一個類是另一類的一部分。組合:是聚合的一種特殊形式關(guān)聯(lián)類約束泛化/繼承繼承:特殊類(子類)的對象擁有其一般類(超類)的全部屬性與服務(wù),稱作特殊類對一般類的繼承(Inheritance)。利用繼承(inheritance),子類可以繼承父類的屬性和方法。子類/父類也可分別叫做特殊類/一般類、子類/超類、派生類/基類等。繼承反映了類之間的一種聯(lián)系或結(jié)構(gòu):一般-特殊結(jié)構(gòu),也稱分類結(jié)構(gòu)(ClassificationStructure),是由一組具有繼承關(guān)系的類所組成的結(jié)構(gòu)。僅由一些單繼承關(guān)系的類形成的結(jié)構(gòu)又稱作層次結(jié)構(gòu)(HierarchyStructure);由一些存在多繼承關(guān)系的類形成的結(jié)構(gòu)又稱作網(wǎng)格結(jié)構(gòu)(LatticeStructure)。多態(tài)性(Polymorphism)是指一般類中定義的屬性或服務(wù)被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一屬性或服務(wù)名在一般類及其各個特殊類中具有不同的語義。多態(tài)是指用同一界面形式表示不同對象類中的不同實現(xiàn)的能力。多態(tài)性的實現(xiàn)基于兩個基本原理:封裝和泛化。多態(tài)性實現(xiàn)的方法:(1)泛化(2)定義一個抽象類——接口類細(xì)化細(xì)化是類目之間的語義關(guān)系,其中一個類目規(guī)約了保證另一類目執(zhí)行的契約。用空心三角形的虛線表示。依賴依賴是一種使用關(guān)系,用于描述一個類目使用另一類目的信息和服務(wù)。用有向虛線段表示。包包是模型元素的一個分組,一個包本身可以被嵌套在其它包中,并且可以含有子包和其它類型的模型元素。第二節(jié)UML的模型表達(dá)格式圖形化工具。圖的類別:(一)結(jié)構(gòu)圖(1)對象結(jié)構(gòu)建?!悎D和對象圖(2)應(yīng)用結(jié)構(gòu)建模—包圖、構(gòu)件圖、部署圖、組合結(jié)構(gòu)圖(二)行為圖對象交互建?!樞驁D、協(xié)作圖(通信圖、交互綜述圖、定時圖)、狀態(tài)圖(狀態(tài)機(jī))對象行為建?!脹r圖、活動圖類圖任何系統(tǒng)都需要從兩方面進(jìn)行描述:結(jié)構(gòu)信息和行為信息。系統(tǒng)的組成表達(dá)了系統(tǒng)各組成要素之間的聯(lián)系,稱為結(jié)構(gòu);這些組成要素的執(zhí)行邏輯稱為行為。在面向?qū)ο蠓椒ㄖ?,系統(tǒng)的結(jié)構(gòu)信息是通過類圖(classdiagram)來描述的;而系統(tǒng)行為信息則通過用況圖、交互圖(包括順序圖和協(xié)作圖)和狀態(tài)圖來描述的。也就是說,前者說明了系統(tǒng)的組成部分是什么,而后者則說明了系統(tǒng)做什么。類圖(classdiagram)表達(dá)了系統(tǒng)的靜態(tài)結(jié)構(gòu)信息,即系統(tǒng)是由哪些類組成的,這些類之間的關(guān)系是什么。類圖顯示系統(tǒng)各個部分以及怎樣將它們組裝起來;但卻不能模擬組裝后系統(tǒng)的工作情況。構(gòu)造類圖的三個關(guān)鍵問題是:系統(tǒng)中有哪些需要關(guān)心的類這些類是如何描述的這些類之間的聯(lián)系是什么創(chuàng)建一個系統(tǒng)的類圖,要涉及4方面的工作:(1)模型化待建系統(tǒng)中的概念,形成類圖中基本元素(2)模型化待建系統(tǒng)中的各種關(guān)系,形成該系統(tǒng)的初始關(guān)系。(3)模型化系統(tǒng)中的協(xié)作,給出該系統(tǒng)的最終類圖。(4)模型化邏輯數(shù)據(jù)庫模式用況圖(usecase圖)用況是對一個參與者(actor)使用系統(tǒng)的一項功能時所進(jìn)行的交互過程的一個文字描述序列。用況是系統(tǒng)、子系統(tǒng)或類與外部的參與者(actor)交互的動作序列的說明,包括可選的動作序列和會出現(xiàn)異常的動作序列。用況圖(UseCaseDiagram)是指反映活動者,系統(tǒng)邊界所封閉的用況,及活動者與用況之間,用況與用況之間關(guān)系的一種圖。6個模型元素:主題用況參與者:系統(tǒng)用戶:是最常見的一種角色。是直接使用系統(tǒng)的人。另一個系統(tǒng):如DSS可作為MIS的一個活動者。補貨系統(tǒng)可作為定單處理系統(tǒng)的活動者。時間:當(dāng)經(jīng)過一定時間觸發(fā)系統(tǒng)中的某個事件時,時間就成了角色。例如定期的某些業(yè)務(wù)處理工作。關(guān)聯(lián)泛化依賴狀態(tài)圖對象或者類的整體行為的某些規(guī)則所能適應(yīng)的對象或類的狀況、情況、條件、形式或生存周期。僅當(dāng)對象的行為規(guī)則不同時,才稱對象處于不同的狀態(tài)。在由對象的全部屬性的屬性值集合所構(gòu)成的笛卡兒乘積中的每一個等價集合(即,使對象的服務(wù)呈現(xiàn)相同行為規(guī)則的屬性值的集合)稱之為對象的一種狀態(tài)。例如,對象發(fā)票(invoice)可以根據(jù)其付款的情況分為三個狀態(tài):未付款(unpaid)、部分付款(partlypaid)以及付清款(fullypaid)。狀態(tài)圖(statechartdiagram)使用狀態(tài)、事件和轉(zhuǎn)換來記錄對象在其生命周期中所歷經(jīng)的狀態(tài)序列。①對象的初始狀態(tài)是圖中任何事件都未對該對象起作用時的狀態(tài)。②狀態(tài)代表對象生命周期中的某一瞬間。③轉(zhuǎn)換表明作為對事件的響應(yīng)結(jié)果,對象將從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)并執(zhí)行某個動作。④觸發(fā)狀態(tài)轉(zhuǎn)換的事件在狀態(tài)轉(zhuǎn)換字符串中命名。雙擊一個狀態(tài)轉(zhuǎn)換,除事件簽名以外,還可用字符串為其加注臨界條件、動作表達(dá)式等標(biāo)簽。順序圖順序圖(sequencediagram)表示了對象之間傳送消息的時間順序,也就是對象之間的交互順序,這些交互是指在場景或用況的事件流中發(fā)生的。每一個對象(類)用一條生命線來表示——即用垂直線代表整個交互過程中對象的生命期。生命線之間的箭頭連線代表消息。順序圖中的基本元素包括:①活動者,指用況中的活動者。②對象,指在用況中的內(nèi)部對象。③生命線:在順序圖中的一個對象下面的豎線,用以顯示這個對象的生命期。時間從上到下流過。生命線實際上顯示了消息的順序,在生命線之上的消息比在它之下的消息先發(fā)生。在生命線中的棒形方框表示的是活動生命線,用以強調(diào)一個對象只有在一個場景的部分中處于活動狀態(tài)。④消息,指場景內(nèi)由事件流定義的內(nèi)部事件成為在對象和活動者或其他對象之間的消息。同步消息——返回消息。同步消息假定有一個返回消息。同步消息用有實心的箭頭表示;返回消息用虛線、箭頭也不是實心來表示。反身消息——消息的發(fā)送方和接收方是同一個對象。異步消息——沒有返回值的消息。用非實心箭頭表示。定時消息——對消息附加時間約束條件,包括:發(fā)送時間、接收時間、已用時間等。第五章面向?qū)ο蠓椒?RUP復(fù)習(xí)建議:RUP(RationalUnifiedProcess,統(tǒng)一軟件開發(fā)過程)。掌握RUP在解決下列三個問題的基本方法。表達(dá)基本信息的術(shù)語用于組織基本信息的表達(dá)格式在不同抽象層之間進(jìn)行“映射”的過程指導(dǎo)。本章考核題目類型包括單項選擇題、填空題、簡答題,分值在10%~15%之間。重點要掌握基本概念、基本原理。1.迭代式開發(fā)在軟件開發(fā)的早期階段就想完全、準(zhǔn)確的捕獲用戶的需求幾乎是不可能的。實際上,我們經(jīng)常遇到的問題是需求在整個軟件開發(fā)工程中經(jīng)常會改變。迭代式開發(fā)允許在每次迭代過程中需求可能有變化,通過不斷細(xì)化來加深對問題的理解。迭代式開發(fā)不僅可以降低項目的風(fēng)險,而且每個迭代過程都可以執(zhí)行版本結(jié)束,可以鼓舞開發(fā)人員。2.管理需求確定系統(tǒng)的需求是一個連續(xù)的過程,開發(fā)人員在開發(fā)系統(tǒng)之前不可能完全詳細(xì)的說明一個系統(tǒng)的真正需求。RUP描述了如何提取、組織系統(tǒng)的功能和約束條件并將其文檔化,用況和腳本的使用已被證明是捕獲功能性需求的有效方法。3.體系結(jié)構(gòu)組件使重用成為可能,系統(tǒng)可以由組件組成?;讵毩⒌?、可替換的、模塊化組件的體系結(jié)構(gòu)有助于降低管理復(fù)雜性,提高重用率。RUP描述了如何設(shè)計一個有彈性的、能適應(yīng)變化的、易于理解的、有助于重用的軟件體系結(jié)構(gòu)。4.可視化建模RUP往往和UML聯(lián)系在一起,對軟件系統(tǒng)建立可視化模型幫助人們提供管理軟件復(fù)雜性的能力。RUP告訴我們?nèi)绾慰梢暬膶浖到y(tǒng)建模,獲取有關(guān)體系結(jié)構(gòu)于組件的結(jié)構(gòu)和行為信息。5.驗證軟件質(zhì)量在RUP中軟件質(zhì)量評估不再是事后進(jìn)行或單獨小組進(jìn)行的分離活動,而是內(nèi)建于過程中的所有活動,這樣可以及早發(fā)現(xiàn)軟件中的缺陷。6.控制軟件變更迭代式開發(fā)中如果沒有嚴(yán)格的控制和協(xié)調(diào),整個軟件開發(fā)過程很快就陷入混亂之中,RUP描述了如何控制、跟蹤、監(jiān)控、修改以確保成功的迭代開發(fā)。RUP通過軟件開發(fā)過程中的制品,隔離來自其他工作空間的變更,以此為每個開發(fā)人員建立安全的工作空間。第一節(jié)RUP的特點以用況驅(qū)動的、以體系結(jié)構(gòu)為中心的迭代、增量式開發(fā)。用況驅(qū)動用況是能夠向用戶提供有價值結(jié)果的系統(tǒng)中的一種功能用況獲取的是功能需求在系統(tǒng)的生存周期中,以用況作為基礎(chǔ),驅(qū)動系統(tǒng)有關(guān)人員對所要建立系統(tǒng)的功能需求進(jìn)行交流,驅(qū)動系統(tǒng)分析、設(shè)計、實現(xiàn)和測試等活動,包括制定計劃、分配任務(wù)、監(jiān)控執(zhí)行和進(jìn)行測試等,并將它們有機(jī)地組織在一起,使各個階段中都可以回溯到用戶的實際需求。以體系結(jié)構(gòu)為中心系統(tǒng)體系結(jié)構(gòu):是對系統(tǒng)語義的概括描述,對所有項目有關(guān)人員都是可以理解的。迭代與增量迭代是重復(fù)的部分增量是增加的部分一個迭代是一個完整的開發(fā)循環(huán),產(chǎn)生一個可執(zhí)行的產(chǎn)品版本,是最終產(chǎn)品的一個子集,它增量式地發(fā)展,從一個迭代過程到另一個迭代過程到成為最終的系統(tǒng)。圖5-1RUP迭代模型二維開發(fā)模型:RUP軟件開發(fā)生命周期是一個二維的軟件開發(fā)模型。橫軸通過時間組織,是過程展開的生命周期特征,體現(xiàn)開發(fā)過程的動態(tài)結(jié)構(gòu),用來描述它的術(shù)語主要包括周期(Cycle)、階段(Phase)、迭代(Iteration)和里程碑(Milestone);縱軸以內(nèi)容來組織為自然的邏輯活動,體現(xiàn)開發(fā)過程的靜態(tài)結(jié)構(gòu),用來描述它的術(shù)語主要包括活動(Activity)、產(chǎn)物(Artifact)、工作者(Worker)和工作流(Workflow)。如圖1:RUP中的軟件生命周期在時間上被分解為四個順序的階段,分別是:初始階段(Inception)、細(xì)化階段(Elaboration)、構(gòu)造階段(Construction)和交付階段(Transition)。每個階段結(jié)束于一個主要的里程碑(MajorMilestones);每個階段本質(zhì)上是兩個里程碑之間的時間跨度。在每個階段的結(jié)尾執(zhí)行一次評估以確定這個階段的目標(biāo)是否已經(jīng)滿足。如果評估結(jié)果令人滿意的話,可以允許項目進(jìn)入下一個階段。圖5-2:RUP二維開發(fā)模型(1)初始階段初始階段的目標(biāo)是為系統(tǒng)建立商業(yè)案例并確定項目的邊界。為了達(dá)到該目的必須識別所有與系統(tǒng)交互的外部實體,在較高層次上定義交互的特性。本階段具有非常重要的意義,在這個階段中所關(guān)注的是整個項目進(jìn)行中的業(yè)務(wù)和需求方面的主要風(fēng)險。對于建立在原有系統(tǒng)基礎(chǔ)上的開發(fā)項目來講,初始階段可能很短。初始階段結(jié)束時是第一個重要的里程碑:生命周期目標(biāo)(LifecycleObjective)里程碑。生命周期目標(biāo)里程碑評價項目基本的生存能力。(2)細(xì)化階段細(xì)化階段的目標(biāo)是分析問題領(lǐng)域,建立健全的體系結(jié)構(gòu)基礎(chǔ),編制項目計劃,淘汰項目中最高風(fēng)險的元素。為了達(dá)到該目的,必須在理解整個系統(tǒng)的基礎(chǔ)上,對體系結(jié)構(gòu)作出決策,包括其范圍、主要功能和諸如性能等非功能需求。同時為項目建立支持環(huán)境,包括創(chuàng)建開發(fā)案例,創(chuàng)建模板、準(zhǔn)則并準(zhǔn)備工具。細(xì)化階段結(jié)束時第二個重要的里程碑:生命周期結(jié)構(gòu)(LifecycleArchitecture)里程碑。生命周期結(jié)構(gòu)里程碑為系統(tǒng)的結(jié)構(gòu)建立了管理基準(zhǔn)并使項目小組能夠在構(gòu)建階段中進(jìn)行衡量。此刻,要檢驗詳細(xì)的系統(tǒng)目標(biāo)和范圍、結(jié)構(gòu)的選擇以及主要風(fēng)險的解決方案。(3)構(gòu)造階段在構(gòu)建階段,所有剩余的構(gòu)件和應(yīng)用程序功能被開發(fā)并集成為產(chǎn)品,所有的功能被詳細(xì)測試。從某種意義上說,構(gòu)建階段是一個制造過程,其重點放在管理資源及控制運作以優(yōu)化成本、進(jìn)度和質(zhì)量。構(gòu)建階段結(jié)束時是第三個重要的里程碑:初始功能(InitialOperational)里程碑。初始功能里程碑決定了產(chǎn)品是否可以在測試環(huán)境中進(jìn)行部署。此刻,要確定軟件、環(huán)境、用戶是否可以開始系統(tǒng)的運作。此時的產(chǎn)品版本也常被稱為“beta”版。(4)交付階段交付階段的重點是確保軟件對最終用戶是可用的。交付階段可以跨越幾次迭代,包括為發(fā)布做準(zhǔn)備的產(chǎn)品測試,基于用戶反饋的少量的調(diào)整。在生命周期的這一點上,用戶反饋應(yīng)主要集中在產(chǎn)品調(diào)整,設(shè)置、安裝和可用性問題,所有主要的結(jié)構(gòu)問題應(yīng)該已經(jīng)在項目生命周期的早期階段解決了。在交付階段的終點是第四個里程碑:產(chǎn)品發(fā)布(ProductRelease)里程碑。此時,要確定目標(biāo)是否實現(xiàn),是否應(yīng)該開始另一個開發(fā)周期。在一些情況下這個里程碑可能與下一個周期的初始階段的結(jié)束重合。第二節(jié)核心工作流RUP中有9個核心工作流,分為6個核心過程工作流(CoreProcessWorkflows)和3個核心支持工作流(CoreSupportingWorkflows)。盡管6個核心過程工作流可能使人想起傳統(tǒng)瀑布模型中的幾個階段,但應(yīng)注意迭代過程中的階段是完全不同的,這些工作流在整個生命周期中一次又一次被訪問。9個核心工作流在項目中輪流被使用,在每一次迭代中以不同的重點和強度重復(fù)。(1)商業(yè)建模商業(yè)建模(BusinessModeling)工作流描述了如何為新的目標(biāo)組織開發(fā)一個構(gòu)想,并基于這個構(gòu)想在商業(yè)用況模型和商業(yè)對象模型中定義組織的過程,角色和責(zé)任。(2)需求需求(Requirement)工作流的目標(biāo)是描述系統(tǒng)應(yīng)該做什么,并使開發(fā)人員和用戶就這一描述達(dá)成共識。為了達(dá)到該目標(biāo),要對需要的功能和約束進(jìn)行提取、組織、文檔化;最重要的是理解系統(tǒng)所解決問題的定義和范圍。(3)分析和設(shè)計分析和設(shè)計(Analysis&Design)工作流將需求轉(zhuǎn)化成未來系統(tǒng)的設(shè)計,為系統(tǒng)開發(fā)一個健壯的結(jié)構(gòu)并調(diào)整設(shè)計使其與實現(xiàn)環(huán)境相匹配,優(yōu)化其性能。分析設(shè)計的結(jié)果是一個設(shè)計模型和一個可選的分析模型。設(shè)計模型是源代碼的抽象,由設(shè)計類和一些描述組成。設(shè)計類被組織成具有良好接口的設(shè)計包(Package)和設(shè)計子系統(tǒng)(Subsystem),而描述則體現(xiàn)了類的對象如何協(xié)同工作實現(xiàn)用況的功能。設(shè)計活動以體系結(jié)構(gòu)設(shè)計為中心,體系結(jié)構(gòu)由若干結(jié)構(gòu)視圖來表達(dá),結(jié)構(gòu)視圖是整個設(shè)計的抽象和簡化,該視圖中省略了一些細(xì)節(jié),使重要的特點體現(xiàn)得更加清晰。體系結(jié)構(gòu)不僅僅是良好設(shè)計模型的承載媒介,而且在系統(tǒng)的開發(fā)中能提高被創(chuàng)建模型的質(zhì)量。(4)實現(xiàn)實現(xiàn)(Implementation)工作流的目的包括以層次化的子系統(tǒng)形式定義代碼的組織結(jié)構(gòu);以組件的形式(源文件、二進(jìn)制文件、可執(zhí)行文件)實現(xiàn)類和對象;將開發(fā)出的組件作為單元進(jìn)行測試以及集成由單個開發(fā)者(或小組)所產(chǎn)生的結(jié)果,使其成為可執(zhí)行的系統(tǒng)。(5)測試測試(Test)工作流要驗證對象間的交互作用,驗證軟件中所有組件的正確集成,檢驗所有的需求已被正確的實現(xiàn),識別并確認(rèn)缺陷在軟件部署之前被提出并處理。RUP提出了迭代的方法,意味著在整個項目中進(jìn)行測試,從而盡可能早地發(fā)現(xiàn)缺陷,從根本上降低了修改缺陷的成本。測試類似于三維模型,分別從可靠性、功能性和系統(tǒng)性能來進(jìn)行。(6)部署部署(Deployment)工作流的目的是成功的生成版本并將軟件分發(fā)給最終用戶。部署工作流描述了那些與確保軟件產(chǎn)品對最終用戶具有可用性相關(guān)的活動,包括:軟件打包、生成軟件本身以外的產(chǎn)品、安裝軟件、為用戶提供幫助。在有些情況下,還可能包括計劃和進(jìn)行beta測試版、移植現(xiàn)有的軟件和數(shù)據(jù)以及正式驗收。(7)配置和變更管理配置和變更管理工作流描繪了如何在多個成員組成的項目中控制大量的產(chǎn)物。配置和變更管理工作流提供了準(zhǔn)則來管理演化系統(tǒng)中的多個變體,跟蹤軟件創(chuàng)建過程中的版本。工作流描述了如何管理并行開發(fā)、分布式開發(fā)、如何自動化創(chuàng)建工程。同時也闡述了對產(chǎn)品修改原因、時間、人員保持審計記錄。(8)項目管理軟件項目管理(ProjectManagement)平衡各種可能產(chǎn)生沖突的目標(biāo),管理風(fēng)險,克服各種約束并成功交付使用戶滿意的產(chǎn)品。其目標(biāo)包括:為項目的管理提供框架,為計劃、人員配備、執(zhí)行和監(jiān)控項目提供實用的準(zhǔn)則,為管理風(fēng)險提供框架等。(9)環(huán)境環(huán)境(Environment)工作流的目的是向軟件開發(fā)組織提供軟件開發(fā)環(huán)境,包括過程和工具。環(huán)境工作流集中于配置項目過程中所需要的活動,同樣也支持開發(fā)項目規(guī)范的活動,提供了逐步的指導(dǎo)手冊并介紹了如何在組織中實現(xiàn)過程。圖5-3RUP核心概念需求獲取RUP運用用況(UseCase)技術(shù)來獲取需求。列出候選的需求:特征列表理解系統(tǒng)語境:領(lǐng)域模型或業(yè)務(wù)模型捕獲功能需求:用況模型捕獲非功能需求:補充需求或針對一些特定的用況特征:是一個新的項(Item)及其簡要描述。領(lǐng)域模型:類圖業(yè)務(wù)對象實在對象事件業(yè)務(wù)對象模型:交互圖、活動圖工作人員業(yè)務(wù)實體工作單元創(chuàng)建系統(tǒng)用況模型的活動和任務(wù):發(fā)現(xiàn)并描述參與者發(fā)現(xiàn)并描述用況確定用況的優(yōu)先級精化用況構(gòu)造用戶界面原型用況模型的結(jié)構(gòu)化需求分析在系統(tǒng)用況模型的基礎(chǔ)上,創(chuàng)建系統(tǒng)分析模型以及在該分析模型視角下的體系結(jié)構(gòu)描述。分析類:是類的一種衍型,很少有操作和特征標(biāo)記,而用責(zé)任來定義其行為,并且其屬性和關(guān)系也是概念性的。存在三種不同類型的類:實體類、邊界類和控制類。(1)實體類實體類描述要保存到持久存儲體中的信息。如:數(shù)據(jù)庫、各種形式的數(shù)據(jù)文件中的信息。包括:活動者類?;顒诱哳惔沓霈F(xiàn)在用況模型中的活動者?;顒诱呤乾F(xiàn)實世界中與系統(tǒng)交互的人和/或機(jī)構(gòu)。例如,訂單處理系統(tǒng)中客戶是一個活動者類。業(yè)務(wù)類描述業(yè)務(wù)的地點、物品、概念和事件。例如訂單處理系統(tǒng)中的訂單、商品等都是業(yè)務(wù)類。(2)邊界類也稱界面類(UI類),是組成系統(tǒng)用戶界面的屏幕顯示、菜單和報表。例如,訂單處理系統(tǒng)中客戶登錄系統(tǒng)的界面、顯示和編輯訂單的屏幕等都屬于UI類。邊界類位于系統(tǒng)與外界的交界處。如:窗體類、報表類、描述通信協(xié)議的類、直接與外設(shè)交互的類、直接與外部系統(tǒng)交互的類。(3)控制類控制類是主要負(fù)責(zé)其它類工作的類。如:主程序類、主窗體類。分析包:分析包體現(xiàn)了“局部化”、“問題分離”等軟件設(shè)計原理。分析包把一些變化限制到一個業(yè)務(wù)過程、一個參與者的行為或一組緊密相關(guān)的用況,形成一些不同的分析包。服務(wù)包和共享包。用況細(xì)化:(2)分析模型的表達(dá)(3)分析的主要活動活動1:體系結(jié)構(gòu)分析活動2:用況分析設(shè)計層定義滿足需求規(guī)約所需要的軟件結(jié)構(gòu)。RUP的設(shè)計目標(biāo):定義滿足系統(tǒng)/產(chǎn)品分析模型所規(guī)約需求的軟件結(jié)構(gòu)。4個術(shù)語:設(shè)計類用況細(xì)化設(shè)計子系統(tǒng)接口兩個角度:系統(tǒng)設(shè)計模型表達(dá)物理分布的系統(tǒng)部署模型設(shè)計層的術(shù)語設(shè)計類:是對系統(tǒng)實現(xiàn)中一個類或類似構(gòu)造的一個無縫抽象。了解設(shè)計類的主要特征:操作、屬性、關(guān)系、方法、實現(xiàn)需求、是否為主動類。用況細(xì)化:描述一個特定用況是如何予以細(xì)化的。設(shè)計子系統(tǒng)接口設(shè)計模型、部署模型、體系結(jié)構(gòu)描述設(shè)計模型部署模型體系結(jié)構(gòu)描述設(shè)計的主要活動活動1:體系結(jié)構(gòu)設(shè)計標(biāo)識節(jié)點和它們的網(wǎng)絡(luò)配置標(biāo)識子系統(tǒng)和它們的接口標(biāo)識在體系結(jié)構(gòu)方面有意義的設(shè)計類和它們的接口標(biāo)識一般性的設(shè)計機(jī)制活動2:用況的設(shè)計標(biāo)識參與用況細(xì)化的設(shè)計類標(biāo)識參與用況細(xì)化的子系統(tǒng)和接口活動3:類的設(shè)計概括描述設(shè)計類標(biāo)識操作標(biāo)識屬性標(biāo)識關(guān)聯(lián)和聚合標(biāo)識泛化描述方法描述狀態(tài)活動4:子系統(tǒng)設(shè)計維護(hù)子系統(tǒng)依賴維護(hù)子系統(tǒng)所提供的接口維護(hù)子系統(tǒng)內(nèi)容RUP的實現(xiàn)RUP實現(xiàn)的目標(biāo):(1)基于設(shè)計類和子系統(tǒng)生成構(gòu)件(2)對構(gòu)成進(jìn)行單元測試(3)進(jìn)行集成和連接(4)把可執(zhí)行的構(gòu)件映射到部署模型RUP實現(xiàn)的主要活動:實現(xiàn)體系結(jié)構(gòu)集成系統(tǒng)實現(xiàn)子系統(tǒng)實現(xiàn)類完成單元測試RUP的測試包括:內(nèi)部測試、中間測試和最終測試。RUP測試包括的主要活動:計劃測試設(shè)計測試實現(xiàn)測試執(zhí)行集成測試執(zhí)行系統(tǒng)測試評價測試第六章軟件測試復(fù)習(xí)建議錯誤是不可避免的,我們要做的就是發(fā)現(xiàn)它,并改正它。軟件測試是保證軟件過程質(zhì)量和軟件產(chǎn)品質(zhì)量的基礎(chǔ)。因此軟件測試也是本課程的重點內(nèi)容,題目類型涉及單項選擇題、填空題、簡答題、綜合應(yīng)用題全部題型,分值在25%左右。本章既有基本概念,也有綜合應(yīng)用,要求考生多做練習(xí)。第一節(jié)軟件測試目標(biāo)與軟件測試過程模型1.軟件測試的對象軟件=程序+文檔測試對象:各個階段產(chǎn)生的源程序和文檔。2.軟件測試的目的基于不同的立場,對軟件測試的目的存在著兩種完全對立的觀點。一種觀點是通過測試暴露出軟件中所包含的故障和缺陷(從用戶的角度);另一種是希望測試成為表明軟件產(chǎn)品中不存在錯誤的過程,驗證該軟件中已正確地實現(xiàn)了用戶的要求,因此,它們傾向于選取導(dǎo)致程序失敗概率最小的測試實例和數(shù)據(jù)。顯然,第二種觀點對完善和提高軟件質(zhì)量和可靠性毫無價值,因此測試的目的應(yīng)該是通過軟件測試盡可能多地發(fā)現(xiàn)并改正軟件種存在的錯誤。3.軟件測試的定義GlenfordJ.Myers把這一觀點歸納為:⑴測試是程序執(zhí)行的過程,其目的在于發(fā)現(xiàn)錯誤。⑵一個好的測試實例在于發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤。⑶一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。因此,軟件測試(SoftwareTesting)是從引起和發(fā)現(xiàn)錯誤的目的出發(fā)執(zhí)行某一程序的過程。4.錯誤的類型功能錯誤:處理功能說明不完整或不確切,致使編程時對功能有誤解而產(chǎn)生的錯誤。系統(tǒng)錯誤:與外部接口錯誤、子程序調(diào)用錯誤、參數(shù)使用錯誤等。過程錯誤:算術(shù)運算錯誤和邏輯運算錯誤數(shù)據(jù)錯誤:數(shù)據(jù)結(jié)構(gòu)、實體、屬性錯誤。編程錯誤:語法錯誤、程序邏輯錯誤、編程書寫錯誤等。5.軟件測試過程模型(1)測試設(shè)計(2)測試執(zhí)行(3)測試結(jié)果比較第二節(jié)軟件測試技術(shù)測試法分為黑盒法和白盒法。黑盒(Black-boxTesting)法:黑盒法又稱為功能測試法,它是根據(jù)程序功能的分析,推演出由函數(shù)定義域中有代表性的元素組成測試集,這些數(shù)據(jù)應(yīng)包括對程序是有效的和無效的輸入,極端的、正常的和特殊的數(shù)據(jù)元素。因此,黑盒測試法是從外界來檢查模塊或程序的功能,也即根據(jù)模塊的輸入和輸出,得出所得結(jié)果得差異。這種測試無須知道模塊的內(nèi)部邏輯,而是給定一輸入,檢查是否會得到所期望的輸出。功能測試法又具體分為等價類法,邊值分析法,因果圖法和錯誤猜測法等。白盒法(White-boxTesting):白盒法也稱之為結(jié)構(gòu)測試或邏輯覆蓋法。它是根據(jù)對軟件內(nèi)部邏輯結(jié)構(gòu)的分析,選取測試數(shù)據(jù)集(即測試用例:TestingCase),而測試數(shù)據(jù)集對程序邏輯的覆蓋程度決定了測試完全性的程度。常用的幾個覆蓋標(biāo)準(zhǔn)有:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋?!纠}?填空題】黑盒法又稱為_______法,黑盒測試法是從外界來檢查模塊或程序的功能,也即根據(jù)模塊的輸入和輸出,得出所得結(jié)果得差異。【答案】功能測試路徑測試技術(shù)(白盒測試)★依據(jù)的是程序的邏輯結(jié)構(gòu)??刂屏鞒虉D基本元素:過程塊、節(jié)點、判定。鏈、路徑的概念。注意:控制流程圖和程序流程圖的差別。測試策略路徑覆蓋:執(zhí)行所有可能穿過程序控制流程的路徑。最強的測試度量。語句覆蓋:至少執(zhí)行程序中所有語句一次。最低的測試度量。分支覆蓋:至少將程序中的每個分支執(zhí)行一次。條件覆蓋與條件組合覆蓋語句覆蓋≤分支覆蓋≤條件組合覆蓋≤路徑覆蓋路徑選取與用例設(shè)計最小的強制性測試需求是語句覆蓋率?!纠}】根據(jù)下列程序流程圖,設(shè)計不超過2組的測試用例,使之滿足語句覆蓋,要求給出每組測試數(shù)據(jù)的執(zhí)行路徑、輸入值、輸出值及兩個判定(3)和(5)的判定結(jié)果。【解析】此類題目屬于綜合應(yīng)用題(每題10分),考核知識點為路徑測試技術(shù)。在本題中,要求設(shè)計測試用例,滿足語句覆蓋,即所有語句都必須執(zhí)行一遍。A、B、C的值決定了程序執(zhí)行的順序A、B、C的值執(zhí)行順序結(jié)果3,6,101,2,3,4,5,7,8725,1,101,2,3,5,6,7,811路徑選取的一般原則選擇最簡單的、具有一定功能含義的入口/出口路徑在已選取的基礎(chǔ)上,選擇無循環(huán)的路徑,選取短路徑、簡單路徑選取沒有明顯功能含義的路徑,要研究該路徑為什么存在基于事務(wù)流的測試技術(shù)事務(wù)與事務(wù)流程圖事務(wù)的含義事務(wù)流事務(wù)流測試的步驟獲得事務(wù)流程圖瀏覽、復(fù)審用例設(shè)計測試執(zhí)行等價類法是根據(jù)程序的I/O特性,將程序的輸入劃分為有限個等價區(qū)段,使得從每個區(qū)段內(nèi)抽取的代表性數(shù)據(jù)進(jìn)行的測試等價于該區(qū)段內(nèi)任何數(shù)據(jù)的測試。對于每個輸入條件存在著程序有效輸入的有效等價類和對程序錯誤輸入的無效等價類。例如,某實數(shù)X的取值范圍假設(shè)為a<X<b,則所有[a+1,b-1]之間的實數(shù)構(gòu)成了有效等價類,而任何[-∞,a]或[b,+∞]之間的實數(shù)構(gòu)成了兩個無效等價類。邊值分析法是一種根據(jù)I/O邊界等價類上或緊靠邊界的條件,選擇測試用例的更有效的方法。例如,給定三個點,判定能否構(gòu)成三角形,可選取兩邊之和等于第三邊的實例作為邊值分析法的測試用例。【例題】有一個學(xué)生選課系統(tǒng):程序的輸入條件為:每個學(xué)生可以選修1至3門課程,試用黑盒測試法完成測試。(1)按等價類劃分法,設(shè)計測試用例(要求列出設(shè)計過程);(2)按邊界值分析法,設(shè)計測試用例?!窘馕觥浚?)等價類法:課程門數(shù)<1課程門數(shù)>3課程門數(shù)1~3(2)邊界值分析法課程門數(shù)=1課程門數(shù)=3因果圖法是通過從用自然語言書寫的功能說明表中找出因—輸入條件和果—輸出結(jié)果,通過因果圖將功能說明轉(zhuǎn)換成一張判定表,然后為每種輸出條件的組合設(shè)計測試用例。錯誤推測法是根據(jù)測試人員的經(jīng)驗和直覺推測程序種可能存在的各種錯誤。第三節(jié)軟件測試步驟軟件測試是按照與系統(tǒng)開發(fā)相反的方向來進(jìn)行的。依次為:單元測試(模塊測試)、集成測試、有效性測試和系統(tǒng)測試。1.單元測試單元測試(UnitTesting)又稱模塊測試(ModuleTesting),或模塊分調(diào),用于測試單個程序模塊,確定模塊的邏輯和功能是否正確。單元測試采用白盒測試技術(shù)。模塊接口局部數(shù)據(jù)結(jié)構(gòu)重要的執(zhí)行路徑錯誤執(zhí)行路徑驅(qū)動模塊和承接模塊。2.集成測試集成測試(IntegrationTesting)用來測試模塊之間接口的正確性,也即模塊之間的數(shù)據(jù)和控制傳遞。集成測試是與單元測試平行進(jìn)行的。集成測試采用黑盒測試技術(shù)。自頂向下的集成測試:需要設(shè)計承接模塊自底向上的集成測試:需求設(shè)計驅(qū)動模塊3.有效性測試目的:發(fā)現(xiàn)軟件實現(xiàn)的功能與需求規(guī)格說明書不一致的錯誤。方法:采用黑盒測試技術(shù)第七章軟件生存周期過程與管理復(fù)習(xí)建議開發(fā)邏輯,是獲取正確軟件的關(guān)鍵!圍繞生命周期的階段劃分,掌握每一階段的任務(wù)、內(nèi)容、工作方法、工作成果。題目類型包括單項選擇題、填空題、簡答題,分值在10%左右。第一節(jié)軟件生存周期過程概述軟件生存周期(SDLC,軟件生命周期)是軟件的產(chǎn)生直到報廢的生命周期,周期內(nèi)有問題定義、可行性分析、總體描述、系統(tǒng)設(shè)計、編碼、調(diào)試和測試、驗收與運行、維護(hù)升級到廢棄等階段,這種按時間分程的思想方法是軟件工程中的一種思想原則,即按部就班、逐步推進(jìn),每個階段都要有定義、工作、審查、形成文檔以供交流或備查,以提高軟件的質(zhì)量。但隨著新的面向?qū)ο蟮脑O(shè)計方法和技術(shù)的成熟,軟件生命周期設(shè)計方法的指導(dǎo)意義正在逐步減少。一般來說,軟件生存周包括計劃、開發(fā)、運行三個時期,每一時期又可分為若干更小的階段。計劃時期的主要任務(wù)是分析用戶要求,分析新系統(tǒng)的主要目標(biāo)以及開發(fā)該系統(tǒng)的可行性。開發(fā)時期要完成設(shè)計和實現(xiàn)兩大任務(wù)具體。具體分為需求分析、概要設(shè)計、詳細(xì)設(shè)計、編碼、測試。其中編碼和測試是軟件開發(fā)期的最后兩個階段。運行時期是軟件生存周期的最后一個時期,軟件人員在這一時期的工作,主要是做好軟件維護(hù)?;具^程指那些與軟件生產(chǎn)直接相關(guān)的活動集。獲取過程供應(yīng)過程開發(fā)過程運行過程維護(hù)過程開發(fā)過程軟件開發(fā)者所從事的一系列活動和任務(wù)。將一組需求轉(zhuǎn)換為一個軟件產(chǎn)品或系統(tǒng)。過程實現(xiàn)系統(tǒng)需求分析系統(tǒng)體系結(jié)構(gòu)設(shè)計軟件需求分析軟件體系結(jié)構(gòu)設(shè)計軟件詳細(xì)設(shè)計軟件編碼和測試軟件集成軟件合格性測試系統(tǒng)集成系統(tǒng)合格性測試軟件安裝軟件驗收支持過程實現(xiàn)選擇合適的生存周期模型選擇相應(yīng)的標(biāo)準(zhǔn)、方法、工具和程序設(shè)計語言制定實施開發(fā)計劃可以使用一些非交付的軟件項。系統(tǒng)需求分析建立系統(tǒng)需求規(guī)格說明對系統(tǒng)需求進(jìn)行評估有關(guān)獲取方面需要的可追蹤性有關(guān)獲取方面需要的一致性可測試性系統(tǒng)體系結(jié)構(gòu)設(shè)計的可行性運行與維護(hù)的可行性系統(tǒng)體系結(jié)構(gòu)設(shè)計建立系統(tǒng)的頂層體系結(jié)構(gòu)對體系結(jié)構(gòu)及每一項的需求進(jìn)行評估系統(tǒng)需求的可追蹤性與系統(tǒng)需求的一致性所使用的設(shè)計標(biāo)準(zhǔn)和方法的適宜性軟件項滿足其所分配的需求的可行性運行與維護(hù)的可行性軟件需求分析建立軟件需求規(guī)格說明功能與能力的規(guī)格說明該軟件項的外部接口合格性需求有關(guān)安全的規(guī)格說明有關(guān)保密的規(guī)格說明人因工程的規(guī)格說明數(shù)據(jù)定義和數(shù)據(jù)庫需求用戶文檔用戶操作與執(zhí)行需求用戶維護(hù)需求對軟件需求進(jìn)行評估對系統(tǒng)需求和系統(tǒng)設(shè)計的可追溯性與系統(tǒng)需求的外部一致性內(nèi)部一致性可測試性軟件設(shè)計的可行性運行和維護(hù)的可行性聯(lián)合復(fù)審軟件體系結(jié)構(gòu)設(shè)計把對軟件項的需求轉(zhuǎn)變?yōu)橐环N體系結(jié)構(gòu)對該軟件項的外部接口和各構(gòu)件之間的接口進(jìn)行頂層設(shè)計進(jìn)行數(shù)據(jù)庫的頂層設(shè)計編制用戶文檔的最初版本為軟件集成定義初步的測試需求文檔對軟件項的體系結(jié)構(gòu)、接口和數(shù)據(jù)庫設(shè)計進(jìn)行評估實施聯(lián)合評審支持過程是指有關(guān)各方按他們的目標(biāo)所從事的一系列支持活動集。支持活動有助于提高系統(tǒng)或軟件產(chǎn)品的質(zhì)量。文檔過程配置管理過程質(zhì)量保證過程驗證過程確認(rèn)過程聯(lián)合評審過程審計過程問題解決過程支持過程—配置管理過程應(yīng)用管理上、技術(shù)上的規(guī)程來支持整個軟件生存周期的過程。過程實現(xiàn):編制配置管理計劃配置標(biāo)識配置控制:標(biāo)識并記錄變更請求配置狀態(tài)統(tǒng)計:編制管理記錄和狀態(tài)報告配置評價發(fā)布管理和交付組織過程與軟件生產(chǎn)組織有關(guān)的活動集。管理過程基礎(chǔ)設(shè)施過程培訓(xùn)過程改進(jìn)過程組織過程—管理過程啟動與范圍定義規(guī)劃測量執(zhí)行與控制評審與評價結(jié)束處理ISO/IEC系統(tǒng)與軟件工程-軟件生存周期過程12207-20082個過程類、7個過程組、43個過程?!跋到y(tǒng)語境的過程”和“軟件開發(fā)的過程”。協(xié)議過程組項目過程組技術(shù)過程組組織上項目使能過程組軟件實現(xiàn)過程組軟件支持過程組軟件復(fù)用過程組第二節(jié)過程描述過程描述過程→活動→任務(wù)供應(yīng)過程活動1:機(jī)遇標(biāo)識活動2:供應(yīng)方投標(biāo)任務(wù)1:需求評審任務(wù)2:做出有關(guān)投標(biāo)或接受合同的決定任務(wù)3:準(zhǔn)備一份提案活動3:合同協(xié)商任務(wù)1:與獲取方就提供的軟件產(chǎn)品或服務(wù),協(xié)商合同條文任務(wù)2:請求對合同的修改,作為變更控制機(jī)制的一個成分?;顒?:合同執(zhí)行任務(wù)1:進(jìn)行獲取需求評審任務(wù)2:定義或選擇一個適合項目范圍、粒度和復(fù)雜性的生存周期模型。任務(wù)3:……軟件實現(xiàn)過程活動:軟件實現(xiàn)策略任務(wù)1:開發(fā)人員選擇合適的生存周期模型任務(wù)2:實施人員任務(wù)3:實施人員選擇合適的標(biāo)準(zhǔn)、方法、工具和編程語言任務(wù)4:開發(fā)進(jìn)行該過程活動的計劃任務(wù)5:對不用交付的軟件項的處理。軟件需求分析過程軟件體系結(jié)構(gòu)設(shè)計軟件驗證過程軟件確認(rèn)過程第三節(jié)應(yīng)用說明是對標(biāo)準(zhǔn)“ISO/IEC系統(tǒng)與軟件工程-軟件生存周期過程12207-2008”系統(tǒng)和軟件軟件是整個系統(tǒng)的組成部分。區(qū)分系統(tǒng)需求分析和軟件需求分析。與《ISO/IEC系統(tǒng)生存周期15288》的關(guān)系當(dāng)系統(tǒng)中包括非常重要的非軟件因素時,要應(yīng)用《ISO/IEC系統(tǒng)生存周期15288》。組織層和項目層項目可能由組織執(zhí)行過程之間的時序關(guān)系沒有明確過程、活動、任務(wù)之間的時間依賴的序列。支持活動之間的迭代和再現(xiàn)。過程分解把過程劃分為一些小的“片段”生存周期模型和階段剪裁第四節(jié)軟件生存周期模型★瀑布模型系統(tǒng)需求軟件需求需求分析設(shè)計編碼測試運行自上而下具有相互銜接的固定順序。每一階段的輸入,即工作對象以及本階段的工作成果,作為輸出傳送到下一階段。瀑布模型的貢獻(xiàn):在決定系統(tǒng)怎樣做之前存在一個需求階段,它鼓勵對系統(tǒng)做什么有一個規(guī)約。在系統(tǒng)構(gòu)造之前有一個設(shè)計階段,它鼓勵規(guī)劃系統(tǒng)結(jié)構(gòu)每一階段都有評審,允許獲取方和用戶的參與前一步作為下一步被認(rèn)可的、文檔化的基線瀑布模型存在的問題:要求客戶能夠完整、正確和清晰地表達(dá)他們的需求,并要求開發(fā)人員一開始就理解這一應(yīng)用。由于需求的不確定性,使設(shè)計、編碼和測試階段都可能發(fā)生延期,并且當(dāng)項目接近結(jié)束時,出現(xiàn)了大量的集成和測試工作。在開始的階段中,很難評估真正的進(jìn)度狀態(tài),并且直到項目結(jié)束之前都不能演示系統(tǒng)的功能。在一個項目的早期階段,過分地強調(diào)了基線和里程碑處的文檔,并可能需要花費更多的時間用于建立一些用處不大的文檔。2.增量模型增量模型融合了瀑布模型的基本成分(重復(fù)應(yīng)用)和原型實現(xiàn)的迭代特征,該模型采用隨著日程時間的進(jìn)展而交錯的線性序列,每一個線性序列產(chǎn)生軟件的一個可發(fā)布的“增量”。當(dāng)使用增量模型時,第1個增量往往是核心的產(chǎn)品,即第1個增量實現(xiàn)了基本的需求,但很多補充的特征還沒有發(fā)布??蛻魧γ恳粋€增量的使用和評估都作為下一個增量發(fā)布的新特征和功能,這個過程在每一個增量發(fā)布后不斷重復(fù),直到產(chǎn)生了最終的完善產(chǎn)品。增量模型適用于“技術(shù)驅(qū)動”的軟件產(chǎn)品開發(fā)。優(yōu)點:采用增量模型的優(yōu)點是人員分配靈活,剛開始不用投入大量人力資源。如果核心產(chǎn)品很受歡迎,則可增加人力實現(xiàn)下一個增量。當(dāng)配備的人員不能在設(shè)定的期限內(nèi)完成產(chǎn)品時,它提供了一種先推出核心產(chǎn)品的途徑。這樣即可先發(fā)布部分功能給客戶,對客戶起到鎮(zhèn)靜劑的作用。此外,增量能夠有計劃地管理技術(shù)風(fēng)險。缺點:增量模型存在以下缺陷:1)由于各個構(gòu)件是逐漸并入已有的軟件體系結(jié)構(gòu)中的,所以加入構(gòu)件必須不破壞已構(gòu)造好的系統(tǒng)部分,這需要軟件具備開放式的體系結(jié)構(gòu)。2)在開發(fā)過程中,需求的變化是不可避免的。增量模型的靈活性可以使其適應(yīng)這種變化的能力大大優(yōu)于瀑布模型和快速原型模型,但也很容易退化為邊做邊改模型,從而使軟件過程的控制失去整體性。3)如果增量包之間存在相交的情況且未很好處理,則必須做全盤系統(tǒng)分析,這種模型將功能細(xì)化后分別開發(fā)的方法較適應(yīng)于需求經(jīng)常改變的軟件開發(fā)過程。3.演化模型演化模型是一種全局的軟件(或產(chǎn)品)生存周期模型。屬于迭代開發(fā)方法。該模型可以表示為:第一次迭代(需求->設(shè)計->實現(xiàn)->測試->集成)->反饋->第二次迭代(需求->設(shè)計->實現(xiàn)->測試->集成)->反饋->……即根據(jù)用戶的基本需求,通過快速分析構(gòu)造出該軟件的一個初始可運行版本,這個初始的軟件通常稱之為原型,然后根據(jù)用戶在使用原型的過程中提出的意見和建議對原型進(jìn)行改進(jìn),獲得原型的新版本。重復(fù)這一過程,最終可得到令用戶滿意的軟件產(chǎn)品。采用演化模型的開發(fā)過程,實際上就是從初始的原型逐步演化成最終軟件產(chǎn)品的過程。演化模型特別適用于對軟件需求缺乏準(zhǔn)確認(rèn)識的情況。演化模型主要針對事先不能完整定義需求的軟件開發(fā)。用戶可以給出待開發(fā)系統(tǒng)的核心需求,并且當(dāng)看到核心需求實現(xiàn)后,能夠有效地提出反饋,以支持系統(tǒng)的最終設(shè)計和實現(xiàn)。軟件開發(fā)人員根據(jù)用戶的需求,首先開發(fā)核心系統(tǒng)。當(dāng)該核心系統(tǒng)投入運行后,用戶試用之,完成他們的工作,并提出精化系統(tǒng)、增強系統(tǒng)能力的需求。軟件開發(fā)人員根據(jù)用戶的反饋,實施開發(fā)的迭代過程。第一迭代過程均由需求、設(shè)計、編碼、測試、集成等階段組成,為整個系統(tǒng)增加一個可定義的、可管理的子集。在開發(fā)模式上采取分批循環(huán)開發(fā)的辦法,每循環(huán)開發(fā)一部分的功能,它們成為這個產(chǎn)品的原型的新增功能。于是,設(shè)計就不斷地演化出新的系統(tǒng)。實際上,這個模型可看作是重復(fù)執(zhí)行的多個“瀑布模型”?!把莼P汀币箝_發(fā)人員有能力把項目的產(chǎn)品需求分解為不同組,以便分批循環(huán)開發(fā)。這種分組并不是絕對隨意性的,而是要根據(jù)功能的重要性及對總體設(shè)計的基礎(chǔ)結(jié)構(gòu)的影響而作出判斷。有經(jīng)驗指出,每個開發(fā)循環(huán)以六周到八周為適當(dāng)?shù)拈L度。演化模型的優(yōu)點:(1)任何功能一經(jīng)開發(fā)就能進(jìn)入測試以便驗證是否符合產(chǎn)品需求。(2)幫助導(dǎo)引出高質(zhì)量的產(chǎn)品要求。如果沒有可能在一開始就弄清楚所有的產(chǎn)品需求,它們可以分批取得。而對于已提出的產(chǎn)品需求,則可根據(jù)對現(xiàn)階段原型的試用而作出修改。(3)風(fēng)險管理可以在早期就獲得項目進(jìn)程數(shù)據(jù),可據(jù)此對后續(xù)的開發(fā)循環(huán)作出比較切實的估算。提供機(jī)會去采取早期預(yù)防措施,增加項目成功的機(jī)率。(4)大大有助于早期建立產(chǎn)品開發(fā)的配置管理,產(chǎn)品構(gòu)建(build),自動化測試,缺陷跟蹤,文檔管理。均衡整個開發(fā)過程的負(fù)荷。(5)開發(fā)中的經(jīng)驗教訓(xùn)能反饋應(yīng)用于本產(chǎn)品的下一個循環(huán)過程,大大提高質(zhì)量與效率。(6)如果風(fēng)險管理發(fā)現(xiàn)資金或時間已超出可承受的程度,則可以決定調(diào)整后續(xù)的開發(fā),或在一個適當(dāng)?shù)臅r刻結(jié)束開發(fā),但仍然有一個具有部分功能的,可工作的產(chǎn)品。(7)心理上,開發(fā)人員早日見到產(chǎn)品的雛型,是一種鼓舞。(8)使用戶可以在新的一批功能開發(fā)測試后,立即參加驗證,以便提供非常有價值的反饋。(9)可使銷售工作有可能提前進(jìn)行,因為可以在產(chǎn)品開發(fā)的中后期取得包含了主要功能的產(chǎn)品原型去向客戶作展示和試用。演化模型的缺點:(1)如果所有的產(chǎn)品需求在一開始并不完全弄清楚的話,會給總體設(shè)計帶來困難及削弱產(chǎn)品設(shè)計的完整性,并因而影響產(chǎn)品性能的優(yōu)化及產(chǎn)品的可維護(hù)性。(2)如果缺乏嚴(yán)格的過程管理的話,這個生命周期模型很可能退化為一種原始的無計劃的“試-錯-改”模式。(3)心理上,可能產(chǎn)生一種影響盡最大努力的想法,認(rèn)為雖然不能完成全部功能,但還是造出了一個有部分功能的產(chǎn)品。(4)如果不加控制地讓用戶接觸開發(fā)中尚未測試穩(wěn)定的功能,可能對開發(fā)人員及用戶都產(chǎn)生負(fù)面的影響。4.螺旋模型螺旋模型(SpiralModel)采用一種周期性的方法來進(jìn)行系統(tǒng)開發(fā)。這會導(dǎo)致開發(fā)出眾多的中間版本。使用它,項目經(jīng)理在早期就能夠為客戶實證某些概念。該模型是快速原型法,以進(jìn)化的開發(fā)方式為中心,在每個項目階段使用瀑布模型法。這種模型的每一個周期都包括需求定義、風(fēng)險分析、工程實現(xiàn)和評審4個階段,由這4個階段進(jìn)行迭代。軟件開發(fā)過程每迭代一次,軟件開發(fā)又前進(jìn)一個層次。采用螺旋模型的軟件過程如下圖所示::
軟件過程螺旋模型基本做法是在“瀑布模型”的每一個開發(fā)階段前引入一個非常嚴(yán)格的風(fēng)險識別、風(fēng)險分析和風(fēng)險控制,它把軟件項目分解成一個個小項目。每個小項目都標(biāo)識一個或多個主要風(fēng)險,直到所有的主要風(fēng)險因素都被確定。螺旋模型強調(diào)風(fēng)險分析,使得開發(fā)人員和用戶對每個演化層出現(xiàn)的風(fēng)險有所了解,繼而做出應(yīng)有的反應(yīng),因此特別適用于龐大、復(fù)雜并具有高風(fēng)險的系統(tǒng)。對于這些系統(tǒng),風(fēng)險是軟件開發(fā)不可忽視且潛在的不利因素,它可能在不同程度上損害軟件開發(fā)過程,影響軟件產(chǎn)品的質(zhì)量。減小軟件風(fēng)險的目標(biāo)是在造成危害之前,及時對風(fēng)險進(jìn)行識別及分析,決定采取何種對策,進(jìn)而消除或減少風(fēng)險的損害。圖7-螺旋模型(1)制定計劃:確定軟件目標(biāo),選定實施方案,弄清項目開發(fā)的限制條件;(2)風(fēng)險分析:分析評估所選方案,考慮如何識別和消除風(fēng)險;(3)實施工程:實施軟件開發(fā)和驗證;(4)客戶評估:評價開發(fā)工作,提出修正建議,制定下一步計劃。螺旋模型很大程度上是一種風(fēng)險驅(qū)動的方法體系,因為在每個階段之前及經(jīng)常發(fā)生的循環(huán)之前,都必須首先進(jìn)行風(fēng)險評估。在實踐中,螺旋法技術(shù)和流程變得更為簡單。迭代方法體系更傾向于按照開發(fā)/設(shè)計人員的方式工作,而不是項目經(jīng)理的方式。螺旋模型中存在眾多變量,并且在將來會有更大幅度的增長,該方法體系正良好運作著。5.噴泉模型噴泉模型是一種以用戶需求為動力,以對象為驅(qū)動的模型,主要用于采用對象技術(shù)的軟件開發(fā)項目。該模型認(rèn)為軟件開發(fā)過程自下而上周期的各階段是相互迭代和無間隙的特性。軟件的某個部分常常被重復(fù)工作多次,相關(guān)對象在每次迭代中隨之加入漸進(jìn)的軟件成分。無間隙指在各項活動之間無明顯邊界,如分析和設(shè)計活動之間沒有明顯的界限,由于對象概念的引入,表達(dá)分析、設(shè)計、實現(xiàn)等活動只用對象類和關(guān)系,從而可以較為容易地實現(xiàn)活動的迭代和無間隙,使其開發(fā)自然地包括復(fù)用。圖7-噴泉模型噴泉模型不像瀑布模型那樣,需要分析活動結(jié)束后才開始設(shè)計活動,設(shè)計活動結(jié)束后才開始編碼活動。該模型的各個階段沒有明顯的界限,開發(fā)人員可以同步進(jìn)行開發(fā)。其優(yōu)點是可以提高軟件項目開發(fā)效率,節(jié)省開發(fā)時間,適應(yīng)于面向?qū)ο蟮能浖_發(fā)過程。由于噴泉模型在各個開發(fā)階段是重疊的,因此在開發(fā)過程中需要大量的開發(fā)人員,因此不利于項目的管理。此外這種模型要求嚴(yán)格管理文檔,使得審核的難度加大,尤其是面對可能隨時加入各種信息、需求與資料的情況。第五節(jié)過程規(guī)劃與管理過程規(guī)劃(P)過程檢測(C)過程執(zhí)行(D)過程調(diào)整(A)過程建立選擇軟件生存周期模型細(xì)化所選擇的生存周期模型為每一個活動或任務(wù)標(biāo)識合適的實例數(shù)目確定活動的時序關(guān)系,并檢查信息流成果:項目的過程計劃過程監(jiān)控過程的監(jiān)控過程改變所產(chǎn)生的影響的評估改變的實施實現(xiàn)改變第八章集成化能力成熟度模型(CMMI)復(fù)習(xí)建議:軟件過程的改善問題。本章內(nèi)容圍繞CMMI的構(gòu)成和等級,介紹能力等級和成熟度等級,主要以概念和原理為主,考核題型為單項選擇題和填空題,分值在5%左右。第一節(jié)背景和原理CMMI的含義全稱是CapabilityMaturityModelIntegration,即軟件能力成熟度模型集成,是由美國國防部與卡內(nèi)基-梅隆大學(xué)和美國國防工業(yè)協(xié)會共同開發(fā)和研制的,其目的是幫助軟件企業(yè)對軟件工程過程進(jìn)行管理和改進(jìn),增強開發(fā)與改進(jìn)能力,從而能按時地、不超預(yù)算地開發(fā)出高質(zhì)量的軟件。其所依據(jù)的想法是:只要集中精力持續(xù)努力去建立有效的軟件工程過程的基礎(chǔ)結(jié)構(gòu),不斷進(jìn)行管理的實踐和過程的改進(jìn),就可以克服軟件開發(fā)中的困難。CMMI為改進(jìn)一個組織的各種過程提供了一個單一的集成化框架,新的集成模型框架消除了各個模型的不一致性,減少了模型間的重復(fù),增加透明度和理解,建立了一個自動的、可擴(kuò)展的框架。因而能夠從總體上改進(jìn)組織的質(zhì)量和效率。CMMI主要關(guān)注點成本效益、明確重點、過程集中和靈活性四個方面。CMMI核心理念:過程管理3.CMMI核心理念:過程管理CMMI是一套融合多學(xué)科的、可擴(kuò)充的產(chǎn)品集合,其研制的初步動機(jī)是為了利用兩個或多個單一學(xué)科的模型實現(xiàn)一個組織的集成化過程改進(jìn)。CMMI的本質(zhì)是軟件管理工程的一個部分。軟件過程改善是當(dāng)前軟件管理工程的核心問題,50多年來計算機(jī)的發(fā)展使人們認(rèn)識到要高效率、高質(zhì)量和低成本地開發(fā)軟件,必須改善軟件生產(chǎn)過程?;赌P偷倪^程改進(jìn)是指用采用能力模型來指導(dǎo)組織的過程改進(jìn),使之過程能力穩(wěn)定的進(jìn)行改善,該組織也能變得更加成熟。CMM的成功促使其他學(xué)科也相繼開發(fā)類似的過程改進(jìn)模型,例如系統(tǒng)工程、需求工程、人力資源、集成產(chǎn)品開發(fā)、軟件采購等等,從CMM衍生出了一些改善模型,比如:SW-CMM,SE-CMM、IPD-CMM等。不過,在同一個組織中多個過程改進(jìn)模型的存在可能會引起沖突和混淆。CMMI就是為了解決怎麼保持這些模式之間的協(xié)調(diào)。CMMI的構(gòu)成軟件能力成熟模型(SW-CMM)軟件工程能力模型SECM集成產(chǎn)品開發(fā)能力成熟度模型IPD-CMM第二節(jié)CMMI的模型部件每一個CMMI模型都有的基本模塊叫做“過程域”。一個過程域并不對如何執(zhí)行一個有效的過程(例如進(jìn)入標(biāo)準(zhǔn)和離開標(biāo)準(zhǔ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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年丙丁雙方關(guān)于金融風(fēng)險管理與咨詢服務(wù)合同
- 2024工業(yè)園區(qū)給排水安裝分包合同
- 產(chǎn)品安全性評估
- 就業(yè)導(dǎo)向的成人職業(yè)教育策略探討
- 2024年廢電池回收合同協(xié)議
- 2024年上海房屋裝修工程保密合同
- 2024年度品牌代理合同(含市場開發(fā))
- 2024年建筑給排水采暖施工資料管理合同
- 2024年小型建筑工程施工合同
- 2024年大數(shù)據(jù)中心建設(shè)委托開發(fā)合同
- 定崗定編基本原理與操作方法課件
- 斜坡地貌課件
- 端正學(xué)習(xí)態(tài)度 課件 心理健康-通用版
- 無形資產(chǎn)評估概述與評估方法概述課件
- 幼兒園《3-6歲兒童學(xué)習(xí)與發(fā)展指南》培訓(xùn)課件
- 英語板書設(shè)計(課件)
- 五年級家長會班主任ppt
- 【教學(xué)課件】正確行使訴訟權(quán)利-示范課件
- 幼兒園中班語言:《誰的尾巴》 課件
- 智能控制技術(shù)教學(xué)講義課件
- 勇敢面對困難課件
評論
0/150
提交評論