Aspectos técnicos do desenvolvimento baseado em componentes



Documentos relacionados
UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Sistemas Operacionais

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Organização e Arquitetura de Computadores I. de Computadores

Engenharia de Software I: Análise e Projeto de Software Usando UML

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Plano de Gerenciamento do Projeto

4 Estrutura do Sistema Operacional Kernel

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

Introdução ao Modelos de Duas Camadas Cliente Servidor

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Eduardo Bezerra. Editora Campus/Elsevier

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Capítulo VI CORBA. Common Object Request Broker Architecture. [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008.

Padrões Arquiteturais. Sistemas Distribuídos: Broker

Aplicação Prática de Lua para Web

Engenharia de Software III

DESENVOLVIMENTO DE SOFTWARE AULA 1

Prototype, um Design Patterns de Criação

Curso de Aprendizado Industrial Desenvolvedor WEB

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

5.1 Exemplos de uso Mediante a instanciação de componentes específicos, o OiL pode ser configurado

Padrão Básico de Projeto: Herança versus Composição

5 Mecanismo de seleção de componentes

UFG - Instituto de Informática

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Fábrica de Software 29/04/2015

SISTEMAS DISTRIBUÍDOS

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

CENTRAL DE SERVIÇOS APOIADA EM SOFTWARE LIVRE

Engenharia de software para desenvolvimento com LabVIEW: Validação

Programação Orientada a Objetos. Padrões de Criação

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Especificação do 3º Trabalho

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Java Server Pages: Apresentação e Instalação

Entendendo como funciona o NAT

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Adriano Reine Bueno Rafael Barros Silva

Manual do Remote Desktop Connection. Brad Hards Urs Wolfer Tradução: Marcus Gama

UFG - Instituto de Informática

Padrões de projeto 1

Engenharia de Software Sistemas Distribuídos

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Sistemas Operacionais 1/66

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Introdução às Linguagens de Programação

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

EMENTA DO CURSO. Tópicos:

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

ESTUDO DE CASO WINDOWS VISTA

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

OOP - Java. Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora

Programação Orientada a Objetos Classes Abstratas Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

Prototipação de Software

Herança e Polimorfismo de Inclusão

XDOC. Solução otimizada para armazenamento e recuperação de documentos

MODELO CLIENTE SERVIDOR

Capítulo 2 Introdução à ferramenta Flash

Análise e Projeto Orientados por Objetos

3 SCS: Sistema de Componentes de Software

Dadas a base e a altura de um triangulo, determinar sua área.

Universidade da Beira Interior

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de:

Sistemas Operacionais

Varnish-Cache: Velocidade e disponibilidade para aplicações WEB

Análise e Projeto de Sistemas de Informação. Andrêza Leite andreza.lba@gmail.com

PLANIFICAÇÃO MODULAR

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

Sistemas Operacionais. Roteiro. Sistemas de Computadores. Os sistemas de computadores são projetados com basicamente 3 componentes: Marcos Laureano

Análises Geração RI (representação intermediária) Código Intermediário

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

MVC e Camadas - Fragmental Bliki

Redes de Computadores II. Professor Airton Ribeiro de Sousa

Introdução à Linguagem Java

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

Orientação a Objetos

Projeto Você pede, eu registro.

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Sistema Gerenciador de Conteúdo OpenCms: um caso de sucesso no CEFET-MG

2 Diagrama de Caso de Uso

HIBERNATE EM APLICAÇÃO JAVA WEB

FBV - Linguagem de Programação II. Um pouco sobre Java

Processos de Desenvolvimento de Software

Rational Software White Paper TP 155

Começando com Ruby on

(Open System Interconnection)

Java para Desenvolvimento Web

Especificações da oferta Gerenciamento de dispositivos distribuídos: Gerenciamento de ativos

Transcrição:

Aspectos técnicos do desenvolvimento baseado em componentes Um novo processo de desenvolvimento O uso de componentes traz mudanças no processo de desenvolvimento Além de desenvolver um produto, queremos criar abstrações reutilizáveis e aumentar o patrimônio da empresa Isso requer uma nova forma de pensar dos programadores Também requer novos incentivos para os envolvidos Novas etapas surgem: Seleção de componentes e possível adaptação Pode ser in-house, out-sourced ou compra "Assembly time" para construção de aplicações A composição é feita numa etapa separada da construção de componentes Antes, tudo era feito na mesma etapa "Deployment time" para configurar componentes no ambiente final Novas ferramentas são necessárias para as novas etapas Ferramentas visuais de assembly e de deployment Uso do design pattern "Prototype" para instanciar objetos graficamente Configuration Management é muito mais importante do que antes porque tem muito mais componentes individuais do que antes (aplicações individuais) A fase de integração era a última fase antes de componentes Agora, ela passa a ser a fase principal de Página 1 de 7

construção de aplicações mas se chama a fase de composição ou assembly A velha fase de integração final antes da entrega não existe mais, já que os pedaços são entregues separadamente e juntados em tempo de execução Composição é o foco, em vez de codificação Novos papeis no desenvolvimento Quem coordena os esforços de reutilização entre times e decide que componentes são desenvolvidos/out-sourced/comprados Quem faz componentes Quem monta aplicações com componentes Pode ser integradores de sistema também Software houses (SAP, Oracle, p.ex.) estão rearquiteturando as soluções para usar componentes Quem instala e configura componentes em ambientes finais Lembra que os componentes podem ser instalados em servidores e várias aplicações diferentes podem usá-los Comparação técnica de OOP e COP Resumo de Orientação a Objeto Classes e objetos Algum "Information hiding" Herança Polimorfismo com Late Binding Para ter extensibilidade (adicionar novos pedaços) sem repensar tudo Podemos codificar a parte cliente através de um conhecimento geral (apenas) do comportamento esperado A extensão (um método polimórfico, p. ex.) pode ser plugada onde este conhecimento geral era Página 2 de 7

esperado Para entender melhor a diferença com Component- Oriented Programming, precisamos falr um pouco mais de binding: Tempo de Binding Como funciona Tempo de codificação Tempo de compilação Tempo de link-edição Ligação dinâmica Reflexivo Codifição simples sem sequer separação procedural Separação padrão em procedimentos/funções As chamadas são amarradas (bound) a uma implementação em tempo de compilação Unidades separadas de compilação com interfaces (ex. "protótipos" em C) declaradas separadamente das implementações As chamadas são compiladas usando as interfaces As chamadas são amarradas (bound) a uma implementação em tempo de link-edição para gerar um único módulo executável Unidades separadas de compilação que não precisam se link-editadas num único módulo executável para permitir a execução Um módulo compilado (DLL) pode ser linkado dinamicamente a um sistema que esteja executando As chamadas são compiladas usando as interfaces As chamadas são amarradas (bound) a uma implementação em tempo de execução A implementação é carregada em tempo de execução Java é assim (DLL é o arquivo.class ou.jar) Chamadas não são compiladas com interfaces em tempo de compilação Em tempo de execução, tem-se informação suficiente sobre as interfaces disponíveis Em tempo de execução, as chamadas são feitas a tais interfaces usando "reflexão" (olhar dentro do "módulo" para descobrir o que se quer) O binding é obviamente dinâmico Normalmente, os nomes das chamadas são contidas em strings; os nomes das chamadas podem ser montadas dinamicamente e executadas Java usa reflexão Resumo de Orientação a Componente Mais "Information hiding" Apenas interfaces são usadas. Ponto. Unidade de packaging reforça a encapsulação (tudo está lá dentro) Polimorfismo com Very Late Binding Software baseado em Componentes é extensível por definição, i.e. nunca está completo Página 3 de 7

Década Novos componentes podem ser acrescentados a qualquer momento: precisa de Very Late Binding Não pode precisar de um teste de integração final porque esta fase não existe! Very Late Binding inclui fazer o seguinte em tempo de execução: Achar o objeto Carregá-lo Dinamicamente chamar a implementação de suas interfaces Reflexão é necessária para descobrir interfaces e chamar as implementações das interfaces em tempo de execução Não tem herança entre componentes (ou, pelo menos, é muito mal visto) Para diminuir acoplamento Pode ter herança internamente Segurança A instalação de novos componentes no ambiente do usuário não deve invalidar os componentes já instalados Isso leva ao "Open-Closed Principle" "Um Componente deve ser aberto à extensão mas fechado à modificação" Portanto, gerenciamento de memória é muito mais importante em COP Tem que ter garbage collection porque um componente nunca pode saber quando um outro componente pode ser liberado Tecnologia de Programação Novidade 1940 Código de máquina Máquinas programáveis 1950 Assembly Linguagens simbólicas 1960 Linguagens de alto nível Expressões e independência de máquina Tipos estruturados e estruturas de Página 4 de 7

1970 Programação estruturada controle 1980 Programação modular 1990 Programação Orientada a Objeto Polimorfismo 2000 Programação Orientada a Componente Supporte de Linguagem Lembre que um componente é uma unidade de Composição Packaging Deployment Precisamos de um suporte adequado das linguagens de programação para dar suporte a esses conceitos Um dos aspectos mais importantes é o encapsulamento do componente inteiro Para que a interferência com outros componentes (de outros fabricantes) possa ser controlada estaticamente (i.e., sem inspecionar o resultado da fusão) Aliados a isso, precisamos de mecanismos de segurança para que componentes não possam afetar a integridade de outros Inclui integridade de memória a nível de componente Finalmente, precisamos de um mecanismo para definir interfaces O que ofereço (interface de cima) O que preciso (interface de baixo) Separação da interface e da implementação Composição dinâmica e segura Página 5 de 7

Como estão as linguagens de hoje? Não suportam COP bem C++ e Smalltalk não têm interfaces Em Java, temos definição de interfaces mas não podemos definir a interface de uma unidade completa (interface de um package, se usarmos um package para implementar um componente) Não podemos dizer que "O package X implementa a interface Y" Smalltalk não permite agrupar classes Em todas essas linguagens, não posso dizer "Me dê um componente com esta especificação" Tenho que especificar algo concreto, não apenas uma interface Como CORBA atende? CORBA dá interfaces, e permite pedir um objeto que tenha uma certa interface Objetos distribuídos são componentes Problema: CORBA não é uma linguagem de Página 6 de 7

programação É uma camada acima de uma linguagem Fica pesado demais fazer tudo com CORBA (usar centenas de componentes) CORBA é independente de plataforma: overhead de comunicação é grande e CORBA é portanto lento CORBA é caro (tem que pagar licenças de runtime) comp-2 programa anterior próxima Página 7 de 7