面向?qū)ο笙到y(tǒng)的分析與設(shè)計(jì)_第1頁(yè)
面向?qū)ο笙到y(tǒng)的分析與設(shè)計(jì)_第2頁(yè)
面向?qū)ο笙到y(tǒng)的分析與設(shè)計(jì)_第3頁(yè)
面向?qū)ο笙到y(tǒng)的分析與設(shè)計(jì)_第4頁(yè)
面向?qū)ο笙到y(tǒng)的分析與設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、面向?qū)ο笙到y(tǒng)的分析與設(shè)計(jì)學(xué)習(xí)報(bào)告面向?qū)ο笙到y(tǒng)的分析與設(shè)計(jì)課程是本專業(yè)的一門重要的專業(yè)課。通過本課程的學(xué)習(xí),使我在已有的計(jì)算機(jī)軟硬件基礎(chǔ)知識(shí)、程序設(shè)計(jì)知識(shí)、數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)通信知識(shí)的基礎(chǔ)上系統(tǒng)掌握了面向?qū)ο笙到y(tǒng)的分析與設(shè)計(jì)方法和技術(shù),并初步具備了針對(duì)特定環(huán)境下的應(yīng)用問題進(jìn)行信息系統(tǒng)開發(fā)(包括系統(tǒng)分析、設(shè)計(jì)與實(shí)現(xiàn))的能力?,F(xiàn)將學(xué)習(xí)情況作以下匯報(bào)。一、面向?qū)ο蟾攀鲈?0世紀(jì)60年代以前,軟件開發(fā)者構(gòu)造的軟件系統(tǒng)大多都是較小的,且相對(duì)簡(jiǎn)單。編程語(yǔ)言及編程環(huán)境也相對(duì)簡(jiǎn)單,隨著軟件復(fù)雜性的增長(zhǎng),為了更好地維護(hù)代碼,軟件開發(fā)也需要方法來進(jìn)行約束。傳統(tǒng)的方法中,結(jié)構(gòu)化方法和基于建模方法是典型的軟件開發(fā)方法。結(jié)構(gòu)化

2、方法是結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化編程的總稱。結(jié)構(gòu)化方法的思想萌發(fā)于20世紀(jì)60年代,是在70年代由Tom De Macro和Ed Yourdon等人被系統(tǒng)地進(jìn)出來。其目的在于,提供一個(gè)有序的機(jī)制,通過抽象來理解待開發(fā)的系統(tǒng),試圖產(chǎn)生結(jié)構(gòu)良好的軟件系統(tǒng)。但對(duì)于較復(fù)雜的系統(tǒng)而言,容易導(dǎo)致模塊的低內(nèi)聚和模塊間的高耦合,從面使得系統(tǒng)缺乏靈活性和可維護(hù)性?;诮7椒ㄔ?0世紀(jì)70年代末提出,即Peter Chen的實(shí)體關(guān)系法與Ed Codd的關(guān)系數(shù)據(jù)庫(kù)理論相結(jié)合提出的一種新的軟件開發(fā)方法。其強(qiáng)調(diào)對(duì)信息實(shí)體建模,而不是對(duì)象建模。結(jié)構(gòu)化方法和基于建模方法都沒有較強(qiáng)地描述系統(tǒng)的動(dòng)態(tài)行為的能力。隨著計(jì)算機(jī)

3、技術(shù)的飛速發(fā)展,計(jì)算機(jī)管理系統(tǒng)應(yīng)用的普及,企業(yè)信息化勢(shì)在必行。傳統(tǒng)開發(fā)方法結(jié)構(gòu)化開發(fā)的軟件存在很多問題,其有穩(wěn)定性、可修改性和可重用性都比較差,生產(chǎn)效率低等缺陷,這是因?yàn)閭鹘y(tǒng)的軟件開發(fā)是面向過程的。然而,用戶需求的變化大部分是針對(duì)功能的,采用面向?qū)ο蠓椒ㄩ_發(fā)可以滿足用戶的需求,因?yàn)槊嫦驅(qū)ο笥幸韵聝?yōu)點(diǎn):能夠比較自然地反映現(xiàn)實(shí)事物,可重用性、可維護(hù)性和可擴(kuò)展性比較強(qiáng)。什么是面向?qū)ο竽??“面向?qū)ο蟆北旧頉]有任何意義?!皩?duì)象”大概是英語(yǔ)中最普通的一個(gè)單詞。它在字典中的定義是這樣的。對(duì)象:能感覺到或能夠被感覺到的東西。換句話說,對(duì)象可以是任何東西!“面向”也沒有任何特別的含義,它的定義是“指向”。在這種

4、定義下,“面向?qū)ο蟆北焕斫鉃樾稳菰~。因此,面向?qū)ο罂梢远x成這樣,面向?qū)ο螅褐赶蚰憧梢韵氲降娜魏螙|西。毫無疑問,軟件工業(yè)無法為“面向?qū)ο蟆毕乱粋€(gè)統(tǒng)一的定義。這種模糊性使得任何一個(gè)軟件零售商都聲稱他們的商品是“面向?qū)ο蟆钡摹?面向?qū)ο蟮幕靖拍畋M管權(quán)威人士對(duì)面向?qū)ο蟮母拍顩]有達(dá)成一致的意見,但從程序設(shè)計(jì)方法的角度來看,面向?qū)ο笫且环N新的程序設(shè)計(jì)范型。其基本思想是使用對(duì)象、類、封裝、繼承、關(guān)聯(lián)、聚合、消息、多態(tài)性等基本概念來進(jìn)行程序設(shè)計(jì)。1.1對(duì)象(Object)對(duì)象是人們要進(jìn)行研究的任何事物,它可以是有形的(比如一輛汽車),也可以是無形的(比如一項(xiàng)計(jì)劃)。對(duì)象是構(gòu)成世界的一個(gè)獨(dú)立單位,它具有自己

5、的靜態(tài)特征和動(dòng)態(tài)特征。對(duì)象是系統(tǒng)中用來描述客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位。一個(gè)對(duì)象由一組屬性和對(duì)這組屬性進(jìn)行操作的一組服務(wù)構(gòu)成。1.2類(Class)具有相同或相似性質(zhì)的對(duì)象的抽象就是類。因此,對(duì)象的抽象是類,類的具體化就是對(duì)象,也可以說類的實(shí)例是對(duì)象。類的確定主要是確定該類的所有對(duì)象有哪些屬性和哪些行為。這些屬性和行為必須覆蓋該類中的所有對(duì)象。例如在一個(gè)學(xué)生類中,它的屬性有姓名、學(xué)號(hào)、性別、所在院系,它的行為有選課、注冊(cè)等。抽象是指忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有拳本質(zhì)特征,從而找出事物的共性;而分類是把具有共同性質(zhì)的事物劃分為一類,得出一個(gè)抽象的概念。另外,每一

6、個(gè)屬性與行為都被封裝后,只能在類的內(nèi)部起作用。1.3封裝(Encapsulation)為了實(shí)現(xiàn)信息的隱蔽,又提出了封裝,就是把對(duì)象的屬性和行為結(jié)合成一個(gè)獨(dú)立的單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。1.4繼承(Inheritance)任何一個(gè)子類都具有其父類所有的屬性、方法、事件。這一特性叫做類的繼承。如果父類的特性發(fā)生變化,其子類也相應(yīng)改變。面向?qū)ο蟮木幊碳夹g(shù)強(qiáng)調(diào)了代碼的重用性,而可重用性即是能過繼承來實(shí)現(xiàn)的。簡(jiǎn)化了人們對(duì)事物的認(rèn)識(shí)和描述,也簡(jiǎn)化了系統(tǒng)的構(gòu)造強(qiáng)度及其文檔,非常有益于軟件復(fù)用。1.5關(guān)聯(lián)類之間的靜態(tài)聯(lián)系稱為關(guān)聯(lián)。關(guān)聯(lián)表示了類與類之間的關(guān)系,在實(shí)現(xiàn)這種關(guān)系時(shí),可以通過對(duì)象的屬性表達(dá)出來

7、。例如“,學(xué)生”與“課程”類之間存在著關(guān)聯(lián)“選課”,用類“學(xué)生”的對(duì)象的屬性來記錄該對(duì)象具體選課的課程對(duì)象(由“課程”類創(chuàng)建)。1.6聚合是關(guān)聯(lián)的一種,只是關(guān)聯(lián)的語(yǔ)義沒有聚合那么明顯。聚合是具有整體一部分關(guān)系語(yǔ)義的關(guān)聯(lián)。1.7消息(Message)在面向?qū)ο蠓椒ㄖ?,把向?qū)ο蟀l(fā)出的操作請(qǐng)求稱為消息。對(duì)象之間通過消息進(jìn)行通信,實(shí)現(xiàn)了對(duì)象之間的動(dòng)態(tài)聯(lián)系。1.8多態(tài)性面向?qū)ο笤O(shè)計(jì)借鑒了客觀世界的多態(tài)性,體現(xiàn)在不同的對(duì)象收到相同的消息時(shí)產(chǎn)生多種不同的行為方式。例如,在一般類“幾何圖形”中定義了一個(gè)行為“繪圖”,但并不確定執(zhí)行時(shí)到底畫一個(gè)什么圖形。特殊類“橢圓”和“多邊形”都繼承了幾何圖形類的繪圖行為,但

8、其功能卻不同,一個(gè)是要畫出一個(gè)橢圓,另一個(gè)是要畫出一個(gè)多邊形。這樣一個(gè)繪圖的消息發(fā)出后,橢圓、多邊形等類的對(duì)象接收到這個(gè)消息后各自執(zhí)行不同的繪圖函數(shù)。面向?qū)ο蠓椒ㄊ且环N運(yùn)用對(duì)象、類、封裝、繼承、關(guān)聯(lián)、聚合、消息、多態(tài)性等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法。2面向?qū)ο蟮奶卣髅嫦驅(qū)ο蠹夹g(shù)強(qiáng)調(diào)在軟件開發(fā)過程中面向客觀世界或問題域中的事物,采用人類在認(rèn)識(shí)客觀世界的過程中普遍運(yùn)用的思維方法,直觀、自然地描述客觀世界中的有關(guān)事物。面向?qū)ο蠹夹g(shù)的基本特征主要有對(duì)象唯一性、分類性、繼承性和多態(tài)性。2.1對(duì)象唯一性每個(gè)對(duì)象都有自身唯一的標(biāo)識(shí),通過這種標(biāo)識(shí),可找到相應(yīng)的對(duì)象。在對(duì)象的整個(gè)生命期中,它的標(biāo)識(shí)都不改變,不同

9、的對(duì)象不能有相同的標(biāo)識(shí)。2.2分類性分類性是指將具有一致的數(shù)據(jù)結(jié)構(gòu)(屬性)和行為(操作)的對(duì)象抽象成類。一個(gè)類就是這樣一種抽象,它反映了與應(yīng)用有關(guān)的重要性質(zhì),而忽略其他一些無關(guān)內(nèi)容。任何類的劃分都是主觀的,但必須與具體的應(yīng)用有關(guān)。2.3繼承性繼承性是子類自動(dòng)共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機(jī)制,這是類之間的一種關(guān)系。在定義和實(shí)現(xiàn)一個(gè)類的時(shí)候,可以在一個(gè)已經(jīng)存在的類的基礎(chǔ)之上來進(jìn)行,把這個(gè)已經(jīng)存在的類所定義的內(nèi)容作為自己的內(nèi)容,并加入若干新的內(nèi)容。繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言不同于其它語(yǔ)言的最重要的特點(diǎn),是其他語(yǔ)言所沒有的。采用繼承性,提供了類的規(guī)范的等級(jí)結(jié)構(gòu)。通過類的繼承關(guān)系,使公共的特性能夠共享,提

10、高了軟件的重用性。2.4多態(tài)性(多形性)多態(tài)性使指相同的操作或函數(shù)、過程可作用于多種類型的對(duì)象上并獲得不同的結(jié)果。不同的對(duì)象,收到同一消息可以產(chǎn)生不同的結(jié)果,這種現(xiàn)象稱為多態(tài)性。多態(tài)性允許每個(gè)對(duì)象以適合自身的方式去響應(yīng)共同的消息。多態(tài)性增強(qiáng)了軟件的靈活性和重用性。3面向?qū)ο箝_發(fā)的工作過程面向?qū)ο箝_發(fā)的過程一般包括:系統(tǒng)調(diào)查和需求分析、分析問題的性質(zhì)和求解問題、整理問題、程序?qū)崿F(xiàn)。3.1系統(tǒng)調(diào)查和需求分析對(duì)系統(tǒng)將要面臨的具體管理問題以及用戶對(duì)系統(tǒng)開發(fā)的需求進(jìn)行調(diào)查研究,即先弄清要干什么的問題。3.2分析問題的性質(zhì)和求解問題面向?qū)ο笙到y(tǒng)分析(ObjectOrientedAnalysisOOA),在

11、繁雜的問題域中抽象地識(shí)別出對(duì)象以及其行為、結(jié)構(gòu)、屬性、方法等。3.3整理問題面向?qū)ο笙到y(tǒng)設(shè)計(jì)(ObjectOrientedDesignOOD)即對(duì)分析的結(jié)果作進(jìn)一步地抽象、歸類、整理,并最終以范式的形式將它們確定下來。3.4程序?qū)崿F(xiàn)面向?qū)ο蟮某绦蛟O(shè)計(jì)(ObjectOrientedProgramming)即用面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言將上一步整理的范式直接映射(直接用程序語(yǔ)言來取代)為應(yīng)用程序軟件。4面向?qū)ο箝_發(fā)的常用方法目前,面向?qū)ο箝_發(fā)方法的研究已日趨成熟,國(guó)際上已有不少面向?qū)ο螽a(chǎn)品出現(xiàn)。面向?qū)ο箝_發(fā)方法有Coad方法、Booch方法、OMT方法和UML(UnifiedModelingLangu

12、age)語(yǔ)言等。4.1Booch方法Booch最先描述了面向?qū)ο蟮能浖_發(fā)方法的基礎(chǔ)問題,指出面向?qū)ο箝_發(fā)是一種根本不同于傳統(tǒng)的功能分解的設(shè)計(jì)方法。面向?qū)ο蟮能浖纸飧咏藢?duì)客觀事務(wù)的理解,而功能分解只通過問題空間的轉(zhuǎn)換來獲得。4.2Coad方法Coad方法是1989年Coad和Yourdon提出的面向?qū)ο箝_發(fā)方法。該方法的主要優(yōu)點(diǎn)是通過多年來大系統(tǒng)開發(fā)的經(jīng)驗(yàn)與面向?qū)ο蟾拍畹挠袡C(jī)結(jié)合,在對(duì)象、結(jié)構(gòu)、屬性和操作的認(rèn)定方面,提出了一套系統(tǒng)的原則。該方法完成了從需求角度進(jìn)一步進(jìn)行類和類層次結(jié)構(gòu)的認(rèn)定。盡管Coad方法沒有引入類和類層次結(jié)構(gòu)的術(shù)語(yǔ),但事實(shí)上已經(jīng)在分類結(jié)構(gòu)、屬性、操作、消息關(guān)聯(lián)等概念中

13、體現(xiàn)了類和類層次結(jié)構(gòu)的特征。4.3OMT方法OMT方法是1991年由JamesRumbaugh等5人提出來的,其經(jīng)典著作為“面向?qū)ο蟮慕Ec設(shè)計(jì)”。該方法是一種新興的面向?qū)ο蟮拈_發(fā)方法,開發(fā)工作的基礎(chǔ)是對(duì)真實(shí)世界的對(duì)象建模,然后圍繞這些對(duì)象使用分析模型來進(jìn)行獨(dú)立于語(yǔ)言的設(shè)計(jì),面向?qū)ο蟮慕:驮O(shè)計(jì)促進(jìn)了對(duì)需求的理解,有利于開發(fā)得更清晰、更容易維護(hù)的軟件系統(tǒng)。該方法為大多數(shù)應(yīng)用領(lǐng)域的軟件開發(fā)提供了一種實(shí)際的、高效的保證,努力尋求一種問題求解的實(shí)際方法。4.4UML(UnifiedModelingLanguage)語(yǔ)言軟件工程領(lǐng)域在1995年1997年取得了前所未有的進(jìn)展,其成果超過軟件工程領(lǐng)域過去

14、15年的成就總和,其中最重要的成果之一就是統(tǒng)一建模語(yǔ)言(UML)的出現(xiàn)。UML將是面向?qū)ο蠹夹g(shù)領(lǐng)域內(nèi)占主導(dǎo)地位的標(biāo)準(zhǔn)建模語(yǔ)言。UML不僅統(tǒng)一了Booch方法、OMT方法、OOSE方法的表示方法,而且對(duì)其作了進(jìn)一步的發(fā)展,最終統(tǒng)一為大眾接受的標(biāo)準(zhǔn)建模語(yǔ)言。UML是一種定義良好、易于表達(dá)、功能強(qiáng)大且普遍適用的建模語(yǔ)言。它融入了軟件工程領(lǐng)域的新思想、新方法和新技術(shù)。它的作用域不限于支持面向?qū)ο蟮姆治雠c設(shè)計(jì),還支持從需求分析開始的軟件開發(fā)全過程。二、面向?qū)ο笙到y(tǒng)的分析在進(jìn)行了需求分析和業(yè)務(wù)流程分析并得到客戶的認(rèn)可之后,對(duì)項(xiàng)目進(jìn)行系統(tǒng)分析是極其重要的。系統(tǒng)分析是能體現(xiàn)整個(gè)系統(tǒng)的靈魂的文檔,將客戶的需求從

15、具體到抽象的一個(gè)過程,并制定編碼人員可實(shí)施的規(guī)范和標(biāo)準(zhǔn)。在系統(tǒng)分析的過程中需要對(duì)需求分析進(jìn)行進(jìn)一步的深化和分析,通??蛻艏皹I(yè)務(wù)人員在需求分析和流程分析的過程中比較注重功能上的表現(xiàn)和定義,即使是做出正規(guī)的用戶界面原型,對(duì)系統(tǒng)的需求也是不完整的,處于非技術(shù)人員的緣故,很難苛求能提出完整清晰專業(yè)的性能需求,但不意味著這需求不存在,而且這隱藏的需求對(duì)編碼人員來說是極其重要的。如果眼光僅僅放在滿足客戶眼下的需求,當(dāng)問題不斷出現(xiàn)時(shí)再不斷修補(bǔ),頭痛醫(yī)頭,腳痛醫(yī)腳,甚至系統(tǒng)構(gòu)架需要不斷調(diào)整或重新設(shè)計(jì),那么,很快就會(huì)陷入代碼泥潭或墜入系統(tǒng)重復(fù)開發(fā)的無底深淵,當(dāng)初項(xiàng)目完成時(shí)的成就感將被無止境的沮喪所代替。因此,客

16、戶的需求能否在系統(tǒng)中得到真正的體現(xiàn)和實(shí)施,系統(tǒng)分析是至關(guān)重要的。1.對(duì)象的特性基本上,軟件對(duì)象本身具有三項(xiàng)特性,分別是繼承、封裝、動(dòng)態(tài)連結(jié)(即多態(tài))?!袄^承”特在面向?qū)ο笤O(shè)計(jì)上,是非常重要的一項(xiàng)觀念,同樣的數(shù)據(jù)和程序代碼,不必在每個(gè)需要的地方在重寫一遍。只要?dú)w納整理成一個(gè)class,需要時(shí)再重制出所需要的instance即可。簡(jiǎn)單的說,繼承性是class之間的一種再分類關(guān)系,它會(huì)讓幾個(gè)class之間會(huì)具有相同的數(shù)據(jù)結(jié)構(gòu)或操作程序,減少重復(fù)的程序代碼,達(dá)到對(duì)象重復(fù)使用的目的。封裝性的意思是整個(gè)對(duì)象的數(shù)據(jù)和處理程序包在一起,透過一個(gè)標(biāo)準(zhǔn)、簡(jiǎn)單的接口才能存取對(duì)象內(nèi)的數(shù)據(jù)及使用對(duì)象提供的功能,這里所謂

17、的接口就是指對(duì)象的屬性properity和方法method由于軟件的開發(fā)功能越強(qiáng),相對(duì)的也使得系統(tǒng)變得更復(fù)雜,為了降低整個(gè)系統(tǒng)的復(fù)雜度,所以就把整體分成許多塊對(duì)象,將每一塊對(duì)象的復(fù)雜度降低到一般軟件開發(fā)者可以負(fù)荷的程度,而且讓開發(fā)者能針對(duì)每一塊對(duì)象去作分析、設(shè)計(jì)的工作,不會(huì)影響到其它塊對(duì)象,這就是對(duì)象必須有的獨(dú)立特性,而對(duì)象封裝的目的就是為了達(dá)到對(duì)象的獨(dú)立。但是,對(duì)象封裝的前提是;對(duì)象里面封裝的程序代碼必須是正確的,而且要符合當(dāng)初設(shè)計(jì)的需求。所謂動(dòng)態(tài)連結(jié)是指在程序執(zhí)行時(shí),系統(tǒng)才將message和method連結(jié)在一起,而不是在編譯的時(shí)候。message是送到對(duì)象的接口,用來啟動(dòng)對(duì)象的工具,而m

18、ethod則是在message送達(dá)對(duì)象接口后,被選取的操作程序。透過動(dòng)態(tài)連結(jié)的功能,我們不用事先考慮使用對(duì)象的型別,只要把message送出即可。等到程序執(zhí)行中,看哪個(gè)對(duì)象應(yīng)該配合這個(gè)message,再把message和這個(gè)對(duì)象的method連結(jié),然后執(zhí)行這個(gè)method。一個(gè)對(duì)象是由數(shù)據(jù)Data與方法Method兩部分所組成。在傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)中,數(shù)據(jù)結(jié)構(gòu)與函數(shù)是分離的,這樣我們維護(hù)程序時(shí)會(huì)產(chǎn)生很大的困擾;而在對(duì)象導(dǎo)向中將這兩個(gè)東西緊密的包圍在一起,使得對(duì)象內(nèi)的數(shù)據(jù)只有透過適當(dāng)?shù)慕涌诜椒ú拍苡枰孕薷?,這便是信息隱藏InformationHiding。2.面向?qū)ο蟮姆治雒嫦驅(qū)ο蠓治龅闹饕?/p>

19、務(wù)是根基用戶的需求,建立一個(gè)準(zhǔn)確的、完整的、一致的系統(tǒng)模型。使用面向?qū)ο蠓治龇椒軐⒖蛻糇兓男枨笥成涞侥P椭?,大大提高系統(tǒng)的擴(kuò)展性和開發(fā)效率。面向?qū)ο蟮姆治龇椒ㄒ笤谠O(shè)計(jì)中要映射現(xiàn)實(shí)世界中指定問題域中的對(duì)象和實(shí)體,例如:房子,樓盤,開發(fā)商,業(yè)主等。這就需要設(shè)計(jì)要盡可能地接近現(xiàn)實(shí)世界,即以最自然的方式表述實(shí)體。所以面向?qū)ο蠹夹g(shù)的優(yōu)點(diǎn)即為能夠構(gòu)建與現(xiàn)實(shí)世界相對(duì)應(yīng)的問題模型,并保持他們的結(jié)構(gòu)、關(guān)系和行為為模式。面向?qū)ο蟮母拍钍窃诮?0年才進(jìn)入中國(guó)的,而它的思想至今也沒有真正意義上得到普及。簡(jiǎn)單的說,面向?qū)ο缶褪敲嫦蚴澜?,世界上的任何事物都是?duì)象,因此面向?qū)ο笫呛茏匀坏乃枷?,是符合我們的思維習(xí)慣的。

20、面向?qū)ο蟮恼Z(yǔ)言包括了Smalltalk、C+、Java,C#需求是不穩(wěn)定的,那么需求之中是不是沒有穩(wěn)定的東西呢?有的,就是對(duì)象。世界都是由對(duì)象組成的,而對(duì)象都是持久的,例如動(dòng)物、植物已經(jīng)有相當(dāng)長(zhǎng)的時(shí)間。雖然對(duì)象也在變化,動(dòng)物,植物也在不斷的進(jìn)化。但對(duì)象在一個(gè)相當(dāng)長(zhǎng)的時(shí)期內(nèi)都存在,動(dòng)植物的存在時(shí)間肯定比任何一家企業(yè)長(zhǎng)久。面向?qū)ο蟮拈_發(fā)方法的精髓就是從企業(yè)的不穩(wěn)定需求中分析出企業(yè)的穩(wěn)定對(duì)象,以企業(yè)對(duì)象為基礎(chǔ)來組織需求、構(gòu)架系統(tǒng)。這樣得出的系統(tǒng)就會(huì)比傳統(tǒng)的系統(tǒng)要穩(wěn)定得多,因?yàn)槠髽I(yè)的模式一旦變化,只需要將穩(wěn)定的企業(yè)對(duì)象重新組織就行了。這種開發(fā)的方法就被稱為面向?qū)ο蟮姆治龊驮O(shè)計(jì),而分析出的企業(yè)對(duì)象就被稱

21、為BusinessObject。3.面向?qū)ο笙到y(tǒng)的分析方法面向?qū)ο蠓治龅年P(guān)鍵,是識(shí)別出問題域內(nèi)的對(duì)象,并分析它們之間的關(guān)系,最終建立起問題域簡(jiǎn)潔、精確、可理解的正確模型。面向?qū)ο蠓治鼋P枰⒌氖擒浖到y(tǒng)的用戶領(lǐng)域模型,需要著重了解的是該軟件系統(tǒng)的需求概念與術(shù)語(yǔ),其分析內(nèi)容是現(xiàn)實(shí)世界中的實(shí)體對(duì)象和各對(duì)象之間的關(guān)系,并不涉及編程概念。3.1用況圖(需求模型)UML建模語(yǔ)言中,用況圖被用來描述用戶與系統(tǒng)之間的交互關(guān)系,說明系統(tǒng)所具有的業(yè)務(wù)能力和業(yè)務(wù)流程,能夠方便開發(fā)者理解用戶領(lǐng)域的專有術(shù)術(shù)語(yǔ)和業(yè)務(wù)內(nèi)容。參入者(Actor):系統(tǒng)之外與系統(tǒng)有關(guān)的類,涉及與系統(tǒng)交互的人,機(jī)器或其他系統(tǒng),用于反映系統(tǒng)

22、跟周圍環(huán)境的關(guān)系。關(guān)系分為通信關(guān)系、使用關(guān)系和擴(kuò)展關(guān)系。通信關(guān)系(CommunicatesRelationship):描述參入者與用例之間的關(guān)系,其中單個(gè)參入者可以與多個(gè)用例聯(lián)系,反之,一個(gè)用例也可與多個(gè)參入者聯(lián)系。清晰的描述了“誰(shuí)使用了哪個(gè)用例”。用況圖況例之間的關(guān)系。擴(kuò)展關(guān)系(ExtendsRelationship):當(dāng)一個(gè)基本用例由需要附加一個(gè)用例來擴(kuò)展或延伸其原有功能時(shí),附加的擴(kuò)展用例和原有用例之間的關(guān)系就體現(xiàn)為擴(kuò)展關(guān)系。擴(kuò)展用例可以繼承原有基本用例的一些功能,同時(shí)它又可以具有一些新的特有功能。使用關(guān)系(UsesRelationship):當(dāng)在一個(gè)基本用例中使用到了另一個(gè)用例時(shí),則這兩

23、個(gè)用例之間就構(gòu)成了使用關(guān)系。一般說來,如果多個(gè)用例中有一些共同的功能,則可以把這些共同的功能提取出來單獨(dú)構(gòu)成為一個(gè)實(shí)例,而其他用例則可以通過“使用關(guān)系”共同使用這些用例。3.2類圖(建立基本模型)類圖的獲取是一個(gè)不斷細(xì)化的過程,一般我們先從分析類開始。分析類是概念層面上的類,是進(jìn)行類設(shè)計(jì)的基礎(chǔ),獲取分析類是系統(tǒng)分析中一項(xiàng)很重要的工作。獲取分析類的是一個(gè)需要大量技巧的工作,我們主要根據(jù)用例描述來確定分析類。屬性與操作(1)屬性:屬性用來描述類的特征,表示需要處理的數(shù)據(jù)。(2)操作:對(duì)數(shù)據(jù)的具體處理方法的描述則放在操作部分,操作說明了該類能做些什么工作,完成什么任務(wù)。操作通常稱為函數(shù),它是類的一個(gè)

24、組成部分,只能作用于該類的對(duì)象上。確定關(guān)系3.3建立輔助模型順序圖:是一種交互圖,描述對(duì)象之間的動(dòng)態(tài)合作關(guān)系以及合作過程,常用來描述一個(gè)用例的行為。通信圖:通信圖是一種強(qiáng)調(diào)發(fā)送和接受消息的對(duì)象結(jié)構(gòu)組織的圖,用以展示圍繞對(duì)象以及他們之間的連接器而組織的交互?;顒?dòng)圖:描述操作實(shí)現(xiàn)中完成的工作以及用例實(shí)例或?qū)ο笾械幕顒?dòng),活動(dòng)圖是狀態(tài)圖的一個(gè)變種。狀態(tài)圖:描述某個(gè)對(duì)象,子系統(tǒng),系統(tǒng)的生命周期。包圖:描述對(duì)模型元素分組以及分組之間的依賴的圖,其中要用到的包是對(duì)模型元素進(jìn)行分組的機(jī)制。四、面向?qū)ο笙到y(tǒng)的設(shè)計(jì)設(shè)計(jì)建模需要把分析階段的結(jié)果擴(kuò)展成技術(shù)解決方案。需要建立的是軟件系統(tǒng)的技術(shù)構(gòu)造模型。從OOA到OOD

25、不是轉(zhuǎn)換;而是調(diào)整和增補(bǔ)。增補(bǔ)人機(jī)交互部分、構(gòu)建及部屬部分、控制驅(qū)動(dòng)部分、數(shù)據(jù)管理部分。4.1問題域部分的設(shè)計(jì)問題域部分的設(shè)計(jì)要對(duì)OOA結(jié)果按實(shí)現(xiàn)條件進(jìn)行補(bǔ)充與調(diào)整。即要繼續(xù)運(yùn)用OOA的方法,包括概念、表示法及一部分策略。不但要根據(jù)實(shí)現(xiàn)條件進(jìn)行OOD設(shè)計(jì),而且由于需求變化或新發(fā)現(xiàn)了錯(cuò)誤,也要對(duì)OOA的結(jié)果進(jìn)行修改。4.2人機(jī)交互部分的設(shè)計(jì)把人機(jī)交互部分作為系統(tǒng)中一個(gè)獨(dú)立的組成部分,進(jìn)行分析和設(shè)計(jì),有利于隔離界面支持系統(tǒng)的變化對(duì)問題域部分的影響。4.3控制驅(qū)動(dòng)部分的設(shè)計(jì)為了描述問題域固有的并發(fā)行為,表達(dá)實(shí)現(xiàn)所需的設(shè)計(jì)決策,需要在OOD部分對(duì)控制驅(qū)動(dòng)部分進(jìn)行建模。控制流驅(qū)動(dòng)部分,用于定義和表示并發(fā)

26、系統(tǒng)中的每個(gè)控制流。用主動(dòng)對(duì)象表示每個(gè)控制流(進(jìn)程、線程)所有的主動(dòng)類構(gòu)成控制流驅(qū)動(dòng)部分。4.4數(shù)據(jù)管理部分的設(shè)計(jì)數(shù)據(jù)管理部分是負(fù)責(zé)在特定的數(shù)據(jù)管理系統(tǒng)中存儲(chǔ)和檢索對(duì)象的組成部分。其目的是,存儲(chǔ)問題域的持久對(duì)象、封裝這些對(duì)象的查找和存儲(chǔ)機(jī)制,以及為了隔離數(shù)據(jù)管理方案的影響。在傳統(tǒng)的結(jié)構(gòu)化設(shè)計(jì)方法中,很容易將實(shí)體關(guān)系圖映射到關(guān)系數(shù)據(jù)庫(kù)中。而在面向?qū)ο笤O(shè)計(jì)中,我們可以將UML類圖看作是數(shù)據(jù)庫(kù)的概念模型,但在UML類圖中除了類之間的關(guān)聯(lián)關(guān)系外,還有繼承關(guān)系。4.5構(gòu)件及部署部分的設(shè)計(jì)當(dāng)前的一種主流的做法是在面向?qū)ο蟮南到y(tǒng)設(shè)計(jì)階段的后期,考慮如何對(duì)系統(tǒng)的構(gòu)件進(jìn)行描述、構(gòu)造和組織,以及構(gòu)件如何在節(jié)點(diǎn)上進(jìn)行分布。五、面向?qū)ο蠓治雠c設(shè)計(jì)的發(fā)展趨勢(shì)5.1面向?qū)ο蠓治雠c設(shè)計(jì)的方法將被越來越多的人接受迄今為止,“面向?qū)ο蟆北旧磉€沒有一個(gè)統(tǒng)一的讓所有人都能接受的概念。然而,面向?qū)ο笾械囊恍┳罨镜母拍钜呀?jīng)和正在被人們所接受,比如類、對(duì)象、繼承、封裝等;一些最有效的表示方法也正在被人們所共同采用,比如圖形表示、基本輸入要求和輸出結(jié)果等。并且這種趨勢(shì)在越是較晚出現(xiàn)的方法和工具

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論