UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação

Documentos relacionados
Engenharia de Software. Prof. Raquel Silveira

Instituto Federal da Bahia Análise e Desenvolvimento de Sistemas INF022 Tópicos Avançados Gerencia de Configuração

Gerência de Configuração: Terminologia. Leonardo Gresta Paulino Murta

Um sistema de controle de versão tem a finalidade de gerenciar diferentes versões de um artefato.

CVS Concurrent Versions System

Gerência de Configuração: Terminologia. Leonardo Gresta Paulino Murta

Objetivo. Introdução; História; Conceito; SVN; Instalação; Prática através de exercícios.

Gerência da Configuração de Software. Teresa Maciel DEINFO/UFRPE

Engenharia de Software II

Gerenciamento de configuração e mudança

Gerenciamento de Configuração

Capítulo 20 - Manutenção de Software. Os Fatores de Qualidade de Software focalizam três aspectos importantes do Software Produto: (ISO 9126)

- 6ª Lista de Exercícios -

Repositórios 2. Sistemas de controle de versionamento. Allan C. Trevisan PET-COCE

Sistemas de Controlo de Versões

TUTORIAL GIT Victor Breder Comp-19 Março de 2017

Git. Bruno de Pinho Sche.no

Manutenção Leitura: Sommerville; Pressman

Desenvolvimento de so-ware com Git. Leonardo Gresta Paulino Murta

Material cedido por André Santos. Objetivo

Sistema de Controle de Versão - CVS

Gerenciamento de Configuração de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1 o semestre de 2015

Introdução à Gerência de Configuração. Leonardo Gresta Paulino Murta

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação

Daves Marcio Silva Martins Mestre em Computação de Alto Desempenho - UFRJ.

Gerência de Configuração de Software Conceitos

Gerência de Configuração. Professor: Dr. Eduardo Santana de Almeida Universidade Federal da Bahia

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

132 6 Conclusão 6.1. Contribuições da Tese

REENGENHARIA E ENGENHARIA REVERSA

Gerência de Configuração

Ferramenta para Manutenção, Interfaces. Rodrigo Zimmermann

Uma Introdução aos Sistemas de Controle de Versão Distribuídos. Leonardo Gresta Paulino Murta

INTRODUÇÃO À INTEGRAÇÃO CONTÍNUA. Jadson Santos Software Engineer Informatic Superintendence (SINFO) - UFRN

Mini Curso Gerenciamento de Configuração e Mudança com GIT + Eclipse. Jadson Santos Amador Pahim

GIT. Prof. Rafael Sandim

Prof. Fábio Lúcio Meira

Tarefas de Gerenciamento de Configuração

Gerência de Configuração: Processos e Ferramentas. Leonardo Gresta Paulino Murta

GIT Controlo de versões

Leitura: Cap : Sommerville; cap20: Pressman

Engenharia Reversa e Reengenharia Software 13/05/2015

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Processo de Gerência de Configuração. Maurício Ronny de Almeida Souza

Disciplina - Requisitos. Grupo Yuni Luiz Eduardo Káthia

Aula 3 - Modelos de Processo - cascata, iterativo e incremental e ágil

Julio Cezar Fialho Freire de Carvalho 1, Aline Maria Malachini Miotto Amaral 2 1 INTRODUÇÃO

Problemas na Manutenção

Git. Leonardo Gresta Paulino Murta

Modelos. Banco de dados. Professor: Jarbas Araújo CENTRO EDUCACIONAL RADIER.

Controle de Versão com CVS

As 10 Áreas da Engenharia de Software, Conforme o SWEBOK Prof. Elias Ferreira

Introdução ao Controle de Versões. Leonardo Murta

UML (Unified Modelling Language)

Aula 1 - Introdução à disciplina e Processos de desenvolvimento de software e suas atividades básicas

Atividades da Engenharia de Software GERENCIAMENTO DA CONFIGURAÇÃO DE SOFTWARE. Processo de Desenvolvimento de Software

Controle de Versão. Prof. Msc. Bruno Urbano Rodrigues.

Configurador do JBOSS. TOTVS Datasul 11. Alerta

Git e Pais

ICET CURSO: Ciência da Computação e Sistemas de Informação (Engenharia de Software) Campus: Data: / / Nome:

Controlo de versões com GIT

Faça Fácil. Exportação e importação de configurações de projetos do Proficy Cimplicity

Simulado para CFPS. Questões de Propósito, Tipo e Fronteira. 1. Um dos objetivos da Análise de Pontos de Função é:

2. GERÊNCIA DE CONFIGURAÇÃO DE SOTWARE

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

6 Ferramenta para a Especialização de Mecanismos de Persistência

Crise do Software. Crise de tecnologia - hardware caminha mais rápido que o software

Projeto de Desenvolvimento de Software

Projeto Integrador. <Projeto Integrador> Documento Visão. Versão <1.0>

Importador de Notas Fiscais Eletrônicas

3 Ferramenta Proposta 3.1. Objetivos

Compreenda basculadores do comando memory da subversão

ISO/IEC 12207: Manutenção

Versão do documento agosto Usando recursos avançados de geração de relatórios Soluções Ariba On-Demand

Trabalho de LP 15/07/2013. Prof. Flávio Miguel Varejão

Análise de Ferramentas para Controle de Versões de Software no Contexto do MPS.BR

Plano de Gerenciamento de Configuração

Diretriz Gerência de Configuração Sistema de Gestão da Qualidade

15/03/2018. Professor Ariel da Silva Dias Modelos de Processo de Software

Teste de Software. Karen Frigo Busolin Novembro / 2010

Requisitos de Sistemas

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

UNIVERSIDADE REGIONAL DE BLUMENAU FERRAMENTA DE GERÊNCIA DE REQUISITOS DE SOFTWARE INTEGRADA COM ENTERPRISE ARCHITECT

Tópicos da Aula. O que é anunciado. Falha de Comunicação no Desenvolvimento de Software. Engenharia de Software: Conceitos Fundamentais

exatasfepi.com.br Controle de Versão André Luís Duarte

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA IMPLEMENTAÇÃO

Teste de Software. Prof. Camila. Pedro de Assis Sobreira Jr.

Gerenciamento de Projetos com o Redmine

Adriano Maranhão PROFISSIONAIS E ATIVIDADES ENVOLVIDAS EM UM SGBD

Tutorial SVN Básico Engenharia de Software. Denise Notini Nogueira

Agenda. Gerência de Configuração de Software. Atividade Sala. Quais os problemas? P1) Duplicidade de Trabalho. P2) Trabalhos Sobrepostos

Documento de Requisitos SISTEMA DE APOIO À ESCRITA (SAPES)

Introdução ao Git. Laboratório de Programação. Pedro Vasconcelos, Manuel Barbosa, DCC/FCUP. Fevereiro 2016

ENGENHARIA DE REQUISITOS

Engenharia de Software II

ARCHITECTURAL DESIGN. Ian Sommerville, 8º edição Capítulo 11 Aula de Luiz Eduardo Guarino de Vasconcelos

WikED! Na última década, um grande número de sistemas colaborativos apareceram

Transcrição:

SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 20 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir conceitos relacionados a Gestão de configuração e Engenharia Reversa. DESENVOLVIMENTO Gestão de Configuração de Software É o conjunto de atividades desenvolvidas para administrar modificações ao longo do ciclo de vida do software. Pode ser vista como uma atividade de garantia da qualidade de software. A Gestão de Configuração de Software tenta responder às seguintes perguntas: O que mudou e quando mudou? Por que mudou? Quem fez a mudança? Pode-se reproduzir essa mudança? A Gestão de Configuração de Software tem três grandes atividades: O controle de versão; O controle de mudança; A auditoria de configuração. Divididas em: Identificar os produtos de trabalho que podem ser modificados, estabelecendo relacionamento entre eles; Definir mecanismos para administrar as diferentes versões desses produtos de trabalho; Controlar as modificações impostas e fazendo auditoria e preparando relatórios sobre as modificações realizadas. Garantir que os procedimentos e políticas para criar, modificar e testar o código estão sendo seguidos; Tornar acessível as informações sobre o projeto. Elementos de um sistema de Gestão de configuração: Elementos de componente. Ferramentas que possibilitam acesso e gestão de cada item de configuração de software Elementos de processo. Procedimentos e tarefas para a gestão da modificação para todas as partes envolvidas na gestão, engenharia e uso do software. Elementos de construção. Ferramentas que automatizam a construção garantindo que o conjunto adequado de componentes foi montado Elementos humanos. Item de configuração de software ICS Um item de configuração de software é um elemento unitário para efeito de controle de versão ou um conjunto de elementos tratados como uma unidade única. 1

Pode ser composto de: código fonte; documentação; diagramas; casos de teste; dados e outros artefatos. É descrito por: nome; descrição; lista de recursos; realização e número de versão. UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Relacionamentos entre itens de configuração: Dependência: um componente utiliza funções que são implementadas em outro; Agregação: um componente é formado por outros; Realização: um componente concreto é a implementação de outro mais abstrato; Especialização: um componente é uma variante mais específica de outro. Rastreabilidade Rastreabilidade entre itens de código; Rastreabilidade entre artefatos de análise e design; Matriz de rastreabilidade Versões de Itens de Configuração de Software Normalmente é identificada por um número; As versões se sucedem no tempo; dois tipos: revisão: uma nova versão de um item que vai substituir a anterior; variante: uma nova versão de um item que será adicionada á configuração sem a intenção de substituir a anterior; Configuração de software É o estado em que o software se encontra em um determinado momento. É definida pela lista de Itens de Configuração de Software que compõem o software. Baseline É uma configuração de software criada para uma finalidade específica que é modificada por um processo formal de mudança. Release É a distribuição de uma versão do software para fora do ambiente de desenvolvimento. 2

Controle de Versão UNIVERSIDADE FEDERAL DO PARANÁ - UFPR O controle de versão rastreia todos os itens de configuração e mantém o controle sobre o trabalho paralelo dos desenvolvedores. Funcionalidades: Manter e disponibilizar cada versão já produzida para cada item; Ter mecanismos para disponibilizar diferentes ramos de desenvolvimento de um mesmo item; Estabelecer políticas de sincronização; Histórico de mudanças; Políticas de sincronização: trava-modifica-destrava (exclusive Lock) copia modifica resolve (optimistic merges) Repositório para Gestão de Modificações Conjunto de Mecanismos e estruturas de dados para gerir modificações de forma efetiva. Deve ter as seguintes funções: Integridade dos dados; Compartilhamento de informação; Integração de ferramenta; Integração de dados; Imposição de metodologia e Padronização de documentação. Principais Ferramentas CVS Mercurial GIT SVN (subversion) SourceSafe (Microsoft) Serena PVCS ClearCase (IBM) CVS O CVS (Concurrent Version System) permite que múltiplos usuários editem os mesmos arquivos independentemente, trabalhando nas suas próprias cópias. Existe um "repositório" onde os arquivos mestres são mantidos. Cada usuário realiza "checks out" para pegar uma cópia de trabalho. Eles então editam a cópia, e realizam um "check in" ou um "commit" para armazenar suas alterações de volta no repositório, e realizam um "update" para incorporar outras alterações em suas cópias de trabalho. O CVS também mantém as versões anteriores de seus arquivos, de maneira que você possa comparar versões e reverter para uma versão anterior caso uma alteração introduza um erro. Os repositórios CVS contêm arquivos baseados em texto como os arquivos fonte (.Java), Makefiles, e algumas documentações. Os repositórios não devem conter arquivos compilados (.class) ou arquivos texto gerados, como a documentação gerada pelo Javadoc. O seu repositório CVS deve conter apenas arquivos que não possam ser gerados a partir de outros arquivos do repositório. 3

Aqui está uma lista típica de passos de utilização do CVS: 1. Realize um "Update" nos seus arquivos da cópia de trabalho. 2. Adicione/edite um arquivo. 3. Realize um "Update" novamente para verificar se os arquivos foram alterados no repositório desde que você começou a editá-los. Se eles foram, as alterações irão ser intercaladas na sua cópia de trabalho automaticamente. 4. Se existir um conflito de "merge", onde duas alterações entram em conflito uma com a outra, decida manualmente qual alteração deve ser mantida. 5. Realize um "Commit", também conhecido como "Check in", no arquivo. Cada usuário terá sua própria cópia de trabalho em algum lugar. Nós sugerimos que você crie um conjunto de diretórios ~/projeto/groups/sennm/username. Utilização Básica Atualizando seus arquivos Para atualizar sua cópia de trabalho com a última versão revisada do repositório (mantendo qualquer alteração que você tenha feito em sua cópia local), use: cvs update O CVS tentará intercalar quaisquer alterações feitas, por você e pelos outros, desde o seu último cvs update. Se alguma de suas alterações entrar em conflito com as alterações dos outros, o cvs update irá lhe informar, e o arquivo fonte será modificado para incluir ambas versões de qualquer porção conflitante (as suas e as outras do repositório), no seguinte formato: <<<<<<< filename SUA VERSÃO ======= VERSÃO DO REPOSITÓRIO >>>>>>> número de revisão do repositório de versão Você deverá solucionar o conflito pela edição do arquivo, removendo as marcações, e deixando a versão de código que você preferir (ou combinando as duas manualmente). (Procurar por "<<<" até que você solucione todos os conflitos é geralmente uma boa idéia.) Uma vez que você tenha resolvido todos os conflitos, você pode seguramente armazenar o arquivo de volta no repositório. Note que o CVS trabalha no estilo linha-por-linha. Isto é, ele só sabe se uma linha inteira foi alterada, adicionada, ou apagada. (o cvs update exibe o estado de quaisquer arquivos do seu diretório de trabalho que tenham sido alterados ou sejam diferentes daqueles do repositório com um flag de uma letra: "U" significa que ele foi substituído pela última cópia do repositório. "M" significa que sua cópia de trabalho é diferente da última versão do repositório, e que o merge foi executado com sucesso. "C" significa que existem conflitos de merge.) Persistindo, adicionando, e removendo arquivos Para persistir um arquivo do repositório que você tenha editado, use: cvs commit -m "a log message" filename Se você omitir o campo filename, o CVS irá armazenar todos os arquivos do diretório corrente de novo no CVS. O campo message é uma mensagem de log que permite que você se informe sobre as alterações sem precisar olhar no código. Elas são incrivelmente úteis, e você deverá sempre fornecer uma mensagem de log descritiva; nada do tipo, "Foram consertados alguns erros." Se você omitir o flag -m, o CVS irá fornecer um prompt para uma mensagem de log. 4

Identificando alterações Para verificar o log de alterações, que é uma lista de mensagens utilizadas no momento da realização do "check in" das alterações, cvs log filename Para verificar diferenças entre a cópia de trabalho e a última cópia do repositório: cvs diff [filename] Omita o campo filename para verificar as diferenças entre todos os arquivos. Use o flag -r1.xx para comparar com uma revisão em particular, e use dois flags -r para comparar duas versões uma com a outra. Engenharia reversa e Reengenharia. Engenharia Reversa para software é o processo de analisar um programa num esforço para criar uma representação de programa em um nível de abstração maior do que o código fonte. A engenharia reversa é o processo de recuperação do projeto. Elementos da Engenharia Reversa: Nível de abstração: conforme o nível de abstração aumenta, mais compreensíveis se tornam as informações. Completude do Processo: refere-se ao nível de detalhes que é fornecido em cada nível de abstração. Interatividade: refere-se ao grau de participação do ser humano no processo de engenharia reversa. conforme o nível de abstração aumenta, a interatividade deve aumentar ou a completitude será prejudicada direcionalidade: se a direcionalidade tem sentido único, toda informação extraída a partir do código fonte é usada durante as atividades de manutenção se a direcionalidade tem sentido duplo, a informação é usada para "alimentar" uma ferramenta de reengenharia. Reengenharia é o processo de recuperar as informações de projeto de um software existente e usar essas informações para alterar ou reconstituir o sistema, num esforço para melhorar sua qualidade global. Na maioria dos casos o sistema que sofreu reengenharia reinplementa a função do software existente, mas ao mesmo tempo adiciona novas funcionalidades e/ou melhora o desempenho global. BIBLIOGRAFIA BÁSICA WAZLAWICK, R. S.. Engenharia de Software: Conceitos e Práticas. Elsevier. Rio de Janeiro, 2013. PRESSMAN, R. S.. Engenharia de Software. 6a. ed. McGraw-Hill. 2006 CARVALHO, A. M. B. R.; CHIOSSI, T. C. S.. Introdução à engenharia de software. Editora da Unicamp. 2001. OLIVEIRA, M. Técnicas de Testes Caixa-Preta. Apresentação no II Encontro Brasileiro de Teste de Software, outubro 2007. 5