• No results found

É importante ressaltar que os resultados aqui apresentados se referem à realidade da organização pesquisada, podendo ser diferente quando aplicado a outro grupo de entrevistados e projetos/sistemas em outra organização. Com esses resultados será possível a organização pesquisada:

Sob a ótica de um Gestor:

o Reorganizar os seus investimentos internos a fim de gerar ou manter

softwares com uma maior manutenibilidade focando nas propriedades apontadas nesta pesquisa como as que trazem maior benefício durante a realização de uma manutenção de software, conforme apresentado na Tabela 6. Por exemplo, investir para que todos os desenvolvedores e mantenedores de software adotem a prática de inserir comentários em código fonte, visto que essa propriedade foi considerada como a que mais facilita no momento da realização de uma atividade de manutenção de software;

o Definir quais subcaracterísticas de manutenibilidade são mais

importantes para um determinado projeto ou sistema, bem como o percentual desejável para cada e através dos dados apresentados nas

Tabelas 7 a 11, identificar em quais propriedades investir mais. Por exemplo, se o projeto tem uma grande necessidade de ter uma boa testabilidade, pelos resultados desta pesquisa fica claro ao gestor a importância dele investir no uso de testes de regressão automatizados para o projeto, bem como na geração de uma boa documentação de requisitos, a fim alcançar esse objetivo, conforme apresentado na Tabela 9. A Tabela 11 dá uma visão diferenciada, a qual apresenta o percentual de influência de cada propriedade de software em cada subcaracterística de manutenibilidade, o que facilita na tomada de decisão quando a necessidade envolve mais de uma subcaracterística de manutenibilidade;

o Identificar as propriedades de software que têm sido pouco praticadas

na organização, por falta de experiência do empregado e, se necessário, gerar uma necessidade de capacitação interna. Por exemplo, apenas 22,22% dos entrevistados tinham experiência em realizar testes de regressão de forma automática, conforme apresentado no item 4.1.2.12. Logo, há a possibilidade de uma capacitação interna nesse assunto.

Sob a ótica da Equipe de Processo:

o Definir, a partir dos resultados apresentados na Tabela 6, para que

certas propriedades de software já sejam embutidas no produto a ser desenvolvido através do uso do processo de desenvolvimento padrão da organização. Por exemplo, orientar o uso de comentários em código fonte; orientar o que deve ser realizado para se garantir uma boa qualidade da modelagem dos dados; orientar uma padronização para a implementação de código fonte; dentre outros;

o Rever os pontos do processo que podem estar sendo pouco utilizados

pelas equipes de desenvolvimento/mantenedores por falta de experiência no assunto, tais como: documentação de arquitetura (50,62%), rastreabilidade definida dos requisitos ao código fonte (33,33%), testes de regressão automatizados (22,22%), dentre outros.

o Rever o processo de uma forma geral, com base nos resultados

apresentados nas Tabelas 6 a 11, a fim de melhorá-lo para apoiar mais efetivamente as atividades de manutenção de software, uma vez que 22,39% dos entrevistados afirmaram que o processo atual facilitou muito pouco a realização de uma atividade de manutenção e 13,43% afirmaram que esse processo não facilitou em nada (conforme apresentado no Gráfico 71).

Sob as duas óticas (Gestor e E quipe de Processo):

o Aplicar o processo proposto nesta pesquisa (apresentado na Figura

11) com uma nova massa de dados, a fim de se obter resultados objetivos a respeito de quais propriedades de software que beneficiam a sua manutenibilidade têm maior influência durante a realização de uma atividade de manutenção de software. Os novos resultados poderão apresentar algumas diferenças em relação aos resultados apresentados até então sob a ótica dos mantenedores entrevistados, sendo que essas diferenças podem dar ênfase maior a uma ou outra propriedade ou o contrário.

Caso outras organizações desejem usar esses dados, elas deverão se certificar se há similaridades entre suas organizações e a organização pesquisada, caso contrário, as divergências podem ser grandes e corre-se o risco desses dados serem mal utilizados. Entretanto, toda esta pesquisa poderá ser reaplicada em outra organização, desde que observada o processo proposto na Figura 11.

É importante ressaltar que no processo proposto não há a obrigatoriedade de se executar necessariamente as duas etapas aplicadas nesta pesquisa, uma vez que elas são complementares, ou seja, uma não necessita obrigatoriamente do resultado da outra. Entretanto, aconselha-se que sejam executas as duas etapas para uma melhor abrangência nos resultados.

A organização pos sui m uitos mantenedores de software?

A organização pos sui m uitos projetos de software de manutenção evolutiva? Não N ão Aplicação do Questionário (Apêndice C) Sim Análise dos resultados

Seleção dos projetos de software

Sim

Aplicação do algoritmo de regres são SMOreg

Análise dos resultados

Consolidação dos resultados Foi aplicado o Questionário?

Sim

Não

Figura 11 – Processo para identificação das propriedades de software que beneficiam a manutenibilidade

Logo, é importante ressaltar que outra organização não terá que repetir todos os passos executados na metodologia adotada nesta pesquisa, apenas seguir as etapas do processo proposto na Figura 11, sendo:

- Aplicar o questionário definido no Apêndice C (Identificação das propriedades de software que beneficiam a sua manutenibilidade);

o Se necessário, promover melhorias neste questionário para adequar

- Analisar os resultados obtidos com o questionário e organizá-los de forma similar as Tabelas 6 a 10 geradas nesta pesquisa;

- Coletar os dados dos projetos de software de manutenção evolutiva da organização (atentar-se para a necessidade de uma padronização entre esses projetos, conforme pré-requisitos descritos no item 3.4.2.1);

- Aplicar o algoritmo de regressão SMOreg para avaliar a influência entre as propriedades de software. Para isso, é necessário:

o Filtrar e classificar os dados coletados dos projetos para que possam

ser tratados na ferramenta WEKA (conforme item 3.4.2.2). Se necessário, realizar ajustes/melhorias na classificação das propriedades de software constantes no Quadro 6;

o Se desejado, executar outros algoritmos de regressão para avaliar se

há algum outro que trará um melhor resultado para a massa de dados selecionada para a pesquisa.

- Analisar os resultados obtidos com a aplicação do algoritmo;

- Consolidar os resultados obtidos do questionário com os do algortimo e analisá-los.

Além disso, para que esse processo possa ser aplicado em outras organizações, devem ser observados os seguintes aspectos:

- Não é aconselhável a aplicação desse processo em empresas que tenham poucos profissionais que atuam na manutenção de software e que tenham poucas demandas de manutenção de software, em especial, manutenções evolutivas, pois haveria poucos dados para serem comparados e a opinião dos mantenedores poderia ser enviesada;

- Os projetos de software a serem utilizados na pesquisa devem utilizar uma mesma medida padrão (tamanho), por exemplo, contagem de ponto de função, a fim de que se possa fazer uma comparação entre eles, já que se trata de produtos diferentes;

- Os projetos de software a serem utilizados na pesquisa devem estar agrupados pela mesma linguagem de programação e de banco de dados, a

fim de se evitar viés devido a diferenças tecnológicas;

- O ideal é que durante a pesquisa se consiga obter todas as informações necessárias através das próprias bases de dados da organização, ou em outros locais similares, sem depender da intercessão de pessoas (gerentes, mantenedores, outros) para se obter os dados necessários, pois esses podem ser apresentados de forma mascarada, de acordo com o que a pessoa julgar pertinente a ser apresentado para a pesquisa.

5 Conclusão

De acordo com tudo que foi estudado, acrescentar propriedades em um software para beneficiar a sua manutenibilidade requer custos adicionais. Por isso, é necessário que haja um planejamento adequado de quais propriedades um determinado produto deve ter de forma que agregue valor para a fase de manutenção.

Desta forma, para atender o objetivo geral deste trabalho, através de seus objetivos específicos, foi proposto um processo que permite a uma organização que desenvolve e mantém software identificar quais propriedades de seus softwares contribuem para a manutenibilidade. Embora o objetivo geral deste trabalho tenha sido atendido, nem todos os objetivos específicos o foram. Foram identificadas as propriedades que por hipótese beneficiam a manutenibilidade de software e foram coletadas as opiniões de especialistas sobre o benefício dessas propriedades. Entretanto, não foi possível identificar a correlação dessas propriedades com a manutenibilidade de software, devido à baixa quantidade de projetos de software de manutenção evolutiva resultantes na amostra.

O processo proposto apresenta os passos metodológicos para se chegar aos resultados apresentados nas Tabelas 6 a 11, sendo a principal contribuição deste trabalho e pode ser utilizado por qualquer organização que mantenha software, desde que observados minimamente os seguintes aspectos: a organização tem que ter muitos mantenedores de software e muitos projetos de software de manutenção evolutiva que usem a mesma medida padrão (tamanho), linguagem de programação e banco de dados.

Conta-se ainda como contribuição desta pesquisa o questionário elaborado no Apêndice C (Identificação das propriedades de software que beneficiam a sua manutenibilidade), o qual coleta opiniões de especialistas sobre o benefício dessas propriedades e a indicação do algoritmo de regressão SMROreg para avaliar a relação dessas propriedades com a manutenibilidade de software, a partir de

informações extraídas de uma base histórica sobre projetos de software similares. Destaca-se a importância como contribuição as listas ordenadas das propriedades de software que beneficiam a manutenibilidade e suas subcaracterísticas (constantes nas Tabelas 6 a 11), as quais propiciam a definição de um conjunto de diretrizes com a finalidade de orientar gerentes de projeto e também a equipe do processo padrão da organização, de forma que eles tenham insumos para priorizar quais propriedades de software (que beneficiam a sua manutenibilidade) investir em um projeto ou sistema de acordo com os requisitos definidos pelo cliente, dentre outras decisões. Os resultados da aplicação desse processo apóiam a organização a investir de forma mais consciente nas propriedades de software que agregam valor à manutenibilidade.

Neste trabalho, deparou-se com algumas dificuldades, inerentes à pesquisa quantitativa, que impuseram algumas limitações ao estudo realizado. Além da grande dificuldade na obtenção dos dados da organização pesquisada, foram identificados para o estudo poucos projetos de manutenção evolutiva que realizavam a contagem de ponto de função, conforme Manual de Práticas de Contagem de Pontos de Função, e que utilizassem uma mesma linguagem de programação e banco de dados. Dentre esses projetos, a maioria possuía similaridades em suas propriedades de software, o que restringiu a quantidade de dados a serem tratados na ferramenta WEKA para avaliação dos algoritmos. Logo, o algoritmo Functions/SMOreg indicado pela metodologia adotada não foi

suficientemente testado devido a pouca massa de dados existente.

Como melhoria para o questionário, poderia ser incluída uma pergunta sobre a influência do uso de frameworks na realização da atividade de manutenção de software, conforme apontado por um dos entrevistados, uma vez que a definição do uso de frameworks tem sido cada vez mais freqüente dentro das organizações. Além disso, no trabalho apresentado por Souza et al. (2005a), houve a apresentação de duas propriedades que não foram tratadas nesta pesquisa: documentação de testes e documentação de implantação. Essas propriedades poderiam ser também incluídas em uma nova versão melhorada do questionário, em especial a documentação de testes, já que pelos resultados obtidos foi possível constatar que testes tem uma boa influência (66,66%) na manutenibilidade de

software. Quanto à documentação de implantação, os resultados obtidos por Souza et al. (2005a) foram uma grande surpresa, visto que na literatura utilizada para esta pesquisa a fase de implantação, bem como a sua documentação, não são citadas como possíveis facilitadoras na atividade de manutenção de software. Logo, esse resultado poderia ser ratificado com a aplicação de um novo questionário.

Como perspectivas de trabalhos futuros, o processo proposto nesta pesquisa pode ser aprimorado para prever quais propriedades de software que beneficiam a sua manutenibilidade dão um retorno de produtividade (menor esforço de manutenção), qualidade (do produto) e financeiro maior do que outra. Para isso, são necessárias que sejam realizadas as seguintes ações:

- Elaboração de um modelo de previsão da produtividade e da qualidade no processo de manutenção de software, com o uso de ferramentas estatísticas e de mineração de dados, a partir de registros históricos de projetos de manutenção software. Com o regressor definido, analisar o grau de influência relativo entre as propriedades de software que beneficiam a sua manutenibilidade, e a correlação dessas com a produtividade e a qualidade, permitindo aos gerentes avaliar, a partir do modelo identificado, quais aspectos serão relevantes em determinadas situações.

- Análise dos registros históricos de esforço por atividade/ fase do ciclo de vida do desenvolvimento de projetos de software, para identificar o custo associado às variáveis independentes de manutenibilidade apontadas pelo algoritmo de regressão como as mais influentes nas variáveis dependentes, produtividade e qualidade.

Referências

ALLIEVI, O. J.; FIGUEIREDO, R. M. C. Condicionantes do Processo Decisório na

Terceirização da Manutenção de Software: um estudo de caso em empresa

pública. 2008. 214f. Dissertação (Mestrado em Gestão do Conhecimento e Tecnologia da Informação) – Universidade Católica de Brasília, Brasília, 2008. ANDA, B. Assessing Software System Maintainability using Structural

Measures and Expert Assessments. IEEE INTERNATIONAL CONFERENCE ON

SOFTWARE MAINTENANCE, p.204-213, outubro de 2007.

ANQUETIL, N. Manutenção de Software. Home Page do Professor Pesquisador Nicolas Anquetil - Brasil. 2008. Disponível em:

<http://www.ucb.br/prg/professores/anquetil/manutencao.php>. Acesso em: 06 out. 2008.

ANQUETIL, N. et al. Software maintenance seen as a knowledge management issue. Elsevier Science Direct. Information and Software Tecnology, v.49, n.5, p.515-529, maio de 2007.

BARRETO, P. L.; BOAS, A. V. Personalização do Processo de Gestão de

Configuração de Software para Projetos de Manutenção. WORKSHOP DE

MANUTENÇÃO DE SOFTWARE MODERNA 3, Vila Velha - ES, Brasil, maio de 2006.

BUSSAB. W. O.; MORETTIN, P. A. Estatística Básica. 5.ed. São Paulo: Saraiva, 2003.

BRASSARD, M. et al. The Problem Solving Memory Jogger. Seven Steps to Improved Processes. GOAL/QPC, First Edition, 2000.

BRASSARD, M.; RITTER, D. The Memory Jogger II. A Pocket Guide of Tools for Continuous Improvement and Effective Planning. GOAL/QPC, First Edition, 1994. BRUSAMOLIN, V. Manutenibilidade de Software. Instituto Científico de Ensino Superior e Pesquisa – ICESP. Revista Digital Online, v.2, 2004. 6p.

CAMPOS, F. B. Qualilty Function Deployment no desenvolvimento de software.

Tutorial – Abordagem – Exemplo. Universidade Católica de Brasília. 2009. 17p.

(material ministrado na disciplina Qualidade de Software do curso Mestrado em Gestão do Conhecimento e da Tecnologia da Informação)

CHAPIN, N. et al. Types of Software Evolution and Software Maintenance. Journal

of Software Maintenance and Evolution: Research and Practice, John Wiley &

Sons Ltd, v.13, p.3-30, 2001.

CHAPMAN, P. et al. CRISP-DM 1.0. Step-by-step data mining guide. SPSS, 2000. 77p.