Engenharia de Software
Engenharia de Software
Introdução à UML
João
João RochaRocha joao@uefs.br
joao@uefs.br
http://
Importância da Modelagem
Importância da Modelagem
Comunicar a estrutura e o comportamento
desejado
Visualizar e controlar a arquitetura do
sistema
Compreender melhor o sistema que estamos
elaborando
Modelagem na Eng. Software
Modelagem na Eng. Software
“Um modelo é uma simplificação
da realidade”
Quatro Objetivos da modelagem:
(1) Visualizar o sistema
(2) Especificar a estrutura ou o comportamento (3) Guiar para a construção do sistema
Princípios básicos da modelagem
Princípios básicos da modelagem
A escolha dos modelos implica na maneira
como o problema é atacado
Cada modelo pode ser expresso em
diferentes níveis de precisão
Os melhores modelos estão relacionados com
a realidade
A simplificação não deve ocultar detalhes
importantes
Modelagem orientada a objetos
Modelagem orientada a objetos
Um objeto é algo estruturado a partir do
vocabulário do problema
Todos os objetos possuem
Uma identidade
nome ou modo de diferenciá- lo
Um estado
dados associados
UML
UML
“A UML é uma linguagem para a elaboração
da estrutura de projetos de software”
Visualização
Semântica bem definida
Especificação
Permite construir modelos sem ambigüidades
Construção
É possível gerar código a partir dos modelos
Regras da UML
Regras da UML
Os blocos de construção não podem ser
combinados aleatoriamente
Dispõe de regras para
Nomes Escopo
Visibilidade Integridade Execução
Mecanismos básicos da UML
Mecanismos básicos da UML
Especificações
Fornece um repertório semântico, contendo todas
as partes de todos os modelos de determinado sistema
Adornos
Divisões comuns
Adornos
Adornos
Variedade de alterações (enfeites) que podem
ser adicionados aos elementos básicos
Ex: Transaction + execute() + rollback() # priority() - timestamp()
Divisões comuns
Divisões comuns
Mecanismos utilizados para diferenciar blocos
de construções comuns Cliente nome endereco telefone Joao : Cliente : Cliente
Mecanismos de Extensão
Mecanismos de Extensão
Estereótipos
Ampliação do vocabulário (ex: novos blocos)
Valores atribuídos
Estender as propriedades dos blocos (ex: versão)
Restrições
Estende a semântica (ex: criar novas regras)
Ex: <<exception>> Overflow EventQueue {version 1.0} {ordered}
Três elementos principais de UML
Três elementos principais de UML
Blocos de construção básicos
Itens: abstrações identificadas
Relacionamentos: permite reunir os itens Diagramas: agrupam coleções de itens
Regras que determinam como os blocos
poderão ser combinados
Regras semânticas para nomes, escopo,
visibilidade, integridade e execução
Itens
Itens
Estruturais
São as partes estáticas do modelo
Comportamentais
São as partes dinâmicas
Agrupamentos
São as partes organizacionais
Anotacionais
Itens Estruturais
Itens Estruturais
São os substantivos utilizados em modelos
da UML Classes Interfaces Colaborações Casos de Uso Classes Ativas Componentes Nós
Classes
Classes
Conjuntos de objetos que compartilham os
mesmos atributos, operações, relacionamentos e semântica
Implementam uma ou mais interfaces Graficamente: Conta saldo:double Número:String debitar(valor:double):void creditar(valor:double):void
Interfaces
Interfaces
Coleção de operações que especificam
serviços de uma classe ou componente
Descreve o comportamento externamente
visível desse elemento
Graficamente:
Colaborações
Colaborações
Interações e sociedades de papéis que
funcionam em conjunto para proporcionar um comportamento cooperativo
Representam a implementação de padrões
que formam um sistema
Graficamente:
Cadeia de
Caso de uso
Caso de uso
Ações realizadas pelo sistema que
proporcionam resultados visíveis para um ator
É utilizado para estruturar o comportamento de
itens em um modelo
Graficamente:
Classes Ativas
Classes Ativas
São classes cujos objetos têm um ou mais
processos ou threads
Os objetos dessa classe representam
elementos cujo comportamento é concorrente com o de outros elementos
Graficamente:
Timer getTime()
Componentes
Componentes
São partes físicas e substituíveis de um
sistema
Proporcionam a realização de um conjunto de
interfaces
Graficamente:
Nós
Nós
Elemento físico existente em tempo de
execução que representa um recurso computacional
Um conjunto de componentes poderá estar
contido em um nó
Graficamente:
Outros Itens…
Outros Itens…
Comportamentais
São as partes dinâmicas dos modelos UML
Interação
Máquina de estado
Agrupamento
São as partes organizacionais
Pacotes
Anotacionais
Interação (Comportamental)
Interação (Comportamental)
Mensagens trocadas entre um conjunto de
objetos para realização de propósitos específicos
Representada como uma linha cheia com
seta, quase sempre incluindo o nome de suas operações
Graficamente:
Máquina de estado (comportamental)
Máquina de estado (comportamental)
Especifica as seqüências de estados pelas
quais objetos ou interações passam durante sua existência.
Graficamente:
Pacote (Agrupamento)
Pacote (Agrupamento)
Organização de elementos em grupos. Itens
estruturais e comportamentais podem ser colocados em pacotes
Um pacote é puramente conceitual.
Componentes não podem ser colocados em
pacotes
Notas (
Notas (
Anotacionais
Anotacionais
)
)
Símbolo para representar restrições e
comentários anexados a um elemento ou a
uma coleção de elementos
Graficamente:
Relacionamentos
Relacionamentos
Existem quatro tipos de relacionamentos na
UML
Dependência Associação
Generalização Realização
Você utilizará esses relacionamentos para
Dependência
Dependência
Relacionamento semântico entre dois itens,
nos quais a alteração de um pode afetar a semântica do outro
Pode ter um texto explicativo Graficamente:
Associação
Associação
Relacionamento estrutural que descreve um
conjunto de ligações entre objetos
Agregação
Partes e todo
Composição
Partes e todo, onde cada parte só pertence a um
todo e sua existência está condicionada ao dono
Graficamente:
Generalização
Generalização
Relacionamento no qual os objetos dos
elementos especializados (os filhos) são substituíveis por objetos do elemento
generalizado (os pais)
Os filhos compartilham a estrutura e o
comportamento dos pais
Realização
Realização
Relacionamento semântico entre elementos,
em que um elemento especifica um contrato que outro elemento garante executar
A realização é encontrada entre as interfaces
e as classe e componentes que as realizam
Diagramas na UML
Diagramas na UML
Representação gráfica de um conjunto de
elementos, geralmente representados como gráficos de vértices (itens) e arcos
(relacionamentos)
Permitem a visualização de um sistema sob
diferentes perspectivas
Pode conter qualquer combinação de itens e
Diagramas UML
Diagramas UML
Casos de uso Interação Seqüência Colaboração Classes Objetos Estados Atividades ComponentesDiagrama
Diagrama
de
de
Caso
Caso
de
de
Uso
Uso
Objetivo principal é identificar um cenário
evidênciando os atores e ações (caso de uso)
Um Ator é alguém ou alguma coisa que
interage com o sistema a ser desenvolvido
Exemplos
Cada caso de uso representa uma “ação” que
pode ser realizada por um ator
Estudante
Exemplo
Exemplo
…
…
Receber ligação Fazer ligação Rede Celular Uso programado Receber Ligação adicional Fazer Conferência Telefone CelularOuras
Ouras
relações
relações
…
…
A medida que os casos de uso são construídos,
outras relações podem ser exploradas
Comprar produto
Diagramas
Diagramas
de
de
interação
interação
Diagramas de interação descrevem como os
casos de uso são “realizados” e a interação entre os objetos
São importantes somente para a modelagem
de aspectos dinâmicos do sistema
Construir roteiros de cenários
Diagrama
Diagrama
de
de
seqüência
seqüência
Exibe a interação entre os objetos
Outro exemplo...
Outro exemplo...
:Thread :Toolkit :ComponentPeer :HelloWorld
run
handleExpose callbackLoop
Diagrama
Diagrama
de
de
colaboração
colaboração
Dá ênfase aos relacionamentos estruturais
1: <<create>>
2: setActions(a, b, c) 3: <<destroy>>
Diagrama
Diagrama
de
de
seqüência
seqüência
X
X
colaboração
colaboração
Diagrama de sequênciaExiste uma linha de vida do objeto
Foco no controle. É possível visuzalir o o período
durante o qual um objeto está desempenhando uma ação.
Diagrama de colaboração
Existe um caminho entre objetos que se
relacionam
Existe um número de sequencia para indicar a
Diagramas
Diagramas
de
de
classe
classe
Exibe as classes e suas relações
Devem ser nomeadas utilizando vocabulário do
domínio da aplicação
É composto por classes e relacionamentos Pode ter várias visões
Re gistro Ve nda -data: long -foiFechada: Boolean Captura 1 1 Visão conceitual
Atributos
Atributos
versus
versus
Associação
Associação
A estrutura (estado) da classe é representada
pelos seus atributos
Use atributos para para representar dados Use associação para representar navegação
Register -id: int +endSale() +addItem() Sale -data: long -foiFechada: Boolean -currentSale 1 Store -location Item -items 1..*
Herança
Herança
Herança é uma relação entre a superclasse e
suas subclasses
Existem duas formas de “visualizar” a herança:
Como generalização Como especialização
Realização
Realização
(interfaces)
(interfaces)
Window1 Timer Clock2 +getTime() Timer <<interface>> +getTime() Clock3 Window2 Clock2 +getTime() Timer
Associaçao
Associaçao
X
X
dependência
dependência
DependênciaUm elemento (cliente) tem conhecimento de outro
(fornecedor) e uma mudança no fornecedor pode
alterar o cliente!
Existem diversos tipos de dependência
Ter um atributo do fornecedor (associação)
Enviar mensagem ou utilizar um método do fornecedor
Receber um parâmetro do fornecedor (realização)
O fornecedor pode ser uma super- classe (herança)
Exemplo
Exemplo
…
…
Register -id: int +endSale() +addItem() +makePayment() Sale -data: long -foiFechada: Boolean -currentSale 1 Store -location 1 Item -items 1..* ProductDescriptionComposição
Composição
e
e
Agregação
Agregação
AgregaçãoTipo de associação vago que indica “parte e todo” Existe em UML apenas para referenciar
Rumbaugh
Composição
Tipo de associação forte e útil para alguns
modelos
Uma instância de uma parte pertence somente a
Classe
Classe
Associativa
Associativa
Permite tratar uma associação como se fosse
uma classe Empresa Funcionário * * Emprego -salario -dataInicio
Diagrama
Diagrama
de
de
Objetos
Objetos
ObjetivoDescrever um exato momento de um sistema
r : Register
Diagrama
Diagrama
de
de
Estado
Estado
ExibeAs transações de estado de um objeto A história de uma classe
Os eventos que causam a transição de um estado
para outro
As ações que resultam da troca de estado
Devem ser construídos para objetos que
possuem um comportamento dinâmico significativo
Exemplo
Diagrama
Diagrama
de
de
Atividades
Atividades
Apresenta uma sequencia de
ações, onde algumas podem ser executadas em paralelo
Muito bom para descrever
processos, exibe:
Ações
Objetos produzidos por uma ação Diferentes partes que compõem o
Diagrama
Diagrama
de
de
Componentes
Componentes
Um componente é uma parte subistituível que
atende e prover um conjunto de interfaces
Uma interface é um conjunto de operações
que especificam um serviço
Uma porta é uma janela dentro do
componente permitindo definir que itens serão acessados Ticket Seller <<component>> charging charging Ticket Seller <<component>>
Exemplo
Exemplo
Exemplo
…
…
W eb <<component>> <<Servlet>> SrvLogin <<Servlet>> SrvCa lendar <<Servlet>> SrvSe arch <<Servlet>> SrvShopping <<Servlet>> SrvNew s <<Servlet>> SrvQuota tion <<Servlet>> xm l (Ajax) SearchEJB <<bean>> Mana gerEJB <<bean>> New sEJB <<bean>> ShoppgingEJB <<bean>> Calenda rEJB <<bean>> Quota tionEJB <<bean>> Mana ger Se arch New s Cale nda r Quotation MailEJB <<bean>> Se archDB <<database>> ShoppgingDB <<database>> New sDB <<database>> Use rDB <<database>> Calenda rDB <<database>> JDBC http <<tier>> Cliente<<tier>> W eb <<tier>> EJB
<<tier>> Backend
http Brow se r
Ma il Shopping
Diagrama
Diagrama
de
de
Pacotes
Pacotes
<<camada>> A
A relação de dependência é utilizada para
descrever arquitetura em camadas
Exemplo
Exemplo
Exemplo
Diagrama
Diagrama
de
de
implantação
implantação
Mostra a configuração dos processos em
tempo de execução
Permite visualizar a distribuição dos
Referências
Referências
Grady Booch, James Rumbaugh, Ivar
Jacobson. “The Unified Modeling Language
User Guide”, 2005.
Martin Fowler. “UML Distilled”. 3a. Ed, 2004
Graig Larman.”Applying UML and Patterns” ,3a.
Ed, 2005.
Dan Pilone, Neil Pitman. “UML 2.0 in a Nutshel”,
Engenharia de Software
Engenharia de Software
Introdução à UML
João
João RochaRocha joao@uefs.br
joao@uefs.br
http://