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?