久久久久无码精品,四川省少妇一级毛片,老老熟妇xxxxhd,人妻无码少妇一区二区

軟件的復(fù)用技術(shù)及開發(fā)方法

時間:2023-03-29 11:42:20 其他畢業(yè)論文 我要投稿
  • 相關(guān)推薦

軟件的復(fù)用技術(shù)及開發(fā)方法

軟件的復(fù)用技術(shù)及開發(fā)方法

2.1軟件的復(fù)用技術(shù)
軟件復(fù)用是指在開發(fā)新的軟件系統(tǒng)時,對已有的軟件或軟件模塊重新使用,該軟件可以是己經(jīng)存在的軟件,也可以是專門的可復(fù)用組件〔8〕。軟件可復(fù)用性的高低影響到生產(chǎn)效率的高低、軟件質(zhì)量的好壞和系統(tǒng)可維護性的好壞。在軟件工程中面臨的問題不是缺乏復(fù)用,而是缺乏廣泛的、系統(tǒng)的復(fù)用。軟件復(fù)用包括構(gòu)造可復(fù)用軟件和用可復(fù)用軟件進行構(gòu)造。構(gòu)造可復(fù)用軟件,一方面可以從現(xiàn)存的軟件系統(tǒng)中抽取,另一方面通過改寫或重新設(shè)計來實施。
Jones將軟件復(fù)用的對象分為4種數(shù)據(jù)復(fù)用、體系結(jié)構(gòu)復(fù)用、設(shè)計復(fù)用和程序復(fù)用。這樣,軟件復(fù)用可在實現(xiàn)層、設(shè)計層和體系結(jié)構(gòu)層三個層次上實現(xiàn)。實現(xiàn)層軟件復(fù)用是指對己有的程序代碼進行復(fù)用,它包括源代碼組件形式。設(shè)計層軟件復(fù)用是指對已有的軟件系統(tǒng)的設(shè)計信息進行復(fù)用。而體系結(jié)構(gòu)層軟件復(fù)用是最有效的軟件復(fù)用,它主要是軟件體系結(jié)構(gòu)形式化的復(fù)用,即將軟件的框架組織,全局結(jié)構(gòu)設(shè)計作為復(fù)用對象?蓮(fù)用的軟件體系結(jié)構(gòu)則通常是顯式地復(fù)用軟件體系結(jié)構(gòu),并通過集成其他軟件體系結(jié)構(gòu),建立新的更高層次的體系結(jié)構(gòu)。   
面向?qū)ο蟮能浖䦶?fù)用機制主要有兩種:繼承和對象組合。
(1)繼承
繼承是指子類可以從父類中直接獲得某些特征和行為的能力,繼承可作為代碼復(fù)用和概念復(fù)用的手段。作為代碼復(fù)用的手段是指:子類通過繼承父類的行為,一些代碼就不必重寫;作為概念復(fù)用的手段是指:子類共享父類的方法定義。作為代碼復(fù)用和概念復(fù)用手段的繼承機制,在面向?qū)ο蠹夹g(shù)中,通過面向?qū)ο蠹夹g(shù)的一些主要機制來實現(xiàn)對“支持可維護性的可復(fù)用性”的支持。這些面向?qū)ο蟮闹饕獧C制是:數(shù)據(jù)的抽象化、封裝和多態(tài)性。通過運用這些機制,繼承可以在高層次上提供(相對于傳統(tǒng)的低層次復(fù)用)可復(fù)用性:數(shù)據(jù)的抽象化和繼承關(guān)系使得概念或定義可以復(fù)用;多態(tài)性使得實現(xiàn)和應(yīng)用可以復(fù)用;而抽象化和封裝可以保持和促進系統(tǒng)的可維護性。這樣一來,復(fù)用的焦點不再集中在函數(shù)和算法等具體實現(xiàn)細節(jié)上,而是集中在最重要的含有宏觀商業(yè)邏輯的抽象層次上。換言之,復(fù)用的焦點發(fā)生了“倒轉(zhuǎn)”。發(fā)生復(fù)用焦點的倒轉(zhuǎn)并不是因為實現(xiàn)細節(jié)的復(fù)用并不重要,而是因為這些細節(jié)上的復(fù)用己經(jīng)做的很好了,并且這種復(fù)用在提高復(fù)用性的同時提高了軟件的可維護性。由于繼承關(guān)系直接繼承的是接口,同時也繼承實現(xiàn),因而實際上父類的內(nèi)部實現(xiàn)對子類而言是可見的,屬于白盒復(fù)用方式。
(2)對象的組合
對象組合是指新的復(fù)雜功能可以通過組裝或組合對象來獲得。這種復(fù)雜的功能由對象組合來獲得的設(shè)計思想與過程化程序設(shè)計思想是相似的,在過程化程序設(shè)計中,一個復(fù)雜的功能模塊可以分解為更細小的和更簡單的功能模塊,整體功能是各個局部功能的聚集。在面向?qū)ο笙到y(tǒng)中,系統(tǒng)是由對象構(gòu)成,因此復(fù)雜的功能或者說能完成更復(fù)雜功能的對象,可以通過功能較簡單的對象的組裝或組合來實現(xiàn)。對象組合方式是從整體與局部的角度來考慮軟件復(fù)用思想的。
對象組合要求對象具有良好的接口定義,使用對象的接口來使用對象的功能,并往往運用賦值多態(tài)來獲得具體對象,對象的內(nèi)部功能是不可見的,對象只以“黑盒”的形式出現(xiàn),屬于黑盒復(fù)用方式。
面向?qū)ο蟮能浖䦶?fù)用過程有以下步驟:
①抽象:對軟件制品進行抽象,抽象層次越高,復(fù)用的機會就越大;
②選擇:一般通過分類和編目方案組織和檢索可復(fù)用的軟件制品;
③特殊化:即將上步選定了的一個一般化的軟件制品進行特殊化,以滿足特定領(lǐng)域的要求;
④集成:集成需要在軟件體系結(jié)構(gòu)或框架的指導(dǎo)下,將選定的、特殊化了的模塊集合組成一個完整的軟件系統(tǒng)。要有效地將可復(fù)用制品集成為一個軟件系統(tǒng),使用者必須清楚地理解該模塊的接口。
而從復(fù)用的使用角度上看,軟件復(fù)用的使用行為可能發(fā)生在三個維上。
①平臺維:以某平臺上的軟件為基礎(chǔ),修改它與運行平臺相關(guān)的部分,使其能夠運行在新的平臺,即軟件移植;
②時間維:使用以前的軟件版本作為新版本的基礎(chǔ),加入新功能,適應(yīng)新需求,即軟件維護;
③應(yīng)用維:將某軟件或其中構(gòu)件用于其他系統(tǒng)中,新系統(tǒng)具有不同功能和用途,即真正的軟件復(fù)用。
這三種行為中都重復(fù)使用了現(xiàn)有的軟件,但是真正意義的軟件復(fù)用指的是應(yīng)用維上的軟件復(fù)用,即“使用為復(fù)用而開發(fā)的軟件”來更快更好地開發(fā)新的應(yīng)用系統(tǒng)。通過軟件復(fù)用,消除了許多重復(fù)勞動,降低了軟件開發(fā)的時間。同時,復(fù)用高質(zhì)量的己有開發(fā)成果,避免了重新開發(fā)可能引入的錯誤,從而提高了軟件的質(zhì)量。
2.2軟件的開發(fā)方法
2.2.1結(jié)構(gòu)化開發(fā)方法
結(jié)構(gòu)化方法是把現(xiàn)實世界描繪為數(shù)據(jù)在信息系統(tǒng)中的流動,以及在數(shù)據(jù)流動的過程中數(shù)據(jù)向信息的轉(zhuǎn)化。其基本思想為:基于功能分解設(shè)計系統(tǒng)結(jié)構(gòu),通過把復(fù)雜的問題逐層分解,進行簡化(即自頂向下,逐層細化),將整個程序結(jié)構(gòu)劃分成若干個功能相對獨立的子模塊直至最簡,并且每個模塊最終都可使用順序、選擇、循環(huán)三種基本結(jié)構(gòu)來實現(xiàn),它是從系統(tǒng)內(nèi)部功能上模擬客觀世界。
結(jié)構(gòu)化方法強調(diào)系統(tǒng)開發(fā)過程的整體性和全局性,強調(diào)在整體優(yōu)化的前提下來考慮具體的分析設(shè)計問題。結(jié)構(gòu)化方法嚴格地區(qū)分開發(fā)階段,強調(diào)一步一步地嚴格地進行系統(tǒng)分析與設(shè)計,每一步工作都及時地總結(jié)、發(fā)現(xiàn)問題,從而避免了開發(fā)過程的混亂狀態(tài)。
結(jié)構(gòu)化方法是目前被廣泛采用的系統(tǒng)開發(fā)方法之一,但是結(jié)構(gòu)化方法也存在的許多問題,其局限性有以下幾點:
(1)難以解決軟件重用問題。結(jié)構(gòu)化方法從功能抽象出發(fā)進行模塊劃分,所劃分出的模塊千差萬別,模塊共用的程度不高。
(2)結(jié)構(gòu)化方法在需求分析中對問題域的認識和描述不是以問題域中固有的事物作為基本單位,而是打破了各項事物之間的界限,在全局范圍內(nèi)以數(shù)據(jù)流為中心進行分析,所以分析結(jié)果不能直接反映問題域。同時,當(dāng)系統(tǒng)較復(fù)雜時,很難檢驗分析的正確性。因此,結(jié)構(gòu)化分析方法容易隱藏一些對問題域的理解偏差,與后繼開發(fā)階段的銜接也比較困難。
(3)結(jié)構(gòu)化方法對需求變化的適應(yīng)能力比較弱,軟件系統(tǒng)結(jié)構(gòu)對功能的變化十分敏感,功能的變化會引起相關(guān)聯(lián)的許多數(shù)據(jù)流的修改,同時設(shè)計出的軟件難以重用,延緩了開發(fā)的過程。
(4)結(jié)構(gòu)化方法中設(shè)計文檔很難與分析文檔對應(yīng),因為二者的表示體系不一致。結(jié)構(gòu)化方法的結(jié)果-數(shù)據(jù)流圖(DFD)和結(jié)構(gòu)化設(shè)計結(jié)果-模塊結(jié)構(gòu)圖(MSD)是兩種不同的表示體系,從分析到設(shè)計的“轉(zhuǎn)換”使得設(shè)計文檔與問題域的本來面貌相差甚遠。
2.2.2面向?qū)ο箝_發(fā)方法
面向?qū)ο蟮拈_發(fā)方法采用從特殊到一般的歸納方法,它是對現(xiàn)實世界中的實體進行分類,然后區(qū)分對象及其屬性,整理對象及其組成部分,并劃分成不同的對象類,從而得到現(xiàn)實系統(tǒng)中對象及其關(guān)系,進而分析并掌握系統(tǒng)運行的規(guī)律。OOA的重點是使用面向?qū)ο蟮挠^點解決現(xiàn)實世界模型的建立問題,是利用從問題域中抽象出的類和對象來研究系統(tǒng)實際需求的一種分析方法。
這種方法是以對象作為分析問題、解決問題的核心,對問題空間進行直接映射,使計算機實現(xiàn)的對象與真實世界具有一一對應(yīng)關(guān)系,所以自然符合人類認識規(guī)律,有效地解決了需求分析模型和軟件設(shè)計模型的不匹配現(xiàn)象,它同時也易于適應(yīng)系統(tǒng)的變化處理。面向?qū)ο蟮南到y(tǒng)設(shè)計基本過程一般包括:問題域分析、發(fā)現(xiàn)和定義對象類、識別對象的外部聯(lián)系、建立系統(tǒng)的靜態(tài)模型、以及建立系統(tǒng)的動態(tài)行為模型。
(1)問題域分析:分析應(yīng)用領(lǐng)域的業(yè)務(wù)范圍、業(yè)務(wù)規(guī)則和業(yè)務(wù)處理過程,確定系統(tǒng)的責(zé)任、范圍和邊界,確定系統(tǒng)的需求;
(2)發(fā)現(xiàn)和定義對象類:識別對象和類,確定它們的內(nèi)部特征:屬性和服務(wù)操作;
(3)識別對象的外部聯(lián)系:在發(fā)現(xiàn)和定義對象與類的過程中,需要同時識別對象與對象、類與類之間的各種外部聯(lián)系,包括結(jié)構(gòu)性的靜態(tài)聯(lián)系和行為性的動態(tài)聯(lián)系;
(4)建立系統(tǒng)的靜態(tài)結(jié)構(gòu)模型:分析系統(tǒng)的靜態(tài)結(jié)構(gòu),建立系統(tǒng)的靜態(tài)結(jié)構(gòu)模型,并且把它們用圖形和文字說明表達出來;
(5)建立系統(tǒng)的動態(tài)行為模型:分析系統(tǒng)的行為,建立系統(tǒng)的動態(tài)行為模型,并且把它們用圖形和文字說明表達出來。
面向?qū)ο竽P捅纫酝哪P陀辛撕艽蟮倪M步,但仍有不足。首先面向?qū)ο蠓椒ㄖ袑ο蟮拇_定有時會因客觀邊界模糊而難以確定,這樣很難保證軟件描述的正確性。其次面向?qū)ο蠓椒ㄔ诿枋鰡栴}域方面存在不足。在問題域中,面向?qū)ο蠓椒ò丫唧w或抽象的問題現(xiàn)象直接表述為對象,同時把現(xiàn)象類型直接表述為類。大多數(shù)OOA方法支持多視角模型,即對同一問題域現(xiàn)象,不同的主體可以將它表述為同一對象或類型。但系統(tǒng)的描述在應(yīng)用面向?qū)ο蠓椒ㄟM行建模時常遇到這樣的困惑,描述者力圖通過面向?qū)ο蟮谋硎鰧Υ嬖诘膯栴}現(xiàn)象達成一致,然而結(jié)果得到的對象或類并不適合于某個描述者對對象的獨自表述,即在面向?qū)ο竽P椭,很難把不同描述者對現(xiàn)象的描述正確的統(tǒng)一起來。
2.2.3基于設(shè)計模式的開發(fā)方法
設(shè)計面向?qū)ο筌浖容^困難,而設(shè)計可復(fù)用的面向?qū)ο筌浖透永щy。設(shè)計應(yīng)該對手頭的問題有針對性,同時對將來的問題和需求也要有足夠的通用性。希望避免重復(fù)設(shè)計或盡可能少做重復(fù)設(shè)計。而模式是針對一個反復(fù)出現(xiàn)的問題優(yōu)秀的解決方案,它的方法就是發(fā)現(xiàn)變化、封裝變化〔2‘,。模式本身已經(jīng)充分考慮了變化的情況,并且采用了一種特殊的對待變化的方法,它不是預(yù)先考慮會如何變化,而是考慮哪里可能會變化,然后隔離,所以當(dāng)變化發(fā)生時不會帶來全局性的破壞。
有經(jīng)驗的面向?qū)ο笤O(shè)計者能做出良好的設(shè)計,他們知道:不是解決任何問題都要從頭做起。他們更愿意復(fù)用以前用過的好的解決方案。這些經(jīng)驗是他們成為內(nèi)行的部分原因。實際上,在許多面向?qū)ο蟮南到y(tǒng)中,都存在諸多的類和相互通信的對象的重復(fù)模式。這些模式幫助設(shè)計者將新的設(shè)計建立在以往工作的基礎(chǔ)上,復(fù)用以往成功的設(shè)計方案。一個熟悉這些模式的設(shè)計者不需要再去發(fā)現(xiàn)它們,就能夠立即將它們應(yīng)用于設(shè)計問題中。使得面向?qū)ο笤O(shè)計更靈活、優(yōu)雅,最終復(fù)用性更好。
模式可以在軟件開發(fā)的各個階段被使用,既可以創(chuàng)建一個解決單一問題的模式或者針對某一用例應(yīng)用的模式,也可以同時使用多個模式來解決復(fù)雜的問題。模式的設(shè)計類型可以包括結(jié)構(gòu)化的、行為化的和條件化的解決方案,因此,模式的應(yīng)用范圍是非常廣闊和靈活的。一旦‘懂得了模式,許多設(shè)計決策自然而然就產(chǎn)生了。在人們充分認識到模式的重要性后,逐漸將面向?qū)ο筌浖脑O(shè)計經(jīng)驗作為設(shè)計模式記錄下來。每一個設(shè)計模式系統(tǒng)地命名、解釋和評價了面向?qū)ο笙到y(tǒng)中一個重要的、重復(fù)出現(xiàn)的設(shè)計,能夠被人們有效的利用。
模式和系統(tǒng)架構(gòu)有很大的相似性,都是處理一些抽象概念間的關(guān)系,但是二者還是有很大的不同,模式是領(lǐng)域無關(guān)的,它是解決一些抽象問題的,但是系統(tǒng)架構(gòu)是針對所要解決的實際問題的,是領(lǐng)域相關(guān)的。模式在應(yīng)用時可以
通過下述步驟進行設(shè)計:
(1)對問題領(lǐng)域進行分析、分解,結(jié)合模式的適用條件找到和待解決的問題匹配的模式,對該模式進行定制應(yīng)用到具體系統(tǒng)中來。
(2)和模式結(jié)合在一起構(gòu)建起整個系統(tǒng)架構(gòu)。比如:MVC(Model-View-Controller),它是專門針對交互系統(tǒng)提出的,如果要構(gòu)建一個交互系統(tǒng),那么就可以直接應(yīng)用MVC模式,然后在該模式所搭建的場景啟發(fā)下去發(fā)現(xiàn)Model、View以及Controller,在大的場景的指導(dǎo)下根據(jù)其它的需求(模式)構(gòu)建一些小的場景對系統(tǒng)進行有效的分化。
2.3 設(shè)計模式的優(yōu)點
大多數(shù)設(shè)計模式還能使軟件更容易修改和維護。因為它們都是久經(jīng)考驗的解決方案。它們的結(jié)構(gòu)也都是經(jīng)過長期發(fā)展形成的,比新構(gòu)思的解決方案更善于應(yīng)對變化。而且,這些模式所用代碼往往更易于理解——從而使代碼更易維護。
設(shè)計模式對優(yōu)秀面向?qū)ο笤O(shè)計的策略提出了一些建議,其中包括按接口編程、盡量用聚合、找出變化并封裝。這些策略在大多數(shù)設(shè)計模式中都遵循和使用著。所以用不著學(xué)習(xí)太多設(shè)計模式,只學(xué)幾個就能使你理解這些策略的重要性。這種理解將會成為將策略應(yīng)用于實際設(shè)計問題的一種能力,即使你并不直接使用設(shè)計模式。
設(shè)計模式還有一個好處是,可以在不使用巨型繼承層次結(jié)構(gòu)的情況下,為復(fù)雜問題創(chuàng)建出設(shè)計方案。同樣,即使并不直接使用設(shè)計模式,不使用巨型繼承層次結(jié)構(gòu)也會使設(shè)計質(zhì)量提高。
 

 

【軟件的復(fù)用技術(shù)及開發(fā)方法】相關(guān)文章:

游戲軟件開發(fā)VC++05-13

大專軟件技術(shù)專業(yè)開題報告怎么寫(軟件技術(shù)開題報告范文)07-19

軟件開發(fā)風(fēng)險及控制措施(通用6篇)05-12

淺談軟件開發(fā)項目的成本控制論文04-18

卓越計劃下軟件技術(shù)專業(yè)教改08-05

文化景觀方法論引導(dǎo)下的古城旅游開發(fā)思路論文06-08

我國高新技術(shù)開發(fā)區(qū)發(fā)展?fàn)顩r評估淺議05-30

積累資料的方法06-14

方法、思路與問題06-01

我國信息傳輸、軟件和信息技術(shù)服務(wù)行業(yè)盈利驅(qū)動因素分析05-24