Go home now Header Background Image
Search
Submission Procedure
share: |
 
Follow us
 
 
 
 
Volume 9 / Issue 7 / Abstract

available in:   PDF (134 kB) PS (234 kB)
 
get:  
Similar Docs BibTeX   Write a comment
  
get:  
Links into Future
 
DOI:   10.3217/jucs-009-07-0641

Organizing the Knowledge Used in Software Maintenance

Márcio Greyck Batista Dias
(Universidade Católica de Brasília, Brazil
myck@brturbo.com)

Nicolas Anquetil
(Universidade Católica de Brasília, Brazil
anquetil@ucb.br)

Káthia Marçal de Oliveira
(Universidade Católica de Brasília, Brazil
kathia@ucb.br)

Abstract: Knowledge engineering emerged as a very promising area to help improve software engineering practice. One of its possible applications would be to help in solving the numerous problems that affect the software maintenance activity. Maintainers of legacy systems developed years ago with obsolete techniques and tools, and not documented, need all kinds of knowledge (application domain, programming skills, software engineering techniques, etc.) It is generally assumed that formalizing all this knowledge and recording it would be a worthwhile effort. However, research is still in a early stage and numerous questions need to be answered: What knowledge should be targeted first? Where to find this knowledge? etc. To answer these questions, one needs a precise understanding of what knowledge is at stake here. We, therefore, propose an ontology of the knowledge needed to perform software maintenance. This ontology would be most useful as a framework for future research in knowledge engineering for software maintenance.

Keywords: ontology, software maintenance, knowledge management.

Categories: K.6.3, D.2, D.2.7, D.2.9

1 Introduction

Knowledge management techniques are raising great expectation in the software engineering community. Of particular interest are the possibilities that knowledge management opens to solve the numerous problems in maintenance. Software maintenance must still cope with systems developed years ago, with languages and processes now considered deficient, for computers with severe limitations imposing convoluted algorithms. This is a knowledge intensive activity, maintainers needs knowledge of the application domain, of the organization using the software, of past and present software engineering practices, of different programming languages (in their different versions), programming skills, etc. Concurrently a recurring problem of software maintenance is the lack of system documentation. Studies report that 40% to 60% of the software maintenance effort is devoted to understanding the system [Pfleeger 2001] (p.475), [Pigoski 1996] (p.35).

Page 641

To help maintainers face these difficulties, one could envision specialized tools providing easy access to the various domains of knowledge required. However there is no clear, exhaustive definition of what knowledge would be useful to perform software maintenance. In this paper we describe our research in the identification and organization of this knowledge using ontology.

This work is part of a long-term project that aims at building a knowledge management system to assist in the software maintenance activities (e.g., system investigation, postmortem project review, etc.). This system will address the main requirements for promoting knowledge management in an organization as emphasized by [Rus and Lindvall, 2002]: first, to access domain knowledge, not only knowledge about software engineering itself (in our case specifically maintenance) but also knowledge about the domain for which the software is being developed/maintained; second, to share knowledge about local policies and practices, since new developers/maintainers in an organization need knowledge about the existing software base and local programming conventions; third, to know who knows what, for efficiently staffing projects, identifying training needs, and matching employees with training offers; fourth, to collaborate and share knowledge, independently of time and space. With these needs in mind we started our research in knowledge organization focusing specifically on software maintenance.

In the following sections we first discuss the importance and problems of software maintenance (section 2). In section 3, we give a short definition of ontology, what are its possible uses and how it may be build. Section 4 is the core of the article with the presentation of the ontology for maintenance. Then in section 5, we discuss the evaluation of this ontology. Finally, we discuss related work in section 6 and conclude in section 7.

2 Software Maintenance

The last decade or so has seen huge progress in software development techniques: new processes, languages, tools, etc. have been proposed and adopted. Software maintenance, on the contrary, seems to lag behind: "this extremely relevant subject receives relatively little attention in the technical literature" (R.S. Pressman in the foreword of [Pigoski 1996]). Systematization of maintenance is difficult because it is fundamentally a reactive activity, hence more chaotic than development. Maintenance results from the necessity of adapting software systems to an ever-changing environment. In most cases, it can be neither avoided nor delayed much: One has little control on the promulgation of new laws or on the concurrence's progresses. Organizations must keep pace with these changes, and this often means, modifying the software that support their business activities.

As a consequence, software maintenance happens in a relatively disorganized way and naturally leads to the deterioration of software systems' structure (Lehman's second law of software evolution [Lehman 1980]). This gradual loss of structure is as much the result as the cause of the lack of knowledge maintenance teams have on the software systems they work on. Lacking a complete knowledge of all the implementation details, they apply modifications that will result in a loss of structure, which in turn makes the systems more difficult to understand fully and therefore to maintain.

Page 642

To break this vicious circle we aim at developing a knowledge management approach for software maintenance. One of the first steps of our research was to identify what knowledge is needed during maintenance and formalize it in an ontology.

3 Ontology Definition and Methodology

An ontology is a description of entities and their properties, relationships, and constraints [Grüninger and Fox 1995]. Ontologies can promote organization and sharing of knowledge, as well as interoperability among systems. There are various methodologies to design an ontology (e.g. [Grüninger and Fox 1995]), all consider basically the following steps: definition of the ontology purpose, conceptualization, validation, and finally coding. The conceptualization is the longest step and requires the definition of the scope of the ontology, definition of its concepts, description of each one (through a glossary, specification of attributes, domain values, and constraints). It represents the knowledge modeling itself.

We defined our ontology using theses steps. The purpose is to define an ontology describing the knowledge relevant to the practice of software maintenance. The conceptualization step was based on a study of the literature and the experience of the authors. We identified motivating scenarios and competency questions (i.e., requirements in the form of questions that the ontology must answer [Grüninger and Fox 1995]). It resulted in a set of all the concepts that will be presented in the next section. The validation will be discussed in section 5. The formalization was done using first order logic. There are various editing tools available to describe an ontology (see for example [Staab et al. 2000], [Grosso et al. 1999], [Domingue 1998]), each one using a specific language and having particular features. In this first work, we chose to focus on the identification of the knowledge itself, and did not study any of these tools. We opted for a manual representation of the ontology, which should be later entered into one of these tools. For the same reasons, we described the constraints on relations and concepts, in first order logic.

4 An Ontology for Software Maintenance

We started the ontology construction by looking for motivating scenarios where the knowledge captured would be useful. Some of those scenarios are: deciding who is the best maintainer to allocate to a modification request, based on her-his experience of the technology and the system considered; learning about a system the maintainer will modify (which are its documents and components and where to find it); defining the software maintenance activities to be followed in a specific software maintenance, and also the resources necessary to perform those activities.

These and other situations induced us to organize the knowledge around five different aspects [see Figure 1]: knowledge about the Software System itself; knowledge about the Maintainer's Skills; knowledge about the Maintenance Activity; knowledge about the Organizational Structure; and knowledge about the Application Domain. Each of these aspects was described in a sub-ontology. For each one of the sub-ontologies we defined competency questions [see Section 3], captured the necessary concepts to answer these questions, established relationships among the concepts, described the concepts in a glossary and validated them with experts.

Page 643

Figure 1: Ontology overview

To express the constraints over the concepts and relations, we defined 53 axioms in first order logic. These do not include axioms formalizing the specialization and composition relationships (i.e. axioms for the "is_a" and "has_a" relations). Some examples of axioms will be presented in the description of each sub-ontology.

Building such an ontology is a significant work. We spent three months to define it, the main investigator working part-time, and the two others participating in weekly validation meetings. Our first difficulty was to define clearly what was to be the focus of the ontology. This was solved defining scenarios (see beginning of the section) for the use of the knowledge. A second difficulty was to review the relevant literature in search of definitions and validation of the concepts. In this phase, we deemed important to base each and every concept on independent sources from the literature. This literature review is summarized in the concept glossary, which will not be presented here for lack of space.

4.1 The System Sub-ontology

The System sub-ontology is one of two sub-ontologies corresponding to the more computer science oriented knowledge. Knowledge about the system is also intuitively fundamental to software maintenance. The sub-ontology is pictured in Figure 21.

The competency questions for the System sub-ontology are: What are the artifacts of a software system? How do they relate to each other? Which technologies are used by a software system? Where is the system installed? Who are the software system users? Which functionalities from the application domain are considered by the software system?

Answering these questions led to a decomposition of the software system in artifacts, a taxonomy of those artifacts and the identification of the hardware where the system is installed, its users and the technologies that was used in its development.


[1] In all figures of the sub-ontologies, the default cardin

Page 644

Figure 2: System sub-ontology

The artifacts of a system can generally be decomposed in documentation and software components. Briand [Briand et al. 1994] considers three kinds of documentation: product related, describing the system itself (i.e., software requirement specification, software design specification, and software product specification); process related, used to conduct software development and maintenance (i.e., software development plan, quality assurance plan, test plan, and configuration management plan); and support related, helping to operate the system (i.e., user manual, operator manual, software maintenance manual, firmware support manual).

Page 645

Considering that the software design specification proposed by Briand should represent the behavior and structure of the system and that we can have different abstraction models we refined the software design specification into logical and physical models.

Software components represent all the coded artifacts that compose the software program itself. Booch [Booch et al. 1997] classifies them in: execution components, generated for the software execution; deployment components, composing the executable program; and work product components, that are the source code, the data, and anything from which the deployment components are generated.

All those artifacts are, in some way, related one to the other. For example, a requirement is related to design specifications, which are related to deployment components. We call this first kind of relation realization, relating two artifacts of different abstraction levels. Another relation between artifacts is a correlation between artifacts at the same abstraction level. And finally, artifacts may be composed of other artifacts (e.g. one document may be composed of several parts).

Other relations in this sub-ontology are: the software system is installed on some hardware, the system may interact with other systems, the user interacts with the software system, the system implements some domain tasks to be automated (the functionalities of the system), and finally, the software requirement specifications describe these domain tasks. To express the constraints over the relations (e.g. realization or correlation) we defined a set of axioms like ( a1,a2) (correlation(a1, a2) requirementspec(a1) -> requirementspec(a2) and ( a1,a2) (realization(a1, a2) requirementspec(a1) -> requirementspec(a2)). The fist one specifies that if a1 is a requirement specification and a1 correlated to a2, then a2 must also be a requirement specification (i.e. the correlation relation stands between artifacts of the same type). Similarly, the second axiom specifies that realization may only stand between two artifacts of different kind.

4.2 The Skills Sub-ontology

Figure 3 shows the second sub-ontology, on the skills in computer science needed by software maintainers. A scenario of use would be to be able to select the best participants for a given type of maintenance. Some competency questions we identified are: What kind of CASE tools does the software maintainer know? What kind of procedures (methods, techniques, and norms) does s-he know? What programing and modeling languages does s-he know?

There are several things a maintainer must know or understand to perform his-her task adequately: s-he must know (be trained in) the specific maintenance activity s-he will have to perform (e.g. team management, problem analysis, code modification), the hardware the system runs on, and various computer science technologies (detailed below). Apart from that, the maintainer must also understand the concepts of the application domain and the tasks performed in it. To express those relations, we defined axioms like: ( m) (maintainer(m) -> ( t) (tecnology(t) knowCCT (m,t)) and ( m) (maintainer(m) -> ( a) (maintenanceActivity(a) knowsActivity(m, a)) (any maintainer knows at least one tecnology and one activity).

Page 646

Figure 3: Skills sub-ontology

There are four computer science technologies of interest: possible procedures to be followed, modeling language used (e.g. the UML), CASE (Computer Aided Software Engineering) tools used (for modeling, testing, suporting or developing), and finally the programming language used in the system.

Page 647

According to [Kitchenham et al. 1999] procedures are all structured descriptions used in a software development activity like methods (kind of sistematic procedures with semantic and syntatic definitions to be followed), techniques (sistematic procedures less formal and rigorous than a method), and directives (standards like guidelines or norms in an organization). Based on [Chandra and Ramamoorthy 1996],[Leffingwell and Widrig 2000], [Pressman 2001], we classified the techniques in: (a) requirement elicitation, procedures to assist in the identification of the requirents (e.g., interviews, brainstorming, etc.); (b) modeling, procedures, using specific modelling languages, to assist in the definition of a sistematic solution for the problem (classified in analysis and design); (c) programming, procedures for coding (e.g., structured or object oriented programming); (d) testing, procedures for testing the software (e.g., white or black box techinique); and (e) maintenance support, procedures to assist in the modification of a program (classified in reverse engineering, re-engineering, impact analysis and program compreension tecniques [Pigoski 2001]).

Pressman [Pressman 2001] gives a very complete list of CASE tools, with tools for modelling, used for the design model definition according to a specific modelling language; testing, used to define and control tests for a system; developing, that is the Integrated Development Environment (IDE - with compiler, debugger, and editor), and supporting, the execution, documentation, or configuration management. The execution supporting CASE tools represent any tool that can be used in some way during the system's execution like data base management systems, utilities, and system's software (computer network, operational system and all middleware).

4.3 The Modification Process Sub-ontology

Figure 4 shows the concepts of the Modification Process sub-ontology. Here, we are interested in organizing concepts from the modification request (and its causes) to the maintenance activities. Possible competency questions are: What are the types of modification requests? Who can submit them? What are their possible sources? What are the activities performed during maintenance? What does one need to perform them? Who perform them? What do they produce?

According to [Pigoski 1996], a maintenance project originates from a modification request submited by a client. The requests are classified either as problem report, describing the problem detected by the user, or enhancement request, describing a new requirement. Pigoski also lists the different origins of a modification request (where the problem was detected or the new requirement originates): on-line documentation (like helps and tool tips), execution (features about the execution of the system itself, like performance, instability), architectural design (like dynamic library reuse), requirement (change in a requirement or a specification of a new one), security (like not allowed access), interoperability (features related with the communication with others systems) and data structure (like structure of data files or data bases). One or more modification requests generate a maintenance project that will be composed of different software maintenance activities.

Page 648

Figure 4: Modification Process sub-ontology

Based on [Briand et al. 1994], [Kitchenham et al. 1999], and [Pigoski 1996] we classified the maintenance activities in the following types: (a) investigation activity, assessing the impact of undertaking a modification; (b) management activity, relating to the management of the maintenance process or to the configuration control of the products; (c) quality assurance activity, aiming at ensuring that the modification does not damage the integrity of the product; and (d) modification activity, which may be a corrective maintenance or enhancement maintenance (adaptative maintenance, preventive or perfective maintenance).

Page 649

A maintenance activity uses one or more input artifacts and affects one or more output artifacts, it is inserted in a sequence of activities (and therefore has preceeding activities), it addresses some maintenance origin (already detailed), uses hardware resources, and uses some computer science technologies. Axioms are used for example to specify that the maintenance activities or ordered: ( a1, a2) (preactivity (a1, a2) -> preactivity (a2, a1 )) and ( a1, a2, a3) preactivity (a1, a2) -> preactivity (a2, a3) preactivity (a1, a3)) (expressing the anti-symetry and transitivity on the ordering of activities).

Finally, different people (human resource) can participate in these activities (from [Briand et al. 1994], [Kitchenham et al. 1999], [Pigoski 1996] and [IEEE-12119 1998]): software engineers (supplier or maintainer, respectively, who developed and maintain the system), maintenance manager, and client's human resources (client, who pays for the modification, and user, who uses the system).

4.4 The Organizational Strucuture Sub-ontology

The fourth sub-ontology, on the organizational structure, is pictured in Figure 5. We considered a traditional definition of an organization (see for example [Fox et al. 1996]) composed of units where different functions are performed by human resources. We also included the fact that an organization defines directives to be followed in the execution of the tasks. Our goal here was not to define all possible aspects of an organization, but only to define that the maintenance is an activity performed by people in some organizational unit that compose the whole organization with its own rules.

To define the scope of this sub-ontology we set the following competency questions: What organizational units compose the organization? What positions exist and who occupies each position? What directives does the organization adopt? How do the organizations relate one to the other?

Figure 5: Organizational Structure sub-ontology

Page 650

Based on [Fox et al. 1996] and [Uschold et al. 1995] we defined that any organization adopts its own directives and defines the positions to be occupied by a humam resource. Also, organizations can collaborate with each other and each one is composed of organizational units. Those organizational units are organized in a hierarchical structure where one is composed of other ones.

4.5 The Application Domain Sub-ontology

Finally the fifth sub-ontology [Figure 6] organizes the concepts on the application domain. The competency questions are: What concepts and tasks compose an application domain? What are the properties of each concept? How do the concepts relate one to the other? What concepts are used in each task? What restrictions apply to the application domain?

We choose to represent it at a very high level that could be instantiated for any possible domain. We actually defined a meta-ontology specifying that a domain is composed of domain concepts, related to each other by relations and having properties which can be assigned values and restrictions that defines constraints for the concepts. This meta-ontology would best be instantiated for each application domain with a domain ontology as exemplified in [Oliveira et al. 1999]. We also considered that the concepts in an application domain are associated with the tasks performed in that domain and those tasks are regulated by some restrictions.

Figure 6: Application Domain sub-ontology

5 Ontology Validation

With the ontology defined, we started its validation in two ways: validation of the quality of the ontology itself (how clear it is, how complete, concise, etc.), and validation of the usefulness of the concepts for maintenance (which was the ontology's purpose as specified in Section 4).

In this section we present how we validated the ontology in these different ways.

Page 651

5.1 Quality Assessment

To validate the quality of the ontology we considered the six following desirable criteria (see for example [Gruber 1995] and [Gómez-Pérez 1995]): (a) consistency, refering to the absence (or not) of contraditory information in the ontology; (b) completeness, refering to how well the ontology covers the real world (software maintenance for us); (c) conciseness, refering to the absence (or not) of needless information or details; (d) clarity, referring to how effectively the intended meaning is communicated; (e) generality, refering to the possibility of using the ontology for various purposes inside the domain fixed (software maintenance); and (f) robustness, referring to the ability of the ontology to support changes.

To evaluate these criteria, we asked four experts to study the ontology and fill a quality assessment report composed of several questions for each criterion. These people were chosen for their large experience in software maintenance or for their academic background. The evaluations were good, as may be seen in Figure 7, on a scale of 0 to 4 no criterion has an average below 3.

Figure 7: Result of the ontology's quality assessment

This evaluation was useful in pointing out specific problems. For example, we had not included a relation to specify that software systems may interact between themselves, the CASE taxonomy (Skills sub-ontology) did not contemplate utility tools for execution, some definitions were not clear (this is the main reason behind the lower score of the Modification sub-ontology), or some restrictions were not expressed.

Besides the expert assessments experiment, we also checked the completeness and conciseness of the ontology by instantiating the concepts from the documentation of a real software system to. This documentation came from the development of the system as well as from past maintenances. Table 1 shows the number of concepts that were instantiated for each sub-ontology.

Table 1: Number of concepts instantiated from the study of the documentation of one system

One may observe that 26 concepts from the ontology were not instantiated. There are various explanations for this:

Page 652

  • Two concepts from the Application Domain sub-ontology were not instantiated because they were not identified when we did the experiment. They were added after the first quality assessment. However, a later rapid survey of the same documentation allowed us to locate instances of these concepts.
  • Five concepts from the Skills sub-ontology were not instantiated because the organization does not have the technical competencies to perform them (e.g.: reverse engineering technique). One concept (modelling language) was not instantiated because the maintenance activities were specified in (structured) natural language and, although this is a debatable question, we decided at the moment, not to consider this as a modelling language. Two more concepts (method and guidelines) were not instantiated because the organization ceased to use any maintenance process after a change in the management. The concept: CASE for modelling, was not instantiated because the organization does not have the necessary resources to invest in this type of tool. Finally a tenth concept (utility) was not present in the ontology when we did the test. As for the other cases, we have proofs of their existence in the organization studied.
  • Three concepts from the Modification ontology were not instantiated for lack of enough examples. There were only examples of perfective maintenance and no corrective, preventive or adaptative maintenance. For the same lack of example, three possible causes for a maintenance operation were not found: security, architectural design and on-line documentation.
  • In the System sub-ontology, one concept was not instantiated for the same reason: The maintenance examples we studied did not include any reference to the product specifications. The system studied was produced internally, thus having no reference to an external provider. Another concept, hardware manual, is handled by a different unit of the organization. And finally, four concepts (development, configuration plan, quality plans, maintenance manual) were not instantiated after the organization ceased to use any maintenance process, as already mentioned earlier.

Page 653

It must be noted that the fact that a concept was instantiated here does not say whether it is useful for maintenance or not, but only that it was found in the documentation.

5.2 Usefulness Assessment

One of the main objectives of the ontology was to represent the knowledge useful to maintenance. The preceding section presents results from the assessment of the quality of the ontology in representing knowledge. In this section we present a validation of the usefulness of the concepts represented for maintenance. To do so, we realized two types of experiment: observing maintainers while they were maintaining a system, and presenting the instantiated knowledge to the software engineers and asking them what concepts they used.

For the first experiment we used a protocol called think-aloud [Lethbridge et al. 1996] where the maintainers were asked to say everything they did and why they did it. These sessions were recorded and later transcribed on paper to be analyzed. During the analysis, we tried to identify the kind of knowledge that the software engineers were using at each moment based on the defined ontology. Two maintainers participated in this experiment, doing five sessions for a total of 132 minutes (26 minutes per session on average).

In the second experiment, the ontology was presented and explained to the software maintainers and they were asked to fill in, every day, a questionnaire on the concepts they used. This form consisted of all the concepts we had instantiated previously [section 5.1] and the list of their instances (as we identified them). The maintainers were simply asked to tick the instances they had used during the day. They could not add new instances. The experiment was done with three maintainers and one manager. They filled 17 forms in 11 different days over a period of 10 weeks.

The results of these two experiments are given in Table 2. One may observe that there are a lot less concepts used in the first one than in the second. One reason for this is that there were fewer sessions in the first experiment and they were mostly short punctual maintenance.

All uses of concepts detected in the first experiment were also found in the second one, it did not bring in any new instances. From this and the results in Table 2, one can deduce that only six concepts instantiated in the previous section (5.1) were not found here:

  • Analysis technique and requirement specification technique (Skills sub-ontology) were not used because the maintenance operations were relatively simple and restricted to small modifications to the source code. Therefore, no high level analysis was required.
  • For the same reason, the requirement specifications (System sub-ontology) was neither studied nor modified.
  • The creation, modification and distribution of all support documentation (including user manual and operation manual, the three of them being in the System sub-ontology) falls under the responsibility of another organizational unit, therefore the software engineers we studied need not know about them or use them.

Table 2: Number of concepts used in two experiments

Page 654

6 Related Work

As seen in section 3, our investigation of the knowledge necessary to perform maintenance included the definition of an ontology for maintenance. Before developing it, we studied the literature on knowledge-based approaches to software maintenance. The following publications were found to be relevant to our research and greatly helped in the definition of the ontology although they did not solve completely our problem.

There are various propositions of mental models to describe how software engineers go about doing maintenance [Rugaber and Tisdale 1992], [von Mayrhauser and Vans 1994]. They offer little interest since they concentrate on the process of doing maintenance rather than on the knowledge used.

In [Ramal et al. 2002], one of us started to study the knowledge used during software maintenance. This earlier work contained a very crude identification of various knowledge domains connected with this activity. The domains identified were: Computer Science Domain, Application Domain and General Domain (common sense knowledge). The current research is a follow-up on the preceding paper and describes the result of our efforts to formally and completely identify the knowledge useful during software maintenance.

In [Clayton et al. 1998], the authors studied "the knowledge required to understand a program". Knowledge is classified in 3 domains: Domain knowledge (numerical analysis in this case), Fortran knowledge and programming knowledge. The first one corresponds to our Application Domain sub-ontology, and the two others fall into our Skills sub-ontology. The problem of this study is that it concentrates specifically on program comprehension which is just one of the many tasks performed when maintaining a system. Also, it is based on a toy program (102 lines of Fortran) in conditions that do not resemble real world maintenance environment.

Briand and his coleagues [Briand et al. 1994] identified factors that could influence the quality and productivity of software maintenance. The work is interesting because it includes various taxonomies of important concepts as: maintenance methods and tools, maintenance documentation, human mistakes, process failures, and maintenance teams. Although the focus of this work was not on knowledge it offers valuable insights on concepts that are important to maintenance (e.g.: methods and tools taxonomy, documentation taxonomy) as well as explicit classification of these concepts. We reused several of their taxonomies in our ontology.

Page 655

Deridder, [Deridder 2002], proposes to help maintenance using a tool that would keep explicit knowledge about the application domain (in the form of concepts and relations between them) and would keep links between these concepts and their implementation. He follows a trend of thought very similar to ours, but concentrates exclusively on application domain knowledge whereas we identified four other sub-ontologies that had useful concepts in them. Also, he concentrates on how to acquire and use this knowledge rather than extensively identify it (which would actually depend on every single application domain).

Finally, Kitchenham et al. in [Kitchenham et al. 1999] designed an ontology of software maintenance. In this ontology, they identified all the concepts relevant to the classification of empirical studies in software maintenance, these concepts are classified along four main axes: the People, the Process, the Product, and the Organization. These four axes correspond respectively to our Skills, Modification, System, and Organizational Structure sub-ontologies. This was one of the most inspiring work for us and we reused many of its concepts, however due to the particular focus they had when identifying these concepts (providing a framework to help categorize empirical studies on software maintenance), we felt that many concepts were either over or under detailed. The most striking evidence of this is the idea of application domain which we developed as a sub-ontology, whereas it is only included in Kitchenham's work as an attribute of the software system.

7 Conclusion

In this article, we presented some results from our research on the knowledge useful to software maintenance. Following a recent trend in software engineering, we believe that a knowledge based approach could help solve the difficult problems faced by software maintenance: poor documentation, lack of knowledge about the system maintained from the maintenance teams, poor quality of the code after numerous modification. We defined an ontology of the knowledge used in software maintenance.

This ontology would be useful as a framework to guide future research trying to improve software maintenance using knowledge engineering techniques. It could be the base of studies to answer questions as: What knowledge should be taken into account when considering software maintenance? What kind of knowledge is most important? etc. Our ontology was based both on expert experience and a study of the relevant literature.

This research is intended to be the base of a long-term project aiming at building a knowledge-based environment to help software maintenance. Future work includes:

  • Better evaluation of the usefulness of the concepts contained in the ontology (we are conducting futher validation experiment).
  • Investigating the possibility of designing manual procedures (process) to populate the ontology.
  • Investigating the possibility of creating (semi-)automated tools to assist in populating the ontology from existing systems.
  • Page 656

  • Build a maintenance assistant tool, which would help managers and maintainers, perform their task and look for needed knowledge. This tool would use the ontology as a framework to define the knowledge base.

Acknowledgments

We acknowledge CNPq - Brazilian Research Council for the financial support to this project.

References

[Booch et al. 1997] Booch, G., Rumbaugh, J., Jacobson, I.: "The Unified Modeling Language -User Guide"; Addison-Wesley, 1997.

[Briand et al. 1994] Briand, L. C., Basili, V., Kim, Y., Squier, D. R.: "A Change Analysis Process to Characterize Software Maintenance Projects"; Proc. The International Conference on Software Maintenance, 1994.

[Chandra and Ramamoorthy 1996] Chandra, C., Ramamoorthy, C. V.: "An Evaluation of Knowledge Engineering Approaches to the Maintenance of Evolutionary Software"; Proc. 8th Software Engineering An Knowledge Engineering Conference, Nevada, USA, p.181-188, Jun . 1996.

[Clayton et al. 1998] Clayton R., Rugaber S., Wills L: "On the Knowledge Required to Understand a Program"; Proc. Working Conference on Reverse Engineering, p. 69-78, Oct. 1998.

[Deridder 2002] Deridder, D.: "Facilitating Software Maintenance and Reuse Activities with a Concept-oriented Approach"; Programming Technology Lab, Vrije Universiteit Brussel, Brussels, Belgium, 2002.

[Domingue 1998] Domingue, J.: "Tadzebao and WebOnto: Discussing, Browsing, and Editing Ontologies on the Web"; 11th Knowledge Acquisition for Knowledge-Based Systems Workshop, Banff, Canada, Apr. 1998.

[Fox et al. 1996] Fox, M. S., Barbuceanu, M., Gruninger, M.: "An Organization Ontology for Enterprise Modeling: Preliminary Concepts for Linking Structure and Behaviour"; Computers in Industry, v. 29, p.123-134, 1996.

[Gómez-Pérez 1995] Gómez-Pérez, A: "Some Ideas and Examples to Evaluate Ontologies". 11th Conference on Artificial Intelligence for Applications, p.299-305, 1995.

[Grosso et al. 1999] Grosso, W.E., Eriksson, H., Fergerson, R.W., Gennari, J.H., Tu, S.W., Musen, M.A.: "Knowledge modeling at the millennium (the design and evolution of Protégé-2000)"; 12th Banff Workshop on Knowledge Acquisition, Modeling, and Management, Banff, Alberta, 1999.

[Gruber 1995] Gruber, T. R.: "Toward Principles for the Design of Ontologies Used for Knowledge Sharing". Int. J. Hum. Comput. Stud., 43(5/6): 907-928, 1995.

[Grüninger and Fox 1995] Grüninger, M., Fox, M. S.: "Methodology for the Design and Evaluation of Ontologies"; Technical Report, University of Toronto, Toronto, Canada, 1995.

[IEEE-12119 1998] IEEE-1219: "IEEE Standard for Software Maintenance". Los Alamitos, CA: IEEE Computer Society Press, 1998.

Page 657

[Kitchenham et al. 1999] Kitchenham, B. A., Travassos, G. H., Mayrhauser, A. et al.: "Toward an Ontology of Software Maintenance"; Journal of Software Maintenance: Research and Practice 11(6):365-389, May 1999.

[Leffingwell and Widrig 2000] Leffingwell, D., Widrig, D.: "Managing Software Requirements: A Unified Approach", Addison-Wesley, 2000.

[Lehman 1980] Lehman, M.: "On understanding Laws, evolution and conversation in the large program lifecycle"; Journal of Software & Systems, vol. 1, p.213 - 221, 1980.

[Lethbridge et al. 1996] Lethbridge, T. C., Sim, S. E., Singer, J.: "Software Anthropology: Performing Field Studies in Software Companies"; Consortium for Software Engineering Research (CSER), 1996.

[Oliveira et al. 1999] Oliveira, K., Rocha, A., Travassos, G. H., Menezes, C: "Using Domain-Knowledge in Software Development Environments"; Proc. Software Engineering and Knowledge Engineering, p. 180-187, Kaiserlautern, Germany, Jun. 1999.

[Pfleeger 2001] Pfleeger, S. L.: "Software Engineering: Theory and Practice"; 2nd Edition. New- Jersey, Prentice Hall, 2001.

[Pigoski 1996] Pigoski, T. M.: "Practical software maintenance: best practices for managing your software investment"; John Wiley & Sons. P.87-102, Dec. 1996.

[Pigoski 2001] Pigoski, T. M.: "Software maintenance"; In: Guide To The Software Engineering Body Of Knowledge; Los Alamitos, CA: IEEE Computer Society Press. Trial Version 1.00, May, 2001.

[Pressman 2001] Pressman, R. S.: "Software Engenieering"; 5th Edition, p.225-241, McGraw Hill, 2001.

[Ramal et al. 2002] Ramal, M. F., Meneses, R., Anquetil, N.: "A Disturbing Result on the Knowledge Used During Software Maintenance"; Proc. Working Conference on Reverse Engineering, Richmond, p. 277-287, Oct-Nov. 2002.

[Rugaber and Tisdale 1992] Rugaber, S., Tisdale, V. G.: "Software Psychology Requirements for Software Maintenance Activities"; Software Engineering Research Center, Georgia Institute of Technology, 1992.

[Rus and Lindvall, 2002] Rus, I., Lindvall, M.: "Knowledge Management in Software Engineering"; IEEE Software, v. 19, n. 3, p.26-38, May/Jun 2002.

[Staab et al. 2000] Staab, S., Erdmann, M., Maedche, A., Decker, S.: "An Extensible Approach for Modeling Ontologies in RDF(S)"; ECDL 2000 Workshop on the Semantic Web, 2000.

[Uschold et al. 1995] Uschold, M., King, M., Moralee, S. et al.: "The Enterprise Ontology"; The Knowledge Engineering Review, v.13, 1995.

[von Mayrhauser and Vans 1994] Von Mayrhauser A., Vans A.: "Dynamic Code Cognition Behaviors For Large Scale Code", Proc. Workshop on Program Comprehension, p. 74-81, IEEE Comp. Soc. Press, Nov. 1994.

ality for the relations is 0,n. Cardinality is only represented when it differs from this default.

Page 658