Componente de Software1 Desenhando um componente de software.

Slides:



Advertisements
Apresentações semelhantes
Orientação a objetos identidade abstração classificação encapsulamento
Advertisements

Análise e Projeto Orientado a Objetos
Exemplos Especificação de Software
Introdução à Programação Orientada à Objetos Prof. Daniel Merli Lamosa Maio de 2002.
Sistemas operacionais
UML Modelando um sistema.
Orientação por Objectos > Modelo de Processo OO > Identificação de Classe e Objectos Aula 12.
Projeto de Sistemas de Software(PSS) Baldoino F. dos S. Neto
Metodologias Equipe do Curso de ES para SMA
Modelagem Orientada a Objetos
Persistência de objetos em arquivo texto usando Java
UML Diagrama de Classes elementos básicos. Contexto Os diagramas de classes fazem parte do da visão estática da UML. Os elemento desta visão são conceitos.
Orientação a Objetos Introdução. Objetos: o que são? Olhando o mundo real pode-se ver vários objetos: mesa, cadeiras, alunos, professores etc. Esses objetos.
Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
Introdução ao paradigma de programação: Orientado a Objetos
Governança de TI ITIL v.2&3 parte 2
1 Professor Rogério B. de Andrade - Aula 001- Dez/2008 Técnicas e Linguagem de Programação.
Garantia da Qualidade de Software
Gerência da Configuração de Software
Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.
Programação orientada a objetos com Java
Padrões para Atribuições de Responsabilidades
Engenharia de Software e Orientação a Objeto
Gerencia de Projeto OO Aspectos Avançados em Engenharia de Software Aula 5 Fernanda Campos DCC/UFJF.
Introdução a Programação Orientada a Objetos
UFRPE – Modelos de Qualidade Teresa Maciel
Configuração de manutenção
Copyright Marcos L. Chaim 2005 Princípios de Projeto de Software Orientado a Objetos Segundo Semestre 2005 Marcos L. Chaim ACH Turma 02 EACH – USP.
Separation of Concerns (SoC)
Polimorfismo em C#.
Arquitetura Orientado a Serviços
Métricas técnicas de software1 Métricas Técnicas de Software.
Análise da linguagem Java Planejamento. Objetivos Apresentar as soluções de implementação em Java para os conceitos de Orientação a Objetos introduzidos.
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
Integração com Banco de Dados
Métodos de Construção de Software: Orientação a Objetos
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
Cristiano Soares Rafael di Lego Roberto Nemirovsky Thiago Nascimento
Modelos de Processo de Software
Professor: Márcio Amador
Orientação a Objetos Parte I
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
SISTEMAS DISTRIBUIDOS Aula 4
SISTEMAS OPERACIONAIS I
Aula prática 14 Orientação a Objetos – C++ Parte 2
Análise Orientado aos Objetos Prof. Wolley W. Silva
Processos.
Modelagem de Entidade/Objetos de Domínio com Diagrama de Classes
Introdução a JEE Marco A. S. Reis Arquiteto de Software Abril/2011.
Padrões de Interação com o Usuário
Paradigmas da Programação – Semestre 2 – Aula 1 Professores: Fábio de Paula Santos Eduardo Mantovani
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE AULA 5
Introdução a Programação Orientada a Objetos
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
Frameworks e Componentes Daniel Fernando Pavelec.
Jobson Ronan Padrões GoF Jobson Ronan
Introdução a Orientação a Objetos
Arquitetura de Software Projetos de Interface
Estilos Arquiteturais
A linguagem unificada de modelagem
Módulo II Capítulo 1: Orientação a Objetos
PADROES DE PROJETO PROF. OSIEL MARLON. PADRÕES DE PROJETO INTRODUÇÃO Padrões de projeto têm emergido como uma das mais promissoras abordagens para a melhoria.
Engenharia de Software Orientada a Objetos
Características Cor Combustível Num_Portas Potencia Comportamentos Acelerar Feiar Acender farol Dar seta Buzinar Características Cor Combustível Num_Portas.
CIn-UFPE1 UML Uma linguagem unificada de modelagem Visão Geral.
Programa criado em Apoio ao programa: Ministério da Ciência e Tecnologia da Finep Banco Interamericano de Desenvolvimento Universidades e Governo.
Desenvolvimento WEB II Ajax – Utilização de Frameworks Javascript Professora: Kelly de Paula Cunha.
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
Desenvolvendo sotfware com UML1 Visão Geral de Orientação a Objetos.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Componente de Software1 Desenhando um componente de software

Componente de Software2 O que é um componente? 1.Tem interface externa distinta da implementação interna 2.Interface definida de maneira contratual: assinatura, pré e pós-condições 3.Não é gerado em diversas cópias 4.Demanda certo número de operações do meio no qual é implantado

Componente de Software3 … 5.Provê certo número de operações demandado pelo meio no qual é implantado 6.Pode interagir com outros componentes 7.É vendido (ou distribuido) sob a forma executável (ao invés de código-fonte) 8.Pode oferecer publicações da operações que suporta

Componente de Software4 Similaridades e diferenças entre Componentes e Objetos 1.Ambas promovem o encapsulamento (interface x implementação) 2.A propriedade contratual das operações é semelhante 3.Classes geram objetos, mas cópias de componentes serão idênticas em seus valores internos (sem herança) 4.Na OO não consideramos o meio em torno de um objeto – Componentes consideram

Componente de Software5 … 5.Um componente executa somente em seu meio designado e provê operações controladas pelo meio (contador de referências em si próprio!) 6.Reutilização é característica comum 7.Componentes são mais parecidos com objetos do que com classes 8.Interfaces de componentes atuam como operações de classes

Componente de Software6 Exemplo de um Componente: zGerenciadorDeRecursos Organização de uma conferência: funcionários, conferência, projetores Pool de caminhonetes: funcionários, caminhonetes

Componente de Software7 GerenciadorDeRecursos ServiçosPadrões ServiçosDeTipoDeRecursos ServiçosDeInstânciasDeRecursos ServiçosDeGruposDeRecursos ServiçosDeCalendário

Componente de Software8 > ServiçosDeTipoDeRecurso obterNúmeroTotal ( ): NúmeroInteiro obterNúmeroDeInstâncias (id: IdDoTipoDeRecurso): NúmeroInteiro obterNome (id: IdDoTipoDeRecurso, nome: string, out nome: string): Booleano especificarNome (id: IDDoTipoDeRecurso, nome: string): Booleano éPresente (nome: string): Booleano obterID (nome: String, out id: IDDoTipoDeRecurso): Booleano obterÉHumano (id: IDDoTipoDeRecurso): Booleano especificarÉHumano (id: IDDoTipoDeRecurso, éHumano): Booleano acrescentar (nome: string, out id: IDDoTipoDeRecurso): Booleano remover (id: IDDoTipoDeRecurso): Booleano ….

Componente de Software9 ServiçosDeInstânciaDeRecurso > ServiçosDeInstânciaDeRecurso obterNúmeroTotal ( ): NúmeroInteiro obterNome (id: IdDaInstânciaDeRecurso, nome: string, out nome: string): Booleano especificarNome (id: IDDaInstânciaDeRecurso, nome: string): Booleano obterTipo (id: IDDaInstânciaDeRecurso, out tipo: IDDoTipoDeRecurso): Booleano especificarTipo (id: IDDaInstânciaDeRecurso, tipo: IDDoTipoDeRecurso): Booleano obterID (nome: string, id: IDDInstânciaDeRecurso): Booleano obterEndDe (id: IDDInstânciaDeRecurso): String …. acrescentar ( ): Booleano remover (id: IDDoTipoDeRecurso): Booleano removerTodas ( ) ….

Componente de Software10 ServiçosDeAgrupamentoDeRecursos > ServiçosDeAgrupamentoDeRecursos obterNúmeroTotal ( ): NúmeroInteiro obterNome (IdDGrupo: IDDoGrupoDeRecursos, out nome: string): Booleano especificarNome (IDDoGrupo: IDDoGrupoDeRecursos, nome: string): Booleano obterID (nome: string, out id: IDDoGrupoDeRecursos): Booleano obterHorário (idDoGrupo: IDDoGrupoDeRecurso, horário: HorárioData): Booleano ….

Componente de Software11 ServiçosDeCalendário > ServiçosDeCalendário obterMenorIncrementoDeTempo ( ): NúmeroInteiro especificarMenorIncrementoDeTempo (IncrmentoDeTempo: NúmeroInteiro ….

Componente de Software12 ServiçosPadrões > ServiçosPadrões obterContagemDeReferências ( ): NúmeroInteiro obterIdentificador (cliente: Cliente, nome: nomeDeInterface, out identificador: IdentificadorDeInterface): Booleano desconectar(cliente: Cliente, identificador: IdentificadorDeInterface): Booleano ….

Componente de Software13 Desenho Interno de um Componente zO desenho interno de componente não precisa ser Orientado a Objetos!

Componente de Software14 GerenciadorDeRecursos: DomínioDeAplicação ServiçoDe TipoDeRecurso ServiçoDe InstânciaDe Recurso ServiçoDe Agrupamento DeRecursos ServiçoDe Calendário DomínioDeNegócio PacoteDe Recursos PacoteDe Recursos

Componente de Software15 … DomínioDeArquitetura IndependenteDePlataforma ServiçosDe IndependentesDe Plataforma ServiçoDeBanco DeDados Independentes DePlataforma DomínioDeArquitetura IndependenteDePlataforma PacoteDe PacoteDe BancoDeDados

Componente de Software16 PacoteDeRecursos InstânciaDeRecurso endereçoEletrônico: EndereçoEletrônico … … ItemDeRecurso endereçoEletrônico: EndereçoEletrônico … … TipoDeRecurso / id: IDDoTipoDeRecurso nome: String éHumano: Booleano … novo (nome: String): Booleano - obterPróximoID: IDDoTipoDeRecurso obterTipoDeRecurso (nome: string, out tipoDeRecurso: TipoDeRecurso): Booleano … 0..* * 1

Componente de Software17 O que um componente provê e requer componente Eventos notificados Eventos detectados serviços oferecidos

Componente de Software18 Componentes Leves ou Pesados DomínioDeAplicação ServiçoDe TipoDeRecurso ServiçoDe InstânciaDe Recurso ServiçoDe Agrupamento DeRecursos ServiçoDe Calendário DomínioDeNegócio PacoteDe Recursos PacoteDe Recursos DomínioDeArquitetura IndependenteDePlataforma ServiçosDe IndependentesDe Plataforma ServiçoDeBanco DeDados Independentes DePlataforma

Componente de Software19 Vantagens do componente leve: zMenos dispendioso para ser construido zSendo mais simples deverá ser mais confiável (tanto no início quanto na manutenção) zNão sobrecarregará a memória ou outros recursos z>> Coesão de domínio simples

Componente de Software20 Vantagens e desvantagens de usar componentes: z+ Eles são baratos z+ Eles estão disponíveis z+ Eles estão disponíveis no momento! z- Eles talvez estejam praticamente disponíveis no momento! z+ Eles são maduros z+ Podem incorporar idéias inovadoras e sofisticadas

Componente de Software21 … z- Também estão disponíveis para os concorrentes z- Podem ser complexos demais para as tuas necessidades z- A personalização pode ser trabalhosa ou impossível z- Um componente intransigente pode requer mudanças em seu negócio

Componente de Software22 … z- Os componentes de negócio talvez não estejam disponíveis para nichos z+ Eles são mantidos por terceiros z- Versões revisadas podem demorar a chegar z- Versões revisadas podem chegar rápido demais

Componente de Software23 … z+ Os componentes seguem normas z- Podem envolver diversos distribuidores z- O distribuidor poderá sair do negócio