Proposta de abordagem de desenvolvimento de software orientado a modelos para empresas Tânia Eiko Eishima 1, Jandira Guenka Palma 1 1 Departamento de Computação Universidade Estadual de Londrina (UEL) Caixa Postal 10.011 86.057-970 Londrina PR Brasil taniaeiko@ieee.org, jgpalma@uel.br Abstract. The Model-Driven Development (MDD) is a approach that has been excelled in industry and academia. It is the use of models to raise the level of abstraction for creating software. The propose of this work is to present a metamodel to software model-driven development that optimizes the organization, productivity and quality of the production process systems in companies. Resumo. O desenvolvimento orientado a modelos (Model-Driven Development - MDD) é uma abordagem que vem se destacando na indústria e na academia. Ele consiste na utilização de modelos para elevar o nível de abstração para a criação de software. A proposta deste trabalho é apresentar um metamodelo para o desenvolvimento de software orientado a modelos que otimize a organização, produtividade e qualidade do processo de produção de sistema nas empresas. 1. Introdução A utilização de software está em constante expansão. Eles não fazem parte apenas do computador, mas compõem caixas eletrônicos, celulares, televisões e geladeiras. Diante da sua ampla forma de utilização e comunicação entre eles, os sistemas computacionais tornam-se muito complexos. Os sistemas estão em constante mutação e a forma de desenvolvimento aplicada, muitas vezes gera lacunas que comprometem a qualidade do produto. Destacando a desatualização e desuso da documentação de requisitos e os modelos produzidos no início do processo de produção. Diante desse contexto, o desenvolvimento orientado a modelo é proposto na tentativa de reduzir esses problemas. E acrescentar algumas vantagens como a produção a partir de modelos [5]. Os modelos são usualmente utilizados nas disciplinas das engenharias para a projeção de produtos complexos. Não há como imaginar a construção de um prédio sem a prévia elaboração de vários modelos específicos [7]. Na engenharia de software, a abordagem de desenvolvimento orientado a modelo permite que o produto produzido esteja como na modelagem realizada no seu planejamento. Já que o modelo é o primeiro e principal artefato do processo de desenvolvimento [9].
Esse trabalho propõe apresentar um metamodelo para o desenvolvimento orientado a modelo para a aplicação em empresas de software. 2. Fundamentação Teórico-Metodológica e Estado da Arte Para propor um metamodelo para desenvolvimento orientado a modelo é necessário conhecer os processos para a produção de software e os conceitos e características dessa metodologia. Assim, essa seção está dividida em duas partes: modelos de desenvolvimento de software e desenvolvimento orientado a modelos. 2.1. Modelos de Desenvolvimento de Software O desenvolvimento de software necessita que uma sequência de passos seja realizada para que se alcance um resultado de alta qualidade e dentro do prazo estabelecido. Denominamos esse conjunto de passos como processo de software [6]. O processo de software é definido como uma metodologia para as atividades, ações e tarefas. Ele pode ser definido no desenvolvimento de uma nova aplicação ou durante a expansão e modificação de uma já existente [8]. Com o objetivo de orientar o processo de software vários modelos foram propostos. Os modelos de processo de desenvolvimento de software são temas de grande destaque na engenharia de software. Eles descrevem a estrutura de todo o processo, através de etapas para a realização das tarefas [3]. Os modelos de desenvolvimento mais conhecidos: modelo cascata, modelo de processo incremental, modelo de processo evolucionário, modelo especializado e processo unificado. O modelo cascata, esquematizado na Figura 1, sugere um procedimento sequencial e sistemático [6]. O processo é constituído de fases que só podem ser inicializadas após o término da fase anterior [8]. Figura 1 Representação do Modelo Cascata [6]. ~
O modelo de processo incremental consiste em realizar fluxos paralelos de sequências de processos lineares como demonstrado na Figura 2. Cada sequência linear advém um incremento, uma versão, que oferece progressivamente maior funcionalidade ao cliente [6]. Figura 2 Modelo Incremental [6]. O desenvolvimento de software evolucionário propõe solucionar o problema através de um aprimoramento contínuo de um determinado esboço inicial. Essa iteração permite que haja feedback do cliente de forma concorrente com a implementação [8]. O modelo de processo especializado reúne características de outros modelos em contextos específicos. Exemplos: desenvolvimento baseado em componentes, modelo de métodos formais e desenvolvimento de software orientado a aspectos [6]. O processo unificado é um modelo de desenvolvimento que busca reunir as melhores características dos modelos tradicionais [6]. 2.2. Desenvolvimento Orientado a Modelos Os modelos de desenvolvimento de software citados possuem um processo onde em cada etapa há a elaboração parcial ou completa de um artefato. Os artefatos colaboram para a execução do processo, mas não são totalmente dependentes uns dos outros [1]. E geralmente são responsabilidades de funcionários ou departamentos distintos [5]. Além dessas características, a produção de software sofre com a atualização periódica do produto imposta pelo mercado. E a heterogeneidade de conhecimento entre a equipe, com conhecimento e talento individuais [5].
Esse cenário tem como consequência documentos e diagramas incompreensíveis para a equipe, desatualizados e inutilizáveis. O que resulta em sistemas complexos sem especificações acessíveis, aumentando o custo de manutenção e possibilidade de erros conceituais [9]. Com o intuito de reverter essa situação, o desenvolvimento orientado a modelos foi proposto. Essa seção está dividida em: histórico e motivação do desenvolvimento orientado a modelo; e o metamodelo. 2.2.1. Conceito e Motivação O desenvolvimento orientado a modelo ou Model-Driven Development (MDD) é uma metodologia que tem como foco a criação de modelos como primeira classe de artefatos para o desenvolvimento do software [10] Ela fornece diretrizes, linguagens, métodos, modelo de transformação e ferramentas para apoiar a representação de requisitos de negócios e permite a geração de uma solução de tecnologia específica para cada empresa [9]. A proposta do MDD é fazer com que o engenheiro de software não precise interagir manualmente com todo o código fonte, concentrando-se em modelos de altonível. Ficando protegido das complexidades geradas na implementação com diferentes plataformas [4]. Para que isso seja possível, a ferramenta de modelagem deve permitir que o modelo descreva todos os conceitos do domínio (problema). O modelo deve ser semanticamente completo e correto para que o computador ou uma equipe específica de codificação, entenda e gere novos modelos ou código. A Figura 3 apresenta os principais elementos desse método de desenvolvimento. Figura 3 Principais elementos do MDD [5]. Essa abordagem de desenvolvimento tem como principais vantagens: produtividade, portabilidade, interoperabilidade, facilidade de manutenção e documentação, mais eficiente para a comunicação entre clientes e desenvolvedores, proporcionam a possibilidade de reutilização, otimização e corretude de códigos e conceitos [5].
2.2.2. Metamodelo A metamodelagem é um dos principais aspectos do MDD. Um metamodelo descreve a estrutura do modelo, ou seja, define os construtores de uma linguagem de modelagem e seus relacionamentos, assim como as constantes e regras de modelagem. Para a criação de um metamodelo é necessário construir uma DSL (Domain- Specific Language); validar modelos; realizar transformações de modelo; gerar código e integrar ferramentas de modelagem a um domínio [2]. A DSL é uma linguagem de especificação que oferece, através de notações e abstrações, poder expressivo focado em um problema de um domínio particular. Porém, ela não é a única abordagem de MDD. Há o do OMG (Object Management Group), a MDA (Model-Driven Architecture). Na fase de transformações os templates também serão utilizados. Um template possui uma estrutura pré-definida, mas com variáveis especificadas pelo desenvolvedor [5]. 3. Objetivo O objetivo desse trabalho é desenvolver um metamodelo seguindo a abordagem MDD, considerando as características já existentes nas empresas geolocalizadas no Arranjo Produtivo Local (APL) de Tecnologia da Informação de Londrina e Região. Para assim, possibilitar a sua utilização pelos integrantes desse centro. 4. Procedimentos Metodológicos Os procedimentos metodológicos para a elaboração desse trabalho foram divididos em seis atividades: 1- Levantamento bibliográfico: levantamento de referências relevantes para a compreensão de conceitos e verificação do estado da arte. 2- Definição do ambiente(s) ou do(s) tipo(s) de sistema(s) a qual se aplicará o MDD a ser proposto: levantamento dos modelos de desenvolvimento de software, análise e a especificação do ambiente ou do tipo de sistema alvo da proposta. 3- Estudo dos MDDs: pesquisa e análise de cases que utilizaram o desenvolvimento de software orientado a modelo. 4- Elaboração de um metamodelo para um ambiente/sistema selecionado: a partir dos dados obtidos, será possível estudar uma forma de desenvolver e propor um metamodelo que esteja de acordo com as características do nicho estabelecido. 5- Análise dos resultados: verificação do alcance do objetivo através da aplicação do metamodelo no desenvolvimento de um sistema. 6- Redação do TCC: produção da parte escrita do trabalho de conclusão de curso.
5. Cronograma de Execução As atividades seguirão o seguinte cronograma: FEV MAR ABR MAI JUN JUL AGO SET OUT 1-Levantamento bibliográfico x x x 2- Definição do ambiente x x 3- Estudo dos MDDs x x 4- Elaboração do metamodelo x x x x 5- Análise dos resultados x x 6- Redação do TCC x x x x x 6. Resultados Esperados O MDD proporciona produtividade e reutilização do software. Características de destaque em produções que almejam produção alta para cumprir deadlines [5]. A rigidez resultante dessa metodologia [2] possibilita a criação de um ambiente compartilhado, onde várias empresas possam produzir seus códigos. Ao final desse trabalho espera-se obter um metamodelo para o desenvolvimento orientado a modelo que possa ser utilizado por empresas do APL de Londrina e região. E dessa forma, propagar o uso dessa metodologia que apresenta vantagens para a competição comercial. 7. Espaço para assinaturas Londrina, 31 de março de 2014. Aluno Orientador
Referências [1] DUARTE, Francisco J. M.. Engenharia de Software Orientada aos Processos. 2002. 104 f. Dissertação (Mestrado) - Curso de Mestrado em Informática, Departamento de Departamento de Informática, Universidade do Minho, Braga, 2002. [2] FERNANDES NETO, David. CoMDD: uma abordagem colaborativa para auxiliar o desenvolvimento orientado a modelos. 2012. 87 f. Dissertação (Mestrado) - Curso de Ciências de Computação e Matemática Computacional, Departamento de Instituto de Ciências Matemáticas e de Computação - Icmc-usp, Universidade de São Paulo, São Carlos, 2012. [3] GAO, Yu, "Research on the rule of evolution of software development process model," Information Management and Engineering (ICIME), 2010 The 2nd IEEE International Conference on, vol., no., pp.466,470, 16-18 April 2010 doi: 10.1109/ICIME.2010.5477884 [4] LAZARTE, I.M.; TELLO-Leal, E.; ROA, J.; CHIOTTI, O.; Villarreal, P.D., "Model-Driven Development Methodology for B2B Collaborations," Enterprise Distributed Object Computing Conference Workshops (EDOCW), 2010 14th IEEE International, vol., no., pp.69,78, 25-29 Oct. 2010 doi: 10.1109/EDOCW.2010.21 [5] LUCRÉDIO, Daniel. Uma abordagem Orientada a Modelos para Reutilização de Software. 2009. 287 f. Tese (Doutorado) - Curso de Ciências de Computação e Matemática Computacional, Departamento de Instituto de Ciências Matemáticas e de Computação - Icmc-usp, Universidade de São Paulo, São Carlos, 2009. [6] PRESSMAN, Roger S.. Engenharia de Software: Uma abordagem profissional. 7. ed. Porto Alegre: Amgh, 2011. [7] SELIC, B., "The pragmatics of model-driven development," Software, IEEE, vol.20, no.5, pp.19,25, Sept.-Oct. 2003 doi: 10.1109/MS.2003.1231146 [8] SOMMERVILLE, Ian. Engenharia de Software. 6. ed. São Paulo: Addilson-wsley, 2000. [9] TEPPOLA, S.; PARVIAINEN, P.; TAKALO, J., "Challenges in Deployment of Model Driven Development," Software Engineering Advances, 2009. ICSEA '09. Fourth International Conference on, vol., no., pp.15,20, 20-25 Sept. 2009 doi: 10.1109/ICSEA.2009.11 [10] VARA, Juan M., ESPERANZA, Marcos, A framework for model-driven development of information systems: Technical decisions and lessons learned, Journal of Systems and Software, Volume 85, Issue 10, October 2012, Pages 2368-2384, ISSN 0164-1212, http://dx.doi.org/10.1016/j.jss.2012.04.080.