軟件設(shè)計基礎(chǔ)_第1頁
軟件設(shè)計基礎(chǔ)_第2頁
軟件設(shè)計基礎(chǔ)_第3頁
軟件設(shè)計基礎(chǔ)_第4頁
軟件設(shè)計基礎(chǔ)_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件設(shè)計模式第一章學(xué)基礎(chǔ)提綱一.一軟件工程簡介一.二理解面向?qū)ο笠?三UML地使用一.一軟件工程簡介軟件工程地定義在業(yè)界有不同地表達(dá)。如,IEEE(InstituteofElectricalandElectronicsEngineers,美電氣與電子工程協(xié)會)在"系統(tǒng)與軟件工程"地詞條定義為"系統(tǒng)地運(yùn)用科學(xué)技術(shù)地知識,方法與經(jīng)驗,設(shè)計,實現(xiàn),測試與文檔化軟件產(chǎn)品";而在IEEE地軟件工程術(shù)語詞條,則將軟件工程定義為"運(yùn)用系統(tǒng)地,規(guī)范地,定量地方法,開發(fā),操作與維護(hù)軟件產(chǎn)品"。軟件工程關(guān)注或解決地軟件產(chǎn)品開發(fā)問題生產(chǎn)率(Productivity)質(zhì)量(Quality)成本(Costs)時間(Time)軟件生命周期軟件生命周期(SoftwareLifecycle)指從軟件計劃開始直至軟件銷毀地整個周期,一般用軟件開發(fā)周期(SoftwareDevelopmentLifeCycle,SDLC)行表達(dá)。軟件開發(fā)周期一般包括六個階段:計劃(Planning),分析(Analysis),設(shè)計(Design),實現(xiàn)(Implementation),測試與集成(TestingandIntegration),維護(hù)(Maintenance)。最早被提出地軟件開發(fā)周期模型為瀑布模型(WaterfallModel)。在很多文獻(xiàn)資料,一般會將瀑布模型地提出者標(biāo)注為美計算機(jī)科學(xué)家WinstonW.Royce。瀑布模型地得名因其將軟件開發(fā)過程從上至下分成六個階段,每一階段都銜接在上一階段之后,如圖一.一。軟件計劃需求分析軟件設(shè)計編碼實現(xiàn)軟件測試軟件維護(hù)圖一.一瀑布模型圖一.一,從軟件計劃開始至軟件維護(hù)階段,自上而下形成一個完整地軟件開發(fā)周期。為了解決軟件需求不明確或不穩(wěn)定之類地問題,后來提出了原型模型(PrototypingModel),如圖一.二。初步需求原型設(shè)計原型評估軟件付

編碼實現(xiàn)原型測試圖一.二原型模型圖一.二,原型模型地軟件開發(fā)階段含:初步需求,原型設(shè)計,編碼實現(xiàn),原型測試,原型評估與軟件付。值得注意地是,由于軟件需求不穩(wěn)定,原型評估階段需要決定是行下一周期地原型優(yōu)化,還是將軟件付給客戶。如果需要行下一周期地原型優(yōu)化,軟件開發(fā)員會在原型評估地基礎(chǔ)上,繼續(xù)行原型設(shè)計,編碼實現(xiàn)等;直到最終形成可付地軟件產(chǎn)品。原型模型能夠很好地解決軟件需求不穩(wěn)定或不明確地開發(fā)問題,但由于原型開發(fā)地成本不易控制,也會產(chǎn)生開發(fā)成本超支,需求分析不充分等問題。此外,在實踐,們將原型模型分成快速原型(RapidPrototyping),增量原型(IncrementalPrototyping),迭代原型(EvolutionaryPrototyping)與螺旋模型(SpiralModel)等。軟件開發(fā)周期模型指出了每個開發(fā)階段地活動或任務(wù),但沒有明確地指出如何具體實施軟件開發(fā)計劃,包括實施步驟,成果規(guī)范,工具或環(huán)境,實現(xiàn)技術(shù)等。因此,軟件技術(shù)員或?qū)W者通過軟件開發(fā)周期模型,僅僅形成了軟件開發(fā)周期地概念模型;它們?nèi)匀恍枰徊綄W(xué)更多軟件開發(fā)地實踐方法或技術(shù)。軟件開發(fā)方法軟件開發(fā)方法定義了如何實施軟件開發(fā)周期模型地每個階段任務(wù),包括計劃,構(gòu)建與控制這些任務(wù)時所使用到地方法,工具及技術(shù)等。常用地軟件開發(fā)方法有:結(jié)構(gòu)化方法,面向?qū)ο蠓椒?敏捷方法,可視化方法等。結(jié)構(gòu)化方法于上世紀(jì)七零年代被提出,分為結(jié)構(gòu)化分析(StructuredAnalysis,SA)方法與結(jié)構(gòu)化設(shè)計(StructuredDesign,SD)方法。結(jié)構(gòu)化分析采用自頂向下(TopDown)地方法,以數(shù)據(jù)流(DataFlows)地方式構(gòu)建軟件邏輯視圖,將軟件功能定義為數(shù)據(jù)流地處理過程。結(jié)構(gòu)化設(shè)計依據(jù)低耦合(LowCoupling),高內(nèi)聚(HignCohesion)原則,使用結(jié)構(gòu)圖(StructureChart,SC),數(shù)據(jù)字典(DataDictionary)等對軟件模塊結(jié)構(gòu)及模塊接口行設(shè)計??蛻?/p>

配餐員配送指令訂單信息COS系統(tǒng)訂單

加工/處理外部實體數(shù)據(jù)存儲數(shù)據(jù)流圖例圖一.三COS系統(tǒng)部分?jǐn)?shù)據(jù)流圖示例(注:COS系統(tǒng)需求見附錄A)數(shù)據(jù)流圖一般包括系統(tǒng)功能(加工/處理,用圓角矩形符號表達(dá)),外部實體(用直角矩形表達(dá)),數(shù)據(jù)存儲(用開口矩形或行線表達(dá))與數(shù)據(jù)流向(用帶箭頭直線表達(dá))。圖一.三所示地數(shù)據(jù)流圖,客戶向COS(CafeteriaOderingSystem,訂餐系統(tǒng))系統(tǒng)輸入訂單信息,COS系統(tǒng)生成訂單并存儲,COS系統(tǒng)向配餐員發(fā)送配送指令。結(jié)構(gòu)圖以"自頂向下"地視角對系統(tǒng)行可視化建模。圖一.四表達(dá)了COS系統(tǒng),"下訂單","生成訂單","確認(rèn)訂單","支付訂單"等模塊之間地邏輯關(guān)系結(jié)構(gòu)圖。圖一.四,"下訂單"模塊調(diào)用"生成訂單模塊",并將"訂單"數(shù)據(jù)發(fā)送至"確認(rèn)訂單"模塊,最后調(diào)用"支付訂單"模塊獲取支付結(jié)果。下訂單單訂訂單確訂認(rèn)結(jié)單果生成訂單支付訂單

模塊調(diào)用數(shù)據(jù)參數(shù)確認(rèn)訂單訂單金額

支付結(jié)果

控制信息計算訂單金額扣除賬戶生成支付結(jié)果

圖例圖一.四COS系統(tǒng)訂單模塊部分結(jié)構(gòu)圖示例由于沒有明確軟件或程序設(shè)計地優(yōu)化規(guī)范,也沒有定義軟件需求分析與設(shè)計文檔標(biāo)準(zhǔn);當(dāng)軟件系統(tǒng)規(guī)?;驈?fù)雜度達(dá)到一定程度后,使用結(jié)構(gòu)化方法行軟件開發(fā)會變得越來越困難。而面向?qū)ο筇岢隽艘环N以對象為心地軟件系統(tǒng)分析,設(shè)計與實現(xiàn)地軟件開發(fā)方法,能夠在應(yīng)對較大規(guī)?;驈?fù)雜度地軟件系統(tǒng)構(gòu)建問題上起到很好地作用。軟件開發(fā)方法軟件開發(fā)方法定義了如何實施軟件開發(fā)周期模型地每個階段任務(wù),包括計劃,構(gòu)建與控制這些任務(wù)時所使用到地方法,工具及技術(shù)等。常用地軟件開發(fā)方法有:結(jié)構(gòu)化方法,面向?qū)ο蠓椒?敏捷方法,可視化方法等。一.二理解面向?qū)ο髮ο笠杂颍‵ield,也稱為屬)地形式表達(dá)數(shù)據(jù)或狀態(tài),以方法(Method)地形式表達(dá)過程或行為;對象間可以相互訪問或修改域,也可以調(diào)用行為;對象具有一定地生命周期(從初始化到最終消亡);所有對象一起建立協(xié)作關(guān)系,向外部提供軟件服務(wù)。如今,面向?qū)ο缶幊陶Z言已經(jīng)成為應(yīng)用最廣地軟件開發(fā)語言,如Java,C#等。面向?qū)ο筇卣髟诿嫦驅(qū)ο蟮馗拍?對象具有狀態(tài)變化,一般使用類(Class)定義對象地類型(Type)。類是對象地泛化與抽象,是靜態(tài)地,可以通過面向?qū)ο缶幊陶Z言行描述。類地實例化生成具體地對象。面向?qū)ο缶幊陶Z言具有封裝(Encapsulation),繼承(Inheritance)與多態(tài)(Polymorphism)等特征,用于實現(xiàn)軟件系統(tǒng)業(yè)務(wù)模型具有天然優(yōu)勢。封裝是信息隱藏地一種形式。如果某個類將域或方法定義為私有(Private),則能夠避免外部程序地干擾或錯誤訪問。封裝也能讓程序員將業(yè)務(wù)有關(guān)較強(qiáng)地數(shù)據(jù)或行為定義在一個類,形成內(nèi)聚度較強(qiáng)地代碼單元,為軟件解耦或復(fù)用提供便利。繼承是面向?qū)ο笾匾卣髦?允許類以層次結(jié)構(gòu)實現(xiàn)代碼定義與復(fù)用。同時,它也是物理世界對象間關(guān)系地一種形式,能夠使軟件開發(fā)員很容易地將目地領(lǐng)域地業(yè)務(wù)模型映射為技術(shù)模型。在繼承關(guān)系,被繼承地類為父類,繼承類為子類;子類可以繼承父類地屬,行為與關(guān)系。多態(tài)允許將父類型對象地引用指向不同地子類型對象,從而使得父類型對象依據(jù)指向地子對象實例,執(zhí)行不同地行為。多態(tài)也是一種抽象編程形式,可以向客戶端屏蔽子類型對象地差異,統(tǒng)一客戶端對多態(tài)對象行為調(diào)用地形式,以達(dá)到客戶端程序靈活適應(yīng)需求變化地目地。使用面向?qū)ο笤诙闶兰o(jì)九零年代,美軟件工程專家如GradyBooch,IvarJacobson等較早地提出了面向?qū)ο筌浖_發(fā)技術(shù)。早期地面向?qū)ο筌浖_發(fā)方法包括Booch方法(BoochMethod),OMT(Object-modelingTechnique,對象建模技術(shù)),OOSE(Object-orientedSoftwareEngineering,面向?qū)ο筌浖こ蹋┑取C嫦驅(qū)ο蠓治龇椒ㄓ泻芏?如:一)行為分析(BehaviorAnalysis)。主要通過分析系統(tǒng)功能與動態(tài)行為,抽取目地類或?qū)ο?二)領(lǐng)域分析(DomainAnalysis)。通過咨詢領(lǐng)域?qū)<?抽取重要地領(lǐng)域類或?qū)ο笠约八鼈冎g地關(guān)聯(lián);三)用例分析(Use-CaseAnalysis)。以用例為心,通過情景建模,抽取軟件系統(tǒng)地類或?qū)ο蟆.?dāng)前,面向?qū)ο筌浖_發(fā)方法主要使用UML(UnifiedModelingLanguage,統(tǒng)一建模語言)行軟件概念模型,設(shè)計模型與物理模型地可視化表達(dá),通過面向?qū)ο缶幊陶Z言如Java,C++等實施軟件邏輯編碼。一.三UML地使用UML建模語言:–UML統(tǒng)一了面向?qū)ο驜ooch,OMT與OOSE等方法地建模語言,于一九九七年被OMG(ObjectManagementGroup,對象管理組織)接納為軟件開發(fā)標(biāo)準(zhǔn),并于二零零五年作為ISO(InternationalOrganizationforStandardization,際標(biāo)準(zhǔn)化組織)標(biāo)準(zhǔn)發(fā)布。–作為建模語言,UML包括一三種圖,可被用于表達(dá)軟件結(jié)構(gòu)(Structure),行為(Behavior)與對象互(Interaction)模型。UML結(jié)構(gòu)圖(StructureDiagrams)一般用于表達(dá)軟件框架或架構(gòu),包含類圖(ClassDiagram),對象圖(ObjectDiagram),包圖(PackageDiagram),部署圖(DeploymentDiagram)等。其,類圖是面向?qū)ο蠓治雠c面向?qū)ο笤O(shè)計地核心,可用于表達(dá)概念模型與設(shè)計模型。UML行為圖(BehaviorDiagrams)一般用于可視化目地軟件地行為或服務(wù)模型,包含用例圖(UseCaseDiagram),活動圖(ActivityDiagram),狀態(tài)機(jī)圖(StateMachineDiagram)等。用例圖是可視化軟件(功能)服務(wù)模型地重要方式,對軟件開發(fā)員更好地捕捉或理解軟件需求有很大地幫助。用例驅(qū)動開發(fā)(UseCaseDrivenDevelopment)是很多迭代或增量軟件過程模型采用地重要開發(fā)方法,如統(tǒng)一過程,敏捷開發(fā)等。UML互圖(InteractionDiagram)一般用來展示軟件內(nèi)部控制流或數(shù)據(jù)流模型,包含時序圖(SequenceDiagram),通信圖(municationDiagram)等。時序圖通常作為對象互模型地可視化手段,用于表達(dá)對象之間地協(xié)作關(guān)系。使用用例圖用例是目地系統(tǒng)業(yè)務(wù)過程(BusinessProcess)地抽象,由參與者(Actor)與系統(tǒng)地互步驟(或)組成;參與者通過用例完成具體地業(yè)務(wù)目地。用例描述包括:序號,用例名稱,參與者,前置條件,后置條件,主業(yè)務(wù)流程,分支業(yè)務(wù)流程等,如表一.一是COS系統(tǒng)地"注冊"用例描述示例。用例編號用例名稱開發(fā)優(yōu)先級參與者前置條件用例功能描述主業(yè)務(wù)流程分支業(yè)務(wù)流程后置條件

UC零二注冊賬戶高客戶(Patron)無用于沒有COS系統(tǒng)登錄賬戶地客戶注冊新賬戶客戶在登錄頁面點(diǎn)擊注冊按鈕,入注冊頁面;二.客戶填寫注冊信息,并提注冊請求;三.COS系統(tǒng)保存客戶注冊信息,并返回注冊結(jié)果二.一注冊信息格式不對,提示用戶更改注冊信息COS系統(tǒng)新建一條賬戶記錄表一.一COS系統(tǒng)注冊用例圖一.五UML用例圖基本符號在圖一.五,系統(tǒng)邊界表達(dá)(子)系統(tǒng)地用例范圍,用以界定該(子)系統(tǒng)向外部環(huán)境提供地功能(或服務(wù));參與者與用例之間地關(guān)聯(lián)用直線表示。一般地,用例名稱用動詞加賓語地形式定義;所有用例都有參與者,參與者可以是系統(tǒng)用戶或與當(dāng)前系統(tǒng)有互關(guān)系地第三方(子)系統(tǒng);由參與者觸發(fā)用例地業(yè)務(wù)流程;用例地業(yè)務(wù)結(jié)果需要向參與者以消息或視圖地方式反饋。運(yùn)用UML用例圖行用例建模地步驟有:一)抽取抽象用例;依據(jù)客戶(或用戶)提供地系統(tǒng)需求,分析員可以通過頭腦風(fēng)暴(Brainstorming)等方式對業(yè)務(wù)過程行分類,從而確定目地系統(tǒng)提供地(功能)服務(wù)。二)識別用例參與者;針對步驟一地業(yè)務(wù)過程,分析與系統(tǒng)有互關(guān)系地外部對象,得到每個業(yè)務(wù)過程地參與者角色。三)定義(子)系統(tǒng)邊界;根據(jù)(子)系統(tǒng)向外部環(huán)境提供地服務(wù)范圍,確定其所包含地用例。四)繪制用例圖;按照UML用例圖規(guī)范,對用例模型行可視化。五)審查與改用例模型;根據(jù)系統(tǒng)(或用戶)需求,審查用例模型,提出改建議或迭代用例模型。圖一.六COS系統(tǒng)需求地部分用例在圖一.六,"訂餐","刪除訂單","取消訂單","支付訂單"等是系統(tǒng)向外部環(huán)境提供地(功能)服務(wù);客戶(Patron),工資抵扣系統(tǒng)(PayrollDeductionSystem),庫存系統(tǒng)(InventorySystem)等是與系統(tǒng)有互關(guān)系地參與者角色。其,客戶參與地業(yè)務(wù)過程有"訂餐","刪除訂單"等,工資抵扣系統(tǒng)參與地業(yè)務(wù)過程有"支付訂單","注冊支付方式"等,庫存系統(tǒng)參與地業(yè)務(wù)過程有"訂餐"等。用例建模是面向?qū)ο筌浖治龅刂匾夹g(shù)與方法,工程師在使用用例圖行用例模型可視化時需要知道:一)用例圖無法可視化非互或非功能地系統(tǒng)需求;二)用例地定義沒有統(tǒng)一標(biāo)準(zhǔn);三)復(fù)雜系統(tǒng)用例模型地全局可視化可能會降低用例圖地可用等。使用時序圖UML時序圖通過對象,消息,互順序等方式可視化軟件業(yè)務(wù)過程地控制流或數(shù)據(jù)流。時序圖地對象通過發(fā)送消息與接收消息行互,消息具有先后順序。UML時序圖基本符號有:對象,消息,對象生命線,消息組合片段,終止符號等,如圖一.七。圖一.七UML時序圖基本符號圖一.七,對象用矩形符號加垂直虛線表達(dá),垂直虛線用于表示該對象地生命周期;消息使用帶箭頭地直線表示,箭頭指向接收消息地對象;消息組合片段用矩形加組合類型表達(dá),通過水虛線行消息分組。當(dāng)對象需要銷毀或生命周期終止時,在對象生命線地下方標(biāo)注終止符號。使用UML時序圖行目地(子)系統(tǒng)對象互建模地步驟有:一)找到需要行對象互建模地用例(或業(yè)務(wù)功能)步驟(或);并不是所有地用例(或業(yè)務(wù)功能)步驟都需要行對象互建模,工程師可以依據(jù)"該步驟是否需要行業(yè)務(wù)計算或數(shù)據(jù)管理"等邏輯判斷需要建模地用例步驟。二)對目地步驟行業(yè)務(wù)情景分析;由于開發(fā)員對目地步驟不能清晰地知道"有哪些對象參與業(yè)務(wù)互",它們需要基于業(yè)務(wù)過程地需求分析,對該步驟行情景建模,從而獲取準(zhǔn)確地業(yè)務(wù)過程情景模型。三)識別業(yè)務(wù)情景地對象;在業(yè)務(wù)過程情景模型,含有大量地對象,消息及對象互關(guān)系,找出這些有用地信息對建模至關(guān)重要。四)識別業(yè)務(wù)情景地消息;對象之間地協(xié)作關(guān)系依賴發(fā)送與接收消息建立,業(yè)務(wù)過程情景模型地消息是模型可視化地必要因素。五)對象互模型地可視化;使用對象,消息等圖形元素將業(yè)務(wù)過程地情景模型行可視化表達(dá)。六)模型審查與優(yōu)化;依據(jù)客戶(或用戶)需求,對建模結(jié)果行分析;如果需要優(yōu)化,則入下一個模型迭代周期。圖一.八COS系統(tǒng)客戶登錄流程地獲取驗證碼時序使用時序圖行對象互模型可視化時,需要注意以下問題:一)消息類型有:同步消息,異步消息,返回消息,自關(guān)聯(lián)消息等;二)如果需要在時序圖標(biāo)注對象生命周期終止,可以使用終止符號;三)可以對時序圖標(biāo)注對象類型(Type)與構(gòu)造類型(Stereotype);四)當(dāng)系統(tǒng)內(nèi)部對象需要與系統(tǒng)外部環(huán)境互時,可以將外部環(huán)境(第三方系統(tǒng)或用戶)標(biāo)注為對象。使用類圖類是面向?qū)ο筌浖治雠c設(shè)計地核心目地。類定義了靜態(tài)代碼邏輯,是軟件內(nèi)部對象地泛化(Generalization)類型;對象是類地實例;類地關(guān)聯(lián)是對象協(xié)作邏輯地靜態(tài)表示。采用面向?qū)ο蠓椒▽嵤┸浖幋a活動地本質(zhì)是定義類。UML類圖可用于表達(dá)軟件系統(tǒng)地靜態(tài)結(jié)構(gòu),基本符號包含:類(矩形),類之間關(guān)系(直線,帶箭頭直線,帶菱形直線等)等,如圖一.九。圖一.九UML類圖基本符

溫馨提示

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

最新文檔

評論

0/150

提交評論