josé diego da silva rafael bernardo rafael carício reconstrução de arquiteturas de software
TRANSCRIPT
![Page 1: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/1.jpg)
José Diego da SilvaRafael BernardoRafael Carício
Reconstrução de arquiteturas de software
![Page 2: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/2.jpg)
MotivaçãoAplicada quando se deseja mudar o
software existente ou validar possibilidades de mudança;
A atividade de reconstrução de SW (RAS) pode ser aplicada em vários cenários diferentes:Softwares que trabalham com linguagens de
programação diferentes;Softwares com componentes binários;Extrai visões importantes para a avaliação do
software;
![Page 3: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/3.jpg)
Reconstrução de arquiteturas de softwareA reconstrução de arquitetura de software
é um processo de engenharia reversa que permite que seja resgatada decisões de projeto tomadas durante a construção do software (SW). Conhecimento sobre um SW existenteVerificar conformidade com as descrições
arquiteturaisDar suporte a melhoria/evolução do SW
![Page 4: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/4.jpg)
Reconstrução de arquiteturas de softwareAs etapas da tarefa de RAS podem ser:
Extração de dados;Construção da Base de Dados;Fusão de visões;Reconstrução
Ferramentas usadas podem ser:Manual;Parcialmente automatizada;Totalmente automatizada.
![Page 5: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/5.jpg)
Atividades de reconstrução
![Page 6: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/6.jpg)
Extração das informações• O propósito desta atividade é extrair informações de várias
fontes distintas.
• Envolve análise do "design" existente e artefatos de implementação.
• O resultado é um conjunto de informações inseridas em uma base de dados.
• Dos artefatos analisados é possível identificar e capturar elementos de interesse.
• Cada uma das relações entre os elementos fornece informações diferentes sobre o sistema.
![Page 7: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/7.jpg)
Extração das informações• As relações de chamada entre métodos/funções ajuda a
construir o gráfico de chamadas.
• As relações de uso entre os arquivos permite visualizar o conjunto de dependências entre os arquivos do sistema.
• Os acessos de leitura e escrita mostram como os dados são usado.
![Page 8: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/8.jpg)
Extração das informações
[Software Architecture in Practice]
![Page 9: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/9.jpg)
Construção da Base de Dados
• A construção da base de dados envolve a coversão das informações para um formato padrão:o Formatos específicos de alguma ferramenta;o Banco de dados baseados em SQL.
• A escolha do formato da base de dados:o Deve ser um modelo de armazenamento conhecido;o Deve ser fácil de realizar consultas;o Permitir uso de linguagens que possam expressar padrões
arquiteturais; o Deve ser simples de realizar junções de visões.
• O modelo de dados deve ser simples para permitir a realização consultas de forma fácil.o Criar tabelas com dados previamente processados.
![Page 10: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/10.jpg)
Fusão de visões
• Combina as informações do banco de dados para produzir uma visão coerente da arquitetura.
• Manipula dados previamente armazenados na base de dados para estabelecer conexões entre os elementos.
• Utiliza visões de diferentes níveis de granularidade.
![Page 11: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/11.jpg)
Fusão de visões
• Realiza a fusão de visões para gerar uma representação coerente dos elementos.o Classes e respectivas sub-classes dependendo do nível de
granularidade formam um ou mais elementos.
![Page 12: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/12.jpg)
Reconstrução
Nessa fase é feita um agrupamento de elementos
Visualização e iteração no grafico
Definição e reconhecimento de padrões
![Page 13: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/13.jpg)
Cenários Práticos
![Page 14: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/14.jpg)
View-Set[1]Descrição: Identificação das visões
arquiteturais que definem o sistema que definem suficientemente o sistema
Contexto: Conjunto de visões arquiteturais(diferentes tipos/estilos)
Problema: que visões arquiteturais utilizar com base na necessidade dos stakeholders
![Page 15: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/15.jpg)
View-Set[2]Exemplo: O grupo de melhoria de
processo de uma organização gostaria de avaliar uma empresa que produz software embarcado quando a conformidade de suas implementações com as especificações originais. Não existe uma arquitetura e é preciso fornecer visões arquiteturais que atestem essa conformidade.
![Page 16: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/16.jpg)
View-Set[3]Solução desejada: Catalogar visões
arquiteturais, notações e abordagens para habilitar decisões sobre a visãoVarisos stakeholders: arquitetutus,
testadores, desenvolvedoresVarias representações: UML, Z, ACMEVarias abordagens: sistemas OO, funcionais
![Page 17: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/17.jpg)
Enforced-Architecture[1]Descrição: Aborda o problema da necessidade
de consistência entre a arquitetura do sistema construído e a arquitetura projetada para o mesmo.
Cenário: não existem construções padrão nas linguagens de programação que capturem os conceitos presentes na definição de uma arquitetura. Assim uma implementação está sugeita a implementar de forma inapropriada ou pobre conceitos presentas na arquitetura. Uma análise de conformidade entre a arquitetura projetada e a arquitetura presente no sistema é necessária.
![Page 18: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/18.jpg)
Enforced-Architecture[2]Problema: ausência de um mapeamento
relacione elementos da arquitetura com elementos de implementação
Exemplo: Uma organização desenvolve um produto onde nem todos os seus componentes são desenvolvidos in-house. Erros inesperados ocorreram durante os testes de integração dos componentes externos com o restante do sistema; é decidido verificar se a arquitetura projetada para os componentes externos esta em conformidade com a arquitetura presente no sistema.
![Page 19: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/19.jpg)
Enforced-Architecture[3]Solução Desejada: Deve consistir de um
método e ferramentas de suporte que forcem conformidade arquiteral que podem ser parte de um ferramenta geral de forward-engineering
O método e ferramentas devem mensurar qual bem os componentes estão de acordo com a arquitetura definida.
Benefício: Questões contratuais podem ser aferidas como no exemplo dado
![Page 20: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/20.jpg)
The Quality-Attribute-Changes Scenario [1]Exemplo: Uma empresa quer mudar seu sistema
para WEB. Preocupações: como novos atributos de qualidade
requeridos (ex: disponibilidade, segurança) impactam o sistema atual.
Descrição de arquitetura não disponível.Reconstrução da arquitetura para saber o impacto
de novos atributos de qualidade na arquitetura atual e que partes da arquitetura são afetadas por estes.
Problema: Como determinar a relação entre atributos de qualidade e elementos arquiteturais.
![Page 21: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/21.jpg)
The Quality-Attribute-Changes Scenario [2]Descrição: Aborda como padrões
arquiteturais são usados para satisfazer requisitos de qualidade e quais mudanças nestes requisitos impactam no sistema.
Contexto: Decisões de Projeto são fortemente influenciadas pela necessidade de atingir metas de atributos de qualidade.tradeoff (ex: desempenho x extensibilidade).tradeoff deve avaliar valor de negócio.
![Page 22: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/22.jpg)
The Quality-Attribute-Changes Scenario [3]Solução: Método e ferramenta para
reconstrução das informações sobre como um sistema é impactado por um atributo particular de qualidade.
![Page 23: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/23.jpg)
The Common and Variable Artifacts Scenario [1]Descrição:LPS permite a redução de custos
pelo reuso dos artefatos básicos. Este cenário provê modelo e técnica para análise de produtos em um domínio.
Contexto: Linha de Produtos. Para avaliar a possibilidade da criação de uma nova LP de produtos existentes é necessário avaliar a arquitetura analizando variabilidade e partes comuns.
![Page 24: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/24.jpg)
The Common and Variable Artifacts Scenario [2]Problema: Como identificar partes comuns
e variáveis em produtos similares.Exemplo: Uma empresa tem três times de
desenvolvimento produzindo produtos similares. Um grupo avalia o potencial de reuso com o uso de LSP. A empresa deve realizar uma reconstrução da arquitetura pelos três representantes dos times a fim de revelar as partes de cada sistema comuns a todos.
![Page 25: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/25.jpg)
The Common and Variable Artifacts Scenario [3]Solução: Métodos e ferramentas para
identificar e avaliar a variabilidade e partes comuns do sistema.
![Page 26: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/26.jpg)
The Binary Components Scenario [1]Descrição: Aborda a RAS usando
descrições de componentes bináriosContexto: A indústria de SW está
rapidamente movendo seus sistemas baseados em componentes comerciais. A reconstrução de SW baseia-se nas descrições dos componentes, se abstraindo do código fonte. A eficácia desse processo depende do nível de detalhamento da interface dos componentes
![Page 27: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/27.jpg)
The Binary Components Scenario [2]Problema: conduzir a reconstrução
quando são usados componentes bináriosExemplo: uma empresa vai desenvolver
uma aplicação que se comunica com um banco de dados, e usa dois componentes comerciais. O código fonte da aplicação está disponível, porém o dos componentes não.
![Page 28: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/28.jpg)
The Binary Components Scenario [3]Solução desejada: a abordagem consiste
na criação de pequenos programas para explorar deficiências que podem comprometer o desenvolvimento dos produtos reais. Deve permitir que o arquiteto conheça as limitações destes componentes.
![Page 29: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/29.jpg)
The Mixed-Language Scenario [1]Descrição: demonstra a necessidade de
modelos e técnicas que podem ser usadas para analisar SW que são desenvolvidos usando linguagens diferentes ou tipos de linguagens diferentes (procedural e orientadas a objeto)
Contexto: Sistemas desenvolvidos em partes que se comunicam, porém que são implementados em linguagens de programação diferentes.
![Page 30: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/30.jpg)
The Mixed-Language Scenario [2]
Problema: reconstruir o SW que foi implementado em mais de uma linguagem diferente
Exemplo: Uma organização quer entender um sistema existente pois deseja integrar partes deste sistema com outro sistema que também já existe feito por outra organização;
Não existe documentação do sistema existente e não existe ninguém na organização que saiba tudo sobre o sistema. Algumas pessoas entendem partes isoladas do sistema;
![Page 31: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/31.jpg)
The Mixed-Language Scenario [3]O sistema está implementado em
diferentes linguagens de programação.Solução desejada: utilizar ferramentas
previamente existentes, pois elas já estão habilitadas para extrair informação de linguagens de programação diferentes.
![Page 32: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/32.jpg)
Abordagens e ferramentas
![Page 33: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/33.jpg)
Reconstrução Manual
1. Crie uma visão alto-nível do sistema2. Atribua unidades de código a cada parte da
visão3. Repita o passo 1 para cada parte da visão
que não esta no nível de abstração necessário ao propósito da reconstrução
Não usadas somente utilitários como Emacs e Grep.
![Page 34: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/34.jpg)
Reconstrução Manual com suporte de ferramentasPortable Bookshelf (PBS): suporte a geração(com
ajuda de utilitários) e visualização do sistema em um formato web. Pode conter informações como código fonte, casos de teste, análise de performance e diagramas arquiteturais.
Ex: Reconstrução da arquitetura do Linuxcfx (c-code fact extractor): extrai relações entre
elementos de baixa granularidade(funções, variáveis, estruturas)
Manualmente: criação de uma árvore de subsitemas e atribuição de arquivos fonte a cada subsistema
grok fact manipulator: identificar relações entre os subsistemas
lsedit visualization: para visualização da estrutura
![Page 35: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/35.jpg)
C488 Compilador Pascal-like language[1]
![Page 36: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/36.jpg)
C488 Compilador Pascal-like language[2]
http://swag.uwaterloo.ca/pbs/examples/C488/V1/html/parser.top.html
![Page 37: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/37.jpg)
Rigi[1] Ferramenta visual interativa que suporta que
auxilia no entendimento e re-documentação do software
Regiedit: provê edição, manipulação, anotação e exploração da capacidades
Parser: extração de artefatos do softwareModelo de domínio: especifica tipos de entidade
e relações de interesse. É usada como entrada para criação do gráfico inicial do sistema.
Parser de muitas linguagens para Rigi Standard Format (RSF)
![Page 38: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/38.jpg)
Rigi[2]
http://www.rigi.csc.uvic.ca/Pages/description/howitworks.html
É possível selecionar, filtrar, definir padrões e editar o gráfico para identificar pertinentes subsistemas
![Page 39: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/39.jpg)
SHriMPRecebe como entrada um arquivo no
formato RSF (Rigi Standard Format ) e gera uma visualização da informação estraida do sistema.
Através de agregação manual é possivel agrupar elementos no grafico
Menos poderoso que o Regi; pode ser usado em conjunto com este para prover uma forma alternativa de visualização
![Page 40: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/40.jpg)
KLOCwork inSight ToolImplementa algoritmo de análise de código
para extrair visões arquiteturais de código, interações, fluxo de controle e threads de execução diretamente do código fonte
Não permite aplicação de padrões customizados para criação de abstrações maiores
Permite seleção, visualização e criação de agrupamentos manualmente que formam abstrações de mais alto nível.
![Page 41: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/41.jpg)
ConclusãoÉ uma tarefa importante para extração de
conhecimento de um sistema com uma deficiência de documentação
Importante para validação da arquitetura implementada pelo SW.
A utilização de ferramentas automatizadas aumenta a velocidade e precisão das informações extraídas.
![Page 42: José Diego da Silva Rafael Bernardo Rafael Carício Reconstrução de arquiteturas de software](https://reader030.vdocuments.site/reader030/viewer/2022013100/552fc0fe497959413d8bbc1b/html5/thumbnails/42.jpg)
REFERÊNCIASBASS, L.; CLEMENTS, P.; KAZMAN, R.
Software Architecture in Practice. Addison-Wesley, 2003.
L O'Brien, C Stoermer, C Verhoef. Software Architecture Reconstruction: Practice Needs and Current Approaches, 2002.
A Deursen, C Riva. Software Architecture Reconstruction. IEEE, 2004.