MSOO 2008.2 Flexibilidade: Regras de Negcios Dinmicas Customizao de Aplicaes pelos Usurios Finais Agilidade: As solues devem atender a prazos cada vez mais agressivos com reduo do ciclo de desenvolvimento e aumento de produtividade. Interoperabilidade:
Intergrao de Sistemas Distribudos e Heterogneos Evoluo Rpida da Tecnologia da Computao Qualidade: As solues devem possuir um nvel de qualidade cada vezmais elevado para atender as expectativas Reduo de Custos
Como ns podemos construir e integrar aplicaes de modo eficiente? Chave para gerenciar a complexidade das aplicao atuais: Padres de Projeto Frameworks (Infraestruturas) Desenvolvimento Baseado em Componentes (DBC) MDA
Pontos Chave: Reutilizao de artefatos de software Facilitar a manuteno e evoluo Integrao Qualidade O simples uso da OO no garante que obtenhamos sistemas confiveis, robustos, extensveis e reutilizveis. O foco das metodologias de desenvolvimento est na soluo em si (o
que e como) e no em suas justificativas (porque). difcil compartilhar a experincia entre experts e novatos. Aumentar o nvel de reutilizao Padres capturam solues recorrentes e as
nomeiam o Projeto e comunicao em um nvel alto de abstrao Permitem compartilhar experincias bem sucedidas na resoluo de problemas recorrentes; Compem um vocabulrio de alto nvel para discusso de questes relativas ao projeto de sistemas de software; Permitem que os desenvolvedores concentrem seus esforos nos aspectos relacionados ao negcio. Sub-sistema semi-acabado feitos para serem estendidos Voltados para domnios particulares em termos de
conceitos especficos Projeto + Cdigo Projeto Pelo congelamento de certas decises de projeto Cdigo Pelo conjunto de classes abstratas e suas implementaes padro Significante acrscimo de produtividade para aplicaes especficas
Reutilizao Otimizao de utilizao de recursos Programadores experientes Desenvolvimento de frameworks Programadores novatos Fazem aplicativos a partir dos frameworks Impe um processo de desenvolvimento Decises 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 implementao. Separao entre a especificao das operaes do sistema e os detalhes das funcionalidades de uma plataforma especfica.
No ciclo de desenvolvimento tradicional h, de maneira geral, as fases: Levantamento de requisitos, anlise, design, codificao, testes e implementao Geralmente, no final de um projeto, a aplicao desenvolvida nem sempre reflete as definies da fase de anlise e design Existem alteraes que so feitas apenas na codificao Isto se deve ao fato de muitas vezes no haver uma ferramenta automatizada e integrada para acompanhar todo o ciclo e facilitar a anlise de impacto de uma alterao
Em cada fase so produzidos textos e documentos estticos No possuem nenhum recurso de atualizao de modo automtico das alteraes ou melhorias realizadas nas fases anteriores A produtividade cai durante o ciclo de desenvolvimento, principalmente no momento da manuteno da aplicao
As fase no diferem muito A grande diferena est nos artefatos/documentos gerados durante o processo de desenvolvimento Esses documentos so modelos que podem ser "entendidos pelos computadores" Estas informaes no so estticas e possuem uma ligao com a sua fonte Se uma alterao for definida em uma etapa, as demais etapas automaticamente recebero a referida alterao CIM (Modelo Independente de Computao)
PIM (Modelo Independente de Plataforma) Representa a futura aplicao independentemente da implementao tecnolgica No h a preucupao se o cdigo gerado ser Java ou C++, se a base de dados ser Oracle ou DB2 Modelagem do negcio PSM (Modelo Especfico de Plataforma) Modelo voltado para a tecnologia que ser utilizada para gerar o sistema O PIM transformado em um ou mais PSMs
Cdigo (Modelo de Cdigo) Passo final no desenvolvimento que envolve a transformao de cada PSM em cdigo Produtividade Maior prioridade ao PIM Maior produtivade pois o desenvolvedor no precisar se preocupar com detalhes da implementao Maior ateno aos problemas de negcio que a aplicao precisa resolver Portabilidade O PIM pode ser gerado para vrios PSMs
Interoperabilidade Os PSMs devem se comunicar Manuteno e Documentao Do custo total de uma aplicao, 20% est relacionado ao desenvolvimento e 80% a manuteno No adianta gerar cdigo, a ferramenta deve ajudar quando houver a necessidade de mudana
"Andar sobre a gua e desenvolver software a partir de uma especificao so fceis se ambos esto congelados!" Uma boa ferramenta deve manter a sincronia entre os modelos Alto nvel de abstrao (Revoluo MDA) Steretipos Representados com << > > Exemplo
Book uma classe steretipo herda de classe UML Book uma entidade Possui uma representao no banco de dados Entity um novo construtor Herda de classe UML Objetos livres podem ser persistidos Exemplo: tabela livro Steretipos/Tagged Values Interpretados por geradores de cdigo
Exemplo Gerador de modelo para EJB Steretipo entity objetos persistentes ~ Entity Beans Steretipo 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 ttulo "Driving business agility with Model Driven Architecture" O objetivo era avaliar de que forma a MDA pode acelar o desenvolvimento O estudo utilizou a aplicao "Pet Store" desenvolvida pela Sun utilizada para demonstrar padres de projeto A Pet Store uma tpica aplicao de e-commerce Vrios fornecedores de servidores de aplicao a utilizam para ilustrar a compatibilidade de seus produtos com a arquitetura J2EE O estudo foi realizado comparando:
Aplicao gerada manualmente (J2EE Pet Store) Verso da Microsoft com a mesma funcionalidade (.Net Pet Shop) Verso gerada com MDA (J2EE Pet Store utilizando OptimalJ) O grfico mostra que MDA permite desenvolver aplicaes complexas com um esforo manual muito menor Para cada 200 linhas de cdigo JAVA geradas automaticamente foram escritas de 1 a 4 linhas de cdigo manualmente Quanto maior e mais complexo o projeto,
mais evidentes ficam os ganhos na aplicao do MDA A experincia com modelagem UML fundamental MDA deve ser adotado desde o incio do projeto
Toda quebra de paradigma causa polmica Toda evoluo vem acompanhada de ceticismo Ao mesmo tempo, esse processo exige uma reavaliao 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 negcio e querem que a tecnologia seja uma ferramenta Ns queremos fazer as melhores aplicaes e da melhor forma O cdigo importante, mas ele o resultado de uma transformao
O cdigo uma traduo de negcio para determinado ambiente computacional Toda inteligncia est no PIM No futuro, no teremos que nos preocupar com a codificao de uma aplicao Teremos ferramentas capazes de gerar o cdigo quase na sua totalidade
Linha de Produtos de Software Variabilidade Desenvolvimento Baseado em Componentes Programao Orientada a Aspectos Fbricas de Software Linguagem Especfica de Domnio Programa Generativo Web Semntica Ontologias etc
Modelo no serve somente para documentao, mas tm papel fundamental na implementao. Integrao e Interoperabilidade como palavras chave da MDA. Reduo de prazo e custos no desenvolvimento de novas aplicaes
Necessidade de codificao manual reduzida MDA acelera o ciclo de desenvolvimento de aplicaes e padroniza o processo de desenvolvimento MDA tambm aumenta o nvel de reuso nos projetos de desenvolvimento. Ela permite que a soluo evolua independentemente das tecnologias envolvidas na implementao Com o MDA, a documentao do projeto, ou seja, os modelos UML tm maior valor, porque agora o modelo no serve apenas para documentar, e sim para a gerao do prprio sistema As ferramentas no esto totalmente maduras, porm j podem ser utilizadas. Com a evoluo das ferramentas, a tendncia que no futuro MDA seja altamente utilizado no desenvolvimento de sistemas de informao MDA ou XP? A convivncia entre os dois possvel?