home *** CD-ROM | disk | FTP | other *** search
/ ftp.umcs.maine.edu / 2015-02-07.ftp.umcs.maine.edu.tar / ftp.umcs.maine.edu / pub / WISR / wisr4 / proceedings / detex / mayobre.detex < prev    next >
Text File  |  1992-04-05  |  22KB  |  837 lines

  1.  [12pt] article  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.   Using Code Reusability Analysis to 
  13. Identify Reusable Components 
  14. from the Software 
  15. Related to an Application Domain 
  16.  
  17.   Guillermo Mayobre 
  18. Hewlett Packard 
  19. Grenoble Networks Division 
  20. 5, Ave. Raymond Chanas 
  21. 38053 Grenoble CEDEX 9   
  22. gm@hpgntol1,grenoble.hp.com 
  23.  
  24.    
  25.  
  26.  
  27.  
  28.   
  29. The combination of SW metrics with domain expertise and economical
  30. evaluation of reuse costs, provides a way to select reusable
  31. workproducts from the software related to a domain of application.
  32.  
  33.  
  34.   Introduction 
  35.  
  36.         One of the major problems in software reuse is the lack of
  37.         reusable components despite the large amount of existing
  38.         software. Reuse efficiency and cost effectiveness highly
  39.         depend on the number of available components.
  40.         In fact existing software has captured past experience and
  41.         knowledge, and that is particularly true under an application
  42.         domain scope.
  43.  
  44. The idea of using that existing software to identify reusable
  45.         components is very attractive. A methodology to identify and
  46.         select reusable software components from an existing code is
  47.         extremely helpful, not only to provide code components, but also
  48.         to identify reusable workproducts that have been codified by
  49.         the past.
  50.  
  51.         The Code Reusability Analysis (CRA) combines three methodologies
  52.         and an economical estimation to identify and select reusable
  53.         workproducts from the code associated to a domain of application.
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.    Overview 
  92.  
  93.         The first methodology involved is the one proposed by Caldeira
  94.         and Basili  .
  95. It allows identification
  96.         of reusable components based on software metrics.
  97.  
  98.         The second one, the Domain Experience Based Component
  99.         Identification Process (DEBCIP) is based on domain experience
  100.         and uses a standard decision graph to help domain experts on the
  101.         process of identifying reusable components.
  102.  
  103.         The third one, the Variant Analysis Based Component
  104.         Identification process (VABCIP) also based on domain experience,
  105.         uses code metrics to estimate the specification distance between
  106.         a new product and the existing software in the domain (or subset
  107.         of software of the domain). This methodology select components
  108.         from the existing software, whose specification distance, to the
  109.         new targeted functionality implies a re-engineering effort lower
  110.         than building the component from the scratch.
  111.  
  112.         The economical estimation of the Component Return on
  113.         Investment (CROI), uses economical models like Component Cost,
  114.         Reuse Costs Investment and Benefits, Reuse Cost Effectiveness,
  115.         to estimate the Return on Investment per Component.
  116.  
  117.         Selecting components from the existing software to be reused
  118.         globally on the domain of application differs from selecting
  119.         components to be reused to build a new target functionality.
  120.         The second case is a subset of the first one in the sense that
  121.         it reduces scope of search -(functions of a new product against
  122.         all possible functions of a Domain of Application)- .
  123.  
  124.         The Code Reusability Analysis is useful to perform both types
  125.         of selection depending on the way methodologies are combined.
  126.  
  127.         DEBCIP is tailored to identify components with the highest reuse
  128.         potential within the overall domain scope.  VABCIP is performant
  129.         to identify components to be reused on a new targeted
  130.         functionality.
  131.  
  132. However those methodologies may be very expensive when applied
  133.         to a large amount of software, in terms of time consumed by the
  134.         experts and product marketing resources.
  135.         C B does not require neither expert nor product marketing
  136.         resources, and in addition it may be automized completely.
  137.         An interesting idea is then to use C B before either DEBCIP or
  138.         VABCIP to reduce the amount of code to be analysed by the
  139.         experts. Once potential reusable components has been identified
  140.         using C B, experts review them from the perspective of the
  141.         domain of application.
  142.  
  143.  At the last step, an estimation of the Component Return On
  144.         Investment of the candidates refines the final choice.
  145.  
  146.         This paper explores several ways of combining those
  147.         methodologies to find the better strategy to select reusable
  148.         components from the software associated to a domain of
  149.         application, in order to build a new target functionality,
  150.         minimising the implementation effort and maximising the external
  151.         reuse level.
  152.  
  153.  
  154.   Background 
  155.  
  156.         This chapter gives an overview of the methodologies and
  157.         economical models included on the Code Reusability Analysis.
  158.  
  159.   The Caldeira and Basili methodology 
  160.  
  161.         It defines three major attributes that characterises the
  162.         reusability of a component: usefulness, cost to reuse and
  163.         quality. It proposes four software metrics to estimate the
  164.         attributes values: Volume (V), Cyclomatic Complexity (C),
  165.         Regularity (R) and Reuse Frequency (RF).
  166.  
  167.  Figure 1 is a fishbone diagram showing attributes and metrics
  168.         relation:
  169.  
  170.   
  171.  
  172.  
  173.  
  174.  
  175.    
  176.    
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.    The Volume 
  188.  
  189.         An Halstead's formula, represents the minimum number of bits
  190.         necessary to code a module information:
  191.  
  192.  
  193.          
  194.  
  195.   
  196. xxxxxxxx   xxx    
  197.         Where   n1: total number of operators used by the program, 
  198.                 N1: total count of all usage of the operators, 
  199.                 n2: total number of unique operands defined and used by 
  200.                       the program, 
  201.                  N2: total count of all usage of operands. 
  202.             
  203.  
  204.         If the component volume is too small, the cost to reuse the
  205.         component (extraction, adaptation and integration), may exceed
  206.         the cost to building it from scratch.
  207.  
  208.  If the volume is too large, the qualification will probably be
  209.         lower and the component more error prone.
  210.  
  211.   0.3in 
  212.  
  213.    
  214.         The Cyclomatic Complexity 
  215.  
  216.         It computes the maximum number of independent paths:
  217.  
  218.          
  219.  
  220.   
  221. xxxxxxxx   xxx    
  222.         Where   e: number of edges, 
  223.                n: number of nodes. 
  224.  
  225.  
  226.         The bigger the complexity the higher the number of tests
  227.         necessary to walk through all the code, and thus the effort to
  228.         qualify the module.
  229.  
  230.  Once again a very low complexity may not repay the cost of
  231.         extraction, adaptation and integration. A high complexity will
  232.         probably imply a lower than expected qualification and a higher
  233.         risk of error.
  234.  
  235.   0.3in 
  236.  
  237.    
  238.         The Regularity 
  239.  
  240.         Is the ratio between the expected length and the actual length
  241.         of a component:
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.         In other words it measures readability and non redundancy of
  249.         component implementation. A regularity close to one indicates a
  250.         well implemented component.
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.   0.3in 
  261.  
  262.  
  263.   
  264.  
  265.      The Reuse Frequency 
  266.  
  267.         It measures the potentiality of a component to be reusable. It
  268.         is the ratio between the number of static calls to a component
  269.         with respect to the average number of static calls to a system
  270.         module. The higher the reuse frequency , the bigger the reuse
  271.         potentiality of a component.
  272.  
  273.  
  274.  
  275.   
  276. xxxxxxxx   xxx    
  277.         Where   M: number of system modules, 
  278.                 n(C): number of static calls to the component C, 
  279.                 n(Si): number of static calls to the system module Si. 
  280.  
  281.  
  282.  
  283.         Ranges must be defined for every metric to measure the results.
  284.         They may differ depending of the type of analysed code. Range
  285.         values we used in our practical example are given in the case
  286.         study section.
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.   DEBCIP and VABCIP 
  321.  
  322.         The Domain Experience Based Component Identification Process
  323.         DEBCIP and the Variant Analysis Based Component Identification
  324.         Process VABCIP, illustrated in Figure 2 and 3 respectively, are
  325.         both based in similar concepts.
  326.  
  327.   
  328.  
  329.  
  330.  
  331.    
  332.    
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.   
  346.  
  347.  
  348.  
  349.    
  350.    
  351.  
  352.  
  353.         Both methodologies evaluate reuse potentiality based on
  354.         specification distance and expected number of reuse instances.
  355.         DEBCIP needs an important investment in domain analysis.
  356.         Domain bounds must be well defined and domain model must be
  357.         available to be able to evaluate the reuse potentiality of a
  358.         component. Existing software functionality is compared to all
  359.         the possible functionalities described in the domain model to
  360.         evaluate expected number of instances and specification
  361.         distance.
  362.  
  363. The specification distance evaluation on DEBCIP is relatively
  364.         complex. The first step is to define and intersection between
  365.         all the target functionalities that we want to cover with a
  366.         component, we call it the reduced functionality. Then, the
  367.         specification distance from the existing software is evaluated
  368.         to the reduced functionality.
  369.  
  370. As the reduced functionality is very sensible to product
  371.         strategies, market pressures and even resources fluctuation, the
  372.         specification distance is used on DEBCIP more as an information
  373.         parameter rather then a decision parameter.
  374.  
  375.  The biggest emphasis is put on the estimation of the expected
  376.         number of reuse instances.
  377.  
  378.  
  379.  
  380.         VABCIP reduces the scope of search.  Reuse potentiality of
  381.         components is evaluated regarding a unique or a very few new
  382.         targeted functionalities that are very close one to each other.
  383.         On that case the major effort is put in the evaluation of the
  384.         specification distance from the functionality of the existing
  385.         software to the new targeted one.  A well defined domain model
  386.         is not crucial, and thus the prior investment on domain analysis
  387.         is lower.
  388.  
  389. R VABCIP (Reduced VABCIP) is a variant of VABCIP. The software
  390.         whose functionality is compared to the new target one is a
  391.         subset of the existing software related to the domain.
  392.         R VABCIP process is also illustrated by Figure 3.
  393.  
  394.   0.3in 
  395.  
  396.   
  397.         Collecting decisional information: 
  398.  
  399.         Decision graphs provide a frame to collect decisional
  400.         information:  cost evaluation for changes on the analysed
  401.         component to made it reusable, and expected number of reuse
  402.         instances. (Figure 3 shows where cost of changes are evaluated
  403.         in the VABCIP:  SC ,  DC ,  CC  ).
  404.  
  405.  Computed decisional information is used to feed the economical
  406.         models to estimate the component Return On Investment.
  407.  
  408.   0.3in 
  409.  
  410.   
  411.         Evaluating costs: 
  412.  
  413.         Costs to change, what we called adaptation costs, are evaluated
  414.         based on software metrics. We commonly use Cyclomatic complexity
  415.         to evaluate the productivity.
  416.  
  417. To each phase of software development: specification, design,
  418.         code, unit testing, integration testing and tools development,
  419.         we associate a productivity expressed in:
  420.  
  421. Nb.of branches (or Independent paths = Cyclomatic Complexity)/
  422.         Engineer.week.
  423.  
  424. Once a change is identified at any part of the graph, it is
  425.         estimated on Cyclomatic Complexity. The adaptation effort to
  426.         made the component reusable is then evaluated according to the
  427.         type of change (specification, design, code,..) by applying the
  428.         corresponding productivity metric.
  429.  
  430. At the end of the graph walk through, the reuse potentiality of
  431.         a component may be: None (non reusable) or Reusable with or
  432.         without an associated adaptation cost and a number of reuse
  433.         instances.
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.   
  455.         The economical evaluation 
  456.  
  457.         Reuse is cost effective when reuse cost benefits are bigger than
  458.         reuse cost investments. Cost effectiveness of software reuse is
  459.         an essential decision parameter that must be estimated at the
  460.         earliest stage of product development.
  461.  
  462.         If an early estimates indicates that the total reuse benefits
  463.         will be very low, we should do only a limited investment in reuse
  464.         technologies. If at the contrary the estimates shows a big reuse
  465.         benefits we should make substantial investment in advanced reuse
  466.         technologies.
  467.  
  468.         On reuse oriented software development we can distinguish two
  469.         main types of activities: product development and component
  470.         development. Product development may be almost completely
  471.         classified on the design WITH reuse side, while component
  472.         development may almost completely classified on the design FOR
  473.         reuse side. From this perspective reuse is cost effective when
  474.         benefits of designing WITH reuse are bigger than investments on
  475.         designing FOR reuse.
  476.  
  477.         In addition to the cost effectiveness another important
  478.         parameter to evaluate the performance of an investment is the
  479.         Return On Investment which is the ratio between the reuse costs
  480.        benefits and the reuse costs investments.
  481.  
  482.         The Component Return On Investment is estimated for every
  483.         candidate component to decide whether or not it is effectively
  484.         reusable.
  485.  
  486.         Economical models like component cost, reuse costs investment
  487.         and benefits, reuse cost effectiveness, are needed to estimate
  488.         the component return on investment.
  489.  
  490.         The reusable component cost model
  491.         The cost to produce a reusable component may be expressed as:
  492.  
  493.          
  494.  
  495.   
  496. xxxxxxxx   xxx    
  497.         Where   RCC: Reusable Component Cost. Measured in Eng.week. 
  498.                 CC : Component Cost. Cost of the component as 
  499.                       designed not for reuse.Measured in Eng.week. 
  500.                 Eor: Reuse expansion (or multiplication) factor. 
  501.                 DBC: Data Base Cost per component. Measured in Eng.week. 
  502.            
  503.  
  504.         Eor includes all additional costs to implement a reusable
  505.         component. Additional documentation costs, specification costs,
  506.         design costs , code costs, ....
  507.  
  508. DBC includes the Data Base maintenance cost (system backup,
  509.         configuration, maintenance) and also the Librarian activities.
  510.         Librarian activities includes tasks as work in reusables assets
  511.         to made them visible to potential users, marketing functions
  512.         to identify users needs, component purchase, ...
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.   0.3in 
  524.  
  525.   
  526.         Reuse cost investment 
  527.  
  528.         Is the additional cost needed to made a component reusable. From
  529.         that perspective it may be expressed as the cost difference
  530.         between developing a component to be reusable against
  531.         developing the same component not for reuse.
  532.  
  533.          
  534.  
  535.  
  536.   
  537. xxxxxxxx   xxx    
  538.         Where   RI: Reuse Cost Investment. Measured in Eng.week. 
  539.      
  540.  
  541.  
  542.  
  543.   0.3in 
  544.  
  545.   
  546.         Reuse costs benefits 
  547.         Benefits of reusing a component may be calculated as:
  548.  
  549.          
  550.  
  551.   
  552. xxxxxxxx   xxx    
  553.         Where   RB : Reuse Costs Benefits. Measured in Eng.week 
  554.                 A  : Adaptation cost. Measured in Eng.week. Is the cost 
  555.                        to adapt the component to integrate it to the new 
  556.                        application. 
  557.                DBR: Cost to search the component in the Data Base. 
  558.      
  559.  
  560.  
  561.         Regarding the above definitions we may express the Component
  562.         Return On Investment as the ratio between the sum of individual
  563.         benefits for each reusing activity and the reuse costs
  564.         investment to made the component reusable.
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.   
  575. xxxxxxxx   xxx    
  576.         Where   CROI  : Component Return On Investment. 
  577.                 NBinst: Number of expected reuse instances. 
  578.                 Ai    : Adaptation cost for integrating the component to 
  579.                          an activity i. 
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.   0.3in 
  597.  
  598.   
  599.         Cost effectiveness of a reuse activity 
  600.  
  601.         It may be also interesting to evaluate the reuse cost
  602.         effectiveness of a project involved in a reuse oriented software
  603.         development process considered in terms of the balance between
  604.         the reuse cost benefits of designing WITH reuse against the
  605.         reuse cost investment in designing FOR reuse:
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.   
  615. xxxxxxxx   xxx    
  616.         Where   NB. CNS:  
  617.         Is the number of consumed reusable components 
  618.                           when designing WITH reuse. 
  619.                NB. PRD:  
  620.        Is the number of produced reusable components 
  621.                           when designing FOR reuse. 
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.   The Experience 
  661.  
  662.         The experience was conducted over a case study to compare the
  663.         usage of C B combined with R VABCIP against the usage of VABCIP.
  664.  
  665.  
  666.   Context: 
  667.  
  668.         The case study is on the context of the software reuse program
  669.         at Hewlett Packard Grenoble Networks Division.
  670.  
  671.         This program has been running since 1.5 years. Models and
  672.         methodologies proposed in addition to the Caldeira and Basili's
  673.         one, has been developed by the reuse staff (apart from the
  674.         project staff) during the reuse program development.
  675.  
  676.  
  677.   
  678.         Problem Statement 
  679.  
  680.         It may be expressed generically as:
  681.         Given an Application Domain with the associated workproducts and
  682.         architecture, and given the specifications of a new product
  683.         within the Domain, implement it, in such a way to maximise the
  684.         external reuse level and minimise the implementation time.
  685.  Of course that implies reusing, already existing components, and
  686.         new selected ones, not yet recorded as reusables.
  687.  
  688.   
  689.         The Case Study 
  690.  
  691.         The analysed code is a subset of the software developed for the
  692.         Datacomunications Front End Application Domain (DTC-FE).
  693.         The subset was delimited according to architectural
  694.         considerations: for example we do not analyse code involving
  695.         X.25 staff, because we are leading mostly with Telnet Protocol
  696.         and MPE/XL terminal IO.
  697.  
  698.         Size of the analysed code is 35K NCSS.
  699.  
  700.         The new product specification are the one of the pilot project
  701.         ECRINS, involved in the Software Reuse Program.
  702.  
  703.         ECRINS project information:
  704.  
  705.   
  706.  
  707. Staff: 7.5 engineers.
  708.  
  709. Estimated Code Size: 40K NCSS (Non Commented Source Statements).
  710.         (ECRINS is applying Formal Reuse Oriented Software
  711.         Development Process, based on the results of the Code
  712.         Reusability Analysis study).
  713.  
  714.  
  715.         The Code Reusability Analysis takes four weeks. It involves a
  716.         Domain Expert (architect), a Domain Analyst and a SW Engineer
  717.         expert in SW metrics.
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.   
  729.         Results 
  730.  
  731.         Results are summarised in Figure 4.
  732.  
  733.   
  734.  
  735.  
  736.  
  737.    
  738.    
  739.  
  740.  
  741.         Column 1 shows the results of applying C B for two different
  742.         Reuse Frequency: .5 and .3, and with 800  V <4000, .65  R   1.35
  743.         and 5  C  16.
  744.  
  745.         Column 2 shows the results after experts performed R VABCIP on
  746.         the components previously selected by C B.
  747.  
  748.         Column 3 measures the accuracy of C B by computing the percent
  749.         of components retained by the experts from those detected by
  750.         C B.
  751.  
  752.         Those results shows C B as very accurate. Even for the case of
  753.         lower reuse frequency the percent of code complexity retained
  754.         after the experts advise of the code selected by C B is 88 .
  755.  
  756.         Column 4 shows the result of applying VABCIP directly.
  757.         Column 5 and 6 compares results between C B + R VABCIP and
  758.         VABCIP. As shown, the amount of selected components, code
  759.         complexity and total effort avoided are higher when using
  760.         VABCIP. But the selection time is 5 times longer.
  761.  
  762.         The Component Return On Investment estimation was 1.66 in
  763.         average, and none of the components had a CROI lower than 1.
  764.  
  765.  
  766.   Conclusion 
  767.  
  768.         The strategy to follow to select reusable workproducts from the
  769.         software related to a domain of application is shown in
  770.         Figure 5.
  771.  
  772.  
  773.  
  774.  
  775.   
  776.  
  777.  
  778.  
  779.    
  780.    
  781.  
  782.  
  783.         At the left side of the dashed line is shown the selection of
  784.         workproducts globally reusables for the domain.  That case was
  785.         not considered on the case study, but, for medium to large
  786.         systems we recommended to go first through C B. Then use DEBCIP
  787.         for the retained components to estimate the expected number
  788.         of reuse instances and specification distance, and finally
  789.         do CROI to evaluate the component return on investment.
  790.  
  791.         At the right side of the dashed line is shown the selection of
  792.         workproducts reusables on a new target functionality. In that
  793.         case the strategy is the following:  Use C B + R VABCIP as a
  794.         first estimation. If you are about or better than the reuse
  795.         objectives: 
  796.         shortage,... go directly through CROI.  If you are far behind,
  797.         perform VABCIP.
  798.  
  799. In between, evaluate the cost of VABCIP with respect to the
  800.         effort needed to develop from scratch the non detected
  801.         components.
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.    bigg89 
  814.   Biggerstaff and Perlis,
  815.            Software Reusability , 
  816.         ACM Press, 1989.
  817.   Caldieri and Basili,
  818.         ``Identifying and Qualifying reusable software componentsi''
  819.            IEEE Computer , February, 1991.
  820.   Booch, G.,
  821.            Software Components with Ada ,
  822.         Benjamin/Cummings, 1987.
  823.   Barnes and Bollinger,
  824.         ``Making reuse cost effective'',
  825.            IEEE Software , January, 1991.
  826.   Boehm, B.,
  827.            Software Engineering Economics ,
  828.         Prentice-Hall, 1983.
  829.   Chauvet,
  830.         ``Une analyse economique de la reutilisabilite'',
  831.        AFCET Interfaces , Mai/Jun, 1991.
  832.   Prieto-Diaz and Arango,
  833.         ``Domain Analysis and System Modelling''.
  834.  
  835.  
  836.  
  837.