SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
Mineração de Dados Aplicada em Engenharia de Software
Bruno Alisson Eliseu de Almeida
Faculdade Sul Americana (FASAM)
Goiânia, GO – Brasil
bruno_alisson_@hotmail.com
Abstract. The companies have applied more and more Software Engineering
processes in your projects to improve the quality of products offered, which
generates a large amount of data. Among the Software Engineering processes
there is Risk Management, which consists in the identification and treatment of
risks that are identified during project planning. Only store the data generated
by the use of the Software Engineering does not provide anything other than a
history. Data Mining appears as an option to better utilize data that was
stored from the past projects, in order to find patterns in the data that
facilitate decision making on the part of the company. The work described in
this project aims to produce theoretical material on the use of Data Mining in
Risk Management to obtain information that may represent advantages for the
company.
Resumo. As empresas têm empregado cada vez mais os processos da
Engenharia de Software em seus projetos para melhorar a qualidade dos
produtos oferecidos, o que gera uma grande quantidade de dados. Entre os
processos da Engenharia de Software existe a Gerência de Riscos, que
consiste na identificação e tratamento dos riscos que são identificados durante
o planejamento do projeto. Apenas armazenar os dados gerados pela
utilização da Engenharia de Software não fornece nada além de um histórico.
A Mineração de Dados surge então como uma opção para melhor utilizar os
dados que foram armazenados dos projetos passados, a fim de encontrar
padrões nos dados que possibilitem a tomada de decisões por parte da
empresa. O trabalho descrito nesse projeto visa produzir material teórico da
utilização da Mineração de Dados em Gerência de Riscos para obtenção de
informações que possam representar vantagens para a empresa.
1. Introdução
Atualmente, as empresas que produzem algum tipo de software, seja para
comercialização ou para uso próprio, precisam garantir que ele atenda ao propósito para
qual foi criado, por mais simples que esse software seja. Sendo assim, as empresas têm
utilizado cada vez mais ferramentas para gerenciar o processo de desenvolvimento
desses softwares para garantir qualidade. Isso significa que as empresas têm utilizado
cada vez mais os conceitos de Engenharia de Software, ainda que de forma simples, em
seus projetos [Sommerville 2007].
O processo de desenvolvimento de um software gera uma documentação muito
importante para o projeto atual e para projetos futuros, servindo como histórico. Tal
documentação inclui diversas métricas do desenvolvimento do software, como prazos,
custos e riscos envolvidos.
Com o passar do tempo esse histórico tende a aumentar cada vez mais, tendo em
vista que a empresa está sempre trabalhando em novos projetos e mantendo os projetos
já existentes, a encontrar informações importantes contidas no histórico passa a ser uma
tarefa mais complexa devido à quantidade de dados. Nesse ponto a Mineração de Dados
pode se tornar uma ferramenta interessante, uma vez que, por meio de suas técnicas,
pode encontrar padrões dentro desse histórico que podem ser relevantes para o
desenvolvimento de projetos futuros [Pressman 2004].
Este estudo busca mostrar como as técnicas de Mineração de Dados podem ser
aplicadas em Engenharia de Software, no contexto da Gerência de Riscos, para a
melhoria do gerenciamento do processo de desenvolvimento de software, encontrando
padrões nos dados do histórico que possam servir de apoio para projetos futuros.
Nos capítulos iniciais será feito um levantamento de material teórico sobre
Mineração de Dados e Gerência de Riscos quer servirá de base de conhecimento sobre o
tema principal deste trabalho, bem como para trabalhos futuros. Este levantamento
teórico não será muito aprofundado, será elaborado apenas para que o objeto do estudo
possa ser compreendido sem que haja necessidade de consulta a fontes externas.
Em seguida, serão aplicadas as técnicas de Mineração de Dados nos dados do
histórico de processos de desenvolvimento de software. Estes dados serão fictícios e
criados pelo autor do estudo para utilização no estudo.
Por fim, serão apresentados os resultados do estudo, assim como as
considerações feitas pelo autor para que sirvam de material científico para trabalhos
subsequentes.
2. Referencial Teórico
Neste capítulo, serão expostos os conceitos sobre Engenharia de Software,
Gerência de Riscos e Mineração de Dados. Objetivo deste é servir de base de
conhecimento sobre o assunto que será abordado durante este estudo, para que o objeto
do estudo e os resultados obtidos possam ser compreendidos.
2.1. Engenharia de Software
Com os softwares se tornando mais complexos e, consequentemente, seu
desenvolvimento e manutenção, percebeu-se a necessidade de aprimorar o
desenvolvimento de software com foco na qualidade do produto. Com isso, na década
de 1960, foi criado o termo Engenharia de Software, onde foram incluídos processos da
Engenharia tradicional no desenvolvimento de software.
A primeira definição oficial de Engenharia de Software coube à Friedrich
Ludwig Bauer, que disse: Engenharia de Software é o estabelecimento e o emprego de
sólidos princípios de Engenharia de modo a obter software de maneira econômica, que
seja confiável e funcione de forma eficiente em máquinas reais [Bauer 1969].
Mais tarde, com a evolução do desenvolvimento de software, o IEEE trouxe uma
nova definição para Engenharia de Software: A aplicação de uma abordagem
sistemática, disciplinada e quantificável no desenvolvimento, na operação e na
manutenção de software; isto é, a aplicação de Engenharia ao software [IEEE 1993].
A Engenharia de Software passou então a ser alvo de estudos cada vez mais
aprofundados. Segundo Pressman, A Engenharia de Software é uma tecnologia em
camadas: processos, métodos e ferramentas, fundamentada em um comprometimento
organizacional com a qualidade [Pressman 2011].
•Processos: é a base da Engenharia de Software que liga as camadas de
métodos e ferramentas e define a metodologia que deve ser estabelecida para
a entrega do software;
•Métodos: define como o software deve ser feito;
•Ferramentas: fornecem suporte para os processos e métodos.
Figura 1 - Engenharia de Software
Mas ainda faltava um documento para servir de referência para o
desenvolvimento de software seguindo as definições da Engenharia de Software, foi
então criado o SWEBOK com o objetivo de:
•Promover uma visão consistente da Engenharia de Software;
•Diferenciar a Engenharia de Software das outras disciplinas;
•Caracterizar a Engenharia de Software;
•Classificar a Engenharia de Software em tópicos;
•Prover a fundação para o desenvolvimento do currículo, certificação e
licenciamento.
O SWEBOK divide a Engenharia de Software em:
•Requisitos de software;
•Projeto de software;
•Construção de software;
•Teste de software;
•Manutenção de software;
•Gerência de configuração de software;
•Gerência de Engenharia de Software;
•Ferramentas e métodos da Engenharia de Software;
•Qualidade de software.
2.1.1. Gerência de Riscos
A Gerência de Riscos é uma das etapas do projeto de software e consiste em
identificar riscos que podem ocorrer durante o desenvolvimento do software e que
podem influenciar o objetivo do projeto.
O PMI define risco como um evento ou condição que, se ocorrer, terá um efeito
positivo ou negativo sobre pelo menos um objetivo do projeto, como tempo, custo,
âmbito ou qualidade [PMI 2004].
Os riscos geralmente são associados às ameaças ao projeto, mas também podem
representar oportunidades. Todavia, ameaça ou oportunidade, se ocorrer e, dependendo
da ação tomada, pode impactar o projeto.
A Gerência de Riscos tem como objetivo tratar os riscos inerentes ao projeto de
forma que o impacto causado seja o menor possível. O PMBOK divide a Gerência de
Riscos em [PMI 2004]:
•Identificação de riscos: determina e documenta os riscos que podem
afetar o projeto, utilizando revisões da documentação, técnicas de coleta de
informações e brainstormings.
•Análise qualitativa de riscos: avalia a prioridade dos riscos identificados
de acordo com a probabilidade de ocorrerem e o impacto no projeto.
•Análise quantitativa de riscos: classifica os riscos priorizados na análise
qualitativa de acordo com o efeito que podem causar ao projeto.
•Planejamento de resposta de risco: planeja opções e ações para aumentar
as oportunidades e diminuir o impacto das ameaças encontradas.
•Monitoramento e controle de risco: acompanha os riscos identificados,
identifica novos riscos, executa as ações planejadas e avalia a eficácia dessas
ações.
Figura 2 - Gerenciamento de Riscos
2.2. Mineração de Dados
A Mineração de Dados consiste em explorar grandes quantidades de dados em
busca de padrões que podem ser úteis, podendo ser aplicada em praticamente todas as
áreas do conhecimento [Almeida 2011].
A Mineração de Dados organiza os dados de acordo com a necessidade:
•Associação: determina situações que tendem a ocorrer num mesmo
evento;
•Classificação: categoriza os objetos em classe;
•Predição/Previsão: predição é usada para tentar definir o valor de uma
variável. Previsão é utilizada quando se tem séries temporais;
•Agrupamento ou Clusterização: agrupa os objetos de acordo com as suas
características.
A Mineração de Dados utiliza técnicas que dependem do tipo de dado e o
propósito da análise:
•Árvores de Decisão: um problema é dividido em problemas menores,
visualizado em forma de árvore, onde cada ramo é um problema e cada nó é
um conjunto de dados que o resolvem;
•Regras de Indução: são criadas regras condicionais do tipo “se
<condição> então <consequência>” e analisada a precisão dessas regras;
•Redes Neurais Artificiais: é composto por uma ou mais camadas de
entrada, n camadas intermediárias é uma saída. Cada neurônio analisa os
valores de entrada, calcula os possíveis valores de saída e determina a saída;
•Análise de Regressão: explica uma ou mais variáveis em função de
outras.
•Clusterização: agrupa os objetos em subconjuntos de acordo com
características em comum.
A Mineração de Dados é uma etapa de um processo maior, o KDD, que
determina todo o caminho que os dados passam para serem transformados em
informação [Fayyad 1996]. O KDD é dividido nas seguintes fases:
•Seleção dos Dados: são selecionados os dados que serão analisados;
•Pré-Processamento e Limpeza: são tratados os dados redundantes,
inconsistentes e incompletos;
•Transformação: armazena e formata os dados;
•Mineração de Dados: aplica as técnicas de mineração escolhidas;
•Interpretação: o resultado da mineração é interpretado e avaliado.
Figura 3 - Mineração de Dados
3. Relação entre os Riscos Ocorridos e o Atraso do Projeto
Neste capítulo será apresentado um exemplo da utilização da Mineração de
Dados para obtenção de informação a partir de uma base de dados, descrevendo os
passos utilizados e o resultado final.
3.1. Base de Dados
A base de dados foi criada pelo autor deste trabalho utilizando dados fictícios,
que pode ser acessado em: http://1drv.ms/1LC6BrI. Os dados dos projetos são:
•Código;
•Descrição;
•Data de início;
•Previsão de término;
•Data de término.
Os riscos foram criados de forma genérica a atender a maioria dos projetos:
Falta de conhecimento da equipe sobre as tecnologias que serão
utilizadas no projeto;
Saída de membros da equipe;
Aquisição de novos equipamentos;
Atraso no cronograma;
Cancelamento do projeto;
Cronograma apertado;
Ausências de membros da equipe;
Contratação de novos membros para a equipe;
Concorrência entre projetos;
Estouro do orçamento.
Todos os riscos possuem ações envolvendo sua ocorrência:
•Resposta: aceitar, mitigar, evitar, transferir.
•Probabilidade: muito baixa, baixa, média, alta, muito alta.
•Severidade: muito baixo, baixo, médio, alto, muito alto.
•Impacto: custo, prazo, qualidade.
Também foi informado na base se o risco ocorreu. Tanto a data de término do
projeto quanto se o risco ocorreu foram gerados de forma aleatória.
3.2. Proposta
A proposta deste estudo de caso é estabelecer uma relação entre os riscos que
ocorreram durante o ciclo de vida do projeto e a conclusão do projeto no prazo definido.
3.3. Etapas
3.3.1. Seleção dos Dados
Os dados dos projetos e dos riscos são criados e relacionados em um arquivo no
formato XLSX do Microsoft Excel 2013.
3.3.2. Transformação
A base de dados precisa ser trabalhada antes que o algoritmo de mineração de
dados possa ser aplicado. Os dados que não são interessantes para a mineração de dados
foram removidos, como as descrições e datas, e deixando apenas os dados que são
interessantes ao estudo, como o código do risco, se o risco ocorreu e se o projeto
atrasou.
Os dados ficaram com a seguinte estrutura:
Tabela 1 - Estrutura dos Dados
Campo Tipo Descrição
R1 Texto, “S/N” Indica se o risco “Falta de
conhecimento da equipe
sobre as tecnologias que
serão utilizadas no projeto”
ocorreu.
R2 Texto, “S/N” Indica se o risco “Saída de
membros da equipe”
ocorreu.
R3 Texto, “S/N” Indica se o risco
“Aquisição de novos
equipamentos” ocorreu.
R4 Texto, “S/N” Indica se o risco “Atraso no
cronograma” ocorreu.
R5 Texto, “S/N” Indica se o risco
“Cancelamento do projeto”
ocorreu.
R6 Texto, “S/N” Indica se o risco
“Cronograma apertado”
ocorreu.
R7 Texto, “S/N” Indica se o risco
“Ausências de membros da
equipe” ocorreu.
R8 Texto, “S/N” Indica se o risco
“Contratação de novos
membros para a equipe”
ocorreu.
R9 Texto, “S/N” Indica se o risco
“Concorrência entre
projetos” ocorreu.
R10 Texto, “S/N” Indica se o risco “Estouro
do orçamento” ocorreu.
Ocorreu Numérico, 0/1 Indica se o risco ocorreu (0
= não; 1 = sim).
3.3.3. Mineração de Dados
O WEKA, software utilizado nesse estudo para aplicar o algoritmo de mineração
de dados, não é capaz de acessar os dados diretamente de um arquivo do Microsoft
Excel, portanto os dados precisaram ser convertidos para o tipo de dados ARFF que o
WEKA utiliza.
O algoritmo do escolhido foi o J48 devido ao tipo dos dados que serão
analisados e o resultado esperado. O algoritmo J48 constrói uma árvore de decisão. A
forma de construção da árvore usa a abordagem “top-down”, em que o atributo mais
generalizado é considerado a raiz da árvore. A seguir, o próximo nó da árvore será o
segundo atributo mais generalizado, e assim por diante até que seja encontrado o nó
folha, que representa o atributo alvo.
3.3.4. Interpretação
Figura 4 - Resultado WEKA
Figura 5 - Árvore WEKA
Analisando os resultados que o WEKA retornou, é possível concluir que os
riscos R2 (Saída de membros da equipe) e R9 (Concorrência entre projetos) são
determinantes para que o projeto atrase e o restante dos riscos não tem influência direta
no atraso do projeto.
4. Conclusão
As empresas de Tecnologia da Informação estão inserindo cada vez mais os
processos da Engenharia de Software em seus projetos com o intuito de agregar
qualidade aos seus produtos e garantir vantagens ante à concorrência.
A utilização da Engenharia de Software gera um volume grande de dados sobre
os projetos executados e, na maioria dos casos, essa informação é guardada e utilizada
apenas como histórico quando é uma fonte de muita informação útil para a empresa.
No caso específico da Gerência de Riscos, os dados gerados ao longe do tempo
pelos projetos que foram executados pela empresa podem se transformar em informação
muito útil para os projetos futuros, gerando economia e maior maturidade dos processos
de desenvolvimento.
A Mineração de Dados faz justamente o papel de extrair informação de grandes
volumes de dados, informação essa que pode ser útil para a tomada de decisões da
empresa e que para ser extraída de forma manual levaria muito tempo e teria um custo
muito maior.
A aplicação da Mineração de Dados possibilitou identificar que, na base de
dados utilizada nesse estudo, os riscos R2 (Saída de membros da equipe) e R9
(Concorrência entre projetos) impactam diretamente o tempo de conclusão de um
projeto. Essa informação permite o gestor do negócio identificar quais pontos precisam
ser melhorados no tratamento dos riscos em questão para que deixem de impactar
negativamente os projetos.
Como sugestão para trabalhos futuros envolvendo Engenharia de Software e
Mineração de Dados, é recomendado um estudo de novas áreas da Engenharia de
Software onde as técnicas de Mineração de Dados possam ser aplicadas de forma a dar
vantagens à empresa.
Referências
ALMEIDA, Bruno Alisson Eliseu de. Mineração de Dados: Conceitos e Aplicações.
Anápolis, 2011. (UEG/UnUCET, Bacharelado em Sistemas de Informação, 2011).
CÔRTES, Sérgio da Costa; LIFSCHITZ, Sérgio; PORCARO, Rosa Maria.
Mineração de Dados – Funcionalidades, Técnicas e Abordagens. PUC-Rio,
2002.
GOMEZ, Thiago C. Gerenciamento de Riscos Utilizando o PMBOK. Monografia de
Bacharelado em Ciência da Computação, Faculdade Lourenço Filho, Fortaleza, 2010.
JÚNIOR, Methanias Colaço Rodrigues. Mineração de Repositórios de Software: A
Computação ajudando à Computação. Descoberta de padrões em Engenharia
de Software. Disponível em:
http://www.devmedia.com.br/mineracao-de-repositorios-de-software-a-computacao-
ajudando-acomputacao/17632.
PRASS, Fernando Sarturi. KDD: Processo de Descoberta em Banco de Dados. Grupo
de Interesse em Engenharia de Software, Florianópolis, 2004.
PRESSMAN, Roger S. Engenharia de Software – Uma Abordagem Profissional. 7.
ed. São Paulo, Amgh Editora, 2011.
PROJECT MANAGEMENTE INSTITUTE (PMI). Um Guia do Conjunto de
Conhecimentos em Gerenciamento de Projetos. 3ª edição, Project Management
Institute Inc., 2004.
ROVAI, Ricardo L. Modelo Estruturado para Gestão de Riscos em Projetos: Estudo
de Múltiplos Casos. Tese de Doutorado em Engenharia de Produção, Escola
Politécnica, Universidade de São Paulo, São Paulo, 2005.
SOMMERVILLE, Ian. Engenharia de Software. 8. ed. São Paulo, Pearson, 2007.

Mais conteúdo relacionado

Semelhante a Mineração de Dados Aplicada em Engenharia de Software

PDSI.INT- S01 Introdução a Eng Software e Processo.pdf
PDSI.INT- S01 Introdução a Eng Software e Processo.pdfPDSI.INT- S01 Introdução a Eng Software e Processo.pdf
PDSI.INT- S01 Introdução a Eng Software e Processo.pdfpedrina4
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de SoftwareNécio de Lima Veras
 
Fabrica.Software.Concepcao.Licoes.Aprendidas
Fabrica.Software.Concepcao.Licoes.AprendidasFabrica.Software.Concepcao.Licoes.Aprendidas
Fabrica.Software.Concepcao.Licoes.AprendidasAnnkatlover
 
Implantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLImplantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLAnnkatlover
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De SoftwareFelipe Goulart
 
Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).Érika Santos
 
Es17 predicao de defeitos em software
Es17   predicao de defeitos em softwareEs17   predicao de defeitos em software
Es17 predicao de defeitos em softwareVictor Hugo
 
modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3spawally
 
Fundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxFundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxRoberto Nunes
 
Fases do desenvolvimento de software baseado no código de ética.
Fases do desenvolvimento de software baseado no código de ética.Fases do desenvolvimento de software baseado no código de ética.
Fases do desenvolvimento de software baseado no código de ética.Ronildo Oliveira
 
Engenharia de requisitos para metodos ageis dissertacao
Engenharia de requisitos para metodos ageis   dissertacaoEngenharia de requisitos para metodos ageis   dissertacao
Engenharia de requisitos para metodos ageis dissertacaotsblackboy
 
Indicadores de políticas públicas e métricas de software: uma visão em paralelo
Indicadores de políticas públicas e métricas de software: uma visão em paraleloIndicadores de políticas públicas e métricas de software: uma visão em paralelo
Indicadores de políticas públicas e métricas de software: uma visão em paraleloRoberto de Pinho
 
Aula 1 Analise e Projeto
Aula 1   Analise e ProjetoAula 1   Analise e Projeto
Aula 1 Analise e ProjetoSergio Silva
 
Apresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane FidelixApresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane FidelixCris Fidelix
 

Semelhante a Mineração de Dados Aplicada em Engenharia de Software (20)

PDSI.INT- S01 Introdução a Eng Software e Processo.pdf
PDSI.INT- S01 Introdução a Eng Software e Processo.pdfPDSI.INT- S01 Introdução a Eng Software e Processo.pdf
PDSI.INT- S01 Introdução a Eng Software e Processo.pdf
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
Fabrica.Software.Concepcao.Licoes.Aprendidas
Fabrica.Software.Concepcao.Licoes.AprendidasFabrica.Software.Concepcao.Licoes.Aprendidas
Fabrica.Software.Concepcao.Licoes.Aprendidas
 
Implantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLImplantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SL
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 
Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).
 
Rbt Group At Promise V3
Rbt Group At Promise V3Rbt Group At Promise V3
Rbt Group At Promise V3
 
Es17 predicao de defeitos em software
Es17   predicao de defeitos em softwareEs17   predicao de defeitos em software
Es17 predicao de defeitos em software
 
modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3
 
Aula1 introducao engsw
Aula1 introducao engswAula1 introducao engsw
Aula1 introducao engsw
 
Fundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxFundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptx
 
Fases do desenvolvimento de software baseado no código de ética.
Fases do desenvolvimento de software baseado no código de ética.Fases do desenvolvimento de software baseado no código de ética.
Fases do desenvolvimento de software baseado no código de ética.
 
Artigo corrigido
Artigo corrigidoArtigo corrigido
Artigo corrigido
 
Engenharia de requisitos para metodos ageis dissertacao
Engenharia de requisitos para metodos ageis   dissertacaoEngenharia de requisitos para metodos ageis   dissertacao
Engenharia de requisitos para metodos ageis dissertacao
 
Jucelir
JucelirJucelir
Jucelir
 
Indicadores de políticas públicas e métricas de software: uma visão em paralelo
Indicadores de políticas públicas e métricas de software: uma visão em paraleloIndicadores de políticas públicas e métricas de software: uma visão em paralelo
Indicadores de políticas públicas e métricas de software: uma visão em paralelo
 
Aula 1 Analise e Projeto
Aula 1   Analise e ProjetoAula 1   Analise e Projeto
Aula 1 Analise e Projeto
 
Aula 1 analise e projeto
Aula 1   analise e projetoAula 1   analise e projeto
Aula 1 analise e projeto
 
Apresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane FidelixApresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane Fidelix
 
Aula 02
Aula 02Aula 02
Aula 02
 

Mineração de Dados Aplicada em Engenharia de Software

  • 1. Mineração de Dados Aplicada em Engenharia de Software Bruno Alisson Eliseu de Almeida Faculdade Sul Americana (FASAM) Goiânia, GO – Brasil bruno_alisson_@hotmail.com Abstract. The companies have applied more and more Software Engineering processes in your projects to improve the quality of products offered, which generates a large amount of data. Among the Software Engineering processes there is Risk Management, which consists in the identification and treatment of risks that are identified during project planning. Only store the data generated by the use of the Software Engineering does not provide anything other than a history. Data Mining appears as an option to better utilize data that was stored from the past projects, in order to find patterns in the data that facilitate decision making on the part of the company. The work described in this project aims to produce theoretical material on the use of Data Mining in Risk Management to obtain information that may represent advantages for the company. Resumo. As empresas têm empregado cada vez mais os processos da Engenharia de Software em seus projetos para melhorar a qualidade dos produtos oferecidos, o que gera uma grande quantidade de dados. Entre os processos da Engenharia de Software existe a Gerência de Riscos, que consiste na identificação e tratamento dos riscos que são identificados durante o planejamento do projeto. Apenas armazenar os dados gerados pela utilização da Engenharia de Software não fornece nada além de um histórico. A Mineração de Dados surge então como uma opção para melhor utilizar os dados que foram armazenados dos projetos passados, a fim de encontrar padrões nos dados que possibilitem a tomada de decisões por parte da empresa. O trabalho descrito nesse projeto visa produzir material teórico da utilização da Mineração de Dados em Gerência de Riscos para obtenção de informações que possam representar vantagens para a empresa. 1. Introdução Atualmente, as empresas que produzem algum tipo de software, seja para comercialização ou para uso próprio, precisam garantir que ele atenda ao propósito para qual foi criado, por mais simples que esse software seja. Sendo assim, as empresas têm utilizado cada vez mais ferramentas para gerenciar o processo de desenvolvimento desses softwares para garantir qualidade. Isso significa que as empresas têm utilizado cada vez mais os conceitos de Engenharia de Software, ainda que de forma simples, em seus projetos [Sommerville 2007]. O processo de desenvolvimento de um software gera uma documentação muito importante para o projeto atual e para projetos futuros, servindo como histórico. Tal
  • 2. documentação inclui diversas métricas do desenvolvimento do software, como prazos, custos e riscos envolvidos. Com o passar do tempo esse histórico tende a aumentar cada vez mais, tendo em vista que a empresa está sempre trabalhando em novos projetos e mantendo os projetos já existentes, a encontrar informações importantes contidas no histórico passa a ser uma tarefa mais complexa devido à quantidade de dados. Nesse ponto a Mineração de Dados pode se tornar uma ferramenta interessante, uma vez que, por meio de suas técnicas, pode encontrar padrões dentro desse histórico que podem ser relevantes para o desenvolvimento de projetos futuros [Pressman 2004]. Este estudo busca mostrar como as técnicas de Mineração de Dados podem ser aplicadas em Engenharia de Software, no contexto da Gerência de Riscos, para a melhoria do gerenciamento do processo de desenvolvimento de software, encontrando padrões nos dados do histórico que possam servir de apoio para projetos futuros. Nos capítulos iniciais será feito um levantamento de material teórico sobre Mineração de Dados e Gerência de Riscos quer servirá de base de conhecimento sobre o tema principal deste trabalho, bem como para trabalhos futuros. Este levantamento teórico não será muito aprofundado, será elaborado apenas para que o objeto do estudo possa ser compreendido sem que haja necessidade de consulta a fontes externas. Em seguida, serão aplicadas as técnicas de Mineração de Dados nos dados do histórico de processos de desenvolvimento de software. Estes dados serão fictícios e criados pelo autor do estudo para utilização no estudo. Por fim, serão apresentados os resultados do estudo, assim como as considerações feitas pelo autor para que sirvam de material científico para trabalhos subsequentes. 2. Referencial Teórico Neste capítulo, serão expostos os conceitos sobre Engenharia de Software, Gerência de Riscos e Mineração de Dados. Objetivo deste é servir de base de conhecimento sobre o assunto que será abordado durante este estudo, para que o objeto do estudo e os resultados obtidos possam ser compreendidos. 2.1. Engenharia de Software Com os softwares se tornando mais complexos e, consequentemente, seu desenvolvimento e manutenção, percebeu-se a necessidade de aprimorar o desenvolvimento de software com foco na qualidade do produto. Com isso, na década de 1960, foi criado o termo Engenharia de Software, onde foram incluídos processos da Engenharia tradicional no desenvolvimento de software. A primeira definição oficial de Engenharia de Software coube à Friedrich Ludwig Bauer, que disse: Engenharia de Software é o estabelecimento e o emprego de sólidos princípios de Engenharia de modo a obter software de maneira econômica, que seja confiável e funcione de forma eficiente em máquinas reais [Bauer 1969]. Mais tarde, com a evolução do desenvolvimento de software, o IEEE trouxe uma nova definição para Engenharia de Software: A aplicação de uma abordagem
  • 3. sistemática, disciplinada e quantificável no desenvolvimento, na operação e na manutenção de software; isto é, a aplicação de Engenharia ao software [IEEE 1993]. A Engenharia de Software passou então a ser alvo de estudos cada vez mais aprofundados. Segundo Pressman, A Engenharia de Software é uma tecnologia em camadas: processos, métodos e ferramentas, fundamentada em um comprometimento organizacional com a qualidade [Pressman 2011]. •Processos: é a base da Engenharia de Software que liga as camadas de métodos e ferramentas e define a metodologia que deve ser estabelecida para a entrega do software; •Métodos: define como o software deve ser feito; •Ferramentas: fornecem suporte para os processos e métodos. Figura 1 - Engenharia de Software Mas ainda faltava um documento para servir de referência para o desenvolvimento de software seguindo as definições da Engenharia de Software, foi então criado o SWEBOK com o objetivo de: •Promover uma visão consistente da Engenharia de Software; •Diferenciar a Engenharia de Software das outras disciplinas; •Caracterizar a Engenharia de Software; •Classificar a Engenharia de Software em tópicos; •Prover a fundação para o desenvolvimento do currículo, certificação e licenciamento.
  • 4. O SWEBOK divide a Engenharia de Software em: •Requisitos de software; •Projeto de software; •Construção de software; •Teste de software; •Manutenção de software; •Gerência de configuração de software; •Gerência de Engenharia de Software; •Ferramentas e métodos da Engenharia de Software; •Qualidade de software. 2.1.1. Gerência de Riscos A Gerência de Riscos é uma das etapas do projeto de software e consiste em identificar riscos que podem ocorrer durante o desenvolvimento do software e que podem influenciar o objetivo do projeto. O PMI define risco como um evento ou condição que, se ocorrer, terá um efeito positivo ou negativo sobre pelo menos um objetivo do projeto, como tempo, custo, âmbito ou qualidade [PMI 2004]. Os riscos geralmente são associados às ameaças ao projeto, mas também podem representar oportunidades. Todavia, ameaça ou oportunidade, se ocorrer e, dependendo da ação tomada, pode impactar o projeto. A Gerência de Riscos tem como objetivo tratar os riscos inerentes ao projeto de forma que o impacto causado seja o menor possível. O PMBOK divide a Gerência de Riscos em [PMI 2004]: •Identificação de riscos: determina e documenta os riscos que podem afetar o projeto, utilizando revisões da documentação, técnicas de coleta de informações e brainstormings. •Análise qualitativa de riscos: avalia a prioridade dos riscos identificados de acordo com a probabilidade de ocorrerem e o impacto no projeto. •Análise quantitativa de riscos: classifica os riscos priorizados na análise qualitativa de acordo com o efeito que podem causar ao projeto. •Planejamento de resposta de risco: planeja opções e ações para aumentar as oportunidades e diminuir o impacto das ameaças encontradas. •Monitoramento e controle de risco: acompanha os riscos identificados, identifica novos riscos, executa as ações planejadas e avalia a eficácia dessas ações.
  • 5. Figura 2 - Gerenciamento de Riscos 2.2. Mineração de Dados A Mineração de Dados consiste em explorar grandes quantidades de dados em busca de padrões que podem ser úteis, podendo ser aplicada em praticamente todas as áreas do conhecimento [Almeida 2011]. A Mineração de Dados organiza os dados de acordo com a necessidade: •Associação: determina situações que tendem a ocorrer num mesmo evento; •Classificação: categoriza os objetos em classe; •Predição/Previsão: predição é usada para tentar definir o valor de uma variável. Previsão é utilizada quando se tem séries temporais; •Agrupamento ou Clusterização: agrupa os objetos de acordo com as suas características. A Mineração de Dados utiliza técnicas que dependem do tipo de dado e o propósito da análise: •Árvores de Decisão: um problema é dividido em problemas menores, visualizado em forma de árvore, onde cada ramo é um problema e cada nó é um conjunto de dados que o resolvem; •Regras de Indução: são criadas regras condicionais do tipo “se <condição> então <consequência>” e analisada a precisão dessas regras; •Redes Neurais Artificiais: é composto por uma ou mais camadas de entrada, n camadas intermediárias é uma saída. Cada neurônio analisa os valores de entrada, calcula os possíveis valores de saída e determina a saída;
  • 6. •Análise de Regressão: explica uma ou mais variáveis em função de outras. •Clusterização: agrupa os objetos em subconjuntos de acordo com características em comum. A Mineração de Dados é uma etapa de um processo maior, o KDD, que determina todo o caminho que os dados passam para serem transformados em informação [Fayyad 1996]. O KDD é dividido nas seguintes fases: •Seleção dos Dados: são selecionados os dados que serão analisados; •Pré-Processamento e Limpeza: são tratados os dados redundantes, inconsistentes e incompletos; •Transformação: armazena e formata os dados; •Mineração de Dados: aplica as técnicas de mineração escolhidas; •Interpretação: o resultado da mineração é interpretado e avaliado. Figura 3 - Mineração de Dados 3. Relação entre os Riscos Ocorridos e o Atraso do Projeto Neste capítulo será apresentado um exemplo da utilização da Mineração de Dados para obtenção de informação a partir de uma base de dados, descrevendo os passos utilizados e o resultado final. 3.1. Base de Dados A base de dados foi criada pelo autor deste trabalho utilizando dados fictícios, que pode ser acessado em: http://1drv.ms/1LC6BrI. Os dados dos projetos são: •Código; •Descrição; •Data de início; •Previsão de término;
  • 7. •Data de término. Os riscos foram criados de forma genérica a atender a maioria dos projetos: Falta de conhecimento da equipe sobre as tecnologias que serão utilizadas no projeto; Saída de membros da equipe; Aquisição de novos equipamentos; Atraso no cronograma; Cancelamento do projeto; Cronograma apertado; Ausências de membros da equipe; Contratação de novos membros para a equipe; Concorrência entre projetos; Estouro do orçamento. Todos os riscos possuem ações envolvendo sua ocorrência: •Resposta: aceitar, mitigar, evitar, transferir. •Probabilidade: muito baixa, baixa, média, alta, muito alta. •Severidade: muito baixo, baixo, médio, alto, muito alto. •Impacto: custo, prazo, qualidade. Também foi informado na base se o risco ocorreu. Tanto a data de término do projeto quanto se o risco ocorreu foram gerados de forma aleatória. 3.2. Proposta A proposta deste estudo de caso é estabelecer uma relação entre os riscos que ocorreram durante o ciclo de vida do projeto e a conclusão do projeto no prazo definido. 3.3. Etapas 3.3.1. Seleção dos Dados Os dados dos projetos e dos riscos são criados e relacionados em um arquivo no formato XLSX do Microsoft Excel 2013. 3.3.2. Transformação A base de dados precisa ser trabalhada antes que o algoritmo de mineração de dados possa ser aplicado. Os dados que não são interessantes para a mineração de dados foram removidos, como as descrições e datas, e deixando apenas os dados que são interessantes ao estudo, como o código do risco, se o risco ocorreu e se o projeto atrasou.
  • 8. Os dados ficaram com a seguinte estrutura: Tabela 1 - Estrutura dos Dados Campo Tipo Descrição R1 Texto, “S/N” Indica se o risco “Falta de conhecimento da equipe sobre as tecnologias que serão utilizadas no projeto” ocorreu. R2 Texto, “S/N” Indica se o risco “Saída de membros da equipe” ocorreu. R3 Texto, “S/N” Indica se o risco “Aquisição de novos equipamentos” ocorreu. R4 Texto, “S/N” Indica se o risco “Atraso no cronograma” ocorreu. R5 Texto, “S/N” Indica se o risco “Cancelamento do projeto” ocorreu. R6 Texto, “S/N” Indica se o risco “Cronograma apertado” ocorreu. R7 Texto, “S/N” Indica se o risco “Ausências de membros da equipe” ocorreu. R8 Texto, “S/N” Indica se o risco “Contratação de novos membros para a equipe” ocorreu. R9 Texto, “S/N” Indica se o risco “Concorrência entre projetos” ocorreu. R10 Texto, “S/N” Indica se o risco “Estouro do orçamento” ocorreu. Ocorreu Numérico, 0/1 Indica se o risco ocorreu (0 = não; 1 = sim). 3.3.3. Mineração de Dados O WEKA, software utilizado nesse estudo para aplicar o algoritmo de mineração de dados, não é capaz de acessar os dados diretamente de um arquivo do Microsoft
  • 9. Excel, portanto os dados precisaram ser convertidos para o tipo de dados ARFF que o WEKA utiliza. O algoritmo do escolhido foi o J48 devido ao tipo dos dados que serão analisados e o resultado esperado. O algoritmo J48 constrói uma árvore de decisão. A forma de construção da árvore usa a abordagem “top-down”, em que o atributo mais generalizado é considerado a raiz da árvore. A seguir, o próximo nó da árvore será o segundo atributo mais generalizado, e assim por diante até que seja encontrado o nó folha, que representa o atributo alvo. 3.3.4. Interpretação Figura 4 - Resultado WEKA Figura 5 - Árvore WEKA Analisando os resultados que o WEKA retornou, é possível concluir que os riscos R2 (Saída de membros da equipe) e R9 (Concorrência entre projetos) são
  • 10. determinantes para que o projeto atrase e o restante dos riscos não tem influência direta no atraso do projeto. 4. Conclusão As empresas de Tecnologia da Informação estão inserindo cada vez mais os processos da Engenharia de Software em seus projetos com o intuito de agregar qualidade aos seus produtos e garantir vantagens ante à concorrência. A utilização da Engenharia de Software gera um volume grande de dados sobre os projetos executados e, na maioria dos casos, essa informação é guardada e utilizada apenas como histórico quando é uma fonte de muita informação útil para a empresa. No caso específico da Gerência de Riscos, os dados gerados ao longe do tempo pelos projetos que foram executados pela empresa podem se transformar em informação muito útil para os projetos futuros, gerando economia e maior maturidade dos processos de desenvolvimento. A Mineração de Dados faz justamente o papel de extrair informação de grandes volumes de dados, informação essa que pode ser útil para a tomada de decisões da empresa e que para ser extraída de forma manual levaria muito tempo e teria um custo muito maior. A aplicação da Mineração de Dados possibilitou identificar que, na base de dados utilizada nesse estudo, os riscos R2 (Saída de membros da equipe) e R9 (Concorrência entre projetos) impactam diretamente o tempo de conclusão de um projeto. Essa informação permite o gestor do negócio identificar quais pontos precisam ser melhorados no tratamento dos riscos em questão para que deixem de impactar negativamente os projetos. Como sugestão para trabalhos futuros envolvendo Engenharia de Software e Mineração de Dados, é recomendado um estudo de novas áreas da Engenharia de Software onde as técnicas de Mineração de Dados possam ser aplicadas de forma a dar vantagens à empresa. Referências ALMEIDA, Bruno Alisson Eliseu de. Mineração de Dados: Conceitos e Aplicações. Anápolis, 2011. (UEG/UnUCET, Bacharelado em Sistemas de Informação, 2011). CÔRTES, Sérgio da Costa; LIFSCHITZ, Sérgio; PORCARO, Rosa Maria. Mineração de Dados – Funcionalidades, Técnicas e Abordagens. PUC-Rio, 2002. GOMEZ, Thiago C. Gerenciamento de Riscos Utilizando o PMBOK. Monografia de Bacharelado em Ciência da Computação, Faculdade Lourenço Filho, Fortaleza, 2010. JÚNIOR, Methanias Colaço Rodrigues. Mineração de Repositórios de Software: A Computação ajudando à Computação. Descoberta de padrões em Engenharia de Software. Disponível em: http://www.devmedia.com.br/mineracao-de-repositorios-de-software-a-computacao- ajudando-acomputacao/17632.
  • 11. PRASS, Fernando Sarturi. KDD: Processo de Descoberta em Banco de Dados. Grupo de Interesse em Engenharia de Software, Florianópolis, 2004. PRESSMAN, Roger S. Engenharia de Software – Uma Abordagem Profissional. 7. ed. São Paulo, Amgh Editora, 2011. PROJECT MANAGEMENTE INSTITUTE (PMI). Um Guia do Conjunto de Conhecimentos em Gerenciamento de Projetos. 3ª edição, Project Management Institute Inc., 2004. ROVAI, Ricardo L. Modelo Estruturado para Gestão de Riscos em Projetos: Estudo de Múltiplos Casos. Tese de Doutorado em Engenharia de Produção, Escola Politécnica, Universidade de São Paulo, São Paulo, 2005. SOMMERVILLE, Ian. Engenharia de Software. 8. ed. São Paulo, Pearson, 2007.