Title: Facilitating Reuse of Software Components using Repository Technology
1Facilitating Reuse of Software Components using
Repository Technology
- J. Lee, J. Kim, and G.S. Shin
- Electronics Telecommunications Research
Institute - Tenth Asia-Pacific SE Conference (APS03EC)
- Presentation by Matthew Choi
2Summary
- Component-Based Development provides many
benefits through its component reuse - Savings in development effort and time
- Increase in modifiability and maintainability
- Component repository is required to facilitate
storing and maintaining reusable software
components efficiently - Functional requirements need to be considered for
an effective component reuse - Description and implementation of the component
repository for an EJB component (CRECOR)
3Background
- What is a software component?
- Unit of software that has business logic, and
interfaces to interact with others - Highly cohesive units provide low coupling when
integrated - Component Based Development
- Approach in which software systems are developed
by assembling preexisting components under
well-defined architecture or framework - Notable benefits include reusability, easy
maintainability, and faster time-to-market
4Implementation of Services in CBD
- Basic steps involved in implementing a range of
services in component-based software - Identify a set of compatible components from
existing components - Components that do not operate correctly together
should be modified according to dependencies b/w
other components - Modified components are tested to check for
functionality and correctness of the changes
5Challenges with CBD
- Difficulty in identifying and locating reusable
components - What components to reuse, and where to find them
- Poor quality of component documentation and
specification - How should the components be used?
- Are there dependencies with other components?
- Difficulty in governance and management of
components inventory - Especially as the number of components grow and
the complexity of components become greater
6Solution Component Repository
- Allows convenient access to reusable components
- Provides reuse functionalities
- Selection
- Analysis
- Adaptation
- Test
- Deployment
- Components should be collectively stored and
maintained for future reuse - To be implemented and integrated with COBALT
(Component-based application development tool)
7Requirements of Reuse Software Component
Repository
- For reuse functionality, requirements include
- Storing and browsing of components
- Ease of access and availability of components
- Detailed documentation with specifications
- Well-defined interfaces and connectors
- Relationships and dependencies with other
components - Additional supports needed in reuse process
- Organizational requirements
- Provide categorizations of components
- Components to be newly generated
- Components to be modified
8Reuse Process with CBD
- 2 main activities involving component reuse
- For component reuse
- Composed of purchase, development, and store
tasks - With component reuse
- Composed of search, selection, analysis,
adaptation, assemble, deployment, and test tasks - Use specification to determine reusable scope of
the component - Can be further divided into
- With component reuse
- With component reuse to be adapted
9Reuse Process (Illustration)
LEFT With-component reuse CENTER With-compone
nt reuse to be adapted RIGHT For-component reuse
- Figure 1 Component-based development process
10Example Component Repository for Facilitating EJB
Component Reuse
- EJB component (physically packaged JAR file)
- Class files (interfaces and beans)
- Deployment descriptors
- Information such as JNDI and class names, methods
signatures of interfaces, referencing resources,
etc. - Manifest file
- Component Repository for facilitating EJB
Component Reuse (CRECOR) - Provides functions - component browse, selection,
analysis, adaptation, deployment, and test - Its GUI provides easy-to-use interface
11COBALT (CB app. development tool)
- Available functions
- A For-component reuse
- ADD
- B With-component reuse
- VIEW
- TEST
- ADAPT
- DEPLOY
- Figure 2 The stitched box represents CRECOR
12Implementation of CRECOR
- Functions in CRECOR
- For-component reuse
- ADD
- With-component reuse
- VIEW, TEST, ADAPT, and DEPLOY
- The individual function is integrated in the tree
style component-browsing repository, and is
operated with its own user interface - The with-component reuse functions are
implemented and produced in component viewer,
analyzer, adapter, deplorer, and tester
13CRECOR - Component Analyzer
- Analyzes component information, and shows
component structure and its interface methods - Used to determine the reusable part and scope of
the selected components - Each tab represents a bean
- Displays interface names, JNDI, and method
signatures
- Figure 3 Analyze component information
14CRECOR - Component Adapter
- Supports component modification for mismatched
interfaces - Unmatched interface method is adapted in
following viewpoints return type, parameter
type, parameter order, and method name - Also allow addition of new attributes or
interfaces
- Figure 3 Add new attributed activated view
15CRECOR - Component Deplorer
- Supports component packaging and deployment
- Input values are used for component packaging,
deployment descriptor writing, and deploying in
various J2EE-based application servers
- Figure 4 J2EE-based component deplorer
16CRECOR - Component Tester
- Supports testing interface methods for determined
reusable parts of a specific component without
manual coding - Available for automatic client program generating
and interface method self-testing with parameter
values provided at runtime
- Figure 5 Automatically generates web-based
client program
17Architecture Diagram Editor
- Provides visualization of component architecture
- Use drag-and-drop to show interconnection of
reusable components involved
- Figure 6 Visual representation of the CB
architecture
18Conclusion
- CRECOR is designed and implemented to support
process for component reuse - Provides reuse facilities that are almost
necessary for CBD - Provides useful functionalities to facilitate a
successful CBD such as specification viewing,
component adaptation for compatibility, etc. - Overall savings in development time, effort, and
costs
19Critique
- Strengths
- General idea and concept of utilizing repository
technology with CBD was very interesting - The description of the tools used for the
discussion (COBALT CRECOR) were well organized
and illustrated - Weaknesses
- Limitations of these tools were not discussed
- Found grammatical errors, and some sentences were
not easily comprehensible (attributed to ESL)
20Discussion Topics
- The tools described in the paper seems to only
focus on storing and managing the actual
components. How else can these types of tools be
leveraged to improve CBD using this repository
concept? For example, what other types of
artifacts should be in the repository? Or what
other features of the repository might be useful? - These tools do not seem to address potential
security and administrative restriction issues.
Are these necessary? If so, how should it be
administered? - Have any of you had exposure to CBD component
repository? What are some of the recent
repository systems available today?