Gerência de configuração aplicada ao DBC: estado da arte
Vanilson Buré[email protected]
Reuse in Software Engineering Group
Roteiro
História Contexto
Gerenciamento de componentes
GCS no DBC Motivação Questões Abordagens Ferramentas
Conclusão Referências
Reuse in Software Engineering Group
História {anos 60}
Desenvolvimento de software em larga escala
Programação não é tudo!! Estrutura do software (Arquitetura?) Building? Evolução?
Crise de Software
Reuse in Software Engineering Group
História {anos 70}
Busca de soluções… Notações Técnicas Ferramentas Case
Surgimento do gerenciamento de configuração
“A arte de coordenar o desenvolvimento de software para minimizar …a confusão…” [Babich, 1986]
“A arte de coordenar o desenvolvimento de software para minimizar …a confusão…” [Babich, 1986]
Reuse in Software Engineering Group
História {anos 80}
Gerência de Configuração de Software (GCS) Versionamento Rebuilding Composição
Primeiros sistemas “caseiros” para controle de arquivos Scripts Unix sobre RCS (ferramenta simples de controle de
versão) e Make
Reuse in Software Engineering Group
História {anos 90}
Surgimento de produtos reais de GCS Sem suporte a processo, apenas controle de arquivo Suporte a workspace Líderes de mercado: ClearCase, Continuus
Segunda metade dos anos 90… Consagração da GCS
essencial no desenvolvimento de software tecnologia bem estabelecida suporte a processo
1998: mais de $1bilhão de vendas! [Estublier, 2000]
Reuse in Software Engineering Group
História {anos 90}
Por outro lado... Surge o DBC (Desenvolvimento Baseado em
Componentes)- Produtividade - Qualidade- Competitividade
Novas abordagens => Novos problemasNovas abordagens => Novos problemas
Reuse in Software Engineering Group
História {Resumo}
GCS
1960 1970 1980 1990 2000
Crise de Software
GCS
DBC
Evolução do Software
Produto de Software
Software customizado
(distribuição limitada)
Sistemas distribuídosHardware de baixo custo Tecnologias orientadas a objetos
computação paralelaDBC
GCS aplicada ao DBC
"Software developers’principle tasks will shift from coding to designing and integrating“ [Voas, 1998]
Reuse in Software Engineering Group
Contexto {Gerenciamento de componentes}
[Apperly, 2001] Processo de produção-gerência-consumo Produtor: implementa componentes Consumidor: busca e usa componentes Gerenciador de componentes: interface entre
produtor e consumidor Mais que um repositório estático de componentes Deve possuir interfaces com os serviços necessários aos
produtores e consumidores de componentes
Reuse in Software Engineering Group
Contexto {Gerenciamento de componentes}
Processo de Produção
Gerência de configuração
RepositórioRepositóriode componentesde componentes
Processo de gerência
Processo de Consumo
Gerenciador de componentes
Gerência do repositório Gerência dos usuários do repositório Controle de qualidade Controle da disponibilidade Gerência de componentes Gerência de versões dos componentes
Implementação de componentes Documentação de componentes (Re)Publicação de componentes Notificar consumidores sobre novos
componentes ou problemas
Busca de componentes Especificação de componentes a
serem produzidos Uso/reuso de componentes Deploy de componentes Registrar interesse em
componentes
Produtor Consumidor
Escopo
Reuse in Software Engineering Group
GCS no DBC {Motivação}
[Voas, 1998] “Without revision control, the component maintenance
process will bring more disaster than benefit to your application development process”
[Mei, 2001] “More and more software development organizations
have noticed the importance of SCM, and viewed SCM as their infrastructure for software development.”
Reuse in Software Engineering Group
GCS no DBC {Motivação}
[Apperly, 2001] “One of the primary ways to enable a successful
component development life cycle is to implement a process that includes an integrated configuration management and component library environment.”
Reuse in Software Engineering Group
GCS no DBC {Questões}
[Mei, 2001] Visualizar um componente como um item de configuração (IC) e
operar sobre componentes e não sobre arquivos individuais Controlar modificações concorrentes em cada componente Gerenciar a composição e relacionamentos entre componentes
[Apperly, 2001] Suportar os níveis de abstração de um componente
[Larsson, 2001] manter o rastreamento de componentes e seus inter-relacionamentos
Técnicas tradicionais de GCS não suportam DBCTécnicas tradicionais de GCS não suportam DBC
Reuse in Software Engineering Group
GCS no DBC {Questões}
Gerenciamento de versões Identificação de versões
Estabelecer nomenclatura padrão Informações a serem consideradas?
Evolução dos componentes relacionamentos internos relacionamentos externos
Gerenciamento de Mudanças Manter a consistência
Diferentes níveis de compatibilidade
Análise de impactos controle de dependências rastreabilidade
Reuse in Software Engineering Group
GCS no DBC {Abordagens}
Níveis de abstração [Apperly, 2001]
Modelo de GCS para DBC [Mei, 2001]
Modelo de versionamento [Gergic, 2003]
Atualização de componentes [Plasil, 1997] [Cook, 1999] [Vandewoude, 2002]
Controle de dependências [Lucas, 1997] [Larsson, 2001]
Reuse in Software Engineering Group
GCS no DBC {Abordagens}
Executável
Especificação
Implementação
Deployment
.exe.dll.jar ...
Java C# C++ ...
Deploy 1 Deploy 2 Deploy 3 ...
Uma especificação pode possuir mais de uma implementação
Uma implementação pode possuir mais de um executável
Um executável pode possuir mais de um deploy
Componente
Níveis de abstração [Apperly, 2001]
Problema: gerenciar os links (dependências) existentes entre cada nível de abstração do componente
Problema: gerenciar os links (dependências) existentes entre cada nível de abstração do componente
Reuse in Software Engineering Group
GCS no DBC {Abordagens}
Gerência de componentes [Apperly, 2001] Tarefa difícil! Grande necessidade de ferramentas Componente deve ser visto sob seus diferentes níveis de abstração
Gerenciamento de versões [Apperly, 2001] Identificação de versão
Cada nível de abstração também precisa ser identificado Exemplo:
V 1.0
V 1.1
V. 1.1
V 1.1
Componente vr. 1.1 Componente vr. 1.2
V 1.0
V 1.2
V. 1.2
V 1.2
Reuse in Software Engineering Group
GCS no DBC {Abordagens}
Modelo de GCS para DBC [Mei, 2001] Conceitos básicos
File: unidades de armazenamento, não representam constituintes lógicas Component: constituinte lógica do sistema (componentes primitivos e
componentes compostos) Configuration: configurations representam componentes compostos
(conjunto de configuration item).o Configuration item (CI): componente primitivo ou configuração existente
Baseline: versão de uma configuração (configuration). Formada pela seleção de uma versão ou baseline de cada CI na configuração.
Relationship: representa as relações entre componentes. Ex.: relação de dependência
Configuration
Componente primitivo
Sub-configuration
Reuse in Software Engineering Group
GCS no DBC {Abordagens}
Modelo de GCS para DBC [Mei, 2001]The Construction and Evolution of Composite Components
CompositeComponents
The evolution of primitive components
Primitive Components
Component Adaptation
Component Development
Component Composition
Advanced Evolution
ConfigurationCriation
BaselineCriation
Configuration
Modification
Configuration
Branching
Checkout and Checkin of Primitive
Components
Branching and Merging of PrimitiveComponents
Concurrency of PrimitiveComponents
Relationship creation and
Tracing
SCM Support
Reuse in Software Engineering Group
GCS no DBC {Abordagens}
Questões chaves do modelo [Mei, 2001] Manutenção de consistência
Qualquer versão/baseline deve ser logicamente um componente Estratégia de concorrência
Para arquivos: exclusive-write modificação do componente: estilo checkout-edit-checkin
Merging horizontal e vertical
1.0
1.1
1.2
1.3
1.4
1.2.1.0
Branch
1.2.1.1
1.5
Merge
A B C
B C D
A B C D
Merge Horizontal
1.0
1.1
1.2
1.3
1.4
Antes do merge
Merge Vertical
1.5
1.0
1.1
1.4
Depois do merge
1.5
Merge
Árvore de versão de um componente primitivo
Reuse in Software Engineering Group
GCS no DBC {Abordagens}
Modelo de versionamento [Gergic, 2003] SOFA/DCUP Versões com mais informações (atributos/relações)
apache-1.3.9-8mdk-i586.rpm Repositório de versões
Contém informações de todas entidades versionadas Busca com MQL (M-Cube Query Language)
o SELECT component_implementations HAVING (OS successor "Win95")
Reuse in Software Engineering Group
GCS no DBC {Abordagens}
Atualização de componentes DCUP [Plasil, 1997]
Dynamkic Component Updating (Java/CORBA)
Framework Hercules [Cook, 1999] Atualização de componentes com suporte a múltiplas versões simultâneas em tempo
de execução
Atualizações dinâmicas [Vandewode, 2002] SEESCOA – sistema de componentes em Java com suporte a atualizações dinâmicas Informações de versão incluídas nas classes Java quando carregadas
Controle de dependências Contratos de reuso [Lucas, 1997]
Dependências controladas através de documentação
Especificação de dependências [Larsson, 2001] Dependency Browser
Reuse in Software Engineering Group
GCS no DBC {Ferramentas}
JBCM [Zhang, 2001]
Sistema de gerenciamento de configuração de componentes
Baseado no modelo proposto por Mei (2001)
High-Level Management Function
Change Control
Audit Control
Build Support
Status Report Process Control
Configuration Support
Version Control and Concurrency
Control of Primitive
Components
Relationship Support
Mechanism of Version Control and ConcurrencyControl of Primitive Components
Basic Management Function
Mechanism
Arquitetura
Reuse in Software Engineering Group
GCS no DBC {Ferramentas}
Dependency Browser [Larsson, 2001]
Ferramenta para análise de dependências Monta grafos de dependências
o Nós: componenteso Arestas: dependências
Protótipo analisou dependências ente os componentes do Windows 2000
Reuse in Software Engineering Group
GCS no DBC {Ferramentas}
Aonix Select component Manager
Gerenciador de componentes Parte de um conjunto de
soluções (Select Business Solution)
Independente da tecnologia de componentes
Suporta os níveis de abstração apresentados em Apperly (2001)
Reuse in Software Engineering Group
GCS no DBC {Ferramentas}
Microsoft Visual component Manager
Gerenciador de componentes integrado ao ambiente de desenvolvimento da MS (Visual Studio)
Permite publicação, busca e reuso de componentes em um repositório
Reuse in Software Engineering Group
Conclusão
Técnicas tradicionais de GC não podem ser aplicadas diretamente em componentes nova definição de operações e objetos
GCS aplicada ao DBC Área de pesquisa recente
Muitos problemas a serem resolvidos Controle de versão é apenas uma questão!
Falta de ferramentas com uso prático comprovado
Ferramentas dependentes de tecnologia de componentes específica
Reuse in Software Engineering Group
Referências
[Estublier, 2000] Jacky Estublier, Software Configuration Management: A Roadmap, ACM Press, 2000.
[Babich, 1986] W. A. Babich, Software Configuration Management, Addison-Wesley,1986.
[Apperly, 2001] Hedley Apperly, Configuration Management and Component Libraries, In Component-Based Software Engineering: Putting the Pieces Together, Addison Wesley, 2001.
[Gergic, 2003] Jaroslav Gergic, Towards a Versioning Model for Component-based Software Assembly, 2003.
[Larsson, 2001] Magnus Larsson, Crnkovic Ivica, Configuration management for component-based systems, In the Tenth International Workshop on Software Configuration Management – SCM 10 (ICSE 2001), Toronto, Canada, May 2001
[Mei, 2001] Hong Mei, Lu Zhang, Fuqing Yang, A Software Configuration Management Model for Supporting Component-Based Software Development, Peking University, 2001
[Voas, 1998] Jeffrey Voas, Maintaining Component-Based Systems, IEEE Software,1998