Ambiente de Desenvolvimento de Software para Robótica aplicado no uso de modelos e na geração automática de código Guilherme dos Santos Marques1, 2, Francisco de Assis Zampirolli 1 1 Centro de Matemática Computação e Cognição da Universidade Federal do ABC, CMCC - UFABC, Santo André, São Paulo Brasil 2 Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas da Universidade Federal do ABC, CECS-UFABC, Santo André, São Paulo Brasil Existem deficiências de ferramentas didáticas para o desenvolvimento de aplicações em Robótica. Por este motivo, o Ambiente de Desenvolvimento de Software para Robótica (ADS-R) proposto neste trabalho estimula o compartilhamento de informações e experiências. O ambiente proposto tem potencial de aplicação no ensino e na capacitação de conceitos de robótica. Pois o ADS-R tem como objetivo criar e manipular uma base de dados onde o conteúdo, armazenado em XML, representa artefatos produzidos no ciclo de vida de desenvolvimento de software seguindo um padrão de documentação. Este padrão segue o padrão de Engenharia de Software (ES), possibilitando o uso de processos e recursos como geração automática de código e documento bem como UML (seguindo conceitos de MDA). O ADS-R implementa uma interface gráfica responsável por uma comunicação eficaz, onde o usuário pode aplicar a seqüência de movimentos de maneira flexível, obtendo os movimentos em um simulador, produzindo um diagrama de classes e um arquivo XML, que poderá ser transformado para qualquer tipo de linguagem bastando um tradutor para cada linguagem. Como resultados deste ambiente, podemos ter várias facilidades para o desenvolvimento de software, de aprendizado em robótica e uma documentação completa, disponibilizando para consulta um portfólio de projetos seguindo este padrão de desenvolvimento. Esta metodologia de desenvolvimento e de aplicação pode ser usada para auxiliar projetos de software desenvolvidos em disciplinas de graduação em Robótica e Ciência da Computação. Palavras chave: Robótica, Computação, MDA, LEGO, UML, XML, XMI e Pedagogia I. INTRODUÇÃO ADS-R tem potencial de aplicação no ensino e Onaambiente capacitação de conceitos de robótica, através de uma plataforma simples, usando um sistema de programação facilitada e a criação automática de código. A manipulação do XML baseada no fato de muitos dos grandes Sistemas de Gerenciamento de Banco de Dados (SGBD´s), como Oracle, Sybase, SQL Server, entre outros, possuem módulos para armazenamento e consulta a dados XML. Softwares específicos para esta tarefa são, entretanto, ainda incompletos. A relevância do resultado toma outra dimensão se for considerado que o XML está surgindo como linguagem padrão na Web bem como uma grande quantidade de dados no formato XML deverá ser armazenada e manipulada no ambiente como um banco de dados. Esse pensamento fez com que surgissem diversas bibliotecas ligadas a XML, entre muitas foi escolhida a XStream[6] para aplicação nesse projeto. Com o tempo, os projetos desenvolvidos com o auxílio do ADS-R formarão uma base sólida de desenvolvimento de software, capaz de ser utilizada profissionalmente. Em longo prazo, espera-se a difusão dessa base com o objetivo de reduzir os custos com o compartilhamento de informações no desenvolvimento de software por programação simples ou até mesmo pela movimentação. Essa base também servirá para alavancar a criação de novos produtos de software, uma vez que os desenvolvedores podem aproveitar artefatos já existentes para criar novas funcionalidades. Evita-se assim a repetição, desnecessária, de esforço acelerando o processo de desenvolvimento, não apenas em robótica, mas como um todo na programação[1]. Os usos de técnicas de Engenharia de Software como a MDA[2], que pode ser entendida como a separação clara entre a lógica do negócio (modelo PIM - Platform Independent Model) e tecnologias de implementação (modelo PSM Platform Specific Model). A MDA ainda especifica as regras de transformações / mapeamentos e armazenamento de modelos. O modelo PIM é o modelo que descreve um domínio de conhecimento sem se ater à tecnologia ou plataforma de implementação. Também colaborariam para aumentar a credibilidade do software livre produzido, uma vez que todos teriam acesso às especificações de cada projeto e às métricas de qualidade do mesmo. Deve-se destacar que o ADS-R é especificado com foco na utilização de padrões abertos e na independência de plataforma, aumentando assim a liberdade do usuário na sua utilização. Por meio de modelos padrões que são obedecidos. II. MÉTODOS E PROCEDIMENTOS Foi feito primeiramente uma pesquisa baseado no projeto ADS(Ambiente de Desenvolvimento de Software para Web)[1]. Logo após foram feitas pesquisas relacionadas com XML[4], XMI[5], Arquitetura e Modelagem de Software[7], UML[9], Implementação de métodos de reestruturação e manipulação de dados, manipulações visuais e interface gráfica. Com isso foi possível determinar, que o problema da geração automática seria resolvido, mas não seria tratado de maneira clara e objetiva para o usuário. Esse problema e as pesquisas feitas fundamentaram as escolhas de linguagem e a idéia de módulos a serem criados. Assim baseado nesses aspectos, foi desenvolvida uma arquitetura apresentada na Figura 1. pelo programador, sendo essas as classes envolvidas com a movimentação dos robôs e a LeJOS[10] que manipula robôs LEGO NXT[11] através da linguagem de programação JAVA. Os modelos utilizados foram criados nesse projeto pela falta de ferramentas que executem os métodos e os comandos requeridos, sendo eles: O Modelo XMI, baseia se na criação de arquivos XMI e após a análise de vários exemplos de arquivos gerado pelo programa ArgoUML, onde foi observado sequências e repetições de partes do código e da estrutura foi definido os padrões de estrutura e de validade do código. Assim através desses dados foram escolhidas as informações a serem tratadas pelo nível de abstração e de dificuldade do tratamento como visto na Figura 2. Figura 1. Arquitetura do ADS-R Nessa arquitetura pode se ver as aplicações, os aplicativos e os métodos importantes, bem como as interações que elas sofrem ou realizam no processo de execução do ADS-R. Os blocos maiores delimitam programas, os menores que estão dentro desses, são partes específicas do aplicativo que devem ser usadas, partes que devem ser lembradas ou o que é produzido em partes. As flechas escuras são as interações diretas ou as interações com outros programas as tracejadas são as que necessitam de um método para serem executadas. Seguindo essa arquitetura podemos visualizar o fluxo de atividades desenvolvidas por ele, por exemplo: O Usuário começa na interface gráfica (I) coloca os dados através da interface de botões e os pontos pelos Jtextfields e então segue em começa a colher resultados, podendo ir para o sentido da produção automática de código (II.a) e criar um arquivo XML (III) entre outros podendo também interagir com outros programas como o ARGOUML[8] (IV.e) visualizar um diagrama de classes ou seguir no sentido (II.b) e simular a informação dada anteriormente podendo visualizá-la na tela. Com esse tipo de aplicação onde o usuário interage com o programa pretende se desenvolver um modelo cognitivo como ilustrado na figura 3. As bibliotecas utilizadas foram o X Strem, onde podemos criar um texto XML a partir dos dados de classes pré definidas Figura 2. Exemplo da analise e tratamento da informação O Modelo Robótico, onde foi tratado as informações com o mesmo nível de abstração do modelo XMI e aplicado na criação de um arquivo de sequência de Threads para uso em um sistema (.class) baseado nos padrões de desenvolvimento da linguagem JAVA e de biblioteca já apresentada LeJOS. O sucesso de uma aplicação interativa depende da facilidade com que o usuário consegue aprendê-la e utilizá-la. Essa facilidade em utilizar o sistema, depende da relação que existir entre as ações que ele mentalmente considera necessárias para realizar essa tarefa e as interações com o sistema necessárias para consegui-lo e seu desempenho será afetado pela qualidade da informação que lhe for proporcionada pela interface. Para determinar como o usuário se comunica com o ambiente foi feito o Modelo Cognitivo (Figura 3) com o objetivo de modelar o aplicativo de acordo com o usuário sendo o único modelo não metodológico e onde podemos identificar o fluxo de atividades ligadas ao raciocínio lógico do usuário, assim como o raciocínio matemático do programa e as suas interações durante a execução do mesmo, através do envio e recebimento de informações específicas ligadas diretamente ao entendimento do usuário. projeto, com isso foi possível perceber, as facilidades do uso da linguagem JAVA que permite ampla utilização de API's e bibliotecas onde elas foram selecionadas pela aplicação de tal maneira que inibi o desenvolvimento de programação repetitiva / longa, o desenvolvimento de um modelo padrão para aplicação em um projeto de robótica, criação de um sistema de criação de código automático e de modelos (UML), fundamentado na Arquitetura Orientada a Modelos (MDA) em métodos criados especialmente para esse projeto, implementado em uma linguagem de Banco de Dados aplicável na internet (XML), possibilitando a criação e manipulação do código a distância e disponibilizando o conteúdo de vários estudos de casos que poderão servir de consulta por diversas instituições de ensino ou organizações que pretendam desenvolver software com qualidade. Além da utilização e aplicação de práticas didáticas de robótica fundamentadas em diversos exemplos de sucessos como os LEGO Mindstorms NXT através de uma interface baseada em um modelo cognitivo que permite definir os usuário e aplicado na biblioteca LeJOS. Por fim, esta pesquisa, visou preparar cada vez mais a lógica da programação e não a programação tradicional REFERENCES [1] Figura 3. Modelo cognitivo III. RESULTADOS E DISCUSSÕES Foi criado um aplicativo baseado em quatro módulos, que executam os métodos explicados na segunda seção e que seguindo o modelo cognitivo permite definir os públicos alvo do projeto, nessa versão sendo: O público infantil [3] pela aplicação de uma interface de fácil compreensão aplicada na visualização dos movimentos na tela e nos robôs NXT da LEGO MINDSTROMS O público universitário, onde foi aplicado a criação de um diagrama de classes baseado na estrutura de XMI mais usada dentre as ferramentas acessíveis a do ArgoUML, onde pode se observar o diagrama das classes relevantes ao movimento do robô lembrando que os dados presentes nesse diagrama são apenas para validação de conceitos pois poderiam ter sido feito com muito mais dados e com outros tipos de diagramas já que a ferramenta utilizada não nos permitiu definir um XMI para o diagrama de atividades, o mais adequado ao projeto, já que não há no mercado ferramenta com essa função a um preço acessível. Na geração de um XML com a mesma finalidade podendo ser acessível a qualquer pessoa que necessite e peça a permissão de uso. Permitindo assim a criação de sequências mais dinâmicas e com resultados mais positivos, por serem amplamente modificado pelo meio acadêmico (no caso ideal do uso desse projeto). IV. CONCLUSÕES A criação de um software que cria objetos aplicáveis é altamente promissora e mais ainda baseada no tipo de implementação (seletiva / botões de ação) desenvolvida nesse ZAMPIROLLI, F. A; SILVA, Márcio Alexandre de Souza. Ambiente de Desenvolvimento de Softwares (ADS). In: II Encontro de Pesquisa e Extensão, São Paulo, 2005 [2] MDA W3C http://www.w3.org/ Acesso em setembro de 2008. [3] Marques, Guilherme; Zampirolli, Francisco. Ambiente de Desenvolvimento de Software para Robótica e uma aplicação didática da utilização em ensino infantil. Submetido ao SIICUSP 2009. [4] XML (2004) Extensible Markup Language (XML) 1.0 (Third Edition), http://www.w3.org/TR/2004/REC-xml-20040204 - 3C Acesso em Julho de 2009. [5] OMG (2002) XML Metadata Interchange (XMI) Specification v2.0. Object Management Group, inc. Acesso em julho de 2008. [6] X Stream XML-JAVA code http:/xstream.codehaus.org Acessado em abril de 2009 [7] PRESSMAN, Roger, Engenharia de Software, 6.ed. - Rio de Janeiro: McGraw-Hill, 2009. [8] argoUML, Zargo - http://argouml-stats.tigris.org/documentation/manual0.28/ Acessado em abril de 2009 [9] Guia de consulta rápida – UML – Douglas Marcos da Silva. Editora Novatec. [10] Lejos http://lejos.sourceforge.net/ Acessado em janeiro de 2009 [11] LEGO MINDSTORMS NXT - http://mindstorms.lego.com/ Acessado em janeiro de 2009.