Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,*,Managing Maintenance,Many issues in“managing the maintenance phase:,Maintenance activities themselves are hard,People and Morale,Maintenance Process and Artifacts,Maintenance cost,Support metrics,Maintenance Activities,The basic activities of maintenance is not that different from development-but:,“New requirements +existing requirements,“New design +existing design,“New code +existing code,“New test +existing test,“New integration +existing files,“New documentation +existing documentations,-Developing a“new release has all the risks of the first release+the,need to understand the existing materials.,-If the existing materials are well updated and available,there may be some advantage-assuming the first release developed kept maintenance in mind.,Importance of Regression Test,Whenever a new release is built upon a previous release,we are concerned that no existing functions are destroyed.,Integration and Regression tests are important-,is it a must?,:,Do we rerun all the previous test cases(especially with OO inheritances)along with the new test cases?,If we run only part of the previous test cases,then which parts?,Parts that have interfaces to the new parts?,Parts that showed error proneness?,Randomly pick test cases from previous regression bucket?,Existing Material Complexity,Many existing material are good and provide a basis for further development:,Maintenance people need to be giving time to digest all the existing material;,this takes time,Some original developers should be made available to the maintenance personnel,Tools should be provided to help understand and track the various pieces and parts,Configuration management process,Configuration management tool,Version control,Build and integration,Some Complexity Measure for Maintenance,McCabes Cyclomatic Number on a control flow graph:,Complexity=edges nodes+2 or,Complexity=#of binary decisions+1,#of Fan-in and#of Fan-out for the effect of coupling on maintenance,Gerlich&Denskat(of m components and k needs changes)then:,k*(m-k)+k*(k-1)/2 interfaces need to be checked,One of the most difficult task of modifying an existing code or design is,to understand all the“relationships and interfaces among the parts(modules),and components(applications),Note the increase in interfaces as k increases:(for example let m=5),-for k=1,then 1*4+0=4 interfaces,-for k=2,then 2*3+1=7 interfaces,-for k=4,then 4*1+6=10 interfaces,Some Interesting Experiencesbased on Porter and Selby,Using Classification Tree Analysis to predict interface errors likely to be encountered during maintenance found the following to be most error-prone:,Components that encounter between,4 to 8 design revisions,with 15 data bindings,Components whose,primary function is to manage files,where there have been 9 revisions or more,Classification Tree,is technique of defining a particular attribute of interest,classifying the attribute with some metric,and placing the different categories as defined by the metric into a tree structure which may be used for analysis,People and Morale,Management Priority needs to be properly set:,Is fixing a problem properly more important than fixing it quickly and getting the“backlog numbers down more important?(“both is not a good answer!-you should know which is higher priority),Fixing defects(especially high priority ones)must be separate from the“planned maintenance release,Maintenance releases,within themselves,may have different priorities:,(e.g.)is perfective more important than corrective?,(e.g.)is revenue more important than user perception of quality?,Support,Service,and Maintenance personnel needs to be treated differently:,Deal with a lot of negatives,Feel unappreciated,Sometimes paid less,Maintenance Process and Artifacts,Should the maintenance process be different from regular development process?,User call management clearly is different,Should there be emphasis on:,Refactoring,Regression test,Documentation,Integration and build,The artifacts that the maintenance teams get more than the normal developers receive are:the constant user and customer problems(both defect and non-defect)reports-lots of requirements,If measurements are kept,the maintenance team also have a better view of where the previous“error prone areas were.,Support&Maintenance Release Process,Users&,customers,External,entities,Maint.,Engrs.,Sales&,others,Change,Control Board,Recommendations,Release Content,Planning,Based on:,-Impact analysis,-Priority analysis,-Cost analysis,-Resource analysis,Next,Release Content,Release,Development,Next Release,(pretty much,same as,development),Problem Reports,Industry,Reports,Refactoring,&other,Business,Competition,Reports,Maintenance Cost,Pure defect(corrective maintenance)releases are just an expense that is balanced by continuing support fees charged to customers.,If the total cost is less than the total fees,then we are in