Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 11
Arquitectura de
Arquitectura de
Sistemas de Software
Sistemas de Software
Ademar Aguiar www.fe.up.pt/~aaguiar [email protected]Frameworks orientadas por
objectos
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 33
Frameworks Orientadas por Objectos
Q
Definição
• “An object-oriented framework consists of a collection of
cooperating classes, both abstract and concrete, that embody an abstract design for solutions to a family of related problems”
[Gamma et al. 1995].
• Uma framework é um (sub)sistema de software semi-acabado desenhado por forma a ser facilmente instanciado.
• As frameworks fornecem uma solução inicial para um problema cuja solução normalmente requer muito tempo para desenvolver de raíz.
Q
Objectivo das Frameworks
• Elevada produtividade
• Tempos de desenvolvimento mais reduzidos • Menos erros (bugs)
• Conjuntos de aplicações mais homogéneos (Palm SDK, Mac, JDK)
Frameworks: “macro-arquitecturas”
Q
Frameworks e Padrões
• Macro-arquitecturas que interligam diversos padrões e que também incluem normalmente a infraestrutura que suporta a sua integração.
Q
Padrões em Frameworks = Máximo benefício de reutilização
• Frameworks sofisticadas normalmente incorporam bastantes padrões. Exemplo: JFC (event-listeners, model-view-controller). • Padrões e frameworks são conceitos bastante sinérgicos mas não
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 55
Frameworks: “macro-arquitecturas”
Classes Class1 +method1() -method2() Class2 +method1() -method2() Class3 +method1() -method2() Patterns Frameworks ComponentsInversão do Controlo de Fluxo
Q
Princípio de Hollywood: “Don’t call us, we call you”
• Comparativamente às bibliotecas de classes, as frameworks caracterizam-se por uma inversão de controlo de fluxo
• É a framework que comanda a resposta do sistema aos eventos externos, invocando operações definidas pelo programador • O main() está na framework e não no código do programador.
Framework
public void run(){ setUp(); try {
runTest(); } finally { protected void runTest() {
Application
public static void main(String[] args) { new MoneyTest().run(); }
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 77
Exemplos populares
Q Model-View-Controller (MVC) Q MacApp Q ET++ Q Interviews Q OpenDocQ Microsoft Foundation Classes (MFCs)
Q NEXTSTEP,
Q IBM’s SanFrancisco
Q Several parts of Sun’s Java Foundation Classes (RMI, AWT, Swing)
Q Many implementations of the OMG’s Common Object Request Broker
Architecture (CORBA)
Q Apache’s frameworks (Cocoon, Struts)
Q JUnit
Sistema Operativo Sistema Operativo
Bibliotecas de Procedimentos Bibliotecas de Procedimentos Bibliotecas de Classes Bibliotecas de Classes
Framework Aplicacional Aplicação Framework Aplicacional Diversos componentes Aplicação
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 99
Reutilização de código e desenho
Q
Arquitectura de Interfaces
• Conjunto de interfaces que determina toda a estrutura e comportamento
• Prescreve uma arquitectura para um determinado domínio de problema ou algum aspecto em particular
• “Abstract Design”
Q
Arquitectura de Implementação
• Conjunto de classes concretas que implementam a arquitectura de interfaces
• Fornecem classes imediatamente utilizáveis e classes semi-prontas facilmente configuráveis
Reutilização em larga-escala
Q
As frameworks são uma poderosa ténica de reutilização de
software que permitem reutilização de código e desenho.
Q
Frameworks + componentes + padrões
• Constitui a tecnologia actualmente existente mais capaz de suportar reutilização de software em larga-escala.
Application 1
Application 2 Framework code Framework code
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 1111
Tipos de Frameworks
Q
White-Box
• Fornece superclasses abstractas para serem especializadas • Clientes estendem a framework utilizando primeiramente herança • Clientes compõem objectos para aplicar a framework
• Exemplo: Java Object
Q
Black-Box
• Fornece classes imediatamente utilizáveis
• Clientes usam composição de objectos para aplicar a framework • Exemplo: Swing (as partes GUI mais amadurecidas)
Q
Gray-Box
• Alia características White-Box e Black-Box • A maioria das frameworks são deste tipo • Exemplo: Swing
Black-box
frameworks Gray-box frameworks White-box frameworks
Configuração de Frameworks
Q
Hot spots
• As frameworks possuem partes inalteráveis e partes configuráveis pelo utilizador através de mecanismos de herança (white-box) e/ou composição (black-box).
Q
Por Herança
• Utiliza-se a interface de herança
• A framework fornece um conjunto de pontos de extensão através de classes abstractas
Q
Por Utilização/Associações
• Os clientes criam objectos de classes da framework ou de classes de uma sua extensão
Arquitectura
Arquitecturade de SistemasSistemasde Software, LEIC/MEI, 2003/2004de Software, LEIC/MEI, 2003/2004 1313
Representação de Padrões e
Frameworks em UML
Representação de Padrões em UML
Q
Especificação de Colaborações
• Conjunto de classificadores (classifiers) interrelacionados através de papeis (roles)
• UML 1.3: “Collaboration on a specification level”
Q
Exemplo: Observer
/ Subject applicationData
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 1515
Instanciação de Padrões em UML
Q
Utilização de Colaborações
• Os papeis definidos na especificação da colaboração (padrão) são atribuidos a classes que os instanciam
• Através dos padrões consegue-se simplificar os modelos de classes ao ocultar em colaborações estruturas e comportamentos típicos, identificados como padrões
Observer Pattern
File Entry Explorer Window
Subject Observer
Representação de Frameworks em UML
Q
Determinar e divulgar aos clientes apenas papeis livres em
colaborações
• UML: diagramas de classes recorrendo a instâncias de colaborações
Q
Documentar o conjunto de classes estensíveis por herança
• UML: diagramas de classes
Q
Especificar dependências entre classes da framework
• UML: diagramas de classes e especificações de colaborações (padrões)
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004
Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 1717
Exemplo: JUnit framework
<<framework>> JUnit
Test Pattern Q