220 likes | 322 Views
Second-Hand Shopping: Efficient Component Reuse. TopCoder, Inc. Sean Campion, Project Manager [scamp]. Agenda. High-Level CBSE Overview Audience Reuse Maturity Levels Features Searching Metrics Wrap Up. High-Level CBSE Overview. Component-Based Software Engineering.
E N D
Second-Hand Shopping: Efficient Component Reuse TopCoder, Inc. Sean Campion, Project Manager [scamp]
Agenda • High-Level CBSE Overview • Audience • Reuse Maturity Levels • Features • Searching • Metrics • Wrap Up
High-Level CBSE Overview • Component-Based Software Engineering. • Component Granularity. • Cost-Benefit: (n * (CI + IT)) + RBE + MT < (n * (BE + MT)) • n – number of times item/component is reused. • CI – Component Identification time. • IT – Component Integration time. • RBE – Reuse Build Effort time. • MT – Maintenance Time • BE – Build Effort • Component Library Source: Engineering + Reuse = Savings : How to Really Cut the Costs of Software Development, Messinger David, .Net Developers Journal, August 2005.
Audience • Internal Consumption • External Consumption • Management • Developers • Architects
Reuse Maturity Levels • Level 0 – Ad-Hoc Reuse • Individuals find assets on their own, sharing with colleagues as they choose. File system or minimal web-site, email. Source: Reuse Comes in Several Flavors, Achieving a Better Return on Software Series, 2; Griss, Martin.
Reuse Maturity Levels • Level 1 – Facilitated Reuse • Organization encourages and supports reuse with limited resources, infrastructure, and policies to make reuse easier. • Self-use repository or web-site, submitters may add some metadata to improve search and evaluation. Source: Reuse Comes in Several Flavors, Achieving a Better Return on Software Series, 2; Griss, Martin.
Reuse Maturity Levels • Level 2 – Managed Reuse • Organization enforces reuse practice through policies, resources, tools, and people. • Registrar-monitored repository, extensive metadata, multi-project source control, asset quality assurance, change notification, utilization measurements. Source: Reuse Comes in Several Flavors, Achieving a Better Return on Software Series, 2; Griss, Martin.
Reuse Maturity Levels • Level 3 – Designed Reuse • Organization invests in carefully designed assets for reuse, choosing assets for domain or product line. Assets are architected or reengineered to fit together. • Requirements and portfolio management tools; frameworks, standards, generators; change management tools. Source: Reuse Comes in Several Flavors, Achieving a Better Return on Software Series, 2; Griss, Martin.
Features • Produce • Publish components and specifications. • Notify consumers of new components or problems. • Use component specifications as starting point for design. • Publish undocumented or informally designed components. Source: Configuration Management and Component Libraries Hedley Apperly, in Component-Based Software Engineering: Putting the Pieces Together, George T. Heineman, William T. Councill, Addison-Wesley, 2001.
Features • Manage • Manage library repositories. • Manage library users. • Manage catalogues. • Assure quality components. • Manage components. • Make components available. • Manage the versioning of components. Source: Configuration Management and Component Libraries Hedley Apperly, in Component-Based Software Engineering: Putting the Pieces Together, George T. Heineman, William T. Councill, Addison-Wesley, 2001.
Features • Consume • Search for necessary components. • Fulfill identified gaps. • Use or reuse component specifications. • Use or reuse components. • Deploy components. • Register interest in components. Source: Configuration Management and Component Libraries Hedley Apperly, in Component-Based Software Engineering: Putting the Pieces Together, George T. Heineman, William T. Councill, Addison-Wesley, 2001.
Features • Consume (continued) • Receive new component notification. • Review new components. Source: Configuration Management and Component Libraries Hedley Apperly, in Component-Based Software Engineering: Putting the Pieces Together, George T. Heineman, William T. Councill, Addison-Wesley, 2001.
Searching The perceived Level of Effort of searching, understanding, and using a component must be less than the perceived effort of developing the component again for reuse to be practical and effective.
Searching User Search Space Definition: • L1 – User Known L4 – User Unknown • L2 – User Familiar with K – Actual Space • L3 – User belief R – Search Results Source: Supporting Reuse by Delivering Task-Relevant and Personalized Information, Ye, Fischer, Department of Computer Science, University of Colorado – Boulder; 2002.
Searching • Measurement: • Precision: Number of components returned that belong to the set of items that ideally should have been returned. • Precision (R) = |R ∩ Q| / |Q| • Recall: The total number of components returned, regardless of whether they belong to the ideal set or not. • Recall (R) = |R ∩ Q| / |R| Source: Toward Automated Retrieval for a Software Component Repository, Luqi, Jiang Guo, Dept. of Computer Science, Naval Postgraduate School.
Searching Two basic approaches: • Use the information within the component (source code, documentation, diagrams) for searching. • Use external, metadata information about the component for searching.
Searching • Internal Methods • Signature Matching • Keyword • Specification Matching Source: Toward Automated Retrieval for a Software Component Repository, Luqi, Jiang Guo, Dept. of Computer Science, Naval Postgraduate School.
Searching • External • Categorization • Facets • Meta Data • User Feedback • Combination Source: Finding a Needle in a haystack: a technique for ranking matches between components, Tansalarak, Claypool, Department of Computer Science, University of Massachusets – Lowell.
Metrics • Tracking Methods • Lines of Code • Level of Effort • Downloads vs. actual usage • Project Tracking • (n * (CI + IT)) + RBE + MT < (n * (BE + MT)) Source: Engineering + Reuse = Savings : How to Really Cut the Costs of Software Development, Messinger David, .Net Developers Journal, August 2005.
Wrap-Up • Software reuse is only effective if the architects and developers are able to efficiently find and use components. Specifically, the perceived LE to search for components must be less than the perceived LE to create that component. • The correct software repository for your organization is needed to ensure efficient software reuse.
Sources • Reuse Comes in Several Flavors, Achieving a Better Return on Software Series, 2, Martin Griss. • Configuration Management and Component Libraries, Hedley Apperly, in Component-Based Software Engineering: Putting the Pieces Together, George T. Heineman, William T. Councill, Addison-Wesley, 2001. • Toward Automated Retrieval for a Software Component Repository, Luqi, Jiang Guo, Dept. of Computer Science, Naval Postgraduate School. • Finding a Needle in a haystack: a technique for ranking matches between components, Tansalarak, Claypool, Department of Computer Science, University of Massachusets – Lowell. • Supporting the Construction and Evolution of Component Repositories, Scott Henninger, Department of Computer Science & Engineering, University of Nebraska. 1996. • Supporting Reuse by Delivering Task-Relevant and Personalized Information, Ye, Fischer, Department of Computer Science, University of Colorado – Boulder; 2002. • The Return on Investment on Commercial Off-The-Shelf (COTS) Software Components, Brooke Chris, ComponentSource, 2002. • Engineering + Reuse = Savings : How to Really Cut the Costs of Software Development, Messinger David, .Net Developers Journal, August 2005.