Prévia do material em texto
1
Prof. Rafael Targino
rtargino@unicarioca.edu.br
2
Conteúdo da Aula
• Introdução
• Diagrama de Pacotes
• Diagrama de Componentes
• Diagrama de Implantação
2
3
Introdução
• Questões relacionadas à arquitetura de um
sistema:
– Como um sistema pode agrupar suas classes
relacionadas, ou seja, aquelas que tem alguma
semelhança entre si?
– Como um sistema é decomposto em subsistemas, e
como as suas classes são dispostas pelos diversos
subsistemas?
– Como os diversos componentes de um software
podem ser representados inclusive com as relações
entre eles?
– Como os componentes devem ser dispostos
fisicamente quando o sistema tiver de ser
implantado?
4
Conteúdo da Aula
• Introdução
• Diagrama de Pacotes
• Diagrama de Componentes
• Diagrama de Implantação
3
5
Diagrama de Pacotes
• É um mecanismo de agrupamento geral que serve para
agrupar vários modelos
• Organiza elementos em grupo e costuma ser utilizado na
modelagem de sistemas muito extensos.
• Pode conter qualquer diagrama da UML, inclusive outros
pacotes. Mais comumente utilizado em diagrama de
casos de uso e diagrama de classes.
6
Diagrama de Pacotes
• Na realidade, não existem propriamente diagramas
de pacotes em UML; em vez disso, pacotes e
relações entre pacotes aparecem em outros
diagramas, de acordo com o tipo de pacote
– Pacotes de classes (pacotes lógicos) - em diagramas
de classes
– Pacotes de componentes – em diagramas de
componentes
– Pacotes de nós – em diagramas de distribuição/
instalação
– Pacotes de casos de uso – em diagramas de casos de
uso
4
Diagrama de Pacotes
• Uma vez que representa um agrupamento, um
pacote é em geral “dono” de diversos elementos:
classes, interfaces, componentes, nós,
colaborações, casos de uso, diagramas, e até outros
pacotes.
8
Diagrama de Pacotes
5
9
Diagrama de Pacotes
• Quando existe dependência entre pacotes ?
– Quando houver dependência entre quaisquer
duas classes nos pacotes
• Técnica útil:
– Dentro do pacote dê uma visibilidade private para
as classes, assim elas só podem ser vistas dentro
do mesmo pacote. Acrescente então classes
públicas extras ao seu pacote e exclusivas para o
comportamento público fora do pacote. Elas são
chamadas fachadas e são elas que delegam as
operações as outra classes internas do pacote.
10
Diagrama de Pacotes
6
11
Diagrama de Pacotes
• Quando utilizar Diagramas de Pacotes ?
1. Considerados ferramentas vitais para projetos
grandes;
2. Sempre use quando um diagrama de classe que
compreenda todo o sistema não for mais legível
numa única folha A4;
3. Úteis para testes
12
Diagrama de Subsistemas
• Um diagrama de subsistemas é um diagrama de
pacotes, onde cada pacote representa um
subsistema
• Contém visão gráfica dos diversos componentes de
um Sistema de Software OO (SSOO) pode ser
representada por um diagrama de subsistemas.
– Cada subsistema é rotulado com o estereótipo
<<subsystem>>.
• Exemplo de susbsistema:
7
13
Alocação de classes a subsistemas
• Durante o desenvolvimento de um SSOO, seus
subsistemas devem ser identificados, juntamente
com as interfaces entre eles.
• Cada classe do sistema é, então, alocada aos
subsistemas.
• Uma vez feito isso, esses subsistemas podem ser
desenvolvidos quase que de forma independente
uns dos outros.
• A seguir, são descritas algumas dicas que podem
ser utilizadas para realizar a alocação de classes a
subsistemas.
14
Alocação classes a subsistemas
• Subsistemas devem ser minimamente acoplados.
• Subsistemas devem ser maximamente coesivos.
• Dependências cíclicas entre subsistemas devem ser
evitadas.
– A alternativa para eliminar ciclos é quebrar um subsistema
pertencente ao ciclo em dois ou mais. Uma outra solução é
combinar dois ou mais subsistemas do ciclo em um único.
• Uma classe deve ser definida em um único
subsistema (embora possa ser utilizada em vários).
– O subsistema que define a classe deve mostrar todas as
propriedades da mesma.
– Outros subsistemas que fazem referência a essa classe
podem utilizar a notação simplificada da mesma.
8
15
Camadas de software
• Dizemos que dois subsistemas interagem quando
um precisa dos serviços do outro.
• Há basicamente duas formas de interação entre
subsistemas:
– ponto a ponto: na arquitetura ponto a ponto, a
comunicação pode acontecer em duas vias.
– cliente-servidor: há a comunicação somente em uma via
entre dois subsistemas, do cliente para o servidor. Nessa
arquitetura, chamamos de camadas os subsistemas
envolvidos.
• Essas formas de interação entre subsistemas
influenciam a o modo pelo qual os subsistemas são
distribuídos fisicamente pelos nós de
processamento.
16
Camadas de software
• Arquiteturas cliente-servidor e ponto a ponto
9
17
Camadas de software
• Um SSOO projetado em camadas pode ter uma
arquitetura aberta ou uma arquitetura fechada.
– Em uma arquitetura fechada, um componente de uma
camada de certo nível somente pode utilizar os serviços
de componentes da sua própria camada ou da
imediatamente inferior.
– Em uma arquitetura aberta, uma camada em certo nível
pode utilizar os serviços de qualquer camada inferior.
• Na maioria dos casos práticos, encontramos
sistemas construídos através do uso de uma
arquitetura aberta.
18
Camadas de software
• Arquiteturas fechada e abertas, respectivamente
10
19
Camadas de software
• Uma divisão tipicamente encontrada
para as camadas lógicas de um SSOO é
a que separa o sistema nas seguintes
camadas:
– apresentação, aplicação, domínio e
serviços técnicos.
• Da esquerda para a direita, temos
camadas cada vez mais genéricas.
• Também da esquerda para a direita,
temos a ordem de dependência entre
as camadas;
– por exemplo a camada da apresentação
depende (requisita serviços) da camada de
aplicação, mas não o contrário.
20
Camadas de software
• Princípio básico: camadas mais altas devem
depender das camadas mais baixas, e não o
contrário.
– Essa disposição ajuda a gerenciar a complexidade através
da divisão do sistema em partes menos complexas que o
todo.
– Também incentiva o reuso, porque as camadas inferiores
são projetadas para serem independentes das camadas
superiores.
– O acoplamento entre camadas é mantido no nível mínimo
possível.
– Uma mudança em uma camada mais baixa que não afete a
sua interface não implicará em mudanças nas camadas
mais altas.
– E vice-versa, uma mudança em uma camada mais alta que
não implica na criação de um novo serviço em uma camada
mais baixa não irá afetar estas últimas.
11
21
Conteúdo da Aula
• Introdução
• Diagrama de Pacotes
• Diagrama de Componentes
• Diagrama de Implantação
22
Componentes
• A UML define uma forma gráfica para representar
componentes visualmente, o diagrama de
componentes.
• Esse diagrama mostra os vários componentes de
software e suas dependências.
• Os elementos gráficos desse diagrama são
ilustrados na figura abaixo.
12
23
Componentes
• Definem-se pelo menos três tipos distintos
de componentes:
– Componentes de instalação: constituem a base
dos sistemas executáveis (e.g., DLL, executáveis,
controles Active-X, classes Java).
– Componentes de trabalho: a partir dos quais são
criados os componentes de instalação (e.g.,
arquivos com código fonte, arquivos de dados,
documentos).
– Componentes de execução: criados como
resultado da execução de um sistema (e.g.,
processos, threads, agentes de software).
24
Diagrama de Componentes
• A UML identifica os seguintes estereótipos
para componentes:
– «document»: denota um documento.
– «executable»:denota um programa que possa
ser executado num nó.
– «file»: denota um documento contendo código
fonte ou dados.
– «library»: denota uma biblioteca dinâmica ou
estática.
– «table»: denota uma tabela de uma base de
dados.
13
25
Exemplo – Diagrama de Componentes
• Diagrama de Componentes relativo a uma Página HTML.
• O diagrama de componentes correspondente a este “mini-
sistema” consiste nos seguintes arquivos:
– example1.html, Animator.class, e Animator.java.
– O componente Animator.class é a compilação do programa
Animator.java, logo podemos dizer que ele depende de
Animator.java. Por sua vez, o programa Animator.java lida
com a interface java responsável pelo tratamento de eventos
do mouse –
– MouseListener.java do pacote java.awt. Tanto Animator.java
quanto Animator.class são necessário para que o página
example1.html roda. Assim, temos uma relação de
dependência explicitada como:
– example1.html { Animator.class, Animator.java }
– Animator.class { Animator.java}
– Animator.java {awt::MouseListener.java }
26
Exemplo – Diagrama de Componentes
14
27
Conteúdo da Aula
• Introdução
• Diagrama de Pacotes
• Diagrama de Componentes
• Diagrama de Implantação
28
Diagrama de Implantação
• Um diagrama de implantação consiste num
conjunto de nós ligados por associações
de comunicação. Os nós podem conter
instâncias de componentes (de execução), o
que significa que um componente é instalado
e executado num nó.
• Por outro lado, os componentes são
compostos por objetos (note-se que um
processo é apenas um caso particular de
objeto: objeto ativo).
15
29
Arquitetura de Implantação
• A arquitetura de implantação diz respeito à
disposição dos subsistemas de um SSOO
pelos nós de processamento disponíveis.
• Para sistemas simples, a arquitetura de
implantação não tem tanta importância.
• No entanto, na modelagem de sistemas
complexos, é fundamental conhecer quais
são os componentes físicos do sistema,
quais são as interdependências entre eles e
de que forma as camadas lógicas do sistema
são dispostas por esses componentes.
30
Diagrama de Implantação
• Uma vez definidas as alocações das camadas lógicas aos
nós de processamento, podemos fazer a representação
gráfica com suporte da UML, através do diagrama de
implantação.
• Os elementos desse diagrama são os nós e as conexões.
• Um nó representa um recurso computacional e
normalmente possui uma memória e alguma capacidade de
processamento.
– Exemplos: processadores, dispositivos, sensores, roteadores ou
qualquer objeto físico de importância para o sistema de software.
• Os nós são ligados uns aos outros através de conexões.
– As conexões representam mecanismos de comunicação: meios
físicos (cabo coaxial, fibra ótica etc.) ou protocolos de comunicação
(TCP/IP, HTTP etc.).
16
31
Diagrama de Implantação
• Exemplo de diagrama de implantação
32
Relações entre Nós e Componentes
• Um nó pode conter componentes. Tal fato
pode ser traduzido pela inclusão dos
componentes no símbolo do nó, ou pelo
estabelecimento de uma relação de
dependência, de estereótipo «support» entre
o nó e os componentes suportados.
17
33
Alocação de Componentes
• A atividade de alocação de componentes aos
nós físicos só tem sentido para sistemas
distribuídos.
– Para sistemas que utilizam um único processador, não
há necessidade desta atividade.
• Um dos principais objetivos: distribuir a carga
de processamento do sistema para aumentar o
desempenho.
– No entanto, nem sempre isso aumenta o
desempenho.
– Isso porque a sobrecarga de comunicação entre os
nós pode anular os ganhos obtidos com a distribuição
do processamento.
34
Diversas notações para diagrama de
implantação e diagrama de componentes
18
35
• Exemplo de diagrama de componentes
embutido em um diagrama de
implantação.
Relações entre Nós e Componentes
36
Exemplo – Diagrama de Implantação
• Desenvolva o diagrama de instalação
correspondente a um sistema de trabalho
doméstico constituído por um PC (onde é
feito o processamento), com alguns
equipamentos adicionais, como:
1. uma impressora, (device)
2. um monitor, (device)
3. colunas de som, (device)
4. e um modem. (device)
• O modem permite a ligação à Internet através de
um determinado ISP (Internet Service Provider)
19
37
Exemplo – Diagrama de Implantação
38
Exemplo – Diagrama de Implantação
• Para ilustrar uma configuração particular do
diagrama anterior ou ilustrar os componentes de
software que deveriam existir numa determinada
configuração vamos evoluir o diagrama anterior com
os seguintes elementos de configuração a nível de
instâncias.
1. uma impressora : (HP LJ1100)
2. um monitor, (device) : (ICL-5550)
3. colunas de som, (device)
4. e um modem. (device) : (Zoom 56k)
5. ISP : (Stelepac)
20
39
Exemplo – Diagrama de Implantação
40
Exercício - Elabore um Diagrama de Implantação
utilizando também Pacotes e Componentes
• Todo sistema de controle de agendamento do Detran roda em um
Servidor Aplicação que atende todas as funcionalidades que estão
disponíveis aos cidadãos. Esse servidor persiste os dados no servidor
central de banco de dados do Detran.
• No posto de vistoria, os vistoriadores usam um sistema que está
apartado do sistema web. Esse sistema está dividido em dois
subsistemas, o de vistoria de automóveis de passeios e o de vistoria
de automóveis de transporte. Esses subsistemas utilizam o mesmo
banco da dados central do Detran.
• Esses dois subsistemas utilizam um componente disponível pelo INEA
no IP 192.168.10.1 que valida a leitura da emissão de gás carbônico
e indica se o resultado da avaliação.
• Ao chegar no posto de vistoria o motorista precisa passar em uma
cancela. Recentemente foi instalado um software que reconhece a
placa do veículo e consultando os dados de agendamento de vistoria,
libera a cancela automaticamente. Este software roda em uma
máquina própria que atende todas as cancelas do posto de vistoria.