Desenvolvimento de Software Dirigido a Modelos Agenda: Benefícios Conceitos Pontos de Vistas MDA : CIM,PIM, PSM Transformações e Mapeamentos em MDA Transformações por Metamodelos Transformações com UML Profile Metamodelo MDA Padrões OMG e a Arquitetura MDA Abordagens MDD: OO-Method e AndroMDA O Programa FastStart da OMG Problemas e Desafios dos Processos MDD Almir Buarque Conceitos Iniciais • Modelo Um modelo de um sistema é a sua representação ( especificação) funcional, estrutural e comportamental. • Dirigido a Modelos Porque provê meios de usar modelos para direcionar o curso de entendimento, projeto, construção, distribuição, operação, manutenção e modificação de um sistema. • Arquitetura Arquitetura de um sistema é a especificação de suas partes e conectores, além das regras de interação dessas partes usando os conectores. Conceitos Iniciais • Plataforma Uma plataforma é um conjunto de subsistemas e tecnologias que provê um conjunto coerente de funcionalidade através de interfaces e padrões de uso especificados, que qualquer aplicação (sistema) suportada por essa plataforma pode usar, sem ter que saber detalhes de como essa funcionalidade provida pela plataforma é implementada. • Ponto de Vista Um ponto de vista de um sistema é uma técnica de abstração, usando um conjunto selecionado de conceitos arquiteturais e regras de estruturação que visa focar ou representar um aspecto (característica) dentro desse sistema. Conceitos Iniciais • Arquitetura Dirigida a Modelos (MDA) Arquitetura anunciada pelo grupo OMG em 2001 com o propósito de especificar sistemas através de Modelos e atender, de modo satisfatório, a necessidade cada vez mais emergente de: realizar manutenções em aplicações integrá-las com outros sistemas mudar suas infra-estruturas alterar seus requisitos lidar com a frequente evolução e criação de novas tecnologias Benefícios do Desenvolvimento de Software Dirigido por Modelos • • • • • • • Interoperabilidade Portabilidade Produtividade - Automatização Facilita Manutenção Validação/Verificação Melhor Qualidade do Produto Redução de Custo e Esforço Desenvolvimento Pontos de Vista MDA • CIM – Modelo Independente de Computação - É uma visão do sistema a partir de um ponto de vista (viewpoint) independente de computação. O CIM não mostra detalhes da estrutura dos sistemas, sendo usualmente chamado de modelo de domínio ou modelo de negócio e usa, em sua especificação, um vocabulário familiar aos usuários do domínio (problema) em questão. • PIM – Modelo Independente de Plataforma - Foca na operação do sistema (modelo computacional), mas escondendo os detalhes necessários para implantar esse modelo numa plataforma específica. O PIM é único para o sistema e não muda quando se varia de uma plataforma para outra. Pontos de Vista MDA • PSM – Modelo Específico de Plataforma Este modelo é uma visão do sistema que agrega características e elementos constituintes de uma plataforma específica, contendo informações da tecnologia utilizada na aplicação como a linguagem de programação, os componentes de middleware, a arquitetura de hardware e de software. Para que isso seja possível é necessário o suporte de ferramentas que façam o mapeamendo adequado de uma especificação abstrata (PIM) para uma determinada plataforma. Transformações e Mapeamentos em MDA Outras Transformações Possíveis: PSM => PIM (Engenharia Reversa) PIM => PIM, PSM => PSM (Modelos de mesmo nível ) Implementação => PSM (Engenharia Reversa) PIM => Implementação PIM => CIM ( Eng. Reversa) Transformações por metamodelos • Transformações podem usar diferentes técnicas: UML Profiles, uso de padrões (patterns), marcas (markings), metamodelos e transformações automáticas( algoritmos ) Numa transformação por Metamodelos, como ilustrado na figura, modelo 1 é transformado num modelo 2, usando como entrada do processo o metamodelo A do modelo 1 e produzindo o modelo 2 expresso em seu metamodelo B Regras de mapeamentos precisas devem ser de definidas para que essa transformação seja possível. Transformações com UML Profile • Em 2001, o OMG publicou a UML 2.0: – Action Semantics – Modelagem de processos de negócios, , arquiteturas distribuídas e sistemas heterogêneos – UML Profiles UML Profile é um mecanismo de extensão UML que auxilia a transformação de modelos , por exemplo , de PIM para PSM específicos UML Profiles da OMG Atualmente muitas extensões já estão padronizadas pela OMG, algumas estão em processo de padronização e outras ainda em discussão O Metamodelo MDA Padrões OMG e a Arquitetura MDA Camada Núcleo MDA - PIM • Unified Modeling Language (UML): padrão que define uma linguagem de modelagem geral orientada a objetos para especificação, construção e documentação de artefatos de sistemas complexos de software. • Common Warehouse Metamodel (CWM): padrão para armazenamento de dados que permite fácil manipulação dos mesmos entre ferramentas e plataformas de armazenamento em ambientes heterogêneos distribuídos. • Meta Object Facility (MOF): padrão que define uma linguagem abstrata para definição de linguagens de modelagem (metamodelos). Ela é utilizada para descrever modelos da UML, CWM e do próprio MOF, além de definir o formato de intercâmbio para modelos, base do padrão XMI (XML Metadata Interchange). 2ª Camada MDA - PSM • XML Metadata Interchange (XMI): padrão para o intercâmbio de modelos através do mapeamento da linguagem definida pelo padrão MOF para o padrão XML do World Wide Web Consortium (W3C). • Common Object Request Broker Architecture (CORBA): arquitetura que estabelece e simplifica a troca de dados entre sistemas distribuídos. • Na camada PSM, pode-se ter também outros padrões como JAVA EJB, Microsoft . NET, etc. 3ª Camada MDA - Serviços • Na camada mais externa, são exibidos os serviços que a maioria dos domínios de aplicações necessitam: – Sistemas críticos de segurança, E-commerce, Financeiro, Saúde, Educação,etc... • Esses serviços podem ser de segurança, persistência, controle de transações, tratamentos de eventos, diretórios, etc. Abordagens MDD • OO-Method • AndroMDA OO-Method Breve Histórico • A primeira versão do OO-Method foi introduzida em 1992 através da tese de PhD de Oscar Pastor, juntamente com a da linguagem formal de especificação de sistemas de informação – OASIS • O método cobre todas a fases do processo de desenvolvimento de software, das fases iniciais de obtenção de requisitos, projeto e geração do produto final de software numa plataforma específica. • O centro do desenvolvimento do software dirigido por modelos do OO-Method é o Esquema (Modelo) Conceitual , conforme afirmação do Prof. Antoni Olivé (2005) “Para desenvolver um sistema de informação é necessário e suficiente definir seu esquema conceitual” OO-Method • Toni Morgan, defende a idéia de usar “ Extreme NonPrograming” como argumento de que a principal atividade no desenvolvimento de software é modelagem, e não programação, pois modelagem está no espaço do problema, enquanto programar está no espaço da solução. • O objetivo final é tornar verdadeira a sentença: “ Modelo é o Código“, ao invés de “ o Código é o Modelo “ • Modelo Conceitual Executável: representa de modo completo e consistente todos os aspectos estáticos, dinânicos e de interação (interface usuário) de um sistema – é compilado através de um compilador de Modelos. XP versus XNP(MDD) XP XNP Key skill programming analysis Rapid delivery increment every 2 weeks complete system in 2 hours Maintenance change code, re-test change model, regenerate Quality assurance repeated test/debug, skilled programmers architecture, automation Human view program code (only) model extracts (various formats) Motto The code is the model The model is the code O processo básico de transformação Trasnformações e Mapeamentos MDA X OO-Method Modelos OO-Method Modelo Objeto: Diagrama de Classes: • Classes • • – Atributos – Precondições e Serviços – Restrições de Integridade Relacionamento entre as Classes – Associação, Agregação e Composição – Herança Agentes Modelo Dinâmico: • • Diagrama de Transição de Estado – Ciclo de vida dos objetos Diagrama de Interação de Objeto - Especifica as interações válidas entre os objetos através das transações, operações e gatilhos Modelos OO-Method • Modelo Funcional O modelo funcional especifica os aspectos funcionais do sistema através de: – Descrição de como a execução dos eventos mudam o valor dos atributos das classes. – Acesso a dados de acordo com o Modelo Objeto – Definição de lógica seqüencial, Manipulação de classes, objetos e relacionamentos – Uso de operadores lógicos, aritméticos • Modelo de Apresentação O modelo da apresentação especifica os requisitos de Interface de Usuário, modelando uma interface abstrata que é independente de plataforma ou dispositivo. Modelo de Apresentação OLIVANOVA • OO-Method é implementado através do produto OlivaNova da Care Technologies, composto de duas ferramentas: O modelador que permite: – – – – – – Modelar objetos e negócios; Modelar dados; Modelar integração; Modelar sistemas legados; Modelar regras e limitações; Definir conceitualmente interfaces do usuário; A máquina de transformação que implementa todo o processo de compilação de modelos do OO-Method, gerando código fonte na plataforma de destino. OLIVANOVA x Outras Ferramentas MDD Borland Together Compuware OptimalJ® .NET® 1.1/2.0 Target Platform yes J2EE™ Target Platform COM+ Target Platform Multi Database (any RDBMS) Bussines Logic in Model no IBM Rational Software Architect yes Sparx Systems Enterprise Architect yes OLIVANOVA The Programming Machine yes yes to some extent* yes yes no yes no yes yes yes yes yes to some extent* yes yes no no no no yes Model Driven Application generation 100%: Complete Application source code, Database Script, Full Documentation, On-Line Help Model Driven GUI Generation: Rich Client and/or Web Client Model Driven Generation of Data Access Layer Model Driven Generation of User Roles, User Authentication and Access Rights no no no no yes no no no no yes no no no no yes no no no no yes Model Driven Generation of Role specific Views 3rd Party / Legacy Systems Integration (e.g. SAP) XMI import/export Eclipse® support no no no no yes no no no no yes yes yes yes yes yes yes yes yes yes yes yes no yes yes yes Visual Studio 2005® support AndroMDA • Ferramenta MDA Open Source (www.andromda.org/ ) • Está desenvolvida sobre Eclipse. • Suporta arquiteturas como Spring, EJB, .Net, Hibernate, Struts, WebServices. • É possível gerar componentes para qualquer linguagem: Java, .Net, HTML, PHP, C++, etc • Pode ser utilizada pelos servidores de aplicação Jboss e TomCat. • suporta UML2.0. AndroMDA Cartuchos: São Plugins que AndroMDA utiliza para fazer a transformação de um modelo PIM > PSM em várias plataformas diferentes . - Para cada plataforma(tecnologia) PSM alvo é necessário o desenvolvimento de um cartucho que basicamente consiste na criação de um UML Profile . A ferramenta de melhor aceitação para modelar em UML e fazer a importação do metamodelo UML em XMI é a MagicDraw. Porém outras ferramentas podem ser utilizadas: Poseidon UML, Argo UML, Jude UML, Visual UML, etc. Versão 4.0 (Preview) do AndroMDA – permite a criação e utilização de metamodelos no padrão EMF (Eclipse Model Framework) , possibilitando transformação de modelos PIM( não apenas UML) para modelos PSM , além de geração de código fonte. – ATL ( Atlas Transformation Language) – Linguagem para transformações modelo-modelo (similar a QVT ) – MOFScript para transformações model-text. • OpenMDX( www.openmdx.org): principal concorrente open source do AndroMDA Lições Aprendidas na adoção de soluções MDA Muitas organizações que, nos últimos anos, vêm utilizando com sucesso soluções MDA, perceberam que um conjunto de práticas e passos consistentes devem ser levados em conta em se adotar um processo MDD automatizado: 1. 2. 3. 4. 5. 6. Examinar os modelos atualmente usados na empresa no seu processo de desenvolvimento e a conexão/correlação semântica entre os elementos desses modelos. Identificar as transformações candidatas para automação Especificar (documentar) os requisitos dessas transformações Criar os UML Profiles necessários Desenvolver o código da(s)s transformação(coes) Esboçar documentos de uso, empacotar e distribuir O Programa FastStart da OMG • Recentemente, o grupo OMG lançou o programa “FastStart” para ajudar as organizações aprenderem sobre MDA e aplicar MDA nas arquiteturas de seus sistemas, na integração dos sistemas e nos seus processos de desenvolvimento de software. • Durante programa FastStart , a organização recebe consultores da OMG para realizarem as seguintes atividades: – Análise inicial MDA – Revisão da Arquitetura Empresarial MDA – Plano de Transição MDA – Seminários Executivos MDA – Prática MDA • Essas atividades geralmente duram 5 semanas e visam capacitar a empresa em MDA para que ela própria, sem ajuda de provedores externos, desenvolva seu processo MDA/MDD Problemas e Desafios dos Processos MDD • Suporte a modelos orientados a “goals”, negócios, agentes e aspectos. • Elevação dos níveis de abstrações dos modelos • Melhor precisão semântica dos modelos em relação às características estáticas, dinâmicas e de apresentação (interaçãousuário) dos sistemas; • Melhores mapeamentos entre os modelos; • Melhor transformação automática de modelos (automação); • Melhor suporte à Validação de Modelos; • Melhor integração com as plataformas específicas (PSM); • Melhor e maior percentagem de código fonte gerado; • Melhor suporte à rastreabilidade; • Melhor suporte à engenharia reversa • Suporte à computação autonômica • Melhor Suporte a Testes Dirigido a Modelos • Suporte a requisitos não-funcionais Considerações Finais • O Processo MDD ainda está na sua infância – Nem as linguagens (modelos) e nem as ferramentas se desenvolveram o suficiente para concretizar todas as suas promessas feitas. – O processo MDA, padronizado pela OMG, é apenas uma referência e pode suportar qualquer outro processo específico de desenvolvimento de software existente (RUP, XP, OPEN, Agentes, Aspectos, Formais, etc.) desde que se adapte e seja dado um foco especial em modelos e suas transformações. – Especialistas em Engenharia de Software e a própria OMG, apostam que MDD/MDA será o processo mais utilizado pelas Empresas nos próximos anos (futuro). FIM