MSOO 2008.2

Flexibilidade:
◦ Regras de Negócios Dinâmicas
◦ Customização de Aplicações pelos Usuários Finais

Agilidade:
◦ As soluções devem atender a prazos cada vez mais agressivos com
redução do ciclo de desenvolvimento e aumento de produtividade.

Interoperabilidade:
◦ Intergração de Sistemas Distribuídos e Heterogêneos
◦ Evolução Rápida da Tecnologia da Computação

Qualidade:
◦ As soluções devem possuir um nível de qualidade cada vezmais elevado
para atender as expectativas

Redução de Custos


Como nós podemos construir e integrar aplicações de modo
eficiente?
Chave para gerenciar a complexidade das aplicação atuais:
◦
◦
◦
◦

Padrões de Projeto
Frameworks (Infraestruturas)
Desenvolvimento Baseado em Componentes (DBC)
MDA
Pontos Chave:
◦
◦
◦
◦
Reutilização de artefatos de software
Facilitar a manutenção e evolução
Integração
Qualidade




O simples uso da OO não garante que
obtenhamos sistemas confiáveis, robustos,
extensíveis e reutilizáveis.
O foco das metodologias de
desenvolvimento está na solução em si (o
que e como) e não em suas justificativas
(porque).
É difícil compartilhar a experiência entre
experts e novatos.
Aumentar o nível de reutilização




Padrões capturam soluções recorrentes e as
nomeiam o Projeto e comunicação em um nível alto
de abstração
Permitem compartilhar experiências bem sucedidas
na resolução de problemas recorrentes;
Compõem um vocabulário de alto nível para
discussão de questões relativas ao projeto de
sistemas de software;
Permitem que os desenvolvedores concentrem seus
esforços nos aspectos relacionados ao negócio.

Sub-sistema semi-acabado feitos para serem
estendidos
◦ Voltados para domínios particulares em termos de
conceitos específicos

‘Projeto’ + ‘Código’
◦ Projeto
 Pelo congelamento de certas decisões de projeto
◦ Código
 Pelo conjunto de classes abstratas e suas implementações
padrão

Significante acréscimo de produtividade para
aplicações específicas
◦ Reutilização

Otimização de utilização de recursos
◦ Programadores experientes
 Desenvolvimento de frameworks
◦ Programadores novatos
 Fazem aplicativos a partir dos frameworks

Impõe um processo de desenvolvimento
◦ Decisões de projeto embutidas nos frameworks

Complexidade de desenvolvimento




Infraestrutura para desenvolvimento de
software definido pela OMG
Diferencial está no fato do desenvolvimento
ser baseadonas atividades de modelagem
Forma de desvincular a arquitetura do
sistema da sua implementação.
Separação entre a especificação das
operações do sistema e os detalhes das
funcionalidades de uma plataforma
específica.

No ciclo de desenvolvimento tradicional há, de maneira geral, as
fases:
◦ Levantamento de requisitos, análise, design, codificação, testes e
implementação

Geralmente, no final de um projeto, a aplicação desenvolvida nem
sempre reflete as definições da fase de análise e design
◦ Existem alterações que são feitas apenas na codificação
◦ Isto se deve ao fato de muitas vezes não haver uma ferramenta
automatizada e integrada para acompanhar todo o ciclo e facilitar a
análise de impacto de uma alteração

Em cada fase são produzidos textos e documentos estáticos
◦ Não possuem nenhum recurso de atualização de modo automático das
alterações ou melhorias realizadas nas fases anteriores

A produtividade cai durante o ciclo de desenvolvimento,
principalmente no momento da manutenção da aplicação




As fase não diferem muito
A grande diferença está nos artefatos/documentos
gerados durante o processo de desenvolvimento
Esses documentos são modelos que podem ser
"entendidos pelos computadores"
Estas informações não são estáticas e possuem
uma ligação com a sua fonte
◦ Se uma alteração for definida em uma etapa, as demais
etapas automaticamente receberão a referida alteração


CIM (Modelo Independente de Computação)
PIM (Modelo Independente de Plataforma)
◦ Representa a futura aplicação independentemente da
implementação tecnológica
 Não há a preucupação se o código gerado será Java ou C++, se a base
de dados será Oracle ou DB2
◦ Modelagem do negócio

PSM (Modelo Específico de Plataforma)
◦ Modelo voltado para a tecnologia que será utilizada para gerar o
sistema
◦ O PIM é transformado em um ou mais PSM´s

Código (Modelo de Código)
◦ Passo final no desenvolvimento que envolve a transformação de
cada PSM em código

Produtividade
◦ Maior prioridade ao PIM
◦ Maior produtivade pois o desenvolvedor não precisará se preocupar com detalhes da
implementação
◦ Maior atenção aos problemas de negócio que a aplicação precisa resolver

Portabilidade
◦ O PIM pode ser gerado para vários PSM´s

Interoperabilidade
◦ Os PSM´s devem se comunicar

Manutenção e Documentação
◦ Do custo total de uma aplicação, 20% está relacionado ao desenvolvimento e 80% a
manutenção

Não adianta gerar código, a ferramenta deve ajudar quando houver a necessidade de mudança

"Andar sobre a água e desenvolver software a partir de uma especificação são fáceis se ambos
estão congelados!"
◦ Uma boa ferramenta deve manter a sincronia entre os modelos

Alto nível de abstração (Revolução MDA)

Stereótipos
◦ Representados com << > >

Exemplo
◦ Book é uma classe
 stereótipo herda de classe UML
◦ Book é uma entidade
 Possui uma representação no banco de dados
◦ Entity é um novo construtor
 Herda de classe UML
◦ Objetos livres podem ser persistidos
 Exemplo: tabela livro

Stereótipos/Tagged Values
◦ Interpretados por geradores de código

Exemplo
◦ Gerador de modelo para EJB
◦ Stereótipo entity
 objetos persistentes ~ Entity Beans
◦ Stereótipo PK
 Marca atributos como Primary Key



Open-source:
http://team.andromda.org
Suporta XMI, OCL
EJB, Hibernate, Spring, XML
Schema, Java, Struts, OCL
translations/queries






Em junho de 2003, EDS publicou um estudo de caso com o
título "Driving business agility with Model Driven
Architecture"
O objetivo era avaliar de que forma a MDA pode acelar o
desenvolvimento
O estudo utilizou a aplicação "Pet Store" desenvolvida pela
Sun utilizada para demonstrar padrões de projeto
A Pet Store é uma típica aplicação de e-commerce
Vários fornecedores de servidores de aplicação a utilizam
para ilustrar a compatibilidade de seus produtos com a
arquitetura J2EE
O estudo foi realizado comparando:
◦ Aplicação gerada manualmente (J2EE Pet Store)
◦ Versão da Microsoft com a mesma funcionalidade (.Net Pet Shop)
◦ Versão gerada com MDA (J2EE Pet Store utilizando OptimalJ)


O gráfico mostra que MDA permite desenvolver aplicações complexas com um esforço
manual muito menor
Para cada 200 linhas de código JAVA geradas automaticamente foram escritas de 1 a 4
linhas de código manualmente



Quanto maior e mais complexo o projeto,
mais evidentes ficam os ganhos na
aplicação do MDA
A experiência com modelagem UML é
fundamental
MDA deve ser adotado desde o início do
projeto







Toda quebra de paradigma causa polêmica
Toda evolução vem acompanhada de ceticismo
Ao mesmo tempo, esse processo exige uma reavaliação se o que
fizemos e como fazemos pode ser melhorado
Quando olhamos por esse ângulo, vemos que estamos evoluindo
As empresas querem se concentrar no seu negócio e querem que a
tecnologia seja uma ferramenta
Nós queremos fazer as melhores aplicações e da melhor forma
O código é importante, mas ele é o resultado de uma transformação
◦ O código é uma tradução de negócio para determinado ambiente
computacional
◦ Toda inteligência está no PIM
◦ No futuro, não teremos que nos preocupar com a codificação de uma
aplicação
◦ Teremos ferramentas capazes de gerar o código quase na sua totalidade










Linha de Produtos de Software
Variabilidade
Desenvolvimento Baseado em Componentes
Programação Orientada a Aspectos
Fábricas de Software
Linguagem Específica de Domínio
Programa Generativo
Web Semântica
Ontologias
etc









Modelo não serve somente para documentação, mas têm papel fundamental
na implementação.
Integração e Interoperabilidade como palavras chave da MDA.
Redução de prazo e custos no desenvolvimento de novas aplicações
Necessidade de codificação manual reduzida
MDA acelera o ciclo de desenvolvimento de aplicações e padroniza o
processo de desenvolvimento
MDA também aumenta o nível de reuso nos projetos de desenvolvimento. Ela
permite que a solução evolua independentemente das tecnologias envolvidas
na implementação
Com o MDA, a documentação do projeto, ou seja, os modelos UML têm
maior valor, porque agora o modelo não serve apenas para documentar, e
sim para a geração do próprio sistema
As ferramentas não estão totalmente maduras, porém já podem ser
utilizadas. Com a evolução das ferramentas, a tendência é que no futuro
MDA seja altamente utilizado no desenvolvimento de sistemas de informação
MDA ou XP? A convivência entre os dois é possível?
Download

MDA