Fbrica de Software com UML Toacy C Oliveira
Fábrica de Software com UML Toacy C. Oliveira 1
Agenda n n Motivação Contexto n n n Exemplo Prático UML Profile n n n 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. . . n Como a 30/40 anos atrás !!!! Utilizando um batalhão de pessoas. . n PESSOAS = PROBLEMAS n n 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? n Que tal expandirmos alguns conceitos já existentes? n n n 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? n A idéia é simples. n n n PADRONIZAÇÃO AUTOMAÇÃO DO PROCESSO DE DESENVOLVIMENTO PRODUÇÃO EM “SÉRIE” 9
Como ? n Sistemas devem ser construídos a partir de Padrões, Modelos, Arquiteturas, Frameworks e Ferramentas. n n 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 n n 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 n n n ~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 n Duas iniciativas da OMG (Object Management Group) para aumentar o poder de representação/automação utilizado no desenvolvimento de software n n Padronização (UML) Automação (Transformação) 14
UML 15
UML n n 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 n Um modelo em UML pode conter até 9 (v 1. 5) tipos de diagramas. n n n Classes Atividades Casos de Uso Sequência Estado. . . . 17
Caso de Uso 18
Classes 19
Entretanto. . n n UML não foi idealizada como “silver-bullet”. Existem conceitos difíceis de serem expressos em UML. n n Ex. Tempo Para solucionar este problema UML prove mecanismos de extensão, os chamados Profiles (ou Perfis). 20
MDA 21
MDA n Model Driven Architecture n 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 T 1. NET T 2 J 2 EE 22
Diversidade de Plataformas n O número crescente de plataformas de execução de SW leva a uma multiplicação de soluções para cada plataforma. n Soluções para PDA <> da solução Telefone Celular pois possuem um conjunto de restrições (Requisitos Não Funcionais) diferentes. n Memória, Tamanho da Tela, Performance, etc. 23 29 October 2020
Alterações nos Requisitos n Mudanças de direcionamento da empresa. n Surgimento de um Hardware inovador. n Problemas com concorrentes. 24 29 October 2020
As Soluções n A solução é desenvolvida tendo em mente estes requisitos. n n Ex. PDA => Create. Window (320 x 100) Cell => Create. Window (200 x 100) PDA => CString Cell => char[50] 25 29 October 2020
Como reusar? n Reutilização é um princípio básico das engenharias pois permite uma utilização eficiente do conhecimento adquirido na solução de um problema. n Racionaliza e sistematiza esta solução. 26 29 October 2020
Constantes n Bem. . . no nosso caso parece que o uso de constantes pode resolver isto! n n n Ex. PDA ou Cell => Create. Window (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 29 October 2020
Talvez não! n 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 29 October 2020
E quanto a parte dinâmica? n Algumas restrições podem estar relacionadas à dinâmica da execução do sistema. 29 29 October 2020
Reuso de Código n n 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 29 October 2020
Sempre foi assim ? n Sim, mas o contexto era outro pois não existia um fácil acesso a tantos dispositivos com capacidade de processamento relevante. 31 29 October 2020
From Mellor Evolução 32 29 October 2020
From Mellor Reuso 33 29 October 2020
MDA 34 29 October 2020
From OMG’s site OMG - MDA 35 29 October 2020
MDA n n É 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 29 October 2020
No Silver Bullet n n 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 29 October 2020
Objetivo n n n Portabilidade Interoperabilidade Reutilização Redução de Custo Aumento da Qualidade 38 29 October 2020
Dirigida por Modelo? n 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 29 October 2020
Por que modelos ? n Representam conceitos de mais alto nível, permitindo a reutilização da abstração. n Ex. Plantas Arquitetônicas. 40 29 October 2020
Organização n 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 29 October 2020
Big Picture CIM Transformação PSM Plataforma 42 29 October 2020
CIM n n n 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 29 October 2020
PIM n n 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 29 October 2020
PSM n n Platform Specific Model Representa o PIM levando em consideração uma plataforma. 45 29 October 2020
Plataforma? n n É o ambiente alvo onde que contém a máquina de execução. Pode ser um framework, uma máquina virtual ou o HW. 29 October 2020 46
Transformação n n n São responsáveis pelo mapeamento dos conceitos presentes em camadas distintas no MDA. Relação x Mapeamento Manual x Automática 47 29 October 2020
Um Exemplo n n n Andro. MDA MDWork. Bench MDArte 48 29 October 2020
UML + MDA =>Fábrica de Software Um Exemplo 49
Lembrando, para ser fábrica. . . n Sistemas devem ser construídos a partir de Padrões, Modelos, Arquiteturas, Frameworks e Ferramentas. n n 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 n Há um requisito adicional: n É 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 n n Existem diversas implementações prontas de Sistemas de Acesso É decidido pela reutilização de um componente (framework) que provê os mecanismo de acesso requerido. n n Usuários têm login/senha. Usuários têm permissões. 54
Ooopss. . . n No framework adotado não há o conceito de cliente/caixa. . n n n 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 n n 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. n As marcações fazem parte de um Profile para o domínio de Controle de Acesso. 56
n Marcações !!!! Guiar Gerador de Código !!! n Já falo nisso n 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 Liberar. Talao() 59
Profile UML MARCAÇÕES 60
O que é um UML Profile? n É um conjunto Stereotypes, Tagged. Values, Constraints e ícones que estendem UML de modo a expressar os conceitos de um domínio específico (linguagem do domínio). n 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 n Um estereótipo define como um elemento de modelo pode ser estendido. 63
Uso 64
Tagged-Values n São propriedades atreladas aos estereótipos que permitem o refinamento de um determinado conceito. n Ex : Resolution from the previous example 65
Uso A classe Stop. Watch é um tipo de Clock com with resolução igual a 2. 66
Constraints n n 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. n OCL = Object Constraint Language 67
Uso n Um estereótipo só pode especializar outro estereótipo n n generalization. general->for. All(e | e. ocl. Is. Kind. Of(Stereotype)) and generalization. specific->for. All(e | e. ocl. Is. Kind. Of(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 n n XMI é uma representação em XML de modelos UML. Pode ser manipulado por programas para gerar. . . n n Outro arquivo XMI (Modelo) Código 71
Resumindo 74
Alguns dados interessantes n Estudo da EDS mostra que MDA pode gerar até 80% da aplicação final http: //www. omg. org/mda_files/3302_Accel. Dev_PP. pdf n O Thales. Group utiliza a abordagem Fabrica de Software com redução de até 70% no tempo de desenvolvomento http: //softwarefactories. com/workshops/OOPSLA 2005/Papers/Langlois. pdf 75
Perguntas ? toacy@acm. org 76
- Slides: 74