Engenharia de Software
Prof. Wilkerson de L. Andrade
Versão resumida e traduzida dos slides originais produzidos por Ian Sommerville, Software Engineering, 7th edition. Chapter 19.
Estes slides foram adaptados dos slides gentilmente cedidos pela professora Patrícia D. L. Machado (DSC/UFCG).
Desenvolvimento Baseado em
Componentes
•
Engenharia de Software Baseada em
Componentes (CBSE) é uma abordagem para
desenvolvimento de software que tem como
base o reuso de software.
•
Surgiu a partir das dificuldades do
desenvolvimento orientado a objetos dar
suporte ao reuso: classes tendem a ser muito
detalhadas e específicas.
•
Componentes são mais abstratos que objetos e
podem ser considerados como provedores de
serviços stand-alone.
Características Fundamentais de
CBSE
•
Componentes Independentes
especificados
através de suas interfaces.
•
Padronização de Componentes
para facilitar
a integração.
•
Middleware
que provê suporte a
interoperabilidade entre componentes.
•
Um Processo de Desenvolvimento
que é
CBSE e Princípios de Design
•
Além dos benefícios de reuso, CBSE é
baseado em bons princípios de design, tais
como:
▫
Componentes são independentes de forma que
não interferem com outros;
▫
Implementação de componentes é escondida;
▫
Comunicação é feita através de interfaces
bem-definidas;
▫
Plataformas de componentes são
compartilhadas, reduzindo custos de
desenvolvimento.
Problemas com CBSE
•
Confidência
– Como um componente sem
código fonte pode ser confiável?
•
Certificação do Componente
– Quem irá
certificar a qualidade dos componentes?
•
Predição de propriedades emergentes
– Como
propriedades emergentes de composições de
componentes podem ser previstas?
•
Negociação de Requisitos
– Como as
diferenças entre as funcionalidades do
componente e um conjunto de requisitos são
negociadas?
Componentes
•
Um componente provê um serviço
independente do local que executa ou de
sua linguagem de programação.
▫
É uma entidade executável independente que
pode ser construída a partir de um ou mais
objetos executáveis;
▫
A interface do componente é publicada e todas
as interações são feitas através desta interface.
•
Podem ser vistos como provedores de
Definições de Componente
•
Councill and Heinmann:
▫
A software component is a software element that
conforms to a component model and can be
independently deployed and composed without
modification according to a composition standard.
•
Szyperski:
▫
A software component is a unit of composition
with contractually specified interfaces and explicit
context dependencies only. A software
component can be deployed independently and is
subject to composition by third-parties.
Características de Componentes
A padronização de componentes significa que um componente usado em um processo de CBSE precisa estar de acordo com algum modelo padronizado de componente. Esse modelo pode definir interfaces de componente, meta-dados de componente, documentação e implantação.
Um componente deve ser independente – deve ser possível compô-lo e implantá-lo sem precisar usar outros componentes específicos. Em situações em que o componente necessita de serviços fornecidos externamente, estes devem ser explicita-mente definidos em uma especificação de interface ‘requires’. Para um componente poder ser composto, todas as interações externas devem ocorrer por meio de interfaces publicamente definidas. Além disso, deve fornecer acesso externo às infor-mações sobre si próprio, como seus métodos e atributos.
Padronizado
Independente
Passível de
composição
Características de Componentes
Para ser implantável, um componente precisa ser autocontido e deve ser capaz de operar como uma entidade independente sobre uma plataforma de componente que implementa omodelo de componente. Isso geralmente significa que o componente é binário e não precisa ser compilado antes de ser implantado.
Componentes precisam ser completamente documentados de maneira que os usuários possam decidir se eles atendem ou não às suas necessidades. A sintaxe e, idealmente, a
semântica de todas as interfaces de componente precisam ser especificadas.
Implantável
Interface de Componentes
•
Interface de Provisão de Serviços
▫
Define os serviços que são providos pelo
componente para outros componentes.
•
Interface de Requisição de Serviços
▫
Define os serviços que devem estar disponíveis
para que o componente execute como
especificado.
Interface de Componentes
Provides int erface Requires int erface
Component Defines the services
from the component’s environment that it uses
Defines the services that are provided by the component to other components Define os serviços do ambiente dos componentes usados pela interface Define os serviços fornecidos pelo
componente para outros componentes
Interface requires Interface provides Componente
Um Componente Coletor de Dados
Provides int erface Requires int erface
Data collector addSensor rem oveSensor star tSensor stopSensor testSensor listAll repor t initialise sensorManagem ent sensorData
Interface requires Interface provides
Componentes e Objetos
•
Componentes são entidades que podem ser
instaladas.
•
Componentes não definem tipos – um
componente é uma instância.
•
Implementação de Componentes é opaca.
•
Componentes são independentes de
linguagem.
Modelos de Componentes
•
Um modelo de componente é uma definição
de padrões para implementação,
documentação e depósito.
•
Exemplos de Modelos de Componentes:
▫
EJB model (Enterprise Java Beans)
▫
COM+ model (.NET model)
▫
Corba Component Model
•
O modelo de componentes especifica como
interfaces devem ser definidas e os
elementos que devem ser incluídos nesta
definição.
Elementos de um Modelo de
Componentes
Com ponent m odel Interfaces Usage inform ation Deploy m ent and use Interface definition Specific inter faces Com position Nam ing convention Meta-data access Custom isation Packag ing Docum entation Evolution suppor t Interfaces Informações De uso Implantação e uso Definição de Interface Composição Interfaces específicas Convenção de nomes Acesso a metadados Personalização Empacota-mento Documentação Apoio à evolução
Especifica como interfaces devem ser definidas e os elementos que devem ser incluídos tais como operações, nomes, parâmetros, exceções. Além de interfaces específicas
Define como o acesso a meta-dados
(info sobre interfaces e atributos) é provido
(ex. reflexão em Java)
Modelo de componente
Especifica como componentes binários podem ser configurados para uma ambiente particular, como devem ser empacotados e
Middleware
•
Modelos de Componentes são a base para a
concepção do middleware que provê suporte a
execução dos componentes.
•
A implementação de modelos de componentes
provê:
▫
Serviços de plataforma que dão suporte a
comunicação entre componentes;
▫
Serviços Horizontais que são serviços independentes
de aplicação que podem ser usados por diferentes
componentes.
•
Para usar serviços providos por um modelo,
componentes são depositados em um
Serviços de um Modelo de
Componentes
Platform services
Addressing Inter face definition Com ponent com m unications Exception m anagem ent Horizontal services Security Transaction m anagem ent Concurrency Com ponent m anagem ent Persistence Resource m anagem ent Serviços horizontais Gerenciamento de Componentes Concorrência Gerenciamento de Transações Persistência Gerenciamento de recursos Proteção Serviços de plataforma Endereçamento Definição de Interfaces Gerenciamento De exceções Comunicação de componentes