SlideShare uma empresa Scribd logo
1 de 69
Baixar para ler offline
Software Architecture Conformance and
Recovery
Ricardo Terra e Marco Túlio Valente
rterrabh [at] gmail.com mtov [at] dcc.ufmg.br
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 1 / 69
CV
Nome: Ricardo Terra
Email: rterrabh [at] gmail.com
www: ricardoterra.com.br
Twitter: rterrabh
Lattes: lattes.cnpq.br/ 0162081093970868
Ph.D. (UFMG/UWaterloo),
Post-Ph.D. (INRIA/Université Lille 1)
Background
Acadêmico : UFLA (desde 2014), UFSJ (1 ano ), FUMEC (3 anos ), UNIPAC (1 ano ), FAMINAS (3 anos )
Profissional : DBA Eng. (1 ano ), Synos (2 anos ), Stefanini (1 ano )
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 2 / 69
Agenda
1 Introdução
2 Sistema Motivador
3 DSM
4 SCQL
5 RM
6 ACL
7 Outras Técnicas
8 Considerações Finais
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 3 / 69
Introdução
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 4 / 69
Introdução – O que é arquitetura?
Arquitetura é um termo que admite múltiplas definições
Existem duas definições comumente encontradas:
uma separação de alto nível do sistema em suas partes
decisões que são difíceis de modificar
Assim, definiremos como:
“Um conjunto de decisões de projeto que tem impacto em
cada aspecto da construção e evolução de sistemas. Isso
inclui como sistemas são estruturados em componentes e
restrições sobre como tais componentes devem interagir.”
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 5 / 69
Introdução – Qual o papel de um arquiteto de software?
Muitos acreditam se tratar de um desenvolvedor sênior,
contudo conhecimento técnico é só uma de suas
habilidades
Um bom arquiteto de software deve:
Limitar as escolhas durante o desenvolvimento:
escolher um padrão de como desenvolver aplicações
definir/criar um framework para ser utilizado na aplicação
Indicar pontos potenciais de reutilização:
possuir uma visão abrangente do sistema e de seu contexto
adotar um design de componentização
ter conhecimento de outras aplicações na empresa
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 6 / 69
Introdução – Qual o papel de um arquiteto de software?
Dentre suas atribuições, a necessidade de considerar a
aplicação por um ângulo de visão mais abrangente
contempla:
Quebrar a complexidade do desenvolvimento de
aplicações em pedaços menores e mais gerenciáveis
Definir as funções de cada componente
Definir as interações e dependências entre os componentes
Comunicar esses pontos aos desenvolvedores
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 7 / 69
Introdução – Tipos de Arquitetura
Arquitetura Concreta
Também conhecida como Arquitetura Implementada
É a arquitetura que está representada no código fonte
Arquitetura Planejada
Também conhecida como Arquitetura Documentada
É a arquitetura definida nos modelos e documentos
arquiteturais do sistema, conforme definições do arquiteto
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 8 / 69
Introdução – Problemas Arquiteturais
Apesar de sua inquestionável importância, a arquitetura
documentada de um sistema – se disponível – geralmente
não reflete a sua implementação atual
Arquitetura Planejada = Arquitetura Concreta
Isso indica que existem decisões implementadas no código
fonte que violam a arquitetura planejada
A isso denomina-se desvio arquitetural
Desvios arquiteturais são comuns
Devido ao desconhecimento por parte dos desenvolvedores,
requisitos conflitantes, dificuldades técnicas etc
Geralmente, não são capturados e resolvidos
Levando ao fenômeno conhecido como erosão arquitetural
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 9 / 69
Introdução – Problemas Arquiteturais – Desvio Arquitetural
Por exemplo, suponha um sistema organizado estritamente
em camadas
Módulos: Mn, Mn−1, · · · , M0
Comunicação: Mi utiliza serviços de Mi−1
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 10 / 69
Introdução – Problemas Arquiteturais – Erosão Arquitetural
Erosão arquitetural tende a crescer com o tempo
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 11 / 69
Introdução – Problemas Arquiteturais
Erosão arquitetural indica que o sistema está se
degenerando
Isso faz com que os benefícios proporcionados por um bom
projeto arquitetural sejam anulados:
Manutenibilidade
Reusabilidade
Escalabilidade
Portabilidade
etc
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 12 / 69
Introdução – Abordagens Arquiteturais
Recuperação Arquitetural consiste de um conjunto de
métodos para extração de informações arquiteturais a
partir de representações de baixo nível de um sistema de
software, como o código fonte
Conformação Arquitetural consiste no processo de verificar
se uma representação de baixo nível de um sistema de
software – como o código fonte ou algo similar – está em
conformidade com sua arquitetura planejada
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 13 / 69
Introdução – Padrões de Projeto x Padrões Arquiteturais
Padrão de Projeto é uma solução para um problema
recorrente no desenvolvimento de sistemas. Consiste em
uma descrição ou modelo de como resolver um problema.
Normalmente, mostra relacionamentos e interações entre
classes e objetos
Exemplo: Abstract Factory, Facade, Singleton etc
Padrão Arquitetural tem um escopo mais amplo que um
padrão de projeto. Eles são mais amplos, geralmente
descrevendo um padrão global seguido por todo o sistema
Exemplo: MVC, Layers, Pipe etc
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 14 / 69
Sistema Motivador
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 15 / 69
Sistema Motivador
myAppointments é um sistema simples de gerenciamento de
informações pessoais implementado exclusivamente para
avaliação das soluções de recuperação e conformação
arquitetural que serão tratadas neste mini-curso
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 16 / 69
Sistema Motivador – Arquitetura
Padrão arquitetural MVC
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 17 / 69
Sistema Motivador – Arquitetura
Divisão clara entre objetos da Visão e do Modelo
Visão está associada a componentes GUI (Frames, Buttons,
TextField etc)
Objetos do Modelo são completamente independentes de
qualquer framework para construção de interfaces gráficas
Interações entre o Modelo e a Visão são mediadas por
objetos da camada de Controle
Modelo inclui:
Objetos de Domínio (Domain Objects) que representam
entidades, como Compromissos
Objetos de Acesso a Dados (Data Access Objects ou DAOs)
que encapsulam o framework de persistência subjacente
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 18 / 69
Sistema Motivador – Restrições Arquiteturais
RA1 Somente a camada de Visão deve utilizar AWT e Swing
RA2 Somente objetos DAO da camada de Modelo devem depender
de serviços SQL
RA3 A camada de Visão somente depende dela mesma, das APIs
AWT e Swing, da camada de Controle e de classes utilitárias. Isto
é, não acessam diretamente o Modelo
RA4 Objetos de Domínio não devem depender de DAOs nem de
qualquer objeto das camadas de Visão ou de Controle
RA5 Classes DAO somente devem depender de Objetos de Domínio,
de classes utilitárias e de serviços SQL
RA6 Classes do pacote util não devem depender de nenhuma classe
específica do sistema
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 19 / 69
Sistema Motivador – Arquitetura Concreta
Esse sistema nos guiará no entendimento de algumas
técnicas existentes para conformação e recuperação
arquitetural
Para cada técnica, faremos recuperação de modelos e
conformação arquitetural, sempre levando em
consideração as RAs descritas para o sistema
Assim, antes de estudarmos essas técnicas, vamos
“bisbilhotar” o código fonte desse sistema
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 20 / 69
DSM
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 21 / 69
DSM – Visão Geral
DSMs (Dependency Structure Matrixes) são matrizes de
adjacência utilizadas para representar dependências entre
módulos de um sistema
LDM (Lattix Dependency Manager), uma ferramenta para
conformação e gerenciamento arquitetural baseada no
conceito de DSMs
LDM também suporta o conceito de regras de projeto
(design rules), que podem ser utilizadas para definir
dependências que violam a arquitetura planejada de um
sistema
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 22 / 69
DSM – Visão Geral
Uma DSM é uma matriz quadrada cujas linhas e colunas
denotam classes ou agrupamento de classes
Um x na linha referente à classe A e na coluna referente à
classe B denota que a classe B depende da classe A, isto é,
existem referências explícitas em B para elementos
sintáticos de A. Uma outra possibilidade é representar na
célula (A,B) o número de referências que B contém para A
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 23 / 69
DSM – LDM
DSMs foram inicialmente propostas por Baldwin e Clark para
demonstrar a importância de princípios de projeto modular
na indústria de hardware
Após isso, Sullivan et al. demostraram que o conceito de
DSMs também pode ser utilizado no projeto de software
Neste mini-curso, serão utilizadas DSMs geradas pela
ferramenta LDMa (Lattix Dependency Manager) 6.0.5
LDM é uma ferramenta de conformação e visualização
arquitetural que utiliza DSMs para representar e gerenciar
dependências inter-classes em sistemas OO
a
Ferramenta disponível em: http://www.lattix.com
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 24 / 69
DSM – LDM – Objetivos
LDM possui dois objetivos principais:
revelar padrões arquiteturais
detectar dependências que indiquem violações arquiteturais
Para esse propósito, LDM automaticamente extrai a DSM do
código fonte de sistemas existentes utilizando técnicas de
análise estática
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 25 / 69
DSM – LDM – Algoritmo de Reordenação
Para auxiliar os arquitetos a descobrir e raciocionar sobre
estilos arquiteturais, LDM implementa um algoritmo de
reordenação (ou particionamento)
Esse algoritmo decide a ordem de apresentação das linhas
em uma DSM, iniciando pelos pacotes que proveem menos
serviços e finalizando com os pacotes que são mais
utilizados pelos outros pacotes
Esse algoritmo também agrupa pacotes que são
mutualmente dependentes
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 26 / 69
DSM – LDM – Conformação Arquitetural
LDM inclui uma linguagem simples para declarar regras de
projeto que devem ser seguidas pela implementação do
sistema
Regras de projeto possuem duas formas:
A can-use B A cannot-use B
indicando que classes do conjunto A podem (ou não)
depender das classes do conjunto B
Violações em regras de projeto são visualmente exibidas na
própria DSM extraída, com o objetivo de alertar sobre
possíveis erosões arquiteturais
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 27 / 69
DSM – Prática – Screen shot
Figura : DSM do myAppointments
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 28 / 69
SCQL
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 29 / 69
SCQL – Visão Geral
SCQL (Source Code Query Language) contempla
linguagens que realizam consultas a nível de código fonte
.QL é uma linguagem de consulta em código fonte que
provê suporte a uma ampla gama de tarefas de
desenvolvimento de software
Tais como verificação de convenções de código, procura
por erros, cálculo de métricas, detecção de oportunidades
de refatoração etc
Apesar de .QL automatizar várias tarefas de
desenvolvimento, este mini-curso concentra-se na utilização
da linguagem para gerar visualizações da arquitetura e
para detectar desvios arquiteturais
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 30 / 69
SCQL – .QL
.QL é inspirada na linguagem SQL, o que torna sua sintaxe
familiar para a maioria dos desenvolvedores
.QL inclui outras características que aumentam o seu poder
de expressão para a consulta em código fonte
engine Datalog, consultas recursivas em hierarquia de
herança, chamada de métodos etc
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 31 / 69
SCQL – .QL
Conceitos de orientação a objetos – tais como classes e
herança – podem ser usados para estender a linguagem
com novos predicados e construir bibliotecas
Para melhorar seu desempenho e escalabilidade, .QL utiliza
um SGBD relacional para armazenar relações entre
elementos do código fonte
Assim, consultas .QL são primeiramente traduzidas para
Datalog (otimizadas) e, em seguida, traduzidas para SQL
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 32 / 69
SCQL – .QL
SemmleCode .QLa é um plug-in para a IDE Eclipse que
permite a execução de consultas .QL sobre sistemas Java
Foi utilizado o Semmlecode Professional Edition, versão 1.0
Basicamente, a ferramenta inclui um editor de consultas
cuja apresentação de seus resultados pode ser vista em
forma de árvores, tabelas, gráficos, grafos e warnings
reportados pelo ambiente de desenvolvimento
Além disso, conta com a definição de repositórios de
consultas para armazenar, por exemplo, consultas
realizadas frequentemente
a
Ferramenta disponível em: http://semmle.com
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 33 / 69
SCQL – .QL – Prática – Consulta
Primeiramente, será demonstrada uma consulta que retorna as
dependências entre os pacotes do sistema myAppointments e
os pacotes AWT, Swing e SQL da API de Java:
1 from RefType r1 , RefType r2
2 where
3 r1 . fromSource ( ) and depends( r1 , r2 ) and
4 ( r2 . fromSource ( ) or isSwingApi ( r2 ) or isSqlApi ( r2 ) )
5 select r1 . getPackage( ) , r2 . getPackage( )
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 34 / 69
SCQL – .QL – Prática – Consulta
Predicados utilizado:
1 predicate isSwingApi ( RefType r ) {
2 r . getPackage ( ) .getName( ) . matches( " java .awt" ) or
3 r . getPackage ( ) .getName( ) . matches( " java .awt.% " ) or
4 r . getPackage ( ) .getName( ) . matches( " javax . swing " ) or
5 r . getPackage ( ) .getName( ) . matches( " javax . swing.% " )
6 }
7
8 predicate isSqlApi ( RefType r ) {
9 r . getPackage ( ) .getName( ) . matches( " java . sql " ) or
10 r . getPackage ( ) .getName( ) . matches( " java . sql .% " )
11 }
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 35 / 69
SCQL – .QL – Prática – Resultado
Figura : Grafo do myAppointments
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 36 / 69
SCQL – .QL – Prática – Consulta
Utilizando classes, métodos e predicados de .QL, foram
definidas consultas para detectar violações das restrições
arquiteturais definidas para o sistema myAppointments. Por
exemplo, a seguinte consulta verifica se a restrição arquitetural
RA1 é seguida:
1 from RefType r1 , RefType r2
2 where
3 r1 . fromSource ( )
4 and not ( r1 . getPackage ( ) .getName( ) . matches( " myappointments . view " ) )
5 and depends( r1 , r2 ) and isSwingApi ( r2 )
6 select r1 as Tipo ,
7 "RA1 violada : " + r1 . getQualifiedName ( )
8 + " utilizando " + r2 . getQualifiedName ( ) as Violacao
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 37 / 69
SCQL – .QL – Prática – Resultado
Figura : Exibição de uma violação
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 38 / 69
SCQL – .QL – Prática – Consulta
De maneira similar, a restrição RA3 é definida como a seguir:
1 from RefType view , RefType ref
2 where
3 view . getPackage ( ) .getName( ) . matches( " myappointments . view " )
4 and ref . fromSource ( )
5 and not ( ref . getPackage ( ) .getName( ) . matches( " myappointments . view " ) )
6 and not isController ( ref )
7 and not i s U t i l ( ref )
8 and depends(view , ref )
9 select view as Tipo_Visao ,
10 "RA3 violada : " + view . getQualifiedName ( )
11 + " utilizando " + ref . getQualifiedName ( ) as Violacao
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 39 / 69
SCQL – .QL – Prática – Consulta
Nessa consulta são utilizados os predicados isController e
isUtil, definidos como a seguir:
1 predicate isController ( RefType ref ) {
2 ref . getASupertype ∗ ( ) . hasQualifiedName
3 ( " myappointments . controller " , " IController " )
4 }
5 predicate i s U t i l ( RefType ref ) {
6 ref . getPackage ( ) .getName( ) . matches( " myappointments . u t i l " )
7 }
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 40 / 69
RM
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 41 / 69
RM – Visão Geral
Técnicas baseadas em Modelos de Reflexão (Reflexion
Models ou RM) comparam um modelo arquitetural (isto é, a
arquitetura planejada de um sistema) com o modelo de
código fonte (isto é, a arquitetura concreta desse sistema)
O resultado, chamado modelo de reflexão, destaca
relações convergentes, divergentes e ausentes entre os dois
modelos
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 42 / 69
RM – SAVE
SAVE (Software Architecture Visualization and Evaluation) é
uma ferramenta de conformação arquitetural centrada no
conceito de modelo de reflexão de software proposto por
Murphy et al.
Desenvolvida pelo Instituto Fraunhofer IESE
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 43 / 69
RM – SAVE
Segundo essa abordagem, arquitetos devem
primeiramente definir um modelo de alto nível que
represente a arquitetura planejada de um sistema
Esse modelo inclui os principais componentes do sistema e as
relações entre eles (invocações, instanciações, herança etc)
Arquitetos também devem definir um mapeamento entre o
modelo de código fonte (arquitetura concreta) e a
arquitetura planejada
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 44 / 69
RM – SAVE
Uma ferramenta baseada em modelo de reflexão, como SAVE,
classifica relações entre componentes como:
Convergente: quando uma relação prescrita no modelo de
alto nível é seguida pelo código fonte
Divergente: quando uma relação não prescrita no modelo
de alto nível existe no código fonte
Ausente: quando uma relação prescrita no modelo de alto
nível não existe no código fonte
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 45 / 69
RM – SAVE – Funcionamento
1 Modelo de Alto Nível
São definidos os componentes de alto nível e as comunicações
entre eles de acordo com a arquitetura planejada do sistema
2 Modelo de Código Fonte
É extraído um modelo a partir do código fonte do sistema
3 Mapeamento
Tarefa na qual os arquitetos devem manualmente associar cada
componente de alto nível aos seus componentes
correspondentes no modelo de código fonte
4 Modelo de Reflexão
A ferramenta compara os dois modelos e destaca as relações
ausentes e divergentes
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 46 / 69
RM – SAVE – Prática – Screen shot
Figura : Modelo de Reflexão Computado para o myAppointments
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 47 / 69
ACL
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 48 / 69
ACL – Visão Geral
ACL (Architectural Constraint Language) contempla
soluções que garantem a conformação arquitetural de um
sistema por meio de um conjunto de restrições
Linguagem DCL (Dependency Constraint Language) visa restringir
o espectro de dependências aceitáveis e inaceitáveis em
um sistema
O objetivo principal é impedir a erosão arquitetural, isto é,
que a arquitetura concreta (aquela presente no código
fonte) viole a arquitetura planejada de um sistema
Por exemplo, violações de camada, não utilização de
padrões, má uso de frameworks etc
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 49 / 69
ACL – DCL
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 50 / 69
ACL – DCL – Linguagem
Linguagem de domínio específico, declarativa e
estaticamente verificável
Permite a definição de restrições estruturais entre módulos
Princípio de funcionamento:
Definem-se os módulos
Definem-se as restrições entre eles
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 51 / 69
ACL – DCL – Módulos
Módulos: conjunto de classes
pacotes, subtipos, expressões regulares etc
Exemplos:
1 module View : org . foo . view .∗
2 module Remote: java . rmi . UnicastRemoteObject+
3 module Frame : " org . foo . [ a−zA−Z0 −9/.]∗Frame"
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 52 / 69
ACL – DCL – Restrições
Restrições para capturar divergências e ausências:
Exemplos:
1 only Factory can−create Products
2 U t i l can−only−depend U t i l , $java
3 View cannot−handle Model
4 Products must−implement java . io . Serializable
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 53 / 69
ACL – DCL – Ferramenta dclcheck
Ferramenta dclchecka
Verifica se o código fonte respeita restrições DCL
Plug-in para a IDE Eclipse
a
Ferramenta disponível em: http://dcc.ufmg.br/∼terra/dcl
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 54 / 69
ACL – DCL – Prática – Screen shot
Figura : Violações detectadas para o myAppointments
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 55 / 69
Outras Técnicas
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 56 / 69
Outras Técnicas
Existem uma série de outras soluções que lidam com
conformação e recuperação arquitetural
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 57 / 69
Outras Técnicas – Architectural Constraint Languages (ACL)
Structural Constraint Language (SCL)
Linguagem lógica de primeira ordem que permite expressar
intensões arquiteturais e de projeto
Restrições definidas sobre a estrutura estática de sistemas
orientados a objetos
Especificações SCL consistem em uma sequência de
declarações e fórmulas lógicas
LogEn
Linguagem lógica de domínio específico
Permite expressar dependências estruturais entre grupos
lógicos de elementos do código fonte, chamados
ensembles
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 58 / 69
Outras Técnicas – Architectural Description Languages (ADL)
ADLs
Alternativa para conformação arquitetural por construção
ADLs não se aplicam em sistemas existentes, pois são
extensões de linguagens
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 59 / 69
Outras Técnicas – Architecture Analysis Tools
Structure101: definição de modelos em termos de camadas
e dependências aceitáveis entre componentes
Bahaus: RM com decomposição hierárquica
Sotograph: permite realizar consultas de conformação
sobre dependências do código fonte que ficam
armazenadas em um repositório
Klocwork Insight: provê suporte a visualização arquitetural
em forma de grafos
JDepend: gera métricas que podem ser utilizadas para
medir e controlar o processo de erosão arquitetural
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 60 / 69
Outras Técnicas – Abordagens Dinâmicas
DiscoTect
Utiliza observações em tempo de execução de sistemas para
construir uma visão arquitetural do sistema
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 61 / 69
Considerações Finais
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 62 / 69
Considerações Finais
O curso apresentou quatro soluções distintas para
Recuperação e Conformação Arquitetural:
DSM: usando como exemplo a ferramenta LDM
SCQL: usando como exemplo a ferramenta .QL
RM: usando como exemplo a ferramenta SAVE
ACL: usando como exemplo a ferramenta DCL
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 63 / 69
Considerações Finais – DSM – LDM
DSMs representam instrumento simples e poderoso para
visualizar e raciocionar sobre arquiteturas de software, pois:
DSMs são estruturas inerentemente hierárquicas, o que provê
escalabilidade
Possuem algoritmos de reordenação
Regras de Projeto (Design Rules) não são expressivas
Não possuem expressões regulares ou subtipos
Limitação aos tipos de dependência
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 64 / 69
Considerações Finais – SCQL – .QL
.QL representa uma simples, mas poderosa linguagem de
consulta em código fonte
Poder deve-se sua origem em Datalog
Simplicidade deve-se a sintaxe inspirada em SQL
Dificuldades para visualizar, navegar e raciocinar sobre
representações arquiteturais
Mas, será esse o foco?
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 65 / 69
Considerações Finais – RM – SAVE
Possui um processo completo e bem definido para
verificação de conformação arquitetural
Controle sobre a granularidade e o nível de abstração dos
componentes
Mapeamento é uma tarefa árdua e deve ser mantida
A computação do modelo de reflexão pode tomar tempo
Não é viável ser continuamente aplicado
Mas, viável antes de lançamento de versões, após uma
interação do desenvolvimento etc
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 66 / 69
Considerações Finais – ACL – DCL
Restringe o espectro de dependências que podem ser
estabelecidas em sistemas orientados a objetos
É simples e auto-explicativa
Alto poder de expressão
Definição de módulos: pacotes, subtipos, expressões
regulares etc
Restrições: Todos os tipos de restrições
Não provê mecanismos para raciocinar ou visualizar sobre a
arquitetura
Foco na conformação arquitetural
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 67 / 69
Referências
L. Passos; R. Terra; R. Diniz; M. T. Valente; N. Mendonça. Static Architecture
Conformance Checking: An Illustrative Overview. IEEE Software, 2010
N. Sangal et al. Using dependency models to manage complex software
architecture. OOPSLA, 2005
O. Moor et al. Keynote address: .ql for source code analysis. SCAM, 2007
J. Knodel et al. Static evaluation of software architectures. CSMR, 2006
G. Murphy; D. Notkin; K. Sullivan. Software reflexion models: Bridging the
gap between source and high-level models. ACM SIGSOFT FSE, 1995
R. Terra; M. T. Valente. A dependency constraint language to manage
object-oriented software architectures. SPE, 2009
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 68 / 69
Obrigado!!!
Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 69 / 69

Mais conteúdo relacionado

Mais procurados

Uml Diagramas Estruturais
Uml   Diagramas EstruturaisUml   Diagramas Estruturais
Uml Diagramas Estruturaisthaisedd
 
Aula 2 - Introdução à programação de computadores - parte1
Aula 2 - Introdução à programação de computadores - parte1Aula 2 - Introdução à programação de computadores - parte1
Aula 2 - Introdução à programação de computadores - parte1Pacc UAB
 
Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004Cláudio Amaral
 

Mais procurados (10)

Apresentação da UML
Apresentação da UMLApresentação da UML
Apresentação da UML
 
Uml Diagramas Estruturais
Uml   Diagramas EstruturaisUml   Diagramas Estruturais
Uml Diagramas Estruturais
 
Aula 2 - Introdução à programação de computadores - parte1
Aula 2 - Introdução à programação de computadores - parte1Aula 2 - Introdução à programação de computadores - parte1
Aula 2 - Introdução à programação de computadores - parte1
 
Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004
 
A Linguagem UML
A Linguagem UMLA Linguagem UML
A Linguagem UML
 
Componentes
ComponentesComponentes
Componentes
 
UML
UMLUML
UML
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Apostila uml
Apostila umlApostila uml
Apostila uml
 
Uml
UmlUml
Uml
 

Semelhante a Software Architecture Conformance and Recovery Techniques

Aula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertidoAula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertidoAna Claudia Annunciação
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Softwareelliando dias
 
Aula4-modelagem e uml
Aula4-modelagem e umlAula4-modelagem e uml
Aula4-modelagem e umlneilaxavier
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialAlexandre Leão
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a AspectosRicardo Terra
 
Eng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoEng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoManuel Menezes de Sequeira
 
Do Diagrama de Fluxo de Dados ao Use Case
Do Diagrama de Fluxo de Dados ao Use CaseDo Diagrama de Fluxo de Dados ao Use Case
Do Diagrama de Fluxo de Dados ao Use CaseRobson Silva Espig
 
Aula modelagem de dados
Aula modelagem de dadosAula modelagem de dados
Aula modelagem de dadosGabriel Moura
 
Dev rioclaro gerenciando o ciclo de vida das suas aplicações em larga escal
Dev rioclaro   gerenciando o ciclo de vida das suas aplicações em larga escalDev rioclaro   gerenciando o ciclo de vida das suas aplicações em larga escal
Dev rioclaro gerenciando o ciclo de vida das suas aplicações em larga escalLuiz Guilherme Bauer Fraga Moreira
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwarePeter Jandl Junior
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareAricelio Souza
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projetoejdn1
 
Saam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halanSaam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halanHalan Ridolphi
 
Programação Oritentada a Aspecto
Programação Oritentada a AspectoProgramação Oritentada a Aspecto
Programação Oritentada a AspectoBenicio Ávila
 
MDL - Elaborando diagramas em Micro Development Language
MDL - Elaborando diagramas em Micro Development LanguageMDL - Elaborando diagramas em Micro Development Language
MDL - Elaborando diagramas em Micro Development LanguageGustavo Sanchez - Palência
 

Semelhante a Software Architecture Conformance and Recovery Techniques (20)

Aula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertidoAula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertido
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Software
 
Aula4-modelagem e uml
Aula4-modelagem e umlAula4-modelagem e uml
Aula4-modelagem e uml
 
1.pdf
1.pdf1.pdf
1.pdf
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencial
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
Eng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoEng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónico
 
Do Diagrama de Fluxo de Dados ao Use Case
Do Diagrama de Fluxo de Dados ao Use CaseDo Diagrama de Fluxo de Dados ao Use Case
Do Diagrama de Fluxo de Dados ao Use Case
 
Aula modelagem de dados
Aula modelagem de dadosAula modelagem de dados
Aula modelagem de dados
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Dev rioclaro gerenciando o ciclo de vida das suas aplicações em larga escal
Dev rioclaro   gerenciando o ciclo de vida das suas aplicações em larga escalDev rioclaro   gerenciando o ciclo de vida das suas aplicações em larga escal
Dev rioclaro gerenciando o ciclo de vida das suas aplicações em larga escal
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de Software
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Corbawebserves
CorbawebservesCorbawebserves
Corbawebserves
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
Saam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halanSaam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halan
 
Programação Oritentada a Aspecto
Programação Oritentada a AspectoProgramação Oritentada a Aspecto
Programação Oritentada a Aspecto
 
MDL - Elaborando diagramas em Micro Development Language
MDL - Elaborando diagramas em Micro Development LanguageMDL - Elaborando diagramas em Micro Development Language
MDL - Elaborando diagramas em Micro Development Language
 

Mais de Ricardo Terra

Microsserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORMMicrosserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORMRicardo Terra
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Ricardo Terra
 
Análise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesAnálise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesRicardo Terra
 
Engenharia de Software: POC
Engenharia de Software: POCEngenharia de Software: POC
Engenharia de Software: POCRicardo Terra
 
Which Programming Language is the best one?
Which Programming Language is the best one?Which Programming Language is the best one?
Which Programming Language is the best one?Ricardo Terra
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática ComputacionalRicardo Terra
 
English---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsEnglish---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsRicardo Terra
 
Casamento de Padrões
Casamento de PadrõesCasamento de Padrões
Casamento de PadrõesRicardo Terra
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Ricardo Terra
 
Segurança da Internet
Segurança da InternetSegurança da Internet
Segurança da InternetRicardo Terra
 
Java Net: Interagindo com a Internet
Java Net: Interagindo com a InternetJava Net: Interagindo com a Internet
Java Net: Interagindo com a InternetRicardo Terra
 
Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)Ricardo Terra
 
Apostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTApostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTRicardo Terra
 
Java JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBJava JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBRicardo Terra
 
Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Ricardo Terra
 
Análise Estática de Código
Análise Estática de CódigoAnálise Estática de Código
Análise Estática de CódigoRicardo Terra
 

Mais de Ricardo Terra (20)

Microsserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORMMicrosserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORM
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)
 
Análise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesAnálise Estática de Código: Aplicações
Análise Estática de Código: Aplicações
 
Engenharia de Software: POC
Engenharia de Software: POCEngenharia de Software: POC
Engenharia de Software: POC
 
Which Programming Language is the best one?
Which Programming Language is the best one?Which Programming Language is the best one?
Which Programming Language is the best one?
 
Refactoring
RefactoringRefactoring
Refactoring
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática Computacional
 
English---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsEnglish---and LaTeX---Writing Tips
English---and LaTeX---Writing Tips
 
Casamento de Padrões
Casamento de PadrõesCasamento de Padrões
Casamento de Padrões
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)
 
Segurança da Internet
Segurança da InternetSegurança da Internet
Segurança da Internet
 
Java Net: Interagindo com a Internet
Java Net: Interagindo com a InternetJava Net: Interagindo com a Internet
Java Net: Interagindo com a Internet
 
Aula Zero
Aula ZeroAula Zero
Aula Zero
 
Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)
 
Apostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTApostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLT
 
Java JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBJava JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDB
 
Apostila UML
Apostila UMLApostila UML
Apostila UML
 
Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)
 
Análise Estática de Código
Análise Estática de CódigoAnálise Estática de Código
Análise Estática de Código
 
Apostila XHTML
Apostila XHTMLApostila XHTML
Apostila XHTML
 

Último

VARIEDADES LINGUÍSTICAS - 1. pptx
VARIEDADES        LINGUÍSTICAS - 1. pptxVARIEDADES        LINGUÍSTICAS - 1. pptx
VARIEDADES LINGUÍSTICAS - 1. pptxMarlene Cunhada
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
análise de redação completa - Dissertação
análise de redação completa - Dissertaçãoanálise de redação completa - Dissertação
análise de redação completa - DissertaçãoMaiteFerreira4
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
Libras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS MemoriaLibras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS Memorialgrecchi
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFtimaMoreira35
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfMarianaMoraesMathias
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresAnaCarinaKucharski1
 
Atividade sobre os Pronomes Pessoais.pptx
Atividade sobre os Pronomes Pessoais.pptxAtividade sobre os Pronomes Pessoais.pptx
Atividade sobre os Pronomes Pessoais.pptxDianaSheila2
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfFernandaMota99
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreCIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreElianeElika
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...licinioBorges
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptMaiteFerreira4
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 

Último (20)

VARIEDADES LINGUÍSTICAS - 1. pptx
VARIEDADES        LINGUÍSTICAS - 1. pptxVARIEDADES        LINGUÍSTICAS - 1. pptx
VARIEDADES LINGUÍSTICAS - 1. pptx
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
análise de redação completa - Dissertação
análise de redação completa - Dissertaçãoanálise de redação completa - Dissertação
análise de redação completa - Dissertação
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
Libras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS MemoriaLibras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS Memoria
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdf
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
 
Atividade sobre os Pronomes Pessoais.pptx
Atividade sobre os Pronomes Pessoais.pptxAtividade sobre os Pronomes Pessoais.pptx
Atividade sobre os Pronomes Pessoais.pptx
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdf
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreCIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.ppt
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 

Software Architecture Conformance and Recovery Techniques

  • 1. Software Architecture Conformance and Recovery Ricardo Terra e Marco Túlio Valente rterrabh [at] gmail.com mtov [at] dcc.ufmg.br Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 1 / 69
  • 2. CV Nome: Ricardo Terra Email: rterrabh [at] gmail.com www: ricardoterra.com.br Twitter: rterrabh Lattes: lattes.cnpq.br/ 0162081093970868 Ph.D. (UFMG/UWaterloo), Post-Ph.D. (INRIA/Université Lille 1) Background Acadêmico : UFLA (desde 2014), UFSJ (1 ano ), FUMEC (3 anos ), UNIPAC (1 ano ), FAMINAS (3 anos ) Profissional : DBA Eng. (1 ano ), Synos (2 anos ), Stefanini (1 ano ) Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 2 / 69
  • 3. Agenda 1 Introdução 2 Sistema Motivador 3 DSM 4 SCQL 5 RM 6 ACL 7 Outras Técnicas 8 Considerações Finais Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 3 / 69
  • 4. Introdução Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 4 / 69
  • 5. Introdução – O que é arquitetura? Arquitetura é um termo que admite múltiplas definições Existem duas definições comumente encontradas: uma separação de alto nível do sistema em suas partes decisões que são difíceis de modificar Assim, definiremos como: “Um conjunto de decisões de projeto que tem impacto em cada aspecto da construção e evolução de sistemas. Isso inclui como sistemas são estruturados em componentes e restrições sobre como tais componentes devem interagir.” Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 5 / 69
  • 6. Introdução – Qual o papel de um arquiteto de software? Muitos acreditam se tratar de um desenvolvedor sênior, contudo conhecimento técnico é só uma de suas habilidades Um bom arquiteto de software deve: Limitar as escolhas durante o desenvolvimento: escolher um padrão de como desenvolver aplicações definir/criar um framework para ser utilizado na aplicação Indicar pontos potenciais de reutilização: possuir uma visão abrangente do sistema e de seu contexto adotar um design de componentização ter conhecimento de outras aplicações na empresa Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 6 / 69
  • 7. Introdução – Qual o papel de um arquiteto de software? Dentre suas atribuições, a necessidade de considerar a aplicação por um ângulo de visão mais abrangente contempla: Quebrar a complexidade do desenvolvimento de aplicações em pedaços menores e mais gerenciáveis Definir as funções de cada componente Definir as interações e dependências entre os componentes Comunicar esses pontos aos desenvolvedores Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 7 / 69
  • 8. Introdução – Tipos de Arquitetura Arquitetura Concreta Também conhecida como Arquitetura Implementada É a arquitetura que está representada no código fonte Arquitetura Planejada Também conhecida como Arquitetura Documentada É a arquitetura definida nos modelos e documentos arquiteturais do sistema, conforme definições do arquiteto Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 8 / 69
  • 9. Introdução – Problemas Arquiteturais Apesar de sua inquestionável importância, a arquitetura documentada de um sistema – se disponível – geralmente não reflete a sua implementação atual Arquitetura Planejada = Arquitetura Concreta Isso indica que existem decisões implementadas no código fonte que violam a arquitetura planejada A isso denomina-se desvio arquitetural Desvios arquiteturais são comuns Devido ao desconhecimento por parte dos desenvolvedores, requisitos conflitantes, dificuldades técnicas etc Geralmente, não são capturados e resolvidos Levando ao fenômeno conhecido como erosão arquitetural Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 9 / 69
  • 10. Introdução – Problemas Arquiteturais – Desvio Arquitetural Por exemplo, suponha um sistema organizado estritamente em camadas Módulos: Mn, Mn−1, · · · , M0 Comunicação: Mi utiliza serviços de Mi−1 Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 10 / 69
  • 11. Introdução – Problemas Arquiteturais – Erosão Arquitetural Erosão arquitetural tende a crescer com o tempo Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 11 / 69
  • 12. Introdução – Problemas Arquiteturais Erosão arquitetural indica que o sistema está se degenerando Isso faz com que os benefícios proporcionados por um bom projeto arquitetural sejam anulados: Manutenibilidade Reusabilidade Escalabilidade Portabilidade etc Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 12 / 69
  • 13. Introdução – Abordagens Arquiteturais Recuperação Arquitetural consiste de um conjunto de métodos para extração de informações arquiteturais a partir de representações de baixo nível de um sistema de software, como o código fonte Conformação Arquitetural consiste no processo de verificar se uma representação de baixo nível de um sistema de software – como o código fonte ou algo similar – está em conformidade com sua arquitetura planejada Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 13 / 69
  • 14. Introdução – Padrões de Projeto x Padrões Arquiteturais Padrão de Projeto é uma solução para um problema recorrente no desenvolvimento de sistemas. Consiste em uma descrição ou modelo de como resolver um problema. Normalmente, mostra relacionamentos e interações entre classes e objetos Exemplo: Abstract Factory, Facade, Singleton etc Padrão Arquitetural tem um escopo mais amplo que um padrão de projeto. Eles são mais amplos, geralmente descrevendo um padrão global seguido por todo o sistema Exemplo: MVC, Layers, Pipe etc Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 14 / 69
  • 15. Sistema Motivador Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 15 / 69
  • 16. Sistema Motivador myAppointments é um sistema simples de gerenciamento de informações pessoais implementado exclusivamente para avaliação das soluções de recuperação e conformação arquitetural que serão tratadas neste mini-curso Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 16 / 69
  • 17. Sistema Motivador – Arquitetura Padrão arquitetural MVC Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 17 / 69
  • 18. Sistema Motivador – Arquitetura Divisão clara entre objetos da Visão e do Modelo Visão está associada a componentes GUI (Frames, Buttons, TextField etc) Objetos do Modelo são completamente independentes de qualquer framework para construção de interfaces gráficas Interações entre o Modelo e a Visão são mediadas por objetos da camada de Controle Modelo inclui: Objetos de Domínio (Domain Objects) que representam entidades, como Compromissos Objetos de Acesso a Dados (Data Access Objects ou DAOs) que encapsulam o framework de persistência subjacente Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 18 / 69
  • 19. Sistema Motivador – Restrições Arquiteturais RA1 Somente a camada de Visão deve utilizar AWT e Swing RA2 Somente objetos DAO da camada de Modelo devem depender de serviços SQL RA3 A camada de Visão somente depende dela mesma, das APIs AWT e Swing, da camada de Controle e de classes utilitárias. Isto é, não acessam diretamente o Modelo RA4 Objetos de Domínio não devem depender de DAOs nem de qualquer objeto das camadas de Visão ou de Controle RA5 Classes DAO somente devem depender de Objetos de Domínio, de classes utilitárias e de serviços SQL RA6 Classes do pacote util não devem depender de nenhuma classe específica do sistema Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 19 / 69
  • 20. Sistema Motivador – Arquitetura Concreta Esse sistema nos guiará no entendimento de algumas técnicas existentes para conformação e recuperação arquitetural Para cada técnica, faremos recuperação de modelos e conformação arquitetural, sempre levando em consideração as RAs descritas para o sistema Assim, antes de estudarmos essas técnicas, vamos “bisbilhotar” o código fonte desse sistema Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 20 / 69
  • 21. DSM Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 21 / 69
  • 22. DSM – Visão Geral DSMs (Dependency Structure Matrixes) são matrizes de adjacência utilizadas para representar dependências entre módulos de um sistema LDM (Lattix Dependency Manager), uma ferramenta para conformação e gerenciamento arquitetural baseada no conceito de DSMs LDM também suporta o conceito de regras de projeto (design rules), que podem ser utilizadas para definir dependências que violam a arquitetura planejada de um sistema Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 22 / 69
  • 23. DSM – Visão Geral Uma DSM é uma matriz quadrada cujas linhas e colunas denotam classes ou agrupamento de classes Um x na linha referente à classe A e na coluna referente à classe B denota que a classe B depende da classe A, isto é, existem referências explícitas em B para elementos sintáticos de A. Uma outra possibilidade é representar na célula (A,B) o número de referências que B contém para A Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 23 / 69
  • 24. DSM – LDM DSMs foram inicialmente propostas por Baldwin e Clark para demonstrar a importância de princípios de projeto modular na indústria de hardware Após isso, Sullivan et al. demostraram que o conceito de DSMs também pode ser utilizado no projeto de software Neste mini-curso, serão utilizadas DSMs geradas pela ferramenta LDMa (Lattix Dependency Manager) 6.0.5 LDM é uma ferramenta de conformação e visualização arquitetural que utiliza DSMs para representar e gerenciar dependências inter-classes em sistemas OO a Ferramenta disponível em: http://www.lattix.com Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 24 / 69
  • 25. DSM – LDM – Objetivos LDM possui dois objetivos principais: revelar padrões arquiteturais detectar dependências que indiquem violações arquiteturais Para esse propósito, LDM automaticamente extrai a DSM do código fonte de sistemas existentes utilizando técnicas de análise estática Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 25 / 69
  • 26. DSM – LDM – Algoritmo de Reordenação Para auxiliar os arquitetos a descobrir e raciocionar sobre estilos arquiteturais, LDM implementa um algoritmo de reordenação (ou particionamento) Esse algoritmo decide a ordem de apresentação das linhas em uma DSM, iniciando pelos pacotes que proveem menos serviços e finalizando com os pacotes que são mais utilizados pelos outros pacotes Esse algoritmo também agrupa pacotes que são mutualmente dependentes Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 26 / 69
  • 27. DSM – LDM – Conformação Arquitetural LDM inclui uma linguagem simples para declarar regras de projeto que devem ser seguidas pela implementação do sistema Regras de projeto possuem duas formas: A can-use B A cannot-use B indicando que classes do conjunto A podem (ou não) depender das classes do conjunto B Violações em regras de projeto são visualmente exibidas na própria DSM extraída, com o objetivo de alertar sobre possíveis erosões arquiteturais Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 27 / 69
  • 28. DSM – Prática – Screen shot Figura : DSM do myAppointments Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 28 / 69
  • 29. SCQL Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 29 / 69
  • 30. SCQL – Visão Geral SCQL (Source Code Query Language) contempla linguagens que realizam consultas a nível de código fonte .QL é uma linguagem de consulta em código fonte que provê suporte a uma ampla gama de tarefas de desenvolvimento de software Tais como verificação de convenções de código, procura por erros, cálculo de métricas, detecção de oportunidades de refatoração etc Apesar de .QL automatizar várias tarefas de desenvolvimento, este mini-curso concentra-se na utilização da linguagem para gerar visualizações da arquitetura e para detectar desvios arquiteturais Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 30 / 69
  • 31. SCQL – .QL .QL é inspirada na linguagem SQL, o que torna sua sintaxe familiar para a maioria dos desenvolvedores .QL inclui outras características que aumentam o seu poder de expressão para a consulta em código fonte engine Datalog, consultas recursivas em hierarquia de herança, chamada de métodos etc Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 31 / 69
  • 32. SCQL – .QL Conceitos de orientação a objetos – tais como classes e herança – podem ser usados para estender a linguagem com novos predicados e construir bibliotecas Para melhorar seu desempenho e escalabilidade, .QL utiliza um SGBD relacional para armazenar relações entre elementos do código fonte Assim, consultas .QL são primeiramente traduzidas para Datalog (otimizadas) e, em seguida, traduzidas para SQL Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 32 / 69
  • 33. SCQL – .QL SemmleCode .QLa é um plug-in para a IDE Eclipse que permite a execução de consultas .QL sobre sistemas Java Foi utilizado o Semmlecode Professional Edition, versão 1.0 Basicamente, a ferramenta inclui um editor de consultas cuja apresentação de seus resultados pode ser vista em forma de árvores, tabelas, gráficos, grafos e warnings reportados pelo ambiente de desenvolvimento Além disso, conta com a definição de repositórios de consultas para armazenar, por exemplo, consultas realizadas frequentemente a Ferramenta disponível em: http://semmle.com Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 33 / 69
  • 34. SCQL – .QL – Prática – Consulta Primeiramente, será demonstrada uma consulta que retorna as dependências entre os pacotes do sistema myAppointments e os pacotes AWT, Swing e SQL da API de Java: 1 from RefType r1 , RefType r2 2 where 3 r1 . fromSource ( ) and depends( r1 , r2 ) and 4 ( r2 . fromSource ( ) or isSwingApi ( r2 ) or isSqlApi ( r2 ) ) 5 select r1 . getPackage( ) , r2 . getPackage( ) Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 34 / 69
  • 35. SCQL – .QL – Prática – Consulta Predicados utilizado: 1 predicate isSwingApi ( RefType r ) { 2 r . getPackage ( ) .getName( ) . matches( " java .awt" ) or 3 r . getPackage ( ) .getName( ) . matches( " java .awt.% " ) or 4 r . getPackage ( ) .getName( ) . matches( " javax . swing " ) or 5 r . getPackage ( ) .getName( ) . matches( " javax . swing.% " ) 6 } 7 8 predicate isSqlApi ( RefType r ) { 9 r . getPackage ( ) .getName( ) . matches( " java . sql " ) or 10 r . getPackage ( ) .getName( ) . matches( " java . sql .% " ) 11 } Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 35 / 69
  • 36. SCQL – .QL – Prática – Resultado Figura : Grafo do myAppointments Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 36 / 69
  • 37. SCQL – .QL – Prática – Consulta Utilizando classes, métodos e predicados de .QL, foram definidas consultas para detectar violações das restrições arquiteturais definidas para o sistema myAppointments. Por exemplo, a seguinte consulta verifica se a restrição arquitetural RA1 é seguida: 1 from RefType r1 , RefType r2 2 where 3 r1 . fromSource ( ) 4 and not ( r1 . getPackage ( ) .getName( ) . matches( " myappointments . view " ) ) 5 and depends( r1 , r2 ) and isSwingApi ( r2 ) 6 select r1 as Tipo , 7 "RA1 violada : " + r1 . getQualifiedName ( ) 8 + " utilizando " + r2 . getQualifiedName ( ) as Violacao Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 37 / 69
  • 38. SCQL – .QL – Prática – Resultado Figura : Exibição de uma violação Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 38 / 69
  • 39. SCQL – .QL – Prática – Consulta De maneira similar, a restrição RA3 é definida como a seguir: 1 from RefType view , RefType ref 2 where 3 view . getPackage ( ) .getName( ) . matches( " myappointments . view " ) 4 and ref . fromSource ( ) 5 and not ( ref . getPackage ( ) .getName( ) . matches( " myappointments . view " ) ) 6 and not isController ( ref ) 7 and not i s U t i l ( ref ) 8 and depends(view , ref ) 9 select view as Tipo_Visao , 10 "RA3 violada : " + view . getQualifiedName ( ) 11 + " utilizando " + ref . getQualifiedName ( ) as Violacao Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 39 / 69
  • 40. SCQL – .QL – Prática – Consulta Nessa consulta são utilizados os predicados isController e isUtil, definidos como a seguir: 1 predicate isController ( RefType ref ) { 2 ref . getASupertype ∗ ( ) . hasQualifiedName 3 ( " myappointments . controller " , " IController " ) 4 } 5 predicate i s U t i l ( RefType ref ) { 6 ref . getPackage ( ) .getName( ) . matches( " myappointments . u t i l " ) 7 } Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 40 / 69
  • 41. RM Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 41 / 69
  • 42. RM – Visão Geral Técnicas baseadas em Modelos de Reflexão (Reflexion Models ou RM) comparam um modelo arquitetural (isto é, a arquitetura planejada de um sistema) com o modelo de código fonte (isto é, a arquitetura concreta desse sistema) O resultado, chamado modelo de reflexão, destaca relações convergentes, divergentes e ausentes entre os dois modelos Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 42 / 69
  • 43. RM – SAVE SAVE (Software Architecture Visualization and Evaluation) é uma ferramenta de conformação arquitetural centrada no conceito de modelo de reflexão de software proposto por Murphy et al. Desenvolvida pelo Instituto Fraunhofer IESE Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 43 / 69
  • 44. RM – SAVE Segundo essa abordagem, arquitetos devem primeiramente definir um modelo de alto nível que represente a arquitetura planejada de um sistema Esse modelo inclui os principais componentes do sistema e as relações entre eles (invocações, instanciações, herança etc) Arquitetos também devem definir um mapeamento entre o modelo de código fonte (arquitetura concreta) e a arquitetura planejada Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 44 / 69
  • 45. RM – SAVE Uma ferramenta baseada em modelo de reflexão, como SAVE, classifica relações entre componentes como: Convergente: quando uma relação prescrita no modelo de alto nível é seguida pelo código fonte Divergente: quando uma relação não prescrita no modelo de alto nível existe no código fonte Ausente: quando uma relação prescrita no modelo de alto nível não existe no código fonte Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 45 / 69
  • 46. RM – SAVE – Funcionamento 1 Modelo de Alto Nível São definidos os componentes de alto nível e as comunicações entre eles de acordo com a arquitetura planejada do sistema 2 Modelo de Código Fonte É extraído um modelo a partir do código fonte do sistema 3 Mapeamento Tarefa na qual os arquitetos devem manualmente associar cada componente de alto nível aos seus componentes correspondentes no modelo de código fonte 4 Modelo de Reflexão A ferramenta compara os dois modelos e destaca as relações ausentes e divergentes Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 46 / 69
  • 47. RM – SAVE – Prática – Screen shot Figura : Modelo de Reflexão Computado para o myAppointments Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 47 / 69
  • 48. ACL Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 48 / 69
  • 49. ACL – Visão Geral ACL (Architectural Constraint Language) contempla soluções que garantem a conformação arquitetural de um sistema por meio de um conjunto de restrições Linguagem DCL (Dependency Constraint Language) visa restringir o espectro de dependências aceitáveis e inaceitáveis em um sistema O objetivo principal é impedir a erosão arquitetural, isto é, que a arquitetura concreta (aquela presente no código fonte) viole a arquitetura planejada de um sistema Por exemplo, violações de camada, não utilização de padrões, má uso de frameworks etc Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 49 / 69
  • 50. ACL – DCL Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 50 / 69
  • 51. ACL – DCL – Linguagem Linguagem de domínio específico, declarativa e estaticamente verificável Permite a definição de restrições estruturais entre módulos Princípio de funcionamento: Definem-se os módulos Definem-se as restrições entre eles Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 51 / 69
  • 52. ACL – DCL – Módulos Módulos: conjunto de classes pacotes, subtipos, expressões regulares etc Exemplos: 1 module View : org . foo . view .∗ 2 module Remote: java . rmi . UnicastRemoteObject+ 3 module Frame : " org . foo . [ a−zA−Z0 −9/.]∗Frame" Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 52 / 69
  • 53. ACL – DCL – Restrições Restrições para capturar divergências e ausências: Exemplos: 1 only Factory can−create Products 2 U t i l can−only−depend U t i l , $java 3 View cannot−handle Model 4 Products must−implement java . io . Serializable Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 53 / 69
  • 54. ACL – DCL – Ferramenta dclcheck Ferramenta dclchecka Verifica se o código fonte respeita restrições DCL Plug-in para a IDE Eclipse a Ferramenta disponível em: http://dcc.ufmg.br/∼terra/dcl Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 54 / 69
  • 55. ACL – DCL – Prática – Screen shot Figura : Violações detectadas para o myAppointments Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 55 / 69
  • 56. Outras Técnicas Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 56 / 69
  • 57. Outras Técnicas Existem uma série de outras soluções que lidam com conformação e recuperação arquitetural Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 57 / 69
  • 58. Outras Técnicas – Architectural Constraint Languages (ACL) Structural Constraint Language (SCL) Linguagem lógica de primeira ordem que permite expressar intensões arquiteturais e de projeto Restrições definidas sobre a estrutura estática de sistemas orientados a objetos Especificações SCL consistem em uma sequência de declarações e fórmulas lógicas LogEn Linguagem lógica de domínio específico Permite expressar dependências estruturais entre grupos lógicos de elementos do código fonte, chamados ensembles Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 58 / 69
  • 59. Outras Técnicas – Architectural Description Languages (ADL) ADLs Alternativa para conformação arquitetural por construção ADLs não se aplicam em sistemas existentes, pois são extensões de linguagens Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 59 / 69
  • 60. Outras Técnicas – Architecture Analysis Tools Structure101: definição de modelos em termos de camadas e dependências aceitáveis entre componentes Bahaus: RM com decomposição hierárquica Sotograph: permite realizar consultas de conformação sobre dependências do código fonte que ficam armazenadas em um repositório Klocwork Insight: provê suporte a visualização arquitetural em forma de grafos JDepend: gera métricas que podem ser utilizadas para medir e controlar o processo de erosão arquitetural Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 60 / 69
  • 61. Outras Técnicas – Abordagens Dinâmicas DiscoTect Utiliza observações em tempo de execução de sistemas para construir uma visão arquitetural do sistema Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 61 / 69
  • 62. Considerações Finais Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 62 / 69
  • 63. Considerações Finais O curso apresentou quatro soluções distintas para Recuperação e Conformação Arquitetural: DSM: usando como exemplo a ferramenta LDM SCQL: usando como exemplo a ferramenta .QL RM: usando como exemplo a ferramenta SAVE ACL: usando como exemplo a ferramenta DCL Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 63 / 69
  • 64. Considerações Finais – DSM – LDM DSMs representam instrumento simples e poderoso para visualizar e raciocionar sobre arquiteturas de software, pois: DSMs são estruturas inerentemente hierárquicas, o que provê escalabilidade Possuem algoritmos de reordenação Regras de Projeto (Design Rules) não são expressivas Não possuem expressões regulares ou subtipos Limitação aos tipos de dependência Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 64 / 69
  • 65. Considerações Finais – SCQL – .QL .QL representa uma simples, mas poderosa linguagem de consulta em código fonte Poder deve-se sua origem em Datalog Simplicidade deve-se a sintaxe inspirada em SQL Dificuldades para visualizar, navegar e raciocinar sobre representações arquiteturais Mas, será esse o foco? Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 65 / 69
  • 66. Considerações Finais – RM – SAVE Possui um processo completo e bem definido para verificação de conformação arquitetural Controle sobre a granularidade e o nível de abstração dos componentes Mapeamento é uma tarefa árdua e deve ser mantida A computação do modelo de reflexão pode tomar tempo Não é viável ser continuamente aplicado Mas, viável antes de lançamento de versões, após uma interação do desenvolvimento etc Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 66 / 69
  • 67. Considerações Finais – ACL – DCL Restringe o espectro de dependências que podem ser estabelecidas em sistemas orientados a objetos É simples e auto-explicativa Alto poder de expressão Definição de módulos: pacotes, subtipos, expressões regulares etc Restrições: Todos os tipos de restrições Não provê mecanismos para raciocinar ou visualizar sobre a arquitetura Foco na conformação arquitetural Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 67 / 69
  • 68. Referências L. Passos; R. Terra; R. Diniz; M. T. Valente; N. Mendonça. Static Architecture Conformance Checking: An Illustrative Overview. IEEE Software, 2010 N. Sangal et al. Using dependency models to manage complex software architecture. OOPSLA, 2005 O. Moor et al. Keynote address: .ql for source code analysis. SCAM, 2007 J. Knodel et al. Static evaluation of software architectures. CSMR, 2006 G. Murphy; D. Notkin; K. Sullivan. Software reflexion models: Bridging the gap between source and high-level models. ACM SIGSOFT FSE, 1995 R. Terra; M. T. Valente. A dependency constraint language to manage object-oriented software architectures. SPE, 2009 Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 68 / 69
  • 69. Obrigado!!! Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 69 / 69