1、FUNDAMENTALS OF SOFTWARE ENGINEERINGReference books:1.1.Fundamentals of Software Engineering,Rajib Mall,3Fundamentals of Software Engineering,Rajib Mall,3rdrd Edition,PHI,2009 Edition,PHI,20092.2.Software Software Engineering,Engineering,Ian Ian Somerville,Somerville,6th 6th edition,edition,Pearson
2、Pearson Education Education Ltd,Ltd,2001.2001.3.3.Software Software Engineering Engineering A A Practitioners Practitioners Approach,Approach,Roger Roger S S Pressman,Pressman,Tata Tata Mcgraw Hill,4th Edition.Mcgraw Hill,4th Edition.4.4.An An Integrated Integrated Approach Approach to to Software S
3、oftware Engineering,Engineering,Pankaj Pankaj Jalote,Jalote,Narosa Narosa PublicationsPublications5.5.Object Object Oriented Oriented and and Classical Classical Software Software Engineering,Engineering,Stephen Stephen R R Schach,Schach,Tata McGraw Hill,2002.Tata McGraw Hill,2002.qqToknowtheimporta
4、nceofSoftwareanditsattributes.ToknowtheimportanceofSoftwareanditsattributes.qqTointroducesoftwareengineeringandtoexplainitsimportance.Tointroducesoftwareengineeringandtoexplainitsimportance.qqTolearntheemergenceofsoftwareengineering.Tolearntheemergenceofsoftwareengineering.qqToTounderstandunderstand
5、thethenotablenotablechangeschangesininthethesoftwaresoftwaredevelopmentdevelopmentpractices.practices.qqTodiscussthekeychallengesfacingsoftwareengineering.Todiscussthekeychallengesfacingsoftwareengineering.qqToTo understandunderstand thethe variousvarious activitiesactivities involvedinvolved inin d
6、evelopingdeveloping a asoftware.software.qqToTo discussdiscuss thethe importanceimportance ofof variousvarious softwaresoftware processprocess modelsmodelsusedtodevelopsoftware.usedtodevelopsoftware.ObjectivesIntroduction TheeconomiesofALLdevelopednationsaredependentonsoftware.TheeconomiesofALLdevel
7、opednationsaredependentonsoftware.Moreandmoresystemsaresoftwarecontrolled.Moreandmoresystemsaresoftwarecontrolled.SoftwareSoftware costscosts oftenoften dominatedominate computercomputer systemsystem costs.costs.TheThe costscosts ofofsoftwareonaPCareoftengreaterthanthehardwarecost.softwareonaPCareof
8、tengreaterthanthehardwarecost.SoftwareSoftwarecostscostsmoremoretotomaintainmaintainthanthanititdoesdoestotodevelop.develop.ForForsystemssystemswithwitha alonglonglife,life,maintenancemaintenancecostscostsmaymaybebeseveralseveraltimestimesdevelopmentdevelopmentcostscosts.SoftwareSoftware engineering
9、engineering isis concernedconcerned withwith cost-effectivecost-effective softwaresoftwaredevelopmentdevelopment.Computer programs and associated documentation such asrequirements,designmodelsandusermanuals.Softwareproductsmaybedevelopedforaparticularcustomerormaybedevelopedforageneralmarket.Softwar
10、eproductsmaybeGeneric-developedtobesoldtoarangeofdifferentcustomerse.g.PCsoftwaresuchasExcelorWord.Bespoke(custom)-developed for a single customer according to theirspecification.New software can be created by developing new programs,configuringgenericsoftwaresystemsorreusingexistingsoftware.Softwar
11、eAttributesofgoodsoftwareThesoftwareshoulddelivertherequiredfunctionalityandperformancetotheuserandshouldbemaintainable,dependableandacceptable.MaintainabilitySoftwaremustevolvetomeetchangingneeds;DependabilitySoftwaremustbetrustworthy;EfficiencySoftwareshouldnotmakewastefuluseofsystemresources;Acce
12、ptabilitySoftwaremustacceptedbytheusersforwhichitwasdesigned.Thismeansitmustbeunderstandable,usableandcompatiblewithothersystems.SoftwareEngineering SoftwareSoftwareengineeringengineeringisisananengineeringengineeringdisciplinedisciplinethatthatisisconcernedconcernedwithallaspectsofsoftwareproductio
13、n.withallaspectsofsoftwareproduction.SoftwareSoftware engineersengineers shouldshould adoptadopt a a systematicsystematic andand organisedorganisedapproachapproach toto theirtheir workwork andand useuse appropriateappropriate toolstools andand techniquestechniquesdependingdepending onon thethe probl
14、emproblem toto bebe solved,solved,thethe developmentdevelopmentconstraintsandtheresourcesavailable.constraintsandtheresourcesavailable.SoftwareSoftwareengineeringengineeringisisananengineeringengineeringdisciplinedisciplinethatthatisisconcernedconcernedwithwith allall aspectsaspects(specification,(s
15、pecification,development,development,managementmanagement andandevolution)ofsoftwareproduction.evolution)ofsoftwareproduction.SoftwareSoftware engineersengineers shouldshould adoptadopt a a systematicsystematic andand organisedorganisedapproachapproachtototheirtheirworkworkandanduseuseappropriateapp
16、ropriatetoolstoolsandandtechniquestechniquesdependingdepending onon thethe problemproblem toto bebe solved,solved,thethe developmentdevelopmentconstraintsandtheresourcesavailable.constraintsandtheresourcesavailable.TheTheapplicationapplicationofofa asystematic,systematic,disciplined,disciplined,quan
17、tifiablequantifiableapproachapproachtotodevelopment,development,operation,operation,andandmaintenancemaintenanceofofsoftware;software;thatthatis,is,thethe applicationapplication ofof engineeringengineering toto software.software.(IEEE IEEE Standard Standard Computer DictionaryComputer Dictionary,610
18、.12,ISBN1-55937-079-3,1990),610.12,ISBN1-55937-079-3,1990)SoftwareSoftwareengineeringengineeringisisconcernedconcernedwithwiththethetheories,theories,methodsmethodsandandtoolstools forfor developing,developing,managingmanaging andand evolvingevolving softwaresoftware products.products.(Sommerville,6
19、Ed.)(Sommerville,6Ed.)A discipline whose aim is the production of quality software,delivered on time,within budget,and satisfying users needs.(StephenR.Schach,SoftwareEngineering,2ed.)Multi-personconstructionofmulti-versionsoftware(Parnas,1987)The technological and managerial discipline concerned wi
20、thsystematicproductionandmaintenanceofsoftwareproductsthataredevelopedandmodifiedontimeandwithincostconstraints(R.Fairley)Adisciplinethatdealswiththebuildingofsoftwaresystemswhicharesolargethattheyarebuiltbyateamorteamsofengineers(Ghezzi,Jazayeri,Mandrioli)EarlyComputerProgrammingHigh-LevelLanguageP
21、rogrammingControlFlow-BasedDesignDataStructured-OrientedDesignDataFlow-OrientedDesignObject-OrientedDesignEmergenceofSoftwareEngineeringNotableChangesinSoftwareDevelopmentPractices AnAnimportantimportantdifferencedifferenceisisthatthatthethemainmainemphasisemphasishashasshiftedshiftedfromfromerror c
22、orrection error correction totoerror prevention.error prevention.InIn exploratoryexploratory style,style,codingcoding waswas consideredconsidered synonymoussynonymous withwithprogramprogramdevelopment.development.Now,Now,codingcodingisisregardedregardedasasa asmallsmallpartpartofofthedifferentactivi
23、tiesundertakenforprogramdevelopment.thedifferentactivitiesundertakenforprogramdevelopment.AAlotlotofofefforteffortandandattentionattentionisispaidpaidtotorequirementsrequirementsanalysisanalysisandandspecification.specification.PeriodicPeriodic reviewsreviews areare carriedcarried outout duringdurin
24、g allall stagesstages ofof thethedevelopmentprocess.developmentprocess.TodayTodaysoftwaresoftwaretestingtestinghashasbecomebecomemoremoresystematicsystematicandandforforwhichwhichstandardtestingtechniquesareavailable.standardtestingtechniquesareavailable.Thereisbettervisibilityofdesignandcode.Therei
25、sbettervisibilityofdesignandcode.InIn exploratoryexploratory style,style,designdesign andand testtest activitiesactivities werewere notnotdocumentedsatisfactorily.documentedsatisfactorily.SeveralSeveral techniquestechniques andand toolstools forfor taskstasks suchsuch asas configurationconfiguration
26、management,management,costcostestimation,estimation,schedulingschedulingandandtasktaskallocationallocationhavehavebeendevelopedtomakesoftwaredevelopmentmoreeffective.beendevelopedtomakesoftwaredevelopmentmoreeffective.Projectsarebeingthoroughlyplanned.Projectsarebeingthoroughlyplanned.Keychallengesf
27、acingSoftwareEngineeringHeterogeneityDevelopingtechniquesforbuildingsoftwarethatcancopewithheterogeneousplatformsandexecutionenvironments;DeliveryDevelopingtechniquesthatleadtofasterdeliveryofsoftware;TrustDevelopingtechniquesthatdemonstratethatsoftwarecanbetrustedbyitsusers.Software Life Cycle Mode
28、lsA A life life cycle cycle model model prescribes prescribes the the different different activities activities that that need need to to be be carried carried out out to to develop develop a a software software product product and and the the sequencing sequencing of these activities.of these activ
29、ities.A A software software life life cycle cycle is is a a series series of of identifiable identifiable stages stages that that a a software product undergoes during its life time.software product undergoes during its life time.A A software software life life cycle cycle model model is is a a desc
30、riptive descriptive and and diagrammatic diagrammatic representation of the software life cycle.representation of the software life cycle.DefinitionsImportance It It encourages encourages development development of of software software in in a a systematic systematic and and disciplined manner.disci
31、plined manner.It It forms forms a a common common understanding understanding of of the the activities activities among among the the software software engineers engineers which which is is essential essential while while developing developing a a large large scale software product involving several
32、 teams.scale software product involving several teams.A A documented documented life life cycle cycle model model mandates mandates a a software software development development organization organization to to accurately accurately define define every every activity activity in the life cycle.in the
33、 life cycle.A A good good life life cycle cycle model model should should unambiguously unambiguously define define the the entry and exit criteria for each phase.entry and exit criteria for each phase.PopularSoftwareLifeCycleModelsClassicalWaterfallModelIterativeWaterfallModelPrototypingModelEvolut
34、ionaryModelSpiralModelTheRADModelTheConcurrentDevelopmentModelComponentBasedDevelopmentModelFormalMethodsModelUnifiedProcessModelClassicalWaterfallModelFeasibilityStudyRequirement analysisand specificationDesignCoding andunit testingIntegration andSystem testingMaintenance10203040506070%EffortPhases
35、Relative effort distribution among different phases of a typical productFeasibility StudyThe aim of the feasibility study is to determine whether developing the product is financially and technically feasibleThe data collected in this phase are analyzed to arrive at the following:An abstract definit
36、ion of the problem.Formulation of the different solution strategies.Examination of alternative solution strategies and their benefits,indicating resources required,development,cost and time in respect of each of the alternative solutions.A cost/benefit analysis is performed to determine which soluti
37、on is the best.At this stage,it may also be determined whether any of the solutions is not feasible due to high cost,resource constraints,or extraordinary technical reasons.Requirement Analysis and SpecificationThe aim of the requirement analysis and specification phase is to understand the exact re
38、quirements of the customer and to document them properly.This phase consists of two distinct activities:Requirement analysisRequirement specificationThe goal of the requirements analysis is to collect and analyze all related data and information with a view to understanding the customer requirements
39、 clearly and weeding out inconsistencies and incompleteness in these requirements.During requirements specification,the user requirements are properly organized and documented in a SRS document.The SRS document addresses the functional requirements,the nonfunctional requirements and the special requ
40、irements on the maintenance and development of the software product,if any.DesignThe goal of the design phase is to transform the requirements specification into a structure that is suitable for implementation in some programming language.Two distinct design approaches followed in different industri
41、es are:Traditional design approachStructured analysisArchitectural designObject-oriented designCoding and Unit TestingThe purpose of this phase(also called the implementation phase)of software development is to translate the software design into source code.The end product of the implementation phas
42、e is a set of program modules that have been individually tested.Integration and System TestingDuring this phase the different modules are integrated in a planned manner.The different modules making up a system are almost never integrated in a single shot.The goal of system testing is to ensure that
43、 the developed system functions according to its requirements as specified in the SRS document.The system testing usually consisting of three different kinds of testing activities:-testing-testing,andAcceptance testingMaintenanceMaintenance involves performing any one or more of the following three
44、kinds of activities:1.Correcting errors that were not discovered during the product development phase.This is called corrective maintenance.2.Improving the implementation of the system and enhancing the functionalities of the system according to the customers requirements.This is called perfective m
45、aintenance.3.Porting the software to a new environment,e.g.to a new computer or to a new operating system.This is called adaptive maintenance.Limitations of Classical WFMLimitations of Classical WFMThe Classical WFM considers the transition between phases to be similar to a waterfall.The model assum
46、es that all requirements are defined correctly at the beginning of the project and on the basis of that the development work starts.The model assumes that all the phases are sequential.Phase Containment of ErrorsPhase Containment of ErrorsThe principle of detecting errors as close to their points of
47、 introduction as possible is known as phase containment of errors.IterativeWaterfallModelFeasibilityStudyRequirement analysisand specificationDesignCoding andunit testingIntegration andSystem testingMaintenanceWaterfall model by Boehm(1981)Limitations of Iterative WFMLimitations of Iterative WFMThe
48、model cannot handle the different types of risks that a real life software project may suffer from.It cannot be satisfactorily used in projects where the customer if not clear about his/her requirements and can provide rough requirements only.Most real life projects find it difficult to follow the r
49、igid phase sequence prescribed by the waterfall model to achieve better efficiency and higher productivity.A rigid adherence to the waterfall model would create blocking states in the system.PrototypingModelRequirements gatheringQuick designRefine requirementsBuild prototypeCustomer evaluation of th
50、e prototypeDesignImplementTestMaintainPrototyping can be of two types:Evolutionary prototypingEvolutionary prototyping The rapid throughaway prototypingThe rapid throughaway prototypingEvolutionaryModelThis model is also known as the successive versions model.In this model,the system is first broken
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100