|
Currículo Lattes: 
Manutenção de Software
De maneira mais geral, me interesso por tudo o que se relaciona com
os problemas ligados à manutenção de software e as soluções
possíveis a esses problemas.
A manutenção de software pode ser definida como toda ``modificação de um produto de software, feita após sua entrega, para corrigir erros, melhorar o desempenho ou outros atributos ou para adaptar o produto a um ambiente que mudou'' (traduzido da norma IEEE 1219). Uma outra definição possível, é o ``gerenciamento das modificações no produto de software para manté-lo atualizado e em perfeita operação'' (traduzido da norma ISO/IEC 12207).
É uma atividade extremamente importante. Primeiramente do ponto de vista financeiro: estima-se que 90% do custo de um software durante sua vida útil é gasto na manutenção dele. É tambem uma atividade importante para a sobrevivência de todas as organizações: São raras as organizações que não tem uma parte ou outra de suas atividades parcial ou totalemente automatizadas por computadores. Isso implica em terem muitas informações vitais apenas disponíveis em meio eletrônico. Nesse contexto, a continuidade operacional dos sistemas de software é uma necessidade absoluta para esses organizações e para asociedade em geral. Um bom exemplo disso foi percebido no final de 1999 quando governos e grandes empresas do mundo inteiro divulgaram informações explicando o que era o "bug do milénio" (bug do ano 2000), qual podiam ser suas consequências e o que era feito para impedir que ele acontecesse.
Apesar desta importância na realidade, é uma atividade ainda mal vista pelos profissionais, pouco ensinada, pouco estudada e geralmente não entendida. A realidade é de uma atividade que oferece menos perspectivas de evolução profissional ou vista até como uma punição.
Esses temas são desenvolvidos mais em detalhe nos meus textos sobre manutenção de software
Eu procuro estudar a atividade em geral para descobrir melhores formas de tratá-la. Eu procuro também explicar melhor a atividade para combater os efeitos negativos dos preconceitos existentes.
Projetos de Pesquisa
Seguem alguns projetos que participei ou estou participando. Nem todos são relacionados à manutenção, mas minha preferência vai para estes. Pode-se
também consultar a lista das publicações que participei. Os trabalhos feitos não esgotam o tema do projeto e novos trabalhos nestas linhas são possíveis e desáveis.
- Gestão do conhecimento em manutenção de software
O problema:
Um dos grandes fatores do custo da evolução de software vem da falta de conhecimento suficiente sobre os sistemas modificados. Dependendo dos autores, o tempo gasto em entender o sistema que se pretende modificar durante a evolução de software pode variar de 40% a 90% do tempo total para fazer a modificação. Por exemplo, no caso de um erro no sistema, um programador pode perder dias para achar onde se encontra o erro e entender em que ele consiste, para, em seguida, fazer a correção e os testes em uma hora.
Está falta de conhecimento dos sistemas é agravada pelo fato que a grande maioria dos sistemas são pouco ou mal documentados. Todo o conhecimento necessário para seu desenvolvimento e posteriores modificações não foi adequadamente registrado, obrigando o mantenedor a recorrer ao código para tentar entender como o sistema funciona.
O projeto:
O projeto desenvolvido inclui a definição de uma Ontologia do Conhecimento Útil na Manutenção de Software e a customização da técnica de Revisão de Projeto (ou Análise Postmortem) para capturar o conhecimento adquirido sobre um sistema durante um projeto de manutenção. A ontologia identifica e organiza todos os conceitos que podem ser necessários quando se dá manutenção em um sistema (por exemplo: conhecer a linguagem de programação, os componentes do sistema, o processo de manutenção, a estrutura organizacional do cliente, as ferramentas de programação, etc.). A técnica de revisão de projeto permite, a partir de questionários, explicitar o que foi aprendido sobre um sistema, uma organização, etc. durante uma manutenção de software.
Participantes:
Káthia Marçal de Oliveira (PhD), Nicolas Anquetil (PhD), Marcio Greyck Batista Dias (MSc), Kleiber Damian de Sousa (MSc), Marcelo Fenoll Ramal (Esp.), Ricardo de Moura Meneses (Esp.)
O projeto:
Um outro projeto em gestão do conhecimento para a engenharia de software estudou uma nova técnica de empacotamento e distribuição do conhecimento: As histórias de aprendizagem. Essa nova forma tem o diferencial de não apresentar o conhecimento pronto (como fazem as "melhores práticas" ou as "lições aprendidas"), mas de apresentar a história de um projeto onde se aprendeu alguma coisa relevante. A partir da leitura da história, um leitor pode seguir o mesmo caminho do projeto e chegar a tirar também um ensinamento para ele mesmo.
Participantes:
Káthia Marçal de Oliveira (PhD), Nicolas Anquetil (PhD), Alexandre Torres (MSc).
- Aspectos Sociais da Manutenção de software
O problema:
Está cada vez mais claro que a "engenharia" de software tem tanto (ou mais) a ver com as ciências sociais do que com as engenharias. Problemas de gestão de projeto, processos, gestão da qualidade, etc. são, antes de mais nada, problemas de gestão de pessoas. Essa linha de pesuqisa tenta explorar os aspectos humanos que são relevante à manutenção de software. É de se notar que os problemas de gestão de conhecimento relatados no primeiro projeto entram também nesta categoria.
O projeto:
Estudo da percepção que os mantenedores têm do seu trabalho e os fatores que a influênciam. Estudos precedentes mostram que a manutenção é uma atividade percebida de maneira negativa. Isso pode ter influência negativa sobre a vários aspectos importantes: qualidade do trabalho, motivação, rotatividade, etc.
Participantes:
Wander Cleber M.P. da Silva (PhD), Nicolas Anquetil (PhD), Andréa Cristina Gomes (Mestranda)
O projeto:
Processos de software são a "menos prior" das soluções para organizar o trabalho de equipe que representa a manutenção de software. Nest trabalho se estuda a possibilidade de usar uma nova forma de organização: a chamada organização em rede.
Participantes:
Luiza Beth Nunes AlonsoLuiza Alonzo (PhD), Nicolas Anquetil (PhD), Claiton Rodrigo Knoth (Mestrando)
- Qualidade e manutenção de software
O problema:
A qualidade é reconhecida como uma prática importante em engenharia de software. Porém o foco da qualidade até agora se dirigiu muito sobre o desenvolvimento de software. É de grande interesse tentar adaptar os princípios da qualidade à atividade de manutenção de software. Isso implica, por exemplo, em definir métricas (de produto ou de processo), rever os modelos de qualidade, os processos de manutenção, ...
Participantes:
Káthia Marçal de Oliveira (PhD), Nicolas Anquetil (PhD), Cristiane Soares Ramos (MSc), Claudson S. Melo (Esp.), Pedro Nogueira de Sá (Esp.), Marcelo A. Rocha (esp.), Nelson F. Almeida Junior (Esp.)
- Gestão da manutenção de software
O problema:
Além da qualidade de software, existem muitas outras práticas recomendadas para uma boa gestão de projetos de software. Pelo relativo esquecimento da manutneção de software por parte dos estudiosos, esseas práticas quando bem definidas e estudadas para o desenvolvimento acabam tendo atrasos na manutenção de software.
O projeto:
Um bom exemplo disso seria a gestão de riscos em projetos de manutenção de software que foi pouco estudada e para a qual desenvolvemos um trabalho.
Participantes:
Káthia Marçal de Oliveira (PhD), Nicolas Anquetil (PhD), Kénia Webster (MSc)
O projeto:
Processos de software e documentação são apontados como os grandes vilões da produtividade em software. Neste projeto estudou-se a ajuda que os documentos podiam trazer na hora de realizar uma manutenção de software
Participantes:
Káthia Marçal de Oliveira (PhD), Nicolas Anquetil (PhD), Sergio Cozzetti (MSc)
O projeto:
Uma linha de pesquisa procura ajudar os decidores a estabelecer quanto começa a ser mais interessante redesenvolver uma nova solução em vez de continuar mantendo um sistema existente (possívelmente velho). Esse projeto foi iniciado por um grupo de Lato Sensu (especialização) procurando identificar os vários aspectos a serem considerados na hora de querer fazer reengenharia de um sistema. Outra vertente do projeto é de tentar empregar métodos financeiros como o ROI (Return On Investement - Retorno sobre investimento) à atividade de manutenção.
Participantes:
Nicolas Anquetil (PhD), Natasha A. Y. do Valle (Esp.), C. R. Sousa (Esp.), Valéria A.F. Unsonst (Esp.)
- Engenharia reversa / Compreensão de programas
O problema:
A Engenharia reversa de software tenta, a partir
do código existente, ajudar a recriar os artefatos de documentação típicos de um sistema de software (documentação de projeto, de análise, de architetura, ...) que
foram perdidos, nunca foram criados ou não acompanharam as
modificações feitas no código
A compreensão de programa, como o nome indica, procura ajudar os mantedores entender um sistema o suficiente para modificá-lo de forma adequada sem introduzir novos erros.
O projeto:
PRocura-se desenvolver ferramentas que possam ajudar o mantutenedor a entender um programa que ele deve modificar. As ferramentas se baseiam tanto em análise estática (análise do código fonte) quanto em análise dinámica (análise dos rastros de execução dos programas).
Participantes:
Káthia Marçal de Oliveira (PhD), Nicolas Anquetil (PhD), Marcelo Marinho (Mestrando), Anita G.M. dos Santos (Graduanda), Paulo C. S. Silva (BSc), Susa D. C. F. Vieira (BSc), Laesse C. Araújo (BSc)
|