第6章計算機專業(yè)英語孫建忠_第1頁
第6章計算機專業(yè)英語孫建忠_第2頁
第6章計算機專業(yè)英語孫建忠_第3頁
第6章計算機專業(yè)英語孫建忠_第4頁
第6章計算機專業(yè)英語孫建忠_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

計算機專業(yè)英語6-1ComputerEnglishChapter6SoftwareEngineering計算機專業(yè)英語6-2

掌握軟件的生命周期的基本術語與知識;了解軟件工程的發(fā)展趨勢;了解軟件設計方法;了解軟件安全的有關知識;掌握復雜定語(從句)的翻譯技巧。Requirements:計算機專業(yè)英語6-3NewWords&Expressions

manufacturedproducts工業(yè)產品 lieun.場所softwarelifecycle軟件生命周期 versusprep.與...相對nondescriptiveadj.非描述性的 communityn.團體,社會authorizedadj.權威認可的,經授權的 leveragen.杠桿作用genericadj.一般的,普通的 potentialadj.潛在的,可能的intermsofadv.根據,按照,用...的話 terminologyn.術語學personneln.人員,職員 inventoryn.詳細目錄,財產清冊adheretov.粘附,粘著,堅持,追隨 passwordn.密碼,口令specificationn.詳述,說明書,規(guī)范 encryptv.加密,將...譯成密碼preprocessvt.預加工,預處理 routinen.程序modularadj.模塊的,有標準組件的 well-established充分證實的decompositionn.分解 breakdownn.分解,故障pertainingto與...有關的 maintenancen.維護,保持imperativeadj.強制性的,命令式 paradigmn.范例,模式approachvt.接近,解決;n.近似,途徑 conduciveadj.有助于...的evasiveadj.逃避的;回避的;推托的 frameworkn.構架,框架,結構計算機專業(yè)英語6-4NewWords&Expressions

taketheformof采取...形式 entityn.實體;統(tǒng)一體modulardesign標準設計,模塊化設計 object-oriented面向對象的 stubn.樹樁,樁模塊 givewayto讓路,讓步trial-and-errorn.試錯,反復試驗 malfunctionn.故障,出錯 waterfallmodel瀑布模型 analogyn.類似,類推afteralladv.畢竟 starkadv.完全地trial-and-creative試驗并創(chuàng)造的 nonstructure非結構性intuitionn.直覺,直覺的知識 contradictionn.反駁,矛盾incrementalmodel增量式模型 updatev.修正,更新;n.更新stepwiseadj.樓梯式的,逐步的 prototypen.原型evolutionaryprototyping演化式原型 infavorofadv.贊同,有利于throwawayprototyping拋棄原型 ironout消除;解決困難等documentationn.文件 debuggingn.調試spreadsheetn.電子制表軟件,電子數據表AbbreviationsCASE(computer-aidedsoftwareengineering)計算機輔助軟件工程GUI(GraphicalUserInterfaces)圖形用戶界面計算機專業(yè)英語6-56.1TheSoftwareLifeCycle6.1.1TheCycleasaWholeFigure6-1ThesoftwarelifecycleThemostfundamentalconceptinsoftwareengineeringisthesoftwarelifecycle.軟件生命周期是軟件工程中最基本的概念。計算機專業(yè)英語6-66.1.1TheCycleasaWholeThesoftwarelifecycleisshowninFigure6-1.Thisfigurerepresentsthefactthatoncesoftwareisdeveloped,itentersacycleofbeingusedandmodifiedthatcontinuesfortherestofthesoftware'slife.Suchapatterniscommonformanymanufacturedproductsaswell.Thedifferenceisthat,inthecaseofotherproducts,themodificationphaseismoreaccuratelycalledarepairormaintenancephasebecauseotherproductstendtomovefrombeingusedtobeingmodifiedastheirpartsbecomeworn.在圖6-1中展示了軟件的生命周期。這個圖說明了一個事實:一旦軟件開發(fā)完成,它就進入了使用和修改的循環(huán),并且這個循環(huán)將在軟件生命期的剩余時間中不斷進行。這樣的模式對機器制造的產品而言也是普遍適用的。不同之處在于,對于其他產品,軟件工程中的修改階段要被更精確地稱作修理或者維護階段,因為其他產品由于部件的磨損會有從使用到修改的過程。計算機專業(yè)英語6-76.1.1TheCycleasaWholeSoftware,ontheotherhand,doesnotwearout.Instead,softwaremovesintothemodificationphasebecauseerrorsarediscovered,becausechangesinthesoftware'sapplicationoccurthatrequirecorrespondingchangesinthesoftware,orbecausechangesmadeduringapreviousmodificationarefoundtoinduceproblemselsewhereinthesoftware.Forexample,changesintaxlawsmayrequiremodificationstopayrollprogramsthatcalculatewithholdingtaxes,andalltoooftenthesechangesmayhaveadverseeffectsinotherareasoftheprogramthatmaynotbediscovereduntilsometimelater.當然,軟件不存在磨損的問題。但是,軟件進入修改階段或者是因為錯誤被發(fā)現,或者是因為要在軟件的應用程序中進行修改從而修改了軟件,或者是因為先前的改變又引起了軟件其他地方出現了新的問題。例如,稅務法案的改變導致對計算扣稅的工資程序進行修改,而太頻繁的修改則會在軟件的其他地方引起反面的作用,而這些是不會被立即發(fā)現的。計算機專業(yè)英語6-86.1.1TheCycleasaWholeRegardlessofwhysoftwareentersthemodificationphase,theprocessrequiresthataperson(oftennottheoriginalauthor)studytheunderlyingprogramanditsdocumentationuntiltheprogram,oratleastthepertinentpartoftheprogram,isunderstood.Otherwise,anymodificationcouldintroducemoreproblemsthanitsolves.Acquiringthisunderstandingcanbeadifficulttaskevenwhenthesoftwareiswell-designedanddocumented.Infact,itisoftenwithinthisphasethatapieceofsoftwareisfinallydiscardedunderthepretense(toooftentrue)thatitiseasiertodevelopanewsystemfromscratchthantomodifytheexistingpackagesuccessfully不管因為什么原因軟件進入了修改階段,這個過程需要人們(通常不是原始的作者)研究程序及其文檔,直到程序或者至少是相關部分的程序能夠被理解。否則,任何的修改將導致比它所解決問題還要更多的問題出現。即使軟件有優(yōu)秀的設計和齊備的文檔,理解也是一個很困難的工作。事實上,常常是在這個階段,一個有用的軟件片段最終就被放棄了(常常是這樣),而開發(fā)一個新的系統(tǒng)比成功地修改現有軟件更容易。計算機專業(yè)英語6-96.1.1TheCycleasaWholeExperiencehasshownthatalittleeffortduringthedevelopmentofsoftwarecanmakeatremendousdifferencewhenmodificationsinthesoftwarearerequired.經驗告訴我們,軟件開發(fā)過程中的一丁點付出,會在軟件需要修改的時候帶來巨大的不同。

Forexample,inourdiscussionofdatadescriptionstatementswesawhowthenameAirportAltmightbeusedinlieuofthenondescriptivevalue645inaprogramandreasonedthatifachangebecamenecessary,itwouldbeeasiertochangethevalueassociatedwiththenameinsteadoffindingandchangingnumerousoccurrencesofthevalue645.

例如,在討論數據描述語句中,我們看到名字AirportAlt是如何用于程序中的非描述性值645的情形,并且推導出,如果有一個必要的修改,修改與值有關的名字要比尋找并修改出現的每一個645要簡單的多。計算機專業(yè)英語6-10計算機專業(yè)英語6-11Inturn,mostoftheresearchinsoftwareengineeringfocusesonthedevelopmentstageofthesoftwarelifecycle,withthegoalbeingtotakeadvantageofthiseffort-versus-benefitleverage.反過來,大多數軟件工程的研究都集中于軟件生命周期的開發(fā)階段,它們的目標是要利用這個付出與收益的杠桿作用。計算機專業(yè)英語6-126.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseThestageswithinthedevelopmentphaseofthesoftwarelifecycleareanalysis,design,implementation,andtesting(Figure6-2).軟件生命周期的開發(fā)階段包括分析、設計、實現與測試等步驟(如圖6-2所示)。計算機專業(yè)英語6-136.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseAnalysisThedevelopmentphaseofthesoftwarelifecyclebeginswithanalysis--amajorgoalbeingtoidentifytheneedsoftheuseroftheproposedsystem.Ifthesystemistobeagenericproductsoldinacompetitivemarket,thisanalysiswouldinvolveabroad-basedinvestigationtoidentifytheneedsofpotentialcustomers.If,however,thesystemistobedesignedforaspecificuser,thentheprocesswouldbeamorenarrowinvestigation.分析軟件生命周期的開發(fā)階段以分析開始——主要目標是確定用戶對所提出系統(tǒng)的需求。如果系統(tǒng)是一個在競爭的市場上銷售的通用產品,這個分析將會包括一個廣泛的調查來發(fā)現潛在用戶的需要。但是,如果系統(tǒng)是為特殊用戶設計的,那么這個過程就是一個更專業(yè)的調查。計算機專業(yè)英語6-146.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseAstheneedsofthepotentialuserareidentified,theyarecompiledtoformasetofrequirementsthatthenewsystemmustsatisfy.Theserequirementsarestatedintermsoftheapplicationratherthaninthetechnicalterminologyofthedataprocessingcommunity.Onerequirementmightbethataccesstodatamustberestrictedtoauthorizedpersonnel.Anothermightbethatthedatamustreflectthecurrentstateoftheinventoryasoftheendofthelastbusinessdayorthatthearrangementofthedataasdisplayedonthecomputerscreenmustadheretotheformatofthepaperformscurrentlyinuse.當潛在用戶的要求被確定之后,要將這些要求匯編成新系統(tǒng)必須滿足的需求。這些需求是從應用的角度來表述,而不是用數據處理界的技術術語來表達。一種需求可能是對數據的存取必須限制在有權限的人員,另一種可能是當一個工作日結束時,數據必須反映目前的清單狀態(tài),或者可能是在計算機屏幕上的數據必須按照用戶目前使用的格式來顯示。計算機專業(yè)英語6-156.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseAfterthesystemrequirementsareidentified,theyareconvertedintomoretechnicalsystemspecifications.Forexample,therequirementthatdataberestrictedtoauthorizedpersonnelmightbecomethespecificationthatthesystemwillnotresponduntilanapprovedeight-digitpasswordhasbeentypedatthekeyboardorthatdatawillbedisplayedinencryptedformunlesspreprocessedbyaroutineknownonlytoauthorizedpersonnel.系統(tǒng)的需求被確定以后,它們就轉化為更具技術性的說明書。例如,關于數據須限制在某些有權限的人的需求,就可能轉化為以下規(guī)范——直到從鍵盤輸入一個被認可的8位密碼,系統(tǒng)才開始響應,或者除非經過只有授權的人才知道的例程預處理,否則數據將以加密的形式顯示在屏幕上。計算機專業(yè)英語6-166.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseDesignWhereasanalysisconcentratesonwhattheproposedsystemshoulddo,designconcentratesonhowthesystemwillaccomplishthosegoals.Itisherethatthestructureofthesoftwaresystemisestablished.

設計

分析關注這個系統(tǒng)應該做什么,而設計關注這個系統(tǒng)應該怎樣來實現目標。正是通過設計建立了軟件系統(tǒng)的結構。計算機專業(yè)英語6-176.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseItisawell-establishedprinciplethatthebeststructureforalargesoftwaresystemisamodularone.Indeed,itisbymeansofthismodulardecompositionthattheimplementationoflargesystemsbecomesapossibility.Withoutsuchabreakdown,thetechnicaldetailsrequiredintheimplementationofalargesystemwouldexceedahuman'scomprehensivepowers.大型軟件系統(tǒng)最好的結構是模塊化系統(tǒng),這是一條被充分證實的原則。確實,正是借助模塊化的分解方法,大型系統(tǒng)的實現才成為可能。沒有這樣的分解,在大型系統(tǒng)實現過程中所需要的技術細節(jié)可能會超過一個人的理解能力。計算機專業(yè)英語6-186.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseWithamodulardesign,however,onlythedetailspertainingtothemoduleunderconsiderationneedbemastered.Thissamemodulardesignisalsoconducivetofuturemaintenancebecauseitallowschangestobemadeonamodularbasis.(Ifachangeistobemadetothewayeachemployee'shealthbenefitsarecalculated,thenonlymodulesdealingwithhealthbenefitsneedbeconsidered.)然而,有了這種模塊化設計,僅僅需要熟悉與在考慮中的模塊相關的細節(jié)。同樣,模塊化設計對未來的維護是有益的,因為它允許對基本的模塊進行修改。(如果要對每個雇員的醫(yī)療福利計算方法進行修改,那么僅僅需要考慮處理醫(yī)療福利模塊。)計算機專業(yè)英語6-196.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseThereare,however,distinctionsregardingtheconceptofamodule.Ifoneapproachesthedesigntaskintermsofthetraditionalimperativeparadigm,modulesconsistofproceduresandthedevelopmentofamodulardesigntakestheformofidentifyingthevarioustasksthattheproposedsystemmustperform.Incontrast,ifoneapproachesthedesigntaskfromtheobject-orientedperspective,modulesareseenasobjectsandthedesignprocessbecomesthatofidentifyingtheentities(objects)intheproposedsystemaswellashowtheseentitiesshouldbehave.但是,有關模塊的概念也是有差別的。如果一個人以傳統(tǒng)的命令式語言范式的方法來進行設計工作,模塊由不同程序組成,而模塊化設計則以確定有待實現系統(tǒng)的不同任務的方式進行。相反地,如果一個人從面向對象的角度來完成設計工作,模塊就被看成了對象,而設計過程變成了確定有待實現系統(tǒng)中的實體(對象)以及確定這些實體是如何工作的。計算機專業(yè)英語6-206.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseImplementationImplementationinvolvestheactualwritingofprograms,creationofdatafiles,anddevelopmentofdatabases.

實現實現包括程序的實際編寫、數據文件的建立以及數據庫的開發(fā)等過程。計算機專業(yè)英語6-216.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseTesting

Testingiscloselyassociatedwithimplementation,becauseeachmoduleofthesystemisnormallytestedasitisimplemented.Indeed,eachmoduleinawell-designedsystemcanbetestedindependentlyoftheothermodulesbyusingsimplifiedversionsoftheothermodules,calledstubs,tosimulatetheinteractionbetweenthetargetmoduleandtherestofthesystem.Ofcourse,thistestingofcomponentsgiveswaytooverallsystemtestingasthevariousmodulesarecompletedandcombined.測試測試與實現緊密聯系,因為系統(tǒng)中的每一個模塊都要在實現的過程中進行正常測試。確實,通過使用其他模塊的簡化版本——有時稱為樁模塊,來模擬目標模塊和系統(tǒng)其他部分的交互,從而使設計良好的系統(tǒng)中的每一個模塊都可以被獨立地測試。當然,在各種模塊都開發(fā)完成并且整合在一起之后,這個組件的測試將讓路給整個系統(tǒng)的測試。計算機專業(yè)英語6-226.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseUnfortunately,thetestinganddebuggingofasystemisextremelydifficulttoperformsuccessfully.Experiencehasshownthatlargesoftwaresystemscancontainnumerouserrors,evenaftersignificanttesting.Manyoftheseerrorsmaygoundetectedforthelifeofthesystem,butothersmaycausemajormalfunctions.Theeliminationofsucherrorsisoneofthegoalsofsoftwareengineering.Thefactthattheyarestillprevalentmeansthatalotofresearchremainstobedone.不幸的是,成功地進行系統(tǒng)的測試和調試是極其困難的。經驗表明,大型的軟件系統(tǒng)可能包含眾多的錯誤,甚至是經過關鍵測試之后。許多這樣的錯誤在軟件的生命期中一直潛伏著,但是也有一些會導致關鍵性的錯誤。減少這樣的錯誤是軟件工程的一個目標。這些錯誤的普遍存在說明了在這方面還有許多的研究工作要做。計算機專業(yè)英語6-236.1.1TheCycleasaWholeRecentTrendsEarlyapproachestosoftwareengineeringinsistedonperforminganalysis,design,implementation,andtestinginastrictlysequentialmanner.Thefeelingwasthattoomuchwasatriskduringthedevelopmentofalargesoftwaresystemtoallowfortrial-and-errortechniques.軟件工程的早期方法堅持要嚴格地遵守分析、設計、實現以及測試的順序。在大型軟件系統(tǒng)的開發(fā)過程中,感覺到采用試錯法是在冒著很大的風險進行開發(fā)的。計算機專業(yè)英語6-246.1.1TheCycleasaWholeRecentTrendsAsaresult,softwareengineersinsistedthattheentireanalysisofthesystembecompletedbeforebeginningthedesignand,likewise,thatthedesignbecompletedbeforebeginningimplementation.Theresultwasadevelopmentprocessnowreferredtoasthewaterfallmodel,ananalogytothefactthatthedevelopmentprocesswasallowedtoflowinonlyonedirection.因此,軟件工程師堅持應當在設計之前進行完整的系統(tǒng)分析,同樣,設計應該在實現之前完成。這就形成了一個現在稱為瀑布模型的開發(fā)過程,這是對開發(fā)過程只允許以一個方向進行的事實的模擬。計算機專業(yè)英語6-256.1.1TheCycleasaWholeRecentTrendsYouwillnoticeasimilaritybetweenthefourproblem-solvingphasesidentifiedbyPolyaandtheanalysis,design,implementation,andtestingphasesofsoftwaredevelopment.Afterall,todevelopalargesoftwaresystemistosolveaproblem.你將注意到由Polya提出的解決問題的4個階段與軟件開發(fā)的分析、設計、實現和測試階段的類似性。畢竟,開發(fā)一個大型的軟件系統(tǒng)是去解決一個問題。計算機專業(yè)英語6-266.1.1TheCycleasaWholeRecentTrendsOntheotherhand,thetraditionalwaterfallapproachtosoftwaredevelopmentisinstarkcontrasttothe"free-wheeling,"trial-and-creativeproblemsolving.Whereasthewaterfallapproachseekstoestablishahighlystructuredenvironmentinwhichdevelopmentprogressesinasequentialfashion,creativeproblemsolvingseeksanonstructuredenvironmentinwhichonecandroppreviousplansofattacktopursuesparksofintuitionwithoutexplainingwhy.

另一方面,傳統(tǒng)軟件開發(fā)的瀑布模型法與隨心所欲的反復試驗并創(chuàng)造性地解決問題的方法是完全相反的。瀑布模型法尋求建立一個高度結構化的環(huán)境,希望在這個環(huán)境中的開發(fā)可以順利地進行,而創(chuàng)造性的問題解決要尋找一個非結構化的環(huán)境,希望在這個環(huán)境中可以拋棄先前的計劃,來追逐思維的火花,而不用解釋為什么。計算機專業(yè)英語6-276.1.1TheCycleasaWholeRecentTrendsInrecentyears,softwareengineeringtechniqueshavebeguntoreflectthisunderlyingcontradictionasillustratedbytheemergenceoftheincrementalmodelforsoftwaredevelopment.Followingthismodel,thedesiredsoftwaresystemisconstructedinincrements--thefirstbeingasimplifiedversionofthefinalproductwithlimitedfunctionality.近年來,軟件工程技術已經開始反映這種本質的對立了,這可以由軟件開發(fā)中出現的增量式模型來說明。根據這個模型,所需的軟件系統(tǒng)是通過增量模式來構造的——首先開發(fā)最終產品的簡化版本,它只有有限的功能。計算機專業(yè)英語6-286.1.1TheCycleasaWholeRecentTrendsOncethisversionhasbeentestedandperhapsevaluatedbythefutureuser,morefeaturesareaddedandtestedinanincrementalmanneruntilthesystemiscomplete.Forexample,ifthesystembeingdevelopedisastudentrecordssystemforauniversityregister,thefirstincrementmayincorporateonlytheabilitytoviewstudentrecords.Oncethatversionisoperational,additionalfeatures,suchastheabilitytoaddandupdaterecords,wouldbeaddedinastepwisemanner.一旦這個版本經過測試、并且也許經過了未來用戶的評估,更多的特性就可以添加進去并且進行測試,這樣就以一種增量的方式進行,直到完成系統(tǒng)。例如,如果正在開發(fā)的系統(tǒng)是為大學登記員設計的學生記錄系統(tǒng),第一次迭代版本僅僅包括瀏覽學生記錄的功能。一旦這個版本可以運行了,其他特性,諸如增加和更新記錄的功能,就可以分階段地添加到系統(tǒng)中了。計算機專業(yè)英語6-296.1.1TheCycleasaWholeRecentTrendsTheincrementalmodelisevidenceofthetrendinsoftwaredevelopmenttowardprototypinginwhichincompleteversionsoftheproposedsystem,calledprototypes,arebuiltandevaluated.Inthecaseoftheincrementalmodeltheseprototypesevolveintothecomplete,finalsystem---aprocessknownasevolutionaryprototyping.Inothercases,theprototypesmaybediscardedinfavorofafreshimplementationofthefinaldesign.Thisapproachisknownasthrowawayprototyping.這種增量式模型是軟件開發(fā)向原型法發(fā)展趨勢的一個證據——在這種方法中,建立并測試的是不完善系統(tǒng),它也被稱為原型,被評估和測試。在增量式模型中,這些原型進化為一個完整的最終系統(tǒng)——這個過程稱為演化式原型。對于其他情況,原型的拋棄會有利于新的最終設計的實現,這種方法就是拋棄原型。計算機專業(yè)英語6-306.1.1TheCycleasaWholeRecentTrendsAnexamplethatnormallyfallswithinthisthrowawaycategoryisrapidprototypinginwhichasimpleexampleoftheproposedsystemisquicklyconstructedintheearlystagesofdevelopment.Suchaprototypemayconsistofonlyafewscreenimagesthatgiveanindicationofhowthesystemwillinteractwiththeuserandwhatcapabilitiesitwillhave.一個拋棄原型的例子就是快速原型法,在這個方法中,系統(tǒng)的簡單版本在開發(fā)的早期就被很快搭建起來。這樣的原型也許僅僅包含少量界面圖片來展示系統(tǒng)怎樣與用戶交互以及它將具有的功能。計算機專業(yè)英語6-316.1.1TheCycleasaWholeRecentTrendsThegoalisnottoproduceaworkingversionoftheproductbuttoobtainademonstrationtoolthatcanbeusedtoclarifycommunicationbetweenthepartiesinvolved.Forexample,rapidprototypeshaveprovedadvantageousinironingoutsystemrequirementsduringtheanalysisstageorasaidsduringsalespresentationstopotentialclients.我們的目標不是制作產品的有效版本,而是獲得一個示范工具,以便闡明有關方面之間的溝通。例如,在分析階段解決系統(tǒng)的需求問題,或在銷售階段作為向潛在客戶演示的輔助,快速原型具有很大的優(yōu)勢

計算機專業(yè)英語6-326.1.1TheCycleasaWholeRecentTrendsAnotherdevelopmentinsoftwareengineeringhasbeentheapplicationofcomputertechnologytothesoftwaredevelopmentprocessitself,resultinginwhatiscalledcomputer-aidedsoftwareengineering(CASE).軟件工程領域中另一個發(fā)展是計算機技術在軟件開發(fā)過程本身的應用,這導致了稱為計算機輔助軟件工程(CASE)的出現。計算機專業(yè)英語6-336.1.1TheCycleasaWholeRecentTrendsThesecomputerizedsystemsareknownasCASEtoolsandincludeprojectplanningtools(thatassistincostestimation,projectscheduling,andpersonnelallocation),projectmanagementtools(thatassistinmonitoringtheprogressofthedevelopmentproject),documentationtools(thatartistinwritingandorganizingdocumentation),prototypingandsimulationtools(thatassistinthedevelopmentofprototypes),interfacedesigntools(thatassistinthedevelopmentofGUIs),andprogrammingtools(thatassistinwritinganddebuggingprograms).這些計算機化系統(tǒng)就是知名的CASE工具,且包括項目計劃工具(幫助成本估計、項目調度,以及人力資源分配)、項目管理工具(幫助管理開發(fā)項目的進程)、文檔工具(幫助撰寫和組織文檔)、界面設計工具(幫助開發(fā)GUI)以及程序設計工具(幫助編寫和調試程序)。計算機專業(yè)英語6-346.1.1TheCycleasaWholeRecentTrendsSomeofthesetoolsarelittlemorethanthewordprocessors,spreadsheetsystems,ande-mailcommunicationsystemsusedinotherapplications.However,othersarequitesophisticatedpackagesdesignedprimarilyforthesoftwareengineeringenvironment.Forexample,someCASEtoolsincludecodegeneratorsthat,whengivenspecificationsforapartofasystem,producehigh-levellanguageprogramsthatimplementthatpartofthesystem.這些工具也許僅僅就是在其他的應用程序中的文字處理軟件,或者是表格處理軟件,或者是電子郵件通訊系統(tǒng)。一些則是相當復雜的軟件,它們主要是為了軟件工程環(huán)境來設計的。例如,一些CASE工具包括了代碼生成器,當給出一個系統(tǒng)局部的說明書時,它可用來生成實現這個系統(tǒng)局部的高級語言程序。計算機專業(yè)英語6-356.2DesignMethodologies

Thedevelopmentofmethodologiesfordesigningsoftwaresystemsisamajorquestwithinsoftwareengineering.Inthissectionwediscussavarietyofthetechniquesthathavebeendevelopedaswellasdirectionsofcurrentresearch.設計軟件系統(tǒng)的方法學是軟件工程領域主要探索的方向之一。本節(jié)我們將討論一些已經形成的方法以及當前的研究方向。計算機專業(yè)英語6-366.2.1Top-DownVersusBottom-Up

Perhapsthemostwell-knownstrategyassociatedwithsystemdesignisthetop-downmethodology.Thepointofthismethodologyisthatoneshouldnottrytosolveacomplexprobleminasinglestep.Instead,one'sfirststopshouldbetobreaktheproblemintosmaller,moremanageablesubproblems.Then,oneshouldproceedbybreakingthesesubproblemsintostillsmallerproblems.Inthismanner,acomplexproblembecomesacollectionofsimplerproblemswhosesolutionscollectivelysolvetheoriginalproblem.也許最著名的系統(tǒng)設計策略就是自頂向下的方法學了。這個方法學的要點就是人們不要試圖一下子就將一個復雜問題解決,而是應當將問題分解成更小的、可以管理的子問題。然后,將這些子問題分解成更小的問題。以這種方式,一個復雜的問題變成了相對小的問題的集合,而所有小問題的解決就是原問題的解決。

計算機專業(yè)英語6-376.2.1Top-DownVersusBottom-Up

Theresultoftopdowndesigntendstobeahierarchicalsystemofrefinementsthatoftencanbetranslateddirectlyintoamodularstructurethatiscompatiblewiththeimperativeprogrammingparadigm.Thesolutionstothesmallestproblemsinthehierarchybecomeproceduralmodulesthatperformsimpletasksandareusedasabstracttoolsbymoresuperiormodulestosolvethemorecomplexproblemsinthesystem.

自頂向下設計的結果是一個逐步求精的層次系統(tǒng),這個結構通??梢员恢苯臃g成與命令式語言兼容的模塊結構。對層次結構中最小問題的解決變成了執(zhí)行簡單任務的程序模塊,這個模塊被較高層用作抽象工具來解決系統(tǒng)中更為復雜的問題。計算機專業(yè)英語6-386.2.1Top-DownVersusBottom-Up

Incontrasttothetop-downdesignmethodologyisthebottom-upapproach,inwhichonestartsthedesignofasystembyidentifyingindividualtaskswithinthesystemandthenconsidershowsolutionstothesetaskscanbeusedasabstracttoolsinthesolutiontomorecomplexproblems.Formanyyears,thisapproachwasconsideredinferiortothetopdowndesignparadigm.相對于自頂向下的設計方法學,自底向上的方法確定系統(tǒng)中的每一個具體任務來開始系統(tǒng)的設計。然后,它考慮如何將這些任務的解決用做解決更復雜問題的抽象工具。多年來,這個方法被認為不如自頂向下的設計范式。計算機專業(yè)英語6-396.2.1Top-DownVersusBottom-Up

Today,however,thebottom-upmethodologyhasgainedsupport.Onereasonforthisshiftisthatthetop-downmethodologyseeksasolutioninwhichadominantmoduleusessubmodules,eachofwhichreliesonsubsubmodules,andsoon.但是,今天,自底向上的方法學又獲得了支持。這種轉變的一個原因就是自頂向下的方法尋求一個支配模塊使用子???,而每一個支配模塊依賴于子模塊的解決,等等。計算機專業(yè)英語6-406.2.1Top-DownVersusBottom-Up

However,thebestdesignformanysystemsisnotofahierarchicalnature.Indeed,adesignconsistingoftwoormoremodulesinteractingasequals,asexemplifiedbytheclient-servermodelaswellasgeneralparallelprocessingapplications,maybeabettersolutionthanadesignconsistingofasuperiormodulethatreliesonsubordinatestoperformitstask.但是,對于許多系統(tǒng)來說,最好的設計不是一個層次的結構。確實,一個設計包括兩個或更多模塊——它們平等交互,這也是被包含通用并行處理應用程序的客戶/服務器模型或者系統(tǒng)所例證了的,比起依賴于從屬模塊來執(zhí)行任務的較高級模塊構成的設計,它也許是一個更好的解決方案。計算機專業(yè)英語6-416.2.1Top-DownVersusBottom-Up

Anotherreasonforincreasedinterestinbottom-updesignisthatitismoreconsistentwiththegoalofbuildingcomplexsoftwaresystemsfrompreconstructed,off-the-shelfcomponents--anapproachthatisacurrenttrendinsoft-wareengineering.

對自底向上設計產生更多興趣的另一個原因,就是它與從預先構建的現成組件中構建復雜軟件系統(tǒng)的目標更加一致——這體現了軟件工程當前的趨勢。計算機專業(yè)英語6-426.2.2DesignPatterns

Inanefforttofindwaysbywhichsoftwarecanbeconstructedfromoff-the-shelfcomponents,softwareengineershaveturnedtothefieldofarchitectureforinspiration.OfparticularinterestisthebookAPatternLanguagebyChristopherAlexanderetal.,whichdescribesasetofpatternsfordesigningcommunities.每種模式都包括了一個問題描述以及建議性的解決方案。這些問題是很普遍的,而這個建議性的解決方案也是一般性的——旨在強調他們闡述的是問題的一般的本質而不是僅僅為一個特殊的例子提出一個解決方案。計算機專業(yè)英語6-436.2.2DesignPatterns

Eachpatternconsistsofthestatementofaproblemfollowedbyaproposedsolution.Theproblemsareintendedtobeuniversal,andtheproposedsolutionsaregenericinthesensethattheyaddresstheuniversalnatureoftheproblemratherthanproposingasolutionforaparticularcase.每種模式都包括了一個問題描述以及建議性的解決方案。這些問題是很普遍的,而這個建議性的解決方案也是一般性的——旨在強調他們闡述的是問題的一般的本質而不是僅僅為一個特殊的例子提出一個解決方案。計算機專業(yè)英語6-446.2.2DesignPatterns

Forexample,onepattern,calledQuietBacks,addressestheneedtoescapethecommotionofabusinesscenterforshortperiodsofrefreshment.Theproposedsolutionistodesign"quietbacks"intobusinessdistricts.Insomecases,thedistrictcouldbedesignedaroundamainstreettowhichallbuildingsface--thus,providingforquietsidestreetsbehindthebuildings.Inothercases,"quietbacks"canbeobtainedbymeansofparks,rivers,orcathedrals.

例如,一個模式,叫做“安靜的后面”,闡述了躲避商業(yè)中心的喧囂而尋求短暫的精力恢復的需求。其建議性的解決方案就是在商業(yè)區(qū)中設計一個“安靜的后面”。在某些情況下,這個商業(yè)區(qū)要設計在所有建筑都要朝向的主要街道周圍——因此可以將安靜的輔路鋪在建筑的后面。在其他的情況下,“安靜的后面”可以采用公園、河流或者是教堂的形式。計算機專業(yè)英語6-456.2.2DesignPatterns

TheimportantpointforourdiscussionisthatAlexander'swokattemptedtoidentifyuniversalproblemsandprovidetemplatesforsolvingthem.Today,manysoftwareengineersareattemptingtoapplythissameapproachtothedesignoflargesoftwaresystems.Inparticular,researchersareapplyingdesignpatternsasameansofprovidinggenericbuildingblockswithwhichsoftwaresystemscanbeconstructed.我們所討論的重點就是Alexander在著作中試圖確定的一般性問題并且提供解決它們的模板。今天,許多軟件工程師也試圖應用同樣的方法來設計大型的軟件系統(tǒng)。特別地,研究人員正在應用設計模式作為提供軟件構建所需通用單元的方法。計算機專業(yè)英語6-466.2.2DesignPatterns

Anexampleofsuchapatternisthepublisher-subscriberpattern,consistingofamodule(thepublisher)thatmustsendcopiesofits“publications”toothermodules(thesubscribers).Asaspecificexample,consideracollectionofdatathatisbeingdisplayedonacomputerscreeninmorethanoneformat--perhapsasapiegraphaswellasabargraph--simultaneously.Inthissetting,anychangeinthedatashouldbereflectedinbothgraphs.Thusthesoftwaremodulesinchargeofdrawingthegraphsshouldbenotifiedwhenchangesinthedataoccur.Inthiscase,then,thesoftwaremodulemaintainingthedataplaystheroleofthepublisherthatmustsendupdatemessagestothesubscribers,whicharethemoduleschargedwithdrawingthegraphs.這種模式的一個例子就是出版商和訂戶的模式:一個模塊(出版商)將其出版物發(fā)送給其他模塊(訂戶)。作為一個特殊的例子,考慮在計算機屏幕上同時顯示多種格式的數據集,如餅圖和條形圖。這樣,任何對數據的修改都將會被反映在兩張圖上。因此,當數據發(fā)生更改的時候,這個負責畫圖的軟件模塊將會被告知。在這種情況下,維護數據的軟件模塊就會扮演出版商的角色——它必須要給訂戶發(fā)送更新的消息,而這些訂戶也是模塊,它們負責畫圖。計算機專業(yè)英語6-476.2.2DesignPatterns

Anotherexampleofsoftwaredesignpatternisthecontainer-componentpattern.Itcapturesthegenericconceptofacontainerthatcontainscomponentsthatarethemselvescontainers.Suchapatternisexemplifiedbythedirectoriesorfoldersusedbyanoperatingsystem'sfilemanager.Eachofthesedirectoriestypicallycontainsotherdirectories,whichmaycontainstillotherdirectories.Inshort,thecontainer-componentpatternismeanttocapturetherecursiveconceptofcontainersthatcontaincontainers.軟件設計模式的另一個例子是容器組件模式。它闡述了容器包括一些組件,而組件本身又是容器的一般性概念。這種模式的例子就是操作系統(tǒng)的文件管理器使用的目錄或者文件夾。每個這樣的目錄都包括了其他目錄,而這個被包含了的目錄可能又包含了其他的目錄。簡而言之,容器組件模式可以描述容器包含容器的遞歸概念。計算機專業(yè)英語6-486.2.2DesignPatterns

Onceapatternsuchaspublisher-subscriberorcontainer-componenthasbeenidentified,softwareengineersproposethedevelopmentofskeletalprogramunits,calledframeworks,thatimplementthepertinentfeaturesofthepattern'ssolutionwhileleavingfeaturesspecifictoparticularapplicationsasslotstobefilledinlater.Toaccompanyframeworks,softwareengineersproposedocumentationthatdescribeshowtheframeworkcanbefilledintoobtainacompleteimplementationoftheunderlyingpatterninaparticularsetting.Suchdocumentationiscalledarecipe.Collectionsofframeworksalongwiththeirrecipesarefondlyknownascookbooks.一旦像出版商與訂戶或者是容器和組件這樣的模式被確定,軟件工程師就會計劃開發(fā)一組程序單元作為骨架,這稱為框架,它實現模式方法所要解決的主要特征,而將特殊應用程序的特性作為缺口,留待以后填入。為了補充框架,軟件工程師提出了如何填充框架的描述文檔。這種文擋被稱為處方,與處方在一起的框架集被昵稱為菜譜。計算機專業(yè)英語6-496.2.2DesignPatterns

Researchershopethatbymeansofcookbooks,softwareengineerswillfinallybeabletoconstructlarge,complexsoftwaresystemsfromoff-the-shelfcomponents--thecomponentsbeingframeworks.Earlyresultshaveindicatedthatsuchanapproachcansignificantlyreducetheamountofprogrammingrequiredinthedevelopmentofanewsystem.

研究人員希望:借助菜譜,軟件工程師最終可以從現成的組件——組件就是框架——構建大型的復雜軟件系統(tǒng)。早期的結果表明,這種方法可以大大

溫馨提示

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

評論

0/150

提交評論