




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
高級軟件工程
SoftwareEngineering軟件開發(fā)方法02-面向?qū)ο蠓椒?1-結(jié)構(gòu)化方法03-基于構(gòu)件的開發(fā)方法204-面向服務方法06-模型驅(qū)動開發(fā)方法05-面向方面方法08-產(chǎn)品線開發(fā)方法和領域工程07-形式化方法軟件過程和軟件方法是相對獨立的結(jié)構(gòu)化方法核心:自頂向下,逐步求精手段:分解(模塊化)、抽象常用建模工具:需求建模:DFD(數(shù)據(jù)流圖)DD(數(shù)據(jù)字典)、ERD(實體關系圖)STD(狀態(tài)圖)設計建模:概要設計:結(jié)構(gòu)圖(SC)詳細設計:程序流程圖、N-S圖、PAD圖、偽代碼3DFD的分層建模隨著分解層次的增加,抽象的級別越來越低,也越接近問題的解(算法和數(shù)據(jù)結(jié)構(gòu))421432.42.32.22.11.31.21.1X數(shù)據(jù)字典的描述符號符號名稱舉例=定義為x=…表示x由…組成+與a+b表示a和b[…,…]或[a,b]表示a或b[…│…]或[a│b]表示a或b{…}重復{a}表示a重復0或多次{…}重復{a}表示a重復3到8次(…)可選(a)表示a重復0或1次″…″基本數(shù)據(jù)元素″a″表a是基本數(shù)據(jù)5數(shù)據(jù)流組成示例(發(fā)票)
單位名稱商品名數(shù)量單價金額總金額日期營業(yè)員
發(fā)票=單位名稱+{商品名+數(shù)量+單價+金額}
+總金額+日期+(營業(yè)員)51注:營業(yè)員的簽名可有可無6ERD示例7結(jié)構(gòu)設計的工具--結(jié)構(gòu)圖用結(jié)構(gòu)圖(StructureChart)來描述軟件系統(tǒng)的體系結(jié)構(gòu)描述一個軟件系統(tǒng)由哪些模塊組成,以及模塊之間的調(diào)用關系結(jié)構(gòu)圖的基本成分有:模塊、調(diào)用和數(shù)據(jù)8OQNRUVaa,cbccda,da,dMSffjPTSWghiSC圖示例9流程圖示例S1C4C5C3C2C1S2S3S4S5NYNYNNNYYY10偽代碼示例:拼詞檢查程序PROCEDUREspellcheckIS
BEGIN
splitdocumentintosinglewords
lookupwordsindictionary
displaywordswhicharenotindictionary
createanewdictionary
ENDspellcheck
1102-面向?qū)ο蠓椒?1-結(jié)構(gòu)化方法03-基于構(gòu)件的開發(fā)方法1204-面向服務方法06-模型驅(qū)動開發(fā)方法05-面向方面方法08-產(chǎn)品線開發(fā)方法和領域工程07-形式化方法面向?qū)ο蠓椒ň攀甏詠淼闹髁鏖_發(fā)方法符合人們對客觀世界的認識規(guī)律開發(fā)的系統(tǒng)結(jié)構(gòu)易于理解、易于維護繼承機制有力支持軟件復用常見的面向?qū)ο蠓椒˙oochmethod 1994CoadandYourdonmethod 1991Rambaughmethod--OMT 1991Jacobsonmethod–OOSE1992Wirfs-Brockmethod 1990……13國際標準統(tǒng)一建模語言UML
1997
面向?qū)ο蠓治雠c設計面向?qū)ο蠓治鲇美8拍铑愖R別和概念建模用例實現(xiàn)分析類識別分析類的時序圖建模和通信圖建模分析類圖建模14面向?qū)ο笤O計架構(gòu)設計分析類到設計類的轉(zhuǎn)換4+1View詳細設計子系統(tǒng)的設計類的設計面向?qū)ο蠓治雯ぉび美P?5SelectCoursestoTeachProfessorStudentBillingSystemRegistrarViewGradesAlterCourseSelectionsGetClassListforaCourseCloseRegistrationSubmitGradesRegisterforCoursesCourseCatalogSystemRequestCourseCatalog面向?qū)ο蠓治雯ぉじ拍钅P?6面向?qū)ο蠓治雯ぉび美龑崿F(xiàn)針對每個用例CreateUse-CaseRealizationIdentifyanalysisclassesModelanalysisclassinteractionsinsequencediagramsGeneratecommunicationdiagramsfromsequencediagramFindclassrelationshipsandoperations,andfinishVOPCclassdiagrams17UseCaseCommunicationDiagramsSequence
DiagramsUse-CaseRealizationClassDiagramsProcessViewDeploymentViewLogicalViewUse-CaseViewImplementationViewEnd-userFunctionalityProgrammers
Softwaremanagement
PerformanceScalabilityThroughput
SystemintegratorsSystemtopology
Delivery,installationcommunicationSystemengineeringAnalysts/DesignersStructure
面向?qū)ο笤O計──軟件架構(gòu)“4+1View”18面向?qū)ο笤O計──子系統(tǒng)設計19SubsystemComponentSubsystemInterfaceICourseCatalogSystemgetCourseOfferings(forSemester:Semester):CourseOfferingList(fromExternalSystemInterfaces)<<Interface>>11CourseOfferingListnew()add()(fromUniversityArtifacts)10..*CourseOfferingnew()setData()(fromUniversityArtifacts)<<Entity>>StatementexecuteQuery()executeUpdate()(fromjava.sql)ConnectioncreateStatement()(fromjava.sql)ResultSetgetString()(fromjava.sql)DBCourseOfferringcreate():CourseOfferingread(searchCriteria:string):CourseOfferingListCourseCatalogSystemgetCourseOfferings(forSemester:Semester):CourseOfferingList<<subsystem>>DriverManagergetConnection(url,user,pass):Connection(fromjava.sql)面向?qū)ο笤O計──類的設計優(yōu)化實體類、邊界類和控制類定義類的屬性和方法20AnalysisFatClassLazyDataHelper-rarelyUsedAttr1-rarelyUsedAttr2DesignFatClass-privateAttr+getCommonlyUsedAttr1()+getCommonlyUsedAttr2()+getRarelyUsedAtt1()+getRarelyUsedAtt2()FatClassDataHelper-commonlyUsedAttr1-commonlyUsedAttr210..1FatClass-
privateAttr-commonlyUsedAttr1-commonlyUsedAttr2-rarelyUsed1-rarelyUsed2<<Entity>>面向?qū)ο笤O計──狀態(tài)圖21superstatesubstateaddStudent/numStudents=numStudents+1OpenUnassignedAssignedHaddaprofessorClosedCanceleddo/SendcancellationnoticesFullCommitteddo/GenerateclassrostercloseRegistrationcloseremoveaprofessorclose[numStudents<3][numStudents=10]closeRegistration[numStudents>=3]close[numStudents>=3]closeRegistration[hasProfessorassigned]close
/numStudents=0removeStudent[numStudents>0]/numStudents=numStudents-1cancelcancel雙向工程Round-tripengineeringistheabilitytomovebackandforthbetweenmodelandcode.ForwardengineeringReverseengineering22SourceCodeModelCodeGenerationUML建模工具IBMRhapsodySybasePowerDesignerSparxSystemsEABorlandTogetherMicrosoftVisioStarUML開源ArgoUML開源…2302-面向?qū)ο蠓椒?1-結(jié)構(gòu)化方法03-基于構(gòu)件的開發(fā)方法2404-面向服務方法06-模型驅(qū)動開發(fā)方法05-面向方面方法08-產(chǎn)品線開發(fā)方法和領域工程07-形式化方法構(gòu)件構(gòu)件由構(gòu)件規(guī)約與構(gòu)件實現(xiàn)兩部分組成可復用構(gòu)件的要求:1.通用性和可變性(variability)強
2.易于調(diào)整
3.易于組裝
4.具有可檢索性
5.經(jīng)過充分的測試25ComponentinterfaceComponentimplementation舉例26基于構(gòu)件的開發(fā)A1A2A3A4基礎構(gòu)件B1B2B3B4功能構(gòu)件C1C2接口構(gòu)件A1A2ABCDRA3A4B1B2B3B4C1C2D1D2DA1B1C1A2B2應用系統(tǒng)標準規(guī)范與質(zhì)量保證應用構(gòu)架庫構(gòu)件生產(chǎn)車間組裝車間應用構(gòu)架提取車間構(gòu)件庫界面構(gòu)件D1D2應用系統(tǒng)27軟件工具領域工程軟件再工程軟件架構(gòu)技術(shù)開放系統(tǒng)技術(shù)構(gòu)件獲取構(gòu)件標準化與描述構(gòu)件復用軟件過程非技術(shù)因素軟件構(gòu)件技術(shù)構(gòu)件分類、存儲與檢索應用系統(tǒng)領域遺產(chǎn)軟件系統(tǒng)構(gòu)件復用的關鍵因素28構(gòu)件的獲取存在大量可復用的構(gòu)件是復用的前提據(jù)分析大約10萬個構(gòu)件才有可能滿足一般用戶的需求獲取構(gòu)件的途徑 從頭開發(fā)新構(gòu)件:領域工程 從現(xiàn)有系統(tǒng)中提煉:再工程 演化現(xiàn)有構(gòu)件構(gòu)件的實現(xiàn)模型示例OSOA的SCA模型(ServiceComponentModel)OMG的CCM模型(CORBAComponentModel)微軟的DCOM模型SUN的EJB模型29構(gòu)件的復用系統(tǒng)分析系統(tǒng)設計系統(tǒng)實現(xiàn)用戶需求系統(tǒng)模型系統(tǒng)設計軟件系統(tǒng)領域模型領域架構(gòu)構(gòu)件復用庫應用工程可交付系統(tǒng)可復用資產(chǎn)3002-面向?qū)ο蠓椒?1-結(jié)構(gòu)化方法03-基于構(gòu)件的開發(fā)方法3104-面向服務方法06-模型驅(qū)動開發(fā)方法05-面向方面方法08-產(chǎn)品線開發(fā)方法和領域工程07-形式化方法面向服務的軟件分析和設計(SOAD)ClassLayerServiceLayer
ComponentLayerStructuredDevelopServiceOrientedDevelop
ComponentOrientedDevelopObjectOrientedDevelop32服務的特征服務的抽象性(基于接口的編程)服務是實際程序、數(shù)據(jù)庫、業(yè)務過程等軟件實體的抽象了的邏輯視圖。實現(xiàn)平臺透明性服務的自治性(實現(xiàn)分布式應用)Youdon’t“new”aservice–it’sjustthere.服務間的松耦合式綁定,基于標準化消息進行通信服務的自描述性(支持動態(tài)發(fā)現(xiàn)與延遲綁定)服務具有可發(fā)布、可發(fā)現(xiàn)、機器可處理的接口契約服務的粗粒度(支持基于業(yè)務邏輯的積木式裝配)33SOA模型
34基于SOA的C/S系統(tǒng)的典型架構(gòu)35示例:基于微服務架構(gòu)的網(wǎng)絡訂餐系統(tǒng)36基于服務的業(yè)務流程管理系統(tǒng)的架構(gòu)示例37基于服務的應用集成示例38面向服務的軟件開發(fā)方法SOAD服務分析服務設計服務實現(xiàn)服務測試39服務分析-step1服務識別自頂向下方法,由業(yè)務需求驅(qū)動,設計服務。如果沒有已有的軟件服務相對應,就需要設計一個全新的服務。優(yōu)點:業(yè)務流程中的業(yè)務服務和軟件服務之間的交互是完全匹配的;缺點:可能對現(xiàn)有軟件服務的利用率不高,因為識別出來的業(yè)務服務有可能與現(xiàn)有軟件服務之間不能完全匹配,導致可能會徹底放棄現(xiàn)有軟件服務。自底向上方法,以現(xiàn)有服務驅(qū)動進行匹配優(yōu)點:通過不斷地將業(yè)務服務與已有的軟件服務進行匹配,使得對已有軟件服務能夠進行最大限度的復用;缺點:可能會發(fā)現(xiàn)很多業(yè)務服務無法找到合適的現(xiàn)有服務進行匹配,導致需要新開發(fā)的服務數(shù)量變多。40服務分析-step2服務粒度的確定以對業(yè)務的精確掌握和理解為基礎,在性能、可維護性和隨需應變之間進行平衡,選擇適合的粒度進行服務的識別和劃分。服務粒度太細會使得服務流程過于復雜,而且服務流程執(zhí)行的效率也會降低很多;服務流程太粗會使得服務流程難以改動,從而使得隨需應變無法實現(xiàn)。從隨需應變出發(fā),需要我們能夠預判業(yè)務流程在將來有可能出現(xiàn)的變化,然后根據(jù)這種預判來設計服務的粒度。具體來說,我們要求對業(yè)務流程中的各個環(huán)節(jié)進行抽象表示,然后根據(jù)考慮在流程上哪些部分是隨著業(yè)務的發(fā)展有可能產(chǎn)生變化的,然后將這些有可能產(chǎn)生變化的地方識別成細粒度的服務來表示。41服務分析-step3服務的組織編制(orchestration)在流程中有一個作為流程中心的服務,它負責控制流程中其他參與交互的服務,協(xié)調(diào)服務間的消息傳遞。除流程中心服務之外的其他參與交互的服務通常是不關心其他的服務的存在,也不需要知道自己被誰調(diào)用或正在參與一個什么樣的具體業(yè)務流程。編排(choreography)參與業(yè)務過程的Web服務之間是協(xié)作關系,為了實現(xiàn)一個業(yè)務流程,每一個參與其中的服務都需要明確地知道自己應該在什么情況下與哪些其他服務進行交互。42服務設計-step1SOA實現(xiàn)方案WebService應用范圍:EAI、面向網(wǎng)絡的分布式應用CORBA早期的實現(xiàn)技術(shù),因過于復雜,應用較少。OSGI應用范圍:基于Java的單虛擬機內(nèi)的應用JINI應用范圍:網(wǎng)絡設備的嵌入式應用43服務設計-step2SOA中間件分布式服務框架,如Dubbo,SpringCloud服務注冊、發(fā)現(xiàn)和調(diào)用、軟負載均衡及容錯等ESB(企業(yè)服務總線),如EMS,WebSphereESB實現(xiàn)數(shù)據(jù)、系統(tǒng)接口的服務化實現(xiàn)各種通信協(xié)議的適配實現(xiàn)消息的路由轉(zhuǎn)換過濾BPEL引擎,如OracleBPELProcessManager
實現(xiàn)流程的編排與執(zhí)行、跨域系統(tǒng)的協(xié)同共享MQ(消息隊列),如ActiveMQ、RabbitMQ、Kafka實現(xiàn)數(shù)據(jù)的可靠傳遞和交付44服務設計-step3服務內(nèi)部的詳細設計45bigbank.accountcompositeAccountServiceComponentServiceAccountServiceReferenceStockQuoteServiceAccountDataServiceComponentbigbank.accountcompositeAccountServiceComponentServiceAccountServiceReferenceStockQuoteServiceAccountDataServiceComponent舉例4602-面向?qū)ο蠓椒?1-結(jié)構(gòu)化方法03-基于構(gòu)件的開發(fā)方法4704-面向服務方法06-模型驅(qū)動開發(fā)方法05-面向方面方法08-產(chǎn)品線開發(fā)方法和領域工程07-形式化方法SeparationofConcernsconcernconcernconcernconcern48軟件中的Concern舉例1ImplementationofApacheTomcatwebserverAnalyzedimplementationof3concerns:XMLparsingconcernURLpatternmatchingconcernLoggingconcern49XMLparsingconcernGoodmodularization
XMLparsingisimplementedinitsownmodule50URLpatternmatchingconcernGoodmodularizationURLpatternmatchingisimplementedin2modules51LoggingconcernBadmodularization
loggingisimplementedinalotofdifferentplaces,spreadthroughoutothermodules52軟件中的Concern舉例2TransferConcernAuthenticationConcernLoggingConcernTransactionConcernCashWithdrawalConcernAuthenticationConcernLoggingConcernTransactionConcernCashDepositConcernAuthenticationConcernLoggingConcernTransactionConcernBankingSystem53TransactionConcernLoggingConcernTransactionConcernTransactionConcern代碼示例54Authentication
Concern
voidtransfer(AccountfromAccount,AccounttoAccount,intamount)throwsException{ if(!getCurrentUser().canPerform(OP_TRANSFER)){ thrownewSecurityException();} Transactiontx=database.newTransaction(); try{ if(fromAccount.getBalance()<amount) {thrownewInsufficientFundsException();} fromAccount.withdraw(amount); toAccount.deposit(amount);
mit(); systemLog.logOperation(OP_TRANSFER,fromAccount,toAccount,amount); } catch(Exceptione) {tx.rollback(); throwe;}}
55/2156/21aspectauthentication//thisistheaspect{
before:call(publicvoidTransfer(..))//thisisapointcut
{
//thisistheadvice
inttries=0; stringuserPassword=Password.Get(tries);
while(tries<3&&userPassword!=thisUser.password())
{
//allow3triestogetthepasswordright
tries=tries+1;
userPassword=Password.Get(tries);
}
if(userPassword!=thisUser.password())then
//ifpasswordwrong,assumeuserhasforgottentologout
System.Logout(thisUser.uid);
}}//authenticationAspect編碼示例57編程語言:AspectJ,JAsCo,CaesarJ,AspectS,ObjectTeams,HyperJ,JBOSSAOP,Compose*,DemeterJ,AspectC++,...58AspectWeaving59面向方面軟件開發(fā)的原理RequirementBusinessLogicPersistenceSecurityLogging6002-面向?qū)ο蠓椒?1-結(jié)構(gòu)化方法03-基于構(gòu)件的開發(fā)方法6104-面向服務方法06-模型驅(qū)動開發(fā)方法05-面向方面方法08-產(chǎn)品線開發(fā)方法和領域工程07-形式化方法模型驅(qū)動開發(fā)將軟件的開發(fā)集中于模型而不是程序(代碼)的一種開發(fā)方法從模型自動產(chǎn)生程序(代碼)主要用來提高開發(fā)生產(chǎn)率和代碼的可靠性OMG定義模型驅(qū)動的體系結(jié)構(gòu)(Model-DrivenArchitecture,簡稱MDA)的初衷定義一組標準來支持模型驅(qū)動的開發(fā)UML是MDA的基礎之一62模型和元模型63MDA中的三種模型Computation-
IndependentModel(CIM)Platform-
IndependentModel(PIM)Platform-
SpecificModel(PSM)MoreAbstractMoreSpecific64計算無關模型(CIM)舉例
65Usesthevocabularyofthedomain.Noinformationinthemodelindicatesthatacomputer-basedsolutionwillbeused.平臺無關模型(PIM)舉例
66LessabstractthanCIMClosertoimplementationbutnottiedtoaplatform.平臺有關模型(PSM)舉例
67LessabstractthanPIMClosertoimplementationJ2EEelementscapturedinmodel模型間的轉(zhuǎn)換68測試系統(tǒng)工程需求設計編碼計算無關模型CIM業(yè)務模型平臺無關模型PIM分析模型平臺有關模型PSM設計模型代碼實現(xiàn)模型測試模型模型驅(qū)動的軟件開發(fā)(MDD)以模型為中心(相對于以代碼為中心)的軟件開發(fā)方法基于以下兩種久經(jīng)考驗的技術(shù)69SC_MODULE(producer){sc_inslave<int>in1;intsum;//voidaccumulate(){sum+=in1;cout<<“Sum=“<<sum<<endl;}?sc_module?
producerstartout1(1)抽象(2)自動化?sc_module?
producerstartout1SC_MODULE(producer){sc_inslave<int>in1;intsum;//voidaccumulate(){sum+=in1;cout<<“Sum=“<<sum<<endl;}建模語言建模工具MDD主要方法(半)自動的轉(zhuǎn)換:PIM->PSM,PSM->代碼通過標記、profile、OCL或者其他途徑進行平臺無關模型(PIM)的刻畫,然后定義相關的轉(zhuǎn)換規(guī)則來完成從平臺無關模型到平臺相關模型或代碼的轉(zhuǎn)換。例如:SCADE實現(xiàn)了PSM(狀態(tài)圖+數(shù)據(jù)流圖)至代碼的生成基于DSL的開發(fā)方法領域描述語言(DomainSpecificLanguage,DSL)通過適當?shù)谋硎痉椒ê统橄髾C制來提供對特定問題領域的表述能力,因此,DSL常用來生成特定應用領域中的一個產(chǎn)品/應用家族的應用。例如:無代碼開發(fā)可執(zhí)行的UML(xUML)xUML=UML-Semanticallyweakelement+preciselydefinedactionsemantics7002-面向?qū)ο蠓椒?1-結(jié)構(gòu)化方法03-基于構(gòu)件的開發(fā)方法7104-面向服務方法06-模型驅(qū)動開發(fā)方法05-面向方面方法08-產(chǎn)品線開發(fā)方法和領
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CPFIA 0003-2022含礦物源黃腐酸鉀磷酸一銨
- T/CHES 117-2023城市河湖底泥污染狀況調(diào)查評價技術(shù)導則
- T/CI 317-2024藥食同源及藥膳配方食品生產(chǎn)加工技術(shù)規(guī)范
- T/ZSX 4-2024社區(qū)社會組織培育發(fā)展導則
- 貸款延期還款協(xié)議書5篇
- 軟件園樓房改造vrv空調(diào)設備安裝合同4篇
- 05-12-27交通指示制作合同3篇
- 公司股權(quán)質(zhì)押解除合同6篇
- 餐飲行業(yè)員工用工合同5篇
- 飲食店合同5篇
- ISO28000:2022供應鏈安全管理體系
- 河池市大任產(chǎn)業(yè)園污水處理廠(江南污水處理廠二期)項目環(huán)境影響報告書
- DB22-T 5118-2022 建筑工程資料管理標準
- 集體備課《發(fā)生在肺內(nèi)的氣體交換》
- 六年級下冊生命生態(tài)安全知識要點
- JJG 211-2021 亮度計檢定規(guī)程(高清最新版)
- 高壓噴射注漿工程施工工藝標準
- 最新部編版九年級語文下冊課件(完美版)寫作布局謀篇
- 個人公證委托書
- 農(nóng)村水電站崗位設置及定員標準(全面)
- 第五章溶膠凝膠法
評論
0/150
提交評論