Arquitectura de Sistemas de Software

Documentos relacionados
Arquitectura de Sistemas de Software Mestrado em Engenharia Informática Licenciatura em Engenharia Informática e Computação

Arquitectura de Sistemas de Software

Arquitectura de Sistemas de Software

Arquitectura de Sistemas de Software

Arquitectura de Sistemas de Software Mestrado em Engenharia Informática Licenciatura em Engenharia Informática e Computação

Padrões, Frameworks e Arquitecturas. Ademar Aguiar. MRSC, Programação em Comunicações

Arquitectura de Sistemas de Software

Frameworks. SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013

Frameworks. Viviane Torres da Silva

Arquitetura de Software

Arquitectura de Sistemas de Software

Desenho e documentação de arquitectura de software e de aplicações empresariais

Frameworks. Profa. Dra. Rosana Teresinha Vaccare Braga. Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo

Arquitectura de Sistemas de Software

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

JUnit: framework de testes unitários. Fred Lopes

Software Patterns: uma Forma de Reutilizar Conhecimento

UML Visão Geral UML Visão geral v.1.1, Novembro de 2001

2 Frameworks: Conceitos Gerais

Casos Notáveis. Forças. Problema. Contexto

Java 2 Standard Edition Classes internas

Laboratório de Engenharia de Software

Abstract Factory. Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas

Arquitectura de Sistemas de Software Mestrado em Engenharia Informática Licenciatura em Engenharia Informática e Computação

Teste Automatizado POO. Prof. Marcio Delamaro

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Common Object Request Broker Architecture

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Engenharia de Software

Tecnologia de Objectos

JUnit. Alexandre Menezes Silva Eduardo Manuel de Freitas Jorge

Programação em Comunicações. Programação Orientada por Objectos. Ademar Aguiar.

Introdução aos Padrões de Projeto. Sylvio Barbon Jr

// quando o estado do Sujeito muda

Capítulo 7 Conceção e Implementação 1

// quando o estado do Sujeito muda

Conceitos de Programação Orientada por Objectos. Rui Camacho Programação 2

" ##$#$!% # & #$#$!!! "!!

ESTUDO DO PADRÃO DE PROJETO OBSERVER NO DESENVOLVIMENTO DE SOFTWARES UTILIZANDO A ARQUITETURA MVC RESUMO

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Reúso de Software. Adaptado de. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide by Pearson Education

Técnicas para Reutilização de Software

DS: notação. Falta-nos apenas dar exemplos de DSS que contenham a criação de objectos temporários e sua posterior destruição.


AULA TEÓRICA 10. Tema 9. Interface. Tema 10. Recursividade

Frameworks - Introdução. Professor: Hyggo Almeida

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico

LEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10

Programação com Objectos 2º Teste Tipo 1º Semestre (120 minutos)

Soluções reutilizáveis para situações ou problemas encontrados comumente em desenvolvimento de software orientado a objetos.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Análise e Projeto Orientados por Objetos

Programação com Objectos. 2º Teste 2015/2016 1º Semestre

Classes e Objetos. Sintaxe de classe em Java

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Figura 1. Estrutura do agente de software.

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

UML Diagramas de Pacotes (Packages) e Modelação da Arquitectura Lógica. UML Diagramas de Pacotes v.1.1, João Pascoal Faria, 2001

Padrões Arquiteturais. Silvia Regina Vergilio

Técnicas de Reutilização. Reutilização em Programação Orientada a Objetos. Considere três classes... Reuso de Classes.

Engenharia de Software

Os princípios do desenho orientado a objetos

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

Universidade Federal de Uberlândia

Desenvolvimento de Software Baseado em Componentes. Paulo C. Masiero

Design Patterns na Geração de Código

Classes de Projeto. Prof. Anderson Cavalcanti UFRN-CT-DCA

4 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

4.6. UML Diagramas de componentes

Levantamento de classes (Análise de casos de uso)

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Introdução à Análise e Projeto de Sistemas

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 12 Out/2016.

Interfaces e Classes Internas

Metamodelos para Banco de Dados. Carlos Julian Menezes Araújo Prof. Dr. Robson do Nascimento Fidalgo

Computação II Orientação a Objetos

DIVISÃO DE ASSUNTOS ACADÊMICOS Secretaria Geral de Cursos PROGRAMA DE DISCIPLINA

Desenvolvimento Web TCC Turma A-1

POO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo

Arquitecturas Paralelas I Computação Paralela em Larga Escala. Conceitos de Programação Orientada ao Objecto

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Ferramenta MVCase Uma Ferramenta Integradora de Tecnologias para o Desenvolvimento de Componentes Distribuídos

Introdução a Padrões, GRASP. Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

POO29004 Programação Orientada a Objetos

Model Driven Development (MDD)

Programação Java (nível intermediário) 4. Polimorfismo

4 A Máquina Extensível

Java Deployment Course

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

Linguagem de Programação Visual

Agilizando o processo de redeploy de aplicações Java

Moldura de Objectos. Moldura de Objectos Junit em UML

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Componentes GUI A aparência e maneira como um usuário pode interagir com componentes AWT diferem de acordo com a plataforma. Componentes Swing permite

Frameworks O que é um framework?

Transcrição:

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