面向?qū)ο蠓治龊驮O(shè)計講座面向?qū)ο蠓椒▽W(xué)_第1頁
面向?qū)ο蠓治龊驮O(shè)計講座面向?qū)ο蠓椒▽W(xué)_第2頁
面向?qū)ο蠓治龊驮O(shè)計講座面向?qū)ο蠓椒▽W(xué)_第3頁
面向?qū)ο蠓治龊驮O(shè)計講座面向?qū)ο蠓椒▽W(xué)_第4頁
面向?qū)ο蠓治龊驮O(shè)計講座面向?qū)ο蠓椒▽W(xué)_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

面向?qū)ο蠓治龊驮O(shè)計講座面向?qū)ο蠓椒▽W(xué)內(nèi)容歷史回眸開發(fā)模式傳統(tǒng)方法學(xué)面向?qū)ο蠓椒▽W(xué)面向?qū)ο蠡靖拍顚ο蠼M成面向?qū)ο蠓治?設(shè)計/編程信息系統(tǒng)建模第2頁,共74頁,2024年2月25日,星期天1.歷史回眸現(xiàn)在的計算機的數(shù)學(xué)理論基礎(chǔ)是由計算機的開山鼻祖,大名鼎鼎的圖靈于1937年提出的圖靈機模型。隨后不到十年,電子計算機就誕生了(1945)。(埃尼亞克)它當時的主要任務(wù)之一就是用于導(dǎo)彈彈道軌跡的計算。當時的軟件開發(fā)(如果可以稱之為軟件開發(fā)的話)與現(xiàn)在的大不相同。為了算一道題,要有人事先把完成加減乘除等各類運算的部件像搭積木那樣搭起來,如果換一道題,則要把這些部件分解開來,根據(jù)新的要求重新搭建,效率極低(與現(xiàn)在比)。第3頁,共74頁,2024年2月25日,星期天現(xiàn)代電子計算機的體系結(jié)構(gòu)及實際計算模型來自馮.諾依曼的思想。1946年他和他的同事們發(fā)現(xiàn)了埃尼亞克的缺陷,發(fā)表了一份報告,提出了程序放入內(nèi)存,順序執(zhí)行的思想,這樣,當算一道新題時就只需采取改變計算機中的程序的“軟”的方法。英國的科學(xué)家維爾克斯實現(xiàn)了馮.諾依曼的思想,領(lǐng)導(dǎo)研制了“艾克薩克”。因此,現(xiàn)在的計算機通常被稱為馮.諾依曼計算機。

第4頁,共74頁,2024年2月25日,星期天早期程序員們使用機器語言來進行編程運算;隨著編譯技術(shù)的出現(xiàn),人們設(shè)計了許多更高級別的語言;這些語言擺脫了機器語言繁瑣的細節(jié),更接近于人的自然語言,迅速流行開來。據(jù)統(tǒng)計,全世界的高級語言起碼有幾千種,但從可計算性的角度看,它們的計算能力都等價于圖靈機。已經(jīng)證明,一個計算機語言,只要除了賦值語句之外,還包括順序語句,條件語句和循環(huán)語句,它的計算能力即相當于圖靈機。這里當然要排除其他技術(shù)因素的影響,如程序長度,變量個數(shù),數(shù)據(jù)精度等。第5頁,共74頁,2024年2月25日,星期天由于圖靈機的想法是把問題轉(zhuǎn)化為一步一步按規(guī)則執(zhí)行的機械求解過程,各種計算機語言也不過都是某種形式語言,因此軟件開發(fā)的過程實質(zhì)上就是程序員們對客觀世界問題域的形式化的過程。程序員們先建立問題的模型(形式化),再用計算機語言加以合適的表達,最后再輸入計算機里進行計算。第6頁,共74頁,2024年2月25日,星期天最早的高級語言大約誕生于1945年,是德國人楚譯為他的Z-4計算機設(shè)計的PlanCalcul,比第一臺電子計算機還早幾個月;在電子計算機上實現(xiàn)的第一個高級語言是美國尤尼法克公司于1952年研制成功的ShortCode;而真正得到推廣使用,至今仍在流行的第一個高級語言是美國的計算機科學(xué)家巴科斯設(shè)計,并于1956年首先在IBM公司的計算機上實現(xiàn)的FORTRAN語言。第7頁,共74頁,2024年2月25日,星期天早期的高級語言主要是應(yīng)用于科學(xué)和工程計算,其代表作有FORTRAN和ALGOL60。計算機進入商業(yè)和行政管理領(lǐng)域以后,出現(xiàn)了COBOL和RPG等便于商界使用的語言。這類語言和數(shù)據(jù)庫技術(shù),圖形界面技術(shù)(可視化編程),面向?qū)ο蟮乃枷爰癛AD(RapidApplicationDevelopment)的概念相結(jié)合,形成了一批更方便使用的所謂第四代語言(4GL),如Powerbuilder,Delphi,VB等。第8頁,共74頁,2024年2月25日,星期天前一類應(yīng)用于科學(xué)和工程計算的大型語言相對來說更為基礎(chǔ),因而也更為靈活,應(yīng)用范圍更為廣泛。在FORTRAN,BASIC(學(xué)習(xí)型)之后,自70年代以來,模塊特征更明顯,簡單易用,可靠性強的PASCAL異軍突起,在世界范圍內(nèi)廣泛流行。但進入80年代以后,它的地位又逐漸為更實用的C語言替代。到現(xiàn)在,C語言的地位已相當于一種“高級匯編語言”了。第9頁,共74頁,2024年2月25日,星期天80年代后期,面向?qū)ο蟮恼Z言開始浮出水面,C++借助使用C語言的龐大程序員隊伍,一舉建立了面向?qū)ο笳Z言的老大地位。從而OO的思想正式統(tǒng)治了整個軟件開發(fā)界。C++的流行甚至使得美國軍方從80年開始大力扶植的Ada語言還未及推廣便胎死腹中了。第10頁,共74頁,2024年2月25日,星期天90年代以后,計算機世界更是發(fā)生了天翻地覆的變化,原先的單機平臺讓位于WEB,“網(wǎng)絡(luò)就是計算機”,新的語言不僅要是OO的,Visual的,更要是基于WEB的。Java語言借INTERNET的東風(fēng),橫空出世,一夜紅遍天下。上述這些變化,表面是不同的編程工具的流行,但其背后反映的卻是一種更為深刻的認識論的改變,即你是用何種觀點來認識這個世界的?第11頁,共74頁,2024年2月25日,星期天2.開發(fā)模式(Paradigm)開發(fā)模式又稱為范型、范例、風(fēng)范或模式(Pattern)。開發(fā)模式定義了特定問題和應(yīng)用的開發(fā)過程中將遵循的步驟;確定將用于表示問題和解的那些成分的類型;利用這些成分表示與問題解決有關(guān)的抽象;直接得到問題的結(jié)構(gòu)。第12頁,共74頁,2024年2月25日,星期天開發(fā)模式的選擇影響到整個軟件開發(fā)生存期。就是說,它支配選擇:設(shè)計方法編碼語言測試和檢驗技術(shù)第13頁,共74頁,2024年2月25日,星期天3.傳統(tǒng)方法學(xué)傳統(tǒng)方法學(xué):瀑布模型,結(jié)構(gòu)化分析/設(shè)計/編碼瀑布模型的缺點:僵化瀑布模型要求:生命周期各階段間遵守嚴格的順序,實際情況是:軟件開發(fā)往往在反復(fù)實踐中完成瀑布模型要求:預(yù)先定義并“凍結(jié)”軟件需求,實際情況是:某些系統(tǒng)的需求的一個逐漸明確的過程,且預(yù)先定義的需求到軟件完成時可能已經(jīng)過時第14頁,共74頁,2024年2月25日,星期天SA-SD-SP技術(shù)的缺點:本質(zhì)上是功能分解,以實現(xiàn)功能的過程為中心,而用戶的需求變化主要是針對功能的。這就使基于過程的設(shè)計不易被理解;且功能變化往往引起結(jié)構(gòu)變化較大,穩(wěn)定性不好系統(tǒng)有明確的邊界定義,且系統(tǒng)結(jié)構(gòu)依賴于系統(tǒng)邊界的定義,這樣的系統(tǒng)不易擴充和修改數(shù)據(jù)與操作分開處理,可能造成軟構(gòu)件對具體應(yīng)用環(huán)境的依賴,可重用性(reusability)較差第15頁,共74頁,2024年2月25日,星期天4.面向?qū)ο蠓椒▽W(xué)的起源維特跟斯坦是本世紀乃至人類哲學(xué)史上最偉大的哲學(xué)家之一。他生前只于1922年出版了一本著作——《邏輯哲學(xué)論》(TractatusLogico-Philosophicus)。在該書中,他闡述了一種世界觀,或者說一種認識世界的觀點,這種觀點,在六七十年后的今天,終于由一種哲學(xué)思想沉淀到技術(shù)的層面上來,成為計算機業(yè)界的寵兒,這就是“OO”,Object-Oriented,面向?qū)ο?。?6頁,共74頁,2024年2月25日,星期天維特根斯坦在《邏輯哲學(xué)論》一書中提出了如下思想:世界可以分解為事實(Theworlddividesintofacts.)

事實是由原子事實(atomicfacts)組成的。一個原子事實是多個對象(objects)的組合。對象是簡單的(基本的)TheObjectissimple。對象形成了世界的基礎(chǔ)。第17頁,共74頁,2024年2月25日,星期天杭州北京Post-officeMessageSendbymethod對象ObjectObject=數(shù)據(jù)AttributeAttributes:location;employee;

……+操作MethodMethods:send;sell;

……注意:Object內(nèi)部的attributes不允許外部用戶直接改動,只有當它提供了相應(yīng)的服務(wù)method時,用戶才能通過發(fā)送message來提請它執(zhí)行。我想把郵局搬到我家門口,多加幾個郵遞員,24小時都開門……對不起,本郵局不提供此類服務(wù)唉,那就先送束花吧——

Post_office.Send(request,payment)第18頁,共74頁,2024年2月25日,星期天特點:盡可能模擬人類習(xí)慣的思維方式,即問題域與求解域在結(jié)構(gòu)上盡可能一致。與傳統(tǒng)方法相反,OOM以數(shù)據(jù)或信息為主線,把數(shù)據(jù)和處理結(jié)合構(gòu)成統(tǒng)一體——對象。這時程序不再是一系列工作在數(shù)據(jù)上的函數(shù)集合,而是相互協(xié)作又彼此獨立的對象的集合。第19頁,共74頁,2024年2月25日,星期天5.面向?qū)ο蠓椒▽W(xué)的要素第20頁,共74頁,2024年2月25日,星期天4.1對象:世界由對象構(gòu)成對象是面向?qū)ο箝_發(fā)模式的基本成份。每個對象可用它本身的一組屬性和它可以執(zhí)行的一組操作來定義。屬性一般只能通過執(zhí)行對象的操作來改變。操作又稱為方法或服務(wù),它描述了對象執(zhí)行的功能,若通過消息傳遞,還可以為其它對象使用。第21頁,共74頁,2024年2月25日,星期天4.2類:物以類聚類是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對象的集合。類的定義包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作。類定義可以視為一個具有類似特性與共同行為的對象的模板,可用來產(chǎn)生對象。第22頁,共74頁,2024年2月25日,星期天在一個類中,每個對象都是類的實例(Instance),它們都可使用類中提供的函數(shù)。對象的狀態(tài)則包含在它的實例變量,即實例的屬性中。第23頁,共74頁,2024年2月25日,星期天例:classPost_office{private:loc_typelocation;emp_typeemployee;

……public:voidsend(req_typerequest,money_typepayment);voidsell(intgoods,money_typepayment);

……};main(){Post_officeMy_PO;req_typeMy_request;money_typeMy_payment;

……My_PO.Send(My_request,My_payment);

……}第24頁,共74頁,2024年2月25日,星期天繼承(inheritance):類可分層,下層子類與上層父類有相同特征,稱為繼承繼承是使用已存在的定義做為基礎(chǔ)建立新定義的技術(shù)。新類的定義可以是既存類所聲明的數(shù)據(jù)和新類所增加的聲明的組合。新類復(fù)用既存的定義,而不要求修改繼承類。既存類可當做基類來引用,則新類相應(yīng)地可當做派生類來引用。4.3繼承:世界的相似性與多樣性第25頁,共74頁,2024年2月25日,星期天第26頁,共74頁,2024年2月25日,星期天使用繼承設(shè)計一個新類,可以視為描述一個新的對象集,它是既存類所描述對象集的子集合。這個新的子集合可以認為是既存類的一個特殊化。Quadrilateral類是Polygon類的特殊化。Quadrilateral是限制為四條邊的多邊形。我們還可以進一步地把類Quadrilateral特殊化為Rectangle。第27頁,共74頁,2024年2月25日,星期天類Quadrilateral的界面可以等同于類Polygon的界面,而Rectangle類的界面又與Quadrilateral類的界面相同。新類的界面還可以被看做是既存類界面的一個擴充界面。例如,從一個既存的車輛類派生的四輪驅(qū)動車類可能不僅是車輛類子集合定義的特殊化,而且還可能在新類的界面中引入新的能力。第28頁,共74頁,2024年2月25日,星期天第29頁,共74頁,2024年2月25日,星期天在類的繼承層次中,Quadrilateral的實際參數(shù)可以替換Polygon的形式參數(shù)。類Quadrilateral的界面與類Polygon的界面是相容的Quadrilateral的界面可響應(yīng)Polygon界面的所有消息。第30頁,共74頁,2024年2月25日,星期天4.4消息:合作之道消息(message):對象間只能通過發(fā)送消息進行聯(lián)系,外界不能處理對象的內(nèi)部數(shù)據(jù),只能通過消息請求它進行處理(如果它提供相應(yīng)消息的話)。第31頁,共74頁,2024年2月25日,星期天消息是一個對象與另一個對象的通信單元,是要求某個對象執(zhí)行類中定義的某個操作的規(guī)格說明。發(fā)送給一個對象的消息定義了一個方法名和一個參數(shù)表(可能是空的),并指定某一個對象。一個對象接收的消息則調(diào)用消息中指定的方法,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。第32頁,共74頁,2024年2月25日,星期天OOM=Object+Class+Inheritance+Communicationwithmessages第33頁,共74頁,2024年2月25日,星期天傳統(tǒng)方法:面向過程設(shè)計,以計算為核心,數(shù)據(jù)與操作分離,不易理解OOM:以object為核心,強調(diào)對現(xiàn)實概念的模擬而不強調(diào)算法?!懊嫦?qū)ο蠓椒▽W(xué)的基本原則,是按照人們習(xí)慣的思維方式建立問題域的模型,開發(fā)出盡可能直觀、自然地表現(xiàn)求解方法的軟件系統(tǒng)”。Class:由特殊到一般的歸納(induction)Inheritance:由一般到特殊的演繹(deduction)4.4傳統(tǒng)方法與OO的比較第34頁,共74頁,2024年2月25日,星期天傳統(tǒng)方法:結(jié)構(gòu)依賴于功能,不穩(wěn)定。OOM:以object模擬實體,需求變化不會引起結(jié)構(gòu)的整體變化,因為實體相對穩(wěn)定,故系統(tǒng)也相應(yīng)穩(wěn)定。傳統(tǒng)方法:通過建立標準函數(shù)庫來重用軟構(gòu)件。但標準函數(shù)缺少必要的“柔性”,難以適應(yīng)不同場合的不同需要OOM:一個class所有的instances都可重用它的代碼;由inheritance派生出的新的class可重用其父類的代碼,并且可以修改、擴充而不影響其父類的使用。。第35頁,共74頁,2024年2月25日,星期天傳統(tǒng)方法:可維護性是最令人頭痛的問題。OOM:從以下幾方面改善了可維護性穩(wěn)定性好:軟件功能需求的變化不牽動全局,只需局部修改;Class獨立性強:只要修改不涉及class的對外接口,則內(nèi)部修改完全不影響外部調(diào)用;Inheritance和多態(tài)性(polymorphism)使其很容易被修改和擴充;容易理解;容易測試、調(diào)試。有這一條就什么都好辦了!這一點還可商榷第36頁,共74頁,2024年2月25日,星期天OOM并不是減少了開發(fā)時間,而是通過提高可重用性、可維護性,進行擴充和修改的容易程度等,從長遠角度改進了軟件的質(zhì)量。OOM與Prototyping結(jié)合使用效果好。第37頁,共74頁,2024年2月25日,星期天6.對象概念第38頁,共74頁,2024年2月25日,星期天f1f2f3……fi……fnfi(X)Sgi(X,S)S’輸出輸出1、Object:=ID+Method+Attribute+Message第39頁,共74頁,2024年2月25日,星期天特點:以數(shù)據(jù)為中心,不設(shè)與數(shù)據(jù)無關(guān)的操作;Object主動處理而不被動地等待被處理,外部只能通過message請求操作;具有黑盒性:外部操作時,無須知道該object內(nèi)部的數(shù)據(jù)結(jié)構(gòu)及算法;具有并行性:不同object各自獨立地處理自身數(shù)據(jù),彼此間僅通過傳遞message完成通信;模塊獨立性好:內(nèi)聚強(①)、耦合松(③④)第40頁,共74頁,2024年2月25日,星期天2、Class:具有相同數(shù)據(jù)和相同操作的一組對象;3、Instance:某個class描述的具體對象;4、Message:=object_ID.method_ID(parameter(s));5、Method:object能做的操作,亦稱為service、responsibility,在class中須定義相應(yīng)的代碼;6、Attribute:object的固有數(shù)據(jù);7、Inheritance:子類自動共享父類的attributes和methods,而不必重復(fù)定義。第41頁,共74頁,2024年2月25日,星期天Class中國人中國人Attributes中國人Methods張山(instance)Class中國人

張山的AttributesClass上海人

(子類)上海人Attributes

上海人MethodsClass中國人李士(instance)

中國人李士的Attributes上海人李士的AttributesClass上海人例:第42頁,共74頁,2024年2月25日,星期天特點:若上海人的methods中有與中國人的同名,則李士執(zhí)行該method時以上海人為準,不執(zhí)行中國人中定義的同名method。傳遞性(transitivity):AB、BCAC,一個class繼承了上層全部classes的一切性質(zhì)。一個子類只有一個父類稱為單繼承(singleinheritance),一個子類可有多個父類稱為多重繼承(multipleinheritance).

“低層性質(zhì)override高層性質(zhì)”“縣官不如現(xiàn)管”第43頁,共74頁,2024年2月25日,星期天注意:multipleinheritance在定義中應(yīng)避免二義性(ambiguity),即二個父類中定義重名,但各具不同性質(zhì)。例:FemaleChineseScholarICardDeckGraphicalObjectGraphicalDeckMethod:Draw:=takeacardfromadeckMethod:Draw:=displayagraphicalobjectMethod:Draw:=?例:第44頁,共74頁,2024年2月25日,星期天8Polymorphism:不同層次的classes可共享一個method名,但按各自的方式來實現(xiàn)這種method。C++中定義了虛函數(shù)(virtualfunction)來實現(xiàn)這一功能。即一個method有多個版本,運行時才決定執(zhí)行哪一個。故亦稱為動態(tài)聯(lián)編(dynamicbinding)或滯后聯(lián)編(latebinding)修改與擴充可以很容易地通過派生子類來完成Whichformdoyouneed,master?Aladdin’sGenie第45頁,共74頁,2024年2月25日,星期天doubleavg(constdoublea[],intsize);doubleavg(constinta[],intsize);doubleavg(constdoublea[],intsize);{doublesum=0.0;for(inti=0;i<size;++i)sum+=a[i];return(sum/size);}doubleavg(constinta[],intsize);{intsum=0;for(inti=0;i<size;++i)sum+=a[i];return((double)sum/size);}main(){intk[3]={1,2,3};doublex[3]={1.1,2.2,3.3};cout<<avg(k,3)<<“intaverage\n”;cout<<avg(x,3)<<“doubleaverage\n”;}9、Overloading⑴Function(orparameter)overloading:不同函數(shù)共用一個名字,而調(diào)用參數(shù)的特征不同。例:第46頁,共74頁,2024年2月25日,星期天⑵Operatoroverloading:同一運算符(operator)作用于不同類型的操作數(shù)(operand)上面。在編譯(compile)階段就決定了使用類型及執(zhí)行代碼,故亦稱為靜態(tài)聯(lián)編(staticbinding)或先前聯(lián)編(earlybinding)。

第47頁,共74頁,2024年2月25日,星期天7.面向?qū)ο蟮姆治?設(shè)計/編程第48頁,共74頁,2024年2月25日,星期天7.1概述面向?qū)ο蟮姆治觯∣OA)分析問題論域,找出問題解決方案,發(fā)現(xiàn)對象,分析對象的內(nèi)部構(gòu)成和外部關(guān)系,建立軟件系統(tǒng)的對象模型面向?qū)ο蟮脑O(shè)計(OOD)根據(jù)已確定的系統(tǒng)對象模型,運用面向?qū)ο蠹夹g(shù),進行系統(tǒng)軟件設(shè)計面向?qū)ο蟮木幊蹋∣OP)第49頁,共74頁,2024年2月25日,星期天7.2面向?qū)ο蟮姆治鰡栴}論域分析業(yè)務(wù)范圍,業(yè)務(wù)規(guī)則,業(yè)務(wù)處理過程,確定系統(tǒng)的責(zé)任,范圍和邊界,確定系統(tǒng)的需求發(fā)現(xiàn)和定義對象和類識別對象和類,確定它們的內(nèi)部特征:屬性和操作,這是一個抽象過程識別對象的外部聯(lián)系對象與對象,類與類之間的各種外部聯(lián)系,包括一般與特殊,整體與部分,實例連接(關(guān)聯(lián)),消息連接等建立系統(tǒng)的靜態(tài)結(jié)構(gòu)模型對象類圖和對象圖,系統(tǒng)與子系統(tǒng)結(jié)構(gòu)圖等,繪制相應(yīng)的圖建立系統(tǒng)的動態(tài)行為模型對象之間的交互關(guān)系等第50頁,共74頁,2024年2月25日,星期天7.3面向?qū)ο蟮脑O(shè)計設(shè)計對象和類具體設(shè)計對象和類的屬性,操作,設(shè)計對象與類的各種外部聯(lián)系的實現(xiàn)結(jié)構(gòu),設(shè)計消息與事件的內(nèi)容、格式等設(shè)計系統(tǒng)結(jié)構(gòu)設(shè)計組件與子系統(tǒng),以及它們的相互的靜態(tài)和動態(tài)關(guān)系設(shè)計問題論域子系統(tǒng)負責(zé)領(lǐng)域的業(yè)務(wù)服務(wù)設(shè)計人機交互系統(tǒng)設(shè)計數(shù)據(jù)管理子系統(tǒng)設(shè)計任務(wù)管理子系統(tǒng)進程管理設(shè)計優(yōu)化,提高系統(tǒng)性能第51頁,共74頁,2024年2月25日,星期天詳細的面向?qū)ο笤O(shè)計與語言有關(guān)。一般地,所有的語言都可以完成面向?qū)ο髮崿F(xiàn),但某些語言能夠提供更豐富的語法,能夠顯式地描繪在面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計過程中所使用的表示法。7.4面向?qū)ο蟮木幊痰?2頁,共74頁,2024年2月25日,星期天過程型語言只直接支持過程抽象可以增加數(shù)據(jù)抽象及封裝(如利用結(jié)構(gòu)化設(shè)計的信息隱蔽模塊)無法明確地表示繼承性。也無法明確支持整體與部分、類與成員、對象與屬性等關(guān)系。具有面向?qū)ο筇匦缘倪^程型語言可以成為一種實用的且可行的語言。第53頁,共74頁,2024年2月25日,星期天基于對象的語言,也叫做面向軟件包的語言,如Ada等,能夠直接支持過程抽象、數(shù)據(jù)抽象、封裝和對象與屬性關(guān)系它無法表示繼承性,也無法表示類與成員、整體與部分的關(guān)系?;趯ο笳Z言的面向?qū)ο笤O(shè)計代表一種可行的開發(fā)方法。第54頁,共74頁,2024年2月25日,星期天面向?qū)ο蟮某绦蛟O(shè)計語言,包括C++、Smalltalk、Objective-C、Actor、Eiffel等,都直接支持過程抽象、數(shù)據(jù)抽象、封裝、繼承、以及對象與屬性、類與成員關(guān)系。它們不明確地支持整體與部分關(guān)系,但可以方便地表示組裝對象。第55頁,共74頁,2024年2月25日,星期天8.信息系統(tǒng)建模第56頁,共74頁,2024年2月25日,星期天8.1為什么要建模今天的計算機軟件系統(tǒng)

是產(chǎn)品,而非“計算機程序”。

軟件系統(tǒng)作為產(chǎn)品的特征開發(fā)者和使用者是脫離的。軟件產(chǎn)品為用戶提供功能軟件產(chǎn)品具有質(zhì)量的概念軟件產(chǎn)品,應(yīng)具備完備的用戶手冊技術(shù)文檔

軟件產(chǎn)品的生產(chǎn)過程具有工業(yè)化生產(chǎn)的特點開發(fā)團隊協(xié)同工作軟件產(chǎn)品需要使用工具技術(shù)是可復(fù)用質(zhì)量必須穩(wěn)定的不應(yīng)在不同版本的軟件之間產(chǎn)生質(zhì)量不穩(wěn)定的現(xiàn)象第57頁,共74頁,2024年2月25日,星期天但是,和其它傳統(tǒng)的、成熟的工業(yè)生產(chǎn)行業(yè)相比,軟件生產(chǎn)實際上仍處于幼稚階段舉一個成熟的工業(yè)化生產(chǎn)的例子:電子產(chǎn)品制造首先,確定產(chǎn)品性能指標如:收音機波段揚聲器頻率范圍等等……

第58頁,共74頁,2024年2月25日,星期天然后設(shè)計電原理圖構(gòu)成:集成電路符號晶體管符號電阻電容符號標注符號描述電氣連接關(guān)系可以了解到各關(guān)鍵信號的電氣指標:信號的頻率,電平電流,等等。

第59頁,共74頁,2024年2月25日,星期天電原理圖是電子產(chǎn)品生產(chǎn)制造的基礎(chǔ)。電子產(chǎn)品定型并投入生產(chǎn)后設(shè)計資料被作為技術(shù)資料存檔產(chǎn)品需要更新?lián)Q代技術(shù)復(fù)用軟件生產(chǎn)行業(yè),情形有所不同…首先,寫系統(tǒng)分析報告由文字和示意性的框圖構(gòu)成然后,提出設(shè)計報告簡單的文本和非標準圖形組成第60頁,共74頁,2024年2月25日,星期天報告評審?fù)ㄟ^后編碼、調(diào)試、測試、發(fā)行在大多數(shù)情況下,這時的工作已經(jīng)和報告的內(nèi)容脫鉤這是由于開發(fā)和項目計劃方面的壓力軟件產(chǎn)品發(fā)行,開發(fā)項目結(jié)束后,這些報告已不具備參考價值因為此時軟件設(shè)計報告已經(jīng)和軟件的實際實現(xiàn)脫節(jié),無法反映軟件產(chǎn)品的實際原理和結(jié)構(gòu)。軟件產(chǎn)品需要更新?lián)Q代時軟件新版本的開發(fā)隊伍所面對的只是老版本的軟件產(chǎn)品本身加上相關(guān)的源代碼。除此之外,沒有任何其它的資源可以幫助他們分析和理解原產(chǎn)品的設(shè)計原理、結(jié)構(gòu)和實現(xiàn)思路。第61頁,共74頁,2024年2月25日,星期天這相當于制造收音機時不繪制畫電原理圖就直接用集成電路、晶體管、電阻、電容制造收音機帶來許多嚴重的問題對產(chǎn)品進行維修/維護新產(chǎn)品開發(fā)如何使開發(fā)周期最短、費用最節(jié)省對軟件行業(yè)是同樣的,它使得軟件的技術(shù)復(fù)用難以進行開發(fā)隊伍無法得到明確有效的分工軟件的質(zhì)量難以保證降低軟件產(chǎn)品開發(fā)效率第62頁,共74頁,2024年2月25日,星期天回顧成熟的工業(yè)行業(yè)的發(fā)展歷史,可以看出標準而規(guī)范的設(shè)計描述手段的引入,對產(chǎn)業(yè)的成熟起著重要的作用標準而規(guī)范的設(shè)計描述手段,作為一種標準的交流媒介,可以:促進開發(fā)隊伍的分工合作提高(軟件)產(chǎn)品的開發(fā)效率和質(zhì)量從本質(zhì)上講,標準而規(guī)范的設(shè)計描述手段,就是建模第63頁,共74頁,2024年2月25日,星期天在產(chǎn)品的實際制造之前,先用模型來描述產(chǎn)品的特性和結(jié)構(gòu),使得參與產(chǎn)品設(shè)計和制造的人員能夠了解目標產(chǎn)品的:設(shè)計原理內(nèi)部結(jié)構(gòu)制造工藝和流程從中找出產(chǎn)品設(shè)計和生產(chǎn)過程中的困難和風(fēng)險所在第64頁,共74頁,2024年2月25日,星期天為什么要進行建模,是由于:對于一個復(fù)雜的軟件系統(tǒng),人們無法對其整體進行詳細而全面的把握。所以,一個復(fù)雜的軟件系統(tǒng)必須由多個開發(fā)人員共同完成。對于開發(fā)隊伍里的每個成員而言,他(她)不可能對整個軟件系統(tǒng)有全面而詳細的了解。而對于一個軟件產(chǎn)品而言,如果對整個系統(tǒng)的功能、原理和結(jié)構(gòu)沒有一個全面而詳細的記載的話,將會對此軟件產(chǎn)品的開發(fā)、維護、升級產(chǎn)生不利的結(jié)果。第65頁,共74頁,2024年2月25日,星期天通過建模把一個復(fù)雜的系統(tǒng),按問題的不同方面,以一種約定好的,為大家共同接受的描述方式,分別進行全面而詳盡的描述;這樣,人們在試圖理解一個系統(tǒng)時,可根據(jù)他所關(guān)心的某一方面的問題,查閱對應(yīng)的系統(tǒng)模型,從而得到對此問題的理解。第66頁,共74頁,2024年2月25日,星期天8.2信息系統(tǒng)建模的原則準確的原則:模型必須準確地反映軟件系統(tǒng)的真實情況。模型必須準確,意味著在軟件開發(fā)的整個周期內(nèi)模型必須和產(chǎn)品始終保持一致。

分層的原則:在建模的過程中,必須有不同的模型,以不同的抽象程度,反映系統(tǒng)的不同側(cè)面。在軟件構(gòu)筑的不同階段,不同的開發(fā)相關(guān)人員(stockholder),如:投資者、管理者、設(shè)計者、程序員、測試者,使用者,看待軟件的側(cè)重面有所不同。因此,軟件系統(tǒng)的建模需要不同的模型以反映系統(tǒng)的不同側(cè)面。如:一類模型描繪系統(tǒng)的

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論