Arquitectura de Sistemas de Software Ademar Aguiar www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 1 Frameworks orientadas por objectos Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 2 1
Frameworks Orientadas por Objectos 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. Objectivo das Frameworks Elevada produtividade Tempos de desenvolvimento mais reduzidos Menos erros (bugs) Conjuntos de aplicações mais homogéneos (Palm SDK, Mac, JDK) Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 3 Frameworks: macro-arquitecturas 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. 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 subordinados um ao outro. Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 4 2
Frameworks: macro-arquitecturas Components Frameworks Patterns Classes Class1 Class2 Class3 +method1() -method2() +method1() -method2() +method1() -method2() Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 5 Inversão do Controlo de Fluxo 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. Application Framework public static void main(string[] args) { new MoneyTest().run(); protected void runtest() { // [1 EUR] + [2 EUR] == [3 EUR] Money expected= new Money(3,"EUR"); assertequals(expected, oneeur.add(twoeur)); protected void setup() { oneeur= new Money(1,"EUR"); twoeur= new Money(2, "EUR"); public void run(){ setup(); try { runtest(); finally { teardown();... protected void teardown() { /* empty */... Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 6 3
Exemplos populares Model-View-Controller (MVC) MacApp ET++ Interviews OpenDoc Microsoft Foundation Classes (MFCs) NEXTSTEP, IBM s SanFrancisco Several parts of Sun s Java Foundation Classes (RMI, AWT, Swing) Many implementations of the OMG s Common Object Request Broker Architecture (CORBA) Apache s frameworks (Cocoon, Struts) JUnit Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 7 Aplicação Framework Aplicacional Diversos componentes Framework Aplicacional Aplicação Bibliotecas de Classes Bibliotecas de Classes Bibliotecas de Procedimentos Bibliotecas de Procedimentos Sistema Operativo Sistema Operativo Aplicação OO convencional Aplicação OO com frameworks Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 8 4
Reutilização de código e desenho 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 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 Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 9 Reutilização em larga-escala As frameworks são uma poderosa ténica de reutilização de software que permitem reutilização de código e desenho. Frameworks + componentes + padrões Constitui a tecnologia actualmente existente mais capaz de suportar reutilização de software em larga-escala. Application 1 Application 2 Application 3 abstraction Framework code Framework code Application Code 2 Callbacks Hooks Plugins... Application Code 1 Application Code 3 Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 10 5
Tipos de Frameworks 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 Black-Box Fornece classes imediatamente utilizáveis Clientes usam composição de objectos para aplicar a framework Exemplo: Swing (as partes GUI mais amadurecidas) 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 Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 11 Configuração de Frameworks 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). 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 Por Utilização/Associações Os clientes criam objectos de classes da framework ou de classes de uma sua extensão Para tal, as frameworks normalmente possuem especificações de colaborações com papeis livres Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 12 6
Representação de Padrões e Frameworks em UML Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 13 Representação de Padrões em UML Especificação de Colaborações Conjunto de classificadores (classifiers) interrelacionados através de papeis (roles) UML 1.3: Collaboration on a specification level Exemplo: Observer / Subject applicationdata propagatechange() attach(observer) detach(observer) setdata() getdata() observers * / Observer update() service() Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 14 7
Instanciação de Padrões em UML 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 File Entry Explorer Window Subject Observer Observer Pattern Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 15 Representação de Frameworks em UML Determinar e divulgar aos clientes apenas papeis livres em colaborações UML: diagramas de classes recorrendo a instâncias de colaborações Documentar o conjunto de classes estensíveis por herança UML: diagramas de classes 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 16 8
Exemplo: JUnit framework Vista externa <<framework>> JUnit Test Pattern Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 17 9