版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
軟體工程軟體工程概述軟體工程中常見問題什麼是軟體?什麼是軟體工程?軟體工程和電腦科學(xué)有何區(qū)別?軟體工程和系統(tǒng)工程有何區(qū)別?什麼是軟體過程?什麼是軟體過程模型?軟體工程概述什麼是軟體?軟體:軟體是能夠完成預(yù)定義功能的可執(zhí)行的電腦程式和使程式正常執(zhí)行所需要的數(shù)據(jù),加上描述程式的操作和文檔。簡明地表述,可以寫作:軟體=程式+文檔。軟體=程式+文檔可執(zhí)行部分不可執(zhí)行部分文檔1文檔2文檔3程式軟體工程概述程式:程式是為了解決某個(gè)特定問題而用程式設(shè)計(jì)語言描述的適合電腦處理的語句序列。Main(){inti,j;
//變數(shù)定義
charStr[10];i=i+j;//語句說明
……}ClassOrder{Stringnumber;//屬性
Stringcustomer;create()//方法
{……}……}C語言程式Java語言程式軟體工程概述範(fàn)型:又稱為科學(xué)基質(zhì),代表科學(xué)共同體成員所共有的信念、價(jià)值、技術(shù)手段的總稱。簡單地說,範(fàn)型是某一學(xué)科在一定時(shí)期內(nèi)展開研究活動(dòng)共有的基礎(chǔ)和準(zhǔn)則。編程範(fàn)型:是指導(dǎo)和制約編程活動(dòng)的範(fàn)型,通常在編程語言中體現(xiàn)。命令式編程範(fàn)型面向?qū)ο蟮木幊坦?fàn)型基於構(gòu)件的編程範(fàn)型面向服務(wù)的編程範(fàn)型面向問題的編程範(fàn)型其他範(fàn)型軟體工程概述命令式編程範(fàn)型:又稱過程式編程範(fàn)型,指用程式狀態(tài)和改變程式狀態(tài)的語句描述計(jì)算的編程範(fàn)型。命令式範(fàn)型的典型語言包括:依賴於電腦機(jī)器語言和組合語言、獨(dú)立於電腦的高級語言(如Fortran、Pascal和C等)。記憶體(程式和數(shù)據(jù))
控制器
運(yùn)算器
I/O地址數(shù)據(jù)CPUVonNeumann式電腦體系結(jié)構(gòu)命令式編程範(fàn)型是對VonNeumann式電腦的順序執(zhí)行機(jī)制的直接抽象。軟體工程概述面向?qū)ο蟮木幊坦?fàn)型:是指用封裝了數(shù)據(jù)和對數(shù)據(jù)操作的對象以及對象之間的消息傳遞描述計(jì)算的編程範(fàn)型。Java、C#是典型的面向?qū)ο缶幊坦?fàn)型語言。數(shù)據(jù)操作對象數(shù)據(jù)數(shù)據(jù)消息面向?qū)ο缶幊坦?fàn)型的示意圖對象對象面向?qū)ο缶幊坦?fàn)型的3個(gè)基本特徵:封裝、繼承和多態(tài)。軟體工程概述數(shù)據(jù)對象數(shù)據(jù)數(shù)據(jù)消息對象一個(gè)封裝了多個(gè)對象的構(gòu)件構(gòu)件的介面構(gòu)件:模組化的、可部署、可替換的軟體系統(tǒng)組成部分,它封裝了內(nèi)部的具體實(shí)現(xiàn)並對外提供一組介面?;稑?gòu)件的編程範(fàn)型:指以構(gòu)件的創(chuàng)建,構(gòu)件的管理以及複用已有的構(gòu)件組裝形成應(yīng)用為基本活動(dòng)的編程範(fàn)型。目前有代表性的構(gòu)件規(guī)範(fàn)有COM/DCOM、EJB和CORBA。軟體工程概述服務(wù)1服務(wù)2服務(wù)3服務(wù)4異構(gòu)系統(tǒng)的功能被封裝為服務(wù)以方便複用應(yīng)用1(J2EE)應(yīng)用2(.Net)應(yīng)用3(Legacy)服務(wù)層應(yīng)用層面向服務(wù)的編程範(fàn)型:指以服務(wù)的創(chuàng)建、服務(wù)的管理以及複用已有的服務(wù)組裝形成應(yīng)用為基本活動(dòng)的編程範(fàn)型。面向服務(wù)的編程技術(shù)WebService、BPEL、SCA等。服務(wù):是自治、開放、自描述、與實(shí)現(xiàn)無關(guān)的網(wǎng)路構(gòu)件。軟體工程概述面向問題的編程範(fàn)型:該編程範(fàn)型不需要程式員指明程式實(shí)現(xiàn)過程,只需給出問題和輸入數(shù)據(jù),並指明輸出的形式,就可以得到所需結(jié)果。例如,資料庫查詢語言、報(bào)表語言、電路設(shè)計(jì)專用語言、人工智慧語言(Prolog)等。軟體工程概述文檔:軟體開發(fā)活動(dòng)的記錄,主要供人們閱讀,既可用於專業(yè)人員和用戶之間的通信和交流,也可以用於軟體開發(fā)過程的管理和運(yùn)行階段的維護(hù)。文檔的類型需求分析文檔軟體設(shè)計(jì)文檔軟體測試文檔……軟體工程概述軟體的類型系統(tǒng)軟體:電腦系統(tǒng)軟體是電腦管理自身資源(如CPU、記憶體、外存、外設(shè)等),提高電腦使用效率並為電腦用戶提供各種服務(wù)的基礎(chǔ)軟體。例如,操作系統(tǒng)、資料庫管理系統(tǒng)等。即時(shí)軟體:監(jiān)測、分析和控制現(xiàn)實(shí)世界發(fā)生的事件,能以足夠快的速度對輸入資訊進(jìn)行處理,並在規(guī)定的時(shí)間內(nèi)作出反應(yīng)的軟體。例如,各種設(shè)備運(yùn)行監(jiān)控軟體等。軟體工程概述嵌入式軟體:嵌入式電腦系統(tǒng)將電腦嵌入在某一系統(tǒng)之中,使之成為該系統(tǒng)的重要組成部分,控制該系統(tǒng)的運(yùn)行,進(jìn)而實(shí)現(xiàn)某一特定的物理過程。用於嵌入電腦系統(tǒng)的軟體稱為嵌入式軟體。例如,航空航太系統(tǒng)、指揮系統(tǒng)、汽車控制系統(tǒng)等??茖W(xué)和工程電腦軟體:它們以數(shù)值演算法為基礎(chǔ),對數(shù)值量進(jìn)行處理和計(jì)算,主要用於科學(xué)和工程計(jì)算。例如,數(shù)值天氣預(yù)報(bào)、導(dǎo)彈計(jì)算、石油勘探、計(jì)算輔助設(shè)計(jì)(CAD)等。軟體工程概述事務(wù)處理軟體:用於處理事務(wù)資訊,特別是商務(wù)資訊的電腦軟體。事務(wù)資訊處理是軟體最大的應(yīng)用領(lǐng)域。例如,工資管理系統(tǒng)、人事管理系統(tǒng)、企業(yè)資源計(jì)畫系統(tǒng)(ERP)等。人工智慧軟體:支持電腦系統(tǒng)產(chǎn)生人類某些智能的軟體。它們求解複雜問題不是用傳統(tǒng)的計(jì)算或分析方法,而是採用諸如基於規(guī)則的演繹推理技術(shù)和演算法。應(yīng)用領(lǐng)域有專家系統(tǒng)、模式識別、自然語言理解、人工神經(jīng)網(wǎng)路、程式驗(yàn)證、自動(dòng)程式設(shè)計(jì)、機(jī)器人學(xué)等。軟體工程概述CASE工具軟體:CASE工具軟體一般為支撐軟體生存週期中不同活動(dòng)而研製,包括專案管理工具、需求分析工具、編程環(huán)境(編輯器、編譯器、鏈接器和測試器於一體)、軟體測試工具等。其他軟體:軟體工程概述軟體的特徵軟體開發(fā)更依賴於開發(fā)人員的業(yè)務(wù)素質(zhì)、智力、人員的組織、合作和管理。軟體開發(fā)性質(zhì),如成本和進(jìn)度等難以估計(jì)。軟體開發(fā)成功後,只需對原版進(jìn)行複製。軟體不會(huì)老化。軟體在使用過程中維護(hù)比較複雜。軟體工程概述什麼是軟體工程?軟體工程:軟體工程是用工程、科學(xué)和數(shù)學(xué)的原則與方法研製、維護(hù)電腦軟體的有關(guān)技術(shù)及管理方法。首次提出:1968年,北大西洋公約組織在原西德召開電腦科學(xué)會(huì)議,由FritzBauer首次提出了“軟體工程”的概念。提出背景:解決軟體危機(jī)。軟體工程概述軟體危機(jī):
軟體危機(jī)是指在電腦軟體的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。兩個(gè)主要問題:如何開發(fā)軟體,怎樣滿足對軟體的日益增長的需求。如何維護(hù)數(shù)量不斷膨脹的已有軟體。軟體工程概述軟體危機(jī)的主要表現(xiàn)對軟體開發(fā)成本和進(jìn)度的估計(jì)不準(zhǔn)確用戶不滿意軟體品質(zhì)不高、可靠性差軟體常常不可維護(hù)、錯(cuò)誤難以改正缺乏適當(dāng)?shù)奈臋n資料軟體成本占系統(tǒng)總成本的比例逐年上升軟體開發(fā)速度跟不上電腦發(fā)展速度軟體工程概述產(chǎn)生軟體危機(jī)的原因與軟體本身的特點(diǎn)有關(guān):軟體不同於硬體,它是電腦系統(tǒng)的邏輯部件而不是物理部件。在寫出程式代碼並在電腦運(yùn)行之前,軟體開發(fā)過程的進(jìn)展情況較難衡量,軟體開發(fā)的品質(zhì)也較難評價(jià)。因此,管理和控制軟體開發(fā)過程相當(dāng)困難。軟體不易於維護(hù)軟體維護(hù)通常意味著改正或修改原來的設(shè)計(jì),客觀上使軟體較難維護(hù)。軟體不同於一般程式,它的規(guī)模大,不易於維護(hù)。在軟體開發(fā)過程中,或多或少地採用了錯(cuò)誤的方法和技術(shù)。對用戶需求沒有完整準(zhǔn)確的認(rèn)識,就匆忙著手編寫程式。軟體工程概述解決軟體危機(jī)的途徑技術(shù)措施使用更好的軟體開發(fā)方法和開發(fā)工具組織管理措施軟體開發(fā)不是某種個(gè)體勞動(dòng)的神秘技巧,而應(yīng)該是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程專案。軟體工程概述軟體工程的三要素過程方法工具軟體工程軟體工程三要素方法:軟體工程方法是完成軟體工程專案的技術(shù)手段,它支持專案計(jì)畫和估算、系統(tǒng)和軟體需求分析、軟體設(shè)計(jì)、編碼、測試和維護(hù)。軟體工程概述結(jié)構(gòu)化程式設(shè)計(jì)
面向?qū)ο蠓謥咽綄ο?系統(tǒng)基於構(gòu)件的開發(fā)面向服務(wù)的計(jì)算19701980199020002010軟體開發(fā)方法的演化軟體工程概述工具:軟體工程使用的工具是人類在開發(fā)軟體的活動(dòng)中智力和體力的擴(kuò)展和延伸,它自動(dòng)或半自動(dòng)地支持軟體的開發(fā)和管理、支持各種軟體文檔的生成。過程:軟體工程中的過程貫穿於整個(gè)工程的各個(gè)環(huán)節(jié),在這一過程中,管理人員應(yīng)對軟體開發(fā)的品質(zhì)、進(jìn)度、成本等進(jìn)行評估、管理和控制,包括計(jì)畫跟蹤與控制、成本估算、人員的組織、品質(zhì)保證、配置管理等。軟體工程概述客戶發(fā)起系統(tǒng)開發(fā)人員客戶構(gòu)建系統(tǒng)使用系統(tǒng)需要的資金合同契約需要軟體系統(tǒng)客戶(Customer):是為將要開發(fā)的軟體系統(tǒng)支付費(fèi)用的公司、組織或個(gè)人。開發(fā)人員(Developer):是為客戶構(gòu)建軟體系統(tǒng)的公司、組織或個(gè)人,其中包括任何協(xié)調(diào)並指導(dǎo)程式員和測試人員的管理人員。用戶(User):是將實(shí)際使用系統(tǒng)的人,包括坐在終端前的人、提交數(shù)據(jù)的人和閱讀輸出的人。軟體工程中涉及到人員軟體工程概述軟體工程的目標(biāo)-可修改性(modifiability):容許對系統(tǒng)進(jìn)行修改而不增加原系統(tǒng)的複雜性。-有效性(efficiency):指軟體系統(tǒng)的時(shí)間和空間效率。-可靠性(reliability):能夠防止因概念、設(shè)計(jì)和結(jié)構(gòu)等方面的不完善造成軟體系統(tǒng)失效,具有挽回因操作不當(dāng)造成軟體系統(tǒng)失效的能力。軟體工程概述-可理解性(understandability):系統(tǒng)具有清晰的結(jié)構(gòu),能直接反映問題的需求。-可維護(hù)性(maintainability):軟體產(chǎn)品交付用戶使用後,能夠?qū)λM(jìn)行修改,以便改正潛在的錯(cuò)誤和其他屬性,使軟體產(chǎn)品適應(yīng)環(huán)境變化等方面工作的難易程度。-可重用性(reusability):是指軟體可以在多種場合使用的程度。軟體工程概述-可適應(yīng)性(adaptability):軟體在不同系統(tǒng)約束條件下,使用戶需求得到滿足的難易程度。-可移植性(portability):軟體從一個(gè)電腦系統(tǒng)或環(huán)境搬到另一個(gè)電腦系統(tǒng)或環(huán)境的難易程度。-可追蹤性(traceability):根據(jù)軟體需求對軟體設(shè)計(jì)、程式進(jìn)行正向追蹤,或者根據(jù)程式、軟體設(shè)計(jì)對軟體需求進(jìn)行逆向追蹤的能力。-可互操作性(interoperability):多個(gè)軟體元素相互通信並協(xié)同完成任務(wù)的能力。軟體工程概述軟體工程技術(shù)發(fā)展的一種途徑LINIXUNIXWindowsFortranJavaApplication遮罩電腦硬體的異構(gòu)性發(fā)展了操作系統(tǒng).Net/COMJ2EE/EJBWebservice遮罩不同中間件之間的異構(gòu)性發(fā)展了Web服務(wù)ArchitectureframeworkdesignpatternSupportsoftwaremiddlewareC/C++遮罩應(yīng)用軟體和開發(fā)平臺之間的差異產(chǎn)生了體系結(jié)構(gòu)/框架/設(shè)計(jì)模式遮罩操作系統(tǒng)之間和編程語言之間的異構(gòu)性出現(xiàn)了支撐軟體和中間件軟體工程概述軟體工程和電腦科學(xué)的區(qū)別?電腦科學(xué)研究的是構(gòu)成電腦和軟體系統(tǒng)基礎(chǔ)的有關(guān)理論和方法。軟體工程研究軟體製作中的一些實(shí)際問題。軟體工程應(yīng)以電腦科學(xué)理論作為基礎(chǔ)。軟體工程是一門實(shí)踐性比較強(qiáng)的學(xué)科。對於實(shí)際、複雜的問題,電腦科學(xué)的經(jīng)典理論不可能總是適用的,這時(shí)需要軟體工程的方法來解決。軟體工程概述軟體工程和(電腦)系統(tǒng)工程有何區(qū)別?系統(tǒng):系統(tǒng)是一組相互關(guān)聯(lián)、能在一起工作從而達(dá)到某個(gè)目標(biāo)的相關(guān)元素的集合。電腦系統(tǒng):通過處理資訊來完成某些預(yù)定義目標(biāo)而組織在一起的元素的集合或排列。電腦系統(tǒng)構(gòu)成要素:軟體(Software)、硬體(Hardware)、人(People)、資料庫(Database)、文檔(Document)、過程(Procedure)。軟體工程概述系統(tǒng)過程硬體軟體人資料庫文檔輸入輸出基於電腦的系統(tǒng)要素軟體工程概述電腦系統(tǒng)工程:是指與構(gòu)造基於電腦系統(tǒng)有關(guān)的過程、方法和技術(shù)。硬體工程軟體工程人機(jī)交互工程資料庫工程軟體工程概述什麼是軟體過程(軟體生存週期)?軟體生存週期:軟體從定義開始,經(jīng)過開發(fā)、使用和維護(hù)直到最終退役的全過程稱為軟體生存週期。典型軟體生存週期一般分為:計(jì)畫時(shí)期:問題定義、可行性研究開發(fā)時(shí)期:需求分析、軟體設(shè)計(jì)、軟體編碼、軟體測試運(yùn)行時(shí)期:軟體維護(hù)軟體工程概述需求分析
軟體設(shè)計(jì)編碼維護(hù)
測試問題定義可行性研究計(jì)畫時(shí)期開發(fā)時(shí)期維護(hù)時(shí)期軟體工程概述什麼是軟體過程模型(軟體開發(fā)模型)?軟體開發(fā)模型:一個(gè)軟體專案開發(fā)和維護(hù)的總體過程思路的框架。作用:指出了軟體開發(fā)過程各階段之間的關(guān)係和順序。為軟體開發(fā)過程提供原則和方法。為軟體工程管理提供里程碑和進(jìn)度表。軟體工程概述主要的軟體開發(fā)模型傳統(tǒng)的軟體開發(fā)模型瀑布模型快速原型模型軟體演化模型階段開發(fā)模型螺旋模型面向?qū)ο箝_發(fā)模型統(tǒng)一過程形式化方法模型轉(zhuǎn)換模型模型驅(qū)動(dòng)的開發(fā)模型基於構(gòu)件的軟體開發(fā)模型構(gòu)件集成模型基於複用的軟體開發(fā)模型軟體工程概述瀑布模型(WaterfallModel)是W.Royce於1970年提出。在瀑布模型中,各階段的工作順序展開。瀑布模型的特徵階段間的順序性和依賴性:前一階段工作完成以後,後一階段工作才能開始;前一階段的輸出文檔,是後一階段的輸入文檔。推遲實(shí)現(xiàn)觀點(diǎn):需求分析軟體設(shè)計(jì)編碼品質(zhì)保證觀點(diǎn):每一階段都要完成規(guī)定文檔,沒有完成文檔,就認(rèn)為沒有完成該階段的任務(wù);每一階段都要對已有的文檔進(jìn)行復(fù)審,以便儘早發(fā)現(xiàn)問題,消除隱患。軟體工程概述用戶要求需求分析需求規(guī)格說明總體設(shè)計(jì)軟體結(jié)構(gòu)圖詳細(xì)設(shè)計(jì)模組說明編碼程式清單單元測試綜合測試確認(rèn)測試系統(tǒng)測試瀑布模型的階段和文檔軟體工程概述瀑布模型存在問題軟體開發(fā)的初始階段指明軟體系統(tǒng)的全部需求是困難的,有時(shí)甚至是不現(xiàn)實(shí)的。需求確定以後,用戶和軟體專案負(fù)責(zé)人要等到相當(dāng)長的時(shí)間(設(shè)計(jì)實(shí)現(xiàn)測試運(yùn)行)才能得到一份軟體的最初版本。如果用戶對這個(gè)軟體提出比較大的修改意見,那麼軟體專案將會(huì)受到巨大的人力、財(cái)力和時(shí)間方面的損失。軟體工程概述快速原型模型(RapidPrototypeModel)原型:是一個(gè)部分開發(fā)的產(chǎn)品,它使客戶和開發(fā)人員能對計(jì)畫開發(fā)的系統(tǒng)來實(shí)現(xiàn)一小部分關(guān)鍵需求,以確保需求是一致的、可行和符合實(shí)際的??焖僭湍P停菏紫冉⒁粋€(gè)能夠反映用戶主要需求的原型,讓用戶實(shí)際看一看未來系統(tǒng)的概貌,以便判斷哪些功能是符合需求的,哪些還需要改進(jìn)。然後將原型反復(fù)改進(jìn),最終建立完全符合用戶要求的新系統(tǒng)。軟體工程概述需求分析原型評價(jià)最終系統(tǒng)設(shè)計(jì)
最終系統(tǒng)實(shí)現(xiàn)
原型開發(fā)規(guī)格說明可運(yùn)行原型用戶回饋快速原型模型的生存週期模型軟體工程概述建立快速原型的方法:原型系統(tǒng)僅包含未來的主要功能以及系統(tǒng)的重要介面。原型系統(tǒng)充分展示軟體的可見部分,如數(shù)據(jù)的輸入方式、人機(jī)介面、數(shù)據(jù)的輸出格式。為了儘快向用戶提供原型,開發(fā)原型系統(tǒng)時(shí)應(yīng)儘量使用能縮短開發(fā)週期的語言和工具。將原型系統(tǒng)作為基礎(chǔ),通過補(bǔ)充與修改獲得最終的實(shí)際系統(tǒng)。軟體工程概述階段化開發(fā)模型迴圈週期:從編寫需求文檔到系統(tǒng)交付的時(shí)間稱為迴圈週期。減少迴圈週期的方法:階段化開發(fā)。階段化開發(fā)方法:使用階段化開發(fā)方法設(shè)計(jì)系統(tǒng)時(shí),能夠使其一部分一部分地交付,從而在系統(tǒng)其餘部分正在開發(fā)的同時(shí),用戶已經(jīng)獲得了一部分功能。因此,通常會(huì)存在兩個(gè)並行的系統(tǒng):運(yùn)行系統(tǒng)或產(chǎn)品系統(tǒng)和開發(fā)系統(tǒng)。軟體工程概述階段化開發(fā)模型構(gòu)建發(fā)佈1構(gòu)建發(fā)佈2構(gòu)建發(fā)佈3發(fā)佈1發(fā)佈2發(fā)佈3開發(fā)系統(tǒng)(DevelopmentSystem)開發(fā)人員用戶時(shí)間準(zhǔn)備用來替換現(xiàn)行產(chǎn)品系統(tǒng)的下一個(gè)版本產(chǎn)品系統(tǒng)(ProductionSystem)當(dāng)前正在被客戶和用戶所使用的系統(tǒng)軟體工程概述增量開發(fā)和迭代開發(fā)增量開發(fā)(IncrementalDevelopment)迭代開發(fā)(IterativeDevelopment)在增量開發(fā)中,需求文檔中指定的系統(tǒng)按照功能劃分為子系統(tǒng)。定義發(fā)佈時(shí)首先定義一個(gè)小的功能子系統(tǒng),然後在每一個(gè)新的發(fā)佈中增加新功能。迭代開發(fā)是在一開始就提交一個(gè)完整的系統(tǒng),然後在每一個(gè)新的發(fā)佈中改變每個(gè)子系統(tǒng)的功能軟體工程概述採用階段化開發(fā)方法的原因即使還缺少某些功能,但在早期的發(fā)佈中就可以開始培訓(xùn)。培訓(xùn)過程可以使開發(fā)人員觀察某些功能的如何執(zhí)行的,並為後面的發(fā)佈提供改進(jìn)的建議。這樣開發(fā)人員可以很好地對用戶的回饋?zhàn)龀龇磻?yīng)??梢约霸绲貫槟切┮郧皬奈刺峁┑墓δ荛_拓市場。當(dāng)運(yùn)行系統(tǒng)出現(xiàn)未預(yù)料到的問題時(shí),經(jīng)常性的發(fā)佈可以使開發(fā)人員能全面、快速地修復(fù)這些問題。針對不同的發(fā)佈版本,開發(fā)團(tuán)隊(duì)將重點(diǎn)放在不同的專業(yè)領(lǐng)域技術(shù)上。軟體工程概述螺旋模型(SpiralModel)在瀑布模型和快速原型模型的基礎(chǔ)上增加了風(fēng)險(xiǎn)分析。螺旋模型類似於迭代開發(fā)模型。它以需求和一個(gè)初始計(jì)畫(包括預(yù)算、約束、人員安排方案、設(shè)計(jì)和開發(fā)環(huán)境)為起點(diǎn),在產(chǎn)生“操作概念”文檔(從高層描述系統(tǒng)如何工作)之前,插入一個(gè)風(fēng)險(xiǎn)評估和可選原型的步驟。操作概念是第一次迭代的產(chǎn)品,而需求則是第二次迭代的主要產(chǎn)品。在第四次迭代中,系統(tǒng)開發(fā)產(chǎn)生設(shè)計(jì),而第四次迭代能夠進(jìn)行測試。軟體工程概述螺旋模型(SpiralModel)
確定目標(biāo)、可選方案及約束操作概念預(yù)算1預(yù)算2預(yù)算3預(yù)算4風(fēng)險(xiǎn)分析1需求、生命週期計(jì)畫約束1約束2約束3約束4風(fēng)險(xiǎn)分析2風(fēng)險(xiǎn)分析3風(fēng)險(xiǎn)分析4原型1原型2原型3原型4軟體需求經(jīng)確認(rèn)的需求開發(fā)計(jì)畫軟體設(shè)計(jì)評估可選方案及風(fēng)險(xiǎn)可選方案2可選方案1可選方案3可選方案4制定計(jì)畫集成和測試計(jì)畫開發(fā)與測試經(jīng)確認(rèn)的設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼單元測試系統(tǒng)測試驗(yàn)收測試實(shí)施計(jì)畫軟體工程概述面向?qū)ο蟮拈_發(fā)模型編程語言:Simula67(20世紀(jì)60年代)、Smalltalk(20世紀(jì)80年代)、C++和Java(20世紀(jì)90年代)建模語言:Booch、Rumbaugh和Jacoson共同提出的統(tǒng)一建模語言(UML)。面向?qū)ο蟮幕靖拍顚ο螅簩ο笫菍ΜF(xiàn)實(shí)世界中個(gè)體或事物的抽象表示,是它的屬性和相關(guān)操作的統(tǒng)一封裝體。屬性表示對象的性質(zhì),屬性值規(guī)定了對象所有可能的狀態(tài)。對象的操作是指該對象可以展示的外部服務(wù)。軟體工程概述面向?qū)ο蟮幕靖拍?續(xù))類:類用於表示某些對象的共同特徵(屬性和操作),對象是類的實(shí)例。繼承關(guān)係:它是現(xiàn)實(shí)世界中遺傳關(guān)係的直接模擬,可以來表示類之間的內(nèi)在聯(lián)繫以及對屬性和操作的共用。子類可以沿用父類的某些特徵,同時(shí)子類也可以具有自己獨(dú)立的屬性和操作。整體-部分關(guān)係:分為聚合和組合。聚合表示對象之間鬆散整體-部分關(guān)係,例如,計(jì)算和外設(shè)置之間的關(guān)係。組合表示對象之間強(qiáng)的整體-部分關(guān)係,例如,樹和樹葉之間的關(guān)係。消息:消息傳遞是對象與其外部世界相互關(guān)聯(lián)的唯一途徑。對象可以向其他對象發(fā)送消息以請求服務(wù),也可以回應(yīng)其他對象傳來的消息,完成自身固有的某些操作,從而服務(wù)於其他對象。軟體工程概述例:下麵是某企業(yè)的兩張客戶訂單,如何採用面向?qū)ο蟮母拍顏砻枋鏊鼈??軟體工程概述統(tǒng)一過程(UnifiedProcess,UP)UP的歷史Rational統(tǒng)一過程(RUP)是IBMUP的商業(yè)版本。RUP是UP的擴(kuò)展。軟體工程概述需求分析設(shè)計(jì)實(shí)現(xiàn)測試迭代評估計(jì)畫專案相關(guān)其他活動(dòng)UP中5個(gè)核心工作流其他工作流需求:捕獲系統(tǒng)應(yīng)該做什麼分析:精化和結(jié)構(gòu)化需求設(shè)計(jì):在系統(tǒng)架構(gòu)內(nèi)實(shí)現(xiàn)需求實(shí)現(xiàn):構(gòu)造軟體測試:驗(yàn)證實(shí)現(xiàn)是否如期望那樣工作
軟體工程概述生命週期目標(biāo)生命週期架構(gòu)初始運(yùn)作功能
產(chǎn)品發(fā)佈初始細(xì)化構(gòu)造移交迭代1迭代2迭代3迭代4迭代5迭代6RADIT里程碑階段迭代5個(gè)核心工作流……建立可行性;創(chuàng)建業(yè)務(wù)用例;捕獲基本需求;識別關(guān)鍵風(fēng)險(xiǎn)。創(chuàng)建可執(zhí)行的架構(gòu)基線;精化風(fēng)險(xiǎn)評估;定義品質(zhì)屬性;捕獲80%的功能性需求用例;為構(gòu)造階段創(chuàng)建詳細(xì)計(jì)畫完成所有的需求、分析和設(shè)計(jì)。修復(fù)缺陷;為用戶場所地準(zhǔn)備新軟體;在用戶場所地裁減軟體;如果不可預(yù)見的問題出現(xiàn),修改軟體;創(chuàng)作用戶手冊和其他文檔;提供用戶諮詢;產(chǎn)生專案後評審RADIT目標(biāo)RADITRADITRARADIIT焦點(diǎn)UP的結(jié)構(gòu)軟體工程概述第1次迭代第2次迭代第n-1次迭代初始細(xì)化構(gòu)造移交需求第n次迭代分析設(shè)計(jì)實(shí)現(xiàn)測試隨著專案按UP的階段進(jìn)展,每個(gè)核心工作流的工作量發(fā)生變化軟體工程概述轉(zhuǎn)換模型(TransformationModel)與需求比較後修正形式化規(guī)格說明形式化開發(fā)記錄變換n變換2變換1測試系統(tǒng)需求目標(biāo)系統(tǒng)軟體工程概述模型驅(qū)動(dòng)的軟體開發(fā)模型計(jì)算無關(guān)模型(CIM)平臺獨(dú)立模型(PIM)代碼
(Code)平臺相關(guān)模型(PSM)CIM是非常高級層次的抽象模型,它以一種獨(dú)立於電腦的方式捕獲了系統(tǒng)的關(guān)鍵需求以及問題域的辭彙。PIM是獨(dú)立於任何底層平臺的(例如,EJB,.Net)、表達(dá)軟體系統(tǒng)業(yè)務(wù)語義的模型。PSM包含了所有在PIM中表達(dá)的功能,並且還添加了針對實(shí)現(xiàn)平臺的設(shè)計(jì)思想。軟體系統(tǒng)(SoftwareSystem)
映射產(chǎn)生部署軟體工程概述構(gòu)件集成模型(ComponentIntegrationModel)將新構(gòu)件存入庫中標(biāo)誌候選構(gòu)件在構(gòu)件庫中查找構(gòu)件進(jìn)行下一次迭代構(gòu)造構(gòu)件是否存在構(gòu)件?是否計(jì)畫風(fēng)險(xiǎn)分析用戶通信產(chǎn)品開發(fā)與發(fā)佈用戶評估提取構(gòu)件基於複用的軟體開發(fā)模型軟體工程概述分析領(lǐng)域需求的共性及變化性建立滿足領(lǐng)域需求的軟體架構(gòu)(DSSA)在代碼級實(shí)現(xiàn)面向領(lǐng)域的構(gòu)件可交付系統(tǒng)課程內(nèi)容軟體工程概述軟體需求分析軟體設(shè)計(jì)軟體編碼軟體測試軟體維護(hù)軟體複用軟體工程管理軟體品質(zhì)管理軟體需求分析需求分析的重要性材料1994年,StandishGroup調(diào)查了350多家公司的8000多個(gè)軟體專案,瞭解它們的進(jìn)展情況。調(diào)查結(jié)果讓人吃驚,31%的軟體專案在完成之前就取消了。在大公司中,只有9%的專案按時(shí)在預(yù)算內(nèi)交付,在小公司內(nèi),滿足這些標(biāo)準(zhǔn)的有16%。為了瞭解其中的原因,Standish請求被調(diào)查者解釋專案失敗的原因,首要的原因如下:不完整的需求(13.1%)。缺少用戶的參與(12.4%)。缺乏資源(10.6%)。軟體需求分析不切實(shí)際的期望(9.9%)。缺乏行政支持(9.3%)。改變需求和規(guī)格說明(8.7%)。缺乏計(jì)畫(8.1%)。不再需要該系統(tǒng)(7.5%)。軟體需求分析什麼是需求?需求(Requirement)就是對期望的行為的表達(dá)。需求處理的是對象或?qū)嶓w,它們可能處於的狀態(tài),以及用於改變狀態(tài)或?qū)ο筇匦缘墓δ?。需求指定客戶想要什麼行為,而不是如何實(shí)現(xiàn)這些行為。需求描述了現(xiàn)實(shí)世界中的現(xiàn)象之間的交互,而不涉及系統(tǒng)的現(xiàn)象。軟體需求分析需求分析的任務(wù)建立分析模型(AnalysisModel)。編寫需求規(guī)格說明(SoftwareRequirementSpecification,SRS)。需求分析的步驟需求獲取需求提煉:分析建模需求描述:編寫SRS需求驗(yàn)證軟體需求分析需求獲取的常用方法常規(guī)的需求獲取方法建立聯(lián)合分析小組客戶訪談問題分析與確認(rèn)快速原型法在需求分析中的應(yīng)用採用快速原型法的步驟:利用各種分析技術(shù)和方法,生成一個(gè)簡化的需求規(guī)格說明。對需求規(guī)格說明進(jìn)行必要的檢查和修改後,確定原型的軟體結(jié)構(gòu)、用戶介面和數(shù)據(jù)結(jié)構(gòu)等;軟體需求分析在現(xiàn)有的工具和環(huán)境的幫助下快速生成可運(yùn)行的軟體原型並進(jìn)行測試、改進(jìn);將原型提交給用戶評估並徵求用戶的修改意見;重複上述過程,直到原型得到用戶認(rèn)可。軟體需求分析應(yīng)用案例瀑布模型實(shí)例:教材購銷系統(tǒng)(面向過程軟體)(1)根據(jù)學(xué)校的教學(xué)計(jì)畫,向選課的學(xué)生及時(shí)供應(yīng)所需要的教材審查學(xué)生(個(gè)人或班級)購書的有效性,對有效的書單發(fā)售教材。對屬於計(jì)畫供應(yīng)但暫時(shí)缺貨的教材進(jìn)行缺書登記。(2)根據(jù)缺書登記補(bǔ)充採購所缺的教材,通知學(xué)生補(bǔ)購將缺書登記表匯總為待購教材計(jì)畫待購教材到貨後,及時(shí)通知學(xué)生補(bǔ)購軟體需求分析學(xué)生購書單審查有效性學(xué)生用書表售書登記表開發(fā)票教材存量表列印發(fā)票列印領(lǐng)書單並登記售書發(fā)票收費(fèi)蓋章領(lǐng)書單發(fā)書缺書登記匯總並統(tǒng)計(jì)缺書缺書單書庫保管員進(jìn)書產(chǎn)生補(bǔ)售書單教材購書系統(tǒng)流程圖售書購書軟體需求分析結(jié)構(gòu)化分析模型結(jié)構(gòu)化分析模型的組成結(jié)構(gòu)DD是系統(tǒng)所涉及的各種數(shù)據(jù)對象的總和E-R圖描述數(shù)據(jù)對象之間的關(guān)係,它代表軟體的數(shù)據(jù)模型。DFD圖指明系統(tǒng)中的數(shù)據(jù)是如何流動(dòng)和變換的,以及描述使用數(shù)據(jù)流進(jìn)行變換的功能。在E-R圖中出現(xiàn)的每個(gè)數(shù)據(jù)對象的屬性均可用DOSPEC說明來描述在DFD圖中出現(xiàn)的每個(gè)功能的描述寫在PSPEC中。CFD圖是為適應(yīng)即時(shí)系統(tǒng)的分析而提出的,描述了進(jìn)程之間的控制流及系統(tǒng)的行為特徵。CSPEC圖用於指明系統(tǒng)在外部事件的作用下將會(huì)如何動(dòng)作軟體需求分析數(shù)據(jù)流圖(DataFlowDiagram,DFD)數(shù)據(jù)流圖是用來刻畫數(shù)據(jù)流和加工的資訊系統(tǒng)建模技術(shù),它用簡單的圖形符號分別表示數(shù)據(jù)流、加工、數(shù)據(jù)源以及外部實(shí)體。數(shù)據(jù)流圖也稱為泡泡圖(BubbleChart)、變換圖(TransformationGraph)或過程模型(ProcessModel)。加工/轉(zhuǎn)換/處理數(shù)據(jù)流實(shí)體(數(shù)據(jù)源點(diǎn)或數(shù)據(jù)終點(diǎn))數(shù)據(jù)存儲(chǔ)(數(shù)據(jù)檔或資料庫)DFD圖的符號軟體需求分析數(shù)據(jù)流(DataFlow):數(shù)據(jù)流是帶有箭頭的數(shù)據(jù)流向,表示數(shù)據(jù)元素的運(yùn)動(dòng)方向。數(shù)據(jù)流是一組成分固定的數(shù)據(jù)組成的。每一個(gè)數(shù)據(jù)流必須有一個(gè)合適的名字。為數(shù)據(jù)流命名時(shí),可以從其組成成分或含義角度來考慮。數(shù)據(jù)流可以從加工流向加工,從加工流向數(shù)據(jù)存儲(chǔ)或從數(shù)據(jù)存儲(chǔ)流向加工,也可以數(shù)據(jù)源點(diǎn)流向加工或從加工流向數(shù)據(jù)終點(diǎn)。兩個(gè)加工之間可以有幾股數(shù)據(jù)流。檢查取款單合理性取款單合理取款單不合理取款單生產(chǎn)統(tǒng)計(jì)生產(chǎn)日報(bào)生產(chǎn)月報(bào)生產(chǎn)統(tǒng)計(jì)報(bào)表軟體需求分析加工(Process):加工表示要執(zhí)行的一個(gè)功能,如檢查取款單合理性、生產(chǎn)、統(tǒng)計(jì)等,用圓圈表示。加工是對數(shù)據(jù)進(jìn)行的操作,如果把數(shù)據(jù)流比喻為工廠的傳送帶,則加工就好像工廠裏的加工工序。每個(gè)加工都要有一個(gè)確定的名稱來命名,名稱的選取要能夠反映加工的主要功能。如果加工命名發(fā)生困難,則加工中可能還包含幾種類型不同的加工,需要進(jìn)一步進(jìn)行分解。每個(gè)加工一般有一個(gè)編號,編號說明該處理在層次分解中的位置。軟體需求分析加工通常以下列方式處理數(shù)據(jù):只改變數(shù)據(jù)流的狀態(tài),但不改變數(shù)據(jù)流的結(jié)構(gòu)。例如,加工“檢查取款單的合理性”用來檢查每一個(gè)取款單是否合理。如果取款單合理,傳送一個(gè)“合理取款單”數(shù)據(jù)流,如果不合理,則傳送一個(gè)“不合理取款單”數(shù)據(jù)流,“合理取款單”和“不合理取款單”的組成成分完全一樣,都是取款單,只是狀態(tài)發(fā)生了變化。將一種數(shù)據(jù)流轉(zhuǎn)換為另一種數(shù)據(jù)流,即數(shù)據(jù)流的結(jié)構(gòu)發(fā)生了變化。例如,輸入數(shù)據(jù)流“生產(chǎn)日報(bào)”或“生產(chǎn)月報(bào)”經(jīng)過加工“統(tǒng)計(jì)”後變成輸出數(shù)據(jù)流“生產(chǎn)統(tǒng)計(jì)報(bào)表”,顯然,傳入、傳出的數(shù)據(jù)流的組成發(fā)生了變化。軟體需求分析實(shí)體(Entity):也稱為外部項(xiàng),它既可以作為數(shù)據(jù)流的源,也可以作為數(shù)據(jù)流終點(diǎn),用方框表示。實(shí)體有外部實(shí)體和內(nèi)部實(shí)體之分。外部實(shí)體定義了系統(tǒng)的邊界,它們向系統(tǒng)提供輸入,接收由系統(tǒng)所產(chǎn)生的輸出,分別稱為源點(diǎn)和終點(diǎn)。軟體需求分析數(shù)據(jù)存儲(chǔ)(DataStore):表示數(shù)據(jù)的存儲(chǔ)位置,用雙杠表示。數(shù)據(jù)存儲(chǔ)和加工之間的箭頭有指向數(shù)據(jù)存儲(chǔ)、背離數(shù)據(jù)存儲(chǔ)和雙向三種:(1)如果加工要讀數(shù)據(jù),則數(shù)據(jù)是從數(shù)據(jù)存儲(chǔ)流出;(2)如果加工要寫或修改數(shù)據(jù),則數(shù)據(jù)流是流向數(shù)據(jù)存儲(chǔ);(3)如果加工既要讀數(shù)據(jù),又要寫數(shù)據(jù),則數(shù)據(jù)流是雙向的。檢查取款單合理性取款單合理取款單不合理取款單賬目審查發(fā)票購書單各班學(xué)生用書表教材存量表發(fā)票無效購書單軟體需求分析層次DFD對於一個(gè)大型的系統(tǒng),如果用一張數(shù)據(jù)流圖畫出所有的數(shù)據(jù)流和加工,則圖紙將極其龐大複雜,因而難於理解。為了達(dá)到簡單性要求,通常採用層次或自頂向下分解的方法,將系統(tǒng)DFD中的每一個(gè)加工視為一個(gè)子系統(tǒng),然後繼續(xù)向下分解,直到每一個(gè)加工容易理解為止,這就是結(jié)構(gòu)化分析方法“自頂向下、逐步分解”的基本原則。分層DFD由:頂層、底層和中間層組成。頂層DFD說明系統(tǒng)邊界,即系統(tǒng)的輸入和輸出數(shù)據(jù)流,頂層DFD只有一張。底層DFD由一些不可再分解的加工組成,這些加工稱為基本加工。在頂層和底層之間的是中間層,中間層的DFD描述了某個(gè)加工的分解,而它的組成部分又要進(jìn)一步分解。軟體需求分析教材購銷系統(tǒng)學(xué)生書庫保管員購書單領(lǐng)書單缺書單進(jìn)書通知頂層DFD1銷售學(xué)生書庫保管員購書單領(lǐng)書單缺書單進(jìn)書通知2採購F1教材存量表F2缺書登記進(jìn)書通知第2層DFD(0)教材購銷系統(tǒng)的層次DFD軟體需求分析1.1審查購書單有效性學(xué)生購書單無效購書單領(lǐng)書單發(fā)票F1教材存量表F2缺書登記進(jìn)書通知第3層DFD-銷售子系統(tǒng)(1)1.2開發(fā)票1.3列印發(fā)票1.4登記售書和列印領(lǐng)書單1.5登記缺書1.6產(chǎn)生補(bǔ)售書單采購有效購書單F3學(xué)生用書表F4售書登記表發(fā)票學(xué)生暫缺書單補(bǔ)售書單軟體需求分析銷售F1教材存量表F2缺書登記進(jìn)書通知2.3修改教材庫存和待購量2.2按出版社統(tǒng)計(jì)缺書2.1按書號匯總?cè)睍鳩1待購教材表F6教材一覽表書庫保管員缺書單進(jìn)書通知第3層DFD-採購子系統(tǒng)(2)軟體需求分析DFD建模由外向裏繪製DFD畫出系統(tǒng)的輸入輸出數(shù)據(jù)流。畫出系統(tǒng)的內(nèi)部。畫出加工的內(nèi)部。由頂向下繪製DFD繪製分層DFD時(shí)應(yīng)該注意以下幾個(gè)方面問題:編號、父圖與子圖的平衡、局部數(shù)據(jù)存儲(chǔ)、分解程度等。軟體需求分析編號:為了便於管理,需要按照以下規(guī)則為數(shù)據(jù)流圖和其中的加工編號:頂層DFD無圖號,頂層加工不編號;第二層DFD的圖號為0,第二層DFD中的加工編號為1,2,…,n;第三層每個(gè)DFD的編號就是父圖中加工的編號,第三層每個(gè)DFD中加工的編號由DFD圖號、小數(shù)點(diǎn)和局部號構(gòu)成,以下各層以此類推。120ABABV圖編號1.11.21.3AVMN1處理編號軟體需求分析父圖與子圖的平衡:父圖中某個(gè)加工的輸入輸出數(shù)據(jù)流應(yīng)該與相應(yīng)子圖的輸入輸出數(shù)據(jù)流相同,層次DFD的這種特點(diǎn)稱為“平衡”。平衡是指子圖的所有輸入數(shù)據(jù)流必須是父圖中相應(yīng)加工的輸入數(shù)據(jù)流,子圖的所有輸出數(shù)據(jù)流必須是父圖中相應(yīng)加工的輸出數(shù)據(jù)流。1234ADCBEFG4.14.24.3ALPHADUEFVW軟體需求分析局部數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)被畫出來的原則:數(shù)據(jù)存儲(chǔ)被用作DFD中某個(gè)加工之間的介面時(shí),該數(shù)據(jù)存儲(chǔ)就必須劃出來。一旦數(shù)據(jù)存儲(chǔ)作為DFD中的一個(gè)獨(dú)立成分被畫出來時(shí),它與其它成分之間的聯(lián)繫也應(yīng)同時(shí)畫出來,即應(yīng)畫出每個(gè)加工是讀還是寫該數(shù)據(jù)存儲(chǔ)。例如,在教材購銷系統(tǒng)中,第3層DFD-銷售子系統(tǒng)中的數(shù)據(jù)存儲(chǔ)“F3學(xué)生用書表”並沒有出現(xiàn)在父DFD中,這是因?yàn)樗窃揇FD圖的局部數(shù)據(jù),而不是父DFD中加工之間的介面。而第2層DFD-銷售子系統(tǒng)中的數(shù)據(jù)存儲(chǔ)“F1教材存量表”則出現(xiàn)在父DFD中,這是因?yàn)樗歉窪FD中加工“銷售”和“採購”之間的介面。軟體需求分析分解程度:分解應(yīng)該自然,概念上合理、清晰;只要不影響DFD的易理解性,可以適當(dāng)?shù)囟喾纸?,這樣可以減少DFD的層數(shù);一般來說,在上層分解的快一些,而在下層則分解得慢些,這是因?yàn)榧s接近下層功能越具體,分解速度快會(huì)增加用戶理解的困難;每一加工分解的子加工一般不超過7個(gè)。軟體需求分析數(shù)據(jù)字典(DataDictionary,DD)數(shù)據(jù):出現(xiàn)在軟體中的數(shù)據(jù)可以分為3種情況:(1)只含有一個(gè)資料項(xiàng)目(或數(shù)據(jù)元素);(2)由多個(gè)相關(guān)資料項(xiàng)目組成的數(shù)據(jù)流;(3)數(shù)據(jù)存儲(chǔ)(數(shù)據(jù)檔或資料庫)。數(shù)據(jù)字典:數(shù)據(jù)字典是對軟體系統(tǒng)中的每個(gè)數(shù)據(jù)規(guī)定一個(gè)條目,以保持?jǐn)?shù)據(jù)在系統(tǒng)中的一致性。數(shù)據(jù)字典用簡潔、清晰、易理解的文字描述條目,說明數(shù)據(jù)流圖的加工功能、性能、要求及設(shè)計(jì)約束等。數(shù)據(jù)流圖與數(shù)據(jù)字典配套使用,完整地描述軟體需求。軟體需求分析數(shù)據(jù)流名:發(fā)票別名:購書發(fā)票組成:學(xué)號+姓名+{書號+單價(jià)+數(shù)量+總價(jià)}+書費(fèi)合計(jì)備注:數(shù)據(jù)流例如,發(fā)票是一個(gè)數(shù)據(jù)流,其條目內(nèi)容與書寫格式如下表所示。{}表示重複,重複的次數(shù)不限。“學(xué)號”、“姓名”、“書費(fèi)合計(jì)”在數(shù)據(jù)流中僅出現(xiàn)一次,其餘資料項(xiàng)目則每買一本書就出現(xiàn)一次。資料項(xiàng)目名稱數(shù)據(jù)流“發(fā)票”字典條目軟體需求分析數(shù)據(jù)檔例如,各班學(xué)生用書表是一個(gè)數(shù)據(jù)檔,其條目內(nèi)容與書寫格式如下表所示。文件名:各班學(xué)生用書表別名:組成:{系編號+專業(yè)和班編號+年級+{書號}}組織:按系、專業(yè)和班編號從小到大排列備注:數(shù)據(jù)檔“各班學(xué)生用書表”字典條目在該條目中,每個(gè)記錄記載一個(gè)班在一學(xué)年中需要的教材。軟體需求分析資料項(xiàng)目:無論是獨(dú)立的或者包含在數(shù)據(jù)流或檔中的資料項(xiàng)目,一般都應(yīng)在字典中設(shè)置相應(yīng)的條目。資料項(xiàng)目名:年級別名:取值及含義:F-freshman,一年級M-sophomore,二年級J-junior,三年級S-senior,四年級備注:資料項(xiàng)目“年級”的條目軟體需求分析資料項(xiàng)目名:數(shù)量別名:購書量取值:正整數(shù)備注:資料項(xiàng)目“年級”的條目資料項(xiàng)目名:書費(fèi)合計(jì)別名:取值:00.00-99.99備注:資料項(xiàng)目“書費(fèi)合計(jì)”的條目軟體需求分析在字典中使用=、+、|、{}、()等符號和注釋符“*……*”將數(shù)據(jù)流或數(shù)據(jù)檔寫成公式形狀的定義。符號含義=表示由…構(gòu)成A+B表示A和B的順序連接A|B表示A和B的選擇連接{A}n
表示n個(gè)A的重複連接{}表示可以重複數(shù)據(jù)()表示可選數(shù)據(jù)軟體需求分析例:發(fā)票=(學(xué)號)+姓名+{發(fā)票行}+書費(fèi)合計(jì)發(fā)票行=書號+單價(jià)+數(shù)量+總價(jià)各班學(xué)生用書表={系編號+專業(yè)和班編號+年級+{書號}}系編號={數(shù)字}2
*兩位數(shù)字,例如01,12*專業(yè)和班編號={數(shù)字}3
*三位數(shù)字,例如305*年級=F/M/J/S*在4個(gè)字母中任選一個(gè)*書號={字母}+{數(shù)字}*例如,Math11,Eng2等*軟體需求分析加工說明(ProcessSPECification,PSPEC)加工說明是對DFD中每個(gè)加工所作出的說明。加工說明是由輸入數(shù)據(jù)、加工邏輯和輸出數(shù)據(jù)等部分組成加工邏輯闡明把輸入數(shù)據(jù)轉(zhuǎn)換為輸出數(shù)據(jù)的策略,是加工說明的主體。加工說明的主要描述方法:結(jié)構(gòu)化語言(StructuredLanguage)判定表(DecisionTable)判定樹(DecisionTree)軟體需求分析結(jié)構(gòu)化語言自然語言加上結(jié)構(gòu)化的形式,就形成了結(jié)構(gòu)化語言。結(jié)構(gòu)化語言是一種介於自然語言與程式設(shè)計(jì)語言之間的語言,既具有結(jié)構(gòu)化程式清晰易讀的優(yōu)點(diǎn),由具有自然語言的靈活性,不受程式設(shè)計(jì)語言的嚴(yán)格的語法約束。結(jié)構(gòu)化程式可以使用順序、選擇、迴圈等控制結(jié)構(gòu)。結(jié)構(gòu)化語言借用這些結(jié)構(gòu)來描述加工,其形式簡單,易於用戶理解。軟體需求分析審查並開發(fā)票的加工邏輯軟體需求分析判定表:判定表採用表格化的形式,適合於表達(dá)含有複雜判斷的加工邏輯。判定表和結(jié)構(gòu)化語言可以配合使用。判定樹:判定樹是判定表的圖形表示,其適用場合與判定表相同。用戶可以根據(jù)習(xí)慣,在兩種中選用一種。例,某公司為推銷人員制定了獎(jiǎng)勵(lì)辦法,把獎(jiǎng)金與推銷金額及預(yù)定收款的數(shù)額掛鉤。凡每週推銷金額不超過10000元,按預(yù)收貨款是否超過50%,分別獎(jiǎng)勵(lì)推銷額的6%或4%。反之若推銷金額超過10000元,則按預(yù)收貨款是否超過50%,分別寄獎(jiǎng)勵(lì)推銷額的8%或5%。對於月薪低於1000元的推銷員,分別另發(fā)鼓勵(lì)獎(jiǎng)300、200和500、300元。判定表:44頁的圖3.12判定樹:44頁的圖3.13軟體需求分析加工說明的作用是說明“做什麼”,而不是“怎麼做”,因此對加工邏輯的描述不宜過細(xì),過細(xì)就變成設(shè)計(jì),使開發(fā)人員過早地捲入如何實(shí)現(xiàn)的細(xì)節(jié),但是,需求說明又是軟體設(shè)計(jì)的依據(jù),如果過簡,又會(huì)使設(shè)計(jì)人員無據(jù)可依。軟體需求分析實(shí)體關(guān)係圖(Entity-RelationshipDiagram,ERD)基本概念:實(shí)體(Entity):表示為矩形,代表具有共同性質(zhì)和行為的現(xiàn)實(shí)世界對象構(gòu)成的集合。屬性(Attribute):是實(shí)體上的注釋,描述實(shí)體相關(guān)的數(shù)據(jù)或性質(zhì)。屬性可以採用屬性表來描述。關(guān)係(Relationship):用菱形表示,實(shí)體之間數(shù)量上的對應(yīng)關(guān)係如下圖所示。0:11:10:m1:m軟體需求分析例如,下圖描述了電話機(jī)、生產(chǎn)廠商、經(jīng)銷商和用戶以及它們之間的關(guān)係。從下圖可以看出,一個(gè)生產(chǎn)廠商可以生產(chǎn)多個(gè)電話機(jī),其產(chǎn)品可以由許多經(jīng)銷商經(jīng)銷,每個(gè)經(jīng)銷商可以將電話賣給許多用戶,每個(gè)用戶可以使用零至多部電話機(jī)。電話機(jī)生產(chǎn)廠商生產(chǎn)經(jīng)銷商用戶使用購買經(jīng)銷軟體需求分析電話機(jī)話筒話機(jī)按鍵連接線書教科書課外輔導(dǎo)書雜誌ERD表示整體-部分關(guān)係ERD表示一般-特殊關(guān)係實(shí)體-關(guān)係圖可以表示實(shí)體之間的整體-部分關(guān)係和一般-特殊關(guān)係軟體需求分析控制流圖(ControlFlowDiagram,CFD)與控制說明(ControlSPECification,CSPEC)即時(shí)系統(tǒng):即時(shí)系統(tǒng)與現(xiàn)實(shí)世界的外部實(shí)體進(jìn)行交互時(shí)具有鮮明的時(shí)間特性。其數(shù)據(jù)流應(yīng)顯式地區(qū)分為時(shí)間上連續(xù)的數(shù)據(jù)流和離散的數(shù)據(jù)流(控制信號或事件)。數(shù)據(jù)流圖擴(kuò)展:CFD是為了適應(yīng)即時(shí)系統(tǒng)的分析而提出來的,通常與DFD配合使用,目的是使分析員在用DFD和PSPEC表示數(shù)據(jù)流和加工的同時(shí),也能夠用CFD和CSPEC表示控制流和控制加工。軟體需求分析CFD與DFD的關(guān)係DFDPSPECCFDCSPEC行為模型過程模型輸入數(shù)據(jù)輸出數(shù)據(jù)輸入控制輸出控制數(shù)據(jù)條件加工啟動(dòng)信號軟體需求分析處理/加工數(shù)據(jù)流實(shí)體(數(shù)據(jù)源點(diǎn)或數(shù)據(jù)終點(diǎn))數(shù)據(jù)存儲(chǔ)(數(shù)據(jù)檔或資料庫)CFD的符號控制流被引用的控制說明CFD的符號:CFD在DFD的基礎(chǔ)上增加了兩個(gè)符號控制流和被引用的控制說明。軟體需求分析控制流:採用帶有箭頭的虛線來表示,虛線箭頭表示控制流從一個(gè)加工流向另一個(gè)加工的方向。虛線箭頭旁邊可以標(biāo)注控制資訊或事件,控制資訊通常取布爾值或離散值。被引用的控制說明:採用短豎線表示。控制說明主要用於描述:當(dāng)事件或控制資訊被感知時(shí)軟體如何行動(dòng);作為事件發(fā)生的結(jié)果,哪些加工將被啟動(dòng)。軟體需求分析對於即時(shí)系統(tǒng),在創(chuàng)建了DFD(過程模型)之後還必須創(chuàng)建CFD(行為模型),以便描述相關(guān)的事件以及系統(tǒng)狀態(tài)在時(shí)間坐標(biāo)系中的變遷。例如,首先畫出光電管採集DFD。光電管採集計(jì)數(shù)傳送工控機(jī)處理班數(shù)據(jù)處理即時(shí)數(shù)據(jù)顯示半小時(shí)數(shù)據(jù)班數(shù)據(jù)信號半分鐘數(shù)據(jù)光電管採集DFD軟體需求分析光電管採集計(jì)數(shù)傳送工控機(jī)處理班數(shù)據(jù)處理即時(shí)數(shù)據(jù)顯示半小時(shí)數(shù)據(jù)班數(shù)據(jù)信號半分鐘數(shù)據(jù)物品經(jīng)過某型號累加無動(dòng)作半分鐘半小時(shí)翻屏人工驅(qū)動(dòng)資訊在光電管採集DFD的基礎(chǔ)上加上事件和控制資訊,並加上控制說明的引用,即可得到光電管採集系統(tǒng)的CFD。光電管採集CFD時(shí)鐘軟體需求分析狀態(tài)轉(zhuǎn)換圖(StateTransformationDiagram,STD)狀態(tài)圖描述了軟體系統(tǒng)狀態(tài)的變遷,它是CSPEC中常用的一種重要描述工具。STD中的符號矩形:表示系統(tǒng)的狀態(tài);箭頭:表示狀態(tài)的轉(zhuǎn)變方向;規(guī)則運(yùn)算式:用來標(biāo)明系統(tǒng)狀態(tài)發(fā)生轉(zhuǎn)變的事件和該事件的觸發(fā)行為。狀態(tài)1狀態(tài)2事件/觸發(fā)行為軟體需求分析20秒到/翻屏生成最新數(shù)據(jù)/翻屏半小時(shí)到/工控處理半分鐘到/傳送空閒/採集物品經(jīng)過/計(jì)數(shù)採集PLC計(jì)數(shù)傳送工控處理即時(shí)翻屏光電採集的STD軟體需求分析結(jié)構(gòu)化分析方法:結(jié)構(gòu)化分析就是使用DFD、CFD、DD、結(jié)構(gòu)化語言、判定表、判定樹、PSPEC、CSPEC和STD等建模語言,來建立結(jié)構(gòu)化規(guī)格說明的目標(biāo)文檔。畫出分層數(shù)據(jù)流圖確定數(shù)據(jù)定義與加工策略從最低DFD的數(shù)據(jù)終點(diǎn)開始,沿著DFD一步步向數(shù)據(jù)源點(diǎn)回朔,來分析每一個(gè)資料項(xiàng)目的來龍去脈。需求分析復(fù)審父圖與子圖不平衡未區(qū)分局部檔和局部外部檔分解速度太快不遵守加工編號規(guī)則軟體需求分析面向?qū)ο蠓治瞿P兔枋隽讼到y(tǒng)所涉及的全部類-對象。每一個(gè)類-對象都通過屬性、操作和協(xié)作者來進(jìn)行描述。描述了對象之間的靜態(tài)關(guān)係,同時(shí)定義了系統(tǒng)中所有重要的消息路徑,它也可以具體化到對象的屬性、操作和協(xié)作者。描述了系統(tǒng)的動(dòng)態(tài)行為,即對象在特定狀態(tài)下如何反應(yīng)外界的事件。用例模型描述了軟體系統(tǒng)和外部參與者之間的交互。從用例模型出發(fā),可以定義:類-對象模型、對象關(guān)係模型和對象行為模型軟體需求分析統(tǒng)一建模語言(UML)軟體需求分析為什麼稱為統(tǒng)一開發(fā)生命週期:UML提供用於從需求分析工程到實(shí)現(xiàn),貫穿整個(gè)軟體開發(fā)生命週期的可視化建模語法。應(yīng)用領(lǐng)域:UML已經(jīng)內(nèi)應(yīng)用於從關(guān)鍵即時(shí)嵌入式系統(tǒng)到管理決策支持系統(tǒng)中任何事物的建模。實(shí)現(xiàn)語言和平臺:UML獨(dú)立於語言和平臺。它不僅對純粹OO語言(例如Java,C#)據(jù)具有極好的支持,而且對於混合OO語言,如C++,甚至非OO語言也同樣有效。開發(fā)過程:儘管UP及其變體可能是OO系統(tǒng)的首選開發(fā)過程,UML能夠支持很多其他軟體工程過程。它本身內(nèi)部概念:UML在其內(nèi)部概念的一個(gè)小集合的應(yīng)用上,勇於嘗試保持一致和統(tǒng)一。軟體需求分析UML的結(jié)構(gòu)軟體需求分析UML的結(jié)構(gòu)-架構(gòu)圖:類圖複合結(jié)構(gòu)圖對象圖包圖狀態(tài)圖圖:組件圖圖:類圖複合結(jié)構(gòu)圖對象圖圖:部署圖邏輯視圖進(jìn)程視圖實(shí)現(xiàn)視圖部署視圖圖:用例圖交互圖用例視圖關(guān)注:專案辭彙表功能關(guān)注:性能伸縮性吞吐量關(guān)注:系統(tǒng)裝配配置管理關(guān)注:系統(tǒng)拓?fù)浞职l(fā)移交安裝軟體需求分析用例圖軟體需求分析用例圖:是由主題(Subject)、用例(Usecase)、參與者(Actor)和關(guān)聯(lián)(執(zhí)行者與用例、用例與用例、執(zhí)行者與執(zhí)行者)組成。用例:是參與者想要系統(tǒng)做的事情。參與者(角色):說明當(dāng)與系統(tǒng)直接交互時(shí),一些外部實(shí)體採用的角色。主題(系統(tǒng)邊界):定義由誰或什麼(即,參與者)使用系統(tǒng),系統(tǒng)能夠?yàn)槟男﹨⑴c者提供什麼特定利益(即,用例)。軟體需求分析用例規(guī)格說明:用例名稱:採用動(dòng)詞或者動(dòng)詞短語描述,通過用例的名稱,業(yè)務(wù)讀者能夠清晰地知曉用例建模的業(yè)務(wù)功能或過程。用例ID:它唯一地標(biāo)識專案中特定的用例。簡要描述:捕獲用例的目的。參與者:第一參與者-實(shí)際觸發(fā)用例的那些參與者;第二參與者-在用例被觸發(fā)之後,與用例進(jìn)行交互的參與者。前置條件和後置條件:前置條件說明在用例觸發(fā)之前什麼必須為真,後置條件說明在用例執(zhí)行之後什麼必須為真。主流:用例中陳述性的、具有時(shí)序的步驟序列。附流:主流的一串分支。通常表示異常、分支和中斷的路徑。軟體需求分析用例名稱用例ID簡要描述參與用例的參與者前置條件主流後置條件附流軟體需求分析參與者之間、用例之間的關(guān)係參與者泛化:一般參與者和特殊參與者之間的泛化關(guān)係。用例泛化:一般用例和特殊用例之間的泛化關(guān)係。包含關(guān)係:用例之間的關(guān)係,它允許一個(gè)用例包含另一個(gè)用例的行為。擴(kuò)展關(guān)係:用例之間的關(guān)係,它允許一個(gè)用例使用另一個(gè)用例中的一個(gè)或多個(gè)片段來擴(kuò)展它的行為。軟體需求分析參與者泛化:一般參與者和特殊參與者之間的泛化關(guān)係。使用參與者泛化可以簡化問題。一般參與者參與者泛化特殊者泛化軟體需求分析用例特性繼承添加覆寫關(guān)係YYN擴(kuò)展點(diǎn)YYN前置條件YYY後置條件YYY主流中的步驟YYY附流YYY用例泛化:一般用例和特殊用例之間的泛化關(guān)係。在用例泛化中,子用例是父用例的特殊形式,子用例可以:從父用例那裏繼承特徵;添加新的特徵;覆寫(改變)已繼承的特徵。軟體需求分析繼承不改變3.(3.)繼承和重複編號6.2(6.1)繼承且覆寫1(o1)繼承、覆寫及重編號5.2(o5.1)添加6.3一般用例特殊用例用例泛化例:用例泛化軟體需求分析繼承不改變3.(3.)繼承和重複編號6.2(6.1)繼承且覆寫1(o1)繼承、覆寫及重編號5.2(o5.1)添加6.3軟體需求分析基礎(chǔ)用例內(nèi)含用例包含關(guān)係包含關(guān)係:用例之間的關(guān)係,它允許一個(gè)用例包含另一個(gè)用例的行為。我們將包含用例稱為基用例,把被包含用例稱為內(nèi)含用例,內(nèi)含用例給它的基礎(chǔ)用例提供行為?;A(chǔ)用例執(zhí)行到包含點(diǎn),那麼執(zhí)行傳遞給內(nèi)含用例,當(dāng)內(nèi)含用例完成時(shí),控制再次返回基礎(chǔ)用例。用例包含實(shí)例軟體需求分析軟體需求分析基礎(chǔ)用例包含用例軟體需求分析擴(kuò)展用例基礎(chǔ)用例擴(kuò)展關(guān)係擴(kuò)展關(guān)係:用例之間的關(guān)係,它允許一個(gè)用例使用另一個(gè)用例中的一個(gè)或多個(gè)片段來擴(kuò)展它的行為?;A(chǔ)用例提供了一組擴(kuò)展點(diǎn),擴(kuò)展點(diǎn)是鉤子,在此可以添加新的行為,擴(kuò)展用例提供了一組插入片段,這些片段被插入到基礎(chǔ)用例鉤子位置。軟體需求分析擴(kuò)展類基礎(chǔ)用例擴(kuò)展用例擴(kuò)展類名稱單一片段插入軟體需求分析單一片段插入基礎(chǔ)用例擴(kuò)展用例軟體需求分析多重片段插入擴(kuò)展類擴(kuò)展類基礎(chǔ)用例擴(kuò)展用例擴(kuò)展類名稱軟體需求分析多重片段插入基礎(chǔ)用例擴(kuò)展用例軟體需求分析條件擴(kuò)展軟體需求分析對象圖軟體需求分析對象:是數(shù)據(jù)和函數(shù)的內(nèi)聚單元。每個(gè)對象都是某個(gè)類的一個(gè)實(shí)例,該類定義了由該類所有對象所共有的特徵。對象特徵:標(biāo)識:這是在時(shí)間和空間上對象唯一存在。它把該對象同所有其他對象區(qū)分開。狀態(tài):特定時(shí)刻對象所有有意義的屬性值集合。行為:對象為其他對象提供的服務(wù)。在分析建模中為一組操作,調(diào)用操作可能引發(fā)狀態(tài)遷移。軟體需求分析123456Jim300.00Deposit()withdraw()getOwner()setOwner()屬性值操作對象中的數(shù)據(jù)被隱藏,僅能通過調(diào)用對象的函數(shù)才能操縱數(shù)據(jù)。封裝軟體需求分析Bank對象Account對象Bank對象發(fā)送資訊“withdraw150.00”給Account對象Account對象回應(yīng),調(diào)用它的取款操作。該操作減少帳戶餘額150.00withdraw(150.00)對象交互產(chǎn)生系統(tǒng)的行為交互涉及對象之間來回發(fā)送消息。當(dāng)接收到消息時(shí),則調(diào)用相應(yīng)的方法,這可能引起狀態(tài)的改變。消息機(jī)制軟體需求分析JimsAccount:AccountaccoutNumber:String=“123456”owner:String=“Jim”balance:double=300.00對象名稱類名稱屬性名稱屬性類型屬性值名稱分欄屬性分欄UML對象符號軟體需求分析鏈接:當(dāng)一個(gè)對象承載到另一個(gè)對象的對象引用時(shí),產(chǎn)生鏈接。鏈接是兩個(gè)對象之間的語義聯(lián)繫,它允許消息從一個(gè)對象發(fā)送到另一個(gè)對象。不同的OO語言以不同的方法實(shí)現(xiàn)鏈接,Java把鏈接實(shí)現(xiàn)為對象引用,C++把鏈接實(shí)現(xiàn)為指針或引用,或者通過在對象中直接包含另一個(gè)對象來實(shí)現(xiàn)鏈接。bookClub:Club張三:Person李四:Person王二:Personchairpersonsecretarymember角色名稱雙向鏈接UML鏈接符號軟體需求分析類圖軟體需求分析類:共用相同屬性、操作、方法、關(guān)係或者行為的一組對象的描述符。類和對象關(guān)係:每個(gè)對象恰是一個(gè)類的實(shí)例。相同類的不同對象具有相同的屬性,但是可以具有這些屬性的不同值。不同屬性值引起相同類的不同對象的不同行為。使用構(gòu)造型<<instantiate>>依賴,你能在類和它的對象之一之間表示實(shí)例化關(guān)係。對象的實(shí)例化是使用它的類作為範(fàn)本創(chuàng)建新對象。大多數(shù)OO語言提供被稱作構(gòu)造函數(shù)的特殊操作,當(dāng)需要?jiǎng)?chuàng)建對象時(shí),調(diào)用它,構(gòu)造函數(shù)創(chuàng)建或初始化對象,構(gòu)造函數(shù)是類範(fàn)圍的。一些OO語言提供被稱作析構(gòu)函數(shù)的特殊操作,當(dāng)需要銷毀對象時(shí),調(diào)用它,析構(gòu)函數(shù)在對象後起清理作用。軟體需求分析<<entity>>Account-number:String-owner:String-balance:double=0.0+create(theNumber:String,theOwner:String)+deposit(amount:double)+withdraw(amount:double)+getNumber():String+getOwner():String+getBalance():double+setOwner(theOwner:String){author=Jim,Status=tested}名稱分欄屬性分欄操作分欄可見性修飾構(gòu)造型類名稱標(biāo)記值初始值類範(fàn)圍操作(加下劃線)UML類符號軟體需求分析類的命名規(guī)則以大寫字母打頭,混合大小寫,其中每個(gè)單詞以大寫開頭。避免縮寫。儘量用完整單詞來描述。如果存在特定領(lǐng)域的縮略詞(例如,ERP-EnterpriseResourcePlanning),被廣泛使用並且能夠被模型的所有讀者所理解,那麼你可以使用它。軟體需求分析屬性分欄命名規(guī)則:採用以小寫字母開頭,然後混合大小寫。屬性名通常是名詞或者名詞短語。語法規(guī)則visibilityname:type[multiplicity]=initialValue可見性名稱類型多重性初始值軟體需求分析可視性:可視性修飾作用於類內(nèi)屬性和操作。它也可以作用於關(guān)係上的角色名稱。修飾可視性名稱語義+public能夠訪問該類的任何元素可以訪問該類帶有的公共可視性的任何特徵-private只有該類的操作才能訪問該類待有的私有可視性的特徵#protected只有該類及其子類的操作才能訪問該類帶有的保護(hù)可視性的特徵~package與該類處於相同包中的或者是在嵌套子包中的任何元素能夠訪問該類帶有的包可視性的任何特徵軟體需求分析類型:屬性的類型可以是其他的類型或者原始類型。原始類型語義UMLInteger整數(shù)UnlimitedNatural大於等於零的整數(shù)Boolean可以取值true或者falseString字元的序列,字串被雙引號括起來OCLReal浮點(diǎn)數(shù)軟體需求分析多重性:多重性允許你在一個(gè)屬性上通過使用多重性運(yùn)算式建模兩種顯著不同的事物:集合:空值:初始值:當(dāng)某個(gè)類實(shí)例化對象時(shí),初始值允許你說明屬性此時(shí)採用的值。構(gòu)造型和標(biāo)記值:
<<stereotype>>attribute{tag1=value1,tag2=value2,…}address{addedBy=“Jim”,dataAdded=“20MAR2004”}軟體需求分析操作分欄操作:操作是綁定到特定類的函數(shù)。操作名稱通常是動(dòng)詞或者動(dòng)詞短語。操作具有特徵:名稱、參數(shù)列表和返回類型。操作名稱、所有參數(shù)的類型以及返回類型構(gòu)成了操作簽名。類的每個(gè)操作必須具有唯一簽名,因?yàn)檫@是賦予操作標(biāo)識的簽名。當(dāng)消息發(fā)送到對象,消息簽名與定義在對象的類中的操作簽名相比較,如果找到匹配,在該對象上調(diào)用恰當(dāng)?shù)牟僮鳌2僮鞯恼Z法規(guī)則:visibilityname(directionparameterName:parameterType=defaultValue,…):returnType操作簽名參數(shù)列表軟體需求分析參數(shù)方向語義inp1:Integer默認(rèn)情況,該操作使用p1作為輸入?yún)?shù)該操作以某種方式使用p1的值p1不能被該操作所修改inoutp2:Integer該操作接受p2作為輸入?yún)?shù)/輸出參數(shù)該操作以某種方式使用p2的值,並且接受該操作的輸出p2可以被該操作所修改outp3:Integer該操作使用p3作為輸出參數(shù)該參數(shù)作為接收器接受該操作輸出的值P3可以被該操作所修改returnp4:Integer該操作使用p4作為返回值參數(shù)該操作返回p4作為返回值之一軟體需求分析關(guān)係:是建模元素之間的語義聯(lián)繫。關(guān)係類型實(shí)例化:類與對象之間的關(guān)係。關(guān)聯(lián):關(guān)聯(lián)是類間的語義聯(lián)繫。依賴:依賴表示兩個(gè)或者多個(gè)元素之間的關(guān)係,對一個(gè)元素(提供者)的改變可能影響或提供資訊給其他元素(客戶)。繼承:發(fā)生在存泛化關(guān)係的類之間。軟體需求分析實(shí)例化JimAccount:AccountaccoutNumber:String=“123456”owner:String=“Jim”balance:double=300.00TomAccount:AccountaccoutNumber:String=“123457”owner:String=“Tom”balance:double=1000.00AccountaccoutNumber:Stringowner:Stringbalance:doubledeposit()withdraw()getOwner()setOwner()<<instantiate>><<instantiate>>軟體需求分析關(guān)聯(lián):關(guān)聯(lián)是類間的語義聯(lián)繫。如果兩個(gè)對象之間存在鏈接,這些對象的類間必定存在關(guān)聯(lián),這是因?yàn)殒溄邮顷P(guān)聯(lián)的實(shí)例。CompanyPersonemploys1*關(guān)聯(lián)名稱導(dǎo)航性多重性CompanyPersonemployer1*角色名稱多重性employee導(dǎo)航性軟體需求分析關(guān)聯(lián)語法關(guān)聯(lián)名稱:可以首碼或尾碼一個(gè)小黑箭頭表明名稱應(yīng)該閱讀的方向。應(yīng)該是動(dòng)詞或動(dòng)詞短語。採用lowerCamelCase格式(第一個(gè)詞的首字母小寫,後面每個(gè)詞的首字母大寫)。可以使用關(guān)聯(lián)名稱或者角色名稱,但不要同時(shí)使用兩者。類有到其自身的關(guān)聯(lián),稱為自反關(guān)聯(lián),它表示該類的對象可以具有到該類的其他對象的鏈接。角色名稱:可以在關(guān)聯(lián)的一端或兩端上為類賦予角色名稱。應(yīng)該是名詞或名詞語法描述角色的語義。採用lowerCamelCase格式。多重性多重性表明在任意時(shí)刻關(guān)係所能夠涉及的對象數(shù)目。對象可以任意去留,但多重性約束任意時(shí)刻對象的數(shù)目。多重性在內(nèi)部說明以逗號隔開,例如,0..1,3..5。沒有默認(rèn)的多重性,如果多重性沒有顯式地表示出來,那麼多重性沒有確定。軟體需求分析CompanyPersonemployee17BankAccountemployer11..*owneroperator0..*0..*多重性語義一個(gè)Company恰有7個(gè)employee;一個(gè)Person恰能被一個(gè)Company所雇用;一個(gè)BankAccount恰有一個(gè)owner;一個(gè)BankAccount具有一個(gè)或多個(gè)operator;一個(gè)Person可以有零個(gè)到多個(gè)BankAccount;一個(gè)Person可以操作零個(gè)到多個(gè)BankAccount。軟體需求分析DirectoryFileparent1subdirectory0..*0..10..*自反關(guān)聯(lián)每個(gè)Directory對象能夠具有到零個(gè)或多個(gè)扮演subdirectory角色的Directory對象的鏈接,並且具有到零個(gè)或一個(gè)扮演parent角色的Directory對象的鏈接。每個(gè)Directory對象關(guān)聯(lián)零個(gè)或多個(gè)File對象。C:DirectoryWindows:DirectoryMyDocuments:DirectoryCommand:Directoryautoexec:Fileconfig:FileToJohn:File自反關(guān)聯(lián)軟體需求分析導(dǎo)航性:在關(guān)係箭頭的端部顯示,如果關(guān)係沒有箭頭,那麼它是雙向的。導(dǎo)航性表明消息僅能夠在箭頭的方向上傳遞。OrderProduct**可導(dǎo)航的不可導(dǎo)航的對象Order能夠向?qū)ο驪roduct發(fā)送消息,但消息不能反向發(fā)送。CompanyPerson1*可導(dǎo)航的可導(dǎo)航的對象Company能夠向?qū)ο驪erson發(fā)送消息,對象Person也能夠向Company發(fā)送消息。軟體需求分析關(guān)聯(lián)類:關(guān)聯(lián)類既是關(guān)聯(lián)又是類,它可以具有屬性、操作和關(guān)係。當(dāng)兩個(gè)類間具有多對多關(guān)係時(shí),有時(shí)存在一些屬性,它們不能簡單地放入任何一個(gè)類中。例如,如果添加業(yè)務(wù)規(guī)則:每個(gè)Person與雇用它的Company間存在薪水屬性,這將發(fā)生什麼?薪水記錄、在何處?Person類還是Company類?答案是薪水是關(guān)聯(lián)本身的特性,對於Person對象和Company對象之間的每個(gè)雇傭關(guān)聯(lián),都存在特定薪水。CompanyPerson**CompanyPerson**salary:doubleJob關(guān)聯(lián)類
關(guān)聯(lián)類由類、關(guān)聯(lián)和虛線組成軟體需求分析C1:CompanyP1:PersonP2:PersonC2:CompanyP3:PersonJ11:JobJ12:JobJ13:JobJ21:JobJ25:Job對於給定的Person對象和給定的Company對象,才有一個(gè)Job對象。換言之,每個(gè)Person與給定的Company對象之間只有一個(gè)Job對象。軟體需求分析如果對於給定Person對象和給定的Company對象之間具有多於一個(gè)Job,那麼你不能使用關(guān)聯(lián)類,語義不匹配!解決方案:採用正常類。CompanyPerson1*salary:doubleJob*1P1:PersonJ11:JobJ12:JobJ13:JobC1:CompanyC2:Company軟體需求分析聚合:鬆散的對象間關(guān)係。例如,電腦和它的週邊設(shè)備之間的關(guān)係。組合:非常強(qiáng)的對象間關(guān)係。例如,樹和它的樹葉之間的關(guān)係。一些對象弱相關(guān),像電腦和它的外設(shè)一些對象強(qiáng)相關(guān),像樹和樹葉聚合組合軟體需求分析ComputerPrinter0..10..*整體或聚集部分聚合聚合語義:聚集有時(shí)能夠不依賴部分而獨(dú)立存在,有時(shí)又不能;部分可以獨(dú)立於聚集而獨(dú)立存在;如果有一些部分遺失,聚集在某種意義上是不完整的;部分的所有權(quán)可能由幾個(gè)聚集來共用。聚合是一種整體-部分關(guān)係,其中聚集由許多部分組成。軟體需求分析聚合是可傳遞的AB如果C是B的部分,B是A的部分,那麼C是A的部分C聚合是非對稱的Product自反對稱**A:ProductB:ProductC:ProductD:Product不允許迴圈軟體需求分析Product自反對稱**A:ProductB:ProductC:ProductD:Product軟體需求分析組合是一種更強(qiáng)形式的聚合,也具有類似的語義,但是更加受約束。組合具有傳遞性和非對稱性。組合也與聚合的關(guān)鍵區(qū)別在於:在組合中,部分脫離了整體就不能獨(dú)立存在,此外,組合中的每個(gè)部分至多屬於一個(gè)整體,也只能屬於一個(gè)整體;在聚合中,一個(gè)部分可以由幾個(gè)整體共用。Treeleaf10..*組成部分組合軟體需求分析依賴:依賴表示兩個(gè)或多個(gè)建模元素之間的關(guān)係,對於一個(gè)元素(提供者)的改變可能影響或提供資訊給其他元素(客戶)。類型語義Usage(使用)客戶使用由提供者所提供的服務(wù)以實(shí)現(xiàn)它的行為。Abstraction(抽象)這表示客戶和提供者之間的關(guān)係,提供者必客戶更加抽象?!案映橄蟆币馕吨峁┱吆涂蛻籼庫堕_發(fā)中的不同階段,例如,提供者處於分析模型,客戶處於設(shè)計(jì)模型。Permission(授權(quán))提供者為客戶提供某種許可權(quán)以訪問提供者的內(nèi)容,這是一種提供者控制和限制對其內(nèi)容訪問的方法。軟體需求分析使用依賴:存在五種類型的依賴:<<use>>、<<call>>、<<parameter>>、<<send>>和<<instantiate>>。<<use>>:下列任何一種情況產(chǎn)生<<use>>依賴:類A的操作需要類B的參數(shù);類A的操作返回類B的值;類A的操作在實(shí)現(xiàn)中使用類B的對象,但是不是作為屬性來使用。Afoo(b:B)bar():BdoSomthing()B<<use>>提供者客戶軟體需求分析<<ca
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度增強(qiáng)現(xiàn)實(shí)(AR)應(yīng)用軟件開發(fā)類框架合同3篇
- 環(huán)境的課程設(shè)計(jì)
- 機(jī)械制造課程設(shè)計(jì)夾具6
- 防護(hù)車間設(shè)計(jì)課程設(shè)計(jì)
- 讀書筆記軟件課程設(shè)計(jì)
- 電子課程設(shè)計(jì)實(shí)例
- 班級網(wǎng)站課課程設(shè)計(jì)abstract
- 隧道地質(zhì)災(zāi)害應(yīng)急響應(yīng)-洞察分析
- 云存儲(chǔ)訪問控制模型-洞察分析
- 鴕鳥創(chuàng)意美術(shù)課程設(shè)計(jì)
- 2024至2030年中國銅制裝飾材料行業(yè)投資前景及策略咨詢研究報(bào)告
- 中金公司在線測評真題
- 高中英語新課程標(biāo)準(zhǔn)解讀課件
- 2024供應(yīng)商大會(huì)策劃方案
- 2024光伏發(fā)電工程交流匯流箱技術(shù)規(guī)范
- 旅游活動(dòng)碳排放管理評價(jià)指標(biāo)體系構(gòu)建及實(shí)證研究
- 2024小學(xué)語文六年級上冊第四單元:大單元整體教學(xué)課件
- 12S108-1 倒流防止器選用及安裝
- 人教版六年級下冊數(shù)學(xué)期末測試卷附答案【達(dá)標(biāo)題】
- 員工工作狀態(tài)分析
- 河道水質(zhì)養(yǎng)護(hù)項(xiàng)目應(yīng)急預(yù)案
評論
0/150
提交評論