Knowledge Management in a Software Development Environment to support Software Processes Deployment Gleison Santos1 , Karina Villela 2 , Mariano Montoni1 , Ana Regina Rocha1 , Guilherme H. Travassos1 , Sávio Figueiredo1 , Sômulo Mafra 1 , Adriano Albuquerque1 , Benito Diaz Paret3 , Márcio Amaral3 1 COPPE/Federal University of Rio de Janeiro Caixa Postal 68511, CEP 21945 –970, Rio de Janeiro - RJ, Brazil {gleison, mmontoni, darocha, ght, sávio, somulo, bessa}@cos.ufrj.br 2 University of Salvador Rua Ponciano Oliveira 126, Rio Vermelho, CEP 40170–100, Salvador - Ba, Brazil
[email protected] 3 Riosoft – Núcleo Softex do Rio de Janeiro Rua Buenos Aires 68, 32o andar, Rio de Janeiro - RJ, Brazil {benito, mpamaral}@riosoft.softex.br
Abstract. Software Engineering is a wide area of knowledge and various other types of knowledge are required during the software development and maintenance. This paper describes a survey carried out to characterize the importance given by software developers to varying types of knowledge mentioned in the technical literature on Software Engineering. The survey results have been used to guide the elaboration and incorporation of content and tools to the TABA workstation, which allows one to configure and instantiate software development environments for different companies. This paper also addresses the use of the TABA workstation to support software processes deployment in small and medium size Brazilian companies. The goal is to increase the capability of software organizations by the adequate use of Software Engineering techniques in their development and maintenance processes.
1 Introduction Software engineering is a wide knowledge area made up of various sub areas [1]. In addition to this, the activity of software development requires computing knowledge, knowledge of the intended application domain as well as knowledge of the application itself. Another aspect to be taken into account is the experimental, evolutionary and non-repetitive characteristics of the software engineering area [2], which means that there are approaches that work best in certain situations and it is necessary to tailor them in order to deal with new situations. Moreover, unforeseen events may occur despite careful software project planning. This implies making constant choices from among the many feasible options throughout the software life cycle [3]. As a result, many software companies have recognized the importance of administrating knowledge effectively, productively and creatively at both the individual and organizational levels [4]. Santos, G., Villela, K., Montoni, M., Rocha, A. R., Travassos, G. H., Figueiredo, S., Mafra, S., Albuquerque, A., Paret, B. D., Amaral, M: Knowledge Management in a Software Development Environment to support Software Processes Deployment, In: Lecture Notes in Artificial Intelligence (LNAI), Vol. 3782, ISSN 0302-9743, Professional Knowledge Management - Third Biennial Conference (WM 2005), Althoff, K. et al. (eds), Kaiserslautern, Germany, Apr. (2005) 111-120 2
This is the affiliation of the author after she finished her PHD thesis at the Federal University of Rio de Janeiro, where the work presented here was carried out.
Software Development Environments (SDE) has been playing an important role to support software engineers in the execution of software processes through the application of specific procedures that combine integrated tools and techniques in accordance to particular software paradigms. Process-Centred Environments are the most recent generation of SDE, whose goal is to guide and assist developers in the application of software development methods, by exploiting an explicit representation of the process [11]. Moreover, SDE are evolving to integrate knowledge management activities within software processes aiming to foster the institutionalization of a learning software organization [9]. Nevertheless, a fundamental step towards the successful introduction of Knowledge Management in software development environments is the identification and the prioritization of the required knowledge in such environments so as to guide the elaboration and/or incorporation of content and the development of services and tools gradually. This paper describes a survey carried out to characterize the importance given by software developers to varying types of knowledge mentioned in the technical literature on Software Engineering. The survey results have been used to guide the elaboration and incorporation of content and tools for the TABA workstation. This paper also addresses the use of the TABA Workstation to support the deployment of software processes in small and medium size Brazilian companies.
2 Survey on the Importance Attributed to Different Knowledge in Software Development Environments A survey was planned and carried out using an experimentation process adapted from Wohlin et al. [5]. The goal was to identify the types of knowledge programmers, analysts, project managers and company directors based in Salvador1 considered the most important in the organizational environments for software development. 2.1 Survey Description Table 1 presents the survey definition according to the GQM (Goal Question Metric) template [5]. Table 1. Survey definition Analyse For the purpose of With respect to From the point of view of In the context of
1
the organizational environments for software development and maintenance characterizing the knowledge mentioned in the technical literature on Software Engineering perceived importance in terms of the need to have the knowledge available throughout the development and maintenance of software programmers, analysts, project managers and company directors software projects carried out in the year 2002 by companies located in Salvador
Salvador is a city of 2.5 million inhabitants located in the Northeast of Brazil.
The professional population involved in the development and maintenance of software in the city of Salvador was estimated at 472 according to figures from the Brazilian Ministry of Labour. A sample of this population was selected from two national survey reports and a census carried out by the Brazilian Ministry of Science and Technology. Of the 27 companies mentioned in the reports, 18 were located and agreed to take part in the survey which made an initial sample of 99 programmers, 203 analysts, 61 managers and 30 directors, 393 people in total. The survey planning also included the formulation of hypotheses, survey design, preparation for its instrumentation, identification of threats to its validity [5] and the adoption of procedures to deal with these threats. The survey instrument was represented by a set of questionnaires including 19 questions for company, project and professional description as well as 96 questions for collecting software professionals’ opinions on the importance of the many types of knowledge. The survey participant could answer that each type of knowledge was not important, of little importance, important, very important, indispensable or not evaluated. Despite the number of questions, all 96 questions could be answered using this same scale, which made the questionnaire easy and fast to answer. The terms which were thought might cause misunderstanding or be unknown were explained by using footnotes and the participants had the opportunity to ask the meaning of any terms at anytime. However, only the participants who were personally interviewed did so. The rate of non-response was 55.56% for programmers, 62.56% for analysts, 44.26% for project managers and 66.67% for directors. 153 valid questionnaires were received, 41 from programmers, 70 from analysts, 32 from managers and 10 from directors. Groups of companies, projects and participants were established to test the hypotheses. This was done to investigate the independence of the importance attributed to the type of knowledge in terms of size of company, size of project and the qualifications and experience of the professionals. To test the hypotheses Pearson’s chi-squared test was applied. The results obtained, while being statistically significant, are in themselves insufficient to establish a strategy for the construction and/or introduction of Knowledge Management Systems in Software Organizations. Therefore ordered lists of the types of knowledge mentioned in the questionnaires were drawn up according to the importance attached by each group of participants (for example: programmers of small companies). Following this, a list of the types of knowledge was drawn up according to the occurrence of each type of knowledge among the 25 most important and the 25 least important of each previous list. The rationale used was that the more important the type of knowledge, the greater the number of its occurrences among the most important 25 and the lower the number of occurrences among the least important. In the table below the 45 types of knowledge considered the most important are listed.
Table 2. General classification of the types of knowledge as regards their attributed importance 1o 2o 3o 4o 5o 5o 7o 8o 9o 10 o 11 o 12 o 13 o 14 o 15 o 16 o 17 o 18 o 19 o 20 o 20 o 22 o 23 o 23 o 25 o 26 o 26 o 28 o 29 o 30 o 31 o 32 o 33 o 34 o 35 o 36 o 37 o 38 o 39 o 40 o 41 o 42 o 43 o 44 o 45 o
Type of Knowledge Organization best practices for coding Organization best practices for tests Organization best practices for software documentation Organization best practices for quality assurance Knowledge about the organization software processes Organization best pract ices for the problem solving process Organization best practices for specification and analysis of software requirements Organization best practices for software design Knowledge about the application domain Organization best practices for project management Organization best practices for system engineering Templates of documents, including real examples of their use Organization best practices for the evaluation and improvement of software processes Software items such as specifications, system architecture, source code and test cases Organization best practices for process modelling Organization best practices for software maintenance Knowledge about the evaluation of the organization software processes Knowledge about the distribution of competences among the organization professionals Reports on the best practices in the software industry Knowledge about organizational objectives and goals Organization best practices for training Organization historical data related to project management Organization best practices for system operation (hardware, software etc.) and support to users Knowledge about the types of software developed in the organization Organization best practices for reuse of software items References to technological developments in Software Engineering Reports on the lessons learned by the software industry Knowledge about the critical organizational areas to the achievement of organizational objectives Organization historical data related to product metrics References to theoretical knowledge about Software Engineering Knowledge about the organization’s restrictions and about its weaknesses and strengths Organization historical data related to quality assurance Organization historical data related to process metrics Knowledge about the organizational processes Knowledge about the mission of the organization Organization best practices for configuration management Organization best practices for risk management Knowledge about organizational guidelines and standards Answers for the most frequent questions made by organization software developers Representation of the organizat ional structure Knowledge about the organizational processes of client companies Organization best practices for the process of supplying software products Representation of the organizational structure of client companies Knowledge about the allocation of client companies’ staff to their respective organizational units Knowledge about the technical partners’ restrictions and about their weaknesses and strengths
2.2 Interpretation of Results From Table 2 it is possible to notice the descending order of importance among the following groups of knowledge: best practices identified by the organization and other
types of organizational knowledge related to software development and maintenance; knowledge about the application domain; knowledge about the organization which develops and maintains software, knowledge from technical literature and historical data related to software development and maintenance; knowledge about the clients and finally knowledge about technical partners. Further comments can be made with regard to the results: − the most important types of knowledge identified were related to software product engineering rather than project management, − we believe organization best practices were so well evaluated because they represent knowledge already consolidated and tailored and thus ready for use, − the knowledge about the organizational processes was not considered so important. It was expected that the importance of this type of knowledge would be higher in companies that develop and maintain software for their own use, as would the knowledge about the organizational processes of client companies in companies that develop and maintain software for third parties. However, the rating above can be partially explained due to the fact that these types of knowledge are usually obtained as a result of the project activities regardless of the type of company. We believe that the availability of this type of knowledge can benefit both maintenance projects and new development projects which involve organizational processes already understood by someone else, − many participants answered the questionnaires taking into consideration software reengineering projects. However, the types of knowledge related to reverse engineering and reengineering do not appear in Table 2. Though both terms were explained in footnotes, we believe the terms were not familiar to many survey participants due to the difficulty in characterizing projects as software reengineering ones and the high rate of non-response for the respective question among systems analysts and programmers, − from the previous lists with the importance attached by each group of participants, we found that groups of systems analysts and project managers considered the knowledge about risk management as very important, while many groups of directors did not. This is reflected in the results presented in Table 2; − the knowledge considered important concerning technical partners and suppliers of products and/or services is quite specific. As regards technical partners, it is important to know about their restrictions, weaknesses and strengths and occasionally about the products and services offered by them and the organizational guidelines and standards adopted. As regards suppliers, only knowledge about their restrictions, weaknesses and strengths seems to be of importance.
3 TABA Environments The results of the survey described in the previous section were used to guide elaboration and incorporation of content and the development of tools for the Taba Workstation which allows one to configure Enterprise Oriented Software Development Environments (EOSDE) [6] for different companies. The content is
incorporated into the TABA workstation or a specific EOSDE using a tool called Acknowledge [7]. Until 2003, the TABA workstation was exclusively used in the academic area and involved more than 50 master and doctoral theses in the Federal University of Rio de Janeiro. It was created from the perception that different domain applications have distinct characteristics and such characteristics influence the environment the software engineers use to develop software [8]. During the last years, the TABA Workstation also evolved to comply with the different levels of capability maturity models of software organizations. The CASE tools integrated in the environments offer automated support to: (i) adaptation of the organization standard processes for a specific project; (ii) definition of the organizational structure [9]; (iii) acquisition, filtering, packaging and dissemination of organizational knowledge [7]; (iv) planning the organization of specific projects; (v) time, costs, risks, human resources planning, monitoring and control [9, 10]; (vi) planning and execution of Configuration Management activities; (vii) identification of software product quality requirements; (viii) documentation planning; (ix) planning and monitoring of corrective actions; (x) measurement and analysis activities based on the GQM method; (xi) project monitoring through the generation of periodic reports and measures; (xii) controlling of the activities executed during a specific project; (xiii) requirements management; and (xiv) post mortem analysis. Other approach [12, 13] aims at providing an infrastructure that integrates processcentred software development environments and Knowledge Management by implementing the Experience Factory proposed by Basili et.al. [16]. 3.1 QualiSoft Project The objective of the QualiSoft project is to increase the capability of organizations through the adequate use of Software Engineering techniques in their software processes. By achieving this objective, not only the organizational competitive advantages increases, but also the quality of software products enhances. Although the academic results of the TABA Workstation were excellent, the system was not intended to be used as a commercial product. The QualiSoft project made significant changes in the project goals. At the beginning of the QualiSoft project, a representative of RioSoft affirmed that some automated support should be provided to the organizations in order to facilitate the application of software processes. Therefore, we decided to make available the TABA Workstation to all organizations at no costs. Since the focus is on small and medium organizations, we executed the project with a pool of organizations with similar characteristics aiming to decrease the overall cost and increase the project feasibility. This project is a result of a contract between RioSoft (a non-governmental organization that integrates the Softex Program Society for Supporting Brazilian Software Production and Exportation) and the Federal University of Rio de Janeiro. The first phase of the project started on August 2003 and aimed to address a pool of 10 organizations. The second phase started on January 2004 and addressed a second pool of 9 organizations. The following activities were conducted:
(i)
definition of software development and maintenance processes adjusted for small and medium companies; (ii) training on Software Engineering methods and techniques and in the software processes defined; (iii) use of CASE tools integrated in a software development environment configured using the TABA Workstation [8] and strongly supported by Knowledge Management during the deployment and use of the software processes d efined; and (iv) follow-up of the companies in the deployment of the software processes throughout the execution of pilot projects. Therefore a configured environment was delivered to each organization considering its specific characteristics and the development and maintenance standard processes. A hands-on in the environment tools was carried out. From this environment, specific environments for each pilot project were created by the adaptation of the standard processes according to the project specific characteristics.
3.2 Software Process Definition and Training The first step in the execution of the project was to be acquainted of the individual characteristics of the organizations. In order to do so, each organization filled out a detailed form and the process specialists had to schedule regular visits on the organizations. The form contained questions related to the organizational culture, software process stages and quality management systems , adopted software development practices, main problems in the current software development and maintenance processes, and organizational objectives related to software process improvement. The following step was to define software development and maintenance standard processes adequate to small and medium organizations. The processes defined on the first project phase were based exclusively on the international standard ISO/IEC 12207 [14]. In the second phase, these processes were refined and adjusted to be completely adherent to the practices defined in the CMMI [15] Level 2 process areas. In parallel to the processes definition activity, the members of the organizations were trained in the Software Engineering methods and techniques. During the first phase, approximately 32 hours were spent on training. This training was performed under the form of lectures on the following topics: Software Engineering, Software Process, Requirements Engineering, Configuration Management, Project Management and Software Products Quality. Approximately, 80 professionals were trained during this phase. After the theoretical training, project managers and software developers participated on a specific training on the standard software processes defined. The training during the second phase considered other important topics, such as Peer-review, Tests, Measurement and Analysis, Supplier Agreement and Knowledge Management, constituting more 44 hours to the overall training time. In the second phase, more than 70 organizational members were trained. The following steps focused on the deployment of the processes and the configured environment in the organizations. These steps had been carried out individually considering the particularities of each organization. Initially, the standard processes
had been adapted to each company considering the characteristics identified in the beginning of the project, such as types of software developed, documents produced and software development paradigms adopted. After the approval of the adaptations by the organization, a software development environment was configured based on these adaptations. 3.3 Lessons Learned During the first phase of the QualiSoft project, we learned the following lessons: (i) the deployment of software processes in a group of organizations in a common project and at low cost is feasible (the amount of money spent by each company was about 40% of which would be spent in a similar project to be conducted by only one organization); (ii) the configured environments facilitates training, deployment and institutionalization of software processes by providing case tools to assist and automate the carrying out of repetitive tasks like process instantiation, project planning, controlling and monitoring; (iii) the knowledge management approach adopted in the environments is determinant for the success of the approach, because it helps the developer in executing its activities by providing useful knowledge when the developer needs it the most; (iv) the knowledge acquisition approach integrated into the CASE tools [7] enables the gradual evolution of the knowledge repository by allowing the acquisition and dissemination of lessons learned, best practices and ideas to improve the software processes. The lessons learned were identified during the regular meetings to support the software process deployment in the organizations. They were also confirmed through a formal report one of the organizations sent to the QualiSoft project team after successfully applying to an ISO 9000:2001 Certification. Another survey was planned and executed with the objective to analyze the processes deployed and the TABA Workstation supporting tools . The questionnaire was applied to 16 key members of the companies that took part of the first phase of the QualiSoft Project. More than 90% of the participants recognized that the TABA Workstation significantly reduced the effort for executing most of the process activities. The participants of the experiment also identified that both the processes and the TABA Workstation facilitated the dissemination of best practices from the project planning until the post–mortem analyses. Moreover, the centralization of information and knowledge related to processes execution also supported decisionmaking situations, because project managers could easily find information about similar projects.
4 Conclusion The results presented in the table 2 (the most general) and those that report the importance attributed by each group of participants (more specific) are of practical
importance to any company in Salvador that wishes to introduce Knowledge Management in their software engineering context. The results obtained should not been thought as prescriptive but rather as descriptive and be analyzed when deciding on what to prioritize. Some observations made during the carrying out of the survey can explain the importance given to certain types of knowledge, and therefore provide additional support to the decision. The experimental study package can be used for future surveys, which can widen the scope and validity of the results or explain any findings. These results have been used to guide the elaboration and incorporation of content and the development of tools for the TABA workstation which allows one to configure and instantiate software development environments for different companies. This paper also presented a successful approach for deployment of software processes in small and medium organizations supported by the TABA workstation. The results of the QualiSoft Project are excellent under different aspects. First, it showed the feasibility of carrying out a project involving various organizations with very particular characteristics since the costs were significantly diminished. Second, it showed that it is possible to promote technology transfer between universities and other kinds of organization producing good results to all the involved parts. Currently, more than 30 Brazilian companies use the TABA environments to support the execution of their software processes, some of which participated in the survey on the importance attributed to different knowledge in Software Development Environments. Further information about Enterprise-Oriented Software Development Environment and its case tools can be found at http://www.cos.ufrj.br/~taba.
Acknowledgement The authors wish to thank CNPq and CAPES for the financial support granted to the project Enterprise Oriented Software Development Environments. We also acknowledge SEBRAE for the financial support granted to the QualiSoft project.
References 1. Desouza, K. C.: Barriers to Effective Use of Knowledge Management Systems in Software Engineering. Communications of ACM, Vol. 46(1) (2003) 99-101 2. Lindvall, M., Frey, M., Costa, P., et al.: Lessons Learned about Structuring and Describing Experience for Three Experience Bases. Lecture Notes in Computer Science, Vol. 2176. Springer-Verlag (2001) 106-119 3. Oh, E., Hoek, A.: Adapting Game Technology to Support Individual and Organizational Learning. Proceedings of SEKE’2001, Buenos Aires, Jun (2001) 347-362 4. Kucza, T., Nattinen, M., Parviainen, P.: Improving Knowledge Management in Software Reuse Process. Lecture Notes in Computer Science, Vol. 2188. Springer-Verlag (2001) 141-152 5. Wohlin, C., Runeson, P., Höst, M., et al.: Experimentation in Software Engineering: An Introduction. The Kluwer International Series in Software Engineering. Kluwer Academic Publishers, Norwell (2000)
6. Villela, K., Oliveira, K., Santos, G., et al.: Cordis-FBC: an Enterprise-Oriented Software Development Environment. Lecture Notes in Informatics, Vol. 28. Verlag (2003) 91-96 7. Montoni, M., Miranda, R., Rocha, A. R., et al.: Knowledge Acquisition and Communities of Practice: an Approach to Convert Individual Knowledge into Multi-Organizational Knowledge. Lecture Notes in Computer Science, Vol. 3096. Springer (2004) 110-121 8. Oliveira, K, Zlot, F., Rocha, A. R., Travassos, G., Galotta, C., Menezes, C. Domain Oriented Software Development Environment, Journal of Sy stems and Software, vol 72/2 (2004) pp 145-161 9. Santos, G., Villela, K., Schnaider, L., Rocha, A. R.. Travassos, G. H., Building ontology based tools for a software development environment, In: Workshop Learning Software Organization, Banff, Canada, 2004 (Lecture Notes in Computer Science, vol 3096, pp 1930) 10. Farias, L., Travassos, G. H., Rocha, A. R. C., Knowledge Management of Software Risks In:. Journal of Universal Computer Science, vol 9 n 7 (2003), 670- 681 11. Arbaoui, S. Derniame, J., Oquendo, F., et al., A Comparative Review of Process-Centered Software Engineering Environments”, Annals of Software Engineering, v. 14, n. 1-4, pp. 311-340, Dec. 2002. 12. Maurer, F., Holz, H., Integrating Process Support and Knowledge Management for Virtual Software Development Teams, Annals of Software Engineering, v. 14, n. 1-4, pp. 145-168, Dec. 2002. 13. Holz, H., Könnecker, A., Mauerer, F., “Task-Specific Knowledge Management in a Process-Centred SEE”. In: Advances in Learning Software Organizations, v. 2176, Lecture Notes in Computer Science, Springer, pp. 163-177, 2001. 14. ISO/IEC 12207, 1995, Information Technology – Software Life-Cycle Processes. 15. CMU/SEI, Capability Maturity Model Integration (CMMI) Version 1.1 - Staged Representation, Carnegie Mellon University, Software Engineering Institute, Pittsburgh, 2002. 16. Basili, V. R., Caldiera, G., and Rombach, H. D. (1994). Experience Factory. In Encyclopedia of Software Engineering (J. J. Marciniak, ed.), vol. 1, John Wiley Sons.