IT职场英语电子课件教参 页Word格式.docx
《IT职场英语电子课件教参 页Word格式.docx》由会员分享,可在线阅读,更多相关《IT职场英语电子课件教参 页Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
1.1对于比尔盖茨的这句“Therearenosignificantbugsinourreleasedsoftwarethatanysignificantnumberofuserswantfixed.”这句话的理解,教师可以提示学生结合自身学习背景,探讨一下bug的类型有哪些。
(https:
//en.wikipedia.org/wiki/Software_bug)
1)Conceptualerror(codeissyntacticallycorrect,buttheprogrammerordesignerintendedittodosomethingelse).
Arithmeticbugs
Divisionbyzero.
Arithmeticoverfloworunderflow.
Lossofarithmeticprecisionduetoroundingornumericallyunstablealgorithms.
2)Logicbugs
Infiniteloopsandinfiniterecursion.
Off-by-oneerror,countingonetoomanyortoofewwhenlooping.
3)Syntaxbugs
Useofthewrongoperator,suchasperformingassignmentinsteadofequalitytest.Forexample,insomelanguagesx=5willsetthevalueofxto5whilex==5willcheckwhetherxiscurrently5orsomeothernumber.Insimplecasesoftenthecompilermaygenerateawarning.Inmanylanguages,thelanguagesyntaxisdeliberatelydesignedtoguardagainstthiserror.
4)Resourcebugs
Nullpointerdereference.
Usinganuninitializedvariable.
Usinganotherwisevalidinstructiononthewrongdatatype(seepackeddecimal/binarycodeddecimal).
Accessviolations.
Resourceleaks,whereafinitesystemresource(suchasmemoryorfilehandles)becomeexhaustedbyrepeatedallocationwithoutrelease.
Bufferoverflow,inwhichaprogramtriestostoredatapasttheendofallocatedstorage.Thismayormaynotleadtoanaccessviolationorstorageviolation.Thesebugsmayformasecurityvulnerability.
Excessiverecursionwhich—thoughlogicallyvalid—causesstackoverflow.
Use-after-freeerror,whereapointerisusedafterthesystemhasfreedthememoryitreferences.
Doublefreeerror.
5)Multi-threadingprogrammingbugs
Deadlock,wheretaskAcan'
tcontinueuntiltaskBfinishes,butatthesametime,taskBcan'
tcontinueuntiltaskAfinishes.
Racecondition,wherethecomputerdoesnotperformtasksintheordertheprogrammerintended.
Concurrencyerrorsincriticalsections,mutualexclusionsandotherfeaturesofconcurrentprocessing.Time-of-check-to-time-of-use(TOCTOU)isaformofunprotectedcriticalsection.
6)Interfacingbugs
IncorrectAPIusage.
Incorrectprotocolimplementation.
Incorrecthardwarehandling.
Incorrectassumptionsofaparticularplatform.
Incompatiblesystems.Oftenaproposed"
newAPI"
ornewcommunicationsprotocolmayseemtoworkwhenbothcomputersusetheoldversionorbothcomputersusethenewversion,butupgradingonlythereceiverexposesbackwardcompatibilityproblems;
inothercasesupgradingonlythetransmitterexposesforwardcompatibilityproblems.Oftenitisnotfeasibletoupgradeeverycomputersimultaneously—inparticular,inthetelecommunicationindustryortheinternet.Evenwhenitisfeasibletoupdateeverycomputersimultaneously,sometimespeopleaccidentallyforgettoupdateeverycomputer—theKnightCapitalGroup#2012stocktradingdisruptioninvolvedonesuchincompatibilitybetweentheoldAPIandanewAPI.
7)Performancebugs
Toohighcomputationalcomplexityofalgorithm.
Randomdiskormemoryaccess.
8)Teamworkingbugs
Unpropagatedupdates;
e.g.programmerchanges"
myAdd"
butforgetstochange"
mySubtract"
whichusesthesamealgorithm.TheseerrorsaremitigatedbytheDon'
tRepeatYourselfphilosophy.
Commentsoutofdateorincorrect:
manyprogrammersassumethecommentsaccuratelydescribethecode.
1.2
Phase
Details
RequirementAnalysis
Requirementsanalysisencompassesthosetasksthatgointodeterminingtheneedsorconditionstomeetforaneworalteredproductorproject,takingaccountofthepossiblyconflictingrequirementsofthevariousstakeholders,analyzing,documenting,validatingandmanagingsoftwareorsystemrequirements.
SystemDesign
Systemsdesignistheprocessofdefiningthearchitecture,components,modules,interfaces,anddataforasystemtosatisfyspecifiedrequirements.Systemsdesigncouldbeseenastheapplicationofsystemstheorytoproductdevelopment.
ProgramDesign
Theactivityofprogressingfromaspecificationofsomerequiredprogramtoadescriptionoftheprogramitself.Duringthephasethedesigndecisionsaremadeastohowtheprogramwillmeettheserequirements.
Coding
Codingiswhatmakesitpossibleforustocreatecomputersoftware,appsandwebsites.Yourbrowser,yourOS,theappsonyourphone,Facebook,andthiswebsite–they’reallmadewithcode.
Testing
Softwaretestingisaninvestigationconductedtoprovidestakeholderswithinformationaboutthequalityoftheproductorserviceundertest.[1]Softwaretestingcanalsoprovideanobjective,independentviewofthesoftwaretoallowthebusinesstoappreciateandunderstandtherisksofsoftwareimplementation.Testtechniquesincludetheprocessofexecutingaprogramorapplicationwiththeintentoffindingsoftwarebugs(errorsorotherdefects).
Maintenance
Softwaremaintenanceinsoftwareengineeringisthemodificationofasoftwareproductafterdeliverytocorrectfaults,toimproveperformanceorotherattributes.
Insoftwareengineering,asoftwaredevelopmentmethodology(alsoknownasasystemdevelopmentmethodology,softwaredevelopmentlifecycle,softwaredevelopmentprocess,softwareprocess)isasplittingofsoftwaredevelopmentworkintodistinctphases(orstages)containingactivitieswiththeintentofbetterplanningandmanagement.Itisoftenconsideredasubsetofthesystemsdevelopmentlifecycle.Themethodologymayincludethepre-definitionofspecificdeliverablesandartifactsthatarecreatedandcompletedbyaprojectteamtodevelopormaintainanapplication.
Commonmethodologiesincludewaterfall,prototyping,iterativeandincrementaldevelopment,spiraldevelopment,rapidapplicationdevelopment,extremeprogrammingandvarioustypesofagilemethodology.Somepeopleconsideralife-cycle"
model"
amoregeneraltermforacategoryofmethodologiesandasoftwaredevelopment"
process"
amorespecifictermtorefertoaspecificprocesschosenbyaspecificorganization.Forexample,therearemanyspecificsoftwaredevelopmentprocessesthatfitthespirallife-cyclemodel.
Thewaterfallmodelisasequentialdevelopmentapproach,inwhichdevelopmentisseenasflowingsteadilydownwards(likeawaterfall)throughseveralphases,typically:
Requirementsanalysisresultinginasoftwarerequirementsspecification
Softwaredesign
Implementation
Integration,iftherearemultiplesubsystems
Deployment(orInstallation)
Spiraldevelopment
In1988,BarryBoehmpublishedaformalsoftwaresystemdevelopment"
spiralmodel,"
whichcombinessomekeyaspectofthewaterfallmodelandrapidprototypingmethodologies,inanefforttocombineadvantagesoftop-downandbottom-upconcepts.Itprovidedemphasisinakeyareamanyfelthadbeenneglectedbyothermethodologies:
deliberateiterativeriskanalysis,particularlysuitedtolarge-scalecomplexsystems.
Thebasicprinciplesare:
Focusisonriskassessmentandonminimizingprojectriskbybreakingaprojectintosmallersegmentsandprovidingmoreease-of-changeduringthedevelopmentprocess,aswellasprovidingtheopportunitytoevaluaterisksandweighconsiderationofprojectcontinuationthroughoutthelifecycle.
"
Eachcycleinvolvesaprogressionthroughthesamesequenceofsteps,foreachpartoftheproductandforeachofitslevelsofelaboration,fromanoverallconcept-of-operationdocumentdowntothecodingofeachindividualprogram."
Eachtriparoundthespiraltraversesfourbasicquadrants:
(1)determineobjectives,alternatives,andconstraintsoftheiteration;
(2)evaluatealternatives;
Identifyandresolverisks;
(3)developandverifydeliverablesfromtheiteration;
and(4)planthenextiteration.
Begineachcyclewithanidentificationofstakeholdersandtheir"
winconditions"
andendeachcyclewithreviewandcommitment.
RapidApplicationDevelopment(RAD)Model
Rapidapplicationdevelopment(RAD)isasoftwaredevelopmentmethodology,whichfavorsiterativedevelopmentandtherapidconstructionofprototypesinsteadoflargeamountsofup-frontplanning.The"
planning"
ofsoftwaredevelopedusingRADisinterleavedwithwritingthesoftwareitself.Thelackofextensivepre-planninggenerallyallowssoftwaretobewrittenmuchfaster,andmakesiteasiertochangerequirements.
Therapiddevelopmentprocessstartswiththedevelopmentofpreliminarydatamodelsandbusinessprocessmodelsusingstructuredtechniques.Inthenextstage,requirementsareverifiedusingprototyping,eventuallytorefinethedataandprocessmodels.Thesestagesarerepeatediteratively;
furtherdevelopmentresultsin"
acombinedbusinessrequirementsandtechnicaldesignstatementtobeusedforconstructingnewsystems"
.
ThetermwasfirstusedtodescribeasoftwaredevelopmentprocessintroducedbyJamesMartinin1991.AccordingtoWhitten(2003),itisamergerofvariousstructuredtechniques,especiallydata-drivenInformationEngineering,withprototypingtechniquestoacceleratesoftwaresystemsdevelopment.
Thebasicprinciplesofrapidapplicationdevelopmentare:
Keyobjectiveisforfastdevelopmentanddeliveryofahighqualitysystematarelativelylowinvestmentcost.
Attemptstoreduceinherentprojectriskbybreakingaprojectintosmallersegmentsandprovidingmoreease-of-changeduringthedevelopmentprocess.
Aimstoproducehighqualitysystemsquickly,primarilyviaiterativePrototyping(atanystageofdevelopment),activeuserinvolvement,andcomputerizeddevelopmenttools.Thesetoolsm