Applying Knowledge Management System Architecture in Software Maintenance Environment

Knowledge management (KM) become important for organization to take advantage on the information produced and can be brought to bear on present decision. Software maintenance (SM) is a process that requires lots of knowledge. Maintainers must know what changes should do to the software, where to do those changes and how those changes can affect other modules of the system. Knowledge management system (KMS) can support the processes of knowledge creation, storage or retrieval, transfer and application. KMS in SM could help the organization to make tacit knowledge into explicit and therefore decrease the dependency on employees’ cognition. This paper is to apply KMS architecture in SM environment to overcome the problem faced by software maintainers during the software maintenance process.


Introduction
KM can be used as a recognition that employees in an organization, as part of their daily activities, knowledge that valuable to the organization.SM is an activity that modifying an existing system to adapt it to new needs, adapt it to never changing environment, or to correct errors in it either preventively or as the result of the actual problem of maintenance project.During SM, maintainers need knowledge of the system they work on, of its application domain, of the organization using it, of past and present software engineering practices, of different programming languages, programming skills.Among the different knowledge needs, maintainers must identify the following: • Knowledge about the system maintained emerges as a prominent necessity.
• The design decision of the knowledge about software development applied in the process of transforming the knowledge on the application domain into a production of a source code.
KMS could satisfy the needs as to avoid issues in SM.This is because organization can store information and knowledge in KMS.Therefore, even though experts left the organization, the organizations whose own their expertise will remain and maintain the knowledge within the organization.For these reasons, KMS is important so that diverse kinds of knowledge generated from stages of software management process could be stored, analyzed, shared and reused.
Another benefit of KMS is that staff may also inform about the location of the information.Normally, a critical factor for software engineers in maintenance process is that to ensure they will get access to the right knowledge that became the treasure by the organization.Basically the number one barrier to knowledge sharing is ignorance (Szulanki, 1995;  Ruiz, et al, 2004).
Nowadays, it is an increasing emphasis on the development of information system designed mainly to assist the sharing and integration of knowledge.Most of researcher agreed that KMS architecture should have at least three tiered architecture.They are interface, applications and repositories (Chua, 2004).
When implementing KMS in SM, normally it will involve three profiles of people.These three profiles of people can be clearly differentiated in maintenance process as the maintainer, the administrator, and the user [Collier, 1996].

A. KM-Mantis
KM-MANTIS is a multi-agent system that was developed to manage knowledge in SM [Palade, 2003].The architecture used in this system has different types of agent to manage diverse types of information generated during software maintenance process.In this work, agents interchange data and take advantage of the information and experience by other agents.

MAPROK
MAPROK (a multi-agent architecture to process knowledge) uses specialized autonomous agents for specific services and allows agents to interact in order to support the main knowledge processes [Soto, 2006].The architecture was designed to cater the main processes of knowledge life cycle.In this work the author emphasized that there is generic multi agent architecture to be taken into account when developing KMS such as creating, maintaining, sharing and distributing knowledge.

KINOWLEDGE MANAGEMENT SYSTEM ARCHITECTURE IN SOFTWARE MAINTENANCE
The system model consist of three tiered architecture; interface, application and repositories.The system architecture is shown in Fig. 1.

A. User Interface Module
User interface module is the front end of this system.The main purpose of this module is to provide the interface to the user for them to communicate with the system.From the interface, the user can key-in their request and then send the request to the application to be processed.Besides that, the interface module also will display the output from the system to the user.

B. Application Module
The system function will reside in application module.The user can find solution and submit their problem and contribution in this module.Some of the tools available in the system are: i.
Submit incident or contribution ii.Viewing of reward point for each problem solved iii.Searching for solution history

C. Data access module
Data access module is located between the database and the application module.The main purpose of this module is to connect the application to the database.In this study, the author uses the direct connection to connect the application to the MySQL database.

Implementation
KMS in SM is an application that is to be used for creating, storing and reusing knowledge that has been contributed by the maintainers.This work had applied the KMS architecture which was proposed by Chua (2004).The KMS architecture is shown in Fig. 2 Explanations for each layer are as follows:

1) Infrastructure Services
This layer comprise of two services that are storage and communication.The storage is to store the knowledge while a communication service is for collaboration among users.But, in this work communication were not covered since it is out of scope.

2) Knowledge Services
This layer comprise of three services.First, knowledge creation which is the creation of knowledge either it is through exploitation, exploration or codification.Second, knowledge sharing is to foster the flow of knowledge among the organization members.Third, knowledge reuse is to capture, package, distribute knowledge and use knowledge.

3) Presentation Services
This service covers the personalization which involves gathering user information and delivering appropriate content.While, visualization is to help users better understand the information and knowledge available by making browsing and navigation easier.
By implementing this architecture, it can compelling the need for KM in organization by a host of social, economic and technological factors including the shortening of product life cycle, fluidity of workforce and the prevalence of work arrangements.Furthermore, when used in tandem with an appropriate KM strategy, technology is a powerful enabler of organizational success.Besides that, through the simplicity of a three-tiered structure, the KMS architecture can help the organization to understand the KM technology.
In this work, users are required to send their request for solution to HelpDesk.Then he will submit the request to Project Manager (PM).PM will categorize the problem whether it is adaptive, corrective, perfective and preventive.Besides that, PM also has to set the problem priority whether it is low, high or normal.After setting both category and priority, PM will submit the task to maintainer.Maintainer will give a solution and submit it back to PM for approval.If the solution is approved by PM, it will be stored in the KMS.Otherwise, PM can always be allowed to resubmit the task or request to maintainers for other resolution.The system flow is shown in Fig. 3.

Discussion
Basically, the architecture applied in this system fulfils its objective and successfully completed according to the research scope.The application of KMS architecture in SM has proven that knowledge creation, knowledge sharing and knowledge reuse could be done.Besides that, storage which is also known as knowledge repository can be used to store the knowledge contributed by the user.By having this structure, experience from previous project can always be kept in the KMS and can be referred anywhere and anytime by the organization staff.Additionally, the organization does not have to worry even their staff left the organization because their tacit knowledge will always remain in the organization.
From the survey that we have been conducted through a selected government agencies which is involving in maintaining applications for their businesses as well as having all the criteria given, the respondents were asked on whether the KMS architecture has been applied in the system.From the survey conducted, 57.1% respondent agrees and 42.9% respondent strongly agreed that the system should have collaborative environment.But unfortunately, this feature was not included since it is out of system scope.This information could be used for future work.Additionally, in terms of knowledge services characteristics layer which consist of knowledge creation, knowledge sharing and knowledge reuse, 42.9% respondent agreed and 57.1% respondent strongly agreed that the system had covered this layer.For presentation services, most of the respondent agreed that when visualizing they system they can understand what the system is trying to explain.The percentage that agreed this system had applied this layer is 61.9%.Overall, 57.1% respondent agreed and 19.0% strongly agreed that KMS architecture has been applied in the system.
Fig. 4 illustrated the respondent acceptance on KMS architecture.
From Fig. 4, it can be viewed that the KMS architecture's layers that are repository, application and interface must be included in implementing KMS.
For infrastructure service that is for storage, 95.2% respondent agreed that the system fulfil this layer.This service is illustrated more in Fig. 5.
From the study, it was also found out that even though the KMS architecture model distinctly illustrates various services supported by technology, delineation among services may sometimes be fuzzy.To overcome this weakness, organization is advised to use KMS architecture that has a technology solution merely for its extendibility, comprehensiveness functionalities and technical features.For example, if an organization aims to gain knowledge from users or create knowledge for users, a technology solution that primarily supports the knowledge creation process is preferred to one that supports only the knowledge sharing process.
In this system, users are required to send their request for solution or idea contribution through the knowledge services layer.After all the request is solved, it will be stored in the KMS for future reference.The evaluation done by twenty one respondents (maintainers, administrator, and customers) as mentioned as above, agreed that the developed system fulfil the need of KMS in SM.From the survey that is using the questionnaires as listed the items as below [Item (a) until (d)], we have found that the KMS in SM is very helpful for several purposes: a) Reduce time to find expert which is time consuming.It is also a good tool for sharing pieces of code, patterns, and reusable components with others.
b) Reward System is encouraging people to contribute knowledge.
c) The stored knowledge can be analyzed and historical data can be keep late it be from the past for future reference.
d) KMS Architecture plays an important role to ensure a successful implementation of SM.

Conclusion and Future Work
Knowledge is a crucial resource for organization.It allows companies to fulfil their mission and become more competitive.The management of knowledge and how it can be applied to software development and maintenance has received little attention from software engineering research community so far.However, software organization generates a huge amount of knowledge that should be stored and processed.In this way, they would obtain more benefits from it.
The main contribution of this study is the application of KMS architecture in software maintenance environment which considers the processes of a knowledge life cycle such as creating, maintaining, sharing and distributing knowledge.Furthermore, the study also in charge of storing and managing information, expertise and lessons learned which are generated during the software maintenance process.The system facilitates the reuse of good solutions and the sharing of lessons learned.Thereby, the costs in time and effort should decrease.Additionally, in this study, the author has applied the architecture proposed by Chua (2004) which has the interface, application and repository layer.
The project implementation has initiated some ideas in setting up the KMS in SM, as a knowledge repository for the new maintainer or programmer in an organization.The implementation of the KMS in SM may vary from organization to organization.It can be further continuously refined and evaluated with the real user's participation from each cycle in software development process.It is hope that real user evaluation will provide more valuable input to the refinery of KMS in SM.KMS can be a source of knowledge that can be used by new comer of an organization in finding solution to their problem during SD.So that previous mistake won't be repeated.By referring to KMS in SM this can help the management to reduce cost in hiring expert to solve similar problem faced during previous project.
The main contribution of this project is to apply KMS architecture in SM and therefore build a central repository for SM.The prototype system is a type of knowledge portal (k-portal) only provides an initial demonstration applying the architecture of KMS for SM.Therefore, for future development there is a need to focus on developing an autonomous agent which in charge of giving an appropriate electronic format to experiences obtained so that they can be stored in a knowledge base to aid retrieval.Besides that future work should have an agent which able to collect information for example data, models and experience from different knowledge sources.Furthermore, searcher agent should also be included into a k-portal in order to take charge and produce a recommendations or suggestion with certain goal of helping users to perform their tasks by reusing lessons that is already learnt.Additionally, future development also should include the collaborative environment where expert can refined the available solution that has been already in the system at anytime and anywhere.

Presentation Services Knowledge Services
Infrastructure Services

Figure
Figure 2. KMS Architecture