Second-Hand Shopping: Efficient Component Reuse TopCoder, Inc. Sean Campion, Project Manager [scamp]

Slides:



Advertisements
Similar presentations
Current Awareness Services. Definition n A service which provides the recipient with information on the latest developments within the subject areas in.
Advertisements

Component-Based Software Engineering Main issues: assemble systems out of (reusable) components compatibility of components.
Key-word Driven Automation Framework Shiva Kumar Soumya Dalvi May 25, 2007.
Software Reuse SEII-Lecture 28
Chapter 2 The Software Process
Dr Gordon Russell, Napier University Unit Data Dictionary 1 Data Dictionary Unit 5.3.
An Improved Approach to Project Estimation Based on Software Artifact Reuse by David T. Henrickson.
Unified theory of software evolution Reengineering – Business process reengineering and software reengineering BPR model – Business definition, process.
A framework for describing IT Project Management Processes and Tool Set Features Enterprise Project Management Framework.
Automated Analysis and Code Generation for Domain-Specific Models George Edwards Center for Systems and Software Engineering University of Southern California.
Does Microsoft Understand Business Integration? Simon Thurman Architect
1 Software Architecture: a Roadmap David Garlen Roshanak Roshandel Yulong Liu.
Tools and Services for the Long Term Preservation and Access of Digital Archives Joseph JaJa, Mike Smorul, and Sangchul Song Institute for Advanced Computer.
Stimulating reuse with an automated active code search tool Júlio Lins – André Santos (Advisor) –
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 Tools of Software Development l 2 types of tools used by software engineers:
Database Administration Chapter 16. Need for Databases  Data is used by different people, in different departments, for different reasons  Interpretation.
© 2005 by Prentice Hall Appendix 2 Automated Tools for Systems Development Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F.
Component-Based Software Engineering (CBSE) Speaker: Jerry Gao Ph.D. San Jose State University URL:
SEG Software Maintenance1 Software Maintenance “The modification of a software product after delivery to correct faults, to improve performance or.
COMPONENT-BASED SOFTWARE ENGINEERING
Chapter 2 The Origins of Software
A Methodology that is PROVEN PRACTICAL EFFECTIVELY INTEGRATED SCALABLE CUSTOMIZABLE.
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
Achieving Agility with WSO2 App Factory S. Uthaiyashankar Director, Cloud Solutions WSO2 Inc. Dimuthu Leelarathne Software Architect WSO2 Inc.
S T A M © 2000, KPA Ltd. Software Trouble Assessment Matrix Software Trouble Assessment Matrix *This presentation is extracted from SOFTWARE PROCESS QUALITY:
Appendix 2 Automated Tools for Systems Development © 2006 ITT Educational Services Inc. SE350 System Analysis for Software Engineers: Unit 2 Slide 1.
Presented To: September 9, 2015 CONFIDENTIAL Copyright 2007, TopCoder, Inc. Sean Campion [scamp] 27 June 2007 TopCoder Open, Las Vegas TopCoder Component-Based.
Quality Assurance for Component- Based Software Development Cai Xia (Mphil Term1) Supervisor: Prof. Michael R. Lyu 5 May, 2000.
Managing Software Quality
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 19 Slide 1 Component-based software engineering 2.
Thirteenth Lecture Hour 8:30 – 9:20 am, Sunday, September 16 Software Management Disciplines Process Automation (from Part III, Chapter 12 of Royce’ book)
14 Publishing a Web Site Section 14.1 Identify the technical needs of a Web server Evaluate Web hosts Compare and contrast internal and external Web hosting.
Doing More with TeamTrack May 1, /17/2015 6:14 PM Goals and Objectives Increased Reuse of Critical Assets Increased Productivity and Effectiveness.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Project Coordinators: Eduardo Santana de Almeida Silvio Romero de Lemos Meira Federal University of Pernambuco Informatics Center Recife Center for Advanced.
Transparency and Open Data: GSS Response Iain Bell HoP MoJ.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
Introduction To Software Component Reuse
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Introducing Software Product Lines (SPL) Silvio Romero de Lemos Meira Eduardo Santana de Almeida
21-22 May 2004IMPROQ 2004 / Impact of SW Processes on Quality Workshop 1 Quality for Components: Component and Component- Based Software Quality Issues.
Lecture Introduction to Software Development SW Engg. Development Process Instructor :Muhammad Janas khan Thursday, September.
Software Product Line Material based on slides and chapter by Linda M. Northrop, SEI.
Component-Based Software Engineering(CBSE) Xingui Tang CS532, Fall /6/2015.
ANKITHA CHOWDARY GARAPATI
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
Evaluating & Maintaining a Site Domain 6. Conduct Technical Tests Dreamweaver provides many tools to assist in finalizing and testing your website for.
CASE (Computer-Aided Software Engineering) Tools Software that is used to support software process activities. Provides software process support by:- –
IBM Software Group ® Managing Reusable Assets Using Rational Suite Shimon Nir.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software.
第 11 組 MIS 報告. Phases of any information system ~ recognition of a business problem or opportunity ~ recognition of a business problem or opportunity.
State of Georgia Release Management Training
CS223: Software Engineering Lecture 15: Software construction.
IPDA Architecture Project International Planetary Data Alliance IPDA Architecture Project Report.
Data Stewardship Lifecycle A framework for data service professionals Protectors of data.
Testing and Release Procedures/Tools Cristina Aiftimiei (INFN-CNAF) Mario David (LIP)
Systems Development Process and Methodologies Dr. T. Ravichandran.
Appendix 2 Automated Tools for Systems Development
Continuous Delivery- Complete Guide
Chapter 17 - Component-based software engineering
Chapter 18 Maintaining Information Systems
Business System Development
Maintaining software solutions
Tools of Software Development
Component-Based Software Engineering
Automated Analysis and Code Generation for Domain-Specific Models
Chapter 17 - Component-based software engineering
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 Tools of Software Development l 2 types of tools used by software engineers:
Presentation transcript:

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, . 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 KnownL4 – User Unknown L2 – User Familiar withK – Actual Space L3 – User beliefR – 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 1.Reuse Comes in Several Flavors, Achieving a Better Return on Software Series, 2, Martin Griss. 2.Configuration Management and Component Libraries, Hedley Apperly, in Component-Based Software Engineering: Putting the Pieces Together, George T. Heineman, William T. Councill, Addison-Wesley, Toward Automated Retrieval for a Software Component Repository, Luqi, Jiang Guo, Dept. of Computer Science, Naval Postgraduate School. 4.Finding a Needle in a haystack: a technique for ranking matches between components, Tansalarak, Claypool, Department of Computer Science, University of Massachusets – Lowell. 5.Supporting the Construction and Evolution of Component Repositories, Scott Henninger, Department of Computer Science & Engineering, University of Nebraska Supporting Reuse by Delivering Task-Relevant and Personalized Information, Ye, Fischer, Department of Computer Science, University of Colorado – Boulder; The Return on Investment on Commercial Off-The-Shelf (COTS) Software Components, Brooke Chris, ComponentSource, Engineering + Reuse = Savings : How to Really Cut the Costs of Software Development, Messinger David,.Net Developers Journal, August 2005.