69
5/17/2018 2011PalestraArquiteturaSoftware-slidepdf.com http://slidepdf.com/reader/full/2011-palestra-arquitetura-software 1/69 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

2011 Palestra Arquitetura Software

  • Upload
    georham

  • View
    218

  • Download
    0

Embed Size (px)

DESCRIPTION

palearq

Citation preview

  • Software Architecture Conformance andRecovery

    Ricardo Terra e Marco Tlio 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)

    BackgroundAcadmico : 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 Introduo

    2 Sistema Motivador

    3 DSM

    4 SCQL

    5 RM

    6 ACL

    7 Outras Tcnicas

    8 Consideraes Finais

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 3 / 69

  • Introduo

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 4 / 69

  • Introduo O que arquitetura?

    Arquitetura um termo que admite mltiplas definies

    Existem duas definies comumente encontradas:uma separao de alto nvel do sistema em suas partes

    decises que so difceis de modificar

    Assim, definiremos como:Um conjunto de decises de projeto que tem impacto emcada aspecto da construo e evoluo de sistemas. Issoinclui como sistemas so estruturados em componentes erestries sobre como tais componentes devem interagir.

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 5 / 69

  • Introduo Qual o papel de um arquiteto de software?

    Muitos acreditam se tratar de um desenvolvedor snior,contudo conhecimento tcnico s uma de suashabilidades

    Um bom arquiteto de software deve:Limitar as escolhas durante o desenvolvimento:

    escolher um padro de como desenvolver aplicaes

    definir/criar um framework para ser utilizado na aplicao

    Indicar pontos potenciais de reutilizao:possuir uma viso abrangente do sistema e de seu contexto

    adotar um design de componentizao

    ter conhecimento de outras aplicaes na empresa

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 6 / 69

  • Introduo Qual o papel de um arquiteto de software?

    Dentre suas atribuies, a necessidade de considerar aaplicao por um ngulo de viso mais abrangentecontempla:

    Quebrar a complexidade do desenvolvimento deaplicaes em pedaos menores e mais gerenciveis

    Definir as funes de cada componente

    Definir as interaes e dependncias entre os componentes

    Comunicar esses pontos aos desenvolvedores

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 7 / 69

  • Introduo Tipos de Arquitetura

    Arquitetura ConcretaTambm conhecida como Arquitetura Implementada

    a arquitetura que est representada no cdigo fonte

    Arquitetura PlanejadaTambm conhecida como Arquitetura Documentada

    a arquitetura definida nos modelos e documentosarquiteturais do sistema, conforme definies do arquiteto

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 8 / 69

  • Introduo Problemas Arquiteturais

    Apesar de sua inquestionvel importncia, a arquiteturadocumentada de um sistema se disponvel geralmenteno reflete a sua implementao atual

    Arquitetura Planejada 6= Arquitetura Concreta

    Isso indica que existem decises implementadas no cdigofonte que violam a arquitetura planejada

    A isso denomina-se desvio arquitetural

    Desvios arquiteturais so comunsDevido ao desconhecimento por parte dos desenvolvedores,requisitos conflitantes, dificuldades tcnicas etc

    Geralmente, no so capturados e resolvidos

    Levando ao fenmeno conhecido como eroso arquitetural

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 9 / 69

  • Introduo Problemas Arquiteturais Desvio Arquitetural

    Por exemplo, suponha um sistema organizado estritamenteem camadas

    Mdulos: Mn, Mn1, , M0Comunicao: Mi utiliza servios de Mi1

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 10 / 69

  • Introduo Problemas Arquiteturais Eroso Arquitetural

    Eroso arquitetural tende a crescer com o tempo

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 11 / 69

  • Introduo Problemas Arquiteturais

    Eroso arquitetural indica que o sistema est sedegenerando

    Isso faz com que os benefcios proporcionados por um bomprojeto arquitetural sejam anulados:

    Manutenibilidade

    Reusabilidade

    Escalabilidade

    Portabilidade

    etc

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 12 / 69

  • Introduo Abordagens Arquiteturais

    Recuperao Arquitetural consiste de um conjunto demtodos para extrao de informaes arquiteturais apartir de representaes de baixo nvel de um sistema desoftware, como o cdigo fonte

    Conformao Arquitetural consiste no processo de verificarse uma representao de baixo nvel de um sistema desoftware como o cdigo fonte ou algo similar est emconformidade com sua arquitetura planejada

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 13 / 69

  • Introduo Padres de Projeto x Padres Arquiteturais

    Padro de Projeto uma soluo para um problemarecorrente no desenvolvimento de sistemas. Consiste emuma descrio ou modelo de como resolver um problema.Normalmente, mostra relacionamentos e interaes entreclasses e objetos

    Exemplo: Abstract Factory, Facade, Singleton etc

    Padro Arquitetural tem um escopo mais amplo que umpadro de projeto. Eles so mais amplos, geralmentedescrevendo um padro 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 deinformaes pessoais implementado exclusivamente paraavaliao das solues de recuperao e conformaoarquitetural que sero tratadas neste mini-curso

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 16 / 69

  • Sistema Motivador Arquitetura

    Padro arquitetural MVC

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 17 / 69

  • Sistema Motivador Arquitetura

    Diviso clara entre objetos da Viso e do Modelo

    Viso est associada a componentes GUI (Frames, Buttons,TextField etc)

    Objetos do Modelo so completamente independentes dequalquer framework para construo de interfaces grficas

    Interaes entre o Modelo e a Viso so mediadas porobjetos da camada de Controle

    Modelo inclui:Objetos de Domnio (Domain Objects) que representamentidades, como Compromissos

    Objetos de Acesso a Dados (Data Access Objects ou DAOs)que encapsulam o framework de persistncia subjacente

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 18 / 69

  • Sistema Motivador Restries Arquiteturais

    RA1 Somente a camada de Viso deve utilizar AWT e Swing

    RA2 Somente objetos DAO da camada de Modelo devem dependerde servios SQL

    RA3 A camada de Viso somente depende dela mesma, das APIsAWT e Swing, da camada de Controle e de classes utilitrias. Isto, no acessam diretamente o Modelo

    RA4 Objetos de Domnio no devem depender de DAOs nem dequalquer objeto das camadas de Viso ou de Controle

    RA5 Classes DAO somente devem depender de Objetos de Domnio,de classes utilitrias e de servios SQL

    RA6 Classes do pacote util no devem depender de nenhuma classeespecfica 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 algumastcnicas existentes para conformao e recuperaoarquitetural

    Para cada tcnica, faremos recuperao de modelos econformao arquitetural, sempre levando emconsiderao as RAs descritas para o sistema

    Assim, antes de estudarmos essas tcnicas, vamosbisbilhotar o cdigo 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 Viso Geral

    DSMs (Dependency Structure Matrixes) so matrizes deadjacncia utilizadas para representar dependncias entremdulos de um sistema

    LDM (Lattix Dependency Manager), uma ferramenta paraconformao e gerenciamento arquitetural baseada noconceito de DSMs

    LDM tambm suporta o conceito de regras de projeto(design rules), que podem ser utilizadas para definirdependncias que violam a arquitetura planejada de umsistema

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 22 / 69

  • DSM Viso Geral

    Uma DSM uma matriz quadrada cujas linhas e colunasdenotam 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 referncias explcitas em B para elementossintticos de A. Uma outra possibilidade representar naclula (A,B) o nmero de referncias que B contm para A

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 23 / 69

  • DSM LDM

    DSMs foram inicialmente propostas por Baldwin e Clark parademonstrar a importncia de princpios de projeto modularna indstria de hardware

    Aps isso, Sullivan et al. demostraram que o conceito deDSMs tambm pode ser utilizado no projeto de software

    Neste mini-curso, sero utilizadas DSMs geradas pelaferramenta LDMa (Lattix Dependency Manager) 6.0.5

    LDM uma ferramenta de conformao e visualizaoarquitetural que utiliza DSMs para representar e gerenciardependncias inter-classes em sistemas OO

    aFerramenta disponvel 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 padres arquiteturais

    detectar dependncias que indiquem violaes arquiteturais

    Para esse propsito, LDM automaticamente extrai a DSM docdigo fonte de sistemas existentes utilizando tcnicas deanlise esttica

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 25 / 69

  • DSM LDM Algoritmo de Reordenao

    Para auxiliar os arquitetos a descobrir e raciocionar sobreestilos arquiteturais, LDM implementa um algoritmo dereordenao (ou particionamento)

    Esse algoritmo decide a ordem de apresentao das linhasem uma DSM, iniciando pelos pacotes que proveem menosservios e finalizando com os pacotes que so maisutilizados pelos outros pacotes

    Esse algoritmo tambm agrupa pacotes que somutualmente dependentes

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 26 / 69

  • DSM LDM Conformao Arquitetural

    LDM inclui uma linguagem simples para declarar regras deprojeto que devem ser seguidas pela implementao dosistema

    Regras de projeto possuem duas formas:

    A can-use B A cannot-use B

    indicando que classes do conjunto A podem (ou no)depender das classes do conjunto B

    Violaes em regras de projeto so visualmente exibidas naprpria DSM extrada, com o objetivo de alertar sobrepossveis eroses arquiteturais

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 27 / 69

  • DSM Prtica 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 Viso Geral

    SCQL (Source Code Query Language) contemplalinguagens que realizam consultas a nvel de cdigo fonte

    .QL uma linguagem de consulta em cdigo fonte queprov suporte a uma ampla gama de tarefas dedesenvolvimento de software

    Tais como verificao de convenes de cdigo, procurapor erros, clculo de mtricas, deteco de oportunidadesde refatorao etc

    Apesar de .QL automatizar vrias tarefas dedesenvolvimento, este mini-curso concentra-se na utilizaoda linguagem para gerar visualizaes da arquitetura epara 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 sintaxefamiliar para a maioria dos desenvolvedores

    .QL inclui outras caractersticas que aumentam o seu poderde expresso para a consulta em cdigo fonte

    engine Datalog, consultas recursivas em hierarquia deherana, chamada de mtodos etc

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 31 / 69

  • SCQL .QL

    Conceitos de orientao a objetos tais como classes eherana podem ser usados para estender a linguagemcom novos predicados e construir bibliotecas

    Para melhorar seu desempenho e escalabilidade, .QL utilizaum SGBD relacional para armazenar relaes entreelementos do cdigo fonte

    Assim, consultas .QL so primeiramente traduzidas paraDatalog (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 quepermite a execuo de consultas .QL sobre sistemas Java

    Foi utilizado o Semmlecode Professional Edition, verso 1.0

    Basicamente, a ferramenta inclui um editor de consultascuja apresentao de seus resultados pode ser vista emforma de rvores, tabelas, grficos, grafos e warningsreportados pelo ambiente de desenvolvimento

    Alm disso, conta com a definio de repositrios deconsultas para armazenar, por exemplo, consultasrealizadas frequentemente

    aFerramenta disponvel em: http://semmle.com

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 33 / 69

  • SCQL .QL Prtica Consulta

    Primeiramente, ser demonstrada uma consulta que retorna asdependncias entre os pacotes do sistema myAppointments eos pacotes AWT, Swing e SQL da API de Java:

    1 from RefType r1 , RefType r22 where3 r1 . fromSource ( ) and depends( r1 , r2 ) and4 ( r2 . fromSource ( ) or isSwingApi ( r2 ) or i s Sq lAp i ( r2 ) )5 select r1 . getPackage ( ) , r2 . getPackage ( )

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 34 / 69

  • SCQL .QL Prtica Consulta

    Predicados utilizado:

    1 predicate isSwingApi ( RefType r ) {2 r . getPackage ( ) .getName( ) . matches( " java . awt " ) or3 r . getPackage ( ) .getName( ) . matches( " java . awt.% " ) or4 r . getPackage ( ) .getName( ) . matches( " javax . swing " ) or5 r . getPackage ( ) .getName( ) . matches( " javax . swing.% " )6 }7

    8 predicate i sSq lApi ( RefType r ) {9 r . getPackage ( ) .getName( ) . matches( " java . sq l " ) or

    10 r . getPackage ( ) .getName( ) . matches( " java . sq l .% " )11 }

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 35 / 69

  • SCQL .QL Prtica Resultado

    Figura : Grafo do myAppointments

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 36 / 69

  • SCQL .QL Prtica Consulta

    Utilizando classes, mtodos e predicados de .QL, foramdefinidas consultas para detectar violaes das restriesarquiteturais definidas para o sistema myAppointments. Porexemplo, a seguinte consulta verifica se a restrio arquiteturalRA1 seguida:

    1 from RefType r1 , RefType r22 where3 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 + " ut i l i zando " + r2 . getQualifiedName ( ) as Violacao

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 37 / 69

  • SCQL .QL Prtica Resultado

    Figura : Exibio de uma violao

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 38 / 69

  • SCQL .QL Prtica Consulta

    De maneira similar, a restrio RA3 definida como a seguir:

    1 from RefType view , RefType re f2 where3 view . getPackage ( ) .getName( ) . matches( " myappointments . view " )4 and re f . fromSource ( )5 and not ( re f . getPackage ( ) .getName( ) . matches( " myappointments . view " ) )6 and not i s C o n t r o l l e r ( re f )7 and not i s U t i l ( re f )8 and depends( view , re f )9 select view as Tipo_Visao ,

    10 "RA3 violada : " + view . getQualifiedName ( )11 + " ut i l i zando " + re f . getQualifiedName ( ) as Violacao

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 39 / 69

  • SCQL .QL Prtica Consulta

    Nessa consulta so utilizados os predicados isController eisUtil, definidos como a seguir:

    1 predicate i sCon t ro l le r ( RefType re f ) {2 re f . getASupertype ( ) . hasQualifiedName3 ( " myappointments . cont ro l le r " , " ICont ro l le r " )4 }5 predicate i s U t i l ( RefType re f ) {6 re f . 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 Viso Geral

    Tcnicas baseadas em Modelos de Reflexo (ReflexionModels ou RM) comparam um modelo arquitetural (isto , aarquitetura planejada de um sistema) com o modelo decdigo fonte (isto , a arquitetura concreta desse sistema)

    O resultado, chamado modelo de reflexo, destacarelaes convergentes, divergentes e ausentes entre os doismodelos

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 42 / 69

  • RM SAVE

    SAVE (Software Architecture Visualization and Evaluation) uma ferramenta de conformao arquitetural centrada noconceito de modelo de reflexo de software proposto porMurphy 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 devemprimeiramente definir um modelo de alto nvel querepresente a arquitetura planejada de um sistema

    Esse modelo inclui os principais componentes do sistema e asrelaes entre eles (invocaes, instanciaes, herana etc)

    Arquitetos tambm devem definir um mapeamento entre omodelo de cdigo fonte (arquitetura concreta) e aarquitetura planejada

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 44 / 69

  • RM SAVE

    Uma ferramenta baseada em modelo de reflexo, como SAVE,classifica relaes entre componentes como:

    Convergente: quando uma relao prescrita no modelo dealto nvel seguida pelo cdigo fonte

    Divergente: quando uma relao no prescrita no modelode alto nvel existe no cdigo fonte

    Ausente: quando uma relao prescrita no modelo de altonvel no existe no cdigo fonte

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 45 / 69

  • RM SAVE Funcionamento

    1 Modelo de Alto NvelSo definidos os componentes de alto nvel e as comunicaesentre eles de acordo com a arquitetura planejada do sistema

    2 Modelo de Cdigo Fonte extrado um modelo a partir do cdigo fonte do sistema

    3 MapeamentoTarefa na qual os arquitetos devem manualmente associar cadacomponente de alto nvel aos seus componentescorrespondentes no modelo de cdigo fonte

    4 Modelo de ReflexoA ferramenta compara os dois modelos e destaca as relaesausentes e divergentes

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 46 / 69

  • RM SAVE Prtica Screen shot

    Figura : Modelo de Reflexo 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 Viso Geral

    ACL (Architectural Constraint Language) contemplasolues que garantem a conformao arquitetural de umsistema por meio de um conjunto de restries

    Linguagem DCL (Dependency Constraint Language) visa restringiro espectro de dependncias aceitveis e inaceitveis emum sistema

    O objetivo principal impedir a eroso arquitetural, isto ,que a arquitetura concreta (aquela presente no cdigofonte) viole a arquitetura planejada de um sistema

    Por exemplo, violaes de camada, no utilizao depadres, 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 domnio especfico, declarativa eestaticamente verificvel

    Permite a definio de restries estruturais entre mdulos

    Princpio de funcionamento:

    Definem-se os mdulos

    Definem-se as restries entre eles

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 51 / 69

  • ACL DCL Mdulos

    Mdulos: conjunto de classes

    pacotes, subtipos, expresses regulares etc

    Exemplos:

    1 module View : org . foo . view .2 module Remote: java . rmi . UnicastRemoteObject+

    3 module Frame : " org . foo . [ azAZ09/.]Frame"

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 52 / 69

  • ACL DCL Restries

    Restries para capturar divergncias e ausncias:

    Exemplos:

    1 only Factory cancreate Products2 U t i l canonlydepend U t i l , $java3 View cannothandle Model4 Products mustimplement java . io . S e r i a l i z a b l e

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 53 / 69

  • ACL DCL Ferramenta dclcheck

    Ferramenta dclchecka

    Verifica se o cdigo fonte respeita restries DCL

    Plug-in para a IDE Eclipse

    aFerramenta disponvel em: http://dcc.ufmg.br/terra/dcl

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 54 / 69

  • ACL DCL Prtica Screen shot

    Figura : Violaes detectadas para o myAppointments

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 55 / 69

  • Outras Tcnicas

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 56 / 69

  • Outras Tcnicas

    Existem uma srie de outras solues que lidam comconformao e recuperao arquitetural

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 57 / 69

  • Outras Tcnicas Architectural Constraint Languages (ACL)

    Structural Constraint Language (SCL)

    Linguagem lgica de primeira ordem que permite expressarintenses arquiteturais e de projeto

    Restries definidas sobre a estrutura esttica de sistemasorientados a objetos

    Especificaes SCL consistem em uma sequncia dedeclaraes e frmulas lgicas

    LogEn

    Linguagem lgica de domnio especfico

    Permite expressar dependncias estruturais entre gruposlgicos de elementos do cdigo fonte, chamadosensembles

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 58 / 69

  • Outras Tcnicas Architectural Description Languages (ADL)

    ADLsAlternativa para conformao arquitetural por construo

    ADLs no se aplicam em sistemas existentes, pois soextenses de linguagens

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 59 / 69

  • Outras Tcnicas Architecture Analysis Tools

    Structure101: definio de modelos em termos de camadase dependncias aceitveis entre componentes

    Bahaus: RM com decomposio hierrquica

    Sotograph: permite realizar consultas de conformaosobre dependncias do cdigo fonte que ficamarmazenadas em um repositrio

    Klocwork Insight: prov suporte a visualizao arquiteturalem forma de grafos

    JDepend: gera mtricas que podem ser utilizadas paramedir e controlar o processo de eroso arquitetural

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 60 / 69

  • Outras Tcnicas Abordagens Dinmicas

    DiscoTectUtiliza observaes em tempo de execuo de sistemas paraconstruir uma viso arquitetural do sistema

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 61 / 69

  • Consideraes Finais

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 62 / 69

  • Consideraes Finais

    O curso apresentou quatro solues distintas paraRecuperao e Conformao 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

  • Consideraes Finais DSM LDM

    DSMs representam instrumento simples e poderoso paravisualizar e raciocionar sobre arquiteturas de software, pois:

    DSMs so estruturas inerentemente hierrquicas, o que provescalabilidade

    Possuem algoritmos de reordenao

    Regras de Projeto (Design Rules) no so expressivasNo possuem expresses regulares ou subtipos

    Limitao aos tipos de dependncia

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 64 / 69

  • Consideraes Finais SCQL .QL

    .QL representa uma simples, mas poderosa linguagem deconsulta em cdigo fonte

    Poder deve-se sua origem em Datalog

    Simplicidade deve-se a sintaxe inspirada em SQL

    Dificuldades para visualizar, navegar e raciocinar sobrerepresentaes arquiteturais

    Mas, ser esse o foco?

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 65 / 69

  • Consideraes Finais RM SAVE

    Possui um processo completo e bem definido paraverificao de conformao arquitetural

    Controle sobre a granularidade e o nvel de abstrao doscomponentes

    Mapeamento uma tarefa rdua e deve ser mantida

    A computao do modelo de reflexo pode tomar tempoNo vivel ser continuamente aplicado

    Mas, vivel antes de lanamento de verses, aps umainterao do desenvolvimento etc

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 66 / 69

  • Consideraes Finais ACL DCL

    Restringe o espectro de dependncias que podem serestabelecidas em sistemas orientados a objetos

    simples e auto-explicativa

    Alto poder de expressoDefinio de mdulos: pacotes, subtipos, expressesregulares etc

    Restries: Todos os tipos de restries

    No prov mecanismos para raciocinar ou visualizar sobre aarquitetura

    Foco na conformao arquitetural

    Ricardo Terra (rterrabh [at] gmail.com) Software Architecture Setembro, 2011 67 / 69

  • Referncias

    L. Passos; R. Terra; R. Diniz; M. T. Valente; N. Mendona. Static ArchitectureConformance Checking: An Illustrative Overview. IEEE Software, 2010

    N. Sangal et al. Using dependency models to manage complex softwarearchitecture. 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 thegap between source and high-level models. ACM SIGSOFT FSE, 1995

    R. Terra; M. T. Valente. A dependency constraint language to manageobject-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

    IntroduoSistema MotivadorDSMSCQLRMACLOutras TcnicasConsideraes Finais