版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
系統(tǒng)需求分析與定義一、計算機系統(tǒng)分析二、軟件需求分析三、結構化分析方法四、快速原型化方法五、面向對象分析方法六、需求分析文檔的原則和評審1軟件工程系統(tǒng)需求分析與定義一、計算機系統(tǒng)分析1軟件工程一、計算機系統(tǒng)分析基于計算機的系統(tǒng)基于計算機的系統(tǒng)的系統(tǒng)元素包括硬件、軟件、人、數(shù)據(jù)庫、文檔和過程。軟件計算機程序、數(shù)據(jù)結構、相關文檔;硬件電子計算設備(如CPU,存儲器)和外部機電設備(如傳感器、馬達等);人硬件和軟件的用戶;數(shù)據(jù)庫一個大型的有組織的信息集合;2軟件工程一、計算機系統(tǒng)分析基于計算機的系統(tǒng)2軟件工程基于計算機系統(tǒng)的系統(tǒng)元素輸入系統(tǒng)過程硬件軟件文檔人數(shù)據(jù)庫輸出3軟件工程基于計算機系統(tǒng)的系統(tǒng)元素輸入系統(tǒng)過程硬件軟件文檔人數(shù)據(jù)庫輸出文檔手冊、表格和其它用以描述系統(tǒng)使用和操作的信息;過程定義每一種系統(tǒng)元素的特定使用步驟,或系統(tǒng)駐留的過程性環(huán)境。系統(tǒng)的層次結構基于計算機的系統(tǒng)本身可以成為一個更大的基于計算機系統(tǒng)中的一個元素,并稱為那個更大系統(tǒng)的宏元素。4軟件工程文檔手冊、表格和其它用以描述系統(tǒng)使用和操作的信息;系工廠自動化系統(tǒng)工廠自動化系統(tǒng)庫存系統(tǒng)制造系統(tǒng)信息系統(tǒng)材料傳輸系統(tǒng)制造單元機器人數(shù)據(jù)輸入設備數(shù)控機床5軟件工程工廠自動化系統(tǒng)工廠自動化系統(tǒng)庫存系統(tǒng)制造系統(tǒng)信息系統(tǒng)材料傳輸2.系統(tǒng)分析系統(tǒng)分析是一個問題求解活動,目的是揭示、分析所期望的功能,并把它們分配到各個單獨的系統(tǒng)元素中去。與用戶合作確認用戶的目標和約束;導出功能、性能、接口、設計約束和信息結構的表示;將它們分配到每一個系統(tǒng)元素中。6軟件工程2.系統(tǒng)分析系統(tǒng)分析是一個問題求解活動,目的是揭示、分析所系統(tǒng)分析的任務識別用戶要求評價系統(tǒng)的可行性進行經(jīng)濟分析和技術分析把功能分配給硬件、軟件、人、數(shù)據(jù)庫和其他系統(tǒng)元素建立成本和進度限制生成系統(tǒng)規(guī)格說明,形成所有后續(xù)工程的基礎。7軟件工程系統(tǒng)分析的任務識別用戶要求7軟件工程1)識別用戶要求分析員必須考慮以下問題:功能和性能可靠性和質量總的系統(tǒng)目標成本與進度限制制造需求
市場與競爭情況有效的技術將來可能的擴充識別希望的功能和性能范圍;確定系統(tǒng)的功能、性能、約束和接口;8軟件工程1)識別用戶要求分析員必須考慮以下問題:功能和性能制造需2)可行性研究可行性研究經(jīng)濟可行性技術可行性法律可行性用戶操作可行性可行性研究的步驟確定項目的規(guī)模和目標研究當前正在運行的系統(tǒng)建立新系統(tǒng)的高層邏輯模型9軟件工程2)可行性研究可行性研究9軟件工程導出和評價各種方案推薦可行的方案編寫可行性研究報告經(jīng)濟可行性
成本–效益分析成本估算專家估算技術(Delphi技術)成本估算模型(COCOMO)效益估算投資回收期10軟件工程導出和評價各種方案經(jīng)濟可行性成本–效益分析成本估算10軟件純收入投資回收率技術可行性技術風險分析技術解決方案的實用性使用的技術實用化程度技術解決方案合理程度技術資源的可用性參與人員的工作基礎基礎硬件/軟件的可用性軟件工具實用性11軟件工程純收入技術可行性技術風險分析技術解決方案的實用性11軟件法律可行性侵權和責任問題專利法著作權法軟件保護條例用戶操作可行性用戶類型:外行型/熟練型/專家型操作習慣使用單位的計算機使用情況使用單位的規(guī)章制度12軟件工程法律可行性侵權和責任問題專利法用戶操作可行性用戶類型:外3)功能分配給系統(tǒng)元素的原則對同一功能,可以分配不同的系統(tǒng)元素。為選取最有效的分配方案,使用一組權衡準則進行評價項目考慮
在預估的成本與進度范圍內所選的系統(tǒng)配置能否實現(xiàn)?與成本與進度估算相關的風險有哪些?商業(yè)考慮所選的系統(tǒng)配置是最可能有效益的解決方案嗎?13軟件工程3)功能分配給系統(tǒng)元素的原則對同一功能,可以分配不同的系統(tǒng)元能否成功地占領市場?最終的報償是否能表明所冒的開發(fā)風險是值得的?技術分析是否具備開發(fā)所有系統(tǒng)元素的技術實力?能否確保功能和性能得到滿足?能否對系統(tǒng)配置進行充分的維護?是否具備技術資源?與技術相關的風險有哪些?生產(chǎn)評估14軟件工程能否成功地占領市場?14軟件工程生產(chǎn)工具與設備是否有效?必需的過程是否短缺?是否充分地實施了質量保證?人員問題開發(fā)人員是否得到培訓?用戶是否了解這個系統(tǒng)將要做什么?環(huán)境接口所提交的系統(tǒng)配置與系統(tǒng)的外部環(huán)境的接口是否合適?15軟件工程生產(chǎn)工具與設備是否有效?15軟件工程機器與機器、人與機器之間的通信是否以智能方式處理?法律考慮這種配置是否會引入違法的責任風險?對責任問題是否給予了足夠的保護?是否存在潛在的破壞問題?16軟件工程機器與機器、人與機器之間的通信是否以智能方式處理?16軟件工二、軟件需求分析需求分析是一項軟件工程活動,其目的是:清楚地理解所要解決的問題,完整地獲取用戶要求;刻劃出軟件的功能和性能;指明軟件與其他系統(tǒng)元素的接口;建立軟件必須滿足的約束。1.軟件需求分析的目的
17軟件工程二、軟件需求分析需求分析是一項軟件工程活動,其目的是:1.需求分析是一項軟件工程活動,它包括:需求獲取刻劃出軟件的功能和性能;指明軟件與其他系統(tǒng)元素的接口;建立軟件必須滿足的約束。需求建模 需求分析建立起來的模型為日后軟件設計人員提供了可被翻譯成數(shù)據(jù)、體系結構、接口和處理過程設計的模型。2.需求分析的任務18軟件工程需求分析是一項軟件工程活動,它包括:2.需求分析的任務18需求規(guī)格說明 需求規(guī)格說明為開發(fā)人員和用戶提供軟件開發(fā)完成時質量評價的依據(jù)。需求評審需求分析研究的對象是用戶的要求。必須全面理解用戶的各項要求,準確表達被接受的用戶要求。只有經(jīng)過確切描述的軟件需求才能成為軟件設計的基礎。
19軟件工程需求規(guī)格說明19軟件工程軟件開發(fā)是要實現(xiàn)目標系統(tǒng)的物理模型。需求分析的任務就是借助于當前系統(tǒng)的邏輯模型導出目標系統(tǒng)的邏輯模型,解決目標系統(tǒng)“做什么”的問題。目標系統(tǒng)當前系統(tǒng)物理模型邏輯模型模型化抽象化物理模型邏輯模型具體化實例化理解需求導出怎么做做什么20軟件工程軟件開發(fā)是要實現(xiàn)目標系統(tǒng)的物理模型。需求分析的任務就是借助于物理模型(實施模型、技術模型)邏輯模型(本質模型、概念模型)當前系統(tǒng)描述現(xiàn)實系統(tǒng)是如何在物理上實現(xiàn)的。描述重要的業(yè)務功能,不考慮系統(tǒng)是如何實施的。目標系統(tǒng)描述新系統(tǒng)是如何實施的(包括技術)。描述新系統(tǒng)的主要業(yè)務功能和用戶新的需求,不考慮系統(tǒng)應如何實施。21軟件工程物理模型邏輯模型當前描述現(xiàn)實系統(tǒng)是如何在物理上實現(xiàn)的。描述重需求分析的過程可以分成四個階段:需求獲取研究系統(tǒng)的可行性分析報告和軟件項目實施計劃。從系統(tǒng)角度來理解軟件并評審用于產(chǎn)生計劃估算的軟件范圍是否恰當;通過調研確定對目標系統(tǒng)的需求;提出這些需求實現(xiàn)條件,以及需求應達到的標準。3.需求分析的過程22軟件工程需求分析的過程可以分成四個階段:3.需求分析的過程22軟件建立分析所需要的溝通途徑,以保證能順利地對問題進行分析。管理人員用戶分析人員軟件開發(fā)組軟件需求說明軟件實施計劃原型軟件實施計劃軟件實施計劃軟件需求說明軟件需求說明原型原型23軟件工程建立分析所需要的溝通途徑,以保證能順利地對問題進行分析。管理需求建模
進行各種要求的一致性檢查;逐步細化所有的軟件功能;分解數(shù)據(jù)域,分配給各個子功能;找出系統(tǒng)各成分之間的聯(lián)系、接口特性和設計限制。判斷是否存在不合理的用戶要求或用戶尚未提出的潛在要求。綜合成系統(tǒng)的解決方案,給出目標系統(tǒng)的詳細邏輯模型。24軟件工程需求建模24軟件工程常用的分析方法面向數(shù)據(jù)流的結構化分析方法(SA)面向數(shù)據(jù)結構的Jackson方法(JSD)面向數(shù)據(jù)結構的結構化數(shù)據(jù)系統(tǒng)開發(fā)方法(DSSD)面向對象的分析方法(OOA)等25軟件工程常用的分析方法面向數(shù)據(jù)流的結構化分析方法(SA)25軟件工編制需求分析階段的文檔軟件需求規(guī)格說明;初步的用戶手冊;確認測試計劃;修改和完善軟件開發(fā)計劃。需求評審(確認)作為需求分析階段工作的復查手段,應該對功能的正確性、文檔的一致性、完備性、準確性和清晰性,以及其他需求給予評價。26軟件工程編制需求分析階段的文檔26軟件工程需要能夠表達和理解問題的信息域和功能域信息流:數(shù)據(jù)和控制通過一個系統(tǒng)時的變化方式。兩個功能之間的數(shù)據(jù)/控制傳遞就確定了功能間的接口。信息內容:單個數(shù)據(jù)或控制對象,它們構成了某個更大的由軟件變換生成的信息的集合。信息結構:各種數(shù)據(jù)和控制項的內部組織。4.需求分析的原則27軟件工程需要能夠表達和理解問題的信息域和功能域4.需求分析的原則2以層次化的方式對問題進行分解和不斷細化縱向分解橫向分解28軟件工程以層次化的方式對問題進行分解和不斷細化縱橫向分解28軟件工程給出系統(tǒng)的邏輯視圖和物理視圖軟件需求的邏輯視圖給出的是軟件要達到的功能和要處理的數(shù)據(jù)之間的關系,而不是實現(xiàn)的細節(jié)。軟件需求的邏輯描述是軟件設計的基礎。軟件需求的物理視圖給出的是處理功能和數(shù)據(jù)結構的實際表現(xiàn)形式,這往往是由設備本身決定的,因此推遲到設計階段考慮。29軟件工程給出系統(tǒng)的邏輯視圖和物理視圖29軟件工程5.需求獲取需求獲取是在問題及其最終解決方案之間架設橋梁的第一步。獲取需求的一個必不可少的結果是對項目中描述的客戶需求的普遍理解。一旦理解了需求,分析人員、開發(fā)人員和客戶就能探索出描述這些需求的多種解決方案。需求獲取技術包括兩方面的工作:建立獲取用戶要求的方法的框架;支持和監(jiān)控需求獲取的過程的機制。30軟件工程5.需求獲取需求獲取是在問題及其最終解決方案之間架設橋梁的1)軟件需求的層次業(yè)務需求
反映了組織或客戶開展相關業(yè)務的工作流和業(yè)務規(guī)則,是對系統(tǒng)、產(chǎn)品高層次的目標要求,與該組織或客戶的業(yè)務領域有關。用戶需求
描述用戶使用軟件需要完成哪些任務,可通過用例(usecase)圖或場景說明加以闡明。功能―非功能需求
定義了開發(fā)人員必須實現(xiàn)的軟件功能,而非功能需求如表所示:31軟件工程1)軟件需求的層次業(yè)務需求31軟件工程32軟件工程32軟件工程2)需求獲取技術的基本特征一種好的需求獲取技術,對于規(guī)范需求獲取活動,高效準確地獲取需求定義,是十分重要的。好的需求獲取技術,應具有如下基本特征:提供便于溝通的工具,如易于理解的語言;提供定義系統(tǒng)邊界的方法;提供支持抽象的機制,如“分解”、“映射”等;33軟件工程2)需求獲取技術的基本特征一種好的需求獲取技術,對于規(guī)范需求鼓勵分析員使用面向問題的術語思考問題,編寫文檔;為分析員提供多種可供選擇的解決方案;適應需求的變化。適于以上特征的需求獲取方法:基于數(shù)據(jù)流圖的結構化分析方法;基于用例(usecase)的建模方法。需求獲取技術的關鍵點在于:深入淺出
需求獲取要盡可能全面、細致。34軟件工程鼓勵分析員使用面向問題的術語思考問題,編寫文檔;34軟件工程
獲取的需求是個全集,系統(tǒng)真正實現(xiàn)的是個子集。細致地調研并不表明在分析時將調研內容都納入到新系統(tǒng)中,但有利于以后的擴充。以流程為主線
在與用戶交流的過程中,應該用流程將所有的內容串起來。如信息、組織結構、處理規(guī)則等。這樣便于交流溝通。 流程的描述既要有宏觀,又要有微觀。即要強調總體的業(yè)務流程、全生存期的業(yè)務流程,又要對流程細化,有分支的業(yè)務流程。35軟件工程 獲取的需求是個全集,系統(tǒng)真正實現(xiàn)的是個子集。細致地調研并不3)需求獲取應遵循的原則抽象和分解是在人們認識世界和改造世界的長期實踐中總結出來的行之有效的原則,在需求獲取的過程中需遵循的三個原則:分解:捕獲問題空間的整體–部分關系。如問題/子問題分解;抽象:捕獲問題空間的一般化–特殊化關系。如問題的不同變型;投影:捕獲問題空間的多維視圖。即從不同角度考察。36軟件工程3)需求獲取應遵循的原則抽象和分解是在人們認識世界和改造世界4)需求獲取的步驟軟件開發(fā)項目和組織文化的不同,對于需求開發(fā)沒有一個簡單的、公式化的途徑。下面列出9個步驟,用以指導需求獲取活動。定義項目的視圖和范圍包括組織結構圖、各部門的崗位/角色列表。確定用戶類包括人員/責任矩陣。確定目標系統(tǒng)的業(yè)務工作流包括物流、資金流、信息流,建立業(yè)務工作流模型。37軟件工程4)需求獲取的步驟軟件開發(fā)項目和組織文化的不同,對于需求開發(fā)運用需求獲取技術開發(fā)用例(或數(shù)據(jù)流圖)并設置優(yōu)先級
用以掌握主要業(yè)務規(guī)則。收集來自用戶的質量特性信息和其他非功能需求
將性能、安全性、可靠性等需求和其他設計約束結合業(yè)務規(guī)則,形成功能需求。分類在用例(或數(shù)據(jù)流圖)中涉及的數(shù)據(jù)包括數(shù)據(jù)的組成和數(shù)據(jù)之間的關系。詳細擬訂用例(或數(shù)據(jù)流圖)
建立功能模型,并進行審查,用以澄清需求獲取的參與者對需求的理解。38軟件工程運用需求獲取技術開發(fā)用例(或數(shù)據(jù)流圖)并設置優(yōu)先級用開發(fā)并評估界面原型
設想輸入設備、輸出設備、顯示風格、顯示方式、輸出格式等,建立接口規(guī)范和信息流傳輸規(guī)則。從功能描述中開發(fā)概念測試用例
用測試用例來驗證用例(或數(shù)據(jù)流圖)、功能需求和原型。39軟件工程開發(fā)并評估界面原型設想輸入設備、輸出設備、顯示風格、需求獲取可能是軟件開發(fā)中最困難、最關鍵、最易出錯及最需要交流的方面。表現(xiàn)在:需求的不穩(wěn)定性:在整個軟件生存周期內軟件需求會隨著時間的推移發(fā)生變化;需求的不準確性:用戶和開發(fā)人員的認識會隨著使用系統(tǒng)實現(xiàn)業(yè)務流程的實踐逐步提高,一開始不可能設想得面面俱到。需求獲取只有通過有效的客戶/開發(fā)者的合作才能成功。40軟件工程需求獲取可能是軟件開發(fā)中最困難、最關鍵、最易出錯及最需要交流5)針對信息系統(tǒng)的需求調研方法調研用戶的組織結構、崗位設置、職責定義,從功能上區(qū)分有多少個子系統(tǒng),劃分系統(tǒng)的大致范圍,明確系統(tǒng)的目標。調研每個子系統(tǒng)的工作流程、功能與處理規(guī)則,收集原始信息資料,用數(shù)據(jù)流來表示物流、資金流、信息流三者的關系。對調研內容事先準備,針對不同管理層次的用戶詢問不同的問題,列出問題清單。將操作層、管理層、決策層的需求既聯(lián)系又區(qū)分開來,形成一個需求的層次。41軟件工程5)針對信息系統(tǒng)的需求調研方法調研用戶的組織結構、崗位設置、對與用戶溝通的情況及時總結歸納,整理調研結果,初步構成需求基線。若基線符合要求,則需求獲取完成。需求調研的主要手段:發(fā)調查表;召開調查會;向用戶領域的專家個別咨詢;實地考察,跟蹤現(xiàn)場業(yè)務流程;查閱與待開發(fā)系統(tǒng)有關的資料;使用各種調查工具等。42軟件工程對與用戶溝通的情況及時總結歸納,整理調研結果,初步構成需求基6)需求整理與表達的方法采用窮舉方法可以避免遺漏。采用歸納方法,通過對各種情況進行綜合分類可以使問題條理化。采用抽象方法,可以發(fā)現(xiàn)問題的實質,抓住問題的主要矛盾,忽略其次要矛盾。需求整理可以多種手段共用,如組織結構圖、業(yè)務流程圖、多叉樹、關系矩陣、文字敘述、表格、圖形等。需求描述包括組織結構與崗位定義、業(yè)務流程、處理規(guī)則、數(shù)據(jù)項、功能以及上述5個方面的關系。43軟件工程6)需求整理與表達的方法采用窮舉方法可以避免遺漏。43軟件工結構化分析方法最初只是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。擴充后,將建模技術擴展到數(shù)據(jù)建模、功能建模和行為建模,以實體-關系圖、數(shù)據(jù)流圖和控制流圖、狀態(tài)-遷移圖為工具,數(shù)據(jù)字典為核心,從不同視點建立系統(tǒng)的分析模型。三、結構化分析方法44軟件工程結構化分析方法最初只是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立結構化分析的分析模型實體—關系圖狀態(tài)—遷移圖數(shù)據(jù)流圖數(shù)據(jù)對象描述加工規(guī)格說明數(shù)據(jù)字典控制規(guī)格說明45軟件工程結構化分析的分析模型實體—狀態(tài)—遷移圖數(shù)據(jù)流圖數(shù)據(jù)對象描述加1.數(shù)據(jù)建模數(shù)據(jù)模型包括三種互相關聯(lián)的信息:數(shù)據(jù)對象,描述對象的屬性,描述對象間相互連接的關系。在需求分析階段描述數(shù)據(jù)對象和它們之間的關系,使用了E-R圖。例如,在教學管理中,一個教師可以教授零門、一門或多門課程,每位學生也需要學習幾門課程。因此,教學管理中涉及的對象(實體型)有學生、教師和課程。46軟件工程1.數(shù)據(jù)建模數(shù)據(jù)模型包括三種互相關聯(lián)的信息:數(shù)據(jù)對象,描教學數(shù)據(jù)模型學號姓名專業(yè)性別……學生職工號姓名專業(yè)職稱年齡教師課程號課程名學分學時……課程學號課程號成績選課47軟件工程教學數(shù)據(jù)模型學號姓名專業(yè)性別……學生實例的關聯(lián)有三種:一對一(1:1);一對多(1:m);多對多(n:m)。這種實例的關聯(lián)稱為“基數(shù)”?;鶖?shù)表明了“重復性”。教師學生教授基數(shù):一位教師基數(shù):多位學生參與度:必須參與度:可選48軟件工程實例的關聯(lián)有三種:一對一(1:1);一對多(1:m);多E-R圖中表示實體關聯(lián)的符號如下:XY一個X與一個Y相關聯(lián)一個X與一個或多個Y相關聯(lián)XY一個X與零個或一個Y相關聯(lián)XY一個X與零個,一個或多個Y相關聯(lián)XY一個X與一個Y或Z相關聯(lián)XYZ一個X與一個Y與Z相關聯(lián)XYZ49軟件工程E-R圖中表示實體關聯(lián)的符號如下:XY一個X與一個Y相關聯(lián)一2.功能建模和數(shù)據(jù)流圖最初,結構化分析方法僅討論數(shù)據(jù)流建模。目標系統(tǒng)被表示成如圖所示的數(shù)據(jù)變換流程圖。系統(tǒng)的功能體現(xiàn)在核心的數(shù)據(jù)變換中。外部實體外部實體外部實體外部實體目標系統(tǒng)輸入信息輸入信息輸出信息輸出信息50軟件工程2.功能建模和數(shù)據(jù)流圖最初,結構化分析方法僅討論數(shù)據(jù)流建1)功能建模的思想功能建模就是用抽象模型的概念,按照軟件內部數(shù)據(jù)傳遞、變換的關系,自頂向下逐層分解,直到找到滿足功能要求的所有可實現(xiàn)的軟件為止。根據(jù)DeMarco的論述,功能模型使用了數(shù)據(jù)流圖來表達系統(tǒng)內數(shù)據(jù)的運動情況,而數(shù)據(jù)流的變換則用結構化英語、判定表與判定樹來描述。51軟件工程1)功能建模的思想功能建模就是用抽象模型的概念,按照軟件內部2)數(shù)據(jù)流圖中的主要圖形元素數(shù)據(jù)加工(數(shù)據(jù)變換)數(shù)據(jù)源或數(shù)據(jù)潭(外部實體)數(shù)據(jù)流數(shù)據(jù)存儲文件或或52軟件工程2)數(shù)據(jù)流圖中的主要圖形元素數(shù)據(jù)加工(數(shù)據(jù)變換)數(shù)據(jù)源或數(shù)分層的數(shù)據(jù)流圖53軟件工程分層的數(shù)據(jù)流圖53軟件工程3)數(shù)據(jù)流圖的層次結構為了表達數(shù)據(jù)處理過程,需要采用層次結構的數(shù)據(jù)流圖。按照系統(tǒng)的層次結構進行逐步分解,并以分層的數(shù)據(jù)流圖反映這種結構關系。頂層流圖僅包含一個加工,它代表被開發(fā)系統(tǒng)。它的輸入流是該系統(tǒng)的輸入數(shù)據(jù),輸出流是系統(tǒng)所輸出數(shù)據(jù)底層流圖是指其加工不需再做分解的數(shù)據(jù)流圖,它處在最底層中間層流圖則表示對其上層父圖的細化。它的每一加工可能繼續(xù)細化,形成子圖。54軟件工程3)數(shù)據(jù)流圖的層次結構為了表達數(shù)據(jù)處理過程,需要采用層次結構4)功能建模的步驟對考生送來的報名單進行檢查;對合格的報名單編好準考證號后將準考證送給考生,并將匯總后的考生名單送給閱卷站;對閱卷站送來的成績單進行檢查,并根據(jù)考試中心制定的合格標準審定合格者;制作考生通知單(含成績及合格/不合格標志)送給考生;按地區(qū)進行成績分類統(tǒng)計和試題難度分析,產(chǎn)生統(tǒng)計分析表。實例考務處理系統(tǒng)的功能55軟件工程4)功能建模的步驟對考生送來的報名單進行檢查;實例考務處頂層數(shù)據(jù)流圖考生考務處理系統(tǒng)考試中心閱卷站不合格報名表報名表準考證考生通知單成績單合格標準錯誤成績單考生名單統(tǒng)計分析表頂層圖封閉在外部實體之間,反映系統(tǒng)與外部的交互。56軟件工程頂層數(shù)據(jù)流圖考考務考閱卷站不合格報名表報名表準考證考生通知單這個數(shù)據(jù)流圖只是一個高層的系統(tǒng)邏輯模型,它反映了目標系統(tǒng)要實現(xiàn)的功能以及系統(tǒng)與外界的關系。該圖或稱為上下文環(huán)境圖或語境圖(ContextDiagram)數(shù)據(jù)流圖繪制步驟首先確定系統(tǒng)的輸入和輸出根據(jù)考務處理業(yè)務,畫出頂層數(shù)據(jù)流圖,以反映最主要業(yè)務處理流程經(jīng)過分析,考務業(yè)務處理的主要功能應當57軟件工程這個數(shù)據(jù)流圖只是一個高層的系統(tǒng)邏輯模型,它反映了目標系統(tǒng)要實 有登記報名單、統(tǒng)計成績兩大項。主要數(shù)據(jù)流輸入的源點和輸出終點是考生、考試中心和閱卷站。然后從輸入端開始,根據(jù)考務業(yè)務工作流,畫出數(shù)據(jù)流流經(jīng)的各加工框,逐步畫到輸出端,得到第1層數(shù)據(jù)流圖。畫加工的內部:用畫第1層圖同樣的方法畫出每個加工的DFD子圖。重復第5步,直至圖中的尚未分解的加工都足夠簡單。至此得到分層數(shù)據(jù)流圖。58軟件工程 有登記報名單、統(tǒng)計成績兩大項。主要數(shù)據(jù)流輸入的源點和輸出終報名表準考證1登記報名表2統(tǒng)計成績不合格報名表考生通知單成績單統(tǒng)計分析表第1層數(shù)據(jù)流圖考生名冊合格標準考生名單錯誤成績單59軟件工程報名表準考證12不合格考生通知單成績單統(tǒng)計分析表第1層數(shù)據(jù)流第2層數(shù)據(jù)流圖(a)1.1
檢查報名表報名表準考證1.2編準考證號碼不合格報名表考生名冊考生名單合格報名表1.3登記考生合格報名表60軟件工程第2層數(shù)據(jù)流圖(a)1.1報名表準考證1.2不合格考生名第2層數(shù)據(jù)流圖(b)2.1檢查成績單2.2審定合格者考生名冊正確成績單2.3制作通知單2.4分析統(tǒng)計成績2.5分析試題難度試題得分表考生通知單難度分析表合格標準分類統(tǒng)計表成績單錯誤成績單經(jīng)審定的成績單61軟件工程第2層數(shù)據(jù)流圖(b)2.12.2考生名冊正確2.32.425)繪制數(shù)據(jù)流圖的原則數(shù)據(jù)流圖上所有圖形符號只限于前述四種基本圖形元素,它們的命名應反映其實際含義;數(shù)據(jù)流圖的頂層圖上的數(shù)據(jù)流必須封閉在外部實體之間;每個加工至少有一個輸入數(shù)據(jù)流和一個輸出數(shù)據(jù)流;允許一個加工有多條數(shù)據(jù)流流向另一個加工,也允許一個加工有兩個相同的輸出數(shù)據(jù)流流向兩個不同的加工。62軟件工程5)繪制數(shù)據(jù)流圖的原則數(shù)據(jù)流圖上所有圖形符號只限于前述四種基在數(shù)據(jù)流圖中,需按層給加工框編號。編號表明該加工所處層次及上下層的親子關系;規(guī)定任何一個數(shù)據(jù)流子圖必須與它上一層的一個加工對應,兩者的輸入數(shù)據(jù)流和輸出數(shù)據(jù)流必須一致。此即父圖與子圖的平衡;如果一個數(shù)據(jù)文件僅在展開的數(shù)據(jù)流子圖中使用,可以在父圖中不畫出;可以在數(shù)據(jù)流圖中加入物質流,幫助用戶理解數(shù)據(jù)流圖;數(shù)據(jù)流圖中不可夾帶控制流,但針對實時系統(tǒng)可以加入控制流,成為數(shù)據(jù)流圖的擴展形式。63軟件工程在數(shù)據(jù)流圖中,需按層給加工框編號。編號表明該加工所處層次及上
數(shù)據(jù)流和控制流舉例(使用Ward和mellor符號)監(jiān)控固件和操作接口每個固件狀態(tài)動作警告機器人初始化控制操作命令部件狀態(tài)緩沖器位置命令開始/停止處理機器人命令機器人命令文件操作設置處理活動記錄機器人動作位串64軟件工程數(shù)據(jù)流和控制流舉例監(jiān)控固每個固件狀態(tài)動作機器人初始數(shù)據(jù)和控制模型的關系
DFD加工規(guī)格說明加工模型DFD控制規(guī)格說明控制模型數(shù)據(jù)輸出數(shù)據(jù)條件數(shù)據(jù)輸入控制輸入控制輸出加工激活者65軟件工程數(shù)據(jù)和控制模型的關系DFD加工規(guī)格說明加工模型DFD控制規(guī)3.行為建模行為建模給出需求分析方法的所有操作原則,但只有結構化分析方法的擴充版本才提供這種建模的符號。狀態(tài)遷移圖Petri網(wǎng)66軟件工程3.行為建模行為建模給出需求分析方法的所有操作原則,但只有1)狀態(tài)遷移圖例如,有關CPU分配的進程的狀態(tài)遷移。t2t3t4t1運行就緒等待67軟件工程1)狀態(tài)遷移圖例如,有關CPU分配的進程的狀態(tài)遷移。t2狀態(tài)遷移圖是描述系統(tǒng)的狀態(tài)如何響應外部的事件進行推移的一種圖形表示?!啊稹北硎究傻玫降南到y(tǒng)狀態(tài)“→”表示從一種狀態(tài)向另一種狀態(tài)的遷移。S2S1S3t1t2t3t4t4t3t2t1事件狀態(tài)S1S2S3S3S2S3S168軟件工程狀態(tài)遷移圖是描述系統(tǒng)的狀態(tài)如何響應外部的事件進行推移的一種圖2)Petri網(wǎng)Petri網(wǎng)已廣泛地應用于硬件與軟件系統(tǒng)的開發(fā)中,它適用于描述與分析相互獨立、協(xié)同操作的處理系統(tǒng),也就是并發(fā)執(zhí)行的處理系統(tǒng)。Petri網(wǎng)簡稱PNG(PetriNetGraph),它有兩種結點:位置:符號“○”,表示系統(tǒng)狀態(tài)。轉移:符號“|”,表示系統(tǒng)中的事件。有向邊“
”表示向轉移的輸入,或從轉移的輸出。69軟件工程2)Petri網(wǎng)Petri網(wǎng)已廣泛地應用于硬件與軟件系統(tǒng)的開標記,或稱令牌(token),是表明系統(tǒng)當前處于什么狀態(tài)的標志。Petri網(wǎng)可能的變化有:70軟件工程標記,或稱令牌(token),是表明系統(tǒng)當前處于什么狀態(tài)的進程得到資源占用資源運行釋放資源不用資源運行PR1LOCKR處理11UNLOCKR處理12PR2LOCKR處理21UNLOCKR處理22例如,處理兩個進程PR1和PR2的同步問題(此時兩個進程共用一個資源R):71軟件工程進程得到資源占用資源運行釋放資源不用資源運行PR172軟件工程72軟件工程4.數(shù)據(jù)字典數(shù)據(jù)字典是結構化分析方法的核心。與各模型的圖形表示配合,能清楚地表達數(shù)據(jù)處理的要求詞條描述——對于在模型中每一個被命名的圖形元素,均加以定義,其內容有:
名字,別名或編號,分類,描述,定義,位置,其它,等。73軟件工程4.數(shù)據(jù)字典數(shù)據(jù)字典是結構化分析方法的核心。與各模型的圖(1)數(shù)據(jù)流詞條描述數(shù)據(jù)流名:說明:簡要介紹它產(chǎn)生的原因和結果數(shù)據(jù)流來源:來自何方數(shù)據(jù)流去向:去向何處數(shù)據(jù)流組成:數(shù)據(jù)結構數(shù)據(jù)量流通量:數(shù)據(jù)量,流通量1)詞條描述74軟件工程(1)數(shù)據(jù)流詞條描述1)詞條描述74軟件工程(2)數(shù)據(jù)元素詞條描述類型:數(shù)字(離散值,連續(xù)值),文字(編碼類型)長度:取值范圍:相關的數(shù)據(jù)元素及數(shù)據(jù)結構:(3)數(shù)據(jù)文件詞條描述數(shù)據(jù)文件名:簡述:存放的是什么數(shù)據(jù)輸入數(shù)據(jù):輸出數(shù)據(jù):
75軟件工程(2)數(shù)據(jù)元素詞條描述75軟件工程數(shù)據(jù)文件組成:數(shù)據(jù)結構存儲方式:順序,直接,關鍵碼存取頻率:
(4)加工邏輯詞條描述加工名:加工編號:反映該加工的層次簡要描述:加工邏輯及功能簡述輸入數(shù)據(jù)流:輸出數(shù)據(jù)流:加工邏輯:簡述加工程序,加工順序76軟件工程數(shù)據(jù)文件組成:數(shù)據(jù)結構76軟件工程(5)數(shù)據(jù)源及數(shù)據(jù)譚詞條描述名稱:外部實體名簡要描述:什么外部實體有關數(shù)據(jù)流:數(shù)目:77軟件工程(5)數(shù)據(jù)源及數(shù)據(jù)譚詞條描述77軟件工程2)數(shù)據(jù)結構的描述
符號
含義
舉例=被定義為+與
x=a+b[...,...]或[...|...]或
x=[a,b],x=[a|b]{...}或m{...}n重復
x={a},x=3{a}8(...)可選
x=(a)“...”基本數(shù)據(jù)元素
x=“a”.. 連結符
x=1..978軟件工程2)數(shù)據(jù)結構的描述符號 含存折格式79軟件工程存折格式79軟件工程存折=戶名+所號+帳號+開戶日+性質+(印密)+1{存取行}50戶名=2{字母}24所號=“001”..“999”帳號=“00000001”..“99999999”開戶日=年+月+日性質=“1”..“6”
注:“1”表示普通戶,“5”表示工資戶等印密=“0”
注:印密在存折上不顯示存取行=日期+(摘要)+支出+存入+余額+操作+復核80軟件工程存折=戶名+所號+帳號+開戶日+性質+(印密)+1{存取行}3)基本加工邏輯說明
對數(shù)據(jù)流圖的每一個基本加工,必須有一個基本加工邏輯說明。基本加工邏輯說明必須描述基本加工如何把輸入數(shù)據(jù)流變換為輸出數(shù)據(jù)流的加工規(guī)則。加工邏輯說明必須描述實現(xiàn)加工的策略而不是實現(xiàn)加工的細節(jié)。加工邏輯說明中包含的信息應是充足的,完備的,有用的,無冗余的。描述加工邏輯說明的工具:結構化語言、決策表、決策樹。81軟件工程3)基本加工邏輯說明對數(shù)據(jù)流圖的每一個基本加工,必須有一個(1)結構化語言結構化語言是一種偽碼,它的詞匯表由命令動詞數(shù)據(jù)字典中定義的名字有限的自定義詞邏輯關系詞
IF_THEN_ELSE、SWITCH、WHILE_DO、FOR、DO_WHILE等組成。它是一種介于自然語言和形式化語言之間的語言。用以消除在語法上的歧義性。82軟件工程(1)結構化語言結構化語言是一種偽碼,它的詞匯表由82軟語言的正文用基本控制結構進行分割,加工中的操作用自然語言短語來表示。其基本控制結構有三種:簡單陳述句結構:避免復合語句;重復結構:while_do、for_do或do_while結構。判定結構:if_then_else或switch_do結構;用結構化語言描述的規(guī)格說明的正文可以在計算機上編輯,不必過多地考慮語言的在語法上的限制,使得分析員可以集中考慮加工的策略或規(guī)則。83軟件工程語言的正文用基本控制結構進行分割,加工中的操作用自然語言短語商店業(yè)務處理系統(tǒng)中“檢查發(fā)貨單”if發(fā)貨單金額超過$500then
if欠款超過了60天then在償還欠款前不予批準
else
(欠款未超期)發(fā)批準書,發(fā)貨單
else
(發(fā)貨單金額未超過$500)
if欠款超過60天then發(fā)批準書,發(fā)貨單及賒欠報告else
(欠款未超期)發(fā)批準書,發(fā)貨單
84軟件工程商店業(yè)務處理系統(tǒng)中“檢查發(fā)貨單”if發(fā)貨單金額超過$500(2)決策表如果數(shù)據(jù)流圖的加工需要依賴于多個邏輯條件的取值,使用決策表來描述比較合適。條件茬條件項動作茬動作項規(guī)則單個條件單個動作85軟件工程(2)決策表如果數(shù)據(jù)流圖的加工需要依賴于多個邏輯條件的取值以“檢查發(fā)貨單”為例操在償還欠款前不予批準
作發(fā)出批準書
發(fā)出發(fā)貨單
發(fā)出賒欠報告
1234條發(fā)貨單金額>
$500>$500≤
$500≤
$500件賒欠情況>60天≤60天>60天≤60天86軟件工程以“檢查發(fā)貨單”為例在償還欠款前不予批準作發(fā)出批準書(3)判定樹判定樹也是用來表達加工邏輯的一種工具。有時侯它比判定表更直觀。檢查發(fā)貨單金額>$500金額
$500
欠款>60天不發(fā)出批準書
欠款
60天發(fā)貨單發(fā)出批準書、
欠款>60天發(fā)出批準書、發(fā)貨單及賒欠報告
欠款
60天發(fā)出批準書、發(fā)貨單87軟件工程(3)判定樹判定樹也是用來表達加工邏輯的一種工具。有時侯它這是一種有效駕馭風險的技術。通過原型可以增進軟件者和用戶對系統(tǒng)服務需求的理解,使比較含糊的具有不確定性的軟件需求(主要是功能)明確化。可以容易地確定系統(tǒng)的性能,確認各項主要系統(tǒng)服務的可應用性,確認系統(tǒng)設計的可行性,確認系統(tǒng)作為產(chǎn)品的結果。有的原型可以直接成為產(chǎn)品,有的略加修改就可成為最終系統(tǒng)的一個組成部分。四、快速原型化方法88軟件工程這是一種有效駕馭風險的技術。通過原型四、快速原型化方法88軟探索型: 目的是要弄清對目標系統(tǒng)的要求,確定所希望的特性,并探討多種方案的可行性。實驗型: 這種原型用于大規(guī)模開發(fā)和實現(xiàn)之前,考核方案是否合適,規(guī)格說明是否可靠。進化型: 這種原型的目的不在于改進規(guī)格說明,而是將系統(tǒng)建造得易于變化,在改進原型的過程中,逐步將原型進化成最終系統(tǒng)。1.原型分類89軟件工程探索型:1.原型分類89軟件工程2.原型使用策略軟件原型支持需求工程的兩項活動:需求獲取需求有效性驗證其他用途:用戶培訓系統(tǒng)測試原型開發(fā)主要分類:進化式原型開發(fā)拋棄式原型開發(fā)90軟件工程2.原型使用策略軟件原型支持需求工程的兩項活動:90軟件工1)進化式原型開發(fā)基本思路是:先給出一個系統(tǒng)的最初實現(xiàn),讓用戶去使用和評價,不斷進行細化和改善,經(jīng)過多次這樣的反復過程后形成最終的完善的系統(tǒng)。開發(fā)抽象描述建立原型系統(tǒng)使用原型系統(tǒng)系統(tǒng)充分嗎?交付系統(tǒng)否是91軟件工程1)進化式原型開發(fā)基本思路是:先給出一個系統(tǒng)的最初實現(xiàn),讓用2)拋棄式原型開發(fā)基本思路是:原型的根本作用是弄清楚需求和為風險評估提供補充信息。通過評估后,原型被拋棄,重新規(guī)劃和實施系統(tǒng)的開發(fā)??蚣苄枨箝_發(fā)原型確定系統(tǒng)評估原型開發(fā)軟件問題可驗證系統(tǒng)問題可交付的軟件系統(tǒng)可復用構件92軟件工程2)拋棄式原型開發(fā)基本思路是:原型的根本作用是弄清楚需求和為3.原型開發(fā)技術可執(zhí)行規(guī)格說明基于場景(scenario)的設計自動程序設計專用語言可復用(reusable)的軟件簡化假設93軟件工程3.原型開發(fā)技術可執(zhí)行規(guī)格說明93軟件工程1)可執(zhí)行規(guī)格說明可執(zhí)行規(guī)格說明是用于需求規(guī)格說明的一種自動化技術。使用這種方法,人們可以直接觀察他們用語言規(guī)定的任何系統(tǒng)性行為。包括代數(shù)規(guī)格說明有限狀態(tài)模型可執(zhí)行的數(shù)據(jù)流圖94軟件工程1)可執(zhí)行規(guī)格說明可執(zhí)行規(guī)格說明是用于需求規(guī)格說明的一種自動代數(shù)規(guī)格說明使用集合、定義于這些集合上的函數(shù)和定義于這些函數(shù)上的方程來描述對象。規(guī)格說明的操作語義用這些方程表示。舉例:定義一個無界的棧及其操作NEW_STACK:
StackPUSH:Stack,Element
StackPOP:Stack
(Element|Undefined)POP(NEW_STACK())=UndefinedPOP(PUSH(Stack,elem))=elem95軟件工程代數(shù)規(guī)格說明使用集合、定義于這些集合上的函數(shù)和定義于這些函數(shù)有限狀態(tài)模型parnas提出的使用最廣泛的一種可執(zhí)行規(guī)格說明形式。從一個初始狀態(tài)開始接收輸入,到產(chǎn)生輸出,狀態(tài)在推移變化。施加在狀態(tài)元素上的約束確定了有效狀態(tài)的推移。舉例:建立用戶/程序對話96軟件工程有限狀態(tài)模型parnas提出的使用最廣泛的一種可執(zhí)行規(guī)格說明startgoofinfobyenewentryreport‘enter’‘quit’‘help’‘print’97軟件工程startgoofinfobyenewentryrepor可執(zhí)行的數(shù)據(jù)流圖數(shù)據(jù)流圖是基于結構化開發(fā)方法的結構化規(guī)格說明。用一種可執(zhí)行的語言程序代替定義處理邏輯的結構化英語,數(shù)據(jù)流圖就成為由可執(zhí)行語言程序模塊組成的網(wǎng)絡,在一定環(huán)境或工具的支持下就可成為一個可以執(zhí)行的原型系統(tǒng)。98軟件工程可執(zhí)行的數(shù)據(jù)流圖數(shù)據(jù)流圖是基于結構化開發(fā)方法的結構化規(guī)格說明2)基于場景的設計場景是指用戶界面的原型。一個場景用以模擬在系統(tǒng)運行期間用戶經(jīng)歷的事件。它提供了輸入─處理─輸出的屏幕格式和有關對話的模型。因此,軟件開發(fā)人員能夠給用戶顯示系統(tǒng)的逼真的視圖,使用戶得以判斷是否符合他的意圖。分析員與用戶的溝通往往通過演示場景??稍谌我粓鼍爸惺褂靡惶卓蓮陀玫能浖K,以表達某一方面的要求。99軟件工程2)基于場景的設計場景是指用戶界面的原型。99軟件工程可使用一種原型語言來描述原型系統(tǒng)。原型開發(fā)過程中用這種語言來定義屏幕數(shù)據(jù)項相關的操作從系統(tǒng)的外部描述開始,開發(fā)與數(shù)據(jù)庫的接口錯誤處理和恢復過程 等系統(tǒng)的與外部視圖一致的細節(jié)。100軟件工程可使用一種原型語言來描述原型系統(tǒng)。原型開發(fā)過程中用這種語言來3)自動程序設計在程序自動生成環(huán)境的支持下,利用計算機實現(xiàn)軟件的開發(fā)。可以自動或半自動地把用戶的非過程式問題規(guī)格說明轉換為某種高級語言程序:演繹綜合手段:基于數(shù)學推理的構造式證明。程序變換手段:將一程序轉換成另一功能等價的程序,并保持其正確性不變。101軟件工程3)自動程序設計在程序自動生成環(huán)境的支持下,利用計算機實現(xiàn)軟實例推廣手段:從實例特征出發(fā),將它推廣為待編程序的特征,最后得到程序。過程化手段:研究甚高級語言的編譯和知識的過程化。102軟件工程實例推廣手段:102軟件工程4)專用語言專用語言是應用領域的模型化語言。在原型開發(fā)中使用專用語言,可方便用戶和軟件開發(fā)者在計劃中的系統(tǒng)特性方面的交流。103軟件工程4)專用語言專用語言是應用領域的模型化語言。103軟件工程5)軟件復用技術利用可復用的模塊,做出適當?shù)慕M合,就可得到快速構造的原型系統(tǒng)。為了快速地構造原型,這些模塊必須有簡單而清晰的界面;應當盡量不依賴其它的模塊或數(shù)據(jù)結構;應具有一些通用的功能。104軟件工程5)軟件復用技術利用可復用的模塊,做出適當?shù)慕M合,就可得到快6)簡化假設在開發(fā)過程中為使設計者迅速得到一個簡化的系統(tǒng),可以預設一些使得問題簡化的假設。盡管這些假設可能實際上并不能成立,但它們在原型開發(fā)過程中可以使開發(fā)者的注意力集中在一些主要的方面。105軟件工程6)簡化假設在開發(fā)過程中為使設計者迅速得到一個簡化的系統(tǒng),可1.為什么要采用面向對象技術五、面向對象分析方法系統(tǒng)可維護性的要求 在系統(tǒng)中,功能往往是未來可能變化的因素,而問題領域的實體則不會有太多的變化。將這些實體作為對象構建系統(tǒng),可以構造一個穩(wěn)定的系統(tǒng)。因為未來的功能變化只需改變對象內部的操作的實現(xiàn),修改是局部的。系統(tǒng)可復用性的需要
代碼級的復用使得開發(fā)者得以利用已有的程序106軟件工程1.為什么要采用面向對象技術五、面向對象分析方法系統(tǒng)可維護 實現(xiàn)新的程序。軟件開發(fā)實踐期望不僅在代碼級,而且在設計級、框架級,甚至系統(tǒng)級都能夠復用。面向對象技術中的封裝性、繼承性、類屬性等支持各種級別的復用。同一類中所有實例共享數(shù)據(jù)結構和行為特征;同一應用中所有實例通過繼承共享數(shù)據(jù)結構和行為特征;不同應用中所有實例通過復用共享數(shù)據(jù)結構和行為特征。程序無關性的期望107軟件工程 實現(xiàn)新的程序。軟件開發(fā)實踐期望不僅在代碼級,而且在設計級、
任何機器環(huán)境下,使用任意程序語言所編的程序,希望都能夠通用。與機器相關的成分應該與處理邏輯無關。 面向對象方法采用對象(類的實例)作為系統(tǒng)的基本構造單位。類的多態(tài)性以及動態(tài)綁定技術,是面向對象方法有別于結構化方法的實質性突破。它提倡接口和實現(xiàn)分開的設計理念并提供程序機制,為程序無關性的理想奠定了基礎。108軟件工程 任何機器環(huán)境下,使用任意程序語言所編的程序,希望都能夠通用2.什么是面向對象PeterCoad和EdwardYourdon提出面向對象方法的概念:面向對象=對象+分類 +繼承(inheritance) +消息通信(communicationwithmessages)采用這四個概念開發(fā)的軟件系統(tǒng)是面向對象的。
。一個面向對象的程序的每一成份應是對象,計算是通過新的對象的建立和對象之間的通信來執(zhí)行的。109軟件工程2.什么是面向對象PeterCoad和Edward1)對象(object)對象是系統(tǒng)中用來描述客觀事物的一個實體,是構成系統(tǒng)的一個基本單位,由一組屬性和一組對屬性進行操作的服務組成。
對象=對象名+數(shù)據(jù)(屬性)+操作(行為)屬性一般只能通過執(zhí)行對象的操作來改變。操作又稱為方法或服務,它描述了對象執(zhí)行的功能,若通過消息傳遞,還可以為其他對象使用。110軟件工程1)對象(object)對象是系統(tǒng)中用來描述客觀事物的一個實(50,60)(50,85)(35,60)(35,85)(50,45)(60,35)(56,10)(46,37)(10,50)(20,20)(23,30)計算機窗口中的三個多邊形111軟件工程(50,60)(50,85)(35,60)(35,8drawmove(x,y)contains?(aPoint)(10,50)(20,20)(23,30)triangledrawmove(x,y)contains?(aPoint)(46,37)(50,45)(60,35)(56,10)quadrilateral1drawmove(x,y)contains?(aPoint)(35,60)(35,85)(50,85)(50,60)quadrilateral2表示多邊形的三個對象112軟件工程draw(10,50)triangledraw(46,32)類(classification)把具有相同特征(屬性)和行為(操作)的對象歸在一起就形成了類(class)。類的定義包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作。在一個類中,每個對象都是類的實例(Instance),它們都可使用類中的函數(shù)。類定義了各個實例所共有的結構,使用類的構造函數(shù),可以在創(chuàng)建該類的實例時初始化這個實例的狀態(tài)(實例變量)。113軟件工程2)類(classification)把具有相同特征(屬性)由兩個四邊形對象導出一個類drawmove(x,y)contains?(aPoint)(46,37)(50,45)(60,35)(56,10)quadrilateral1drawmove(x,y)contains?(aPoint)(35,60)(35,85)(50,85)(50,60)quadrilateral2drawmove(x,y)contains?(aPoint)point1point2point3point4quadrilateral114軟件工程由兩個四邊形對象導出一個類draw(46,37)quadr3)消息(messages)消息是一個實例與另一個實例之間傳遞的信息,要求該實例執(zhí)行類中定義的某個操作。消息的使用類似于函數(shù)調用,消息中指定了某一個實例,一個操作名和一個參數(shù)表(可能是空的)。接收消息的實例執(zhí)行消息中指定的操作,并將形式參數(shù)與參數(shù)表中相應的實參值結合起來。消息有4類:發(fā)送對象激活接收對象;發(fā)送對象傳送信息給接收對象;發(fā)送對象詢問接收對象;發(fā)送對象請求接收對象提供服務。115軟件工程3)消息(messages)消息是一個實例與另一個實例之間傳4)繼承(inheritance)類與類之間可能具有的一般化和特殊化關系:即“is-a”關系,特殊化類是一般化類的子類,一般化類是特殊化類的父類。在這種關系下形成一種層次的關聯(lián)。這就是繼承關系。交通工具輪船汽車飛機116軟件工程4)繼承(inheritance)類與類之間可能具有的一般化繼承是父類和子類之間共享數(shù)據(jù)和方法的機制。在定義和實現(xiàn)一個類時,可以在一個現(xiàn)成的類的基礎上來進行,把這個現(xiàn)成類所定義的內容作為自己的內容,并加入若干新的內容。父類A和它的子類B之間的繼承關系繼承部分增加部分從A繼承父類A子類B117軟件工程繼承是父類和子類之間共享數(shù)據(jù)和方法的機制。在定義和實現(xiàn)一個類分類只從一個父類得到繼承,叫做“單重繼承”。一個子類有兩個或更多個父類,則稱“多重繼承”。汽車大客車載重車油罐車汽車起重機起重車多(重)繼承單(重)繼承118軟件工程分類汽車大客車載重車油罐車汽車起重機起重車多(重)繼承單(重5)多態(tài)不同的對象對同一消息有不同的實現(xiàn)。多態(tài)的實現(xiàn)受到繼承的支持:利用類的繼承的層次關系,把具有通用功能的消息存放在高層次,而不同的實現(xiàn)這一功能的行為放在較低層次,在這些低層次上生成的對象能夠給通用消息以不同的響應。參數(shù)多態(tài):即模板化的多態(tài),通過參數(shù)代換確定所用的數(shù)據(jù)類型。包含多態(tài):常見的例子就是子類型化,即一個類型是另一個類型的子類型。119軟件工程5)多態(tài)不同的對象對同一消息有不同的實現(xiàn)。119軟件工程3.面向對象分析(OOA)面向對象分析(Object-OrientedAnalysis),簡稱OOA。OOA的目的:理解應用問題;確定系統(tǒng)的功能、性能要求。面向對象分析法與結構化分析法之間的差別:結構化分析方法中的E-R圖,關注實體的屬性和相互間的關系;而面向對象的分析,除此之外還要關注實體的行為。120軟件工程3.面向對象分析(OOA)面向對象分析(Object-Or結構化分析的數(shù)據(jù)流圖,將數(shù)據(jù)和加工處理分開;而面向對象的分析是將數(shù)據(jù)實體和他們的處理動作視為不可分割的整體來考慮的。結構化分析方法建造系統(tǒng)的元素是基于功能,或加工處理的;而面向對象分析方法建造系統(tǒng)的基本元素是封裝了操作的對象類。因此,面向對象的結果比較容易理解和管理,便于修改,早期階段的修改容易提高軟件的可靠性。121軟件工程結構化分析的數(shù)據(jù)流圖,將數(shù)據(jù)和加工處理分開;而面向對象的分析4.面向對象分析的活動發(fā)現(xiàn)合適的對象類和對象的標識類和對象的細化標識結構標識主題標識屬性標識實例連接標識服務和消息122軟件工程4.面向對象分析的活動發(fā)現(xiàn)合適的對象122軟件工程1)發(fā)現(xiàn)合適的對象面向對象技術應能顯著提高軟件開發(fā)的質量和生產(chǎn)率,但這種好處只有在正確標識了對象集合的基礎上才能得以實現(xiàn)。沒有一個規(guī)范的建立對象的方法,軟件開發(fā)人員只能盲目地建立對象。發(fā)現(xiàn)對象的方法對象存儲數(shù)據(jù)并具有職能(即服務)。傳統(tǒng)的系統(tǒng)分析工具的主要功能是定義數(shù)據(jù)或說明處理,對發(fā)現(xiàn)對象具有非常重要的作用。123軟件工程1)發(fā)現(xiàn)合適的對象面向對象技術應能顯著提高軟件開發(fā)的質量和生有3種非常有用的傳統(tǒng)系統(tǒng)分析工具:數(shù)據(jù)流圖、實體關系圖以及狀態(tài)遷移圖,涉及了系統(tǒng)的3個不同的、相互獨立的方面(處理過程、數(shù)據(jù)和控制),稱為三視圖模型3VM(3-ViewModeling)。對象是與應用領域的有關概念緊密結合在一起的。概念的處理主要是基于自然語言:書面語或口語。
將語言規(guī)則應用到軟件系統(tǒng)分析中的處理方法稱為基于語言的信息分析(Linguistic-basedInformationAnalysis,簡稱LIA)。
124軟件工程有3種非常有用的傳統(tǒng)系統(tǒng)分析工具:數(shù)據(jù)流圖、實體關系圖以3VM和LIA有別于且獨立于面向對象分析,這些技術的應用是一個不斷反復的過程。目的就是在實際應用中最大限度地降低對象標識的主觀性。將3VM和LIA應用于發(fā)現(xiàn)對象的過程見圖??蛻魣?zhí)行LIA建立3VM建立OOA模型設計處理資源庫資源工作表格用戶對話OOA模型3VM125軟件工程3VM和LIA有別于且獨立于面向對象分析,這些技術的應用是一(1)三視圖模型(3VM)實體關系模型
實體關系圖(ERD)是OOA的一個有力的前哨。實體很有可能成為對象;實體的屬性則表示成最終要由對象進行存儲的數(shù)據(jù);實體之間的關系有可能將建立“關聯(lián)對象”。表示關系(連接)的基數(shù),以及因果條件可能成為維持這些關系的服務。
ERD的問題:標識的實體可能與應用領域概念無關;對于那些不存儲數(shù)據(jù)的對象顯得無能為力。126軟件工程(1)三視圖模型(3VM)實體關系模型126軟件工程數(shù)據(jù)流模型 有兩種形式的數(shù)據(jù)流模型上下文圖
確定一個全局的系統(tǒng)邊界;外部實體就是候選對象;對象集合都必須闡明這些上下文圖中的數(shù)據(jù)流是如何被接收、處理及生成的。分層的數(shù)據(jù)流圖待開發(fā)系統(tǒng)的功能可分解成為一些基本單元,這些基本單元可看成是基本處理規(guī)格說明(PPSs)。PPSs最后必須對應于對象的方法或服務。127軟件工程數(shù)據(jù)流模型127軟件工程狀態(tài)遷移模型
有兩種形式的狀態(tài)遷移模型:事件響應模型標識出系統(tǒng)必須識別的所發(fā)生的每一個事件,以及系統(tǒng)必須作出的預期響應的事件;標識一系列的識別事件的對象、產(chǎn)生響應的對象。狀態(tài)遷移圖能標識事件識別對象和對事件產(chǎn)生響應的對象;有助于標識保存狀態(tài)信息的屬性。注意:并非所有3VM工具對每個系統(tǒng)都是有用的。128軟件工程狀態(tài)遷移模型128軟件工程(2)基于語言的信息分析(LIA)3VM技術并不能專門用于指導正確地標識出新系統(tǒng)的對象集合?;谡Z言的信息分析(LIA)在發(fā)現(xiàn)對象方面給出了大量的指導。LIA的目的是標識出應用領域的概念空間及這些概念之間的關系。有兩種十分有效的LIA技術:短語頻率分析(PhraseFrequencyAnalysis,簡稱PFA)矩陣分析(MatrixAnalysis,簡稱MA)129軟件工程(2)基于語言的信息分析(LIA)3VM技術并不能專門用a.短語頻率分析(PFA)短語頻率分析搜索選定的問題陳述(資源文本),標識可以表示問題領域概念的術語。PFA是標識概念而不是標識語法單元。PFA清單的建立基本上是一個客觀的過程,甚至可以自動處理。但可能大多數(shù)標識出來的概念是與目標系統(tǒng)無關的。PFA的優(yōu)點就在于能廣泛地標識問題領域的概念集合,并對它們進行評估,判定哪些與目標軟件無關。130軟件工程a.短語頻率分析(PFA)短語頻率分析搜索選定的問題陳述acceptedsubscriptionboardofadvisorscorrespondenceaddressaccompaniedpaymentbrownwrapper,plaincost,shippingaccountingdepartmentbulkshipmentcountryactualexpirationdatebureau,subscriptionservicecountry,foreignadditionalsubscriptioncheckpaymentcreditcardorderaddress,corporatecommision,subscriptioncreditcardpaymentaddress,correspondence
servicecurrentauthoraddress,homecompanysubscriptioncustomeraddress,subscriptioncomplimentarysubscriptiondatabaseadvisors,boardofcomplimentarysubscriptiondate,actualexpirationagency,subscriptionservice
querydate,expirationagreement,complimentarysubscriptiondate,expireddistributor-publisher
reviewdaleted,complimentaryannualsubscriptionpricecomplimentarysubscription
subscriptionarticle
deleteddepartment,accountingassociatedsiteconstituentcopiesdepartment,corporateauthorcontinuedsubscriptiondirectsubscriptionauthor,contributingcontributingauthordiscount,subscription
…
…131軟件工程acceptedsubscriptionboardofPFA將名詞和動詞標識為候選實體和屬性。但由于名詞/動詞的標識是非常主觀的,可根據(jù)什么是名詞或動詞,以及根據(jù)分析員的理解,才能確定哪些名詞或動詞是要找的。對于任一有用的應用領域資源,PFA可能會產(chǎn)生一個長長的概念的清單。許多被標識出的概念因與目標軟件無關而被丟棄,但其它的則會成為OOA模型的成份。將PFA清單轉換為OOA/OOD工作表格。列出對各個概念的理解和選擇,這將有助于對象的選出。132軟件工程PFA將名詞和動詞標識為候選實體和屬性。但由于名詞/動詞的標
SmallBytes
訂閱系統(tǒng)
OOA/OOD
工作表格
條
目(0)(1)(2)(3)(4)(5)(6)(7)(8)
注
釋ACCEPTIONSUBSCRIPTION
×SUBSCRIPTION的屬性ACCOMPANIEDPAYMENT
×
對payment的不同類型不加
以區(qū)分ACCOUNTINGDEPARTMENT
×
已超出SBSS的應用領域ACTUALEXPIRATIONDATE
×SUBSCRIPTION的屬性ADDITIONALSUBSCRIPTION
×
×SUBSCRIPTION的可能屬
性,或可能是派生類型-基
類型結構ARTICLE
×ASSOCIATEDSITE
×SITE的屬性AUTHOR
×
.....................(0)不適用,可能無關,超出指定系統(tǒng)的環(huán)境(4)可能描述對象的服務(1)可能的對象-類(5)與實現(xiàn)相關,可能是屬于問題領域部分的條目(2)可能是派生類型-基類型結構的一部分(6)可能是屬于人機交互部分的條目包括泛化-特化結構和整體-部分結構(7)可能是屬于任務管理部分的條目(3)可能描述對象-類的屬性或實例關系(8)可能是屬于數(shù)據(jù)管理部分的條目
133軟件工程SmallBytes訂閱系統(tǒng)OOA/OODb.矩陣分析(MA)通常是在初始對象標識出來后再使用。矩陣的行和列是應用領域的概念。矩陣中的元素表示了相對應的行與列上的概念之間的關聯(lián)關系。分析員標識出應用領域的關系(事務規(guī)則);而且還可能會發(fā)現(xiàn)新的在初始的PFA中沒有產(chǎn)生的對象。134軟件工程b.矩陣分析(MA)通常是在初始對象標識出來后再使用。1SBSS應用領域部分二維MA表135軟件工程SBSS應用領域部分二維MA表135軟件工程發(fā)現(xiàn)對象過程用OOA/OOD工作表格為指南,對照3VM標識的各種成份檢查應用領域的各種概念。例如,查閱部分事件表,有一個事件,叫做“評審贈閱清單的時間”。翻查SBSS的OOA/OOD工作表格,查找與這個事件相關聯(lián)的應用領域的概念,發(fā)現(xiàn)“贈閱評審”最合適。最后決定把“贈閱評審”作為SBSS的一個對象。136軟件工程發(fā)現(xiàn)對象過程用OOA/OOD工作表格為指南,對照3VM標識的這個對象是一個“事件識別者”對象,它不存儲任何數(shù)據(jù),所以用實體關系模型不能發(fā)現(xiàn)這樣的對象。任何一個系統(tǒng)中的對象必須是事件的識別者或事件的響應者。如果一個對象既不能識別事件的發(fā)生,也不能響應任一事件,它就不是屬于這個系統(tǒng)的對象。這也是一個反復迭代的過程。對這個模型所進行的不斷細化的過程中,可能會刪除一些已存在的對象或建立一些新的對象。137軟件工程這個對象是一個“事件識別者”對象,它不存儲任何數(shù)據(jù),所以用實2)類和對象的標識對象應該具有記憶其自身狀態(tài)的能力。而且對象的屬性應當是系統(tǒng)所關心的,或是系統(tǒng)正常運行所必需的。對象應當具有有意義的服務(操作),可用以修改對象本身的狀態(tài)(屬性值)。而且對象可以利用其服務為系統(tǒng)中的其它對象提供外部服務。對象應當具有多個有意義的屬性。僅有一個屬性的對象最好表示為其他對象的屬性。138軟件工程2)類和對象的標識對象應該具有記憶其自身狀態(tài)的能力。而且對象為對象定義的屬性應適合于對象的所有實例。如果對象的某一個實例不具備某屬性,則意味著應用領域中存在尚未發(fā)現(xiàn)的繼承關系。應該利用繼承關系將原來的對象和特殊的實例區(qū)分為兩個對象。為對象定義的有關服務應適合于對象的所有實例。對象應是軟件分析模型的必要成分,與設計和實現(xiàn)方法無關。在面向對象的分析活動中,對對象的識別和篩選取決于應用問題及其背景。也取決于分析員的主觀思維。139軟件工程為對象定義的屬性應適合于對象的所有實例。如果對象的某一個實例例如,ECS的應用領域概念需要注意的是:必須區(qū)分一個概念是屬于應用問題的范疇,還是實現(xiàn)的范疇??紤]與電梯有關的所有事務的清單??梢詣h去其中一些很明顯是關于ECS如何實現(xiàn)的而不是用于說明它干什么的條目。例如電梯線路、電梯中斷和電梯輪等。清單中有些東西顯然很重要,會成為對象、屬性、結構或服務。如電梯容量、電梯號和電梯位置等,就可以成為電梯的屬性。分析時需注意理解詞匯用法上的問題。140軟件工程例如,ECS的應用領域概念需要注意的是:必須區(qū)分一個概念是屬例如,電梯控制系統(tǒng),電梯控制程序和電梯控制器有什么不同?它們是一回事嗎?考慮是否需要在ECS中設置一個基本對象,由它提供一些控制和智能協(xié)調?是否要為每一部電梯配置管理程序?是否這些功能由電梯調度程序來實現(xiàn)?又例如,在列出的所有與電梯按鈕有關的條目,考慮所有的單詞在應用領域是否有意義?是否有些單詞是用戶隨便用來描述問題的?
(press和push真的有區(qū)別嗎?)141軟件工程例如,電梯控制系統(tǒng),電梯控制程序和電梯控制器有什么不同?它們哪些單詞是與實現(xiàn)有關的?一個對象BUTTON是否僅具有屬性up和down,是否還有別的想法?可能對清單的其它部分還需要討論。例如,是否區(qū)分乘客和即將上電梯的乘客。目前可以不去考慮將來可能會增添的功能,例如安置紅外線檢測器。142軟件工程哪些單詞是與實現(xiàn)有關的?142軟件工程3)類和對象的細化標識了OOA模型候選對象的初始清單和其他結構后,可以通過建立初始的OOA模型的對象類來細化這個清單。將PFA表轉換成OOA/OOD工作表格非常有效。它可以將每一個被標識的應用領域的概念歸于某一特定的面向對象模型的成分。在發(fā)現(xiàn)和細化對象過程中仍使用三視圖模型。事件響應圖標識出系統(tǒng)必須對其響應的事件,及由誰來識別這個事件,誰來響應這個事件。143軟件工程3)類和對象的細化標識了OOA模型候選對象的初始清單和其他結實體關系圖對于實現(xiàn)事務數(shù)據(jù)處理的應用來說,可以幫助人們發(fā)現(xiàn)在初步的評審中忽略了的對象。如果系統(tǒng)中有許多看起來相互無關聯(lián)的事情在進行,那么這個系統(tǒng)應可以劃分成多個子系統(tǒng),用上下文圖來幫助確定要選擇的對象和類。在細化過程中可能會發(fā)現(xiàn)一些在初步分析中沒有被用戶標識出來的概念,這些新的概念有可能成為對象。對于每一個最終得到的對象,可寫一個簡短的描述,說明類的成員關系。144軟件工程實體關系圖對于實現(xiàn)事務數(shù)據(jù)處理的應用來說,可以幫助人們發(fā)現(xiàn)在ECS的三視圖模型使用上下文圖可以直接幫助我們確定ECS系統(tǒng)被封閉在那些外部實體的范圍內。目的地按鈕面板召喚按鈕面板電梯樓層傳感器超載傳感器目的地按鈕面板到達按鈕面板召喚按鈕面板馬達電梯控制系統(tǒng)目的地請求召喚請求電梯狀態(tài)樓層消息超載狀況修改到達修改目的地修改召喚馬達命令145軟件工程ECS的三視圖模型使用上下文圖可以直接幫助我們確定ECS系統(tǒng)因為ECS不需要存儲重要的或復雜的數(shù)據(jù),只需儲存電梯到達樓層、當前召喚、要到達的目的地等信息,所以ERD不是很重要。樓層電梯召喚目的地聯(lián)系聯(lián)系聯(lián)系聯(lián)系ECS的ERD146軟件工程因為ECS不需要存儲重要的或復雜的數(shù)據(jù),只需儲存電梯到達樓層
ECS的事件響應模型最有用。它說明了所有可能發(fā)生的事件以及系統(tǒng)對這些事件應作出什么響應。 這些事件包括:某一確定時刻發(fā)生的事件。系統(tǒng)能夠識別的事件。
事件的描述應詳細到與應用領域和用戶的陳述一致。并由用戶來評價。 ECS的事件響應模型147軟件工程ECS的事件響應模型最有用。它說明了所有可能發(fā)生的事件以及148軟件工程148軟件工程標識事件的三個準則:發(fā)生在某一確定的時刻;能夠檢測出事件的發(fā)生;能夠找到事先定制好的響應。如果具備這三個條件,就可以納入事件響應模型中。在上下文中使用事務分離原則:分析模型與設計模型分開建立。例如,在事件響應模型中沒有對按鈕和指示燈進
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水控課程設計cad圖教學
- 稅收基礎知識 課程設計
- 旅游主題網(wǎng)頁課程設計
- 2024年沙子供貨協(xié)議模板
- 植物澆灌器課程設計
- 2024年城市配送運輸框架合同3篇
- 消化營養(yǎng)生物課程設計
- 旋風風離器課程設計
- 管理會計課程設計日記
- 電網(wǎng)規(guī)劃課程設計6
- 2024-2025學年七年級上學期歷史觀點及論述題總結(統(tǒng)編版)
- 2024年安全員A證考試題庫及答案(1000題)
- 國開 2024 年秋《機電控制工程基礎》形考任務1234答案+【2020形考1234答案】全析
- 青島大學《英語綜合》2023-2024學年第一學期期末試卷
- 加工裝配業(yè)務合作框架協(xié)議
- EPC工程總承包實施方案
- 行政和解協(xié)議書樣本
- 新人模特經(jīng)紀合同范例
- 電動車自燃應急預案
- 公共體育(三)學習通超星期末考試答案章節(jié)答案2024年
- 2024-2030年中國電子駐車制動器(EPB)行業(yè)發(fā)展現(xiàn)狀及前景趨勢研究報告
評論
0/150
提交評論