3. Desenvolvimento de Software Tradicional
• Desenvolvimento de Software x Desenvolvimento de
Hardware
– Progressos em Desenvolvimento de Hardware tem sido
exponencial ao contrário do desenvolvimento de software
• Desenvolver software é uma tarefa laboriosa
– Sistemas grandes e complexos
– Requisitos mudam constantemente
– Novas tecnologias
– Falta de documentação, etc
3
PLP- UFCG
4. Ciclo de Vida em Desenvolvimento de Software tradicional
requisitos
Processo iterativo Texto
Em teoria
análise
Diagramas e
texto
projeto
Diagramas e
texto
implementação
Atalho
código
testes
4
PLP- UFCG
5. Desenvolvimento de Software Tradicional
• Principais problemas:
– Produtividade
– Portabilidade
– Interoperabilidade
– Documentação
5
PLP- UFCG
6. O que é DDM?
• DDM (Desenvolvimento Dirigido a Modelos)
– MDA (Model-Driven Arquitecture)
– MDD (Model-Driven Development)
– MDE (Model-Driven Engineering)
• É uma iniciativa da OMG (Object Management Group) com o
intuito de prover toda uma infra-estrutura para
desenvolvimento de software
– Iniciada em 1997, definida em 2000, correntemente sendo melhorada
– Almeja solucionar os problemas presentes em desenvolvimento de
software tradicional (produtividade, portabilidade interoperabilidade,
documentação, etc.)
– OMG oferece padrões (linguagens, plataformas, etc)
6
PLP- UFCG
7. MDA - Princípios
• Modelos passam a ser a força motriz no processo de desenvolvimento
de software
– Diferentes níveis de abstração
– Diferentes fases do ciclo de desenvolvimento de uma aplicação
– Apresentação visual amigável
– Formais
– Persistentes
• Meta-modelos descrevendo modelos
• Transformações definem como mapear modelos
• Engenhos de transformação executam definições de transformações
• Alto grau de automação do código
7
PLP- UFCG
8. MDA - Ciclo de Vida
requisitos
Texto +
Processo DDM
modelos
análise
modelos
projeto
modelos
implementação
código
testes
8
PLP- UFCG
9. MDA - Ciclo de Vida
CIM
requisitos
TOOL
Transformações
PIM parcial
CIMPIM
análise
A
PIM U
TOOL
T
O
Transformações
Processo PIMPSM M
Iterativo A
PSM
T
TOOL I
Transformações C
PSMcódigo A
código
testes
9
PLP- UFCG
10. Tipos de Modelos
Modelo de requisitos:
Define o domínio onde o
sistema será desenvolvido,
serviços e entidades
envolvidas
Modelo de análise e
Projeto: define a
arquitetura do sistema
Modelo de realização:
define como o sistema é
desenvolvido
Código do sistema
[Fig. Blanc] 10
PLP- UFCG
11. Arquitetura MDA
MOF
Meta Meta
mo delo mo delo
Rule Rule Rule
X{...} X{...} X{...}
Definições de Definições de Definições de
transformação transformação transformação
CIM Código
PIM PSM
Engenho de Engenho de Engenho de
transformação transformação transformação
Aplicação
11
PLP- UFCG
12. Visão Desenvolvimento de Software Tradicional
Abstração
Desenvolvimento Orientado a Objetos
Requisitos
UML + LN
Modelo
UML
Código Máquina Código
Fonte Virtual Binário
Executabillidade
12
PLP- UFCG
15. Modelos
• Empresa de desenvolvimento de software de sucesso desenvolve
software de qualidade e atende aos usuários
• Modelagem é uma tarefa fundamental nas atividades iniciais do
desenvolvimento do software
– Comunicar a estrutura e comportamento desejados para o sistema
– Visualizar e controlar a arquitetura do software
– Melhor entendimento do sistema
– Gerenciar os riscos
– Etc, ...
• É preciso utilizar uma linguagem expressiva, simples e padrão
15
PLP- UFCG
16. UML
• UML é uma linguagem para especificação, visualização,
construção e documentação de artefatos de sistemas de
software.
• Linguagem padrão adotada e recomendada pela
OMG.
16
PLP- UFCG
17. UML - Características
• Sub-dividida em diagramas
• Abrange modelagem estrutural e comportamental
• Várias ferramentas CASE
• Amplamente utilizada pelo mercado e pela academia
• Inter-disciplinar
17
PLP- UFCG
18. UML - Diagramas
• Parte estrutural Classes, interfaces e
relacionamentos
– Diagrama de classes
Objetos e
relacionamentos
– Diagrama de objetos
Componentes e
– Diagrama de Componentes dependências
– Diagrama de Desenvolvimento
Nodos e configurações
18
PLP- UFCG
19. UML - Diagramas
• Parte comportamental Diagramas de Interação:
}
Objetos, relacionamentos
– Diagrama de Comunicação e mensagens
– Diagrama de Seqüência Casos de uso, atores e
relacionamentos
– Diagrama de Casos de Uso
}
Máquina de estados:
– Diagrama de estados Estados, transições,
eventos e atividades
– Diagrama de atividades
19
PLP- UFCG
20. Diagrama de Classes
• É um diagrama que mostra um conjunto de classes,
interfaces e relacionamentos.
• Responsável por modelar a parte estática do sistema
• Contém:
- Classes
- Atributos
- Operações
- Interfaces
- Relacionamentos
- Portas
- Pacotes
- Notas, restrições, etc.
20
PLP- UFCG
22. Atributos
• Propriedades pré-definidas:
– changeable
– addOnly
– frozen
Propriedades sobre atributos
• O tipo de um atributo deve ser necessariamente:
– Primitivo
– Enumeração
22
PLP- UFCG
23. Operações
• Assinatura comum de serviços
fornecidos por membros da uma
classe
• Propriedades:
– Visibilidade
– Nome Poligono
– parâmetros
compativel(in pol : Poligono) : Boolean
• Direção desenhar() : void
• nome getContador() : Integer
___________________
• Tipo
• Multiplicidade
• Valor default
– Tipo de retorno
• Escopo:
– Instance
23
– Classifier
PLP- UFCG
25. Pacotes
• Agrupa um conjunto de elementos UML
– namespace
• Cada elemento do modelo deve pertencer, no máximo, a um
pacote
• Relações entre pacotes:
– Generalização
– Dependências
• Aninhamento (sub-pacotes)
• Import
• access (private import)
• Merge
25
PLP- UFCG
27. Máquina de estados
• Expressar Comportamento
– Máquina de estados comportamental
– Classes
• Expressar protocolo de uso do sistema
– Máquina de estados de protocolo
– Classes realizando interfaces e portas
27
PLP- UFCG
28. Máquina de estados comportamental
• Uma máquina de estados é um comportamento que
especifica uma seqüência de estados durante o tempo de
vida de um objeto
• Modela o comportamento de um único objeto
• Formado por:
– Estado
– Transição
– Evento
– Ação
– Guardas
28
PLP- UFCG
30. Diagrama de Atividades
• Modela aspectos dinâmicos do sistema
– Modelagem Seqüencial
– Modelagem concorrente
• Modela fluxo de atividades e sua interação com
sociedades de objetos e unidades organizacionais
– Fluxo de controle de atividade para atividade
• Modela mudança de estados de objetos ao longo do fluxo
de controle de uma atividade
30
PLP- UFCG
31. Diagrama de Atividades
• Um diagrama de atividade é um tipo especial de máquina
de estados comportamental
• Estados são atividades
• Transições são chamadas pontes de atividade
– Pontes de atividade são disparadas a partir da finalização de uma
atividade fonte
– Pontes de atividade alcançam uma atividade destino
31
PLP- UFCG
32. Diagrama de Atividades
• Uma atividade é uma execução não atômica dentro de
uma máquina de estado
• Atividades são formadas por ações atômicas
– Resulta em mudança de estado do sistema ou
– Retorna um valor
• Atividades podem possuir outras atividades detalhadas em
outro diagrama de atividades
• Ajuda a quebrar computações complexas em sub-atividades
32
PLP- UFCG
34. Diagramas de Interação
• Diagramas de interações podem ser usados para modelar o
fluxo de controle dentro de:
– Uma operação
– Uma classe
– Um componente
– Um caso de uso
– Um sistema como um todo
• Diferentes ênfases podem ser dadas
34
PLP- UFCG
35. Diagramas de Interação
• Uma interação é um comportamento que envolve um
conjunto de mensagens entre um conjunto de objetos
dentro de um contexto
• Uma mensagem é uma especificação de uma comunicação
entre objetos que transportam informações
35
PLP- UFCG
36. Diagramas de Interação
• Tipos de diagramas de interação
– Diagrama de Seqüência
– Diagrama de comunicação
– Diagrama de overview de Interação
– Diagrama de tempo
36
PLP- UFCG
37. Diagrama de Seqüência
• Diagrama de interação mais comum
• Foca na troca de mensagens entre vários objetos
– Seqüência de mensagens trocadas
– Enfatiza a ordem (tempo) em que ocorre a troca de mensagens
• Graficamente:
– Eixo x: objetos organizados em linhas de vida
– Eixo y: ordem em que mensagens são trocadas ao longo do tempo
37
PLP- UFCG
40. OCL
• UML não provê todos aspectos relevantes da especificação do
sistema.
– Restrições adicionais são escritas em linguagem natural
– Ao longo de todos os diagramas
• Modelos precisam ser completos
• Modelos precisam ser precisos
• Modelos precisam ser testados
• PIMs precisam ser detalhados ao extremo para permitir completa
geração de código
• Idem para PSMs
40
PLP- UFCG
41. Cliente
ProgramaFidelidade nome : String
pronomeTratamento : String
programa
cadastrar(c : Cliente) masculino : Boolean
1..* obtemServicos() : Set(Servicos) dataAniversario : Data
0.. * 0..*
rg : String
Socio
0.. * idade()
{ordered}
1..* parceiros proprietario
ParceiroPrograma 1..* nivelDoServico
0..* cartoes
quantidadeDeClientes : Integer NivelServico cartao
nome : String Cartao
0..1
cor : TipoDeCor valido : Boolean
Conta validoDesde : Data
p ontos : Integer vencimento : Data
cor : TipoDeCor
servicosOfe recidos creditar(pts : Integer) nomeTratamentoCliente : String
0..*
d ebitar(pts : Integer)
Servico e staVa zia() : Bo olean
condicao : Boolean cartao
pontosADebitar : Integer servicosDisponiveis
pontosACreditar : Integer
descricao : String 0..* transacoes 0..*
Transacao
transacoes
transacoes pontos : Integer
data : Data
0..*
0..*
<<enumeration>> programa() : ProgramFidelidade
TipoDeCor
ouro
prata
bronze
Credito Debit o
41
PLP- UFCG
42. Enriquecendo o modelo
• O cartão de um sócio deve apresentar o seguinte
tratamento: “ Sr. Fulano” ou “ Sra. Sicrana”
• Um cliente deve ser maior de idade
• Número de pontos gastos em transações de crédito deve
ser maior que em transações de débito
• Transações devem ser realizadas com um número mínimo
de 100 pontos
• Dois clientes diferentes não podem ter o mesmo rg
• Quantos clientes um parceiro possui no programa de
fidelidade?
• Deve-se especificar as operações:
– obtemServiço(), estaVazia(), cadastrar(), etc.
• Muitas outras
42
PLP- UFCG
43. OCL - Características
• OCL - Linguagem para escrita de restrição sobre
objetos, que pode ser aplicada em um ou mais valores
de um (ou parte de) sistema ou modelo orientado a
objetos.
• Criada originalmente na IBM (Insurance Division)
• Integra construtores da lógica de primeira ordem e
algorítmica.
• Apresenta sintaxe mais intuitiva para o desenvolvedor,
mais próxima da implementação em linguagens OO.
• Complementar a UML 43
PLP- UFCG
45. OCL - Características
Invariantes
Corpo de
operações
UML OCL
Précondições
Póscondições
Regras de
Especificações derivação
de
Inicialização
45
PLP- UFCG
46. Operação iterate
context ParceiroPrograma inv:
ParceiroPrograma self.servico.transacao->iterate(
quantidadeDeClientes : Integer t: Transacao;
acum: Integer = 0 |
if t.isTypeOf(Debito) then
0..* servicosOferecidos acum + pontos
Servico else
condicao : Boolean acum
pontosADebitar : Integer endif
pontosACreditar : Integer )
descricao : String
<=
self.servico.transacao->iterate(
t: Transacao;
0..* transacoes acum: Integer = 0 |
if t.isTypeOf(Credito) then
Trans acao
pontos : Integer
acum + pontos
data : Data else
acum
programa() : ProgramFidelidade endif
) 46
PLP- UFCG
47. Navegações x Multiplicidades
Cliente
nome : Stri ng
Programa Fidel idade
pronom eTrata mento : String
programa
masculi no : Bool ean
1..* cadastrar(c : Cliente) 0..* 0..*
data Aniversario : Data
rg : Stri ng
idad e()
1..* pa rceiro s
ParceiroPrograma
quantidadeDeClientes : Integer
context ParceiroPrograma inv:
quantidadeDeClientes = programaFidelidade.cliente
->asSet()->size()
47
PLP- UFCG
48. OCL – oclIsNew()
Cl iente
ProgramaFidelidade nome : String
pronomeTratamento : String
programa masculino : Boolean
cadastrar(c : Cliente)
dataAniversario : Data
obtemServicos() : Set(Servicos)
0..* 0..* rg : String
idade()
context cadastrarECriarCliente(n: String, d: Data):Cliente
post: result.oclIsNew() and
result.nome = n and
result.dataAniversario = d and
clientes->includes(result)
48
PLP- UFCG
49. OCL – Variáveis locais
context ProgramaFidelidade inv:
ProgramaFidelidade let potuacao : Integer =
ca dastrar(c : Cl iente) self.parceiros.servicosOferecidos.
1..* obtemServico s() : Set(Servicos)
transacoes.pontos in
if pontuacao > 100
1..* parceiros then …
ParceiroPrograma
qua ntidadeDeClien tes : Integer else if pontuacao > 50
then …
else if pontuacao > 30
0..* servicosOferecidos then …
Servico
condicao : Boolean
pontosADebitar : Integer
pontosACreditar : Integer
descricao : String
Transacao
transacoes pontos : Integer
data : Data
0..*
programa() : ProgramFidelidade
49
PLP- UFCG
50. Desenvolvimento Dirigido a Modelos
• Total especificação do software através de modelos
• UML + OCL capazes de realizar tal descrição
• UML e OCL ainda não são 100% executáveis
• A cada dia surgem novos compiladores para UML e OCL
• Linguagens independentes de plataformas
• Em breve: Programadores UML e OCL
• Mais: Semântica de Ações, ATL, QVT, MOF, KM3, Kermeta, Ecore,
EMF, MODELOG, ADT, etc (Vejam na disciplina DDM!)
50
PLP- UFCG