• Nenhum resultado encontrado

Apresentacao do Conteúdo - Espec de Componentes - M2

N/A
N/A
Protected

Academic year: 2021

Share "Apresentacao do Conteúdo - Espec de Componentes - M2"

Copied!
54
0
0

Texto

(1)

Especificação  de  Componentes  

Conteúdo  M2  

8°  SI  -­‐  UMC  

Prof.  Fabiano  

(2)
(3)

Elementos  de  um  componente  

Especificação:  

 

Um  componente  requer  uma  descrição  abstrata  

dos  serviços  que  ele  oferece  servindo  como  um  

contrato  entre  o  cliente  e  o  fornecedor  do  

serviço.  

 

A  especificação,  além  da  relação  das  operações  

disponíveis,  orienta  o  cliente  a  como  interagir  

com  o  componente  e  informa  as  restrições  dos  

(4)

Elementos  de  um  componente  

Possibilidade  de  implementações:  

 

Um  componente  deve  suportar  uma  ou  mais  

implementações,  as  quais  devem  estar  em  

conformidade  com  a  especificação.  

 

A  especificação  deve  ser  flexível  para  que  o  

implementador  possa  escolher  a  linguagem  

adequada,  configuração  adequada  outros  

recursos  que  julgar  necessário.    

(5)

Elementos  de  um  componente  

Padrão  de  Componente:  

 

Um  componente  deve  aderir  a  um  modelo  de  

componentes.  Os  modelos  de  componentes  

suportam  um  conjunto  de  serviços.  

 

Exemplos  de  modelos  de  componentes:    

§ 

MicrosoO  COM+/DCOM  

§ 

MicrosoO  .NET  

§ 

OMG  Corba  CCM  

§ 

Sun  EJB.    

(6)

Elementos  de  um  componente  

Empacotamento:  

 

Os  componentes  podem  ser  agrupados  em  

unidades  funcionais  conhecidas  como  pacotes  

(package),  permi[ndo  que  o  conjunto  de  

serviços  oferecidos  por  eles  possa  ser  

subs[tuído  por  outro  componente  similar  e  que  

possa  ser  distribuído  e  instalado.    

(7)

Elementos  de  um  componente  

Distribuído  (Deployment):  

 

 

(8)

Implementação  de  Componentes  

§ 

Podem  exis[r  componentes  de  soOware  

implementados  em  um  paradigma  procedural,  

tais  como  ro[nas  em  COBOL  e  bibliotecas  de  

funções  em  C,  embora,  a  maior  parte  dos  

componentes  seja  desenvolvida  u[lizando-­‐se  

metodologias  e  linguagens  orientadas  a  objetos.  

§ 

Para  um  componente  o  relevante  é  sua  interface  

externa  e  não  a  maneira  como  foi  implementado.  

(9)

Implementação  de  Componentes  

§  As  primeiras  APIs  para  componentes  disponibilizavam  apenas  um   conjunto  de  funções  que  componentes  externos  poderiam  invocar,   enxergando  o  componente  com  um  bloco  único.  

§  Atualmente,  as  APIs  possibilitam  acessar  os  objetos  que  compõe  o   modelo  do  componente.  Desta  maneira,  as  interfaces  que  o  

componente  disponibiliza  ou  requer  definem  o  modelo  de  objetos   que  é  compaavel  com  aquele  componente.  

§  Referências  a  objetos  criados  em  um  componente  deixam  as   fronteiras  e  se  tornam  visíveis  aos  clientes  do  componente.  Por  

exemplo,  é  possível  acessar  o  objeto  célula  do  componente  Planilha   Eletrônica,  o  objeto  ponto  do  Gerenciador  Gráfico,  etc.  Desta  

maneira,  o  componente  deixa  de  ser  visto  como  um  bloco  único   para  ser  visto  como  um  contexto  onde  os  objetos  executam.    

(10)

Implementação  de  Componentes  

§  Outro  fator  importante  a  ser  considerado  na  construção  de   componentes  é  o  empacotamento,  que  possibilita  que  o   componente  seja  instalado  como  uma  unidade.  

§  empacotamento  pode  conter  arquivos,  módulos,  código  executável,   código  fonte,  código  de  validação,  especificações,  testes,  

documentações,  etc.  

§  Os  mecanismos  para  o  empacotamento  diferem  de  tecnologia  para   tecnologia.  

§  Por  exemplo,  componentes  Java  são  empacotados  em  arquivos  JAR,   que  incluem  as  classes  que  implementam  os  serviços  dos  

componentes,  as  classes  adicionais,  etc.  

§  Os  diversos  fatores  que  definem  as  possibilidades  de  

implementação  de  um  componente  são  definidos  no  component  

model  correspondente.    

(11)

Modelos  de  Componentes    

§  Ao  comprar  um  eletrodomés[co,  podemos  plugá-­‐lo  na  tomada  de   uma  casa  porque  a  tomada,  o  plug  e  a  energia  disponíveis  são  

aderentes  a  uma  padronização.  

§  Ao  buscarmos  a  reu[lização  e  subs[tu[bilidade  de  componentes  de   soOware,  eles  também  devem  ser  aderentes  a  um  padrão,  que  na   literatura  é  chamado  de  modelo  de  componentes  (component  

model).  

§  Assim  como  há  mais  de  um  padrão  para  tomada,  há  mais  de  um   modelo  para  componentes  de  soOware.  

§  Um  programador  pode  criar  seu  próprio  modelo,  eventualmente   sendo  uma  especialização  de  um  modelo  disponível.  Para  

compa[bilizar  componentes  de  um  modelo  para  outro,  pode-­‐se   desenvolver  adaptadores.  

(12)

Modelos  de  Componentes    

§  Um  component  model  define  vários  aspectos  da  construção  e  da   interação  dos  componentes,  abordando,  entre  outros  fatores:   como  especificar  o  componente,  como  instanciar  o  componente,   quais  os  [pos  de  conectores  e  portas  disponíveis,  qual  o  modelo  de   dados  que  é  entendido  por  todos  os  componentes,  como  as  

ligações  entre  os  objetos  pertencentes  a  componentes  diferentes   são  realizadas,  como  são  feitas  transações  distribuídas,  quais  são  os   [pos  de  interface,  as  interfaces  obrigatórias,  como  são  tratados  o   catálogo  e  a  localização  dos  componentes,  o  despacho  das  

requisições  e  respostas,  a  segurança,  o  repositório,  o  formato,  a   nomeação,  os  meta  dados,  a  interoperabilidade,  a  documentação,   os  mecanismos  de  customização,  a  composição,  a  evolução,  o  

controle  de  versões,  a  instalação  e  a  desinstalação,  os  serviços  de   execução,  o  empacotamento,  etc.    

(13)

Modelos  de  Componentes    

§ 

Alguns  component  models  u[lizam  uma  interface  

descrip0on  language  (IDL)  independente  da  

linguagem  de  programação,  enquanto  outros  

valem-­‐se  de  conceitos  da  própria  linguagem  ou  

da  tecnologia  para  definir  a  interface,  como  é  o  

caso  das  interfaces  OO.  Dependendo  da  IDL,  

interfaces  podem  incluir  as  exceções  que  podem  

ser  lançadas,  pré-­‐  condições  e  pós-­‐condições  

(14)

Modelos  de  Componentes    

§ 

Um  component  model  deve  definir  quais  são  os  padrões  de  

composição.  

§ 

Os  [pos  de  acoplamento  mais  comuns  entre  dois  

componentes  são  o  de  cliente/servidor  e  de  publicador/

ouvinte.  

§ 

No  primeiro,  o  cliente  explicitamente  chama  operações  do  

servidor  e,  no  segundo,  o  ouvinte  se  registra  como  tratador  

de  eventos  e  informações  disponibilizadas  pelo  publicador.    

§ 

O  component  model  define  também  os  [pos  de  conectores  

disponíveis,  que  podem  ser  herdados  da  linguagem  de  

programação  correspondente  ou  serem  próprios  da  

(15)

Modelos  de  Componentes    

§ 

O  component  model  também  define  o  padrão  de  

deployment,  que  especifica  a  estrutura  e  a  

semân[ca  para  os  arquivos  descritores.  O  

component  model  define  a  maneira  como  é  feito  

o  deployment,  incluindo  o  eventual  registro  do  

componente  e  da  interface.  

§ 

Tipicamente  o  deployment  envolve  três  passos:  

o   instalação  do  componente;  

o   configuração  do  componente  e  do  ambiente  de  execução;  e   o   instanciação  do  componente  para  uso.

 

(16)

Modelos  de  Componentes    

§ 

Corba  Component  Model  (CCM),  MicrosoO  OLE,  

MicrosoO  (D)COM/COM+,  MicrosoO  .NET,  Sun  

EJB,  JavaBeans  e  Webservice  são  alguns  

exemplos  de  componente  models.  

§ 

Alguns  modelos,  como  CORBA  e  Webservices,  

possibilitam  a  reu[lização  de  componentes  que  

não  foram  necessariamente  desenvolvidos  na  

mesma  linguagem  de  programação.  

(17)

Exemplos  de  Modelos  de  Componentes    

COM  

•  Component  Object  Model  (COM)  é  uma  plataforma  da  MicrosoO  para  com-­‐   ponentes.  Ela  viabiliza  comunicação  entre  processos  e  criação  dinâmica  de   objetos  em  diferentes  linguagens.  A  sigla  COM  é  muitas  vezes  usada  como   sinônimo  para  um  grupo  de  tecnologias,  dentre  elas:  Object  Linking  and   Embedding  (OLE),  OLE  Automa0on,  Ac[veX,  COM+  e  DCOM.  Apesar  de   introduzido  em  1993  no  desen-­‐  volvimento  dos  produtos,  a  MicrosoO  não   divulgou  sua  biblioteca  até  1997.    

•  COM  é  uma  tecnologia  independente  de  linguagem  de  programação  para   o  desenvolvimento  dos  seus  componentes.  Dessa  forma,  eles  podem  ser   u[lizados  em  ambientes  diferentes  dos  quais  foram  criados.  É  uma  pré-­‐ condição  do  Component  Object  Model  que  o  desenvolvedor  forneça  uma   interface  bem  definida  e  separada  da  implementação,  permi[ndo  a  

reu[lização  dos  objetos  sem  o  conhecimento  de  sua  implementação.     •  Apesar  de  ter  sido  implementado  portável  a  várias  plataformas,  COM  é  

muito  u[lizado  nos  sistemas  operacionais  da  MicrosoO  Windows.  Tem-­‐se   trabalhado  para  que  ela  seja  subs[tuído,  ou  pelo  menos  estendido,  pela   plataforma  MicrosoO  .NET,  suportando  então  Web  Services  através  da   Windows  Communica0on  Founda0on  (WCF).    

(18)

Exemplos  de  Modelos  de  Componentes    

COM+  

§  COM+  é  o  nome  da  tecnologia  baseada  nos  serviços  e  

funcionalidades  da  COM  e  sua  primeira  versão  foi  lançada  no   Windows  2000.  COM+  acrescentou  à  COM  com-­‐  ponentes  para  

suportar  as  funcionalidades  da  MicrosoA  Transac0on  Server  (MTS).     •  Essa  tecnologia  também  encapsula  algumas  a[vidades  de  baixo  

nível,  como  ma-­‐  nutenção  do  pool  de  conexões,  finalização  de   conexões,  controle  transacional  e  dis-­‐  tribuição  e  controle  de   submissões.    

•  Para  fornecer  aos  desenvolvedores  suporte  a  transações   distribuídas  e  melhor  gerenciamento  de  memória  e  

processamento,  assim  como  para  posicionar  o  Win-­‐  dows  como   uma  alterna[va  a  outros  sistemas  operacionais  corpora[vos,  a  

Micro-­‐  soO  introduziu  a  tecnologia  MicrosoA  Transac0on  Server  no   Windows  NT  Service  Pack  4.  No  Windows  2000,  tal  extensão  

significa[va  à  COM  foi  incorporada  ao  sis-­‐  tema  operacional  e   renomeada  COM+.  Na  mesma  época  a  DCOM  foi  reconsiderada   como  uma  en[dade  separada.  

(19)

Exemplos  de  Modelos  de  Componentes    

.NET  

•  A  plataforma  COM  vem  sendo  subs[tuída  pela  MicrosoO  .NET,  com  a  

MicrosoO  focando  seu  marke[ng  exclusivamente  a  essa  nova  plataforma.   A  COM  era  geralmente  usada  para  interoperar  códigos  complexos  e  de   grande  desempenho  com  interfaces  ao  usuário  em  Visual  Basic  ou  ASP.   Para  algumas  extensões  a  COM  agora  foi  depreciada  em  favor  da  .NET  já   que  a  .NET  fornece  ferramentas  de  desenvolvimento  rápido  similares  ao   Visual  Basic  tanto  para  Windows  Forms  quanto  para  Web  Forms  com  Just-­‐ in-­‐Time(JIT),  o  código  de  alto  desempenho  pode  ser  implementado  em  C#.     •  Apesar  disso,  a  COM  permanece  como  uma  tecnologia  viável  com  

importante  base  de  sistema  legado.  Por  exemplo,  o  SoAware  

Development  Kit  (SDK),  popular  renderizador  do  DirectX  3D,  é  baseado  em   COM.  A  COM  também  trabalha  com  o  controle  de  scripts  de  aplicações   como  o  Office  ou  o  Internet  Explorer,  pois  fornece  uma  interface  para   chamar  métodos  de  objetos  COM  de  um  script  ao  invés  de  ne-­‐  cessitar  o   conhecimento  de  uma  API  em  tempo  de  compilação.    

•  Vários  serviços  fornecidos  pela  COM+  ainda  são  importantes  em   aplicações  .NET  corpora[vas,  tais  como  transações  e  filas  de   componentes.    

(20)

Exemplos  de  Modelos  de  Componentes    

EJB  

•  Nessa  seção  serão  abordados  tópicos  sobre  o  funcionamento  dos  

Enterprise  Java  Beans  (EJB)  em  sua  versão  3.0.  A  figura  5.1  

simplifica  o  funcionamento  da  arquite-­‐  tura  EJB:    

•  Os  EJBs  são  conhecidos  por  serem  o  núcleo  da  plataforma  J2EE  

(Java  2  Pla-­‐  taform  Enterprise  Edi0on)  justamente  por  sustentarem   de  uma  maneira  robusta  e  simples  o  desenvolvimento  de  

aplicações  de  grande  porte,  provendo  um  modelo  distribuído  de   componentes  de  negócio  e  provedores  de  serviços  dentro  do   contêiner  da  aplicação.  

•  Em  EJB,  os  beans  são  considerados  remotos;  então,  mesmo  na  

implementação  de  um  bean  descrito  como  local,  deve-­‐se  fazer  uma   busca  pela  implementação  da  interface  e  então  pode-­‐se  u[lizar  

suas  funcionalidades.  O  responsável  por  achar,  instanciar  e  retornar   a  implementação  da  interface  é  o  contêiner  onde  executa-­‐se  a  

aplicação.  Caso  o  contêiner  não  ache  ou  apresente  falha  nesse   processo,  uma  exceção  será  lançada  pela  aplicação  e  o  uso  do   componente  ficará  inviabilizado.  

(21)

Exemplos  de  Modelos  de  Componentes    

Webservices  

§ 

Webservices  é  um  padrão  para  comunicação  

entre  componentes  através  da  tecnologia  

Web.  

§ 

A  aplicação  u[liza  os  serviços  destes  

componentes  através  do  protocolo  SOAP,  que  

encapsula  as  chamadas  dos  serviços  e  os  

retornos  em  pacotes  XML  ou  JSON  (JavaScript  

Object  Nota[on).    

(22)

Infra-­‐estrutura  de  Execução    

§  Um  contêiner  é  um  sistema,  normalmente  desenvolvido  por  terceiros,  

com  o  obje[vo  de  hospedar  e  gerenciar  componentes  de  um  determinado   modelo,  provendo  a  eles  serviços  de  infra-­‐estrutura  de  execução.  

§  O  acesso  remoto,  o  gerenciamento  de  transações  distribuídas,  o  pooling   de  recursos,  o  acesso  concorrente,  o  clustering,  a  tolerância  a  falhas,  a   auten[cação,  a  persistência,  a  configuração,  o  gerenciamento  de  

permissões  e  de  sessão,  etc.,  são  exemplos  de  serviços  providos  por   containers.  

§  O  container  libera  o  desenvolvedor  de  implementar  serviços  técnicos  de   sistema  de  baixo  nível,  direcionando  seus  esforços  para  as  regras  de   negócio  e  para  a  composição  do  sistema.  

§  Em  alguns  casos,  o  uso  de  container  também  possibilita  alterar  aspectos   não  relacionados  com  a  lógica  do  negócio  sem  ter  que  alterar  a  aplicação,   bastando  re-­‐configurar  o  container  para  mudar  aspectos  como  segurança,   permissões,  logging,  banco  de  dados,  etc.    

(23)

Infra-­‐estrutura  de  Execução    

§ 

A  máquina  virtual  Java  é  um  contêiner  para  executar  

componentes  Java  (arquivos  .class  ou  .jar).  

§ 

Algumas  arquiteturas  estendem  o  container  para  gerenciar  

componentes  mais  especializados  como  servlets  ou  

applets.  

§ 

Tomcat,  JBoss,  Webspheare,  Pluto,  JetSpeed,  etc.  são  

outros  exemplos  de  containers.  

§ 

O  container  define  uma  interface  que  estabelece  a  conexão  

com  os  componentes.  Esta  interface  é  chamada  de  lifecycle  

interface.  Esta  interface  é  acessada  pelo  container  para  

gerenciar  a  inicialização,  execução  e  desa[vação  do  

componente.  

(24)

Contêineres  

§ 

Um  Contêiner  é  um  ambiente  de  execução  para  

componentes  

§ 

Faz  a  ligação  entre  os  componentes  e  o  mundo  exterior  

§ 

Recebe  pedidos  de  execução  de  serviços  e  os  repassa  

ao  componente,  que  executa  o  serviço  

§ 

Evita  que  o  componente  tenha  que  interagir  com  o  

sistema  operacional,  o  suporte  de  comunicação  e  com  

os  serviços  de  aplicação  

§ 

Permite  que  componente  seja  independente  do  

ambiente  de  execução,  tornando-­‐o  mais  portável  e  

mais  fácil  de  reuPlizar  

(25)

Contêineres  

• 

Contêineres  u[lizam  recursos  de  soOware  e  

hardware  e  serviços  da  plataforma  de  

execução  para  executar  o  componente  

– 

Serviço  de  Nomes:  permite  localizar  instâncias    de  

componentes  

– 

Serviço  de  Comunicação:  troca  de  informação  

– 

Serviço  de  Persistência:  faz  o  armazenamento  de  

estado  dos  componentes  

– 

Serviço  de  Transações:  mantém  a  consistência  

– 

Serviço  de  Segurança:  auten[ca  componentes  e  

(26)
(27)

Contêineres  

• 

Tipos  de  Interfaces:  

– 

Externa:  Atravessa  o  contêiner  

– 

Interna:  acessível  somente  dentro  do  contêiner  

– 

De  Callback:  interface  usada  pelo  contêiner  para  

(28)

Contêineres  

• 

O  contêiner  efetua  Callbacks  para:  

– 

Indicar  falhas  na  obtenção  ou  na  u[lização  de  

recursos  do  suporte  de  execução  

– 

Entregar  mensagens  do  serviço  de  comunicação  

– 

Salvar  o  estado  do  componente  e  restaurá-­‐lo  em  

caso  de  reinicialização  

– 

Relatar  a  violação  de  regras  de  funcionamento  ou  

de  segurança  

(29)

Interação  

• 

Componentes  interagem  para  trocar  dados  e  

solicitar  a  execução  de  serviços  

• 

Componentes  podem  estar  localizados  em:  

– 

Um  mesmo  servidor  -­‐>  Interação  local  

– 

Servidores  diferentes  -­‐>  Comunicação  remota  

• 

O  ideal  é  que  o  desenvolvedor  abstraia  a  

localização  dos  componentes,  podendo  agir  

da  mesma  forma  independentemente  de  os  

componentes  estarem  na  mesma  máquina  ou  

em  máquinas  diferentes  

(30)

Interação  

• 

Para  abstrair  a  localização  de  componentes  o  

ideal  é  que  os  mecanismos  usados  para  

interação  local  sejam  usados  também  para  

comunicação  remota  

• 

Mecanismos  de  interação  local  

– 

Chamada  de  procedimento/método  

– 

No[ficação  de  eventos/mensagens  

• 

Mecanismos  de  comunicação  remota  

– 

Chamada  remota  de  proced./método  

(31)

Interação  

• 

Chamada  de  procedimento/método  

– 

Segue  o  modelo  Cliente/Servidor    

– 

Um  componente  fornece  uma  interface  com  

procedimentos/métodos  para  solicitar  a  execução  

de  seus  serviços  –  é  um  servidor  

– 

Componentes/aplicações  u[lizam  os  serviços  de  

outros  componentes  –  são  seus  clientes  

(32)

Interação  

• 

No[ficação  de  eventos  remotos  

– 

Produtores  e  consumidores  de  eventos  podem  

estar  em  máquinas  diferentes  

• 

Canal  de  eventos  permite  desacoplamento  

– 

Não  é  necessário  que  as  partes  se  conheçam  ou  se  

sincronizem  para  enviar  o  evento  

(33)

Interação  

• 

Formato  dos  dados  

– 

Na  chamada  de  método,  a  sua  assinatura  define  os  

parâmetros  e  seus  [pos  de  dados  

– 

O  formato  dos  eventos  é  em  geral  mais  flexível  

• 

Cardinalidade  

– 

Chamada  de  método  tem  sempre  apenas  um  

cliente  e  um  servidor  

(34)

Interação  

• 

Sincronismo  

– 

Na  chamada  de  método  o  emissor  fica  bloqueado  

aguardando  o  término  da  execução  

– 

Na  no[ficação  de  eventos  o  produtor  con[nua  a  

execução  sem  aguardar  resposta  

(35)

Interação  

• 

Protocolos  de  comunicação  de  alto  nível  são  

necessários  para  interação  entre  

componentes  em  máquinas  diferentes  

• 

Escolha  natural:  usar  TCP/IP  como  base  

– 

Cria  conexões  entre  processos  para  troca  de  

mensagens  

– 

Amplamente  disponível,  confiável  e  robusto  

– 

Rela[vamente  simples  e  eficiente  

(36)

Interação  

• 

Mecanismo  de  comunicação  entre  

componentes  deve  tratar  questões  não  

resolvidas  pelo  TCP/IP  

– 

Formato  comum  dos  dados  

– 

Localização  de  componentes  

– 

Segurança  

• 

Os  protocolos  usados  pelos  suportes  de  

execução  de  componentes  já  incorporam  tais  

mecanismos  

(37)

Projeto  

• 

Projeto  de  sistemas  basedos  em  componentes  

– 

Técnicas  tradicionais  de  Eng.  de  SoOware  podem  

ser  usadas  na  análise  e  projeto  de  sistemas  

baseados  em  componentes  

– 

Com  base  nas  funcionalidades  requeridas  do  

sistema,  define-­‐se  quais  componentes  são  

necessários  para  sua  construção  

– 

Deve-­‐se  buscar  reu[lizar  componentes  e/ou  

desenvolver  novos  componentes  que  possam  ser  

reaproveitados  

(38)

Projeto  

• 

Projeto  deve  levar  em  conta  que:  

– 

O  componente  deve  fornecer  serviços  a  outros  

componentes,  que  os  u[lizarão  através  das  

interfaces  do  componente  

– 

Deve  ser  possível  ajustar  a  forma  como  os  serviços  

são  executados,  alterando  valores  de  

propriedades  

– 

O  componente  deve  ser  sujeito  a  composição  

– 

O  componente  deve  procurar  ser  independente  de  

outros  componentes  

(39)

Projeto  

• 

Abordagem  de  Cheesman  &  Daniels  

– 

Modelagem  do  Domínio:  realizada  para  entender  

o  contexto  do  problema  a  ser  solucionado,  sem  

assumir  nenhuma  solução  de  soOware  

– 

Especificação  do  SoOware:  consiste  na  concepção  

de  um  sistema  de  soOware  para  resolver  o  

(40)

Projeto  

• 

Modelagem  do  Domínio  

– 

Definir  casos  de  uso  

– 

Definir  modelo  conceitual  

– 

Definir  modelo  comportamental    

• 

Especificação  do  SoOware  

– 

Iden[ficar  componentes  

– 

Iden[ficar  interações  entre  componentes  

– 

Especificar  componentes  

(41)

Projeto  

• 

Casos  de  uso  

– 

Especificam  as  funcionalidades  existentes  no  

sistema  

– 

Exemplo:  Sistema  de  Bibliotecas  

 

Nome:  Efetuar  emprésPmo  

ObjePvo:  Emprestar  um  livro  a  um  usuário  

Pré-­‐condição:  Livro  deve  estar  disponível  para  emprésPmo;  usuário  deve  ter   <5  livros  emprestados.  

Ação:  emprestar  (livro,  usuário)    

Nome:  Fazer  devolução  

Obje[vo:  Devolver  um  livro  emprestado  a  um  usuário  

Pré-­‐condição:  Livro  estar  emprestado;  não  estar  danificado.   Ação:  devolver  (livro)  

(42)

Projeto  

• 

Modelo  conceitual  

– 

Especificar  as  en[dades  do  mundo  real  

manipuladas  pelo  sistema  e  suas  associações  

– 

Exemplo:    

• 

Modelo  comportamental  

– 

Iden[ficar  estados,  eventos  e  transições  de  estado  

– 

Exemplo:  Diagrama  de  estados  de  livro  

(43)

Projeto  

• 

Iden[ficação  de  componentes  

– 

Produz  uma  especificação  de  arquitetura  inicial  de  

um  sistema  

– 

Iden[fica  as  interfaces  suportadas  por  cada  

componente  

– 

Deve-­‐se  sempre  buscar  reu[lizar  componentes    

– 

Exemplo:  

(44)

Projeto  

• 

Interação  entre  componentes  

– 

Iden[fica  as  operações  necessárias  

– 

Atribui  responsabilidades  

– 

Exemplo:  

• 

Se  uma  pré-­‐condição  exige  que  o  usuário  respeite  um  

limite  máximo  de  emprés[mos,  deve  haver  uma  

operação  para  recuperar  o  número  de  emprés[mos  de  

um  usuário  

• 

O  componente  Gerenciador  de  Usuários  e  a  en[dade  

(45)

Projeto  

• 

Especificação  dos  componentes  

– 

Cria  uma  especificação  detalhada  das  interfaces  

dos  componentes,  definindo  as  assinaturas  de  

suas  operações  e  suas  propriedades  

– 

Exemplo:  

 

(46)

Kits  de  Componentes    

§ 

Um  component  kit  é  uma  coleção  de  

componentes  que  foram  projetados  para  

trabalhar  em  conjunto.  

§ 

Component  kits  são  frequentemente  u[lizados  

para  construir  interfaces  gráficas  para  aplicações  

a  par[r  de  botões,  formulários,  listas,  etc.  

§ 

De  um  kit  de  componentes  gera-­‐se  uma  família  

de  soluções,  fazendo  diferentes  arranjos  e  

eventualmente  desenvolvendo  alguns  sob  

medida.  

(47)

Kits  de  Componentes    

§  Um  toolkit  é  um  [po  de  SDK  (SoAware  Development  Kit),  que  apresenta,   além  dos  componentes,  um  conjunto  de  ferramentas  para  criar  aplicações   para  uma  determinada  plataforma,  sistema  ou  framework.  Os  toolkits  são   mais  comumente  encontrados  para  componentes  de  interface  com  o  

usuário,  também  chamados  de  widgets.  Alguns  exemplos  de  toolkits  de   widgets  para  a  linguagem  Java  são  o  AWT  (Abstract  Windowing  Toolkit),   Swing  e  SWT  (Standard  Widget  Toolkit).  

§  Toolkits  possibilitam  que  programadores  desenvolvam  soOware  a  par[r  de   componentes  prontos,  mesmo  sem  muita  experiência  de  programação,  no   es[lo  das  ferramentas  RAD  (Rapid  Applica0on  Development).  Os  toolkits   favorecem  a  cria[vidade  dos  desenvolvedores,  o  que  é  fundamental  para   áreas  não  bem  estabelecidas.  Ao  encapsular  detalhes  de  implementação   de  baixo  nível,  os  toolkits  liberam  os  desenvolvedores  para  pensar  em   novas  interfaces  e  mecanismos  de  interação,  e  possibilitam  uma  

(48)

Arquitetura  de  So>ware  Baseada  em  Componentes  

§  Uma  arquitetura  define  a  estrutura  de  um  soOware,  descrevendo  as   propriedades,  restrições  e  relacionamentos  de  suas  partes.  

§  Ela  representa  o  conjunto  de  restrições  e  regras  da  implementação,   definindo  os  elementos,  conectores,  protocolos,  componentes,  

propriedades  visíveis  e  a  interação  e  a  função  de  cada  parte  no   contexto  do  sistema.  

§  A  arquitetura  é  uma  representação  abstrata  de  alto  nível  do  projeto   de  um  soOware.  A  granularidade  dos  componentes  da  arquitetura   pode  variar  de  pequenos  pedaços  de  código  a  aplicações  inteiras,   como  SGBDs  ou  servidores  de  e-­‐mails.  

§  As  conexões  entre  os  componentes  abstraem  como  eles  de  fato   interagem,  como  por  exemplo,  chamada  de  método,  

compar[lhamento  de  dados,  pipes,  RPCs  (Remote  Procedure  Calls),   sockets,  etc.  

(49)

Arquitetura  de  So>ware  Baseada  em  Componentes  

§  A  maneira  de  reu[lizar  bons  projetos  de  arquiteturas  é  através  dos  es[los   arquiteturais.  Um  es[lo  arquitetural  descreve  uma  família  de  arquiteturas   de  soOware  que  compar[lham  propriedades,  como  por  exemplo,  os  

componentes  permi[dos,  as  restrições  e  interações  entre  os   componentes,  as  invariantes,  o  modelo  computacional,  etc.  

§   Fluxo  de  dados,  máquina  virtual,  chamada  de  procedimento,  MVC  (Model   View  Controller),  cliente-­‐servidor,  peer-­‐to-­‐peer,  blackboard,  camadas  e   orientação  a  serviços  são  exemplos  de  es[los  arquiteturais.  

§  Cada  es[lo  normalmente  endereça  um  aspecto  específico  do  sistema,   sendo  portanto  possível  de  u[lizar  mais  de  um  es[lo  na  mesma  

arquitetura.  Além  disto,  cada  componente  de  um  sistema  pode  ter  uma   arquitetura  e  es[lo  arquitetural  próprios,  desde  que  a  parte  externa  do   componente  seja  compaavel  com  a  arquitetura  da  aplicação.    

(50)

Arquitetura  de  So>ware  Baseada  em  Componentes  

§ 

Apesar  da  arquitetura  ser  única,  pode-­‐se  fornecer  várias  

visões  sobre  ela.  Cada  visão  enfoca  um  determinado  aspecto  

da  arquitetura,  omi[ndo  os  demais  

§ 

 Algumas  visões  são  mais  apropriadas  para  o  desenvolvimento  

do  sistema,  outras  para  o  reuso,  outras  para  o  teste  e  

implantação.    

§ 

O  desenvolvimento  baseado  em  componentes  considera  pelo  

menos  duas  visões  da  arquitetura:  arquitetura  de  aplicação  e  

arquitetura  técnica.  

(51)

Arquitetura  de  So>ware  Baseada  em  Componentes  

§  Na  arquitetura  de  aplicação,  a  preocupação  é  com  a  estrutura  dos  

componentes  do  domínio,  representando  um  projeto  lógico  de  alto  nível   independente  da  tecnologia  de  suporte.  Nesta  arquitetura  são  mostradas   a  função  de  cada  componente  no  contexto  do  sistema  e  a  interação  entre   eles.  A  arquitetura  de  aplicação  consiste  de  um  conjunto  de  decisões  

sobre  a  plataforma,  um  conjunto  de  component  frameworks  e  os   mecanismos  de  interoperação  entre  eles.  

§  A  arquitetura  técnica  considera  os  detalhes  da  tecnologia  de  

componentes  a  ser  u[lizada  e  é  totalmente  independente  do  domínio  da   aplicação.  A  arquitetura  técnica  retrata  as  tecnologias  de  comunicação   entre  os  componentes  (TCP/IP,  ODBC,  etc.)  e  aspectos  referentes  a   escalabilidade  e  performance.    

(52)

Frameworks  

§ 

O  conceito  de  frameworks  está  in[mamente  relacionado  ao  

de  componentes.  Contribuem  para  a  reu[lização  de  soOware.  

§ 

Captura  a  funcionalidade  comum  a  várias  aplicações  que  

devem  ter  algo  razoavelmente  grande  em  comum:  pertencem  

a  um  mesmo  domínio  de  problema.  

(53)

Frameworks  

§ 

Um  framework  é  uma  infra-­‐estrutura  reu[lizável  de  todo  

ou  de  parte  de  um  sistema,  com  o  obje[vo  de  ser  

instanciado  para  resolver  uma  família  de  problemas.  

§ 

Alguns  frameworks  são  voltados  para  solução  de  problemas  

ligados  à  tecnologia,  como  interface  com  o  usuário,  

persistência  de  objetos,  suporte  a  MVC,  etc.  

§ 

Outros  frameworks  são  voltados  para  um  determinado  

domínio,  como,  por  exemplo,  aplicações  bancárias,  

relacionamento  com  o  cliente,  etc.  Estes  frameworks  são  

embasados  em  teorias  e  modelos  do  domínio  e  definem  

uma  arquitetura  orientada  para  aquela  área  de  aplicação.    

(54)

Frameworks  

§ 

O  framework  deve  ser:  

§ 

reusável:  propósito  final.  

§ 

flexível:  reu[lizar  as  abstrações  em  diversos  contextos.  

§ 

extensível:  permi[r  a  adição  ou  modificação  de  

funcionalidades.  

§ 

compreensível:  bem  documentado,  seguindo  padrões  e  

provendo  exemplos  de  u[lização.    

§ 

Um  framework  normalmente  é  implementado  de  

forma  orientada  a  objetos,  onde  o  framework  é  

composto  de  classes  abstratas  e  concretas,  interfaces  e  

arquivos  de  configuração.  

Referências

Documentos relacionados

Este trabalho teve como objetivo avaliar os efeitos da exposição in vivo a concentrações estressantes de amônia e oxigênio na água e do tratamento com extrato de erva-mate

Parágrafo Primeiro: O benefício previsto na presente cláusula, a critério das Entidades representadas pelo SINDICATO DAS MISERICÓRDIAS, poderá ser concedido aos empregados lotados

aprovados nesta fase poderão dar início a Prova Didática em dia e horário fixados pela Banca Examinadora, sem observância do prazo para recurso, o que

Coordenação de projeto de extensão aprovado por instituição de pesquisa ou Instituição de Ensino Superior sem recursos de agência de fomento. Sub-coordenação

2ª Fase - Prova Didática, de caráter eliminatório, com valor de 10 (dez) pontos. 3ª Fase – a) Defesa de Projeto Integrado de Ensino, Pesquisa e Extensão, de caráter

aprovados nesta fase poderão dar início à Prova Didática em dia e horário fixados pela Banca Examinadora, sem observância do prazo para recurso, o que não impedirá a

Neste sentido, a industrialização da manga, inclusive da casca, pode ser uma alternativa para atenuar as perdas, para aproveitar as frutas fora do padrão de

Surgical treatment of fractures of the distal third of the hume- ral shaft, without previous radial nerve injuries, with the MIPO technique associated to exploration of the