
People working in the Software Engineering field must solve problems every day to get their work done. For successful problem solving, they need to find others with specific experience. To help individuals with this, we created an 'Experience Broker' role in the organization. The broker must be officially recognized, and function as a facilitator for the internal human network in the organization. Our approach to the 'Experience Factory', what we call the 'Experience Engine', focuses on mediating referrals to sources holding the correct expertise-usually human sources. We claim that the most valuable experience is tacit and stored on the individual level. The most valuable experience transfer comes while on the job when the person holding the experience verbally relates to the learner directly. Getting the right context for this experience transfer is difficult without direct contact between the person with the experience and the recipient. Experience is transferred at the right time when the learner is actually working on something that concerns it. Values must be rooted in the organization, where individuals are willing to spend the necessary (most often short) time to spread valuable experiences to others in the organization. Our pilot project showed that a measurement and database approach is less valuable than individual face-to-face meetings, to transfer experience.
Reuse of different types of experience is a key issue in successful improvement in software engineering. The approach taken in the Quality Improvement Paradigm (QIP) and its supporting organisation, the Experience Factory (EF), is to define an Experience Base (EB), where all types of reusable objects are organised and stored. The objects may be of any type related to software development, for example, code, methods, quality models and specifications. Furthermore, not only objects identical to the target object needed can be reused, but also similar ones. This paper defines important concepts in a reuse context, elaborates a reuse scenario from which the requirements for the implementation of an Experience Base are derived. A list of 22 technical requirements is defined which cover the functional aspects related to the use of an Experience Base. The evaluation of three alternative implementation approaches are presented as an example: two database alternatives and one based on Case-Based Reasoning (CBR). Future work is to investigate the costs for extending the functionality to fulfil the requirements and to use the requirements in a real setting.
Experience and knowledge management are seen as key capabilities for systematic software development and process improvement. However, it is still not quite clear, how to get this vision to work. In this paper, a process for systematic experience transfer is presented. It covers the activities of experience acquisition, experience documentation and evolution, and experience reuse. This process is a result of the German publicly-funded project SoftQuali, and its practical use is demonstrated by two real project examples, dealing with experience transfer for software inspections. In general it is described how experience can be packaged, both to transfer the technique and to improve it.
Software engineering can benefit very much from customised knowledge management solutions. These should rely on reusable experience that is modelled explicitly and stored in central repositories. Few approaches exist yet that provide such knowledge management support to software engineering. Those that support it cover usually only part of the knowledge management lifecycle of the reusable artefacts. This paper suggests a knowledge management lifecycle for experience about software engineering technologies and their application contexts. It primarily aims at supporting the planning of software projects and improvement programmes. The lifecycle model is substantiated by a tool implementation and evidence form an industrial trial application.
For the successful reuse of software engineering know-how in practice, useful and appropriate experienceware has to be retrieved from a corporate memory. As support is required for different processes, purposes, and environments, with usefulness of retrieved experiences depends mainly on the particular reuse situation. Thus, a flexible retrieval method and similarity measure is required, which can continuously be tailored to specific situations based on feedback from its application in practice. This paper proposes a case-based approach for the retrieval of software engineering experienceware taking into account those specific characteristics of the software engineering domain, such as the lack of explicit domain models in practice, diversity of environments and software processes to be experiences. The approach is illustrated through its application in the REMEX system, a prototypical Experience Base application for the experiencebased support of the planning of software measurement programs.
Total Quality Management (TQM) in various forms has for decades proved successful in improving productivity; continuous improvement and learning being essential tools also in Det Norske Veritas (DNV). Our suggestion for any improvement system is 1) Adjust ambitions to the sociopsychological climate in a unit before embarking on the explicit improvement road. 2) Without the backing of other managers, solutions may create harm rather than improvements 3) In a small unit, sophistication of the information technology will have insignificant effects 4) Align the reward mechanisms closely with what is to be achieved. 5) First analyse information that is collected for other primary purposes; then consider creating supplementing systems. This is based on our experience as a Quality System Advisor and Lead Auditor as well as with the Total Quality Management (TQM) practice of Det Norske Veritas (DNV). An improvement process was created and used for 9 months in a small unit in 1995–1996. No sophisticated technology was used. Many improvements took place in the 9 month period the system was operated, however it is questionable whether the success matched the expense (time, frustration, interpersonal friction, unrest). In this paper we describe the life and death of a small scale experience-database.
An overview of the recent trends in modern enterprises motivates the central requirements for knowledge management and its support by information technology. We illustrate proactive knowledge delivery and context-sensitive information retrieval by presenting the KnowMore system. This prototype realizes active support by providing relevant information to current tasks in enterprises which are managed by a workflow system. We identify the key concepts which need to be represented in order to deal with the existing heterogeneity. We sketch the architecture of the system and highlight some implementation details.
This progress report describes the introduction of a knowledge management system at sd—a large software house in Germany. It explains the circumstances leading to the implementation of sd&m's knowledge management, the realization process as well as its pros and cons. Today, after nearly two years in operation, we would like to present a first evaluation and some thoughts and ideas for the future.
Today's software developments are faced with steadily increasing expectations: software has to be developed faster, better, and cheaper. At the same time, application complexity increases. Meeting these demands requires fast, continuous learning and the reuse of experience on the part of the project teams. Thus, learning and reuse should be supported by well-defined processes applicable to all kinds of experience which are stored in an organizational memory. In this paper, we introduce a tool architecture supporting continuous learning and reuse of all kinds of experience from the software engineering domain and present the underlying methodology.
Learning from experience gained in past projects is seen as a promising way to improve software quality in upcoming projects. Thus, reusing components to support software development is widely accepted in research and industry. Some approaches even require not only the reuse of (directly) resable components, but, for instance, the reuse of techniques, methods, tools, processes, or even metrics. This calls for a repository that organizes all kinds of reusable elements and offers them, on demand, to the (re-)user in accordance with the applied reuse processes. Furthermore, such a repository should also support processes to learn about, and improve, the quality of its stored artifacts. This paper describes how a comprehensive reuse repository is developed and tailored for an organization. The discussion is detailed by an example, namcly the development of the SFB 501 repository at the University of Kaiserslautern. Resulting structures and aspects of the implementation are discussed.
Individuals learn from experience no matter what they do. But what is natural for an individual is far less straight-forward in groups or companies. There are some suggestions in literature how this hurdle can be overcome: The experience factory is a concept tailored to the software domain. In the tradition of this domain, however, the concepts are generally activity-or organization-focused and only rarely address cognitive issues. At DaimlerChrysler, we were called in to establish experience transfer at the organizational levels in three business units. In three case studies, we saw a recurring pattern of cognitive tasks. While these tasks were carried out quite differently, there is a core to each of them that should not be neglected.
The benefits of an organizational memory are ultimately determined by the usefulness of the organizational memory as perceived by its users. There-fore, an improvement of an organizational memory should be measured in the added perceived usefulness. Unfortunately, the perceived usefulness has many impact factors. Hence, it is difficult to identify good starting points for improvement. This paper presents the goal-oriented method OMI (Organizational Memory Improvement) for improving an organizational memory incrementally from the user's point of view. It has been developed through several case studies and consists of a general usage model, a set of indicators for improvement potential, and a cause-effect model. At each step of the general usage model of OMI, the indicators are used to pinpoint improvement potential for increasing the perceived usefulness and asking the user for specific improvement suggestions where feasible.
The implementation of knowledge management mechanisms to convert individual knowledge into organizational knowledge is important to guarantee business success in the global and dynamic economy. Besides that, there is a trend in the software industry to create a consistent body of software process knowledge across different organizations through the conversion of organizational knowledge into multi- organizational knowledge. Since software organizations do not execute software processes in the same way, the creation of such body of knowledge is a difficult task. This work presents a knowledge acquisition approach aimed to acquire organization members' knowledge and store it in a software process community of practice repository accessible through a Web-based system. The application and evaluation of knowledge captured in the context of a specific organization, and reuse of such knowledge in different contexts provides the means for converting organizational knowledge into multi-organizational knowledge.
Developing and maintaining software systems is a knowledge intensive task. One needs knowledge of the application domain of the software, the problem the system solves, the requirements for this problem, the architecture of the system and how the different parts fit together, how the system interacts with its environment, etc. More often than not, this knowledge is not documented and lives only in the head of the software engineers. It is, therefore, volatile and an organization may repeatedly pay professionals to rediscover a knowledge it previously acquired and lost. In recognition of this fact, knowledge management techniques such as Postmortem Analysis are being used to help salvage this knowledge. Traditionally, Postmortem Analysis has been applied at the end of software development projects with a focus on organizational aspects such as how to improve the execution of a process. In this paper, we present the application of Postmortem Analysis in a new context: for software maintenance projects. We also apply it, not only for process improvement, but to discover knowledge on the software maintained itself.
The Homer help desk support system, developed in the course of the Inreca-II project, is an example of applying Case-Based Reasoning to problems of a software-intensive organization. This paper discusses, in retrospect, Homer with respect to change management processes at DaimlerChrysler and various feedback and learning possibilites that the help desk support system provided for itself, the help desk personnel, and the supported IT infrastructure of the car development department in Sindelfingen.
Knowledge has been thought to be the most important asset in an Organization, having a significant impact on its competitiveness. Software development is knowledge-intensive but software development environments lack from specific support of knowledge management. In this paper, we present an enterprise ontology that supports the development of two case tools: an ’yellow pages’ tool that aims to represent the distribution of knowledge, skills and experiences trough the organizational structure and a tool to support human resource allocation planning in software projects based on the reuse of organizational knowledge about human resource skills and allocation. The work is concerned with Knowledge Management and Enterprise-Oriented Software Development Environments concepts.
In this case study we present the approach, analytical framework, and results from a study of a software development enterprise using an activity theory perspective. The studied company chose to use Unified Process as their software development method at a stage where they were changing from mainframe technology into modern object-oriented technologies. The goal for them was to use a new development project as a tool for learning the technology and Unified Process, in addition to constructing the new software. In our study we have focused on the role of Unified Process in this process, and whether Unified Process had consequences for the development of the project team and the company. Our results indicate that the iterative approach of Unified Process ensures large effects in terms of learning, but Unified Process also improves on communication and work distribution in the company.
The need for organizational learning support is common among all software development companies but is not addressed by agile software methods practitioners. The typical Experience Factory approach to address organizational learning in software companies often stresses structured and explicit knowledge as well as controlled learning mechanisms. In contrast, the Communities of Practice approach relies more on tacit knowledge and self-organization. To bridge the gap between these two conflicting approaches, this paper proposes a suite of lightweight knowledge sharing tools by which software organizations are given the flexibility to control how structured and controlled their learning processes are. Initial results from early evaluations of the proposed tools are also given.
Selection of Commercial-off-The-Shelf (COTS) software products is a knowledge-intensive process. In this paper, we show how knowledge bases can be used to facilitate the COTS selection process. We propose a conceptual model to support decision makers during the evaluation procedures. We then describe how this model is implemented using agent technologies supported by two knowledge bases (KB): the COTS KB and the methods KB. The model relies on group-decision making and facilitated stakeholder negotiations during the selection process. It employs hybrid techniques, such as Bayesian Belief Networks and Game Theory, to address different challenges throughout the process. In addition, the paper also describes how the COTS knowledge base can be used at three levels of usage: global (over the internet), limited (between limited number of organizations) and local (within a single organization).
This paper describes some experiences with the implementation of knowledge management techniques in an agile development department. After placing the discussion in the context of the department tasks and resultant organisation, the experiences in managing the various, software engineering relevant, knowledge types are reviewed. Before drawing conclusions, KM relevant experiences using "agile-compatible" tools are discussed.