Software Reuse

Document Sample
Software Reuse Powered By Docstoc
					Software Reuse

            Concepts, issues, and research
             directions in software reuse

            Kemerer-1997



Ali Arya, 2003         Software Project Management, Software Reuse   Slide 1
Motivation
            Software productivity
                 •   Time, available of developers, …
                 •   “Writing less code” instead of “writing code faster”
            Quality improvement
                 •   Using high quality components increases overall quality
            Duplication in existing software
                 •   Plenty of room for reuse (15% to 85%)
            Open systems
                 •   Compatibility
            Automation
                 •   Complementary to, overlapped with reuse

Ali Arya, 2003                   Software Project Management, Software Reuse   Slide 2
Reusable Assets
            Objects of reuse
                 •   Products (“building blocks” approach)
                 •   Processes (“generative” approach”)
            Developing reusable assets
                 •   Technologies like OOP
                 •   Application generators
            Developing with reusable assets
                 •   Locating
                 •   Accessing
                 •   Adapting



Ali Arya, 2003                   Software Project Management, Software Reuse   Slide 3
Methods of Reuse
            Source-code
                 •   Ad-hoc fragment scavenging or components (e.g. OOP)
            Software schemas (patterns)
                 •   Extension to components
                 •   Algorithms and data structures
            Application generators
                 •   Different domains, e.g. GUI or parser
            Very high-level languages
                 •   Extension to app generators
                 •   e.g. PAISley and MODEL
            See Ref #1, Krueger-92, for detailed discussion.



Ali Arya, 2003                    Software Project Management, Software Reuse   Slide 4
Theory of Reuse
            Engineering disciplines: developing products
             from reusable assets based on a scientific
             foundation.
                 •   Concern for practice is no excuse for poor theory.
                 •   Empirical methods are no excuse for dispensing with analytical
                     methods.
                 •   Scientific research ultimately affects and enhances practice.
                 •   Scaling up is not always realistic.
            Software reuse deals with:
                 •   Producing reusable assets (domain engineering)
                 •   Exploiting reusable assets (application engineering)



Ali Arya, 2003                   Software Project Management, Software Reuse   Slide 5
Domain Engineering Issues
            Assets
                 •   Categorizing (structure vs. function)
                      » e.g. design patterns and math routines
                 •   Representing
                 •   Matching
                 •   Developing
                 •   Using/reusing
            Domains
                 •   Criteria for grouping assets into domains (common expertise,
                     common design, common market)
            Software production lines


Ali Arya, 2003                    Software Project Management, Software Reuse   Slide 6
Application Engineering Issues
            Component-based software development
                 •   Visual Basic Controls (VBX)
                 •   Language dependent components (C++, JavaBeans)
                 •   Binary standards (DCOM, CORBA)
                 •   New development model
                 •   Interface definition
                      » Analogy with hardware design with ICs
            COTS-based system development
                 •   Risk management
                 •   Critical applications
                 •   Complexity
            Component storage and retrieval
                 •   Searching and browsing


Ali Arya, 2003                     Software Project Management, Software Reuse   Slide 7
Economy of Reuse
            Reuse is a means of increasing efficiency
                 •   Among other things !
            Reuse has its own costs and risks
            Reuse as an investment
                 •   Reuse-investment relation (next slide)
            Reuse investment is not the same as the costs of
             making software maintainable.
            Producer/consumer model



Ali Arya, 2003                   Software Project Management, Software Reuse   Slide 8
Reuse Investment Relation
                               Activity 1                              Activity n

                              Estimated cost                           Estimated cost
                              w/o reuse                    ...         w/o reuse
                              Cost w/ reuse                            Cost w/ reuse

Reuse investments
                                      $ Savings                         $ Savings



                 Net profit                Net loss

Reuse producer activities                                 Reuse consumer activities

Ali Arya, 2003                Software Project Management, Software Reuse               Slide 9
Cost-effective Reuse
            Quality-of-investment measure
                 •   Q=B/R
                 •   B total benefit, R total investment
            Increasing the level of reuse
                 •   Build reusable parts for local expertise; buy reusable parts for
                     outside expertise
            Reducing the average cost of reuse
                 •   Match generalization to needs
            Reduce the investment needed to achieve a given
             reuse benefit

Ali Arya, 2003                    Software Project Management, Software Reuse    Slide 10
Reuse Costs
            Making software reusable (cost increase)
                 •   25% generalization
                 •   15% documentation
                 •   10% testing
                 •   5% support
            Reusing software
                 •   Included in right side of RIR
            Defining and implementing a reuse process
                 •   Organizational structure
                 •   Process model
                 •   Development methods

Ali Arya, 2003                   Software Project Management, Software Reuse   Slide 11
Reuse Strategies
            Functionality
                 •   Invariant (e.g. math routines)
                 •   Variant (customizing invariants)
            Categories of reuse strategies
                 •   Adaptive: large frame structures as invariants and restricted
                     low-level variability
                      » Changing parameters, replacing low level I/O modules
                 •   Compositional: variant functionality as a glue for invariants
                      » Constructing systems from existing parts
            Compositional reuse is more flexible but harder
             to control.


Ali Arya, 2003                    Software Project Management, Software Reuse   Slide 12

				
DOCUMENT INFO