Fábrica de Software com UML
Toacy C. Oliveira
1
Agenda


Motivação
Contexto



Exemplo Prático
UML Profile



UML/MDA
Definições
Exemplo
Conclusão
2
Como SW é feito atualmente?
Processo de
Desenvolvimento
Modelagem
Programação
3
Como SW é feito atualmente?
Processo de
Desenvolvimento
Modelagem
Programação
4
Como SW é feito atualmente?
Processo de
Desenvolvimento
Modelagem
Programação
5
Como SW é feito atualmente?
Processo de
Desenvolvimento
Modelagem
Programação
6
Ou seja.....

Como a 30/40 anos atrás !!!!
Utilizando um batalhão de pessoas....

PESSOAS = PROBLEMAS




Têm humor (falta/excesso)
Têm família...
Antes da reclamação. Eu não quero extinguir
programadores... Eles são necessários!!
7
Como melhorar?

Que tal expandirmos alguns conceitos
já existentes?



Industrialização
Automação
Ex: Alguém escreve código binário hoje
em dia? Alguém cria interface
(Janelas,Botões,...) do zero?
8
Fábrica Software?

A idéia é simples.



PADRONIZAÇÃO
AUTOMAÇÃO DO PROCESSO DE
DESENVOLVIMENTO
PRODUÇÃO EM “SÉRIE”
9
Como ?

Sistemas devem ser construídos a partir
de Padrões, Modelos, Arquiteturas,
Frameworks e Ferramentas.




Guiado por Processo
Baseado em Reuso sistemático
Utilizando Linguagens de Domínio
Fazendo Transformações
10
Desenvolvimento de Software
Mundo Real
Necessidades
-Informal
-Processos de Negócio
-Time to Market
-Usabilidade
Pessoas
-Clientes (com dinheiro!!)
-Usuários (sem paciência)
Mundo Virtual
Como diminuir a
lacuna entre o
formal/informal?
+
Necessidades
-Formal
-Manutenibilidade
-HW em evolução (Moore)
Pessoas
-Desenvolvedores
-IT Geeks
Software
11
Poder de Expressão


A melhoria do processo de desenvolvimento
está fortemente atrelado ao poder de
expressão das linguagens de representação
de programas.
Aumentando seu poder de expressão na
direção dos conceitos existentes no mundo
real, melhoraremos o processo de
desenvolvimento de software.
12
Um Pouco de História






~50 – assembler (código de máquina)
~60 – cobol (linguagem mais próxima
da natural)
~70 – C/Pascal (funções, TADs)
~80 – Smaltalk / C++ (Objetos)
~90 – UML (Modelos)
~00 – MDA (Programação Generativa)
13
UML + MDA

Duas iniciativas da OMG (Object
Management Group) para aumentar o
poder de representação/automação
utilizado no desenvolvimento de
software


Padronização (UML)
Automação (Transformação)
14
UML
15
UML


Linguagem de Modelagem que permite
a representação de conceitos do mundo
real, sob a ótica da orientação a
objetos.
Na prática é o padrão adotado por
desenvolvedores de software.
16
UML

Um modelo em UML pode conter até 9
(v1.5) tipos de diagramas.






Classes
Atividades
Casos de Uso
Sequência
Estado
.......
17
Caso de Uso
18
Classes
19
Entretanto....


UML não foi idealizada como “silver-bullet” .
Existem conceitos difíceis de serem expressos
em UML.


Ex. Tempo
Para solucionar este problema UML
prove mecanismos de extensão, os
chamados Profiles (ou Perfis).
20
MDA
21
MDA

Model Driven Architecture

Determina a especificação de sistemas em
diferentes nívels de abstração de modo
que os modelos mais abstratos possam ser
reutilizados para gerar aplicações em
diferentes plataformas.
Modelo de
Sistema de Vendas
T1
. NET
T2
J2EE
22
Diversidade de Plataformas

O número crescente de plataformas de
execução de SW leva a uma
multiplicação de soluções para cada
plataforma.

Soluções para PDA <> da solução Telefone
Celular pois possuem um conjunto de
restrições (Requisitos Não Funcionais)
diferentes.

Memória, Tamanho da Tela, Performance, etc.
23
November 5, 2015
Alterações nos Requisitos

Mudanças de direcionamento da
empresa.

Surgimento de um Hardware inovador.

Problemas com concorrentes.
24
November 5, 2015
As Soluções

A solução é desenvolvida tendo em
mente estes requisitos.




Ex. PDA => CreateWindow (320 x 100)
Cell => CreateWindow (200 x 100)
PDA => CString
Cell => char[50]
25
November 5, 2015
Como reusar?

Reutilização é um princípio básico das
engenharias pois permite uma utilização
eficiente do conhecimento adquirido na
solução de um problema.

Racionaliza e sistematiza esta solução.
26
November 5, 2015
Constantes

Bem... no nosso caso parece que o uso de
constantes pode resolver isto!



Ex. PDA ou Cell => CreateWindow (WIND_H x
WIN_W)
WIND_H e WIND_W estão definidas em um
arquivo de constantes separadas por um IFDEF,
por exemplo.
27
November 5, 2015
Talvez não!

A quantidade de tais restrições pode ser
grande, levando a criação de um
“arquivo de configuração” em separado.
O gerenciamento de tais arquivos tende
a sem complexo uma vez que estes
representam dados desconexos.
28
November 5, 2015
E quanto a parte dinâmica?

Algumas restrições podem estar
relacionadas à dinâmica da execução do
sistema.
29
November 5, 2015
Reuso de Código


Nos já vimos anteriormente que o reuso
de código não é tão interessante assim
uma vez que não captura a abstração
da solução.
Seria mais interessante reusarmos
Design.
30
November 5, 2015
Sempre foi assim ?

Sim, mas o contexto era outro pois não
existia um fácil acesso a tantos
dispositivos com capacidade de
processamento relevante.
31
November 5, 2015
From Mellor
Evolução
32
November 5, 2015
From Mellor
Reuso
33
November 5, 2015
MDA
34
November 5, 2015
From OMG’s site
OMG - MDA
35
November 5, 2015
MDA


É melhor compreendida como sendo
uma filosofia de desenvolvimento onde
modelos são construído abstraindo-se a
plataforma de execução e,
posteriormente, mapeados para estas.
É uma abordagem para a utilização de
modelos durante o desenvolvimento de
sistemas.
36
November 5, 2015
No Silver Bullet


Não é uma grande novidade mas trás a
tona um conceito que engenheiros de
software vêm pregando a décadas.
Reutilização, Família de Aplicações,
Ferramentas de Suporte ao
Desenvolvimento,....
37
November 5, 2015
Objetivo





Portabilidade
Interoperabilidade
Reutilização
Redução de Custo
Aumento da Qualidade
38
November 5, 2015
Dirigida por Modelo?

Habilita a utilização de modelos para
guiar o entendimento, projeto,
construção, instalação, operação,
manutenção e modificação do SW
39
November 5, 2015
Por que modelos ?

Representam conceitos de mais alto
nível, permitindo a reutilização da
abstração.

Ex. Plantas Arquitetônicas.
40
November 5, 2015
Organização

Modelos em MDA podem pertencer a 3
níveis de abstração de acordo com a
distância em que se encontra da
plataforma de execução.
41
November 5, 2015
Big Picture
CIM
Transformação
PIM
Transformação
PSM
PSM
Plataforma
Plataforma
42
November 5, 2015
CIM



Computation Independent Model
É uma visão do sistema que não
apresenta os detalhes computacionais,
provavelmente por que são
desconhecidos.
É utilizado por especialistas no domínio
da aplicação.
43
November 5, 2015
PIM


Platform Independent Model
É uma visão do sistema focada na
“funcionalidade” de seus elementos,
escondendo os detalhes necessários
para sua execução em uma
determinada plataforma.
44
November 5, 2015
PSM


Platform Specific Model
Representa o PIM levando em
consideração uma plataforma.
45
November 5, 2015
Plataforma?


É o ambiente alvo
onde que contém a
máquina de
execução.
Pode ser um
framework, uma
máquina virtual ou o
HW.
November 5, 2015
46
Transformação



São responsáveis pelo mapeamento dos
conceitos presentes em camadas
distintas no MDA.
Relação x Mapeamento
Manual x Automática
47
November 5, 2015
Um Exemplo



AndroMDA
MDWorkBench
MDArte
48
November 5, 2015
UML + MDA =>Fábrica de
Software
Um Exemplo
49
Lembrando, para ser fábrica...

Sistemas devem ser construídos a partir
de Padrões, Modelos, Arquiteturas,
Frameworks e Ferramentas.




Guiado por Processo
Baseado em Reuso sistemático
Utilizando Linguagens de Domínio
Fazendo Transformações
50
Sistema Bancário (Requistos)
Liberar Talão
Caixa
<<extend>>
Sacar dinheiro
pelo caixa
Autorizar saque
Gerente
Cliente
51
Sistema Bancário (Projeto)
Conta
Saque
Talao
52
Sistema Bancário

Há um requisito adicional:

É necessário ter um controle de acesso no
sistema, ou seja, funcionalidades devem
ser mapeadas para tipos de usuários com
login/senha.
53
Desenvolver vs Reusar


Existem diversas implementações
prontas de Sistemas de Acesso
É decidido pela reutilização de um
componente (framework) que provê os
mecanismo de acesso requerido.


Usuários têm login/senha.
Usuários têm permissões.
54
Ooopss...

No framework adotado não há o
conceito de cliente/caixa....



Só de Usuário do Sistema.
E usuário Administrador
No Sistema Bancário não há o conceito
de Usuário/Administrador!!!
55
Solução


Podemos fazer marcações no Diagrama de
Caso de Uso para identificar quais atores são
candidatos a usuários/administradores.
Estas marcações podem guiar um gerador de
código para a “cola” entre o modelo do
framework e o modelo do sistema.

As marcações fazem parte de um Profile para o
domínio de Controle de Acesso.
56

Marcações !!!!
Guiar Gerador de Código !!!

Já falo nisso

57
Solução
Liberar Talão
<<usuario-sistema>>
Caixa
<<extend>>
Sacar dinheiro
pelo caixa
Autorizar saque <<usuário-adm>>
Gerente
<<usuário-sistema>>
Cliente
58
e ainda através de um
gerador....
Código Gerado pelo
transformador
Conta
Saque
Gerente
Adm
Cliente
Talao
Caixa
Framework
de
Acesso
Usu
LiberarTalao()
59
Profile UML
MARCAÇÕES
60
O que é um UML Profile?

É um conjunto Stereotypes,
TaggedValues, Constraints e ícones que
estendem UML de modo a expressar os
conceitos de um domínio específico
(linguagem do domínio).

Facilita a representação de novos conceitos
em um modelo UML através de marcações
nos elementos de design.
61
Em UML profiles são...
62
Stereotypes

Um estereótipo define como um
elemento de modelo pode ser
estendido.
63
Uso
64
Tagged-Values

São propriedades atreladas aos
estereótipos que permitem o
refinamento de um determinado
conceito.

Ex : Resolution from the previous example
65
Uso
A classe StopWatch é um tipo de Clock com with
resolução igual a 2.
66
Constraints


Definem regras de boa formação para
os conceitos presentes em um profile.
São especificadas por uma descrição
em linguagem natural acompanhada
(opcionalmente) por uma restrição
formal em OCL.

OCL = Object Constraint Language
67
Uso

Um estereótipo só pode especializar
outro estereótipo


generalization.general->forAll(e |
e.oclIsKindOf(Stereotype)) and
generalization.specific->forAll(e |
e.oclIsKindOf(Stereotype))
Os nomes dos estereótipos não podem
conflitar com os existentes no
metamodelo.
68
Table Profile
69
Transformação / Automação
70
XMI


XMI é uma representação em XML de
modelos UML.
Pode ser manipulado por programas
para gerar...


Outro arquivo XMI (Modelo)
Código
71
Resumindo
74
Alguns dados interessantes

Estudo da EDS mostra que MDA pode gerar
até 80% da aplicação final
http://www.omg.org/mda/mda_files/3302_AccelDev_PP.pdf

O ThalesGroup utiliza a abordagem Fabrica
de Software com redução de até 70% no
tempo de desenvolvomento
http://softwarefactories.com/workshops/OOPSLA2005/Papers/Langlois.pdf
75
Perguntas ?
[email protected]
76
Download

Processo de Desenvolvimento