8/7/2019 MC0071_February 2011_Software Engineering-Assignement
1/23
February2011
MasterofComputerApplication(MCA)Semester3
MC0071SoftwareEngineering4Credits
(BookID:B0808&B0809)AssignmentSet1
1. Describetheconcurrentdevelopmentmodelinyourownwords.Ans: The concurrent process model can be represented schematically as a series of major technical
activities, tasks,and theirassociatedstates.Fore.g.:, theengineeringactivitydefined for thespiral
model is accomplished by invoking the following tasks. Prototyping and / or analysis modeling,
requirementsspecification,anddesign.
The below figure shows that it provides a schematic representation of one activity with the
concurrentprocessmodel.Theactivityanalysismaybe inanyoneofthestatesnotedatanygiven
time. Similarly,otheractivities (e.g.Designor customer communication) canbe represented inan
analogousmanner.Allactivitiesexist concurrentlybutreside indifferentstates.Fore.g.,early ina
project the customer communication activity has completed its first iteration and exists in the
awaitingChangesState.Theanalysisactivity(whichexisted inthenonestatewhile initialcustomer
communicationwas completed) nowmakes a transition into the under development state. If the
customerindicatesthatchangesinrequirementsmustbemade,theanalysisactivitymovesfromthe
underdevelopmentstateintotheawaitingchangesstate.
Theconcurrentprocessmodeldefinesaseriesofeventsthatwilltriggertransitionfromstatetostate
foreachofthesoftwareengineeringactivities.Fore.g.,duringearlystagesofdesign,aninconsistency
in theanalysismodel isuncovered.Thisgenerates theeventanalysismodel correction,whichwill
triggertheanalysisactivityfromthedonestateintotheawaitingChangesState.
The concurrentprocessmodel isoftenusedas theparadigm for thedevelopmentof client/server
applications.Aclient/serversystemiscomposedofasetoffunctionalcomponents.Whenappliedto
client/server,theconcurrentprocessmodeldefinesactivitiesintwodimensionsasystemdimension
andcomponentdimension.Systemlevelissuesareaddressedusingthreeactivities,designassembly,
anduse.Thecomponentdimensionaddressedwithtwoactivitydesignandrealization.Concurrency
is achieved in two ways; (1) System and component activities occur simultaneously and can be
modeled
using
the
state
oriented
approach
(2)
a
typical
client
server
application
is
implemented
withmanycomponents,eachofwhichcanbedesignedandrealizedconcurrently.
The concurrentprocessmodel isapplicable to all typesof softwaredevelopment andprovides an
accurate picture of the current state of a project. Rather than confining softwareengineering
activities toa sequenceofevents, itdefinesanetworkofactivities.Eachactivityon thenetwork
existssimultaneouslywithotheractivities.Eventsgeneratedwithinagivenactivityoratsomeother
placeintheactivitynetworktriggertransitionsamongthesatesofanactivity.
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
2/23
Representsastateofasoftwareengineeredactivity
UNDER
DEVELOPMENT
AWAITING
CHANGES
UNDER REVISION
UNDER REVIEW
BASELINED
DONE
Oneelementofconcurrentprocessmodel
Componentbaseddevelopmentmodel:
This model incorporates the characteristics of the spiral model. It is evolutionary in nature,
demanding an iterative approach to the creation of software. However, the componentbased
developmentmodelcomposesapplicationsfromprepackagedsoftwarecomponentscalledclasses.
Classescreatedinpastsoftwareengineeringprojectsarestoredinaclasslibraryorrepository.Once
candidate classes are identified, the class library is searched todetermine if these classes already
exist.Iftheydo,theyareextractedfromthelibraryandreused.Ifacandidateclassdoesnotresidein
the
library,
it
is
engineered
using
object
oriented
methods.
The
first
iteration
of
the
application
to
be
builtisthencomposedusingclassesextractedfromthelibraryandanynewclassesbuilttomeetthe
uniqueneedsoftheapplication.Processflowthenreturnstothespiralandwillultimatelyreenter
thecomponentassemblyiterationduringsubsequentpassesthroughtheengineeringactivity.
Thecomponentbaseddevelopmentmodelleadstosoftwarereuse,andreusabilityprovidessoftware
engineers with a number of measurable benefits although it is very much dependent on the
robustnessofthecomponentlibrary.
2. ExplainthefollowingconceptswithrespecttoSoftwareReliability:A)SoftwareReliabilityMetrics
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
3/23
Ans: Metricswhichhavebeenused for software reliability specificationare shown inbelow Figure.The
choiceofwhichmetric shouldbeuseddependson the typeofsystem towhich itappliesand the
requirementsof theapplicationdomain.For some systems, itmaybeappropriate tousedifferent
reliabilitymetricsfordifferentsubsystems.
METRIC EXPLANATION EXAMPLE SYSTEM
POFOD
PROBABILITY
OF FAILURE ON
DEMAND
This is measure of the likelihoodthat the system will fail when a
service request is made. For
example,aPOFODof0,001means
that1outof1000servicerequests
mayresultinfailure.
Safety critical and nonstopsystems, such as hardware control
systems.
ROCOF
RATE OF
FAILURE
OCCURRENCE
This isameasureof the frequencyof occurrence with which
unexpected behavior is likely to
occur. For example, a ROCOF of
2/100mansthat2failuresarelikely
to occur in each 100 operational
timeunits.Thismetricissometimes
calledthefailureintensity.
Operating systems, transactionprocessingsystem.
MTTF
MEAN TIME TO
FAILURE
This is a measure of the timebetween observed system failures.
Forexample,anMTTFof500 time
units. If the system is not being
changed, it is the reciprocalof the
ROCOF.
SystemswithlongtransactionssuchasCADsystem.TheMTTFmustbe
greaterthanthetransactiontime.
AVAIL
AVAILABILITY
This isameasureofhow likely thesystem is to be available for use.
Forexample,anavailabilityof0.998
means that in every 1000 time
units, the system is likely to be
availablefor998ofthese
Continuously running systems suchastelephoneswitchingsystem
Reliabilitymatrix
In some cases, system users are most concerned about how often the system will fail, perhaps
becausethereisasignificantcostinrestartingthesystem.Inthosecases,ametricbasedonarateof
failureoccurrence(ROCOF)orthemeantimetofailureshouldbeused.
Inothercases,itisessentialthatasystemshouldalwaysmeetarequestforservicebecausethereis
some cost in failing to deliver the service. The number of failures in some time period is less
important.Inthosecases,ametricbasedontheprobabilityoffailureondemand(POFOD)shouldbe
used.Finally,usersorsystemoperatorsmaybemostlyconcernedthatthesystemisavailablewhena
requestforserviceismade.Theywillincursomelossifthesystemisunavailable.Availability(AVAIL).
Whichtakesintoaccountrepairorrestarttime,isthenthemostappropriatemetric.
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
4/23
Therearethreekindsofmeasurement,whichcanbemadewhenassessingthereliabilityofasystem:
1.The number of system failures given a number of systems inputs. This is used tomeasure thePOFOD.
2.Thetime(ornumberoftransaction)betweensystemfailures.ThisisusedtomeasureROCOFandMTTF.
3.Theelapsed repairor restart timewhenasystem failureoccurs.Given that thesystemmustbecontinuouslyavailable,thisisusedtomeasureAVAIL.
Timeisafactorinallofthisreliabilitymetrics.Itisessentialthattheappropriatetimeunitsshouldbe
chosen ifmeasurementsare tobemeaningful.Timeunits,whichmaybeused,are calendar time,
processortimeormaybesomediscreteunitsuchasnumberoftransactions.
Software
reliability
specification
System requirementsdocuments, reliability requirementsareexpressed inan informal,qualitative,
untestableway. Ideally, the required level of reliability should be expressed quantitatively in the
software requirement specification.Dependingon the typeof system,oneormoreof themetrics
discussed in the previous section may be used for reliability specifications. Statistical testing
techniques(discussedlater)shouldbeusedtomeasurethesystemreliability.Thesoftwaretestplan
shouldincludeanoperationalprofileofthesoftwaretoassessitsreliability.
Thestepsinvolvedinestablishingareliabilityspecificationareasfollows:
1.Foreachidentifiedsubsystem,identifythedifferenttypesofsystemfailure,whichmayoccurandanalyzetheconsequencesofthesefailures.
2.From thesystem failureanalysis,partition failures intoappropriateclasses.Areasonablestartingpoint is touse the failure types shown in Figure shownbelow. For each failure class identified,
definethereliabilityrequirementusingtheappropriatereliabilitymetric.Itisnotnecessarytouse
the same metric for different classes of failure. For example, where a failure requires some
intervention torecover from it, theprobabilityof that failureoccurringondemandmightbe the
mostappropriatemetric.Whenautomaticrecoverispossibleandtheeffectofthefailureissome
userinconvenience,ROCOFmightbemoreappropriate.
FAILURE CLASSQ DESCRIPTION
TRANSIENT OccursonlywithcertaininputsPERMANENT OccurswithallinputsRECOVERABLE Systemcanrecoverwithoutoperatorintervention
UN RECOVERABLE Operatorinterventionneededtorecoverfromfailure
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
5/23
NON CURRUPTING FailuredoesnotcorruptsystemstateordataCURRUPTING Failurecorruptssystemstateordata
Failureclassification
Thecostofdevelopingandvalidatingareliabilityspecificationforsoftwaresystemisveryhigh.
Statisticaltesting
Statisticaltesting isasoftwaretestingprocess inwhichtheobjective istomeasurethereliabilityof
thesoftwareratherthantodiscoversoftwarefaults.Itusersdifferenttestdatafromdefecttesting,
whichisintendedtofindfaultsinthesoftware.
Thestepsinvolvedinstatisticaltestingare:
1.Determine
the
operational
profile
of
the
software.
The
operational
profile
is
the
probable
pattern
of usage of the software. This can be determined by analyzing historical data to discover the
differentclassesofinputtotheprogramandtheprobabilityoftheiroccurrence.
2.Selectorgenerateasetoftestdatacorrespondingtotheoperationalprofile.3.Apply these test cases to the program, recording the amount of execution time between eachobservedsystemfailure.Itmaynotbeappropriatetouserawexecutiontime.Asdiscussedinthe
previoussection,thetimeunitschosenshouldbeappropriateforthereliabilitymetricused.
4.Afterastatisticallysignificantnumberoffailureshavebeenobserved,thesoftwarereliabilitycanthenbecomputed.Thisinvolvesusingthenumberoffailuresdetectedandthetimebetweenthese
failurestocomputertherequiredreliabilitymetric.
Thisapproachtoreliabilityestimationisnoteasytoapplyinpractice.Thedifficulties,whicharise,are
dueto:
Operationalprofileuncertainty; Highcostofoperationalprofilegeneration; Statisticaluncertaintywhenhighreliabilityisspecified.B)ProgrammingforReliability
Ans: Thereisageneralrequirementformorereliablesystemsinallapplicationdomains.Customersexpect
their software to operate without failures and to be available when it is required. Improved
programmingtechniques,betterprogramminglanguagesandbetterqualitymanagementhaveledto
verysignificant improvements in reliability formostsoftware.However, forsomesystems,suchas
those,whichcontrolunattendedmachinery,thesenormaltechniquesmaynotbeenoughtoachieve
thelevelofreliabilityrequired.Inthesecases,specialprogrammingtechniquesmaybenecessaryto
achievetherequiredreliability.Someofthesetechniquesarediscussedinthischapter.
Reliabilityinasoftwaresystemcanbeachievedusingthreestrategies:
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
6/23
Faultavoidance:Thisisthemostimportantstrategy,whichisapplicabletoalltypesofsystem.Thedesignandimplementationprocessshouldbeorganizedwiththeobjectiveofproducingfaultfree
systems.
Fault tolerance: This strategy assumes that residual faults remain in the system. Facilities areprovided
in
the
software
to
allow
operation
to
continue
when
these
faults
cause
system
failures.
Fault detection: Faults are detected before the software is put into operation. The softwarevalidation process uses static and dynamic methods to discover any faults, which remain in a
systemafterimplementation.
Faultavoidance
Agoodsoftwareprocessshouldbeorientedtowardsfaultavoidanceratherthanfaultdetectionand
removal. It shouldhave theobjectiveofdeveloping faultfree software.Faultfree softwaremeans
software,whichconformstoitsspecification.Ofcourse,theremaybeerrorsinthespecificationorit
maynotreflecttherealneedsoftheusersofaultfreesoftwaredoesnotnecessarilymeanthatthe
softwarewillalwaysbehaveastheuserwants.
Faultavoidanceandthedevelopmentoffaultfreesoftwarerelieson:
1.The availability of aprecise system specification,which is an unambiguousdescription ofwhat,mustbeimplemented.
2.Theadoptionofanorganizationalqualityphilosophyinwhichqualityisthedriverofthesoftwareprocess.Programmersshouldexpecttowritebugfreeprogram.
3.Theadoptionofanapproachtosoftwaredesignandimplementationwhichisbasedoninformationhidingandencapsulationandwhichencouragestheproductionofreadableprograms.
4.The use of a strongly typed programming language so thatpossible errors are detectedby thelanguagecompiler.
5.Restriction on the use of programming construct, such as pointers,which are inherently errorprone.
Achievingfaultfreesoftwareisvirtuallyimpossibleiflowlevelprogramming
Languageswithlimitedtypecheckingareusedforprogramdevelopment.
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
7/23
CostPererror
deleted
NumberofresidualerrorsVeryfew Few Many
Theincreasingcostofresidualfaultofremoval
We must be realistic and accept that human errors will always occur. Faults may remain in the
softwareafterdevelopment.Therefore, thedevelopmentprocessmust includea validationphase,
whichchecksthedevelopedsoftwareforthepresenceoffaults.Thisvalidationphaseisusuallyvery
expensive.Asfaultsareremovedfromaprogram,thecostoffindingandremovingremainingfaults
tendstoriseexponentially.Asthesoftwarebecomesmorereliable,moreandmoretestingisrequired
tofindfewerandfewerfaults.
Structuredprogramminganderroravoidance
Structured programming is termwhich is tomean programmingwithout using go to statements,
programmingusingonlywhileloopsandifstatementsascontrolconstructsanddesigningusingatop
down approach. The adoption of structured programming was an important milestone in the
development of software engineering because it was the first step away from an undisciplined
approachtosoftwaredevelopment.
Gotostatementwasaninherentlyerrorproneprogrammingconstruct.Thedisciplineduseofcontrol
structures forceprogrammers to think carefullyabout theirprogram.Hence theyare less likely to
make mistakes during development. Structured programming means programs can be read
sequentiallyandare thereforeeasier tounderstandand inspect.However,avoidingunsafe control
statementsisonlythefirststepinprogrammingforreliability.
Faultsarelesslikelytobeintroducedintoprogramsiftheuseoftheseconstructsisminimized.These
constructsinclude:
1.Floatingpointnumbers:Floatingpointnumbersareinherentlyimprecise.Theypresentaparticularproblem when they are compared because representation imprecision may lead to invalid
comparisons.Fixedpointnumbers,whereanumber isrepresentedtoagivennumberofdecimal
places,aresaferasexactcomparisonsarepossible.
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
8/23
2.Pointer:Pointersare lowlevel constructs,which referdirectly toareasof themachinememory.They are dangerous because errors in their use can be devastating and because they allow
aliasing. Thismeans the same entitymaybe referencedusing differentnames.Aliasingmakes
programshardertomaybereferencedusingdifferentnames.Alilasingmakesprogramsharderto
understandsothaterrorsaremoredifficulttofind.However,efficiencyrequirementsmeanthatit
isoftenimpracticaltoavoidtheuseofpointers.
3.Dynamicmemoryallocation:Programmemory isallocatedatruntime rather thancompiletime.Thedangerwith this is that thememorymaynotbedeallocatedso that thesystemeventually
runsoutofavailablememory.Thiscanbeaverysubtletypeoferrorstodetectasthesystemmay
runsuccessfullyforalongtimebeforetheproblemoccurs.
4.Parallelism:Parallelism isdangerousbecauseof thedifficultiesofpredicting thesubtleeffectsoftiming interactions between parallel process. Timing problems cannot usually e detected by
programinspectionandthepeculiarcombinationofcircumstances,whichcauseatimingproblem,
maynotresultduringsystemtesting.Parallelismmaybeunavoidablebutitsuseshouldbecarefully
controlled tominimize interprocessdependencies.Programming language facilities, suchasAda
tasks,helpavoid someof theproblemsofparallelismas the compiler candetect somekindsof
programmingerrors.
5.Recursion:Recursion isthesituation inwhichasubroutinecalls itselforcallsanothersubroutine,which thencalls thecallingsubroutine. Itsuse can result inveryconciseprogramsbut itcanbe
difficult to follow the logic of recursive programs. Errors in using recursion may result in the
allocationofalltheysystemsmemoryastemporarystackvariablesarecreated.
6.Interrupts:Interruptsareameansofforcingcontroltotransfertoasectionofcodeirrespectiveofthecodecurrentlyexecuting.Thedangersofthisareobviousastheinterruptmaycauseacritical
operationtobeterminated.
Faulttolerance
A faulttolerant system can continue inoperation after some system failureshaveoccurred. Fault
toleranceisneededinsituationswheresystemfailurewouldcausesomeaccidentorwherealossof
systemoperationwouldcauselargeeconomiclosses.Forexample,thecomputersinanaircraftmust
continueinoperationuntiltheaircrafthaslanded;thecomputersinantrafficcontrolsystemmustbe
continuouslyavailable.
Faulttolerance facilities are required if the system is to failure. There are four aspects to fault
tolerance.
1.Failuredetection:Thesystemmustdetectaparticularstatecombinationhasresultedorwillresultin
a
system
failure.
2.Damageassessment:Thepartsofthesystemstate,whichhavebeenaffectedbythefailure,mustbedetected.
3.Faultrecovery:Thesystemmustrestoreitsstatetoaknownsafestate.Thismaybeachievedbycorrecting the damaged state or by restoring the system the system to a known safe state.
Forwarderrorrecoveryismorecomplexasitinvolvesdiagnosingsystemfaultsandknowingwhat
thesystemstateshouldhavebeenhadthefaultsnotcausedasystemfailure.
4.Fault repair:This involvesmodifying thesystemso that the faultdoesnot recur. Inmanycases,software failuresare transientanddue toapeculiar combinationof system inputs.No repair is
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
9/23
necessaryasnormalprocessingcanresume immediatelyafterfaultrecovery.Thisisanimportant
distinctionbetweenhardwareandsoftwarefaults.
Therehasbeenaneed formanyyears tobuild faulttoleranthardware.Themost commonlyused
hardware faulttolerant technique isbasedaround thenotionof triplemodular redundancy (TMR)
shown
in
the
below
figure.
The
hardware
unit
is
replicated
three
(or
sometimes
more)
times.
The
outputfromeachunitiscompared.Ifoneoftheunitsfailsanddoesnotproducethesameoutputas
theotherunits,itsoutputisignored.Thesystemfunctionswithtwoworkingunits.
A1
A2
A3
Output
Comparator
Triplemodularredundancytocopewithhardwarefailure
Theweaknessofboththeseapproachestofaulttolerance isthattheyarebasedontheassumption
thatthespecificationiscorrect.Theydonottoleratespecificationerrors.
Therehavebeentwocomparableapproachestotheprovisionofsoftwarefaulttolerance.Bothhave
beenderivedfromthehardwaremodelwhereacomponentisreplicated.
(1) Nversionprogramming:Usingacommonspecification,thesoftwaresystemisimplementedinanumberofdifferentversionsbydifferent teams.Theseversionsareexecuted inparallel.Their
outputsarecomparedusingavotingsystemandinconsistentoutputsarerejected.Atleastthree
versionsofthesystemshouldbeavailable.
Nversionprogramming
(2) Recovery Blocks: this is a finer grain approach to fault tolerance. Each program componentincludesa test tocheck if thecomponenthasexecutedsuccessfully. Italso includesalternative
code,whichallowsthesystemtobackupandrepeatthecomputationifthetestdetectsafailure.
Unlike Nversion programming, the implementation is different rather than independent
implementationofthesamespecification.Theyareexecutedinsequenceratherthaninparallel.
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
10/23
Algorithm1Acceptance
test
Recoveryblocks
Algorithm2 Algorithm2
Tryalgorithm1Testfor
success Continueexecutionit
acceptancetestsuccess
SignalExceptionifall
algorithmsfail
Retest
Retry
RetestAcceptance test
failsretry
ExceptionHandling
Whenanerrorofsomekindoranunexpectedeventoccursduringtheexecutionofaprogram,thisis
calledanexception.Exceptionsmaybecausedbyhardwareorsoftwareerrors.Whenanexception
has not been anticipated, control is transferred to system exceptions handling mechanism. If an
exceptionhasbeen anticipated, codemustbe included in theprogram todetect andhandle that
exception.
Mostprogramming languagesdonot includefacilities todetectandhandleexceptions.Thenormal
decisionconstructs(ifstatements)ofthelanguagemustbeusedtodetecttheexceptionandcontrol
constructsusedtotransfercontroltoexceptionoccursinasequenceofnestedprocedurecalls,there
isnoteasywaytotransmititfromoneproceduretoanother.
Considerexampleasshown infigurebelowanumberofnestedprocedurecallswhereprocedureA
callsprocedureBwhichcallsprocedureC.IfanexceptionoccursduringtheexecutionofCthismaybe
soseriousthatexecutionofBcannotcontinue.ProcedureBhastoreturnimmediatelytoProcedure
A, which must also be informed that B has terminated abnormally and that an exception has
occurred.
C:
B:
A
B
C
Exception
return
Exception
Occurrence
Call
sequence
Exceptionreturninembeddedprocedurecalls
Anexceptionhandlerissomethinglikeacasestatement. Itstatesexceptionnamesandappropriate
actionsforeachexception.
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
11/23
Exceptionsinafreezertemperaturecontroller(C++)
Abovetableillustratestheuseofexceptionsandexceptionhandling.Theseprogramfragmentsshow
the design of a temperature controller on a food freezer. The required temperaturemay be set
between 18 and 40 degrees Celsius. Food may start to defrost and bacteria become active at
temperatures over 18 degrees. The control system maintains this temperature by switching a
refrigerant pump on and off depending on the value of a temperature sensor. If the required
temperaturecannotbemaintained,thecontrolledsetsoffanalarm.Thetemperatureofthefreezeris
discoveredby interrogatinganobjectcalledSensorand the required temperatureby inspectingan
objectcalledtheexceptionsFreezer_too_hotandControl_problemandthetypeFREEZER_TEMPare
declared. There are no builtin exceptions in C++ but other information is declared in a separate
headerfile.
The temperature controller tests the temperature and switches the pump as required. If the
temperatureistoohot,ittransferscontroltotheexceptionhandler,whichactivatesanalarm.
InC++,Onceanexceptionhasbeen,itisnotrethrown.
Defensiveprogramming
Defensiveprogrammingisanapproachtoprogramdevelopmentwherebyprogrammersassumethat
theremaybeundetectedfaultsorinconsistenciesintheirprograms.Redundantcodeisincorporated
tocheck theSystemStateaftermodificationsand toensure that thestate change is consistent. If
inconsistenciesaredetected,thestatechangeisretractedorthestateisrestoredtoaknowncorrect
state.
Defensiveprogramming isanapproachtofaulttolerance,whichcanbecarriedoutwithoutafault
tolerant controller. The techniques used, however, are fundamental to the activities in the fault
toleranceprocess,namelydetectingafailure,damageassessment,andrecoveringfromthatfailure.
Failureprevention
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
12/23
Programming languages suchasAdaandC++allowmanyerrorswhich cause state corruptionand
system failure tobedetectedatcompiletime.Thecompilercandetect thoseproblemswhichuses
thestricttyperulesof the language.Compilerchecking isobviously limited tostaticvaluesbut the
compilercanalsoautomaticallyaddcodetoaprogramtoperformruntimechecks.
Damageassessment
Damageassessmentinvolvesanalyzingthesystemstatetogaugetheextentofthestatecorruption.
Inmanycases,corruptioncanbeavoidedbycheckingforfaultoccurrencebeforefinallycommittinga
changeofstate.Ifafaultisdetected,thestatechangeisnotacceptedsothatnodamageiscaused.
However, damage assessment may be needed when a fault arises because a sequence of state
changes(allofwhichareindividuallycorrect)causesthesystemtoenteranincorrectstate.
Theroleof thedamageassessmentprocedures isnot torecover from the faultbut toassesswhat
partsofthestatespacehavebeenaffectedbythefault.Damagecanonlybeassessedifitispossible
toapplysomevalidityfunction,whichchecksifthestateisconsistent.Ifinconsistenciesarefound,
thesearehighlightedorsignaledinsomeway.
Other techniqueswhichcanbeused for faultdetectionanddamageassessmentaredependenton
thesystemstaterepresentationandontheapplication.Possiblemethodsare:
Theuseofchecksumsindataexchangeandcheckdigitsinnumericdata; Theuseofredundantlinksindatastructureswhichcontainpointers; Theuseofwatchdogtimersinconcurrentsystems.A checksum isavalue that is computedbyapplying somemathematical function to thedata.The
function
used
should
give
a
unique
value
for
the
packet
of
data,
which
is
exchanged.
The
sender
who
appliesthechecksumfunctiontothedataandappendsthatfunctionvaluetothedatacomputesthis
checksum.Thereceiverappliesthesamefunctiontothedataandcomparesthechecksumvalues.If
thesediffer,somedatacorruptionhasoccurred.
When linked data structures are used, the representation can be made redundant by including
backwardpointers.Thatis,foreveryreferencefromAtoB,thereexistsacomparablereferencefrom
B toA. It isalsopossible tokeep countof thenumberofelements in the structure.Checking can
determinewhetherornotallpointershaveaninversevalueandwhetherornotthestoredsizeand
thecomputedstructuresizearethesame.
When processesmust reactwithin a specific time period, awatchdog timermay be installed. A
watchdogtimerisatimerwhichmustberesetbytheexecutingprocessafteritsactioniscomplete.
It isstartedatthesametimeasaprocessandtimestheprocessexecution. If,forsomereasonthe
processfailstoterminate,thewatchdogtimerisnotreset.Thecontrollercanthereforedetectthata
problemhasarisenandtakeactiontoforceprocesstermination.
Faultrecovery
Faultrecoveryistheprocessofmodifyingthestatespaceofthesystemsothattheeffectsofthefault
are minimized. The system can continue in operation, perhaps in same degraded form. Forward
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
13/23
recoveryinvolvestryingtocorrectthedamagedSystemState.BackwardrecoveryrestorestheSystem
Statetoaknowncorrectstate.
Therearetwogeneralsituationswhereforwarderrorrecoverycanbeapplied:
1.Whencoded iscorruptedTheuseofcodingtechniqueswhichaddredundancytothedataallowserrorstobecorrectedaswellasdetected.
2.When linkedstructuresarecorrupted if forwardandbackwardpointersare included in thedatastructure,thestructurecanberecreatedifenoughpointersremainuncorrupted.Thistechniqueis
frequentlyusedforfilesystemanddatabaserepair.
Backwarderrorrecoveryisasimplertechnique,whichrestoresthestatetoaknownsafestateafter
anerrorhasbeendetected.Mostdatabasesystems includebackwarderrorrecovery.Whenauser
initiatesadatabasecomputationatransactionisinitiated.Changesmadeduringthattransactionare
notimmediatelyincorporatedinthedatabase.Thedatabaseisonlyupdatedafterthetransaction is
finishedandnoproblemsaredetected.Ifthetransactionfails,thedatabaseisnotupdated.
DesignbyContract
Meyersuggestsanapproachtodesign,calleddesignbycontract,tohelpensurethatadesignmeets
its specifications. He begins by viewing software system as a set of communicating components
whoseinteractionisbasedonapreciselydefinedspecificationofwhateachcomponentissupposed
todo. These specifications, called contracts, govern how the component is to interactwith other
componentsandsystems.Suchspecificationcannotguaranteecorrectness,butitformsagoodbasis
fortestingandvalidation.
Contractiswrittenbetweentwopartieswhenonecommissionstheotherforaparticularserviceor
product. Each party expects somebenefit for someobligation; the supplier produces a service or
productinagivenperiodoftimeinexchangeformoney,andtheclientacceptstheserviceorproduct
forthemoney.Thecontractmakestheobligationandbenefitsexplicit.
Mayerappliesthenotionofacontracttosoftware.Asoftwarecomponent,calledaclient,adoptsa
strategytoperformasetoftasks,t1,t2,tn.Inturn,eachnontrivialsubtask,itisexecutedwhenthe
client calls another component, the supplier, to perform it. That is a contract between the two
componentstoperformthesubtask.Eachcontractcoversmutualobligation(calledpreconditions),
benefits (called postconditions), and consistency constraints (called invariant). Together, these
contractpropertiesarecalledassertions.
For example, suppose the client component has a table where each element is identified by a
characterstringusedasakey.Oursupplierscomponentstaskistoinsertanelementfromthetable
intoadictionaryof limitedsize.Wecandescribe thecontractbetweenthetwocomponents inthe
followingway.
1.Theclientcomponentensuresthatthedictionaryisnotfullandthatthekeyisnonempty.2.Thesuppliercomponentrecordstheelementintable.3.Theclientcomponentaccessestheupdatedtablewheretheelementappears.4.Ifthetableisfullorthekeyisempty,noactionistaken.
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
14/23
3. Suggestsixreasonswhysoftwarereliabilityisimportant.Usinganexample,explainthedifficultiesofdescribingwhatsoftwarereliabilitymeans.
Ans: Theneedforameanstoobjectivelydeterminesoftwarereliabilitycomesfromthedesiretoapplythe
techniquesofcontemporaryengineeringfieldstothedevelopmentofsoftware.Thatdesireisaresult
of the commonobservation,byboth laypersonsandspecialists, that computer softwaredoesnot
workthewayitoughtto.Inotherwords,softwareisseentoexhibitundesirablebehaviour,uptoand
includingoutrightfailure,withconsequencesforthedatawhichisprocessed,themachineryonwhich
thesoftwareruns,andbyextensionthepeopleandmaterialswhichthosemachinesmightnegatively
affect.Themorecriticaltheapplicationofthesoftwaretoeconomicandproductionprocesses,orto
lifesustainingsystems,themoreimportantistheneedtoassessthesoftware'sreliability.
Regardlessof the criticalityofany single softwareapplication, it isalsomoreandmore frequently
observed that softwarehaspenetrateddeeply intomost every aspectofmodern life through the
technologyweuse.Itisonlyexpectedthatthisinfiltrationwillcontinue,alongwithanaccompanying
dependency
on
the
software
by
the
systems
which
maintain
our
society.
As
software
becomes
more
andmorecrucial to theoperationof thesystemsonwhichwedepend, theargumentgoes, itonly
follows that the software should offer a concomitant level of dependability. In other words, the
softwareshouldbehaveinthewayitisintended,orevenbetter,inthewayitshould.
Asoftwarequalityfactorisanonfunctionalrequirementforasoftwareprogramwhichisnotcalled
up by the customer's contract, but nevertheless is a desirable requirement which enhances the
qualityof the softwareprogram.Note thatnoneof these factorsarebinary; that is, they arenot
eitheryouhaveitoryoudonttraits.Rather,theyarecharacteristicsthatoneseekstomaximizein
onessoftwaretooptimizeitsquality.Soratherthanaskingwhetherasoftwareproducthasfactor
x,askinsteadthedegreetowhichitdoes(ordoesnot).
Somesoftwarequalityfactorsarelistedhere:
Understandability
Clarity of purpose. This goes further than just a statement of purpose; all of the design anduser
documentationmustbeclearlywrittensothatitiseasilyunderstandable.Thisisobviouslysubjective
inthattheusercontextmustbetakenintoaccount:forinstance,ifthesoftwareproductistobeused
bysoftwareengineersitisnotrequiredtobeunderstandabletothelayman.
Completeness
Presenceofallconstituentparts,witheachpartfullydeveloped.Thismeansthat ifthecodecallsa
subroutinefromanexternallibrary,thesoftwarepackagemustprovidereferencetothatlibraryand
allrequiredparametersmustbepassed.Allrequiredinputdatamustalsobeavailable.
Conciseness
Minimizationofexcessiveorredundant informationorprocessing.This is importantwherememory
capacityislimited,anditisgenerallyconsideredgoodpracticetokeeplinesofcodetoaminimum.It
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
15/23
canbe improvedby replacing repeated functionalitybyonesubroutineor functionwhichachieves
thatfunctionality.Italsoappliestodocuments.
Portability
Ability to be runwell and easily onmultiple computer configurations. Portability can mean both
between different hardwaresuch as running on a PC as well as a smartphoneand between
differentoperatingsystemssuchasrunningonbothMacOSXandGNU/Linux.
Consistency
Uniformityinnotation,symbology,appearance,andterminologywithinitself.
Maintainability
Propensity to facilitate updates to satisfy new requirements. Thus the software product that is
maintainableshouldbewelldocumented,shouldnotbecomplex,andshouldhavesparecapacityfor
memory,storageandprocessorutilizationandotherresources.
Testability
Dispositiontosupportacceptancecriteriaandevaluationofperformance.Suchacharacteristicmust
bebuiltinduringthedesignphase iftheproduct istobeeasilytestable;acomplexdesign leadsto
poortestability.
Usability
Convenienceandpracticalityofuse.Thisisaffectedbysuchthingsasthehumancomputerinterface.
Thecomponentofthesoftwarethathasmostimpactonthisistheuserinterface(UI),whichforbest
usabilityisusuallygraphical(i.e.aGUI).
Reliability
Ability tobeexpected toperform its intended functions satisfactorily.This impliesa time factor in
thatareliableproduct isexpected toperformcorrectlyoveraperiodof time. Italsoencompasses
environmental considerations in that the product is required to perform correctly in whatever
conditionsitfindsitself(sometimestermedrobustness).
Efficiency
Fulfillmentofpurposewithoutwasteofresources,suchasmemory,spaceandprocessorutilization,
networkbandwidth,time,etc.
Security
Ability to protect data against unauthorized access and to withstand malicious or inadvertent
interferencewith itsoperations.Besides thepresenceofappropriate securitymechanisms suchas
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
16/23
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
17/23
4. What are the essential skills and traits necessary for effective project managers in successfullyhandlingprojects?
Ans: The Successful ProjectManager: A successful project manager knows how to bring together the
definitionandcontrolelementsandoperatethemefficiently.Thatmeansyouwillneedtoapplythe
leadershipskillsyoualreadyapply inrunningadepartmentandpractice theorganizationalabilities
youneedtoconstantlylooktothefuture.Inotherwords,ifyoureaqualifieddepartmentmanager,
you already possess the skills and attributes for succeeding as a projectmanager. The criteria by
whichyouwillbeselectedwillbesimilar.Chancesare,theprojectyoureassignedwillhaveadirect
relationshiptotheskillsyouneedjusttodoyourjob.Forexample:
Organizationalandleadershipexperience.Anexecutiveseekingaqualifiedprojectmanagerusuallyseekssomeonewhohasalreadydemonstratedtheabilitytoorganizeworkandtoleadothers.He
or sheassumes that youwill succeed in a complicated longtermprojectprimarilybecause you
havealreadydemonstratedtherequiredskillsandexperience.
Contact with needed resources. For projects that involve a lot of coordination betweendepartments, divisions, or subsidiaries, top management will look for a project manager who
already communicates outside of a single department. If you have the contacts required for a
project,itwillnaturallybeassumedthatyouaresuitedtorunaprojectacrossdepartmentallines.
Abilitytocoordinateadiverseresourcepool.Byitself,contactoutsideofyourdepartmentmaynotbeenough.Youmustalsobeabletoworkwithavarietyofpeopleanddepartments,evenwhen
theirbackgroundsanddisciplinesaredissimilar.Forexample,asacapableprojectmanager,you
mustbeabletodelegateandmonitorworknotonlyinareasfamiliartoyourowndepartmentbut
inareasthatarealientoyourbackground.
Communication and procedural skills. An effective projectmanagerwill be able to convey andreceiveinformationtoandfromanumberofteammembers,evenwhenparticularpointsofview
aredifferentfromhisown.Forexample,astrictlyadministrativemanagershouldunderstandthe
priorities of a salesdepartment,or a customer servicemanagermay need to understandwhat
motivatesaproductioncrew.
Ability todelegate andmonitorwork.Projectmanagersneed todelegate thework thatwillbeperformedbyeachteammember,andtomonitorthatworktostayonscheduleandwithinbudget.
Acontractorwhobuildsahousehastounderstandtheprocessesinvolvedforworkdonebyeach
subcontractor,even ifthework ishighlyspecialized.Thesame istrueforeveryprojectmanager.
Itsnot enoughmerely to assign someoneelse a task, completewith a schedule and abudget.
Delegationandmonitoringareeffectiveonlyifyourealsoabletosuperviseandassessprogress.
Dependability.Yourdependabilitycanbetestedonlyinoneway:bybeinggivenresponsibilityandthe chance to come through. Once you gain the reputation as a manager who can and does
respondasexpected,yourereadytotakeonaproject.
Theseprojectmanagementqualifications read likea listofevaluationpoints foreverydepartment
manager. Ifyou thinkof theprocessof runningyourdepartmentasaprojectof itsown, thenyou
already understandwhat its like to organize a projectthe difference, of course, being that the
projecttakesplaceinafinitetimeperiod,whereasyourdepartmentaltasksareongoing.Thus,every
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
18/23
successfulmanager should be ready to tackle a project, provided it is related to his or her skills,
resources,andexperience.
5. WhicharethefourphasesofdevelopmentaccordingtoRationalUnifiedProcess?Ans: TheRationalUnifiedProcessisaSoftwareEngineeringProcess.Itprovidesadisciplinedapproachto
assigning tasks and responsibilities within a development organization. Its goal is to ensure the
production of highquality software that meets the needs of its endusers, within a predictable
scheduleandbudget.
TheRationalUnifiedProcessisaprocessproduct,developedandmaintainedbyRationalSoftware.
ThedevelopmentteamfortheRationalUnifiedProcessareworkingcloselywithcustomers,partners,
RationalesproductgroupsaswellasRationalesconsultantorganization,toensurethattheprocessis
continuouslyupdatedandimprovedupontoreflectrecentexperiencesandevolvingandprovenbest
practices.TheRationalUnifiedProcessenhancesteamproductivity,byprovidingeveryteammember
with easy access to a knowledge basewith guidelines, templates and toolmentors for all critical
developmentactivities.Byhavingallteammembersaccessingthesameknowledgebase,nomatterif
youworkwith requirements,design, test,projectmanagement,or configurationmanagement,we
ensure that all team members share a common language, process and view of how to develop
software.
The Rational Unified Process activities create and maintain models. Rather than focusing on the
productionof largeamountofpaperdocuments, theUnifiedProcessemphasizes thedevelopment
and maintenance of modelssemantically rich representations of the software system under
development.
The RationalUnifiedProcess is a guide forhow to effectively use theUnifiedModeling Language
(UML). The UML is an industrystandard language that allows us to clearly communicate
requirements,architecturesanddesigns.TheUMLwasoriginallycreatedbyRationalSoftware,andis
nowmaintainedbythestandardsorganizationObjectManagementGroup(OMG).
EffectiveDeploymentof6BestPractices
TheRationalUnifiedProcessdescribeshowtoeffectivelydeploycommerciallyprovenapproachesto
software development for software development teams. These are called best practices not so
muchbecauseyou canpreciselyquantify theirvalue,but rather,because theyareobserved tobe
commonlyused in industrybysuccessfulorganizations.TheRationalUnifiedProcessprovideseach
teammemberwiththeguidelines,templatesandtoolmentorsnecessaryfortheentireteamtotake
fulladvantageofamongothersthefollowingbestpractices:
1.Developsoftwareiteratively2.Managerequirements3.Use componentbased architectures Rational Unified Process: Best Practices for SoftwaredevelopmentTeams
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
19/23
4.Visuallymodelsoftware5.Verifysoftwarequality6.ControlchangestosoftwareDevelopSoftwareIteratively
Giventodayssophisticatedsoftwaresystems,itisnotpossibletosequentiallyfirstdefinetheentire
problem,design the entire solution,build the software and then test the product at the end.An
iterative approach is required that allows an increasing understanding of the problem through
successiverefinements,andtoincrementallygrowaneffectivesolutionovermultipleiterations.The
RationalUnifiedProcesssupportsan iterativeapproach todevelopment thataddresses thehighest
risk itemsateverystage in the lifecycle, significantly reducingaprojects riskprofile.This iterative
approach helps you attack risk through demonstrable progress frequent, executable releases that
enable continuous end user involvement and feedback. Because each iteration ends with an
executable release, thedevelopment teamstays focusedonproducing results,and frequentstatus
checkshelpensurethattheprojectstaysonschedule.An iterativeapproachalsomakes iteasierto
accommodatetacticalchangesinrequirements,featuresorschedule.
ManageRequirements
TheRationalUnifiedProcessdescribeshow toelicit,organize,anddocumentrequired functionality
andconstraints; trackanddocument tradeoffsanddecisions;andeasily captureand communicate
businessrequirements.Thenotionsofusecaseandscenariosproscribedintheprocesshasprovento
beanexcellentway tocapture functional requirementsand toensure that thesedrive thedesign,
implementationand testingof software,making itmore likely that the finalsystem fulfills theend
userneeds. They provide coherent and traceable threads through both the development and the
deliveredsystem.
UseComponentbasedArchitectures
Theprocessfocusesonearlydevelopmentandbaseliningofarobustexecutablearchitecture,priorto
committing resources for fullscaledevelopment. Itdescribeshow todesigna resilientarchitecture
thatisflexible,accommodateschange,isintuitivelyunderstandable,andpromotesmore
effective software reuse. The Rational Unified Process supports componentbased software
development.
Components are nontrivialmodules, subsystems that fulfill a clear function. The RationalUnified
Process provides a systematic approach to defining an architecture using new and existing
components.Theseareassembled inawelldefinedarchitecture,eitheradhoc,or inacomponent
infrastructuresuchastheInternet,CORBA,andCOM,forwhichanindustryofreusablecomponents
isemerging.
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
20/23
VisuallyModelSoftware
The process shows you how to visuallymodel software to capture the structure and behavior of
architecturesand components.Thisallows you tohide thedetailsandwrite codeusing graphical
buildingblocks.Visualabstractionshelpyou communicatedifferentaspectsofyour software; see
howtheelementsofthesystemfittogether;makesurethatthebuildingblocksareconsistentwith
your code; maintain consistency between a design and its implementation; and promote
unambiguous communication. The industrystandardUnifiedModeling Language (UML), createdby
RationalSoftware,isthefoundationforsuccessfulvisualmodeling.
VerifySoftwareQuality
Poorapplicationperformanceandpoorreliabilityarecommonfactorswhichdramaticallyinhibitthe
acceptabilityoftodayssoftwareapplications.Hence,qualityshouldbereviewedwithrespecttothe
requirementsbasedon reliability, functionality, applicationperformance and systemperformance.
The Rational Unified Process assists you in the planning, design, implementation, execution, and
evaluationofthesetesttypes.Qualityassessmentisbuiltintotheprocess,inallactivities,involvingall
participants, using objectivemeasurements and criteria, and not treated as an afterthought or a
separateactivityperformedbyaseparategroup.
ControlChangestoSoftware
Theabilitytomanagechangeismakingcertainthateachchangeisacceptable,andbeingabletotrack
changes isessential inanenvironment inwhichchange is inevitable.Theprocessdescribeshow to
control,trackandmonitorchangestoenablesuccessful iterativedevelopment. Italsoguidesyou in
howtoestablishsecureworkspacesforeachdeveloperbyprovidingisolationfromchangesmadein
otherworkspacesandbycontrollingchangesofallsoftwareartifacts(e.g.,models,code,documents,
etc.).Anditbringsateamtogethertoworkasasingleunitbydescribinghowtoautomateintegration
andbuildmanagement.
TheRationalUnifiedProcessproductconsistsof:
Awebenabledsearchableknowledgebaseprovidingallteammemberswithguidelines,templates,andtoolmentorsforallcriticaldevelopmentactivities.Theknowledgebasecanfurtherbebroken
downto:
Extensiveguidelinesforall teammembers,andallportionsof thesoftware lifecycle.Guidance isprovided for both the highlevel thought process, as well as for the more tedious daytoday
activities.Theguidance ispublished inHTMLform foreasyplatformindependentaccessonyour
desktop.
Toolmentorsprovidinghandsonguidancefortoolscoveringthefulllifecycle.Thetoolmentorsarepublished in HTML form for easy platformindependent access on your desktop. See section
"IntegrationwithTools"formoredetails.
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
21/23
RationalRoseexamplesandtemplatesprovidingguidanceforhowtostructuretheinformationinRationalRosewhenfollowingtheRationalUnifiedProcess(RationalRoseisRational'stoolforvisual
modeling)
SoDA templates more than10 SoDA templates thathelpsautomate softwaredocumentation(SoDA
is
Rationales
Document
Automation
Tool)
MicrosoftWordtemplatesmorethan30WordtemplatesassistingdocumentationinallworkflowsandallportionsofthelifecycleMicrosoftProjectPlans
Many managers find it difficult to create project plans that reflects an iterative developmentapproach. Our templates jump start the creation of project plans for iterative development,
accordingtotheRationalUnifiedProcess.
Development Kit: Describes how to customize and extend the Rational Unified Process to thespecificneedsoftheadoptingorganizationorproject,aswellasprovidestoolsandtemplatesto
assisttheeffort.Thisdevelopmentkitisdescribedinmoredetaillaterinthissection.
Access toResourceCentercontaining the latestwhitepapers,updates,hints,and techniques,aswellasreferencestoaddonproductsandservices.
Abook"RationalUnifiedProcessAn Introduction",byPhilippeKruchten,publishedbyAddisonWesley.Thebook ison277pagesandprovidesagood introductionandoverviewtotheprocess
andtheknowledgebase.
6. DescribetheCapabilityMaturityModelwithsuitablerealtimeexamples.Ans: The Capability Maturity Model (CMM)) is a multistaged, process definition model intended to
characterize and guide the engineering excellence or maturity of an organizations software
development processes. The Capability Maturity Model: Guidelines for Improving the Software
Process(1995)containsanauthoritativedescription.SeealsoPaulketal. (1993)andCurtis,Hefley,
andMiller(1995)and,forgeneralremarksoncontinuousprocessimprovement,Somerville,Sawyer,
and Viller (1999) (see Table 3.2). The model prescribes practices for planning, engineering, and
managingsoftwaredevelopmentandmaintenanceandaddressestheusualgoalsoforganizational
system engineering processes: namely, quality improvement, risk reduction, cost reduction,
predictableprocess,andstatisticalqualitycontrol(Oshana&Linger1999).
However, the model is not merely a program for how to develop software in a professional,
engineeringbased manner; it prescribes an evolutionary improvement path from an ad hoc,
immature
process
to
a
mature,
disciplined
process
(Oshana&
Linger
1999).
Walnau,
Hissam,
and
Seacord (2002) observe that the ISO and CMM process standards established the context for
improvingthepracticeofsoftwaredevelop meantby identifyingrolesandbehaviorsthatdefinea
softwarefactory.
TheCMMidentifiesfivelevelsofsoftwaredevelopmentmaturityinanorganization:
Atlevel1,theorganizationssoftwaredevelopmentfollowsnoformaldevelopmentprocess. Theprocessmaturityissaidtobeatlevel2ifsoftwaremanagementcontrolshavebeenintroducedand some softwareprocess is followed.Adecisive featureof this level is that theorganizations
process is supposed tobe such that it can repeat the level of performance that it achieved on
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
22/23
similarsuccessfulpastprojects.ThisisrelatedtoacentralpurposeoftheCMM:namely,toimprove
the predictability of the development process significantly. Themajor technical requirement at
level2isincorporationofconfigurationmanagementintotheprocess.
Configurationmanagement(orchangemanagement,asitissometimescalled)referstotheprocesses
usedtokeeptrackofthechangesmadetothedevelopmentproduct(includingallthe intermediate
deliverables) and the multifarious impacts of these changes. These impacts range from the
recognitionofdevelopmentproblems; identificationoftheneedforchanges;alterationofprevious
work;verification thatagreeduponmodificationshavecorrected theproblemand thatcorrections
havenothadanegativeimpactonotherpartsofthesystem;etc.
Anorganization is said tobeat level3 if thedevelopmentprocess is standardand consistent.The
project management practices of the organization are supposed to have been formally agreed
on,defined,andcodifiedatthisstageofprocessmaturity.
Organizations
at
level
4
are
presumed
to
have
put
into
place
qualitative
and
quantitative
measures
of organizational process. These process metrics are intended to monitor development and to
signaltroubleandindicatewhereandhowadevelopmentisgoingwrongwhenproblemsoccur.
Organizationsatmaturitylevel5areassumedtohaveestablishedmechanismsdesignedtoensurecontinuousprocessimprovementandoptimization.Themetricfeedbacksatthisstagearenotjust
applied to recognize and control problems with the current project as they were in level4
organizations.Theyareintendedtoidentifypossiblerootcausesintheprocessthathaveallowed
theproblemstooccurandtoguidetheevolutionoftheprocesssoastopreventtherecurrenceof
suchproblemsinfutureprojects,suchasthroughtheintroductionofappropriatenewtechnologies
andtools.
ThehighertheCMMmaturitylevelis,themoredisciplined,stable,andwelldefinedthedevelopment
processisexpectedtobeandtheenvironmentisassumedtomakemoreuseofautomatedtoolsand
theexperiencegainedfrommanypastsuccesses(Zhiying2003).Thestagedcharacterofthemodel
lets organizationsprogress up thematurity ladder by settingprocess targets for theorganization.
Eachadvancereflectsafurtherdegreeofstabilizationofanorganizationsdevelopmentprocess,with
eachlevelinstitutionaliz[ing]adifferentaspectoftheprocess(Oshana&Linger1999).
EachCMM levelhasassociatedkeyprocessareas (KPA) that correspond toactivities thatmustbe
formalizedtoattainthat level.Forexample,theKPAsat level2 includeconfigurationmanagement,
quality assurance, project planning and tracking, and effective management of subcontracted
software.TheKPAsatlevel3includeintergroupcommunication,training,processdefinition,product
engineering, and integrated software management. Quantitative process management and
development quality define the required KPAs at level 4. Level 5 institutionalizes process and
technologychangemanagementandoptimizesdefectprevention.
Bamberger(1997),oneoftheauthorsoftheCapabilityMaturityModel,addresseswhatshebelieves
are somemisconceptionsabout themodel.Forexample,sheobserves that themotivation for the
secondlevel,inwhichtheorganizationmusthavearepeatablesoftwareprocess,arisesasadirect
8/7/2019 MC0071_February 2011_Software Engineering-Assignement
23/23
response to the historical experience of developers when their software development is out of
control(Bamberger1997).Oftenthisisforreasonshavingtodowithconfigurationmanagementor
mismanagement!Amongthemanysymptomsofconfigurationmismanagementare:confusionover
which version of a file is the current official one; inadvertent side effects when repairs by one
developerobliteratethechangesofanotherdeveloper;inconsistenciesamongtheeffortsofdifferent
developers;etc.
Akeyappropriateresponsetosuchactualorpotentialdisorder istogetcontroloftheproductand
theproductpiecesunderdevelopment(configurationmanagement)by(Bamberger1997):
Controlling the feature set of the product so that the impact/s of changes are more fullyunderstood(requirementsmanagement)
Using the feature set to estimate the budget and schedule while leveraging as much pastknowledgeaspossible(projectplanning)
Ensuringschedulesandplansarevisibletoallthestakeholders(projecttracking) Ensuringthattheteamfollows itsownplanandstandardsandcorrectsdiscrepancieswhentheyoccur(qualityassurance)
BambergercontendsthatthiskindofprocessestablishesthebasicstabilityandvisibilitythataretheessenceoftheCMMrepeatablelevel.