350 likes | 557 Views
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
E N D
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
Camada Núcleo MDA - PIM • UnifiedModelingLanguage (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 ObjectFacility (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 MetadataInterchange).
2ª Camada MDA - PSM • XML MetadataInterchange (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). • CommonObjectRequestBrokerArchitecture (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 Non-Programing” 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 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 XP versus XNP(MDD)
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.
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.
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: • 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ção-usuá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).