Component Library Management System IntroductionIndex
Component Library Management System Introduction. 1
2. What is component library Management System.. 2
3. Architecture of Component Library Management System.. 3
3.2 Component Search Engine. 5
1. ObjectiveNowadays, we are not effective to reuse the existing codes to develop in the new projects. The most projects cause delay because this and that reason. If we can reuse the existing codes in the implement phase, we could reduce the coding defects, short the developing time and testing time and even short the internal design time.
In fact, most new projects can be built by the components from the old projects. But the components scatter the world sites. On most condition it is longer time to find an expected component among the components sea than the developer codes himself. But the new component exist more defects and risks than the certificated component. The worse condition is that the developer even doesn't know where he can search expected components. The most common components functions are saved in brains of the senior engineers but not in the hard disk.
In this article my objective is not to explain why we should reuse the components and how to make a component but to support how to manage a component library and how to make everyone recognize that he/she can retrieval expected components effectively in the component library and make everyone become a component provider of component library.
2. What is component library Management SystemApplication
Component 1
Component 2
C1.1
C1.2
Graphic 2.1 Components
Before I explain my component library management system, I have to explain a little what is component that I mean. The component is a reusable unit that can complete one function and an independent unit. The instance of component is not only codes, e.g. COM, Java Bean, but also reusable documents, graphics, design patterns and even frameworks. One component can contain other components. Two components can communicate each other. And every component has interfaces to Application.
In the component library one component instance include below sections:
Component modelComponent source codeComponent binary filesHelp documentsDevelopment documents. Unfortunately almost we cannot get all of them. We get more, more reusable the component is.
Component library is responsible to describe component, save it and provide the search method so that the component can be found quickly:
Description: as input section the description of component is complicated. It includes function, interface, method, property, national language, program language, platform, usage, quality level, restriction, performance, author, created info, public license and so on. It must be sure that each information is correct or the reuser cannot gain the expected component. So it is not just to force the component provider provide all information. The description function should have automation to get most information from component instance. Storage: components come from different projects, different providers with much different forms every day. The storage function should be strong enough to manage the thousands components. The storage function could save the component binary files, source code files, help files, document and description of the components. Retrieval: as output section the retrieval function is responsible to search components quickly and correctly. The retrieval function can be called search engine that provides different type of search method. We can imagine that when a reuser want to find a component that completes neuron network algorithm, he/she would like input “neuron network algorithm” in the function search. Of course it is not only. The reuser then chooses software environment “windows 2000” and chooses program language “C++”. It is clear now that the function searching is important and it should be a full-text searching engine like google. But to reduce the misunderstanding with reuser, the function searching should permit reuser to restriction the scope to window 2000 operation system and C++ language. Such searching can be a simple select sentence in the database. The found component should show reuser its interface, method, property, help, document and other info like author so that reuser can use it correctly and can contact author for help.
Are these three functions all of component library? Of course not. The reality proved the component library organized only three functions cannot be used popularly. The busy developers always forget inputting their components in component library. Even when they remember to do it, they would like inputting all of their components because it cost so much time. Why costs so much time for other people to reuse? The component library without components cannot be called a library. Otherwise the quality of component cannot be assurance.
So the component library should include other functions to solve above problems. Component Library Management System (I call it CLMS) is not one product or one independent product. CLMS is an integration development and management system. It integrates IDE, Model, Component Library and other powerful development tools. From application design phase to service in, CLMS exists everywhere.
3. Architecture of Component Library Management SystemThe architecture of CLMS is not independent; it depends on IDE like WSAD, Visual Studio, or
Delphi, model tools like rational rose, source code version control like CVS or VSS, storage database like DB2, Domino Notes, and component development process management like MS project 2000. The modules of CLMS itself contain component input/output module, component search index module, component search engineer, component storage module, component version control, component integration tool.
3.1 Process In fact, in most case component reuser is also a component provider. In one project when the plan is finished in a project, the design phase begins. According to the user requirement developer abstracts business component model and common component model using model tools, e.g. rational rose. The component model is searched in the CLMS by the search engine to match the similar existed component model. If existed, CLMS will return the component instance. The developer will take a short time to prove if the retrieval component is expected. If not exist, CLMS will save the component model and documents under document version control, it will also prepare for saving the future components source code and other sections. The components that retrieval may be not one expected component, but they are able to compose into one component that complete one function. At this case, component integration tool helps developer to produce component. In the internal phase, the developer begins to find business components and common components. When developer finish design phase, the coding phase begins. The developer has already known if the expected components exist in CLMS. In the coding phase, the developer as a component provider saves the component in CLMS when he/she finish it. Because the trace begins from the design phase, the most information of component has been known by CLMS and what the developer to do is just to push one button to submit the component source code and binary files to the CLMS. Just as the source code version control, In CLMS, component version should also be controlled. The following content will describe how to search component.
3.2 Component Search Engine
Component search engine is the core of CLMS. It enables to search components by providing properties, function sentence or even model graphic. The quantity of searching objects is huge and the content of searching is complicated. So it is necessary to use some algorithm to complete it.
There are three algorithms I would like to adopt to build engine. The first one is faceted classification to classify the component information that would reduce the scope of the full text searching. The second one is clustering analysis algorithm that complete the full text searching and build index for CLMS. The last one is self-organized mapping neural network algorithms that can also complete the full text searching and build index. How to combine these algorithm to search component have described in my paper [1] and my graduate thesis [2].
4. SummaryFor using CLMS to improve efficiency and reduce cost, we must remember reuse definition and we reuse anytime. CLMS follows developer every time in development project. The objective of CLMS is to make components saving and searching simple and easy and be shared for all of developers. To do it, CLMS cannot be an isolated product but a set of tools for developer using. CLMS may not only one in one company, but CLMSes should be able to communicate each other. CLMS should be an international tool without area boundary. All of developers should know and use CLMS. Whatever project managers or programmers should have authority to use, create components in the CLMS. Or it loses its meaning to exist.
2. What is component library Management SystemApplication
Component 1
Component 2
C1.1
C1.2
Graphic 2.1 Components
Before I explain my component library management system, I have to explain a little what is component that I mean. The component is a reusable unit that can complete one function and an independent unit. The instance of component is not only codes, e.g. COM, Java Bean, but also reusable documents, graphics, design patterns and even frameworks. One component can contain other components. Two components can communicate each other. And every component has interfaces to Application.
In the component library one component instance include below sections:
Component modelComponent source codeComponent binary filesHelp documentsDevelopment documents. Unfortunately almost we cannot get all of them. We get more, more reusable the component is.
Component library is responsible to describe component, save it and provide the search method so that the component can be found quickly:
Description: as input section the description of component is complicated. It includes function, interface, method, property, national language, program language, platform, usage, quality level, restriction, performance, author, created info, public license and so on. It must be sure that each information is correct or the reuser cannot gain the expected component. So it is not just to force the component provider provide all information. The description function should have automation to get most information from component instance. Storage: components come from different projects, different providers with much different forms every day. The storage function should be strong enough to manage the thousands components. The storage function could save the component binary files, source code files, help files, document and description of the components. Retrieval: as output section the retrieval function is responsible to search components quickly and correctly. The retrieval function can be called search engine that provides different type of search method. We can imagine that when a reuser want to find a component that completes neuron network algorithm, he/she would like input “neuron network algorithm” in the function search. Of course it is not only. The reuser then chooses software environment “windows 2000” and chooses program language “C++”. It is clear now that the function searching is important and it should be a full-text searching engine like google. But to reduce the misunderstanding with reuser, the function searching should permit reuser to restriction the scope to window 2000 operation system and C++ language. Such searching can be a simple select sentence in the database. The found component should show reuser its interface, method, property, help, document and other info like author so that reuser can use it correctly and can contact author for help.
Are these three functions all of component library? Of course not. The reality proved the component library organized only three functions cannot be used popularly. The busy developers always forget inputting their components in component library. Even when they remember to do it, they would like inputting all of their components because it cost so much time. Why costs so much time for other people to reuse? The component library without components cannot be called a library. Otherwise the quality of component cannot be assurance.
So the component library should include other functions to solve above problems. Component Library Management System (I call it CLMS) is not one product or one independent product. CLMS is an integration development and management system. It integrates IDE, Model, Component Library and other powerful development tools. From application design phase to service in, CLMS exists everywhere.
3. Architecture of Component Library Management SystemThe architecture of CLMS is not independent; it depends on IDE like WSAD, Visual Studio, or
Delphi, model tools like rational rose, source code version control like CVS or VSS, storage database like DB2, Domino Notes, and component development process management like MS project 2000. The modules of CLMS itself contain component input/output module, component search index module, component search engineer, component storage module, component version control, component integration tool.
3.1 Process In fact, in most case component reuser is also a component provider. In one project when the plan is finished in a project, the design phase begins. According to the user requirement developer abstracts business component model and common component model using model tools, e.g. rational rose. The component model is searched in the CLMS by the search engine to match the similar existed component model. If existed, CLMS will return the component instance. The developer will take a short time to prove if the retrieval component is expected. If not exist, CLMS will save the component model and documents under document version control, it will also prepare for saving the future components source code and other sections. The components that retrieval may be not one expected component, but they are able to compose into one component that complete one function. At this case, component integration tool helps developer to produce component. In the internal phase, the developer begins to find business components and common components. When developer finish design phase, the coding phase begins. The developer has already known if the expected components exist in CLMS. In the coding phase, the developer as a component provider saves the component in CLMS when he/she finish it. Because the trace begins from the design phase, the most information of component has been known by CLMS and what the developer to do is just to push one button to submit the component source code and binary files to the CLMS. Just as the source code version control, In CLMS, component version should also be controlled. The following content will describe how to search component.
3.2 Component Search Engine
Component search engine is the core of CLMS. It enables to search components by providing properties, function sentence or even model graphic. The quantity of searching objects is huge and the content of searching is complicated. So it is necessary to use some algorithm to complete it.
There are three algorithms I would like to adopt to build engine. The first one is faceted classification to classify the component information that would reduce the scope of the full text searching. The second one is clustering analysis algorithm that complete the full text searching and build index for CLMS. The last one is self-organized mapping neural network algorithms that can also complete the full text searching and build index. How to combine these algorithm to search component have described in my paper [1] and my graduate thesis [2].
4. SummaryFor using CLMS to improve efficiency and reduce cost, we must remember reuse definition and we reuse anytime. CLMS follows developer every time in development project. The objective of CLMS is to make components saving and searching simple and easy and be shared for all of developers. To do it, CLMS cannot be an isolated product but a set of tools for developer using. CLMS may not only one in one company, but CLMSes should be able to communicate each other. CLMS should be an international tool without area boundary. All of developers should know and use CLMS. Whatever project managers or programmers should have authority to use, create components in the CLMS. Or it loses its meaning to exist.