版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
ComputerEnglishChapter6SoftwareEngineering6-1計算機專業(yè)英語掌握軟件的生命周期的基本術(shù)語與知識;了解軟件工程的發(fā)展趨勢;了解軟件設(shè)計方法;了解軟件安全的有關(guān)知識;掌握復雜定語(從句)的翻譯技巧。Requirements:2NewWords&Expressions
manufacturedproducts工業(yè)產(chǎn)品 lieun.場所softwarelifecycle軟件生命周期 versusprep.與...相對nondescriptiveadj.非描述性的 communityn.團體,社會authorizedadj.權(quán)威認可的,經(jīng)授權(quán)的 leveragen.杠桿作用genericadj.一般的,普通的 potentialadj.潛在的,可能的intermsofadv.根據(jù),按照,用...的話 terminologyn.術(shù)語學personneln.人員,職員 inventoryn.詳細目錄,財產(chǎn)清冊adheretov.粘附,粘著,堅持,追隨 passwordn.密碼,口令specificationn.詳述,說明書,規(guī)范 encryptv.加密,將...譯成密碼preprocessvt.預加工,預處理 routinen.程序modularadj.模塊的,有標準組件的 well-established充分證實的decompositionn.分解 breakdownn.分解,故障pertainingto與...有關(guān)的 maintenancen.維護,保持imperativeadj.強制性的,命令式 paradigmn.范例,模式approachvt.接近,解決;n.近似,途徑 conduciveadj.有助于...的evasiveadj.逃避的;回避的;推托的 frameworkn.構(gòu)架,框架,結(jié)構(gòu)3NewWords&Expressions
taketheformof采取...形式 entityn.實體;統(tǒng)一體modulardesign標準設(shè)計,模塊化設(shè)計 object-oriented面向?qū)ο蟮?stubn.樹樁,樁模塊 givewayto讓路,讓步trial-and-errorn.試錯,反復試驗 malfunctionn.故障,出錯 waterfallmodel瀑布模型 analogyn.類似,類推afteralladv.畢竟 starkadv.完全地trial-and-creative試驗并創(chuàng)造的 nonstructure
非結(jié)構(gòu)性intuitionn.直覺,直覺的知識 contradictionn.反駁,矛盾incrementalmodel增量式模型 updatev.修正,更新;n.更新stepwiseadj.樓梯式的,逐步的 prototypen.原型evolutionaryprototyping演化式原型 infavorofadv.贊同,有利于throwawayprototyping拋棄原型 ironout消除;解決困難等documentationn.文件 debuggingn.調(diào)試spreadsheetn.電子制表軟件,電子數(shù)據(jù)表AbbreviationsCASE(computer-aidedsoftwareengineering)計算機輔助軟件工程GUI(GraphicalUserInterfaces)圖形用戶界面46.1TheSoftwareLifeCycle6.1.1TheCycleasaWholeFigure6-1ThesoftwarelifecycleThemostfundamentalconceptinsoftwareengineeringisthesoftwarelifecycle.軟件生命周期是軟件工程中最基本的概念。56.1.1TheCycleasaWholeThesoftwarelifecycleisshowninFigure6-1.Thisfigurerepresentsthefactthatoncesoftwareisdeveloped,itentersacycleofbeingusedandmodifiedthatcontinuesfortherestofthesoftware'slife.Suchapatterniscommonformanymanufacturedproductsaswell.Thedifferenceisthat,inthecaseofotherproducts,themodificationphaseismoreaccuratelycalledarepairormaintenancephasebecauseotherproductstendtomovefrombeingusedtobeingmodifiedastheirpartsbecomeworn.在圖6-1中展示了軟件的生命周期。這個圖說明了一個事實:一旦軟件開發(fā)完成,它就進入了使用和修改的循環(huán),并且這個循環(huán)將在軟件生命期的剩余時間中不斷進行。這樣的模式對機器制造的產(chǎn)品而言也是很普通的。不同之處在于,對于其他產(chǎn)品,軟件工程中的修改階段要被更精確地稱作修理或者維護階段,因為其他產(chǎn)品由于部件的磨損會有從使用到修改的過程。66.1.1TheCycleasaWholeSoftware,ontheotherhand,doesnotwearout.Instead,softwaremovesintothemodificationphasebecauseerrorsarediscovered,becausechangesinthesoftware'sapplicationoccurthatrequirecorrespondingchangesinthesoftware,orbecausechangesmadeduringapreviousmodificationarefoundtoinduceproblemselsewhereinthesoftware.Forexample,changesintaxlawsmayrequiremodificationstopayrollprogramsthatcalculatewithholdingtaxes,andalltoooftenthesechangesmayhaveadverseeffectsinotherareasoftheprogramthatmaynotbediscovereduntilsometimelater.當然,軟件不存在磨損的問題。但是,軟件進入修改階段或者是因為錯誤被發(fā)現(xiàn),或者是因為要在軟件的應用程序中進行修改從而修改了軟件,或者是因為先前的改變又引起了軟件其他地方出現(xiàn)了新的問題。例如,稅務法案的改變導致對計算扣稅的工資程序進行修改,而太頻繁的修改則會在軟件的其他地方引起反面的作用,而這些是不會被立即發(fā)現(xiàn)的。76.1.1TheCycleasaWholeRegardlessofwhysoftwareentersthemodificationphase,theprocessrequiresthataperson(oftennottheoriginalauthor)studytheunderlyingprogramanditsdocumentationuntiltheprogram,oratleastthepertinentpartoftheprogram,isunderstood.Otherwise,anymodificationcouldintroducemoreproblemsthanitsolves.Acquiringthisunderstandingcanbeadifficulttaskevenwhenthesoftwareiswell-designedanddocumented.Infact,itisoftenwithinthisphasethatapieceofsoftwareisfinallydiscardedunderthepretense(toooftentrue)thatitiseasiertodevelopanewsystemfromscratchthantomodifytheexistingpackagesuccessfully不管因為什么原因軟件進入了修改階段,這個過程需要人們(通常不是原始的作者)研究程序及其文檔,直到程序或者至少是相關(guān)部分的程序能夠被理解。否則,任何的修改將導致比它所解決問題還要更多的問題出現(xiàn)。即使軟件有優(yōu)秀的設(shè)計和齊備的文檔,理解也是一個很困難的工作。事實上,常常是在這個階段,一個有用的軟件片段最終就被放棄了(常常是這樣),而開發(fā)一個新的系統(tǒng)比成功地修改現(xiàn)有軟件更容易。86.1.1TheCycleasaWholeExperiencehasshownthatalittleeffortduringthedevelopmentofsoftwarecanmakeatremendousdifferencewhenmodificationsinthesoftwarearerequired.經(jīng)驗告訴我們,軟件開發(fā)過程中的一丁點付出,會在軟件需要修改的時候帶來巨大的不同。Inturn,mostoftheresearchinsoftwareengineeringfocusesonthedevelopmentstageofthesoftwarelifecycle,withthegoalbeingtotakeadvantageofthiseffort-versus-benefitleverage.反過來,大多數(shù)軟件工程的研究都集中于軟件生命周期的開發(fā)階段,它們的目標是要利用這個付出與收益的杠桿作用。96.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseThestageswithinthedevelopmentphaseofthesoftwarelifecycleareanalysis,design,implementation,andtesting(Figure6-2).軟件生命周期的開發(fā)階段包括分析、設(shè)計、實現(xiàn)與測試等步驟(如圖6-2所示)。106.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseAnalysisThedevelopmentphaseofthesoftwarelifecyclebeginswithanalysis--amajorgoalbeingtoidentifytheneedsoftheuseroftheproposedsystem.Ifthesystemistobeagenericproductsoldinacompetitivemarket,thisanalysiswouldinvolveabroad-basedinvestigationtoidentifytheneedsofpotentialcustomers.If,however,thesystemistobedesignedforaspecificuser,thentheprocesswouldbeamorenarrowinvestigation.分析軟件生命周期的開發(fā)階段以分析開始——主要目標是確定用戶對所提出系統(tǒng)的需求。如果系統(tǒng)是一個在競爭的市場上銷售的通用產(chǎn)品,這個分析將會包括一個廣泛的調(diào)查來發(fā)現(xiàn)潛在用戶的需要。但是,如果系統(tǒng)是為特殊用戶設(shè)計的,那么這個過程就是一個更專業(yè)的調(diào)查。116.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseAstheneedsofthepotentialuserareidentified,theyarecompiledtoformasetofrequirementsthatthenewsystemmustsatisfy.Theserequirementsarestatedintermsoftheapplicationratherthaninthetechnicalterminologyofthedataprocessingcommunity.Onerequirementmightbethataccesstodatamustberestrictedtoauthorizedpersonnel.Anothermightbethatthedatamustreflectthecurrentstateoftheinventoryasoftheendofthelastbusinessdayorthatthearrangementofthedataasdisplayedonthecomputerscreenmustadheretotheformatofthepaperformscurrentlyinuse.當潛在用戶的要求被確定之后,要將這些要求匯編成新系統(tǒng)必須滿足的需求。這些需求是從應用的角度來表述,而不是用數(shù)據(jù)處理界的技術(shù)術(shù)語來表達。一種需求可能是對數(shù)據(jù)的存取必須限制在有權(quán)限的人員,另一種可能是當一個工作日結(jié)束時,數(shù)據(jù)必須反映目前的清單狀態(tài),或者可能是在計算機屏幕上的數(shù)據(jù)必須按照用戶目前使用的格式來顯示。126.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseAfterthesystemrequirementsareidentified,theyareconvertedintomoretechnicalsystemspecifications.Forexample,therequirementthatdataberestrictedtoauthorizedpersonnelmightbecomethespecificationthatthesystemwillnotresponduntilanapprovedeight-digitpasswordhasbeentypedatthekeyboardorthatdatawillbedisplayedinencryptedformunlesspreprocessedbyaroutineknownonlytoauthorizedpersonnel.系統(tǒng)的需求被確定以后,它們就轉(zhuǎn)化為更具技術(shù)性的說明書。例如,關(guān)于數(shù)據(jù)須限制在某些有權(quán)限的人的需求,就可能轉(zhuǎn)化為以下規(guī)范——直到從鍵盤輸入一個被認可的8位密碼,系統(tǒng)才開始響應,或者除非經(jīng)過只有授權(quán)的人才知道的例程預處理,否則數(shù)據(jù)將以加密的形式顯示在屏幕上。136.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseDesignWhereasanalysisconcentratesonwhattheproposedsystemshoulddo,designconcentratesonhowthesystemwillaccomplishthosegoals.Itisherethatthestructureofthesoftwaresystemisestablished.
設(shè)計
分析關(guān)注這個系統(tǒng)應該做什么,而設(shè)計關(guān)注這個系統(tǒng)應該怎樣來實現(xiàn)目標。正是通過設(shè)計建立了軟件系統(tǒng)的結(jié)構(gòu)。146.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseItisawell-establishedprinciplethatthebeststructureforalargesoftwaresystemisamodularone.Indeed,itisbymeansofthismodulardecompositionthattheimplementationoflargesystemsbecomesapossibility.Withoutsuchabreakdown,thetechnicaldetailsrequiredintheimplementationofalargesystemwouldexceedahuman'scomprehensivepowers.大型軟件系統(tǒng)最好的結(jié)構(gòu)是模塊化系統(tǒng),這是一條被充分證實的原則。確實,正是借助模塊化的分解方法,大型系統(tǒng)的實現(xiàn)才成為可能。沒有這樣的分解,在大型系統(tǒng)實現(xiàn)過程中所需要的技術(shù)細節(jié)可能會超過一個人的理解能力。156.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseWithamodulardesign,however,onlythedetailspertainingtothemoduleunderconsiderationneedbemastered.Thissamemodulardesignisalsoconducivetofuturemaintenancebecauseitallowschangestobemadeonamodularbasis.(Ifachangeistobemadetothewayeachemployee'shealthbenefitsarecalculated,thenonlymodulesdealingwithhealthbenefitsneedbeconsidered.)然而,有了這種模塊化設(shè)計,僅僅需要熟悉與在考慮中的模塊相關(guān)的細節(jié)。同樣,模塊化設(shè)計對未來的維護是有益的,因為它允許對基本的模塊進行修改。(如果要對每個雇員的醫(yī)療福利計算方法進行修改,那么僅僅需要考慮處理醫(yī)療福利模塊。)166.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseThereare,however,distinctionsregardingtheconceptofamodule.Ifoneapproachesthedesigntaskintermsofthetraditionalimperativeparadigm,modulesconsistofproceduresandthedevelopmentofamodulardesigntakestheformofidentifyingthevarioustasksthattheproposedsystemmustperform.Incontrast,ifoneapproachesthedesigntaskfromtheobject-orientedperspective,modulesareseenasobjectsandthedesignprocessbecomesthatofidentifyingtheentities(objects)intheproposedsystemaswellashowtheseentitiesshouldbehave.但是,有關(guān)模塊的概念也是有差別的。如果一個人以傳統(tǒng)的命令式語言范式的方法來進行設(shè)計工作,模塊由不同程序組成,而模塊化設(shè)計則以確定有待實現(xiàn)系統(tǒng)的不同任務的方式進行。相反地,如果一個人從面向?qū)ο蟮慕嵌葋硗瓿稍O(shè)計工作,模塊就被看成了對象,而設(shè)計過程變成了確定有待實現(xiàn)系統(tǒng)中的實體(對象)以及確定這些實體是如何工作的。176.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseImplementation
Implementationinvolvestheactualwritingofprograms,creationofdatafiles,anddevelopmentofdatabases.
實現(xiàn)實現(xiàn)包括程序的實際編寫、數(shù)據(jù)文件的建立以及數(shù)據(jù)庫的開發(fā)等過程。186.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseTesting
Testingiscloselyassociatedwithimplementation,becauseeachmoduleofthesystemisnormallytestedasitisimplemented.Indeed,eachmoduleinawell-designedsystemcanbetestedindependentlyoftheothermodulesbyusingsimplifiedversionsoftheothermodules,calledstubs,tosimulatetheinteractionbetweenthetargetmoduleandtherestofthesystem.Ofcourse,thistestingofcomponentsgiveswaytooverallsystemtestingasthevariousmodulesarecompletedandcombined.測試測試與實現(xiàn)緊密聯(lián)系,因為系統(tǒng)中的每一個模塊都要在實現(xiàn)的過程中進行正常測試。確實,通過使用其他模塊的簡化版本——有時稱為樁模塊,來模擬目標模塊和系統(tǒng)其他部分的交互,從而使設(shè)計良好的系統(tǒng)中的每一個模塊都可以被獨立地測試。當然,在各種模塊都開發(fā)完成并且整合在一起之后,這個組件的測試將讓路給整個系統(tǒng)的測試。196.1.1TheCycleasaWholeTheTraditionalDevelopmentPhaseUnfortunately,thetestinganddebuggingofasystemisextremelydifficulttoperformsuccessfully.Experiencehasshownthatlargesoftwaresystemscancontainnumerouserrors,evenaftersignificanttesting.Manyoftheseerrorsmaygoundetectedforthelifeofthesystem,butothersmaycausemajormalfunctions.Theeliminationofsucherrorsisoneofthegoalsofsoftwareengineering.Thefactthattheyarestillprevalentmeansthatalotofresearchremainstobedone.不幸的是,成功地進行系統(tǒng)的測試和調(diào)試是極其困難的。經(jīng)驗表明,大型的軟件系統(tǒng)可能包含眾多的錯誤,甚至是經(jīng)過關(guān)鍵測試之后。許多這樣的錯誤在軟件的生命期中一直潛伏著,但是也有一些會導致關(guān)鍵性的錯誤。減少這樣的錯誤是軟件工程的一個目標。這些錯誤的普遍存在說明了在這方面還有許多的研究工作要做。206.1.1TheCycleasaWholeRecentTrendsEarlyapproachestosoftwareengineeringinsistedonperforminganalysis,design,implementation,andtestinginastrictlysequentialmanner.Thefeelingwasthattoomuchwasatriskduringthedevelopmentofalargesoftwaresystemtoallowfortrial-and-errortechniques.軟件工程的早期方法堅持要嚴格地遵守分析、設(shè)計、實現(xiàn)以及測試的順序。在大型軟件系統(tǒng)的開發(fā)過程中,感覺到采用試錯法是在冒著很大的風險進行開發(fā)的。216.1.1TheCycleasaWholeRecentTrendsAsaresult,softwareengineersinsistedthattheentireanalysisofthesystembecompletedbeforebeginningthedesignand,likewise,thatthedesignbecompletedbeforebeginningimplementation.Theresultwasadevelopmentprocessnowreferredtoasthewaterfallmodel,ananalogytothefactthatthedevelopmentprocesswasallowedtoflowinonlyonedirection.因此,軟件工程師堅持應當在設(shè)計之前進行完整的系統(tǒng)分析,同樣,設(shè)計應該在實現(xiàn)之前完成。這就形成了一個現(xiàn)在稱為瀑布模型的開發(fā)過程,這是對開發(fā)過程只允許以一個方向進行的事實的模擬。226.1.1TheCycleasaWholeRecentTrendsYouwillnoticeasimilaritybetweenthefourproblem-solvingphasesidentifiedbyPolyaandtheanalysis,design,implementation,andtestingphasesofsoftwaredevelopment.Afterall,todevelopalargesoftwaresystemistosolveaproblem.你將注意到由Polya提出的解決問題的4個階段與軟件開發(fā)的分析、設(shè)計、實現(xiàn)和測試階段的類似性。畢竟,開發(fā)一個大型的軟件系統(tǒng)是去解決一個問題。236.1.1TheCycleasaWholeRecentTrendsOntheotherhand,thetraditionalwaterfallapproachtosoftwaredevelopmentisinstarkcontrasttothe"free-wheeling,"trial-and-creativeproblemsolving.Whereasthewaterfallapproachseekstoestablishahighlystructuredenvironmentinwhichdevelopmentprogressesinasequentialfashion,creativeproblemsolvingseeksanonstructuredenvironmentinwhichonecandroppreviousplansofattacktopursuesparksofintuitionwithoutexplainingwhy.
另一方面,傳統(tǒng)軟件開發(fā)的瀑布模型法與隨心所欲的反復試驗并創(chuàng)造性地解決問題的方法是完全相反的。瀑布模型法尋求建立一個高度結(jié)構(gòu)化的環(huán)境,希望在這個環(huán)境中的開發(fā)可以順利地進行,而創(chuàng)造性的問題解決要尋找一個非結(jié)構(gòu)化的環(huán)境,希望在這個環(huán)境中可以拋棄先前的計劃,來追逐思維的火花,而不用解釋為什么。246.1.1TheCycleasaWholeRecentTrendsInrecentyears,softwareengineeringtechniqueshavebeguntoreflectthisunderlyingcontradictionasillustratedbytheemergenceoftheincrementalmodelforsoftwaredevelopment.Followingthismodel,thedesiredsoftwaresystemisconstructedinincrements--thefirstbeingasimplifiedversionofthefinalproductwithlimitedfunctionality.近年來,軟件工程技術(shù)已經(jīng)開始反映這種本質(zhì)的對立了,這可以由軟件開發(fā)中出現(xiàn)的增量式模型來說明。根據(jù)這個模型,所需的軟件系統(tǒng)是通過增量模式來構(gòu)造的——首先開發(fā)最終產(chǎn)品的簡化版本,它只有有限的功能。256.1.1TheCycleasaWholeRecentTrendsOncethisversionhasbeentestedandperhapsevaluatedbythefutureuser,morefeaturesareaddedandtestedinanincrementalmanneruntilthesystemiscomplete.Forexample,ifthesystembeingdevelopedisastudentrecordssystemforauniversityregister,thefirstincrementmayincorporateonlytheabilitytoviewstudentrecords.Oncethatversionisoperational,additionalfeatures,suchastheabilitytoaddandupdaterecords,wouldbeaddedinastepwisemanner.一旦這個版本經(jīng)過測試、并且也許經(jīng)過了未來用戶的評估,更多的特性就可以添加進去并且進行測試,這樣就以一種增量的方式進行,直到完成系統(tǒng)。例如,如果正在開發(fā)的系統(tǒng)是為大學登記員設(shè)計的學生記錄系統(tǒng),第一次迭代版本僅僅包括瀏覽學生記錄的功能。一旦這個版本可以運行了,其他特性,諸如增加和更新記錄的功能,就可以分階段地添加到系統(tǒng)中了。266.1.1TheCycleasaWholeRecentTrendsTheincrementalmodelisevidenceofthetrendinsoftwaredevelopmenttowardprototypinginwhichincompleteversionsoftheproposedsystem,calledprototypes,arebuiltandevaluated.Inthecaseoftheincrementalmodeltheseprototypesevolveintothecomplete,finalsystem---aprocessknownasevolutionaryprototyping.Inothercases,theprototypesmaybediscardedinfavorofafreshimplementationofthefinaldesign.Thisapproachisknownasthrowawayprototyping.這種增量式模型是軟件開發(fā)向原型法發(fā)展趨勢的一個證據(jù)——在這種方法中,建立并測試的是不完善系統(tǒng),它也被稱為原型,被評估和測試。在增量式模型中,這些原型進化為一個完整的最終系統(tǒng)——這個過程稱為演化式原型。對于其他情況,原型的拋棄會有利于新的最終設(shè)計的實現(xiàn),這種方法就是拋棄原型。276.1.1TheCycleasaWholeRecentTrendsAnexamplethatnormallyfallswithinthisthrowawaycategoryisrapidprototypinginwhichasimpleexampleoftheproposedsystemisquicklyconstructedintheearlystagesofdevelopment.Suchaprototypemayconsistofonlyafewscreenimagesthatgiveanindicationofhowthesystemwillinteractwiththeuserandwhatcapabilitiesitwillhave.一個拋棄原型的例子就是快速原型法,在這個方法中,系統(tǒng)的簡單版本在開發(fā)的早期就被很快搭建起來。這樣的原型也許僅僅包含少量界面圖片來展示系統(tǒng)怎樣與用戶交互以及它將具有的功能。286.1.1TheCycleasaWholeRecentTrendsThegoalisnottoproduceaworkingversionoftheproductbuttoobtainademonstrationtoolthatcanbeusedtoclarifycommunicationbetweenthepartiesinvolved.Forexample,rapidprototypeshaveprovedadvantageousinironingoutsystemrequirementsduringtheanalysisstageorasaidsduringsalespresentationstopotentialclients.我們的目標不是制作產(chǎn)品的有效版本,而是獲得一個示范工具,以便闡明有關(guān)方面之間的溝通。例如,在分析階段解決系統(tǒng)的需求問題,或在銷售階段作為向潛在客戶演示的輔助,快速原型具有很大的優(yōu)勢
296.1.1TheCycleasaWholeRecentTrendsAnotherdevelopmentinsoftwareengineeringhasbeentheapplicationofcomputertechnologytothesoftwaredevelopmentprocessitself,resultinginwhatiscalledcomputer-aidedsoftwareengineering(CASE).軟件工程領(lǐng)域中另一個發(fā)展是計算機技術(shù)在軟件開發(fā)過程本身的應用,這導致了稱為計算機輔助軟件工程(CASE)的出現(xiàn)。306.1.1TheCycleasaWholeRecentTrendsThesecomputerizedsystemsareknownasCASEtoolsandincludeprojectplanningtools(thatassistincostestimation,projectscheduling,andpersonnelallocation),projectmanagementtools(thatassistinmonitoringtheprogressofthedevelopmentproject),documentationtools(thatartistinwritingandorganizingdocumentation),prototypingandsimulationtools(thatassistinthedevelopmentofprototypes),interfacedesigntools(thatassistinthedevelopmentofGUIs),andprogrammingtools(thatassistinwritinganddebuggingprograms).這些計算機化系統(tǒng)就是知名的CASE工具,且包括項目計劃工具(幫助成本估計、項目調(diào)度,以及人力資源分配)、項目管理工具(幫助管理開發(fā)項目的進程)、文檔工具(幫助撰寫和組織文檔)、界面設(shè)計工具(幫助開發(fā)GUI)以及程序設(shè)計工具(幫助編寫和調(diào)試程序)。316.1.1TheCycleasaWholeRecentTrendsSomeofthesetoolsarelittlemorethanthewordprocessors,spreadsheetsystems,ande-mailcommunicationsystemsusedinotherapplications.However,othersarequitesophisticatedpackagesdesignedprimarilyforthesoftwareengineeringenvironment.Forexample,someCASEtoolsincludecodegeneratorsthat,whengivenspecificationsforapartofasystem,producehigh-levellanguageprogramsthatimplementthatpartofthesystem.這些工具也許僅僅就是在其他的應用程序中的文字處理軟件,或者是表格處理軟件,或者是電子郵件通訊系統(tǒng)。一些則是相當復雜的軟件,它們主要是為了軟件工程環(huán)境來設(shè)計的。例如,一些CASE工具包括了代碼生成器,當給出一個系統(tǒng)局部的說明書時,它可用來生成實現(xiàn)這個系統(tǒng)局部的高級語言程序。326.2DesignMethodologies
Thedevelopmentofmethodologiesfordesigningsoftwaresystemsisamajorquestwithinsoftwareengineering.Inthissectionwediscussavarietyofthetechniquesthathavebeendevelopedaswellasdirectionsofcurrentresearch.設(shè)計軟件系統(tǒng)的方法學是軟件工程領(lǐng)域主要探索的方向之一。本節(jié)我們將討論一些已經(jīng)形成的方法以及當前的研究方向。336.2.1Top-DownVersusBottom-Up
Perhapsthemostwell-knownstrategyassociatedwithsystemdesignisthetop-downmethodology.Thepointofthismethodologyisthatoneshouldnottrytosolveacomplexprobleminasinglestep.Instead,one'sfirststopshouldbetobreaktheproblemintosmaller,moremanageablesubproblems.Then,oneshouldproceedbybreakingthesesubproblemsintostillsmallerproblems.Inthismanner,acomplexproblembecomesacollectionofsimplerproblemswhosesolutionscollectivelysolvetheoriginalproblem.也許最著名的系統(tǒng)設(shè)計策略就是自頂向下的方法學了。這個方法學的要點就是人們不要試圖一下子就將一個復雜問題解決,而是應當將問題分解成更小的、可以管理的子問題。然后,將這些子問題分解成更小的問題。以這種方式,一個復雜的問題變成了相對小的問題的集合,而所有小問題的解決就是原問題的解決。
346.2.1Top-DownVersusBottom-Up
Theresultoftopdowndesigntendstobeahierarchicalsystemofrefinementsthatoftencanbetranslateddirectlyintoamodularstructurethatiscompatiblewiththeimperativeprogrammingparadigm.Thesolutionstothesmallestproblemsinthehierarchybecomeproceduralmodulesthatperformsimpletasksandareusedasabstracttoolsbymoresuperiormodulestosolvethemorecomplexproblemsinthesystem.
自頂向下設(shè)計的結(jié)果是一個逐步求精的層次系統(tǒng),這個結(jié)構(gòu)通??梢员恢苯臃g成與命令式語言兼容的模塊結(jié)構(gòu)。對層次結(jié)構(gòu)中最小問題的解決變成了執(zhí)行簡單任務的程序模塊,這個模塊被較高層用作抽象工具來解決系統(tǒng)中更為復雜的問題。356.2.1Top-DownVersusBottom-Up
Incontrasttothetop-downdesignmethodologyisthebottom-upapproach,inwhichonestartsthedesignofasystembyidentifyingindividualtaskswithinthesystemandthenconsidershowsolutionstothesetaskscanbeusedasabstracttoolsinthesolutiontomorecomplexproblems.Formanyyears,thisapproachwasconsideredinferiortothetopdowndesignparadigm.相對于自頂向下的設(shè)計方法學,自底向上的方法確定系統(tǒng)中的每一個具體任務來開始系統(tǒng)的設(shè)計。然后,它考慮如何將這些任務的解決用做解決更復雜問題的抽象工具。多年來,這個方法被認為不如自頂向下的設(shè)計范式。366.2.1Top-DownVersusBottom-Up
Today,however,thebottom-upmethodologyhasgainedsupport.Onereasonforthisshiftisthatthetop-downmethodologyseeksasolutioninwhichadominantmoduleusessubmodules,eachofwhichreliesonsubsubmodules,andsoon.但是,今天,自底向上的方法學又獲得了支持。這種轉(zhuǎn)變的一個原因就是自頂向下的方法尋求一個支配模塊使用子模快,而每一個支配模塊依賴于子模塊的解決,等等。376.2.1Top-DownVersusBottom-Up
However,thebestdesignformanysystemsisnotofahierarchicalnature.Indeed,adesignconsistingoftwoormoremodulesinteractingasequals,asexemplifiedbytheclient-servermodelaswellasgeneralparallelprocessingapplications,maybeabettersolutionthanadesignconsistingofasuperiormodulethatreliesonsubordinatestoperformitstask.但是,對于許多系統(tǒng)來說,最好的設(shè)計不是一個層次的結(jié)構(gòu)。確實,一個設(shè)計包括兩個或更多模塊——它們平等交互,這也是被包含通用并行處理應用程序的客戶/服務器模型或者系統(tǒng)所例證了的,比起依賴于從屬模塊來執(zhí)行任務的較高級模塊構(gòu)成的設(shè)計,它也許是一個更好的解決方案。386.2.1Top-DownVersusBottom-Up
Anotherreasonforincreasedinterestinbottom-updesignisthatitismoreconsistentwiththegoalofbuildingcomplexsoftwaresystemsfrompreconstructed,off-the-shelfcomponents--anapproachthatisacurrenttrendinsoft-wareengineering.
對自底向上設(shè)計產(chǎn)生更多興趣的另一個原因,就是它與從預先構(gòu)建的現(xiàn)成組件中構(gòu)建復雜軟件系統(tǒng)的目標更加一致——這體現(xiàn)了軟件工程當前的趨勢。396.2.2DesignPatterns
Inanefforttofindwaysbywhichsoftwarecanbeconstructedfromoff-the-shelfcomponents,softwareengineershaveturnedtothefieldofarchitectureforinspiration.OfparticularinterestisthebookAPatternLanguagebyChristopherAlexanderetal.,whichdescribesasetofpatternsfordesigningcommunities.每種模式都包括了一個問題描述以及建議性的解決方案。這些問題是很普遍的,而這個建議性的解決方案也是一般性的——旨在強調(diào)他們闡述的是問題的一般的本質(zhì)而不是僅僅為一個特殊的例子提出一個解決方案。406.2.2DesignPatterns
Eachpatternconsistsofthestatementofaproblemfollowedbyaproposedsolution.Theproblemsareintendedtobeuniversal,andtheproposedsolutionsaregenericinthesensethattheyaddresstheuniversalnatureoftheproblemratherthanproposingasolutionforaparticularcase.每種模式都包括了一個問題描述以及建議性的解決方案。這些問題是很普遍的,而這個建議性的解決方案也是一般性的——旨在強調(diào)他們闡述的是問題的一般的本質(zhì)而不是僅僅為一個特殊的例子提出一個解決方案。416.2.2DesignPatterns
Forexample,onepattern,calledQuietBacks,addressestheneedtoescapethecommotionofabusinesscenterforshortperiodsofrefreshment.Theproposedsolutionistodesign"quietbacks"intobusinessdistricts.Insomecases,thedistrictcouldbedesignedaroundamainstreettowhichallbuildingsface--thus,providingforquietsidestreetsbehindthebuildings.Inothercases,"quietbacks"canbeobtainedbymeansofparks,rivers,orcathedrals.
例如,一個模式,叫做“安靜的后面”,闡述了躲避商業(yè)中心的喧囂而尋求短暫的精力恢復的需求。其建議性的解決方案就是在商業(yè)區(qū)中設(shè)計一個“安靜的后面”。在某些情況下,這個商業(yè)區(qū)要設(shè)計在所有建筑都要朝向的主要街道周圍——因此可以將安靜的輔路鋪在建筑的后面。在其他的情況下,“安靜的后面”可以采用公園、河流或者是教堂的形式。426.2.2DesignPatterns
TheimportantpointforourdiscussionisthatAlexander'swokattemptedtoidentifyuniversalproblemsandprovidetemplatesforsolvingthem.Today,manysoftwareengineersareattemptingtoapplythissameapproachtothedesignoflargesoftwaresystems.Inparticular,researchersareapplyingdesignpatternsasameansofprovidinggenericbuildingblockswithwhichsoftwaresystemscanbeconstructed.我們所討論的重點就是Alexander在著作中試圖確定的一般性問題并且提供解決它們的模板。今天,許多軟件工程師也試圖應用同樣的方法來設(shè)計大型的軟件系統(tǒng)。特別地,研究人員正在應用設(shè)計模式作為提供軟件構(gòu)建所需通用單元的方法。436.2.2DesignPatterns
Anexampleofsuchapatternisthepublisher-subscriberpattern,consistingofamodule(thepublisher)thatmustsendcopiesofits“publications”toothermodules(thesubscribers).Asaspecificexample,consideracollectionofdatathatisbeingdisplayedonacomputerscreeninmorethanoneformat--perhapsasapiegraphaswellasabargraph--simultaneously.Inthissetting,anychangeinthedatashouldbereflectedinbothgraphs.Thusthesoftwaremodulesinchargeofdrawingthegraphsshouldbenotifiedwhenchangesinthedataoccur.Inthiscase,then,thesoftwaremodulemaintainingthedataplaystheroleofthepublisherthatmustsendupdatemessagestothesubscribers,whicharethemoduleschargedwithdrawingthegraphs.這種模式的一個例子就是出版商和訂戶的模式:一個模塊(出版商)將其出版物發(fā)送給其他模塊(訂戶)。作為一個特殊的例子,考慮在計算機屏幕上同時顯示多種格式的數(shù)據(jù)集,如餅圖和條形圖。這樣,任何對數(shù)據(jù)的修改都將會被反映在兩張圖上。因此,當數(shù)據(jù)發(fā)生更改的時候,這個負責畫圖的軟件模塊將會被告知。在這種情況下,維護數(shù)據(jù)的軟件模塊就會扮演出版商的角色——它必須要給訂戶發(fā)送更新的消息,而這些訂戶也是模塊,它們負責畫圖。446.2.2DesignPatterns
Anotherexampleofsoftwaredesignpatternisthecontainer-componentpattern.Itcapturesthegenericconceptofacontainerthatcontainscomponentsthatarethemselvescontainers.Suchapatternisexemplifiedbythedirectoriesorfoldersusedbyanoperatingsystem'sfilemanager.Eachofthesedirectoriestypicallycontainsotherdirectories,whichmaycontainstillotherdirectories.Inshort,thecontainer-componentpatternismeanttocapturetherecursiveconceptofcontainersthatcontaincontainers.軟件設(shè)計模式的另一個例子是容器組件模式。它闡述了容器包括一些組件,而組件本身又是容器的一般性概念。這種模式的例子就是操作系統(tǒng)的文件管理器使用的目錄或者文件夾。每個這樣的目錄都包括了其他目錄,而這個被包含了的目錄可能又包含了其他的目錄。簡而言之,容器組件模式可以描述容器包含容器的遞歸概念。456.2.2DesignPatterns
Onceapatternsuchaspublisher-subscriberorcontainer-componenthasbeenidentified,softwareengineersproposethedevelopmentofskeletalprogramunits,calledframeworks,thatimplementthepertinentfeaturesofthepattern'ssolutionwhileleavingfeaturesspecifictoparticularapplicationsasslotstobefilledinlater.Toaccompanyframeworks,softwareengineersproposedocumentationthatdescribeshowtheframeworkcanbefilledintoobtainacompleteimplementationoftheunderlyingpatterninaparticularsetting.Suchdocumentationiscalledarecipe.Collectionsofframeworksalongwiththeirrecipesarefondlyknownascookbooks.一旦像出版商與訂戶或者是容器和組件這樣的模式被確定,軟件工程師就會計劃開發(fā)一組程序單元作為骨架,這稱為框架,它實現(xiàn)模式方法所要解決的主要特征,而將特殊應用程序的特性作為缺口,留待以后填入。為了補充框架,軟件工程師提出了如何填充框架的描述文檔。這種文擋被稱為處方,與處方在一起的框架集被昵稱為菜譜。466.2.2DesignPatterns
Researchershopethatbymeansofcookbooks,softwareengineerswillfinallybeabletoconstructlarge,complexsoftwaresystemsfromoff-the-shelfcomponents--thecomponentsbeingframeworks.Earlyresultshaveindicatedthatsuchanapproachcansignificantlyreducetheamountofprogrammingrequiredinthedevelopmentofanewsystem.
研究人員希望:借助菜譜,軟件工程師最終可以從現(xiàn)成的組件——組件就是框架——構(gòu)建大型的復雜軟件系統(tǒng)。早期的結(jié)果表明,這種方法可以大大減少開發(fā)新系統(tǒng)所需的編程工作量。476.2.2DesignPatterns
Withalltheexc
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年現(xiàn)代農(nóng)業(yè)園土地流轉(zhuǎn)承包合同3篇
- 藝術(shù)活動特色課程設(shè)計
- 汽車租賃管理課程設(shè)計
- 湘繡美術(shù)課程設(shè)計
- 藝術(shù)課創(chuàng)意游戲課程設(shè)計
- 草藥烘焙課程設(shè)計
- 紙箱印刷工藝課程設(shè)計
- 職業(yè)主題運動課程設(shè)計
- 育子課程設(shè)計
- 糕點烘焙培訓課程設(shè)計
- 廣東省廣州市越秀區(qū)2021-2022學年九年級上學期期末道德與法治試題(含答案)
- 安徽省森林撫育技術(shù)導則
- 在線教育平臺合作合同助力教育公平
- 工地鋼板短期出租合同模板
- 女排精神課件教學課件
- 2024年湖南省公務員考試《行測》真題及答案解析
- 超市消防安全巡查制度
- 《美洲》名師課件(第2課時)
- GB/T 9445-2024無損檢測人員資格鑒定與認證
- 超聲科危急值內(nèi)容及報告制度
- 河南省鄭州市2023-2024學年高二上學期期末考試 物理 含解析
評論
0/150
提交評論