• No results found

Research design: Anti-normative and grounded theory

É aceito pela comunidade que é desejável realizar o esforço possível para que todas as formas de conhecimento de engenharia de software sejam capturadas e armazenadas em repositórios [Lan01]. Forma-se um consenso entre empresas que atuam no desenvolvimento de software que a gestão do conhecimento, ou do seu capital intelectual, em nível individual, dos times e da organização é extremamente relevante para a melhoria dos processos e, por conseguinte, constitui-se em um diferencial.

Um dos maiores problemas do capital intelectual é que ele tem pernas e volta para casa todos os dias. Na mesma proporção que a experiência caminha porta à fora, inexperiência caminha porta à dentro [Rus02].

Uma organização que atua em desenvolvimento de software tem como seu principal ativo o capital intelectual, que é um reflexo, ou uma síntese, de todas as suas atividades, processos, tarefas e projetos que geram, consomem e transformam conhecimento. Portanto, uma organização de desenvolvimento de software possui os mesmos desafios que empresas de consultoria, investimento, publicidade, advocacia, entre tantos outros ramos de atividade que possuem como seu principal asset o conhecimento e precisam fazer dele o seu diferencial no mercado em que atuam.

Gestão do conhecimento nas organizações de desenvolvimento de software é uma área ampla com várias disciplinas que podem influenciar em seus resultados. Em Bjørnson e Dingsøyr [Bjø08] é apresentada uma revisão sistemática sobre gestão do conhecimento em engenharia de software. Esta revisão sistemática discute as principais implicações que devem ser ponderadas na decisão sobre qual metodologia de gestão do conhecimento é adequada, considerando, por exemplo, se uma empresa pretende ter seus processos de desenvolvimento baseados em metodologias ágeis ou em metodologias tradicionais.

Quando metodologias tradicionais estão em uso, o objetivo da gestão do conhecimento é tentar o máximo possível transformar o conhecimento tácito em conhecimento explícito, vindo a representar este conhecimento através de diversos artefatos previstos nas metodologias de desenvolvimento de software. Já para as metodologias ágeis, o foco está em trabalhar com o conhecimento tácito. As iniciativas estão focadas em promover a troca mais direta de conhecimento através da conversação entre os membros do projeto. Nas metodologias ágeis uma das principais questões avaliadas para estimular a troca do conhecimento no seu formato tácito é o esforço que se despende para converter o conhecimento tácito em explícito, a chamada

explicitação do conhecimento .

Naàe ge ha iaàdeàsoft a eàte osàalgu asàdefi iç esàpa aàasà ha adasà o ga izaç esàdeà soft a eà ueàap e de .àFeld a àe Althoff [Fel01], definem uma organização de software que aprende, aquela que cria uma cultura que promove aprendizagem contínua e promove a troca de experiências. Dyba [Dyb02] enfatiza este tipo de empresa como aquela que promove ações de melhoria através de um melhor conhecimento e entendimento dos seus processos.

Temos muitos estudos de casos e iniciativas de gestão do conhecimento na área de engenharia de software [Rus02]. Como exemplo, podemos apontar uma que está fundamentada no reuso da experiência do ciclo de vida, processos e produtos para o desenvolvimento de software, que é a Experience Factory [Bas94]. Esta proposta está baseada no fato de que projetos de desenvolvimento de software podem melhorar sua performance (custos, qualidade e cronograma) através da utilização das experiências de projetos anteriores. A Experience Factory deve analisar e sintetizar todos os tipos de experiência, incluindo lições aprendidas, dados de projetos, relatório de tecnologia, entre outros e, fornecer serviços de repositório para estas experiências.

A Experience Factory emprega alguns métodos para empacotar experiência, incluído aí medições de projeto de vários processos de software e características de produtos e, então, constrói modelos destas características que descrevem seu comportamento em diferentes contextos. Os dados destes modelos são provenientes de projetos de desenvolvimento obtidos de pessoas, documentos e suporte automatizado.

Podemos observar o interesse e crescimento de iniciativas de gestão do conhecimento em engenharia de software pelo incremento de publicações nesta área, conforme destacado na revisão sistemática de [Bjø08].à Nesteà estudoà fo a à ide tifi adosà à t a alhosà o oà lesso sà lea edà epo ts àouà e pi i alàstudies .àOsàt a alhosàfo a àpu li adosàe t eà e 2007, sendo que é perceptível o incremento e a constância de publicações a partir do ano de 2000. Entre 1992 e 2000 foram 12 publicações e o restante, 66, a partir do ano 2000.

Nestaà es aà e is oà à olo adoà ueà oàa oàdeà ào o euàoà first workshop on learning software organizations , organizado em conjunto com a conferência SEKE2. Este workshop apresenta-se como um dos principais fóruns para estudos empíricos, bem como desenvolvimento tecnológico, relacionado à knowledge management in software engineering.

Em maio de 2002 a IEEE Software [Rus02] tratou especificamente do tema knowledge management in software engineering, trazendo muitos exemplos de aplicações da gestão do conhecimento em empresas que desenvolvem software. Empresas como Chrysler, Infosys, Nasa, Departamento de Defesa dos EUA (DoD), entre outros, apresentaram relatos de experiências do uso de gestão do conhecimento no processo de desenvolvimento de software.

O livro Managing Software Engineering Knowledge publicado em 2003 [Aur03] focou em tópicos que tentaram identificar o motivo pelo qual gestão do conhecimento é importante para engenharia de software.

Em [Rus02] são apresentados overviews de trabalhos em gerenciamento do conhecimento em engenharia de software. Neste trabalho são tratados aspectos sobre motivações e abordagens para gerenciar o conhecimento e fatores que devem ser considerados quando estratégias para gerenciar o conhecimento em empresas de software são implantadas. Estes aspectos envolvem questões tecnológicas, organizacionais e de pessoas. Neste artigo os autores também descrevem os tipos de ferramentas que são relevantes para gerenciar conhecimento, incluindo ferramentas para gerenciar documentos, competências e colaboração.

Em [Din02] os autores utilizaram um survey para estudar iniciativas de gestão do conhecimento em engenharia de software. Foram apontados oito relatórios no formato de lições aprendidas, os quais tratam como as companhias realizaram suas ações nesta área, quais os efeitos sofridos, ações realizadas, benefícios reportados e que tipos de estratégias para gerenciar o conhecimento foram empregadas.

No ano de 2009 temos o lançamento de dois importantes livros nesta área. Schneider [Sch09] publicou um livro que trata de aspectos sobre experiência e gestão do conhecimento na engenharia de software, abordando: que tipo de conhecimento é importante para engenharia de software; o reuso de experiências e conhecimento; as representações formais e estruturas como ontologias e; estudos de casos. Babar et al. [Bab09] organizou um livro que fornece uma visão geral dos principais conceitos de arquitetura de software e gestão do conhecimento, abordando tópicos como ferramentas e tecnologias para gestão do conhecimento de arquitetura de software onde também são apresentadas experiências observadas em estudos de casos.