Desenvolvimento Automático de Sistemas Apresentação do TFC Coordenador: Prof. Alberto Silva João Saraiva, Nº 49673 [email protected] Sumário • Apresentação do ProjectIT, do ProjectIT-MDD e do ProjectIT-Studio • O problema da integração de ferramentas do ProjectITStudio • Proposta de solução: Eclipse.NET • Adaptação do Eclipse.NET para o ProjectIT-Studio • Conversão do ProjectIT-MDD para a nova plataforma • Visão para o futuro do Eclipse.NET e do ProjectITStudio IST, 28/07/2005 Desenvolvimento Automático de Sistemas 2 ProjectIT IST, 28/07/2005 Desenvolvimento Automático de Sistemas 3 ProjectIT • É um programa de investigação do Grupo de Sistemas de Informação (GSI) • O objectivo é a análise, integração e suporte de boas práticas na gestão e implementação de projectos de TI • A motivação é: “Como melhorar a qualidade e produtividade dos projectos de TI?” • Implementado sobre a plataforma .NET IST, 28/07/2005 Desenvolvimento Automático de Sistemas 4 Âmbito do ProjectIT (1/2) IST, 28/07/2005 Desenvolvimento Automático de Sistemas 5 Âmbito do ProjectIT (2/2) IST, 28/07/2005 Desenvolvimento Automático de Sistemas 6 ProjectIT-Studio IST, 28/07/2005 Desenvolvimento Automático de Sistemas 7 ProjectIT-Studio • Um dos objectivos do ProjectIT • Orientada à produtividade • Tem muitos sistemas (e ferramentas correspondentes): ProjectIT-MDD, ProjectITRSL, etc. • De modo a elevar o nível de produtividade, estas ferramentas devem poder trabalhar juntas IST, 28/07/2005 Desenvolvimento Automático de Sistemas 8 O problema da integração • Como já foi referido, o ProjectIT-Studio tem muitas ferramentas • Elas comunicam umas com as outras – Por ficheiros (XMI, etc.) Mas... • Não colaboram! – A equipa do ProjectIT não tem uma base comum em que basear o seu trabalho (excepto, claro, a plataforma .NET...) IST, 28/07/2005 Desenvolvimento Automático de Sistemas 9 Solução proposta: Eclipse.NET • Baseada na plataforma Eclipse (em Java) • Conversão para .NET, com: – Java Language Conversion Assistant, para converter código fonte – IKVM.NET, para converter bytecode (Java) para MSIL (.NET) • Porque, em .NET, ainda não existe nenhuma plataforma para integração de ferramentas IST, 28/07/2005 Desenvolvimento Automático de Sistemas 10 Eclipse • O Eclipse não é apenas um IDE: é uma ferramenta para criar IDEs – “Tool for creating tools” • A ideia é: “A aplicação já existe. O que fazemos é adicionar-lhe comportamento.” • No caso do ProjectIT-Studio, o comportamento a adicionar é o das suas ferramentas IST, 28/07/2005 Desenvolvimento Automático de Sistemas 11 Conceitos da plataforma Eclipse • Plataforma: base da plataforma. Carrega módulos e gere todos os aspectos da plataforma; • Módulo: unidade mais pequena de comportamento que se pode adicionar à plataforma. A plataforma tem a sua funcionalidade (IDE Java, C, C++, etc.) devido ao conjunto de módulos fornecidos; • Ponto de Extensão e Extensão: serve como interface entre módulos (i.e., é o mecanismo que permite aos módulos comunicarem entre si). • Perfil: Serve apenas para customizar a aparência da plataforma (com logotipos, imagens, texto para a janela de About, etc.) IST, 28/07/2005 Desenvolvimento Automático de Sistemas 12 Plataforma • A Plataforma é responsável por: – Construir o Registo de Módulos (com toda a informação sobre todos os módulos disponíveis e sobre todas as extensões e pontos de extensão) – Activar módulos, quando estes forem necessários – Fornece todos os mecanismos para comunicação entre módulos, armazenamento e carregamento de preferências de módulos, etc. IST, 28/07/2005 Desenvolvimento Automático de Sistemas 13 Módulos • Um módulo é definido por: – Um ficheiro de manifesto (Plugin.xml) – 0 ou mais bibliotecas (em MSIL) • Estas bibliotecas podem fazer tudo, desde aceder a bases de dados (como o MS SQL Server) a implementar um modelo de domínio (como uma aplicação Model-ViewController) • Os módulos podem-se relacionar entre si: – Um módulo pode importar outros módulos – Um módulo pode fornecer Extensões para Pontos de Extensão de outros módulos IST, 28/07/2005 Desenvolvimento Automático de Sistemas 14 Importações entre Módulos Este exemplo ilustra a relação de importação entre módulos (não são representados Pontos de Extensão, para simplicidade da figura) IST, 28/07/2005 Desenvolvimento Automático de Sistemas 15 Pontos de Extensão (e Extensões) Como funcionam os Pontos de Extensão: • O Módulo 1 (M1) declara o Ponto de Extensão (PE) 1 (PE1), PE2 e PE3 • O Módulo 2 (M2) “contribui” para PE1 e PE2 • M2 declara PE4 e PE5 • Outros Módulos podem declarar outros PEs, e podem também contribuir para outros PEs • Os Módulos podem também contribuir para Pontos de Extensão que tenham sido declarados por si próprios IST, 28/07/2005 Desenvolvimento Automático de Sistemas 16 Os Módulos da plataforma Eclipse IST, 28/07/2005 Desenvolvimento Automático de Sistemas 17 Porque não implementar de raiz? • O Eclipse é fortemente baseado em padrões de desenho: – Proxy e Bridge, para aceder ao sistema de ficheiros – Composite, para representar o sistema de ficheiros e para representar a hierarquia de widgets do SWT – Strategy, para posicionar automaticamente os widgets do SWT – ... • O Eclipse já existe há algum tempo – É o resultado do know-how já adquirido pela sua equipa de desenvolvimento – Essa equipa já encontrou (e resolvou) muitos problemas • Não re-inventamos a roda; apenas adaptamo-la a um novo mundo – Toma-se partido das correcções que já foram feitas à plataforma – Há muita documentação sobre a versão Java da plataforma na Internet – A vantagem da utilização de padrões de desenho: os programadores (novas adições à equipa de desenvolvimento) podem aprender rapidamente os conceitos da plataforma IST, 28/07/2005 Desenvolvimento Automático de Sistemas 18 O que foi feito na conversão... • Adaptação do mecanismo de ClassLoaders (do Java) para a plataforma .NET • Correcções ao código que o JLCA não conseguiu converter correctamente e utilização das bibliotecas .NET quando possível • Utilização de Propriedades vs. Getters/Setters • Utilização da ferramenta Log4NET IST, 28/07/2005 Desenvolvimento Automático de Sistemas 19 Adaptação para o ProjectIT-Studio • O Eclipse.NET foi adaptado para obtermos o ProjectITStudio: – Criou-se um Perfil “ProjectIT.Studio” para alterar a aparência da plataforma – Cada uma das suas ferramentas tornar-se-à 1 (ou mais) módulos – As ferramentas trabalharão umas com as outras, recorrendo aos pontos de extensão e à importação de módulos – Haverá apenas uma aplicação para o utilizador manusear, em vez de termos n aplicações (das ferramentas) IST, 28/07/2005 Desenvolvimento Automático de Sistemas 20 Visão do futuro ProjectIT-Studio (Os pontos de extensão não são representados, para simplicidade da figura) IST, 28/07/2005 Desenvolvimento Automático de Sistemas 21 Para além do ProjectIT... • A plataforma Eclipse.NET pode também ser utilizada fora do ProjectIT – O Eclipse é muito utilizado no contexto do Java – Muitas companhias lançam os seus produtos como módulos para o Eclipse • Planeia-se disponibilizar o código para a comunidade .NET – Para fazer a plataforma evoluir • Com novas ideias • Com novos módulos e actualização dos já existentes – Para que o esforço de manutenção da plataforma não recaia sobre a equipa do ProjectIT IST, 28/07/2005 Desenvolvimento Automático de Sistemas 22 ProjectIT-MDD IST, 28/07/2005 Desenvolvimento Automático de Sistemas 23 ProjectIT-MDD • Baseado em dois TFCs anteriores: – 2003/2004 “The XIS CASE Tool” (Raul Queiroga) – 2001/2003 “Projecto XIS – Abordagem e Ferramenta de Desenvolvimento (Case Tool e UML)” (Gonçalo Lemos e Tiago Matias) • Ferramenta XIS-Tool • Desenvolvimento baseado em modelos (MDD), com o Perfil ProjectIT/UML IST, 28/07/2005 Desenvolvimento Automático de Sistemas 24 ProjectIT-MDD Conceitos: • Arquitecturas (Architecture) – Camadas de arquitectura (ArchitectureLayer) • Processos de Geração (GenerativeProcess) – Passos de geração (GenerativeStep) • Templates • Modelos (SystemModel) IST, 28/07/2005 Desenvolvimento Automático de Sistemas 25 Conceitos do ProjectIT-MDD IST, 28/07/2005 Desenvolvimento Automático de Sistemas 26 ProjectIT-MDD – Abordagem (1/2) IST, 28/07/2005 Desenvolvimento Automático de Sistemas 27 ProjectIT-MDD – Abordagem (2/2) Final Inf. System (Software Artifacts) produces IS modeling Software architecture Template definition produces produces inputs Models (XIS/UML and XIS/XML) inputs Generative Programming Techniques (T3 transformation) Architecture templates (e.g., J2EE, .NET) XIS principles based on models specification XIS and MDA terms PIM IST, 28/07/2005 based on generative programming techniques component-based architecture-centric PIM2PSM mappings PSM Desenvolvimento Automático de Sistemas 28 Desenvolvimento do XIS-Tool • Desenvolvimento da ferramenta XIS-Tool para WinForms: – Criação de um modelo UML (no perfil XIS/UML) da ferramenta – Criação dos templates para a arquitectura WinForms.NET – Com o modelo e os templates, geração automática da ferramenta • A ferramenta foi gerada por si própria! IST, 28/07/2005 Desenvolvimento Automático de Sistemas 29 XIS-Tool para Eclipse.NET O XIS-Tool foi adaptado para módulo Eclipse.NET • Foram criados os templates para a arquitectura “Módulo Eclipse.NET” – Reaproveitaram-se quase todos os templates da arquitectura WinForms, excepto a parte da interface com o utilizador – Terão ainda que ser melhor desenvolvidos para tirar total partido da plataforma Eclipse.NET • A partir do modelo já existente e dos novos templates, gerou-se o módulo XIS-Tool (agora ProjectIT-MDD) IST, 28/07/2005 Desenvolvimento Automático de Sistemas 30 Mapa de conceitos cd MapaConceitos migração de Eclipse Eclipse.NET plataforma para integração de do Ferramentas Proj ectIT-Studio plataforma contém Abordagem XIS contém definiu Perfil XIS/UML com Jav a .NET como baseado em baseado em resultou em contém por exemplo Conceitos definiu Proj ectIT-MDD como Perfil por exemplo como gerado por XIS-Tool agrega como Perfil Proj ectIT/UML gerado por em Plataforma contém como interage com Ponto de Extensão como Modelo como declara Módulo como para declara Conceitos definido por como como Extensão como importa ASP.NET como como como definido por Arquitectura como como como constituído por mapeada em UML2 GEF WinForms.NET J2EE Templates IST, 28/07/2005 Desenvolvimento Automático de Sistemas Processo de Geração definidos por Passos de Geração 31 No futuro • Espera-se que a plataforma Eclipse.NET evolua – Com novas ideias e novos módulos – Adaptar-se para a plataforma .NET 2.0 – Possivelmente mudar o suporte gráfico para WinForms, em vez do SWT • O ProjectIT-Studio vai acompanhar a evolução da plataforma IST, 28/07/2005 Desenvolvimento Automático de Sistemas 32