SlideShare uma empresa Scribd logo
1 de 2
Baixar para ler offline
INFORMAÇÕES DE SISTEMAS DE CONTROLE DE VERSÃO - CONT

I. Contexto

Nos últimos anos temos observados diversas pesquisas que consolidam dados vindos de
sistemas de controle de versões para gerar informações úteis para a tomada de decisões por
parte de gerentes de projeto.

Um destes ramos de pesquisa envolve a detecção de mudanças conjuntas entre os arquivos
que compõem um projeto de software, como forma de predizer mudanças futuras no projeto
ou indicar mudanças que deveriam ter ocorrido, mas não foram observadas.

II. Identificando Mudanças Conjuntas

Partindo do terceiro trabalho, vocês já têm classes que representam os principais conceitos
envolvidos em sistemas de controle de versão: o log de um sistema, os arquivos que compõem
o sistema e as revisões sofridas por estes arquivos. Identificar mudanças conjuntas significa
analisar que arquivos mudaram em conjunto quando um ou mais arquivos foram alterados.

Para saber quantos e quais arquivos foram alterados em conjunto precisamos dividir o tempo
entre o início e o final do projeto em fatias. Uma fatia representa um pedaço de tempo e, para
simplificar o problema, consideraremos fatias de tempo uniformemente divididas. Por exemplo,
se um projeto durou uma semana (madrugada de segunda até a noite de sexta) e dividirmos
este tempo em cinco fatias, teremos a primeira fatia começando às 00:00 hr de segunda-feira
e terminando às 23:59hr da própria segunda; a segunda fatia cobrirá a terça-feira; a quarta
fatia cobrirá a quarta-feira; e assim sucessivamente, até sexta-feira.

Em cada fatia de tempo devemos registrar os arquivos que foram alterados durante aquela
fatia. Identificar estes arquivos é uma tarefa simples: lembrem-se que temos a data de cada
revisão (commit) sofrido pelos arquivos. Desta forma, basta marcarmos as faixas de tempo em
que cada arquivo sofreu pelo menos um commit. Assim, teremos uma matriz de alterações
como a apresentada abaixo:
 Faixa de tempo                        a.java         b.java         c.java         d.java
 17/11/2009, 00:00 hr a 00:30 hr          X              X
 17/11/2009, 00:30 hr a 01:00 hr                         X                            X
 ...
 17/11/2009, 06:00 hr a 06:30 hr         X              X              X
 ...

Pelas marcações apresentadas na matriz acima, vemos que o arquivo A sofreu alguma revisão
no período entre 00:00hr e 00:30hr do dia 17/Novembro/2009 (alguém anda trabalhando de
madrugada ...). Vemos também que este arquivo voltou a sofrer revisões entre 06:00hr e
06:30hr do mesmo dia (... e a noite foi longa!).

Além disso, vemos que sempre que o arquivo A foi alterado, o arquivo B também foi alterado.
Por outro lado, somente duas a cada três vezes em que o arquivo B foi alterado, o arquivo A
também foi alterado. Podemos concluir que 100% das vezes em que o arquivo A foi alterado, o
arquivo B também foi. Por outro lado, apenas 66% das vezes em que o arquivo B foi alterado,
o arquivo A também foi. Para cada arquivo, podemos identificar o percentual de chances de
cada um dos outros arquivos ser alterado quando o primeiro sofrer alterações.

O cálculo do percentual de chances de alteração conjunta entre os pares de arquivos resulta na
seguinte matriz de probabilidade de alteração conjunta. Naturalmente, esta matriz será mais
precisa se tivermos mais faixas de tempo para comparar.
Faixa de tempo                   a.java          b.java          c.java          d.java
 a.java                           100%            100%             50%              0%
 b.java                            66%            100%             33%             33%
 c.java                           100%            100%            100%              0%
 d.java                            0%             100%              0%            100%

Agora, considere que um gerente de projeto determinou que o arquivo A sofrerá alterações ...
o que você pode dizer ao gerente sobre as possíveis alterações sofridas por outros arquivos?
Eu diria que o arquivo B provavelmente será alterado: não podemos ter certeza absoluta, pois
as alterações passadas podem ter tido objetivos diferentes da nova alteração. Diria também
que existe grande chance do arquivo C ser alterado (50% de chance).

E o que dizer quando o gerente informar que dois arquivos sofrerão alterações, por exemplo, A
e B. Neste caso, vamos adotar um critério conservador. Por exemplo, diríamos que existe uma
probabilidade de 50% de alterarmos o arquivo C (embora a probabilidade deste arquivo ser
alterado seja de apenas 33% por conta de B). Na mesma linha, diríamos que existe uma
probabilidade de 33% de alterarmos o arquivo D, muito embora a probabilidade de alterarmos
D seja 0% em função de A.

III. Objetivos do Trabalho

O quarto trabalho de Programação Modular tem como objetivo utilizar as informações
capturadas do log de um sistema de controle de versão para identificar mudanças conjuntas
em arquivos do projeto e predizer mudanças futuras.

Vocês deverão construir um programa que funcione por linha de comando (nada de interface
gráfica com o usuário ou interfaces textuais) e receba os seguintes parâmetros: nome do
arquivo de log, tamanho da fatia de tempo e nome de um arquivo complementar.

O arquivo complementar será um arquivo texto, onde cada linha terá o caminho completo (a
partir da raiz do projeto no sistema de controles de versão) de um arquivo que deve ser
considerado na identificação das mudanças conjuntas. Linhas em branco e começadas pelo
caractere # devem ser ignoradas na leitura deste arquivo.

O trabalho será avaliado da seguinte maneira: a implementação correta, com casos de teste
que demonstrem o funcionamento do programa, vale até 2,5 pontos. Identação, bons nomes
para os elementos do programa, comentários e organização geral vale 1 ponto. O último meio
ponto é deixado para a surpresa: surpreendam-me com alguma funcionalidade interessante
para o programa e ganhem este último meio ponto.

Acompanhem o Moodle com frequência para novidades sobre o quarto trabalho, pois novidades
vão aparecer ...

Mais conteúdo relacionado

Destaque

Lineamientos estratégicos para la comunicación global efectiva de mi marca
Lineamientos estratégicos para la comunicación global efectiva de mi marca Lineamientos estratégicos para la comunicación global efectiva de mi marca
Lineamientos estratégicos para la comunicación global efectiva de mi marca gladibelm
 
Figueira Alvarado
Figueira AlvaradoFigueira Alvarado
Figueira Alvaradofigueira
 
Inscriçao Moinho da Juventude
Inscriçao Moinho da JuventudeInscriçao Moinho da Juventude
Inscriçao Moinho da Juventudesijo33
 
DeclaraçãO De AceitaçãO
DeclaraçãO De AceitaçãODeclaraçãO De AceitaçãO
DeclaraçãO De AceitaçãOguestff083f9
 
Envolve Os Intervenientes Num Processo De IntrospecçãO Do Conhecimento E De
Envolve Os Intervenientes Num Processo De IntrospecçãO Do Conhecimento E DeEnvolve Os Intervenientes Num Processo De IntrospecçãO Do Conhecimento E De
Envolve Os Intervenientes Num Processo De IntrospecçãO Do Conhecimento E Deguestba87e4c
 
Misterios Da Musica
Misterios Da MusicaMisterios Da Musica
Misterios Da MusicaHOME
 
BOLETIM 20.12.2009
BOLETIM 20.12.2009BOLETIM 20.12.2009
BOLETIM 20.12.2009imelriocasca
 
Programa Congresso Inovação Social
Programa Congresso Inovação SocialPrograma Congresso Inovação Social
Programa Congresso Inovação SocialDianova
 
Rituais
RituaisRituais
RituaisHOME
 
apresentação do proinfo
apresentação do proinfoapresentação do proinfo
apresentação do proinfoguest0273eb
 
PROGRAMAÇÃO FESTIVAL RECIFE DO TEATRO NACIONAL
PROGRAMAÇÃO FESTIVAL RECIFE DO TEATRO NACIONALPROGRAMAÇÃO FESTIVAL RECIFE DO TEATRO NACIONAL
PROGRAMAÇÃO FESTIVAL RECIFE DO TEATRO NACIONALJupiter Comunicação
 

Destaque (20)

Lineamientos estratégicos para la comunicación global efectiva de mi marca
Lineamientos estratégicos para la comunicación global efectiva de mi marca Lineamientos estratégicos para la comunicación global efectiva de mi marca
Lineamientos estratégicos para la comunicación global efectiva de mi marca
 
Figueira Alvarado
Figueira AlvaradoFigueira Alvarado
Figueira Alvarado
 
Normal Supeior
Normal SupeiorNormal Supeior
Normal Supeior
 
CartãO
CartãOCartãO
CartãO
 
Inscriçao Moinho da Juventude
Inscriçao Moinho da JuventudeInscriçao Moinho da Juventude
Inscriçao Moinho da Juventude
 
Boletim informativo de Itapevi - Outubro de 2009
Boletim informativo de Itapevi - Outubro de 2009Boletim informativo de Itapevi - Outubro de 2009
Boletim informativo de Itapevi - Outubro de 2009
 
DeclaraçãO De AceitaçãO
DeclaraçãO De AceitaçãODeclaraçãO De AceitaçãO
DeclaraçãO De AceitaçãO
 
Envolve Os Intervenientes Num Processo De IntrospecçãO Do Conhecimento E De
Envolve Os Intervenientes Num Processo De IntrospecçãO Do Conhecimento E DeEnvolve Os Intervenientes Num Processo De IntrospecçãO Do Conhecimento E De
Envolve Os Intervenientes Num Processo De IntrospecçãO Do Conhecimento E De
 
Misterios Da Musica
Misterios Da MusicaMisterios Da Musica
Misterios Da Musica
 
BOLETIM 20.12.2009
BOLETIM 20.12.2009BOLETIM 20.12.2009
BOLETIM 20.12.2009
 
Programa Congresso Inovação Social
Programa Congresso Inovação SocialPrograma Congresso Inovação Social
Programa Congresso Inovação Social
 
Brandy E Rony
Brandy E RonyBrandy E Rony
Brandy E Rony
 
Boletim informativo de Americana - Outubro de 2009
Boletim informativo de Americana - Outubro de 2009Boletim informativo de Americana - Outubro de 2009
Boletim informativo de Americana - Outubro de 2009
 
Rituais
RituaisRituais
Rituais
 
apresentação do proinfo
apresentação do proinfoapresentação do proinfo
apresentação do proinfo
 
Resultados 17
Resultados 17Resultados 17
Resultados 17
 
Vino Noveau
Vino NoveauVino Noveau
Vino Noveau
 
Novo Para Blog
Novo Para BlogNovo Para Blog
Novo Para Blog
 
PROGRAMAÇÃO FESTIVAL RECIFE DO TEATRO NACIONAL
PROGRAMAÇÃO FESTIVAL RECIFE DO TEATRO NACIONALPROGRAMAÇÃO FESTIVAL RECIFE DO TEATRO NACIONAL
PROGRAMAÇÃO FESTIVAL RECIFE DO TEATRO NACIONAL
 
Lisandro G
Lisandro GLisandro G
Lisandro G
 

Semelhante a Quarto Trabalho Pm 2009 2

CVS - Slides Parte 3 - Básico
CVS - Slides Parte 3 - BásicoCVS - Slides Parte 3 - Básico
CVS - Slides Parte 3 - BásicoMarden Neubert
 
Prova Comentada - BANRISUL Escriturário 2010
Prova Comentada - BANRISUL Escriturário 2010Prova Comentada - BANRISUL Escriturário 2010
Prova Comentada - BANRISUL Escriturário 2010Vitor Krewer
 
CVS - Slides Parte 1 - Introdução
CVS - Slides Parte 1 - IntroduçãoCVS - Slides Parte 1 - Introdução
CVS - Slides Parte 1 - IntroduçãoMarden Neubert
 
SVN: Controle de revisões com subversion - Thiago Rafael Becker
SVN: Controle de revisões com subversion - Thiago Rafael BeckerSVN: Controle de revisões com subversion - Thiago Rafael Becker
SVN: Controle de revisões com subversion - Thiago Rafael BeckerTchelinux
 
Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoFelipe
 
CVS - Slides Parte 2 - Administração
CVS - Slides Parte 2 - AdministraçãoCVS - Slides Parte 2 - Administração
CVS - Slides Parte 2 - AdministraçãoMarden Neubert
 
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version ControlJoomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version ControlJoomla!Day Brasil
 
Resumo vinculacao aula lp1 10 a
Resumo vinculacao   aula lp1 10 aResumo vinculacao   aula lp1 10 a
Resumo vinculacao aula lp1 10 aPedro Augusto
 
CVS - Slides Parte 4 - Avançado
CVS - Slides Parte 4 - AvançadoCVS - Slides Parte 4 - Avançado
CVS - Slides Parte 4 - AvançadoMarden Neubert
 
Curso de CVS - Parte 4 - Avançado
Curso de CVS - Parte 4 - AvançadoCurso de CVS - Parte 4 - Avançado
Curso de CVS - Parte 4 - AvançadoMarden Neubert
 
ConheçA O Apache 2.0 Parte 2
ConheçA O Apache 2.0   Parte 2ConheçA O Apache 2.0   Parte 2
ConheçA O Apache 2.0 Parte 2Felipe Santos
 
Apostila logica algoritmos e estrutuara de dados
Apostila  logica algoritmos e estrutuara de dadosApostila  logica algoritmos e estrutuara de dados
Apostila logica algoritmos e estrutuara de dadosGelber Freitas
 
SVN no Desenvolvimento de Software
SVN no Desenvolvimento de SoftwareSVN no Desenvolvimento de Software
SVN no Desenvolvimento de SoftwareManoel Afonso
 
Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Faculdade Mater Christi
 
Curso de CVS - Parte 2 - Administração
Curso de CVS - Parte 2 - AdministraçãoCurso de CVS - Parte 2 - Administração
Curso de CVS - Parte 2 - AdministraçãoMarden Neubert
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 

Semelhante a Quarto Trabalho Pm 2009 2 (20)

Curso de CVS - Lab 3
Curso de CVS - Lab 3Curso de CVS - Lab 3
Curso de CVS - Lab 3
 
CVS - Slides Parte 3 - Básico
CVS - Slides Parte 3 - BásicoCVS - Slides Parte 3 - Básico
CVS - Slides Parte 3 - Básico
 
Prova Comentada - BANRISUL Escriturário 2010
Prova Comentada - BANRISUL Escriturário 2010Prova Comentada - BANRISUL Escriturário 2010
Prova Comentada - BANRISUL Escriturário 2010
 
CVS - Slides Parte 1 - Introdução
CVS - Slides Parte 1 - IntroduçãoCVS - Slides Parte 1 - Introdução
CVS - Slides Parte 1 - Introdução
 
SVN: Controle de revisões com subversion - Thiago Rafael Becker
SVN: Controle de revisões com subversion - Thiago Rafael BeckerSVN: Controle de revisões com subversion - Thiago Rafael Becker
SVN: Controle de revisões com subversion - Thiago Rafael Becker
 
Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de código
 
CVS - Slides Parte 2 - Administração
CVS - Slides Parte 2 - AdministraçãoCVS - Slides Parte 2 - Administração
CVS - Slides Parte 2 - Administração
 
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version ControlJoomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
 
Resumo vinculacao aula lp1 10 a
Resumo vinculacao   aula lp1 10 aResumo vinculacao   aula lp1 10 a
Resumo vinculacao aula lp1 10 a
 
CVS - Slides Parte 4 - Avançado
CVS - Slides Parte 4 - AvançadoCVS - Slides Parte 4 - Avançado
CVS - Slides Parte 4 - Avançado
 
CVS
CVSCVS
CVS
 
Curso de CVS - Parte 4 - Avançado
Curso de CVS - Parte 4 - AvançadoCurso de CVS - Parte 4 - Avançado
Curso de CVS - Parte 4 - Avançado
 
ConheçA O Apache 2.0 Parte 2
ConheçA O Apache 2.0   Parte 2ConheçA O Apache 2.0   Parte 2
ConheçA O Apache 2.0 Parte 2
 
Apostila logica algoritmos e estrutuara de dados
Apostila  logica algoritmos e estrutuara de dadosApostila  logica algoritmos e estrutuara de dados
Apostila logica algoritmos e estrutuara de dados
 
Shell Scipt - Comandos
Shell Scipt - ComandosShell Scipt - Comandos
Shell Scipt - Comandos
 
SVN no Desenvolvimento de Software
SVN no Desenvolvimento de SoftwareSVN no Desenvolvimento de Software
SVN no Desenvolvimento de Software
 
Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)
 
Netbeans IDE
Netbeans IDENetbeans IDE
Netbeans IDE
 
Curso de CVS - Parte 2 - Administração
Curso de CVS - Parte 2 - AdministraçãoCurso de CVS - Parte 2 - Administração
Curso de CVS - Parte 2 - Administração
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 

Quarto Trabalho Pm 2009 2

  • 1. INFORMAÇÕES DE SISTEMAS DE CONTROLE DE VERSÃO - CONT I. Contexto Nos últimos anos temos observados diversas pesquisas que consolidam dados vindos de sistemas de controle de versões para gerar informações úteis para a tomada de decisões por parte de gerentes de projeto. Um destes ramos de pesquisa envolve a detecção de mudanças conjuntas entre os arquivos que compõem um projeto de software, como forma de predizer mudanças futuras no projeto ou indicar mudanças que deveriam ter ocorrido, mas não foram observadas. II. Identificando Mudanças Conjuntas Partindo do terceiro trabalho, vocês já têm classes que representam os principais conceitos envolvidos em sistemas de controle de versão: o log de um sistema, os arquivos que compõem o sistema e as revisões sofridas por estes arquivos. Identificar mudanças conjuntas significa analisar que arquivos mudaram em conjunto quando um ou mais arquivos foram alterados. Para saber quantos e quais arquivos foram alterados em conjunto precisamos dividir o tempo entre o início e o final do projeto em fatias. Uma fatia representa um pedaço de tempo e, para simplificar o problema, consideraremos fatias de tempo uniformemente divididas. Por exemplo, se um projeto durou uma semana (madrugada de segunda até a noite de sexta) e dividirmos este tempo em cinco fatias, teremos a primeira fatia começando às 00:00 hr de segunda-feira e terminando às 23:59hr da própria segunda; a segunda fatia cobrirá a terça-feira; a quarta fatia cobrirá a quarta-feira; e assim sucessivamente, até sexta-feira. Em cada fatia de tempo devemos registrar os arquivos que foram alterados durante aquela fatia. Identificar estes arquivos é uma tarefa simples: lembrem-se que temos a data de cada revisão (commit) sofrido pelos arquivos. Desta forma, basta marcarmos as faixas de tempo em que cada arquivo sofreu pelo menos um commit. Assim, teremos uma matriz de alterações como a apresentada abaixo: Faixa de tempo a.java b.java c.java d.java 17/11/2009, 00:00 hr a 00:30 hr X X 17/11/2009, 00:30 hr a 01:00 hr X X ... 17/11/2009, 06:00 hr a 06:30 hr X X X ... Pelas marcações apresentadas na matriz acima, vemos que o arquivo A sofreu alguma revisão no período entre 00:00hr e 00:30hr do dia 17/Novembro/2009 (alguém anda trabalhando de madrugada ...). Vemos também que este arquivo voltou a sofrer revisões entre 06:00hr e 06:30hr do mesmo dia (... e a noite foi longa!). Além disso, vemos que sempre que o arquivo A foi alterado, o arquivo B também foi alterado. Por outro lado, somente duas a cada três vezes em que o arquivo B foi alterado, o arquivo A também foi alterado. Podemos concluir que 100% das vezes em que o arquivo A foi alterado, o arquivo B também foi. Por outro lado, apenas 66% das vezes em que o arquivo B foi alterado, o arquivo A também foi. Para cada arquivo, podemos identificar o percentual de chances de cada um dos outros arquivos ser alterado quando o primeiro sofrer alterações. O cálculo do percentual de chances de alteração conjunta entre os pares de arquivos resulta na seguinte matriz de probabilidade de alteração conjunta. Naturalmente, esta matriz será mais precisa se tivermos mais faixas de tempo para comparar.
  • 2. Faixa de tempo a.java b.java c.java d.java a.java 100% 100% 50% 0% b.java 66% 100% 33% 33% c.java 100% 100% 100% 0% d.java 0% 100% 0% 100% Agora, considere que um gerente de projeto determinou que o arquivo A sofrerá alterações ... o que você pode dizer ao gerente sobre as possíveis alterações sofridas por outros arquivos? Eu diria que o arquivo B provavelmente será alterado: não podemos ter certeza absoluta, pois as alterações passadas podem ter tido objetivos diferentes da nova alteração. Diria também que existe grande chance do arquivo C ser alterado (50% de chance). E o que dizer quando o gerente informar que dois arquivos sofrerão alterações, por exemplo, A e B. Neste caso, vamos adotar um critério conservador. Por exemplo, diríamos que existe uma probabilidade de 50% de alterarmos o arquivo C (embora a probabilidade deste arquivo ser alterado seja de apenas 33% por conta de B). Na mesma linha, diríamos que existe uma probabilidade de 33% de alterarmos o arquivo D, muito embora a probabilidade de alterarmos D seja 0% em função de A. III. Objetivos do Trabalho O quarto trabalho de Programação Modular tem como objetivo utilizar as informações capturadas do log de um sistema de controle de versão para identificar mudanças conjuntas em arquivos do projeto e predizer mudanças futuras. Vocês deverão construir um programa que funcione por linha de comando (nada de interface gráfica com o usuário ou interfaces textuais) e receba os seguintes parâmetros: nome do arquivo de log, tamanho da fatia de tempo e nome de um arquivo complementar. O arquivo complementar será um arquivo texto, onde cada linha terá o caminho completo (a partir da raiz do projeto no sistema de controles de versão) de um arquivo que deve ser considerado na identificação das mudanças conjuntas. Linhas em branco e começadas pelo caractere # devem ser ignoradas na leitura deste arquivo. O trabalho será avaliado da seguinte maneira: a implementação correta, com casos de teste que demonstrem o funcionamento do programa, vale até 2,5 pontos. Identação, bons nomes para os elementos do programa, comentários e organização geral vale 1 ponto. O último meio ponto é deixado para a surpresa: surpreendam-me com alguma funcionalidade interessante para o programa e ganhem este último meio ponto. Acompanhem o Moodle com frequência para novidades sobre o quarto trabalho, pois novidades vão aparecer ...