SlideShare a Scribd company logo
1 of 30
Software Engineering
Unit1: Introduction
What is Software Engineering?
Software Engineering is the field of computer science that deals with the building of large or complex
software systemsbyateam of software engineers or programmers. The software systems usually exist in
multiple versionsandare usedformany years.Duringthe lifetimeof these softwares,theymay have many
changesto fix the defects,toenhance the existingfeatures,toremove oldfeaturesor to be adapted to run
in a new environment.
Software Engineering is also defined as “multi-person construction of multi-version software”. There is
difference between programming and software engineering. A programmer writes a complete program,
while asoftware engineerwritesasoftware componentthatwill be combinedwithcomponentswritten by
other software engineers to build a complete system. The component written by one software engineer
may be modifiedbyothersoftware engineersoritmay be usedby otherstobuilddifferent versions of the
system. Programming is primarily a personal activity, while software engineering is essentially a team
activity.
History of Software Engineering
The term software engineering was introduced in the late 1960s after realizing that all the ideas about
programmingwere notenoughtobuildabettersoftware system.Even the introduction of algorithms and
structuredprogrammingwere notable tosolve the majordifficultiesinbuildinglarge software systems.An
engineering approach was needed to
a) clearly define the problem to be solved
b) use and develop standard tools and techniques for solving it
The problemsseen in building large software systems were not well understood and programmer had to
spend a lot of time communicating with each other rather than writing codes. Many solutions were
proposed like using better management techniques, different team organizations, better programming
languagesand tools, and use of mathematical approaches. Finally, it was realized that large and complex
software systems should be built just like how engineers build bridges, airplanes, factories etc. The
engineeringapproachrequiredmanagement,organization,tools,theories,methodologies,and techniques
and thus the term software engineering was born.
Economicsisanotherreasonfor software engineeringtogainsomuch importance.Worldwide expenseson
software systems have increased from millions to billions in recent years. We can see softwares
everywhere inoursociety; in machines, aircrafts, medical devices, etc. This is also another reason for the
rapid development of software engineering.
Role of Software EngineeringinSystemDesign
Usuallya software systemisaseenas a componentof a much largersystemandthe software engineering
activityisa part of a much largersystemdesignactivityinwhichthe softwarerequirementsshouldbe
matchedwiththe requirementsof othersystems.Fordesigningasoftware systemfora departmental
store,we have to considerthe employeesattendance,store management,computingfacilities,telephones
and cablesetc.So itis expectedthatthe software systemthatisto be developedshouldmeetall the
requirementsof the whole system.
Nowadayssoftware isbeingusedineveryotherdeviceliketelevisionsetstomobile devices,from
entertainmenttomedical devices.Soasoftware engineerneedstoknow the general problemsand
requirementsof systemengineering.Forapropersystemdesign,asoftware engineerneedto
a) knowthe requirementsof the whole system
b) understandthe applicationareabeforestartingthe interface
The software life cycle
Everysoftware systemundergoesagradual developmentandevolutionfromthe starting until itis
implementedanddelivered.Inthisregard,asoftware systemissaidtohave a life cycle composedof
several phases.Eachphase giveseitherapart of the systemora componentassociatedwiththe system.A
traditional lifecycle model calledthe “waterfall method”hasthe followingphases:
a) RequirementAnalysisandSpecification:
- Requirementanalysisisthe firstphase andiscarriedout aftera feasibilitystudy
- Feasibilitystudydefinesthe costandbenefitsof asoftware system
- Thisphase identifiesthe exactrequirementandthe studyiscarriedout by the customer,
developer,marketingmanagerorbyall
- A lotof interactionisneededbetweenthe userandthe developerif the requirementsare not
clear
b) SystemDesignandSpecification
- Once requirementanalysisisdone,the software engineerstartsdesigningthe software system
- Thisphase is dividedintotwosub-phases
o Architectural orhighlevel design
 Definesthe overallorganizationof the systemintermsof high-level
componentsandinteractionsamongthem
o DetailedDesign
 Componentsare decomposedtolowerlevel moduleswithpreciselydefined
interfaces
- Usuallyanswersthe what-how questions
- Makes clearaboutwhat the problemisandhow it can be solved
c) CodingandModule Testing
- The software engineerwritesthe exactcode thatisto be deliveredtothe enduser as a
runningsystem
- Codesforprototypesandtestingmayalsobe writtenbythe developers
- All the codesand modulesare testedbefore beingdeliveredtothe nextphase
d) IntegrationandSystemTesting
- All the modulesdevelopedare integratedandtestedasawhole system
- If the testinggivespositiveresults,thentheyare forwardedforthe nextphase. Otherwise
rollbackchangesmaybe carried outand debugging/maintenance of the module isperformed
e) DeliveryandMaintenance
- Once the systempassesall the tests,itisdeliveredtothe customerandthe systementersinto
the nextphase of maintenance
- Any modificationafterthe deliveryof the systemare usuallytakeninthisstep
RelationshipofSoftware Engineeringtoother areas ofcomputer science and other disciplines
Today software engineeringhasmade itsownmark as an importantfieldof computer science andis
makingan influentialpresence inotherfieldsaswell.The followingfieldsof computerscience are related
withthe software engineering
1. ProgrammingLanguages
- Programminglanguagesare the central toolsforsoftware development andare related
intenselytoachieve the software engineeringgoals
- Today mostprogramminglanguagessupportthe modularityfeature,ie,beingable todo
separate andindependentcompilation.Thisfeaturelargelyhelpsforteamdevelopmentof
large software
- Alsothe introductionof exception-handlinginprogramminglanguagesallowstodetectand
solve the problemswhile the software isrunning
- For startinga newsoftware onany programminglanguages,properrequirementanalysisand
designspecificationisnecessary;which are largelyinfluencedbysoftware engineering
2. OperatingSystem
- Operatingsystemswere the firstlarge software systemsandwere the firstone toget
engineered.
- Most of the software designingideaswere originatedfrombuildingoperatingsystems
- Conceptsinlarge software systemslikevirtual machines,levelsof abstractionandseparation
of policiesare all initiallyintroducedfromoperatingsystem
- Conceptsandtechniquesfromthe structuresof anoperatingsystemare consideredwhile
developinglarge software systems
3. Databases
- Databasesisanotherclassof large software systemsthatinfluencedsoftwareengineering
- Data independence isthe feature of moderndatabasesthatinfluencesfordevelopinglarge
software systems
- Data independence allowsapplicationstobe writtenthatuse datawithoutworryingaboutthe
underlyingrepresentationsof the data
- Anotherimpactof database technologyon software engineering isthatit allowsdatabase
systemstobe usedas componentsof large software systems
4. Artificial Intelligence
- Many software systemsbuiltinthe fieldof artificial intelligence are large andcomplex systems.
- AI basedsoftware systemswere developedusingthe ideaof exploratorydevelopmentwhichis
slightlydifferentthansoftware engineering
- In exploratorydevelopment,the designergoesthroughwell-definedstepsattemptingto
produce a complete designbefore proceedingtocoding
- AI hasgivenrise tonewtechniques indealingwithspecifications,verificationandreasoning
5. Theoretical Models
- Theoretical Modelsbasedoncomputerscience are alsothe useful toolsof software
engineering
- finite state machinesprovidesbasisforsoftware specificationsandmodelsforsoftware design
and structure
- communicationprotocolsandlanguage analyzersuse finite-state machines
Software Engineeringinotherdisciplines
1. Management
- Anynewinvestmentornewprojectneedsestimation,scheduling,humanresource planning,
task assignmentandtracking
- Software engineeringconceptsandapproachesalso providesmanagementscience about
testingmanagementtheoriesandmodels
2. SystemEngineering
- Systemengineeringalwaysstudiesaboutcomplex systemsandall complex systemsis
composedof manycomponents
- Software isoftenacomponentinmanycomplex systemsandsoftware engineeringcanbe
appliedinmostsystemengineeringdesigns
Unit2: Tools and Environments
Introduction
Software engineeringactivityalwaysinvolvesalarge numberof people performingasetof activitiesto
produce a large numberof components.The objectiveof toolsandenvironmentistosupportthe
development,verification,maintenance,andevolutionof processesandthe components.
A tool supportsa particularactivitywhile anenvironmentisthe collectionof relatedtools.The toolsand
environmentsaimsatautomatingsome of the activitiesinvolvedinsoftware engineering.Sometime tools
are necessarytosupportan activitybutat timestheyonlyhelptomake some taskseasierandefficient.
Historical Evolutionof tools and environments
The toolsand environmentsof software engineeringare influencedbytwofactors
- Technological developments
- Betterunderstandingof softwareengineeringprocesses
In earlydays,the software engineeringactivitywaslimitedtoprogrammingand toolsavailable were just
the editorsandcompilers.Laterthe introductionof filesystemsenabledtostore the programsonline and
to share withotherprogrammers.The sharingof filesledtothe needof configurationandversion
managementtoolsandothertoolstosupportthe team activities.
Introductionof graphical displaysandgraphical userinterfacesalsoinfluencedthe developmentof new
toolsto graphicallyexpress the designs.The introductionof distributedplatformsalsoinfluencedthe
developmentof newtoolsfordistributedconfigurationmanagementandteamwork.Groupwares were
developedtosupportteamsregardlessof theirdistance andalsoarrangedmemberstohave virtual
meetings.Software distributionanddeploymenttoolswerealsodevelopedeventually.
Duringthe earlierdaysof software engineering,individualtoolswere developed tosupportsingle activities
like compilinganddebugging.Later,the integratedenvironmentwere introducedthatconsistedtoolsthat
workedtogether.Developmentinopenenvironmentledtothe introductionof toolswithpublicinterfaces
that allowscommunicationbetweenothertools
Classificationoftools and environments
Software toolscanbe classifiedaccordingto
- The level of formalitytheyenforce
- The life cycle phase theysupport
- The interface theyprovide
Software toolscanbe classifiedaccordingtothe following criteria
1. Interactionmode
- Software toolsare categorizedasbatchorientedorinteractive
- Batch orientedtoolssupport the applicationof unitof operationstoacollectionof documents
- Interactive toolsare useful tomake change andto see the resultof the change immediately
- It isdesirable thattoolswithsupportforbothinteractive andbatchmodesof operation
2. Interface Format
- Software are developedwiththe objective of supportingthe human-machineinterface
- The initial interfaceswere all textual andcommandbased.Thenthe introductionof graphical
toolsbroughtthe GUI
- Technologiessuchasthe multimediainterfaces,color,and hypertextsare widelyusedtomake
human-computerinterface more easierandproductive
- Software toolswithsupportforviewinghigh-level designanddetailsof moduleshelpinquick
browsingof large designs
3. Level of Formality
- Software developersproduce avarietyof documentsandmodulesduringthe software
developmentandeachdocumentandmodulescanbe writteninany language whose syntax
and semanticscanbe definedinmore orlessformal ways
- The functionalitythatsoftware toolsprovide, ishighly dependentonthe level of formalityof
the language
- A compilercanbe builtonlyfora language whose syntax andsemanticsare known,while an
editorcan be builtforany language
4. Dependencyonphase of life cycle
- Software toolsare usedindifferentactivitiesandsome of themare designedtohelpinspecific
activitythatis limitedtoacertainphase of the software life cycle
- Toolscan be classifiedonthe basisof the phase theyare intendedtosupport
- Some toolsare usedto write requirementspecifications,some forspecifyingmodules,some
for editingcodesandsome fordebugging
5. Degree of Standardization
- Standardizationof anitemenhancesitsapplicabilitybutalsofreezesitsevolution
- Whena methodor language isstandardized,software producers investmore indeveloping
supportfor it.
- Usingstandardizedtoolsguaranteesthe supplyof skilledpeople andportabilityof their
knowledge fromone projecttothe next
- Usingnon standardizedsoftware toolsorOS,reducesthe availabilityof skilledpeople andadds
overheadof training
6. Language dependency
- Some toolsare associatedwitha particularlanguage whichare calledmonolingual,while other
toolsare language independentalsoknownaspolylingual
- For eg,texteditorscanbe usedforany programminglanguage while there are specialized
graphical editorsforUML diagramsor DFDs
- Compilersare typical examplesof monolingual toolswhile OSlike UNIX,Windowsare
polylingual
- In general monolingualtoolsprovidemore specializedhelpbutpolylingual environmentis
more openand portable
7. Staticversusdynamictools
- Statictoolsare appliedtocreate,modifyandverifythe consistencyof objectswithrespectto
some rules,propertiesorsome constructs.
- Eg of statictool is the documentor programminglanguage parserthatchecksthe correctness
of syntaxes
- A tool that requiresexecutionof the objectitoperatesoniscalledadynamictool
- Most simulationprogramsare examplesof dynamictools
- Statictoolssupportthe analysisof modelswhiledynamictoolssupportthe simulationof
models
8. Developmenttoolsvsendproductcomponents
- Some toolssupportthe developmentof endproductsanddoesn’tbecome partof them
- Othertoolsare part of the software componentandalsoisincludedasa part of the end
productas well,usuallyprovidedasa run time supportlibrary
9. Single uservsmultiusertools
- Some toolssupportone userat a time while some supportmultipleusersata time
- Single usertoolsare usedforpersonal activitieswhile multiusertools are usedforgroups
10. Single machine vsnetwork-awaretools
- Withthe introductionof internet,the sharingof resourceshasspreadfromusersfromsingle
machine tomultiple machinesacrossthe network
- Toolsmustsupportthe manipulationof objectsacrossthe network
Representative Tools
Representative toolsare the mostimportantclassesof software productiontools.The common
representative toolsare
1. Editors
- Editorsare the fundamental software developmenttool thatsupportthe creationand
modificationof documentsandmodules
- Theycan be eithertextual orgraphical
- Theycan followaformal syntax or theymaybe usedforwritinginformal textaswell
- Theycan be eithermonolingualorpolylingual
- Editorsare flexibleandeasytointegrate withothertools
2. Linkers
- Linkersare toolsthat are usedtocombine mutual objectsintolargerobjects
- Linkerscan be bothmonolingual orpolylingual
- The concept of linkerhasmore applicabilitythanthe programminglanguages
3. Interpreters
- An interpreterexecutesactionsasspecifiedinthe inputcode.
- It can be a hardware device thatexecutesthe machine code,oritcan be a prototype ora
simulatorof the endproduct
4. Code Generators
- Afterthe requirement specification,the implementationof the software constructionisdone
by the code generators
- It isperformedbythe compilers
- An optimizerisusedasa translatorto supportthe stepwise transformationof specifications
intoimplementations
- Fourthgenerationtools(thatare centeredaroundadatabase system) are widelyusedinmost
businessapplications
5. Debuggers
- Debuggersare the special typesof interpretersandtheyexecuteaprogramwiththe purpose
of helpingtolocalizeandfix errorsbyapplyingdebuggingprinciples
- Debuggersgivesthe userthe followingcapabilities
o To inspectthe executionstate inasymbolicway
o To selectthe executionmode;likeselectingastep-by-stepexecutionorsetting
breakpoints
o To selectthe portionof the executionstate andthe executionpointthatwill be
inspectedwithoutmanuallymodifyingthe source code
Unit3: Software Specification
Introduction
Specificationisaprecise statementof the requirementsthatthe systemmustsatisfy.A specificationnot
onlyspecifiesthe requirementsof the final system, butalsothe componentsthatwill be usedtomake up
the system.
Specificationcanalsobe viewedasthe statementof anagreementbetweenaproducerof a service anda
consumerof the service orbetweenanimplementeranda user.
A requirementspecificationisanagreement betweenthe enduserandthe systemdeveloper.A design
specificationisanagreementbetweenthe systemarchitectandthe implementers.A modulespecification
isan agreementbetweenthe programmersusingthe module andthe programmerimplementingthe
module.
The usesof specification
Specificationcanbe usedforthe followingmajoruses
1. A statementof userrequirement
The primaryobjective of asoftware productisto meetthe user’srequirementandtheyare not
alwaysclearlyunderstoodbythe developer.A careful analysiswithinteractionwiththe usershould
be done to clarifyandprepare a statementof requirementwithoutanymisunderstandings.
Initiallyevenauserdoesn’thave the clearideaabouthow the productshouldbe and itlacks
precise formulationof systemfunctionsandperformance requirements.
Sometimesthe requirementsare veryclearandthe specificationsare straightforward.The same
specificationcanbe usedbydifferentproducerstoproduce the same product.Suchspecificationis
knownas standardspecification.
2. A statementof the interface betweenthe machine andthe controlledenvironment
Computersinteractwiththe externalenvironmentbyreceivingthe inputsandprovidingoutputs.
Anyincorrectspecificationcanhave seriousandundesirable effects.Itisnecessarytospecifythe
interface betweenthe machineandthe controlledenvironmentbydescribingprecise inputs,
outputsand the expectedrelationships.
3. A statementof the requirementsforthe implementation
Specificationsare usedasa reference pointwhile the productisbeingimplemented andthe
ultimate goal of implementationistobuildaproductthat meetsthe specifications.The
specificationisusedduringthe designphase tomake designdecisionsandduringthe verification
activitytocheck that the implementationmatchesthe specifications.
4. A reference pointduringproductmaintenance
Several kindsof maintenance occurduringa product’slife cycle andall involvespecifications.In
corrective maintenance,onlythe implementationischangedandspecificationsare neededto
checkwhetherthe newimplementationcorrectsthe errorscontainedinthe previousversionof
the product. Adaptive maintenance occursincase of changesinthe requirementsandsuch
changesare modificationsof the functionalityof the product.Inperfective maintenance,the
functional requirementsdonotchange andthe designof the productmaybe restructuredto
improve the performance.Inall sortof maintenance,specificationsactasa reference statement
for the developers.
Classificationofspecification
Specificationscanbe classifiedas
- informal
- formal
- semiformal
Informal Specificationare writteninnatural language and makesuse of figures,tablesandothernotations
to provide more structure andhelpthe understandingof the systemthatisbeingbuilt.Sometimestheycan
alsobe structuredina standardway.
In some specification,anotationhasa precise syntax andmeaninganditisknownas formalism.Formalism
isusedto create a formal specification.
Semiformal specificationuse notationswithoutinsistingacompletelyprecise semantics.
Specificationscanalsobe classifiedas
- operational
- descriptive
Operational specificationsdescribethe intendedsystembydescribingitsdesiredbehaviorandalsoprovide
a model implementationof the system. Descriptive specificationstrytostate the desiredpropertiesof the
systemina purelydeclarative way.
Verificationofspecification
Specificationsmustbe verifiedbeforestartingthe implementationinordertoassesstheircorrectness.
There are twogeneral waystoverifythe specification.
The firstone consistsof observingthe dynamicbehaviorof the specifiedsystemtocheckwhetherit
matchesto the understandingof the general behaviorof the ideal system.
The secondone consistsof analyzingthe propertiesof the specifiedsystemthatcan be deducedfromthe
specification.The propertiesthatare deducedare thencheckedagainstthe expectedpropertiesof the
system.
Types ofOperational Specifications
1. Data Flow Diagrams (DFDs)
- Widelyusednotationforspecifyingthe functionsof an informationsystemandshowshow
data flowfromfunctionstofunctions.
- Theydescribe systemasa collectionof functionsthatmanipulatedata
- Data in DFD are storedindata repositories,theyflow indataflowsandtheyare transferredto
and fromthe external environment
- DFDs are expressedingraphical notationsare theyare easyto use
- The basic elementsof DFDare
o Functionsare representedbybubbles
o Data flowsare representedbyarrows.Arrowsgoingtobubblesrepresentthe inputand
outgoingarrowsindicate the resultsof the function.
o Data storesare representedbyopenboxes
o Special boxesare usedtorepresentthe inputandoutput
Fig: graphical symbols used to build a dfd
Dfd for library information system
2. UML (UnifiedModelingLanguage) diagrams
- UML is a collectionof languagesthatprovide specificnotationstospecify,analyze,visualize,
construct anddocumentthe componentsof a software system
- Such notationsare usedbythe software engineerstoproduce standarddocumentsthat
containsdifferentdiagramsthatexplainscertainpropertiesof the software system
- UML includesasetof graphical notationtechniquestocreate visual modelsof software
systems
- Use case diagrams,sequence diagramsandcollaborationdiagramsare the techniquesof UML
that are usedtomode the dynamicaspectsof a software system
- Use case diagramsprovidesaglobal view of the componentsof the systemandthe actionsthat
the systemperforms
- Use case diagramsdescribe the overall contextof the systembypartitioningthe system
functionalityintotransactionsthatare useful tothe componentsandshowshow theyinteract
withthe system
Fig: use case diagram for a LMS
- Sequence diagramsandcollaborationdiagramsare the twoequivalentnotationsthatcanbe
usedto describe howobjectsinteractbyexchangingmessages
- Theyprovide adynamicview of a systembygraphicallydisplayingscenariosthatmayoccur at
run time whenobjectsinteracttoaccomplishcertaintask
- The sequence diagramvisuallyindicatesthe progressionof time inthe vertical directionand
the sequence of messagesexchangedbetweenthe objects
- Collaborationdiagramsmake the structural propertiesof the collaborationof the objectsmore
clear
Fig: sequence diagram for LMS
Fig: collaboration diagram for LMS
3. Finite State Machines
- Informationsystemsandcontrol systemsall have functionalanddataaspectsas well ascontrol
aspects.
- FSMs are simple andwidelyused andformal notationfordescribingthe functionalandcontrol
aspectsof a system
- FSMconsistsof
o A finite setof states,denotedbyQ
o A finite setof inputs,denotedbyI
o A transitionfunction,denotedby ∂:Q x I
- FSMare suitable fordescribingsystemsthatcanbe in a finite setof statesandcan go from one
state to anotheras a resultof some event,modeledbyaninput
fig: FSMillustration of a lamp
4. Petri nets
- Alsoknownasplace/transitionnetorP/Tnetisa mathematical modelinglanguage for
analyzingandspecifyingasoftware system
- A petri netisa specializedgraphinwhichthe nodesrepresentthe transitions(eventsthat
occur, representedbythe bars)andplaces(conditionsrepresentedbycircles)
- Petri netsofferagraphical notation forstepwise processesthatinclude choice, iteration,and
concurrentexecution.
- Petri netshave an exactmathematical definitionof theirexecutionsemantics,withawell-
developedmathematical theoryforprocessanalysis.
- A petri netisdefinedbyaquadruple (P,T,F, W) where
o P isa finite setof places
o T is a finite setof transitions
o P U T ≠ø
o F {P X T} U {T X P} is the flow relation
o W: F N-{0} isthe weightfunctionwhichisanon-zerovalue toeachelementof P.
If no weightvalue isassociatedwiththe flow,the defaultvalue 1isassumedforthe
function
P1 T1 P2 T2 P3
T6 T3
P6 T5 P5 T4 P4
Fig: simple illustration of Petri Net
Unit4: Software DevelopmentProcess
Introduction
The processthat is usedtobuild,anddeploythe software productfromthe initial state tothe deliveryand
final retirementof the systemiscalledthe software development process.The goal of everydevelopment
processisto satisfycustomersbydeliveringqualityproductsontime andwithinbudgetbymakingthe
productsprofitable andproductionreliable,predictable andefficient.Bydefiningamodel of the software
developmentprocess,we cangetsome advantagesof standardizedprocesses.
Software DevelopmentProcessModels
The code-and-fixmodel
In earlydaysof software development,itonlyconsistedof codingthe applicationinsome low level
language andthe model usedinthose dayswascalledthe code-and-fix model.The code-and-fix model
consistsof twosteps
1. Write the code
2. Fix the detectederrors
Thismodel hadmany difficultiesanddeficienciesbecausethe structure of the code becomesmessyon
multiple changes andotherchangesare harderto applyandthe resultsare lessreliable.
Shrink-wrappedmodel
As the computingtechnologyexpanded,the needfornew softwaresalsoincreased.Peoplewithlittle or
no knowledgeof computersandprogrammingbecame the basic usersof the software applications.Soa
newsoftware developmentmodel calledthe shrink-wrappedsoftware isdevelopedonrequestfroma
customerforthe general marketusage orsometimesasembeddedinotherconsumerproducts.
Boehmstatesthe goalsof structuredsoftware developmentprocessmodelsare to
1. Determine the orderof stagesinvolvedinthe software development
2. Establishatransitioncriteriaforprogressingfromone stage toanother
A software developmentprocessmodel addressesthe following questions
1. What shall we donext?
2. How longshall we continue todoit?
The processmodelsprovides
1. Guidance to the software engineersaboutthe technicalactivitiestobe carriedoutduringa project
2. A frameworkformanagingthe developmentandmaintenance, estimationof resources, defines
milestonesandmonitorsprogress
The well-knownsoftware developmentprocessmodelsare
1. Waterfall model
- The most popularmodel formostsoftware engineeringandindustrial practices
- The waterfall methodisastructured processinwhichthe activitiesare in linearphases
- The outputof one phase acts as an inputto anotherphase
- The phasesof waterfall methodare
o Feasibilitystudy
o Requirementanalysis
o Design
o Codingandmodule testing
o Integrationandsystemtesting
o Delivery,deploymentandmaintenance
Fig: the waterfall model
2. Waterfall model withexplicitfeedbackloop
- The waterfall model statesthatthe software developmentprocessshouldbe subjected, to
discipline,planningandmanagement
- It alsostatesthat the implementationof the productshouldbe postponeduntilthe objectives
are well understood
- The waterfall model isbasedonthe assumptionthatthe software developmentprocessisa
linearactivitythatstartsfrom analysisandgoestocoding.But thiscannot happeninreal world
case andthe processconsidersadisciplinedformof feedbackloops
- The feedbackloopistominimize the reworkinvolved of previousphases
fig: waterfall model with feedback loop
3. EvolutionaryModel
- The stagesof evolutionarymodel consistsof incrementsof anoperational software product,
withthe directionof evolutionbeingdeterminedbyoperational experience
- The incrementmeansthe updatesandnew changesonan existingsoftware product
- Incrementsmaybe deliveredtothe customer astheyare developedandthisiscalled
evolutionaryorsometimesalsocalledincremental delivery
- Thismodel getsan additional valueof earlyuserfeedback
- The developmentstrategybehindanevolutionarymodel is
o Developsomethingforthe user
o Measure the addedvalue tothe userinall critical dimensions
o Adjustthe designandthe objectivesbasedonobservedrealities
4. TransformationModel
- The transformationmodel viewsthe softwaredevelopmentprocessasasequence of stepsthat
graduallytransformsaspecificationintoanimplementation
- Initiallythe requirementsare analyzedandfunctionsare alsospecifiedpossiblyinan
incremental manner
- Thenthe developmentprocessstartsandtransformsitintoa more detaileddescription
- As the processcontinues,the descriptionbecomesexecutable anditcan alsobe viewedasa
prototype
- Furthertransformationmayoccur to make the executabledescriptionmore efficient
5. Spiral model
- The spiral model providesaframeworkfordesigningprocessesincludingthe risk levels
associatedwiththem
- It isalso knownasmetamodel andcanaccommodate any otherdevelopmentmodel withinit
- It providesaviewof the productionprocessthatsupportsthe riskmanagement
Fig: spiral model
- A spiral model iscyclicunlike thatof waterfall model whichislinear.Itinvolvesthe rapid
generationof subsequentphasesduringthe software developmentprocess
- The spiral model allowscheckingthe robustnessandcorrectnessof the phases.Aftereach
cycle of the spiral,the requirementsare checkedaspartof the robustnessof the application
Organizingthe process (needmore with figures)
Organizingthe software developmentprocessisacritical activitythatinvolvesthe managementof people
to the managementof all otherproductsand componentsassociatedwiththe software developmentlife
cycle.It alsoinvolvesthe definitionof appropriatemethodsandtheircombinations.The various
methodologiesfororganizingthe software developmentprocessare
1. StructuredAnalysis/StructuredDesign (SA/SD)
- Thismethodaddressesthe twophasesof software development;the analysisandthe design
- In requirementandanalysisphase,the SA/SDusesthree conceptualtools
o Data flowdiagrams(DFD)
o Data dictionary
 It isa centralizedcollectionof definitionsof all dataflowingamongfunctions
and to or fromthe data stores
 It helpstoremove the duplicationandinconsistencies
o StructuredEnglish
 It ishighlyconstrainedsubsetof natural language todescribe the data
transformationperformedbyeachpartof the DFD
2. Jackson'sSystemDevelopmentandStructuredProgramming(JSD/JSP)
- It isa populardesignmethodadoptedbymanyorganizationsforbusinessdataprocessing
- It isa technique thatrepresentsamixture of descriptiveapproachesbasedonobjectoriented
designandfunctional decomposition
- Accordingto JSD,the software developmentgoesthroughasequence of three stages
o The modelingstage
o The networkstage
o The implementationstage
- In the modelingstage,the real worldisanalyzedandrepresentedintermsof entitiesand
actionsthat may affectthem
- In networkstage,eachentityismodeledasa process andthe entire systemisviewedasa
networkof interconnectedandcommunicatingprocesses
- In implementationstage,the networkof processesistransformedintoanimplementation.
That is,the concurrentnetworkof processesistransformedintoasequentialsystemthatis
executable byageneral computer
3. The unifiedsoftware developmentprocess(UP)
- It isan industrial standardthatusesthe unifiedmodelinglanguage(UML) throughoutthe
software life cycle
- Usingrich collectionof languagesof UML, the unifiedsoftware developmentprocessaimsto
developanobjectorientedsysteminaniterativeand incremental processmodel
- The principle isthatany software systemshouldbe brokenintocontrollediterationsor
miniprojectsthatprovidethe incrementof the system
- The UP life cycle consistsof asequence of cyclesfromthe project'sinitiationtoitstermination
and afterendof each cycle it hasproduct releases.The subsequentcyclesalsoresultsthe
productreleasesinanincremental manner
Unit5: Software EngineeringPrinciples
Introduction
Software EngineeringPrinciplesare the general andabstractstatementsthatdescribe the desirable
propertiesof software processesandproducts.Suchprinciplesdeal withthe processof software
developmentandthe final product.The principlesdevelopedandusedare enoughthroughoutthe
software constructionandmanagement.
To applyany principles,the software engineermusthave appropriate methodsandspecifictechniquesto
associate the desiredpropertiesintothe final software product. Methodsare general guidelinesthat
governthe executionof some activitywhiletechniquesare more technical andhave restrictedapplicability.
The methodsandtechniquesare sometimespackagedtoforma methodology.Toolsare developedfinally
to supportthe applicationof methods,techniquesandmethodologies.
Rigor and Formality
Rigoris alwaysdefinedasprecisionandexactness,isanecessarycomponentforcreativityinevery
engineeringactivity.Itisonlythroughrigorousapproachthat we can continuouslyproduce reliable
products,control theircostsand increase the confidenceinthe reliabilityof the system.The principleof
rigor doesn'talwayslimitandconstrainthe creativitybutitcanbe usedas a tool to enhance the creativity.
A software engineercanbe more confidentof the resultsof acreative processafterperformingarigorous
assessmentof those results.
In anydevelopmentprocess,variousdegreesof rigorcanbe achieved.The highestdegreeof rigoriscalled
formalityandformalityisastrongerrequirementthanrigor.Formalityrequires the softwareprocesstobe
drivenandevaluatedbymathematical laws.
A software engineermustbe able toidentifyandunderstandthe levelof rigorandformalitythatshouldbe
achieveddependingonthe conceptual difficultyandcriticalityof the task.The level maybe differentfor
differentpartsof the system.Forexample,kernel of OSandsecurityof e-commerce requiresformal
descriptionandapproach(formality),whilewell understoodpartsmayrequire simple approaches(rigor)
Modularity
A complex systemmaybe dividedintosimplerpiecescalledmodulesandsuchsystemiscalledamodular
system.The mainbenefitof modularityisthatitallowsthe principlesof separationof componentstobe
appliedintwophases
1. Whendealingwiththe detailsof eachmodule inisolationandignoringdetailsof othermodules
2. Whendealingwiththe overall characteristicsof all modulesandtheirrelationshipstointegrate
themintoa coherentsystem
If the above twophasesare executedinasequence byconcentratingon modulesandthenontheir
composition,thenthe systemissaidtobe designedinbottom-upapproach.Whenwe decompose modules
firstand thenconcentrate onindividual module designthenthe systemissaidtobe designedintop-down
approach.
Modularityprovidesfourmainbenefitsinsoftware developmentprocess
1. The capabilityof decomposingacomplex systemintosimplerpieces
2. The capabilityof composingacomplex systemfromexistingmodules
3. The capabilityof understandingthe systemintermsof itspieces
4. The capabilityof modifyingasystembymodifyingonlyasmall numberof itspieces
Abstraction
- It isa fundamental technique forunderstandingandanalyzingcomplex problems
- In abstraction,the importantaspectsof a software processare identifiedandthe detailsare
sometimesignored.
- So abstractioncan be saidas a special case of separationof concernswhere the importantaspects
are separatedandconcernof lessimportantdetailsare ignored
- Abstractionisnowadayspracticedbyengineersof all fieldsformasteringcomplexity
Anticipationof change
- All software undergoeschangesonaregularbasisand the changesoccur due to the needfor
repairingthe software errorsandforthe needof supportingnew requirements
- Thisqualityisidentifiedasthe maintainabilityof the software process
- It alwaysrequire aspecial efforttoanticipate how andwhere changesare likelytooccurand
designerscantryto identifythemandtake special care tomake these changeseasytoapply
- Software shouldbe designedsuchthatanychangescan be associatedintothe application
smoothlyandsafely
- Softwaresare designedwithoutfullyunderstandingthe requirementsandonthe basisof users
feedbackthe applicationsevolvefromoldrequirementtonew requirements.Thusanticipationof
change is a principle thatwe canuse to achieve evolvability
Generality
- The principle of generalitystatesthateverytime whenwe have tosolve aproblemthen tryto
discovermore general problemthatmaybe hiddenbehindthe currentproblemtobe solved
- The generalizedproblemmaybe lesscomplex andeasiertosolve thanthe original problemand
the solutionof the generalizedproblemmayalsobe reusedtoget the final solutionof the original
problem
- But the generalizedsolutionmaybe more costlyintermsof execution,memoryrequirements,and
developmenttime. Soitisnecessarytoevaluate the importance of the generalizedsolutionswith
respectto theircostand efficiency
Unit6: Software Design
The software designactivity and itsobjectives
Designingisafundamental humanactivityanditprovidesastructure toany complex architecture.It
decomposesasystemintopartsand assignsresponsibilities toeachpart,ensuringthatthe parts fit
togethertoachieve all the goalsof the system.
The designactivityisa fundamental phaseinthe software developmentprocessanditprogressively
transformsthe systemrequirementsthroughanumberof intermediatestagesintoafinal product.In
software engineeringthe designisdefinedassystemdecompositionintomodules.Usually, asoftware
architecture isproducedtoguide the software design.The architectureshowsthe structure and
organizationof the systemtobe defined.
The software architecture includesadescriptionof the maincomponentsof the system, the relationships
amongthese componentsandthe reasonforthe decompositionof the systemintocomponents. The
objective of the software designactivityisthe definitionof the software designaccordingtothe guidelines
of software architecture.
- The software designisaprocessin whichthe viewsof the systemare describedthroughsteps
of increasingdetails.The architectureisdevelopedfirston the basisof systemrequirements.
Then,a highlevel designisproducedonthe basisof the architecture andthena low level
designisderivedonthe basisof the highlevel design.
- The modularityprincipleplaysanimportantrole inthe designof the software system.A
modularsystemisaccomplishedinseveral ways.
Modularizationtechniques
The modularizationtechniquescanbe viewedaccordingtotwoaspectsof software design:
1. The processthat addressesthe problemof definingthe overall structure of the architecture in
termsof relationshipsamongthe modules
2. The processthat dealswiththe designof eachmodule
These twoaspectsare knownasarchitectural designanddetaileddesignrespectively
Modulesare itself awell-definedcomponentsof asoftware system.Itisa collectionof routines,data,data
type definitionsoramixture of all.Generallywe canview amodule asa providerof computational
resourcesandservices.
Mathematicallythe modularstructure of asystemcan be expressedas
S={M1, M2, M3, ………Mn)
Where S isthe software systemandMisthe module
A relationron S definesthatif twomodulesMi andMj are on S thenwe can say that Mi r Mj.
A relationonmodulesare inhierarchyandproducesadirectedacyclicgraph(DAG) that is there are no
cyclesinthe graph of the relationbetweenmodules
Modularizationcanbe achievedbyusingtwotypesof relationsamongthe modules:USESand
IS_COMPONENT_OF
The USES Relation
The USES relationisone of the useful relationsfordescribingthe modularstructure of the software system.
For any twomodulesMi and Mj, we say thatMi USES Mj. It meansthat Mi needsthe presence of Mj and
Mj providesthe resourcesforMi.In such case Mj is calleda server.
The IS_COMPONENT_OFRelation
IS_COMPONENT_OFisanotherrelationamongthe modulesthatisuseful fordescribingdesignsina
software system.Thisrelationallowsdesignerstodescribe anarchitecture intermsof a module thatis
composedof othermodulesthatmaybe composedof othermodulesandsoon.
ObjectOrientedDesign
ObjectOrientedDesignisatechnique thatusesthe designapproachbasedonabstract data typesandthis
designwaspopularbecause of the developmentof objectorientedprogramminglikeC++,JAVA etc.
In OOdesign,there isonlyone type of module used,the abstractdata-type module andwe call such
modulesasclasses.A classusesthe operationsthatmaybe usedtomanipulate itsinstancesandsuch
operationsare definedbyprocedurescalledthe methods.
OO designinsistsonidentifyingclassesandrelationsamongthe classes andUnifiedModelingLanguage
(UML) notationsare widelyusedfordescribingthe OOdesigns
Handling Anomalies
Designingthe software productscanbe complex evenif we use asystematicdesignapproachfollowedby
rigorousand disciplinedimplementationtechniques.The designershouldalwaysanticipate failure and
shouldplantoavoidor tolerate themandmustemploya defensivedesign.A robustsystemshouldbe built
that couldcontinue tobehave reasonablyeveninunexpectedcircumstances.
In software engineering,amodule issaidtobe anomalousif itfailstoprovide aservice asexpectedand
specifiedinitsinterface.
Unit7: Software Verificationand Validation
Introduction
Eventhoughsoftware engineersadoptthe latesttechnologyandthoughtful designtechniques,the
software designprocessalwayshave someerrorsandtheynevercanbe avoided.Soeachsoftware design
processmustbe verifiedagainstitsrequirementsthroughoutthe developmentprocess.
The software designanddevelopmentprocessmustbe verifiedjustlike anyotherengineeringactivity.
Verificationorvalidationisthe activitiesthatare undertakentocheckwhetherthe software being
developedmeetsitsobjectivesornot.These activitiesincludetesting,mathematical proofs,andinformal
reasoningaswell.
Importance of verification
Everysoftware developmentprocessmustbe verified
- To check whetheritmeetsthe objectivesof the requirementsornot
- To ascertainwhetherthe software hasthe critical requirementstobe metor not
- To see whetherthe resultsif the code matchour expectationsornot
The importance of verificationinanysoftware developmentprocesscanbe consideredwiththe following
reasons
1. The designedsoftware withoutanyverificationcannotgainabsolute confidence inthe correctness
inthe performance
2. Evenif it providessuchconfidence inperformance,itcouldnothave the trust.The software might
performpoorlysometimeorthe documentationmaybe inadequate,maynothave anyeffective
use.
Performingverificationonlyafterrunningthe code makesitverydifficulttorepairanydefects.So the
verificationactivityshouldstartfromthe verybeginningfollowingthe rigorousprinciplesandsuitable
techniques.
White-BoxTesting
Alsocalledthe structural testing,the white-box testingisthe technique of testingsmall individualmodules.
Thistechnique usesthe internalstructure of the programto derive the testdata.The white-box testing
strategytriesto execute all the programstatementsinasequence atleastonce andthisstrategyisknown
as statement-coverage criterion.
Example code
While x=!y,loop
if x>y,then
x=x-y
else,y=y-x
endif
endloop
In the code above,the program triestoensure thatall of the statementsare checkedonce andtriesto
execute accordingly. The programfirstchecksthe conditionof while loop,thenthe loopbeginsforx andy
incase the givenconditionmatches. A possible testsetof x=2,y=2; x=5, y=1 and x=2, y=7 can be usedto
testall statementsof the program.
Black-Box Testing
Alsocalledfunctionaltesting,the black-box testingisbasedonthe objective of the programandwhatthe
program isintendedtodo.The black-box testingisusuallybasedonthe program'sspecificationratherthan
the structure.
For example,forabillingsystem,the black-box testingcanbe done byforwardingthe followingqueries
1. Prepare a bill withthe currentdate
2. Show a bill withthe specifiedbill number
3. Provide areportfrom December21-2011 to January3-2012
4. Showall the transactionin the monthof January 2009,2010,2011 and2012 withthe salesof
keyboardsoldbythe salesmanjohn
Debugging
A bugis an error ina program and can finallycause failurein the whole program.The goal of anytesting,
analysisandverificationof asoftware productisto findsuchbugs andto correct them.Debuggingisan
activityof findingandcorrectingsucherrorsand subsequentfailures.The debuggingactivitystartsas soon
as the program findserrorsand failuresinitsexecution.Butdebuggingitself isthe leastunderstoodactivity
of software engineering.Soa rigorprinciple andcare mustbe usedtolocate and fix the errors.
A failure isanactivitythatdoesn'tmatch the program specification.Soasoftware engineershouldfirst
analyze the specifications.Furthermore,anerrormaynot alwaysbe inthe implementation,butitcan be
causedby the combinationof several errors.Soasoftware engineermustlocate all the possible errorsand
fix themusingthe varioustechniquesof programming.
SymbolicExecution
Symbolicexecutionisaverificationtechniquethatcanbe classifiedastestingandanalysis.Itisa
combinationof experimental andanalytical approaches tosoftware verification.Forexampleinthe pseudo
code below
Read(a,b)
x=a +b
write (x)
In the above code,the computerneedstoreadthe valuesforthe giveninputtoproduce the desired
output.But forhumans,doingthe same thingrequiresadifferentapproachsuchas "let'sassume a andb
be the inputvaluesandx be the desiredoutputwhichiscalculatedbysummingupaand b".
In bothof the cases,the assumptionof a andb are the symbolicnotationsforcomputingthe sumx.This
kindof reasoning hasmanyadvantages thanusingthe actual numericcomputations.The symbolsusedcan
representanyactual valuesforthe inputandthe outputvariables.
ValidationTechniques
Validationisthe processof ensuringthataprogram operatesonclean,correct and useful dataandother
resourcestoproduce an intendedoutput.
The validationprocessinvolvestwobasicsteps:
1. Validationcheck
Uses one or more computational rule todetermine whetherthe resourcesusedare validornot
2. Post-checkaction
Sends feedbacktohelpenforce the validation
The other techniquesusedforresourcesvalidationare
1. Character checking
Checkswhetherthe allowedcharactersare presentornot.For example,some numericfieldlike
telephonenumbercanconsistonlynumbersbetween0-9butno fractionsand namesshouldnot
consistcharacterslike < and >.
2. Batch Tools
Batch toolsare usedtocheck the missingrecords.Some batchtoolsare alsousedto combine
numerical fields.
3. Cardinalitycheck
Checkswhetherthe database hasthe validrecordsor not.For example if the contactrecordis
classifiedasacustomerthenitshouldhave at leastone validorder(ie cardinality>0) andina
payroll systemif apersonismarkedas "formeremployee"thenitshouldnothave salaryvalues
afterthe date of resignation(ie cardinality=0)
4. Consistencychecks
Checksthe consistenciesindatafieldsinrelationtootherfields.Forexample,if tilte=Mr.then
gender=Male
5. Data type checks
Checksthe data type of the inputandgive an errormessage if the inputdata doesnotmatch with
the chosendata type,e.g.,Inan inputbox acceptingnumericdata,if the letter'O' wastyped
insteadof the numberzero,anerror message wouldappear.
Some othervalidationtechniquesinclude
Crosssystemconsistencychecks,file existence checks,dataformatcheck,logicchecks,andspelling
and grammar checksetc.
Unit8: Software Qualities
Software qualityand Software Quality factors
The software qualityisdefinedasthe requirementof asoftware product thatmeetsthe desiredobjectives
of the usersintermsof itsusefulness,dependabilityanddurability.Itpromotesthe awarenessof crucial
role of qualitymanagementinsoftware developmentprocessforeffectiveandefficientdevelopmentof
software products.
In software engineering,the software qualitiesare consideredontwoessential factors
1. The software functional qualitythatensureshow well the softwareproductcompliesor
conformsto the givendesign. Thatattribute canalsobe describedasthe fitnessforpurpose of
a piece of software orhow itcomparesto competitorsinthe marketplace asa
worthwhile product.
2. The software structural qualitythatrefershow itmeetsthe non-functional qualitieslike
robustness,maintainability,durabilityetc.
Software QualityAssurance
Software qualityassurance (SQA) is a technique of monitoringthe software engineering processesand
methodsusedtoensure quality. There is varietyof techniquesthatcanbe usedto ensure the qualityof the
software process,like the ISO9000 and CMMI (CapabilityMaturityModel Integration)
SQA encompassesthe entire software development process,whichincludesprocessessuchas
requirementsdefinition, software design, coding, source code control, code reviews, change
management, configurationmanagement, testing, releasemanagement,andproductintegration.SQA is
organizedintogoals,commitments,abilities,activities,measurements,andverifications.
SQA definesthe qualityinsoftware intermsof twofactors
1. Qualityof Design
2. Qualityof Conformance
SQA Activities
SQA is an essential processinanysoftware developmentactivityandtoensure the desire qualities,the
SQA may encompassthe following activities
1. Pre-ProjectActivities
Thisis an initial activitythatfocusesonassessmentandanalysisof the requirementsof asoftware
system.The pre-projectactivitiesconsistsof followinganalysis
a. Reviewof Requirements
b. DevelopmentPlan
c. QualityPlan
2. DevelopmentandMaintenance Activities
The assessedrequirementsare writtendownascodesof the program and subsequent
maintenance activitiesare alsoperformedonthe systemthatisbeingdeveloped.Itfurtherconsists
of followingsteps
a. Formal Technical Reviews
b. Code inspection
c. Module Testing,IntegrationTesting
3. Error ReductionFramework
To ensure anerror free infrastructure,the SQA teamshouldfocusof factorslike
a. Well knownworkprocedures
b. Good use of templatesandchecklists
c. Staff trainings
d. Preventiveactions
e. Configurationanddocumentationcontrol activities
4. QA Management
The managementof the software developmentteamshouldhave adirectedgoal towardsthe
qualityassurance.Itcan be achievedby
- reviewingthe projectprogress
- analyzingthe budgetandriskfactors
- consideringqualitymetricsandthe costinvolved
5. SQA SystemImplementation
SQA can be implementedinsoftware developmentprocessbyfollowingthe globallyknownquality
managementstandardslike the ISO,SEICMMI (Software EngineeringInstitute)etc
6. SQA Unit
In a software developmentorganization,aseparate SQA unitshouldbe implementedjustlike a
researchand developmentunit.The SQA unitforwardsthe metricsandplansforotherSQA
activities.
Software QualityStandards
Accordingto the IEEE (Institute of Electrical andElectronicEngineers) Software EngineeringCommittee,a
standardis a measurementof comparisonthatdefinesorrepresentsthe magnitude of aunit.It isa
characterizationthatestablishesthe allowable tolerancesorconstraintsforcategoriesof items.Sometimes
a software standardisalsoreferredtoas the level of requiredexcellence.
Some of the widelyknowncomputerengineeringstandardsare ISO,IEEE,SEI, ANSI,IEC(International
Electrotechnical Commission)etc.
ISO
Formedin1947, the international organizationforstandardization (ISO)) isaninternational standards
settingorganizationwhichiscomposedof representativesfromvariousnational standardorganizations.
The ISO formulatesworldwide proprietary,industrial andcommercial standards.The ISOisavoluntary
organizationwhose membersare the recognizedauthoritiesonstandards,eachone representingone
country.It furtherconsistsof the technical committee,subcommitteesandthe workinggroups.
Technical reports are issuedwhenatechnical committeeorsubcommitteehascollecteddataof a different
kindfromthat normallypublishedasanInternational Standard suchasreferencesandexplanations.Such
reportsare givenaRFC (requestforcomment) numberwhichare forwardedtothe higherauthorityof the
ISO.A draft standardiscreatedif the reporthas positive aspectsandbecomesaknownstandardif it
matcheswhatit proposes.A permanentRFCnumberisassignedtothe provenstandard.Some of the
standardsrelatedtocomputerscience andsoftware engineeringare
- ISO/IECTR 17799:2000 Code of Practice for InformationSecurityManagement
- ISO/TR19033:2000 Technical productdocumentation — Metadataforconstruction
documentation
- ISO9000-3 for QualityManagementandQualityAssurance StandardPart3: Guidelinesforthe
applicationof 9001 to the development,supply,installationandmaintenance of computer
software
- ISO/IECWD 15288 SystemLife Cycle Processes
SEI
Software EngineeringInstitute (SEI) isa federallyfundedresearchanddevelopmentcenter headquartered
on the campusof Carnegie MellonUniversity inPennsylvania, UnitedStates.The SEIoperateswithmajor
fundingfromthe U.S.Departmentof Defense andworkscloselywithindustryandacademicinstitutions
throughresearchcollaborations.The SEIprogramof work isconductedinseveral principal areas:
acquisition,processmanagement,risk,security,software development,and systemdesign.
The SEI CMMI (CapabilityMaturityModel Integration)
CMMI isa processimprovement approachandcan be usedto guide processimprovementacrossa project,
a division,oranentire organization.Processesare ratedaccordingto theirmaturitylevels,whichare
definedas:Initial,Managed,Defined,QualitativelyManaged,Optimizing.
CMMI addressesthree areasof interest:
1. Productand service development — CMMIfor Development(CMMI-DEV)
2. Service establishment,management, — CMMIfor Services(CMMI-SVC)
3. Productand service acquisition — CMMI forAcquisition(CMMI-ACQ)
Software Reviews
Software reviewsare afilterforthe software engineeringprocessandare appliedatdifferentpointsof
software developmentprocess touncovererrorsthatcan be removed.
Anyreviewisaprocessof usingthe diversityof people'smindto:
1. Pointoutthe neededimprovementsinthe product
2. Confirmthatthe parts of a software productare whetherneededornot
There are manytypesof reviewslike:
1. An informal meetingtodiscuss the technical problems
2. Formal presentationof the software withthe customers,managementandthe technical team
Cost Impact of Software Defects
The cost impact onsoftware defectsare largeronpost detectionof errors;thatiswhenthe errors detected
afterthe completionof the software product.The costfor correctingerrorsearlybefore the finalizationis
much lesser.
The technical teammusttherefore tryto uncoverdefective partsanderrorsearlyinthe software
developmentprocess.
DefectAmplificationand Removal
The defectamplificationandremoval model canbe usedto illustrate the generationanddetectionof
errorsduringthe preliminarydesign,detaileddesign,andcoding.The defectamplificationandremoval
model isshownbelow
The whole box representsanysoftware developmentstepandduringthe step,errorsmaybe generated
withoutanynotice.Software reviewsmayfail touncovernewlygeneratederrorsfromprevioussteps
resultinginsome of the errorsmay passto nextsteps.Insome caseserrorspassedthroughfromprevious
stepsare amplifiedbythe amplificationfactorx.

More Related Content

What's hot

The future of computer technology
The future of computer technologyThe future of computer technology
The future of computer technologyValred Olsim
 
Ian Sommerville, Software Engineering, 9th Edition Ch2
Ian Sommerville,  Software Engineering, 9th Edition Ch2Ian Sommerville,  Software Engineering, 9th Edition Ch2
Ian Sommerville, Software Engineering, 9th Edition Ch2Mohammed Romi
 
Computer Hardware - Platforms and Technologies
Computer Hardware - Platforms and TechnologiesComputer Hardware - Platforms and Technologies
Computer Hardware - Platforms and Technologieselectricgeisha
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software EngineeringZahoor Khan
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - BasicsPurvik Rana
 
Ch2-Software Engineering 9
Ch2-Software Engineering 9Ch2-Software Engineering 9
Ch2-Software Engineering 9Ian Sommerville
 
Presentation of programming languages for beginners
Presentation of programming languages for beginnersPresentation of programming languages for beginners
Presentation of programming languages for beginnersClement Levallois
 
Computer Software And its types
Computer Software And its typesComputer Software And its types
Computer Software And its typesMirza Kaleem
 
Introduction to Computer Science by GoLearningBus
Introduction to Computer Science by GoLearningBusIntroduction to Computer Science by GoLearningBus
Introduction to Computer Science by GoLearningBusKalpit Jain
 
الحوسبه السحابيه
الحوسبه السحابيهالحوسبه السحابيه
الحوسبه السحابيهLavender Rose
 
Prototype model (software engineering)
Prototype model (software engineering)  Prototype model (software engineering)
Prototype model (software engineering) MuhammadTalha436
 
Philosophy of Open Source - SFO17-TR01
Philosophy of Open Source - SFO17-TR01Philosophy of Open Source - SFO17-TR01
Philosophy of Open Source - SFO17-TR01Linaro
 
Lecture 01 Introduction to Software Engineering
Lecture 01 Introduction to Software EngineeringLecture 01 Introduction to Software Engineering
Lecture 01 Introduction to Software EngineeringAchmad Solichin
 

What's hot (20)

Ch1 introduction
Ch1 introductionCh1 introduction
Ch1 introduction
 
Ch2 sw processes
Ch2 sw processesCh2 sw processes
Ch2 sw processes
 
The future of computer technology
The future of computer technologyThe future of computer technology
The future of computer technology
 
Software Reuse
Software ReuseSoftware Reuse
Software Reuse
 
Ian Sommerville, Software Engineering, 9th Edition Ch2
Ian Sommerville,  Software Engineering, 9th Edition Ch2Ian Sommerville,  Software Engineering, 9th Edition Ch2
Ian Sommerville, Software Engineering, 9th Edition Ch2
 
Wideband Delphi Estimation
Wideband Delphi EstimationWideband Delphi Estimation
Wideband Delphi Estimation
 
Computer Hardware - Platforms and Technologies
Computer Hardware - Platforms and TechnologiesComputer Hardware - Platforms and Technologies
Computer Hardware - Platforms and Technologies
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - Basics
 
Ch2-Software Engineering 9
Ch2-Software Engineering 9Ch2-Software Engineering 9
Ch2-Software Engineering 9
 
Presentation of programming languages for beginners
Presentation of programming languages for beginnersPresentation of programming languages for beginners
Presentation of programming languages for beginners
 
Computer Software And its types
Computer Software And its typesComputer Software And its types
Computer Software And its types
 
Introduction to Computer Science by GoLearningBus
Introduction to Computer Science by GoLearningBusIntroduction to Computer Science by GoLearningBus
Introduction to Computer Science by GoLearningBus
 
الحوسبه السحابيه
الحوسبه السحابيهالحوسبه السحابيه
الحوسبه السحابيه
 
computer Architecture
computer Architecturecomputer Architecture
computer Architecture
 
Prototype model (software engineering)
Prototype model (software engineering)  Prototype model (software engineering)
Prototype model (software engineering)
 
Program Logic and Design
Program Logic and DesignProgram Logic and Design
Program Logic and Design
 
WHAT IS COMPUTER SCIENCE?
WHAT IS COMPUTER SCIENCE?WHAT IS COMPUTER SCIENCE?
WHAT IS COMPUTER SCIENCE?
 
Philosophy of Open Source - SFO17-TR01
Philosophy of Open Source - SFO17-TR01Philosophy of Open Source - SFO17-TR01
Philosophy of Open Source - SFO17-TR01
 
Lecture 01 Introduction to Software Engineering
Lecture 01 Introduction to Software EngineeringLecture 01 Introduction to Software Engineering
Lecture 01 Introduction to Software Engineering
 

Similar to Software engineering

What is software engineering
What is software engineeringWhat is software engineering
What is software engineeringJennifer Polack
 
SE 1 Software Engineering.pptx
SE 1 Software Engineering.pptxSE 1 Software Engineering.pptx
SE 1 Software Engineering.pptxMahiDivya
 
Software engineering
Software engineeringSoftware engineering
Software engineeringAnanthiP8
 
香港六合彩
香港六合彩香港六合彩
香港六合彩pchgmf
 
香港六合彩 » SlideShare
香港六合彩 » SlideShare香港六合彩 » SlideShare
香港六合彩 » SlideSharehcslenk
 
六合彩|香港六合彩
六合彩|香港六合彩六合彩|香港六合彩
六合彩|香港六合彩tnxaht
 
香港六合彩-六合彩
香港六合彩-六合彩香港六合彩-六合彩
香港六合彩-六合彩eqhnwl
 
六合彩,香港六合彩
六合彩,香港六合彩六合彩,香港六合彩
六合彩,香港六合彩bxuket
 
六合彩|香港六合彩
六合彩|香港六合彩六合彩|香港六合彩
六合彩|香港六合彩ohtpwshx
 
Software engineering for IV sem BCA ,RCU Belgavi.Syllabus
Software engineering for IV sem BCA ,RCU Belgavi.SyllabusSoftware engineering for IV sem BCA ,RCU Belgavi.Syllabus
Software engineering for IV sem BCA ,RCU Belgavi.SyllabusNagaraj Hiremath
 
Ch 01 s.e introduction
Ch 01 s.e introductionCh 01 s.e introduction
Ch 01 s.e introductionBadar Waseer
 
SOFDESG 01 Introduction.pdf
SOFDESG 01 Introduction.pdfSOFDESG 01 Introduction.pdf
SOFDESG 01 Introduction.pdfJimCValencia1
 
SE 18CS35 Module 1.pdf
SE 18CS35 Module 1.pdfSE 18CS35 Module 1.pdf
SE 18CS35 Module 1.pdfbalaji984829
 

Similar to Software engineering (20)

What is software engineering
What is software engineeringWhat is software engineering
What is software engineering
 
Lecture-1-3.pptx
Lecture-1-3.pptxLecture-1-3.pptx
Lecture-1-3.pptx
 
labiqa'd.pptx
labiqa'd.pptxlabiqa'd.pptx
labiqa'd.pptx
 
Importance of software engineering
Importance of software engineeringImportance of software engineering
Importance of software engineering
 
SE 1 Software Engineering.pptx
SE 1 Software Engineering.pptxSE 1 Software Engineering.pptx
SE 1 Software Engineering.pptx
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
software
softwaresoftware
software
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩 » SlideShare
香港六合彩 » SlideShare香港六合彩 » SlideShare
香港六合彩 » SlideShare
 
六合彩|香港六合彩
六合彩|香港六合彩六合彩|香港六合彩
六合彩|香港六合彩
 
香港六合彩-六合彩
香港六合彩-六合彩香港六合彩-六合彩
香港六合彩-六合彩
 
六合彩,香港六合彩
六合彩,香港六合彩六合彩,香港六合彩
六合彩,香港六合彩
 
六合彩|香港六合彩
六合彩|香港六合彩六合彩|香港六合彩
六合彩|香港六合彩
 
Software engineering for IV sem BCA ,RCU Belgavi.Syllabus
Software engineering for IV sem BCA ,RCU Belgavi.SyllabusSoftware engineering for IV sem BCA ,RCU Belgavi.Syllabus
Software engineering for IV sem BCA ,RCU Belgavi.Syllabus
 
Ch1
Ch1Ch1
Ch1
 
Swe notes
Swe notesSwe notes
Swe notes
 
Ch 01 s.e introduction
Ch 01 s.e introductionCh 01 s.e introduction
Ch 01 s.e introduction
 
SOFDESG 01 Introduction.pdf
SOFDESG 01 Introduction.pdfSOFDESG 01 Introduction.pdf
SOFDESG 01 Introduction.pdf
 
sw1.pdf
sw1.pdfsw1.pdf
sw1.pdf
 
SE 18CS35 Module 1.pdf
SE 18CS35 Module 1.pdfSE 18CS35 Module 1.pdf
SE 18CS35 Module 1.pdf
 

More from Prakash Poudel

Web applications vulnerabilities and threats
Web applications vulnerabilities and threatsWeb applications vulnerabilities and threats
Web applications vulnerabilities and threatsPrakash Poudel
 
Earliest Due Date Algorithm for Task scheduling for cloud computing
Earliest Due Date  Algorithm for Task scheduling for cloud computingEarliest Due Date  Algorithm for Task scheduling for cloud computing
Earliest Due Date Algorithm for Task scheduling for cloud computingPrakash Poudel
 
Recent and-future-trends spm
Recent and-future-trends spmRecent and-future-trends spm
Recent and-future-trends spmPrakash Poudel
 
Locking base concurrency control
  Locking base concurrency control  Locking base concurrency control
Locking base concurrency controlPrakash Poudel
 
Cocomo ( cot constrictive model) and capability maturity model
Cocomo ( cot constrictive model) and capability maturity modelCocomo ( cot constrictive model) and capability maturity model
Cocomo ( cot constrictive model) and capability maturity modelPrakash Poudel
 
Maximum power transfer theorem
Maximum power transfer theoremMaximum power transfer theorem
Maximum power transfer theoremPrakash Poudel
 
Telephone call-simulation
Telephone call-simulationTelephone call-simulation
Telephone call-simulationPrakash Poudel
 
General Online Health Information System Proposed Application
General Online Health Information System Proposed ApplicationGeneral Online Health Information System Proposed Application
General Online Health Information System Proposed ApplicationPrakash Poudel
 
Nepal Doorsanchar Company Limited Internship Experience
Nepal Doorsanchar Company Limited Internship Experience Nepal Doorsanchar Company Limited Internship Experience
Nepal Doorsanchar Company Limited Internship Experience Prakash Poudel
 
Multimedia Technology in computer
Multimedia Technology in computerMultimedia Technology in computer
Multimedia Technology in computerPrakash Poudel
 
File permission in linux
File permission in linuxFile permission in linux
File permission in linuxPrakash Poudel
 
organization Management
organization Managementorganization Management
organization ManagementPrakash Poudel
 
Organization Management Concept
Organization Management Concept Organization Management Concept
Organization Management Concept Prakash Poudel
 
Java Programming concept
Java Programming concept Java Programming concept
Java Programming concept Prakash Poudel
 

More from Prakash Poudel (20)

Web applications vulnerabilities and threats
Web applications vulnerabilities and threatsWeb applications vulnerabilities and threats
Web applications vulnerabilities and threats
 
Earliest Due Date Algorithm for Task scheduling for cloud computing
Earliest Due Date  Algorithm for Task scheduling for cloud computingEarliest Due Date  Algorithm for Task scheduling for cloud computing
Earliest Due Date Algorithm for Task scheduling for cloud computing
 
Recent and-future-trends spm
Recent and-future-trends spmRecent and-future-trends spm
Recent and-future-trends spm
 
Locking base concurrency control
  Locking base concurrency control  Locking base concurrency control
Locking base concurrency control
 
Cocomo ( cot constrictive model) and capability maturity model
Cocomo ( cot constrictive model) and capability maturity modelCocomo ( cot constrictive model) and capability maturity model
Cocomo ( cot constrictive model) and capability maturity model
 
Microprocessor
Microprocessor Microprocessor
Microprocessor
 
Maximum power transfer theorem
Maximum power transfer theoremMaximum power transfer theorem
Maximum power transfer theorem
 
Linux technology
Linux technologyLinux technology
Linux technology
 
Java PU solution
Java PU solution Java PU solution
Java PU solution
 
System administration
System administrationSystem administration
System administration
 
Telephone call-simulation
Telephone call-simulationTelephone call-simulation
Telephone call-simulation
 
General Online Health Information System Proposed Application
General Online Health Information System Proposed ApplicationGeneral Online Health Information System Proposed Application
General Online Health Information System Proposed Application
 
Nepal Doorsanchar Company Limited Internship Experience
Nepal Doorsanchar Company Limited Internship Experience Nepal Doorsanchar Company Limited Internship Experience
Nepal Doorsanchar Company Limited Internship Experience
 
SQL & PLSQL
SQL & PLSQLSQL & PLSQL
SQL & PLSQL
 
Multimedia Technology in computer
Multimedia Technology in computerMultimedia Technology in computer
Multimedia Technology in computer
 
File permission in linux
File permission in linuxFile permission in linux
File permission in linux
 
organization Management
organization Managementorganization Management
organization Management
 
Organization Management Concept
Organization Management Concept Organization Management Concept
Organization Management Concept
 
Java Programming concept
Java Programming concept Java Programming concept
Java Programming concept
 
Letest
LetestLetest
Letest
 

Recently uploaded

Grade 9 Q4-MELC1-Active and Passive Voice.pptx
Grade 9 Q4-MELC1-Active and Passive Voice.pptxGrade 9 Q4-MELC1-Active and Passive Voice.pptx
Grade 9 Q4-MELC1-Active and Passive Voice.pptxChelloAnnAsuncion2
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 
Types of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxTypes of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxEyham Joco
 
Atmosphere science 7 quarter 4 .........
Atmosphere science 7 quarter 4 .........Atmosphere science 7 quarter 4 .........
Atmosphere science 7 quarter 4 .........LeaCamillePacle
 
ROOT CAUSE ANALYSIS PowerPoint Presentation
ROOT CAUSE ANALYSIS PowerPoint PresentationROOT CAUSE ANALYSIS PowerPoint Presentation
ROOT CAUSE ANALYSIS PowerPoint PresentationAadityaSharma884161
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
Planning a health career 4th Quarter.pptx
Planning a health career 4th Quarter.pptxPlanning a health career 4th Quarter.pptx
Planning a health career 4th Quarter.pptxLigayaBacuel1
 
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxRaymartEstabillo3
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Mark Reed
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 
Roles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceRoles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceSamikshaHamane
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatYousafMalik24
 
Judging the Relevance and worth of ideas part 2.pptx
Judging the Relevance  and worth of ideas part 2.pptxJudging the Relevance  and worth of ideas part 2.pptx
Judging the Relevance and worth of ideas part 2.pptxSherlyMaeNeri
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 

Recently uploaded (20)

Grade 9 Q4-MELC1-Active and Passive Voice.pptx
Grade 9 Q4-MELC1-Active and Passive Voice.pptxGrade 9 Q4-MELC1-Active and Passive Voice.pptx
Grade 9 Q4-MELC1-Active and Passive Voice.pptx
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 
Types of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxTypes of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptx
 
Atmosphere science 7 quarter 4 .........
Atmosphere science 7 quarter 4 .........Atmosphere science 7 quarter 4 .........
Atmosphere science 7 quarter 4 .........
 
ROOT CAUSE ANALYSIS PowerPoint Presentation
ROOT CAUSE ANALYSIS PowerPoint PresentationROOT CAUSE ANALYSIS PowerPoint Presentation
ROOT CAUSE ANALYSIS PowerPoint Presentation
 
Rapple "Scholarly Communications and the Sustainable Development Goals"
Rapple "Scholarly Communications and the Sustainable Development Goals"Rapple "Scholarly Communications and the Sustainable Development Goals"
Rapple "Scholarly Communications and the Sustainable Development Goals"
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
 
Planning a health career 4th Quarter.pptx
Planning a health career 4th Quarter.pptxPlanning a health career 4th Quarter.pptx
Planning a health career 4th Quarter.pptx
 
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 
Roles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceRoles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in Pharmacovigilance
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice great
 
Judging the Relevance and worth of ideas part 2.pptx
Judging the Relevance  and worth of ideas part 2.pptxJudging the Relevance  and worth of ideas part 2.pptx
Judging the Relevance and worth of ideas part 2.pptx
 
OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 

Software engineering

  • 1. Software Engineering Unit1: Introduction What is Software Engineering? Software Engineering is the field of computer science that deals with the building of large or complex software systemsbyateam of software engineers or programmers. The software systems usually exist in multiple versionsandare usedformany years.Duringthe lifetimeof these softwares,theymay have many changesto fix the defects,toenhance the existingfeatures,toremove oldfeaturesor to be adapted to run in a new environment. Software Engineering is also defined as “multi-person construction of multi-version software”. There is difference between programming and software engineering. A programmer writes a complete program, while asoftware engineerwritesasoftware componentthatwill be combinedwithcomponentswritten by other software engineers to build a complete system. The component written by one software engineer may be modifiedbyothersoftware engineersoritmay be usedby otherstobuilddifferent versions of the system. Programming is primarily a personal activity, while software engineering is essentially a team activity. History of Software Engineering The term software engineering was introduced in the late 1960s after realizing that all the ideas about programmingwere notenoughtobuildabettersoftware system.Even the introduction of algorithms and structuredprogrammingwere notable tosolve the majordifficultiesinbuildinglarge software systems.An engineering approach was needed to a) clearly define the problem to be solved b) use and develop standard tools and techniques for solving it The problemsseen in building large software systems were not well understood and programmer had to spend a lot of time communicating with each other rather than writing codes. Many solutions were proposed like using better management techniques, different team organizations, better programming languagesand tools, and use of mathematical approaches. Finally, it was realized that large and complex software systems should be built just like how engineers build bridges, airplanes, factories etc. The engineeringapproachrequiredmanagement,organization,tools,theories,methodologies,and techniques and thus the term software engineering was born. Economicsisanotherreasonfor software engineeringtogainsomuch importance.Worldwide expenseson software systems have increased from millions to billions in recent years. We can see softwares everywhere inoursociety; in machines, aircrafts, medical devices, etc. This is also another reason for the rapid development of software engineering.
  • 2. Role of Software EngineeringinSystemDesign Usuallya software systemisaseenas a componentof a much largersystemandthe software engineering activityisa part of a much largersystemdesignactivityinwhichthe softwarerequirementsshouldbe matchedwiththe requirementsof othersystems.Fordesigningasoftware systemfora departmental store,we have to considerthe employeesattendance,store management,computingfacilities,telephones and cablesetc.So itis expectedthatthe software systemthatisto be developedshouldmeetall the requirementsof the whole system. Nowadayssoftware isbeingusedineveryotherdeviceliketelevisionsetstomobile devices,from entertainmenttomedical devices.Soasoftware engineerneedstoknow the general problemsand requirementsof systemengineering.Forapropersystemdesign,asoftware engineerneedto a) knowthe requirementsof the whole system b) understandthe applicationareabeforestartingthe interface The software life cycle Everysoftware systemundergoesagradual developmentandevolutionfromthe starting until itis implementedanddelivered.Inthisregard,asoftware systemissaidtohave a life cycle composedof several phases.Eachphase giveseitherapart of the systemora componentassociatedwiththe system.A traditional lifecycle model calledthe “waterfall method”hasthe followingphases: a) RequirementAnalysisandSpecification: - Requirementanalysisisthe firstphase andiscarriedout aftera feasibilitystudy - Feasibilitystudydefinesthe costandbenefitsof asoftware system - Thisphase identifiesthe exactrequirementandthe studyiscarriedout by the customer, developer,marketingmanagerorbyall - A lotof interactionisneededbetweenthe userandthe developerif the requirementsare not clear b) SystemDesignandSpecification - Once requirementanalysisisdone,the software engineerstartsdesigningthe software system - Thisphase is dividedintotwosub-phases o Architectural orhighlevel design  Definesthe overallorganizationof the systemintermsof high-level componentsandinteractionsamongthem o DetailedDesign  Componentsare decomposedtolowerlevel moduleswithpreciselydefined interfaces - Usuallyanswersthe what-how questions - Makes clearaboutwhat the problemisandhow it can be solved
  • 3. c) CodingandModule Testing - The software engineerwritesthe exactcode thatisto be deliveredtothe enduser as a runningsystem - Codesforprototypesandtestingmayalsobe writtenbythe developers - All the codesand modulesare testedbefore beingdeliveredtothe nextphase d) IntegrationandSystemTesting - All the modulesdevelopedare integratedandtestedasawhole system - If the testinggivespositiveresults,thentheyare forwardedforthe nextphase. Otherwise rollbackchangesmaybe carried outand debugging/maintenance of the module isperformed e) DeliveryandMaintenance - Once the systempassesall the tests,itisdeliveredtothe customerandthe systementersinto the nextphase of maintenance - Any modificationafterthe deliveryof the systemare usuallytakeninthisstep RelationshipofSoftware Engineeringtoother areas ofcomputer science and other disciplines Today software engineeringhasmade itsownmark as an importantfieldof computer science andis makingan influentialpresence inotherfieldsaswell.The followingfieldsof computerscience are related withthe software engineering 1. ProgrammingLanguages - Programminglanguagesare the central toolsforsoftware development andare related intenselytoachieve the software engineeringgoals - Today mostprogramminglanguagessupportthe modularityfeature,ie,beingable todo separate andindependentcompilation.Thisfeaturelargelyhelpsforteamdevelopmentof large software - Alsothe introductionof exception-handlinginprogramminglanguagesallowstodetectand solve the problemswhile the software isrunning - For startinga newsoftware onany programminglanguages,properrequirementanalysisand designspecificationisnecessary;which are largelyinfluencedbysoftware engineering 2. OperatingSystem - Operatingsystemswere the firstlarge software systemsandwere the firstone toget engineered. - Most of the software designingideaswere originatedfrombuildingoperatingsystems - Conceptsinlarge software systemslikevirtual machines,levelsof abstractionandseparation of policiesare all initiallyintroducedfromoperatingsystem - Conceptsandtechniquesfromthe structuresof anoperatingsystemare consideredwhile developinglarge software systems
  • 4. 3. Databases - Databasesisanotherclassof large software systemsthatinfluencedsoftwareengineering - Data independence isthe feature of moderndatabasesthatinfluencesfordevelopinglarge software systems - Data independence allowsapplicationstobe writtenthatuse datawithoutworryingaboutthe underlyingrepresentationsof the data - Anotherimpactof database technologyon software engineering isthatit allowsdatabase systemstobe usedas componentsof large software systems 4. Artificial Intelligence - Many software systemsbuiltinthe fieldof artificial intelligence are large andcomplex systems. - AI basedsoftware systemswere developedusingthe ideaof exploratorydevelopmentwhichis slightlydifferentthansoftware engineering - In exploratorydevelopment,the designergoesthroughwell-definedstepsattemptingto produce a complete designbefore proceedingtocoding - AI hasgivenrise tonewtechniques indealingwithspecifications,verificationandreasoning 5. Theoretical Models - Theoretical Modelsbasedoncomputerscience are alsothe useful toolsof software engineering - finite state machinesprovidesbasisforsoftware specificationsandmodelsforsoftware design and structure - communicationprotocolsandlanguage analyzersuse finite-state machines Software Engineeringinotherdisciplines 1. Management - Anynewinvestmentornewprojectneedsestimation,scheduling,humanresource planning, task assignmentandtracking - Software engineeringconceptsandapproachesalso providesmanagementscience about testingmanagementtheoriesandmodels 2. SystemEngineering - Systemengineeringalwaysstudiesaboutcomplex systemsandall complex systemsis composedof manycomponents - Software isoftenacomponentinmanycomplex systemsandsoftware engineeringcanbe appliedinmostsystemengineeringdesigns
  • 5. Unit2: Tools and Environments Introduction Software engineeringactivityalwaysinvolvesalarge numberof people performingasetof activitiesto produce a large numberof components.The objectiveof toolsandenvironmentistosupportthe development,verification,maintenance,andevolutionof processesandthe components. A tool supportsa particularactivitywhile anenvironmentisthe collectionof relatedtools.The toolsand environmentsaimsatautomatingsome of the activitiesinvolvedinsoftware engineering.Sometime tools are necessarytosupportan activitybutat timestheyonlyhelptomake some taskseasierandefficient. Historical Evolutionof tools and environments The toolsand environmentsof software engineeringare influencedbytwofactors - Technological developments - Betterunderstandingof softwareengineeringprocesses In earlydays,the software engineeringactivitywaslimitedtoprogrammingand toolsavailable were just the editorsandcompilers.Laterthe introductionof filesystemsenabledtostore the programsonline and to share withotherprogrammers.The sharingof filesledtothe needof configurationandversion managementtoolsandothertoolstosupportthe team activities. Introductionof graphical displaysandgraphical userinterfacesalsoinfluencedthe developmentof new toolsto graphicallyexpress the designs.The introductionof distributedplatformsalsoinfluencedthe developmentof newtoolsfordistributedconfigurationmanagementandteamwork.Groupwares were developedtosupportteamsregardlessof theirdistance andalsoarrangedmemberstohave virtual meetings.Software distributionanddeploymenttoolswerealsodevelopedeventually. Duringthe earlierdaysof software engineering,individualtoolswere developed tosupportsingle activities like compilinganddebugging.Later,the integratedenvironmentwere introducedthatconsistedtoolsthat workedtogether.Developmentinopenenvironmentledtothe introductionof toolswithpublicinterfaces that allowscommunicationbetweenothertools
  • 6. Classificationoftools and environments Software toolscanbe classifiedaccordingto - The level of formalitytheyenforce - The life cycle phase theysupport - The interface theyprovide Software toolscanbe classifiedaccordingtothe following criteria 1. Interactionmode - Software toolsare categorizedasbatchorientedorinteractive - Batch orientedtoolssupport the applicationof unitof operationstoacollectionof documents - Interactive toolsare useful tomake change andto see the resultof the change immediately - It isdesirable thattoolswithsupportforbothinteractive andbatchmodesof operation 2. Interface Format - Software are developedwiththe objective of supportingthe human-machineinterface - The initial interfaceswere all textual andcommandbased.Thenthe introductionof graphical toolsbroughtthe GUI - Technologiessuchasthe multimediainterfaces,color,and hypertextsare widelyusedtomake human-computerinterface more easierandproductive - Software toolswithsupportforviewinghigh-level designanddetailsof moduleshelpinquick browsingof large designs 3. Level of Formality - Software developersproduce avarietyof documentsandmodulesduringthe software developmentandeachdocumentandmodulescanbe writteninany language whose syntax and semanticscanbe definedinmore orlessformal ways - The functionalitythatsoftware toolsprovide, ishighly dependentonthe level of formalityof the language - A compilercanbe builtonlyfora language whose syntax andsemanticsare known,while an editorcan be builtforany language 4. Dependencyonphase of life cycle - Software toolsare usedindifferentactivitiesandsome of themare designedtohelpinspecific activitythatis limitedtoacertainphase of the software life cycle - Toolscan be classifiedonthe basisof the phase theyare intendedtosupport - Some toolsare usedto write requirementspecifications,some forspecifyingmodules,some for editingcodesandsome fordebugging 5. Degree of Standardization - Standardizationof anitemenhancesitsapplicabilitybutalsofreezesitsevolution - Whena methodor language isstandardized,software producers investmore indeveloping supportfor it.
  • 7. - Usingstandardizedtoolsguaranteesthe supplyof skilledpeople andportabilityof their knowledge fromone projecttothe next - Usingnon standardizedsoftware toolsorOS,reducesthe availabilityof skilledpeople andadds overheadof training 6. Language dependency - Some toolsare associatedwitha particularlanguage whichare calledmonolingual,while other toolsare language independentalsoknownaspolylingual - For eg,texteditorscanbe usedforany programminglanguage while there are specialized graphical editorsforUML diagramsor DFDs - Compilersare typical examplesof monolingual toolswhile OSlike UNIX,Windowsare polylingual - In general monolingualtoolsprovidemore specializedhelpbutpolylingual environmentis more openand portable 7. Staticversusdynamictools - Statictoolsare appliedtocreate,modifyandverifythe consistencyof objectswithrespectto some rules,propertiesorsome constructs. - Eg of statictool is the documentor programminglanguage parserthatchecksthe correctness of syntaxes - A tool that requiresexecutionof the objectitoperatesoniscalledadynamictool - Most simulationprogramsare examplesof dynamictools - Statictoolssupportthe analysisof modelswhiledynamictoolssupportthe simulationof models 8. Developmenttoolsvsendproductcomponents - Some toolssupportthe developmentof endproductsanddoesn’tbecome partof them - Othertoolsare part of the software componentandalsoisincludedasa part of the end productas well,usuallyprovidedasa run time supportlibrary 9. Single uservsmultiusertools - Some toolssupportone userat a time while some supportmultipleusersata time - Single usertoolsare usedforpersonal activitieswhile multiusertools are usedforgroups 10. Single machine vsnetwork-awaretools - Withthe introductionof internet,the sharingof resourceshasspreadfromusersfromsingle machine tomultiple machinesacrossthe network - Toolsmustsupportthe manipulationof objectsacrossthe network
  • 8. Representative Tools Representative toolsare the mostimportantclassesof software productiontools.The common representative toolsare 1. Editors - Editorsare the fundamental software developmenttool thatsupportthe creationand modificationof documentsandmodules - Theycan be eithertextual orgraphical - Theycan followaformal syntax or theymaybe usedforwritinginformal textaswell - Theycan be eithermonolingualorpolylingual - Editorsare flexibleandeasytointegrate withothertools 2. Linkers - Linkersare toolsthat are usedtocombine mutual objectsintolargerobjects - Linkerscan be bothmonolingual orpolylingual - The concept of linkerhasmore applicabilitythanthe programminglanguages 3. Interpreters - An interpreterexecutesactionsasspecifiedinthe inputcode. - It can be a hardware device thatexecutesthe machine code,oritcan be a prototype ora simulatorof the endproduct 4. Code Generators - Afterthe requirement specification,the implementationof the software constructionisdone by the code generators - It isperformedbythe compilers - An optimizerisusedasa translatorto supportthe stepwise transformationof specifications intoimplementations - Fourthgenerationtools(thatare centeredaroundadatabase system) are widelyusedinmost businessapplications 5. Debuggers - Debuggersare the special typesof interpretersandtheyexecuteaprogramwiththe purpose of helpingtolocalizeandfix errorsbyapplyingdebuggingprinciples - Debuggersgivesthe userthe followingcapabilities o To inspectthe executionstate inasymbolicway o To selectthe executionmode;likeselectingastep-by-stepexecutionorsetting breakpoints o To selectthe portionof the executionstate andthe executionpointthatwill be inspectedwithoutmanuallymodifyingthe source code
  • 9. Unit3: Software Specification Introduction Specificationisaprecise statementof the requirementsthatthe systemmustsatisfy.A specificationnot onlyspecifiesthe requirementsof the final system, butalsothe componentsthatwill be usedtomake up the system. Specificationcanalsobe viewedasthe statementof anagreementbetweenaproducerof a service anda consumerof the service orbetweenanimplementeranda user. A requirementspecificationisanagreement betweenthe enduserandthe systemdeveloper.A design specificationisanagreementbetweenthe systemarchitectandthe implementers.A modulespecification isan agreementbetweenthe programmersusingthe module andthe programmerimplementingthe module. The usesof specification Specificationcanbe usedforthe followingmajoruses 1. A statementof userrequirement The primaryobjective of asoftware productisto meetthe user’srequirementandtheyare not alwaysclearlyunderstoodbythe developer.A careful analysiswithinteractionwiththe usershould be done to clarifyandprepare a statementof requirementwithoutanymisunderstandings. Initiallyevenauserdoesn’thave the clearideaabouthow the productshouldbe and itlacks precise formulationof systemfunctionsandperformance requirements. Sometimesthe requirementsare veryclearandthe specificationsare straightforward.The same specificationcanbe usedbydifferentproducerstoproduce the same product.Suchspecificationis knownas standardspecification. 2. A statementof the interface betweenthe machine andthe controlledenvironment Computersinteractwiththe externalenvironmentbyreceivingthe inputsandprovidingoutputs. Anyincorrectspecificationcanhave seriousandundesirable effects.Itisnecessarytospecifythe interface betweenthe machineandthe controlledenvironmentbydescribingprecise inputs, outputsand the expectedrelationships. 3. A statementof the requirementsforthe implementation Specificationsare usedasa reference pointwhile the productisbeingimplemented andthe ultimate goal of implementationistobuildaproductthat meetsthe specifications.The specificationisusedduringthe designphase tomake designdecisionsandduringthe verification activitytocheck that the implementationmatchesthe specifications. 4. A reference pointduringproductmaintenance Several kindsof maintenance occurduringa product’slife cycle andall involvespecifications.In corrective maintenance,onlythe implementationischangedandspecificationsare neededto
  • 10. checkwhetherthe newimplementationcorrectsthe errorscontainedinthe previousversionof the product. Adaptive maintenance occursincase of changesinthe requirementsandsuch changesare modificationsof the functionalityof the product.Inperfective maintenance,the functional requirementsdonotchange andthe designof the productmaybe restructuredto improve the performance.Inall sortof maintenance,specificationsactasa reference statement for the developers. Classificationofspecification Specificationscanbe classifiedas - informal - formal - semiformal Informal Specificationare writteninnatural language and makesuse of figures,tablesandothernotations to provide more structure andhelpthe understandingof the systemthatisbeingbuilt.Sometimestheycan alsobe structuredina standardway. In some specification,anotationhasa precise syntax andmeaninganditisknownas formalism.Formalism isusedto create a formal specification. Semiformal specificationuse notationswithoutinsistingacompletelyprecise semantics. Specificationscanalsobe classifiedas - operational - descriptive Operational specificationsdescribethe intendedsystembydescribingitsdesiredbehaviorandalsoprovide a model implementationof the system. Descriptive specificationstrytostate the desiredpropertiesof the systemina purelydeclarative way. Verificationofspecification Specificationsmustbe verifiedbeforestartingthe implementationinordertoassesstheircorrectness. There are twogeneral waystoverifythe specification. The firstone consistsof observingthe dynamicbehaviorof the specifiedsystemtocheckwhetherit matchesto the understandingof the general behaviorof the ideal system. The secondone consistsof analyzingthe propertiesof the specifiedsystemthatcan be deducedfromthe specification.The propertiesthatare deducedare thencheckedagainstthe expectedpropertiesof the system.
  • 11. Types ofOperational Specifications 1. Data Flow Diagrams (DFDs) - Widelyusednotationforspecifyingthe functionsof an informationsystemandshowshow data flowfromfunctionstofunctions. - Theydescribe systemasa collectionof functionsthatmanipulatedata - Data in DFD are storedindata repositories,theyflow indataflowsandtheyare transferredto and fromthe external environment - DFDs are expressedingraphical notationsare theyare easyto use - The basic elementsof DFDare o Functionsare representedbybubbles o Data flowsare representedbyarrows.Arrowsgoingtobubblesrepresentthe inputand outgoingarrowsindicate the resultsof the function. o Data storesare representedbyopenboxes o Special boxesare usedtorepresentthe inputandoutput Fig: graphical symbols used to build a dfd Dfd for library information system
  • 12. 2. UML (UnifiedModelingLanguage) diagrams - UML is a collectionof languagesthatprovide specificnotationstospecify,analyze,visualize, construct anddocumentthe componentsof a software system - Such notationsare usedbythe software engineerstoproduce standarddocumentsthat containsdifferentdiagramsthatexplainscertainpropertiesof the software system - UML includesasetof graphical notationtechniquestocreate visual modelsof software systems - Use case diagrams,sequence diagramsandcollaborationdiagramsare the techniquesof UML that are usedtomode the dynamicaspectsof a software system - Use case diagramsprovidesaglobal view of the componentsof the systemandthe actionsthat the systemperforms - Use case diagramsdescribe the overall contextof the systembypartitioningthe system functionalityintotransactionsthatare useful tothe componentsandshowshow theyinteract withthe system Fig: use case diagram for a LMS - Sequence diagramsandcollaborationdiagramsare the twoequivalentnotationsthatcanbe usedto describe howobjectsinteractbyexchangingmessages - Theyprovide adynamicview of a systembygraphicallydisplayingscenariosthatmayoccur at run time whenobjectsinteracttoaccomplishcertaintask - The sequence diagramvisuallyindicatesthe progressionof time inthe vertical directionand the sequence of messagesexchangedbetweenthe objects - Collaborationdiagramsmake the structural propertiesof the collaborationof the objectsmore clear Fig: sequence diagram for LMS
  • 13. Fig: collaboration diagram for LMS 3. Finite State Machines - Informationsystemsandcontrol systemsall have functionalanddataaspectsas well ascontrol aspects. - FSMs are simple andwidelyused andformal notationfordescribingthe functionalandcontrol aspectsof a system - FSMconsistsof o A finite setof states,denotedbyQ o A finite setof inputs,denotedbyI o A transitionfunction,denotedby ∂:Q x I - FSMare suitable fordescribingsystemsthatcanbe in a finite setof statesandcan go from one state to anotheras a resultof some event,modeledbyaninput fig: FSMillustration of a lamp 4. Petri nets - Alsoknownasplace/transitionnetorP/Tnetisa mathematical modelinglanguage for analyzingandspecifyingasoftware system - A petri netisa specializedgraphinwhichthe nodesrepresentthe transitions(eventsthat occur, representedbythe bars)andplaces(conditionsrepresentedbycircles) - Petri netsofferagraphical notation forstepwise processesthatinclude choice, iteration,and concurrentexecution. - Petri netshave an exactmathematical definitionof theirexecutionsemantics,withawell- developedmathematical theoryforprocessanalysis. - A petri netisdefinedbyaquadruple (P,T,F, W) where o P isa finite setof places o T is a finite setof transitions
  • 14. o P U T ≠ø o F {P X T} U {T X P} is the flow relation o W: F N-{0} isthe weightfunctionwhichisanon-zerovalue toeachelementof P. If no weightvalue isassociatedwiththe flow,the defaultvalue 1isassumedforthe function P1 T1 P2 T2 P3 T6 T3 P6 T5 P5 T4 P4 Fig: simple illustration of Petri Net
  • 15. Unit4: Software DevelopmentProcess Introduction The processthat is usedtobuild,anddeploythe software productfromthe initial state tothe deliveryand final retirementof the systemiscalledthe software development process.The goal of everydevelopment processisto satisfycustomersbydeliveringqualityproductsontime andwithinbudgetbymakingthe productsprofitable andproductionreliable,predictable andefficient.Bydefiningamodel of the software developmentprocess,we cangetsome advantagesof standardizedprocesses. Software DevelopmentProcessModels The code-and-fixmodel In earlydaysof software development,itonlyconsistedof codingthe applicationinsome low level language andthe model usedinthose dayswascalledthe code-and-fix model.The code-and-fix model consistsof twosteps 1. Write the code 2. Fix the detectederrors Thismodel hadmany difficultiesanddeficienciesbecausethe structure of the code becomesmessyon multiple changes andotherchangesare harderto applyandthe resultsare lessreliable. Shrink-wrappedmodel As the computingtechnologyexpanded,the needfornew softwaresalsoincreased.Peoplewithlittle or no knowledgeof computersandprogrammingbecame the basic usersof the software applications.Soa newsoftware developmentmodel calledthe shrink-wrappedsoftware isdevelopedonrequestfroma customerforthe general marketusage orsometimesasembeddedinotherconsumerproducts. Boehmstatesthe goalsof structuredsoftware developmentprocessmodelsare to 1. Determine the orderof stagesinvolvedinthe software development 2. Establishatransitioncriteriaforprogressingfromone stage toanother A software developmentprocessmodel addressesthe following questions 1. What shall we donext? 2. How longshall we continue todoit? The processmodelsprovides 1. Guidance to the software engineersaboutthe technicalactivitiestobe carriedoutduringa project 2. A frameworkformanagingthe developmentandmaintenance, estimationof resources, defines milestonesandmonitorsprogress
  • 16. The well-knownsoftware developmentprocessmodelsare 1. Waterfall model - The most popularmodel formostsoftware engineeringandindustrial practices - The waterfall methodisastructured processinwhichthe activitiesare in linearphases - The outputof one phase acts as an inputto anotherphase - The phasesof waterfall methodare o Feasibilitystudy o Requirementanalysis o Design o Codingandmodule testing o Integrationandsystemtesting o Delivery,deploymentandmaintenance Fig: the waterfall model 2. Waterfall model withexplicitfeedbackloop - The waterfall model statesthatthe software developmentprocessshouldbe subjected, to discipline,planningandmanagement - It alsostatesthat the implementationof the productshouldbe postponeduntilthe objectives are well understood - The waterfall model isbasedonthe assumptionthatthe software developmentprocessisa linearactivitythatstartsfrom analysisandgoestocoding.But thiscannot happeninreal world case andthe processconsidersadisciplinedformof feedbackloops - The feedbackloopistominimize the reworkinvolved of previousphases fig: waterfall model with feedback loop
  • 17. 3. EvolutionaryModel - The stagesof evolutionarymodel consistsof incrementsof anoperational software product, withthe directionof evolutionbeingdeterminedbyoperational experience - The incrementmeansthe updatesandnew changesonan existingsoftware product - Incrementsmaybe deliveredtothe customer astheyare developedandthisiscalled evolutionaryorsometimesalsocalledincremental delivery - Thismodel getsan additional valueof earlyuserfeedback - The developmentstrategybehindanevolutionarymodel is o Developsomethingforthe user o Measure the addedvalue tothe userinall critical dimensions o Adjustthe designandthe objectivesbasedonobservedrealities 4. TransformationModel - The transformationmodel viewsthe softwaredevelopmentprocessasasequence of stepsthat graduallytransformsaspecificationintoanimplementation - Initiallythe requirementsare analyzedandfunctionsare alsospecifiedpossiblyinan incremental manner - Thenthe developmentprocessstartsandtransformsitintoa more detaileddescription - As the processcontinues,the descriptionbecomesexecutable anditcan alsobe viewedasa prototype - Furthertransformationmayoccur to make the executabledescriptionmore efficient 5. Spiral model - The spiral model providesaframeworkfordesigningprocessesincludingthe risk levels associatedwiththem - It isalso knownasmetamodel andcanaccommodate any otherdevelopmentmodel withinit - It providesaviewof the productionprocessthatsupportsthe riskmanagement Fig: spiral model - A spiral model iscyclicunlike thatof waterfall model whichislinear.Itinvolvesthe rapid generationof subsequentphasesduringthe software developmentprocess - The spiral model allowscheckingthe robustnessandcorrectnessof the phases.Aftereach cycle of the spiral,the requirementsare checkedaspartof the robustnessof the application
  • 18. Organizingthe process (needmore with figures) Organizingthe software developmentprocessisacritical activitythatinvolvesthe managementof people to the managementof all otherproductsand componentsassociatedwiththe software developmentlife cycle.It alsoinvolvesthe definitionof appropriatemethodsandtheircombinations.The various methodologiesfororganizingthe software developmentprocessare 1. StructuredAnalysis/StructuredDesign (SA/SD) - Thismethodaddressesthe twophasesof software development;the analysisandthe design - In requirementandanalysisphase,the SA/SDusesthree conceptualtools o Data flowdiagrams(DFD) o Data dictionary  It isa centralizedcollectionof definitionsof all dataflowingamongfunctions and to or fromthe data stores  It helpstoremove the duplicationandinconsistencies o StructuredEnglish  It ishighlyconstrainedsubsetof natural language todescribe the data transformationperformedbyeachpartof the DFD 2. Jackson'sSystemDevelopmentandStructuredProgramming(JSD/JSP) - It isa populardesignmethodadoptedbymanyorganizationsforbusinessdataprocessing - It isa technique thatrepresentsamixture of descriptiveapproachesbasedonobjectoriented designandfunctional decomposition - Accordingto JSD,the software developmentgoesthroughasequence of three stages o The modelingstage o The networkstage o The implementationstage - In the modelingstage,the real worldisanalyzedandrepresentedintermsof entitiesand actionsthat may affectthem - In networkstage,eachentityismodeledasa process andthe entire systemisviewedasa networkof interconnectedandcommunicatingprocesses - In implementationstage,the networkof processesistransformedintoanimplementation. That is,the concurrentnetworkof processesistransformedintoasequentialsystemthatis executable byageneral computer 3. The unifiedsoftware developmentprocess(UP) - It isan industrial standardthatusesthe unifiedmodelinglanguage(UML) throughoutthe software life cycle - Usingrich collectionof languagesof UML, the unifiedsoftware developmentprocessaimsto developanobjectorientedsysteminaniterativeand incremental processmodel - The principle isthatany software systemshouldbe brokenintocontrollediterationsor miniprojectsthatprovidethe incrementof the system - The UP life cycle consistsof asequence of cyclesfromthe project'sinitiationtoitstermination and afterendof each cycle it hasproduct releases.The subsequentcyclesalsoresultsthe productreleasesinanincremental manner
  • 19. Unit5: Software EngineeringPrinciples Introduction Software EngineeringPrinciplesare the general andabstractstatementsthatdescribe the desirable propertiesof software processesandproducts.Suchprinciplesdeal withthe processof software developmentandthe final product.The principlesdevelopedandusedare enoughthroughoutthe software constructionandmanagement. To applyany principles,the software engineermusthave appropriate methodsandspecifictechniquesto associate the desiredpropertiesintothe final software product. Methodsare general guidelinesthat governthe executionof some activitywhiletechniquesare more technical andhave restrictedapplicability. The methodsandtechniquesare sometimespackagedtoforma methodology.Toolsare developedfinally to supportthe applicationof methods,techniquesandmethodologies. Rigor and Formality Rigoris alwaysdefinedasprecisionandexactness,isanecessarycomponentforcreativityinevery engineeringactivity.Itisonlythroughrigorousapproachthat we can continuouslyproduce reliable products,control theircostsand increase the confidenceinthe reliabilityof the system.The principleof rigor doesn'talwayslimitandconstrainthe creativitybutitcanbe usedas a tool to enhance the creativity. A software engineercanbe more confidentof the resultsof acreative processafterperformingarigorous assessmentof those results. In anydevelopmentprocess,variousdegreesof rigorcanbe achieved.The highestdegreeof rigoriscalled formalityandformalityisastrongerrequirementthanrigor.Formalityrequires the softwareprocesstobe drivenandevaluatedbymathematical laws. A software engineermustbe able toidentifyandunderstandthe levelof rigorandformalitythatshouldbe achieveddependingonthe conceptual difficultyandcriticalityof the task.The level maybe differentfor differentpartsof the system.Forexample,kernel of OSandsecurityof e-commerce requiresformal descriptionandapproach(formality),whilewell understoodpartsmayrequire simple approaches(rigor) Modularity A complex systemmaybe dividedintosimplerpiecescalledmodulesandsuchsystemiscalledamodular system.The mainbenefitof modularityisthatitallowsthe principlesof separationof componentstobe appliedintwophases 1. Whendealingwiththe detailsof eachmodule inisolationandignoringdetailsof othermodules 2. Whendealingwiththe overall characteristicsof all modulesandtheirrelationshipstointegrate themintoa coherentsystem If the above twophasesare executedinasequence byconcentratingon modulesandthenontheir composition,thenthe systemissaidtobe designedinbottom-upapproach.Whenwe decompose modules firstand thenconcentrate onindividual module designthenthe systemissaidtobe designedintop-down approach.
  • 20. Modularityprovidesfourmainbenefitsinsoftware developmentprocess 1. The capabilityof decomposingacomplex systemintosimplerpieces 2. The capabilityof composingacomplex systemfromexistingmodules 3. The capabilityof understandingthe systemintermsof itspieces 4. The capabilityof modifyingasystembymodifyingonlyasmall numberof itspieces Abstraction - It isa fundamental technique forunderstandingandanalyzingcomplex problems - In abstraction,the importantaspectsof a software processare identifiedandthe detailsare sometimesignored. - So abstractioncan be saidas a special case of separationof concernswhere the importantaspects are separatedandconcernof lessimportantdetailsare ignored - Abstractionisnowadayspracticedbyengineersof all fieldsformasteringcomplexity Anticipationof change - All software undergoeschangesonaregularbasisand the changesoccur due to the needfor repairingthe software errorsandforthe needof supportingnew requirements - Thisqualityisidentifiedasthe maintainabilityof the software process - It alwaysrequire aspecial efforttoanticipate how andwhere changesare likelytooccurand designerscantryto identifythemandtake special care tomake these changeseasytoapply - Software shouldbe designedsuchthatanychangescan be associatedintothe application smoothlyandsafely - Softwaresare designedwithoutfullyunderstandingthe requirementsandonthe basisof users feedbackthe applicationsevolvefromoldrequirementtonew requirements.Thusanticipationof change is a principle thatwe canuse to achieve evolvability Generality - The principle of generalitystatesthateverytime whenwe have tosolve aproblemthen tryto discovermore general problemthatmaybe hiddenbehindthe currentproblemtobe solved - The generalizedproblemmaybe lesscomplex andeasiertosolve thanthe original problemand the solutionof the generalizedproblemmayalsobe reusedtoget the final solutionof the original problem - But the generalizedsolutionmaybe more costlyintermsof execution,memoryrequirements,and developmenttime. Soitisnecessarytoevaluate the importance of the generalizedsolutionswith respectto theircostand efficiency
  • 21. Unit6: Software Design The software designactivity and itsobjectives Designingisafundamental humanactivityanditprovidesastructure toany complex architecture.It decomposesasystemintopartsand assignsresponsibilities toeachpart,ensuringthatthe parts fit togethertoachieve all the goalsof the system. The designactivityisa fundamental phaseinthe software developmentprocessanditprogressively transformsthe systemrequirementsthroughanumberof intermediatestagesintoafinal product.In software engineeringthe designisdefinedassystemdecompositionintomodules.Usually, asoftware architecture isproducedtoguide the software design.The architectureshowsthe structure and organizationof the systemtobe defined. The software architecture includesadescriptionof the maincomponentsof the system, the relationships amongthese componentsandthe reasonforthe decompositionof the systemintocomponents. The objective of the software designactivityisthe definitionof the software designaccordingtothe guidelines of software architecture. - The software designisaprocessin whichthe viewsof the systemare describedthroughsteps of increasingdetails.The architectureisdevelopedfirston the basisof systemrequirements. Then,a highlevel designisproducedonthe basisof the architecture andthena low level designisderivedonthe basisof the highlevel design. - The modularityprincipleplaysanimportantrole inthe designof the software system.A modularsystemisaccomplishedinseveral ways. Modularizationtechniques The modularizationtechniquescanbe viewedaccordingtotwoaspectsof software design: 1. The processthat addressesthe problemof definingthe overall structure of the architecture in termsof relationshipsamongthe modules 2. The processthat dealswiththe designof eachmodule These twoaspectsare knownasarchitectural designanddetaileddesignrespectively Modulesare itself awell-definedcomponentsof asoftware system.Itisa collectionof routines,data,data type definitionsoramixture of all.Generallywe canview amodule asa providerof computational resourcesandservices. Mathematicallythe modularstructure of asystemcan be expressedas S={M1, M2, M3, ………Mn) Where S isthe software systemandMisthe module A relationron S definesthatif twomodulesMi andMj are on S thenwe can say that Mi r Mj.
  • 22. A relationonmodulesare inhierarchyandproducesadirectedacyclicgraph(DAG) that is there are no cyclesinthe graph of the relationbetweenmodules Modularizationcanbe achievedbyusingtwotypesof relationsamongthe modules:USESand IS_COMPONENT_OF The USES Relation The USES relationisone of the useful relationsfordescribingthe modularstructure of the software system. For any twomodulesMi and Mj, we say thatMi USES Mj. It meansthat Mi needsthe presence of Mj and Mj providesthe resourcesforMi.In such case Mj is calleda server. The IS_COMPONENT_OFRelation IS_COMPONENT_OFisanotherrelationamongthe modulesthatisuseful fordescribingdesignsina software system.Thisrelationallowsdesignerstodescribe anarchitecture intermsof a module thatis composedof othermodulesthatmaybe composedof othermodulesandsoon. ObjectOrientedDesign ObjectOrientedDesignisatechnique thatusesthe designapproachbasedonabstract data typesandthis designwaspopularbecause of the developmentof objectorientedprogramminglikeC++,JAVA etc. In OOdesign,there isonlyone type of module used,the abstractdata-type module andwe call such modulesasclasses.A classusesthe operationsthatmaybe usedtomanipulate itsinstancesandsuch operationsare definedbyprocedurescalledthe methods. OO designinsistsonidentifyingclassesandrelationsamongthe classes andUnifiedModelingLanguage (UML) notationsare widelyusedfordescribingthe OOdesigns Handling Anomalies Designingthe software productscanbe complex evenif we use asystematicdesignapproachfollowedby rigorousand disciplinedimplementationtechniques.The designershouldalwaysanticipate failure and shouldplantoavoidor tolerate themandmustemploya defensivedesign.A robustsystemshouldbe built that couldcontinue tobehave reasonablyeveninunexpectedcircumstances. In software engineering,amodule issaidtobe anomalousif itfailstoprovide aservice asexpectedand specifiedinitsinterface.
  • 23. Unit7: Software Verificationand Validation Introduction Eventhoughsoftware engineersadoptthe latesttechnologyandthoughtful designtechniques,the software designprocessalwayshave someerrorsandtheynevercanbe avoided.Soeachsoftware design processmustbe verifiedagainstitsrequirementsthroughoutthe developmentprocess. The software designanddevelopmentprocessmustbe verifiedjustlike anyotherengineeringactivity. Verificationorvalidationisthe activitiesthatare undertakentocheckwhetherthe software being developedmeetsitsobjectivesornot.These activitiesincludetesting,mathematical proofs,andinformal reasoningaswell. Importance of verification Everysoftware developmentprocessmustbe verified - To check whetheritmeetsthe objectivesof the requirementsornot - To ascertainwhetherthe software hasthe critical requirementstobe metor not - To see whetherthe resultsif the code matchour expectationsornot The importance of verificationinanysoftware developmentprocesscanbe consideredwiththe following reasons 1. The designedsoftware withoutanyverificationcannotgainabsolute confidence inthe correctness inthe performance 2. Evenif it providessuchconfidence inperformance,itcouldnothave the trust.The software might performpoorlysometimeorthe documentationmaybe inadequate,maynothave anyeffective use. Performingverificationonlyafterrunningthe code makesitverydifficulttorepairanydefects.So the verificationactivityshouldstartfromthe verybeginningfollowingthe rigorousprinciplesandsuitable techniques. White-BoxTesting Alsocalledthe structural testing,the white-box testingisthe technique of testingsmall individualmodules. Thistechnique usesthe internalstructure of the programto derive the testdata.The white-box testing strategytriesto execute all the programstatementsinasequence atleastonce andthisstrategyisknown as statement-coverage criterion. Example code While x=!y,loop if x>y,then x=x-y else,y=y-x endif endloop
  • 24. In the code above,the program triestoensure thatall of the statementsare checkedonce andtriesto execute accordingly. The programfirstchecksthe conditionof while loop,thenthe loopbeginsforx andy incase the givenconditionmatches. A possible testsetof x=2,y=2; x=5, y=1 and x=2, y=7 can be usedto testall statementsof the program. Black-Box Testing Alsocalledfunctionaltesting,the black-box testingisbasedonthe objective of the programandwhatthe program isintendedtodo.The black-box testingisusuallybasedonthe program'sspecificationratherthan the structure. For example,forabillingsystem,the black-box testingcanbe done byforwardingthe followingqueries 1. Prepare a bill withthe currentdate 2. Show a bill withthe specifiedbill number 3. Provide areportfrom December21-2011 to January3-2012 4. Showall the transactionin the monthof January 2009,2010,2011 and2012 withthe salesof keyboardsoldbythe salesmanjohn Debugging A bugis an error ina program and can finallycause failurein the whole program.The goal of anytesting, analysisandverificationof asoftware productisto findsuchbugs andto correct them.Debuggingisan activityof findingandcorrectingsucherrorsand subsequentfailures.The debuggingactivitystartsas soon as the program findserrorsand failuresinitsexecution.Butdebuggingitself isthe leastunderstoodactivity of software engineering.Soa rigorprinciple andcare mustbe usedtolocate and fix the errors. A failure isanactivitythatdoesn'tmatch the program specification.Soasoftware engineershouldfirst analyze the specifications.Furthermore,anerrormaynot alwaysbe inthe implementation,butitcan be causedby the combinationof several errors.Soasoftware engineermustlocate all the possible errorsand fix themusingthe varioustechniquesof programming. SymbolicExecution Symbolicexecutionisaverificationtechniquethatcanbe classifiedastestingandanalysis.Itisa combinationof experimental andanalytical approaches tosoftware verification.Forexampleinthe pseudo code below Read(a,b) x=a +b write (x) In the above code,the computerneedstoreadthe valuesforthe giveninputtoproduce the desired output.But forhumans,doingthe same thingrequiresadifferentapproachsuchas "let'sassume a andb be the inputvaluesandx be the desiredoutputwhichiscalculatedbysummingupaand b".
  • 25. In bothof the cases,the assumptionof a andb are the symbolicnotationsforcomputingthe sumx.This kindof reasoning hasmanyadvantages thanusingthe actual numericcomputations.The symbolsusedcan representanyactual valuesforthe inputandthe outputvariables. ValidationTechniques Validationisthe processof ensuringthataprogram operatesonclean,correct and useful dataandother resourcestoproduce an intendedoutput. The validationprocessinvolvestwobasicsteps: 1. Validationcheck Uses one or more computational rule todetermine whetherthe resourcesusedare validornot 2. Post-checkaction Sends feedbacktohelpenforce the validation The other techniquesusedforresourcesvalidationare 1. Character checking Checkswhetherthe allowedcharactersare presentornot.For example,some numericfieldlike telephonenumbercanconsistonlynumbersbetween0-9butno fractionsand namesshouldnot consistcharacterslike < and >. 2. Batch Tools Batch toolsare usedtocheck the missingrecords.Some batchtoolsare alsousedto combine numerical fields. 3. Cardinalitycheck Checkswhetherthe database hasthe validrecordsor not.For example if the contactrecordis classifiedasacustomerthenitshouldhave at leastone validorder(ie cardinality>0) andina payroll systemif apersonismarkedas "formeremployee"thenitshouldnothave salaryvalues afterthe date of resignation(ie cardinality=0) 4. Consistencychecks Checksthe consistenciesindatafieldsinrelationtootherfields.Forexample,if tilte=Mr.then gender=Male 5. Data type checks Checksthe data type of the inputandgive an errormessage if the inputdata doesnotmatch with the chosendata type,e.g.,Inan inputbox acceptingnumericdata,if the letter'O' wastyped insteadof the numberzero,anerror message wouldappear. Some othervalidationtechniquesinclude Crosssystemconsistencychecks,file existence checks,dataformatcheck,logicchecks,andspelling and grammar checksetc.
  • 26. Unit8: Software Qualities Software qualityand Software Quality factors The software qualityisdefinedasthe requirementof asoftware product thatmeetsthe desiredobjectives of the usersintermsof itsusefulness,dependabilityanddurability.Itpromotesthe awarenessof crucial role of qualitymanagementinsoftware developmentprocessforeffectiveandefficientdevelopmentof software products. In software engineering,the software qualitiesare consideredontwoessential factors 1. The software functional qualitythatensureshow well the softwareproductcompliesor conformsto the givendesign. Thatattribute canalsobe describedasthe fitnessforpurpose of a piece of software orhow itcomparesto competitorsinthe marketplace asa worthwhile product. 2. The software structural qualitythatrefershow itmeetsthe non-functional qualitieslike robustness,maintainability,durabilityetc. Software QualityAssurance Software qualityassurance (SQA) is a technique of monitoringthe software engineering processesand methodsusedtoensure quality. There is varietyof techniquesthatcanbe usedto ensure the qualityof the software process,like the ISO9000 and CMMI (CapabilityMaturityModel Integration) SQA encompassesthe entire software development process,whichincludesprocessessuchas requirementsdefinition, software design, coding, source code control, code reviews, change management, configurationmanagement, testing, releasemanagement,andproductintegration.SQA is organizedintogoals,commitments,abilities,activities,measurements,andverifications. SQA definesthe qualityinsoftware intermsof twofactors 1. Qualityof Design 2. Qualityof Conformance SQA Activities SQA is an essential processinanysoftware developmentactivityandtoensure the desire qualities,the SQA may encompassthe following activities 1. Pre-ProjectActivities Thisis an initial activitythatfocusesonassessmentandanalysisof the requirementsof asoftware system.The pre-projectactivitiesconsistsof followinganalysis a. Reviewof Requirements
  • 27. b. DevelopmentPlan c. QualityPlan 2. DevelopmentandMaintenance Activities The assessedrequirementsare writtendownascodesof the program and subsequent maintenance activitiesare alsoperformedonthe systemthatisbeingdeveloped.Itfurtherconsists of followingsteps a. Formal Technical Reviews b. Code inspection c. Module Testing,IntegrationTesting 3. Error ReductionFramework To ensure anerror free infrastructure,the SQA teamshouldfocusof factorslike a. Well knownworkprocedures b. Good use of templatesandchecklists c. Staff trainings d. Preventiveactions e. Configurationanddocumentationcontrol activities 4. QA Management The managementof the software developmentteamshouldhave adirectedgoal towardsthe qualityassurance.Itcan be achievedby - reviewingthe projectprogress - analyzingthe budgetandriskfactors - consideringqualitymetricsandthe costinvolved 5. SQA SystemImplementation SQA can be implementedinsoftware developmentprocessbyfollowingthe globallyknownquality managementstandardslike the ISO,SEICMMI (Software EngineeringInstitute)etc 6. SQA Unit In a software developmentorganization,aseparate SQA unitshouldbe implementedjustlike a researchand developmentunit.The SQA unitforwardsthe metricsandplansforotherSQA activities.
  • 28. Software QualityStandards Accordingto the IEEE (Institute of Electrical andElectronicEngineers) Software EngineeringCommittee,a standardis a measurementof comparisonthatdefinesorrepresentsthe magnitude of aunit.It isa characterizationthatestablishesthe allowable tolerancesorconstraintsforcategoriesof items.Sometimes a software standardisalsoreferredtoas the level of requiredexcellence. Some of the widelyknowncomputerengineeringstandardsare ISO,IEEE,SEI, ANSI,IEC(International Electrotechnical Commission)etc. ISO Formedin1947, the international organizationforstandardization (ISO)) isaninternational standards settingorganizationwhichiscomposedof representativesfromvariousnational standardorganizations. The ISO formulatesworldwide proprietary,industrial andcommercial standards.The ISOisavoluntary organizationwhose membersare the recognizedauthoritiesonstandards,eachone representingone country.It furtherconsistsof the technical committee,subcommitteesandthe workinggroups. Technical reports are issuedwhenatechnical committeeorsubcommitteehascollecteddataof a different kindfromthat normallypublishedasanInternational Standard suchasreferencesandexplanations.Such reportsare givenaRFC (requestforcomment) numberwhichare forwardedtothe higherauthorityof the ISO.A draft standardiscreatedif the reporthas positive aspectsandbecomesaknownstandardif it matcheswhatit proposes.A permanentRFCnumberisassignedtothe provenstandard.Some of the standardsrelatedtocomputerscience andsoftware engineeringare - ISO/IECTR 17799:2000 Code of Practice for InformationSecurityManagement - ISO/TR19033:2000 Technical productdocumentation — Metadataforconstruction documentation - ISO9000-3 for QualityManagementandQualityAssurance StandardPart3: Guidelinesforthe applicationof 9001 to the development,supply,installationandmaintenance of computer software - ISO/IECWD 15288 SystemLife Cycle Processes SEI Software EngineeringInstitute (SEI) isa federallyfundedresearchanddevelopmentcenter headquartered on the campusof Carnegie MellonUniversity inPennsylvania, UnitedStates.The SEIoperateswithmajor fundingfromthe U.S.Departmentof Defense andworkscloselywithindustryandacademicinstitutions throughresearchcollaborations.The SEIprogramof work isconductedinseveral principal areas: acquisition,processmanagement,risk,security,software development,and systemdesign. The SEI CMMI (CapabilityMaturityModel Integration) CMMI isa processimprovement approachandcan be usedto guide processimprovementacrossa project, a division,oranentire organization.Processesare ratedaccordingto theirmaturitylevels,whichare definedas:Initial,Managed,Defined,QualitativelyManaged,Optimizing. CMMI addressesthree areasof interest:
  • 29. 1. Productand service development — CMMIfor Development(CMMI-DEV) 2. Service establishment,management, — CMMIfor Services(CMMI-SVC) 3. Productand service acquisition — CMMI forAcquisition(CMMI-ACQ) Software Reviews Software reviewsare afilterforthe software engineeringprocessandare appliedatdifferentpointsof software developmentprocess touncovererrorsthatcan be removed. Anyreviewisaprocessof usingthe diversityof people'smindto: 1. Pointoutthe neededimprovementsinthe product 2. Confirmthatthe parts of a software productare whetherneededornot There are manytypesof reviewslike: 1. An informal meetingtodiscuss the technical problems 2. Formal presentationof the software withthe customers,managementandthe technical team Cost Impact of Software Defects The cost impact onsoftware defectsare largeronpost detectionof errors;thatiswhenthe errors detected afterthe completionof the software product.The costfor correctingerrorsearlybefore the finalizationis much lesser. The technical teammusttherefore tryto uncoverdefective partsanderrorsearlyinthe software developmentprocess.
  • 30. DefectAmplificationand Removal The defectamplificationandremoval model canbe usedto illustrate the generationanddetectionof errorsduringthe preliminarydesign,detaileddesign,andcoding.The defectamplificationandremoval model isshownbelow The whole box representsanysoftware developmentstepandduringthe step,errorsmaybe generated withoutanynotice.Software reviewsmayfail touncovernewlygeneratederrorsfromprevioussteps resultinginsome of the errorsmay passto nextsteps.Insome caseserrorspassedthroughfromprevious stepsare amplifiedbythe amplificationfactorx.