fábrica de software com uml

Post on 05-Jan-2016

73 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Fábrica de Software com UML. Toacy C. Oliveira. Agenda. Motivação Contexto UML/MDA Exemplo Prático UML Profile Definições Exemplo Conclusão. Como SW é feito atualmente?. Processo de Desenvolvimento. Programação. Modelagem. Como SW é feito atualmente?. Processo de Desenvolvimento. - PowerPoint PPT Presentation

TRANSCRIPT

1

Fábrica de Software com UML

Toacy C. Oliveira

2

Agenda Motivação Contexto

UML/MDA Exemplo Prático UML Profile

Definições Exemplo

Conclusão

3

Como SW é feito atualmente?

ProgramaçãoModelagemProcesso de Desenvolvimento

4

Como SW é feito atualmente?

ProgramaçãoModelagemProcesso de Desenvolvimento

5

Como SW é feito atualmente?

ProgramaçãoModelagemProcesso de Desenvolvimento

6

Como SW é feito atualmente?

ProgramaçãoModelagemProcesso de Desenvolvimento

7

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!!

8

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?

9

Fábrica Software? A idéia é simples.

PADRONIZAÇÃO

AUTOMAÇÃO DO PROCESSO DE DESENVOLVIMENTO

PRODUÇÃO EM “SÉRIE”

10

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

11

Desenvolvimento de Software

Mundo VirtualMundo Real

Necessidades-Informal-Processos de Negócio-Time to Market-Usabilidade

Necessidades-Formal-Manutenibilidade-HW em evolução (Moore)

Software

Pessoas-Clientes (com dinheiro!!)-Usuários (sem paciência)

Pessoas-Desenvolvedores-IT Geeks+

Como diminuir a lacuna entre o

formal/informal?

12

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.

13

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)

14

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)

15

UML

16

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.

17

UML Um modelo em UML pode conter

até 9 (v1.5) tipos de diagramas. Classes Atividades Casos de Uso Sequência Estado .......

18

Caso de Uso

19

Classes

20

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).

21

MDA

22

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

. NET J2EE

T1 T2

23 April 20, 2023

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.

24 April 20, 2023

Alterações nos Requisitos

Mudanças de direcionamento da empresa.

Surgimento de um Hardware inovador.

Problemas com concorrentes.

25 April 20, 2023

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]

26 April 20, 2023

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.

27 April 20, 2023

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.

28 April 20, 2023

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.

29 April 20, 2023

E quanto a parte dinâmica?

Algumas restrições podem estar relacionadas à dinâmica da execução do sistema.

30 April 20, 2023

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.

31 April 20, 2023

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.

32 April 20, 2023

Evolução

Fro

m

Mello

r

33 April 20, 2023

Reuso

Fro

m

Mello

r

34 April 20, 2023

MDA

35 April 20, 2023

OMG - MDA

Fro

m

OM

G’s

sit

e

36 April 20, 2023

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.

37 April 20, 2023

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,....

38 April 20, 2023

Objetivo

Portabilidade Interoperabilidade Reutilização Redução de Custo Aumento da Qualidade

39 April 20, 2023

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

40 April 20, 2023

Por que modelos ?

Representam conceitos de mais alto nível, permitindo a reutilização da abstração.

Ex. Plantas Arquitetônicas.

41 April 20, 2023

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.

42 April 20, 2023

Big PictureCIM

PIM

PSM

Plataforma Plataforma

PSM

Transformação Transformação

43 April 20, 2023

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.

44 April 20, 2023

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.

45 April 20, 2023

PSM

Platform Specific Model Representa o PIM levando em

consideração uma plataforma.

46April 20, 2023

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.

47 April 20, 2023

Transformação

São responsáveis pelo mapeamento dos conceitos presentes em camadas distintas no MDA.

Relação x Mapeamento Manual x Automática

48 April 20, 2023

Um Exemplo

AndroMDA MDWorkBench MDArte

49

UML + MDA =>Fábrica de Software

Um Exemplo

50

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

51

Sistema Bancário (Requistos)

Autorizar saque

Sacar dinheiro pelo caixa

<<extend>>

Caixa

Gerente

Cliente

Liberar Talão

52

Sistema Bancário (Projeto)

Conta

Talao

Saque

53

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.

54

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.

55

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!!!

56

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.

57

Marcações !!!! Guiar Gerador de Código !!!

Já falo nisso

58

Solução

Autorizar saque

Sacar dinheiro pelo caixa

<<extend>>

<<usuario-sistema>>Caixa

<<usuário-adm>>Gerente

<<usuário-sistema>>Cliente

Liberar Talão

59

e ainda através de um gerador....

Conta

Talao

Saque

Cliente

Caixa

Gerente

LiberarTalao()

Framework de

Acesso

Código Gerado pelo transformador

Adm

Usu

60

Profile UML

MARCAÇÕES

61

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.

62

Em UML profiles são...

63

Stereotypes

Um estereótipo define como um elemento de modelo pode ser estendido.

64

Uso

65

Tagged-Values

São propriedades atreladas aos estereótipos que permitem o refinamento de um determinado conceito. Ex : Resolution from the previous

example

66

Uso

A classe StopWatch é um tipo de Clock com with resolução igual a 2.

67

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

68

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.

69

Table Profile

70

Transformação / Automação

71

XMI

XMI é uma representação em XML de modelos UML.

Pode ser manipulado por programas para gerar... Outro arquivo XMI (Modelo) Código

74

Resumindo

75

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/OOPSLA-2005/Papers/Langlois.pdf

76

Perguntas ?

toacy@acm.org

top related