Construção e Reutilização de de Software do Domínio de Cardiologia João L C Moraes, Daniel Lucrédio, Adriano A Bossonaro, Dr Rubens Tofano, Prof Dr Antonio F Prado DC/UFSCar - Departamento de Computação Universidade Federal de São Carlos Rod. Washington Luís, Km 235 Caixa Postal 676 - Cep.13565-905 - São Carlos-SP Resumo - Este artigo apresenta uma abordagem para construção e reutilização de componentes de software com implementação em ObjectPascal (Delphi). Os principais mecanismos de execução que auxiliam o Engenheiro de Software (ES) na abordagem são: a ferramenta MVCASE, o Sistema de Transformação (ST) Draco-PUC, e o ambiente Delphi. A abordagem utiliza técnicas de Desenvolvimento Baseado em (DBC), Transformação de Software, Frameworks e linguagens orientadas a. Palavras-chave: Desenvolvimento Baseado em (DBC), Transformação de Software, framework e ObjectPascal. Introdução No desenvolvimento de software, a reutilização caracteriza-se pela utilização de produtos de software, em uma situação diferente daquela para qual estes produtos foram originalmente construídos. Motivado pelas idéias de reutilizar ao máximo os resultados da análise, projeto e implementação, através de componentes de software, este artigo propõe uma abordagem para a construção e reutilização de componentes. A abordagem orienta o Engenheiro de Software tanto no desenvolvimento dos componentes de um domínio do problema, quanto no desenvolvimento das aplicações que os reutilizam, e integra: Um método de Desenvolvimento de Software Baseado em (DBC); Uma ferramenta CASE para modelagem dos componentes e das aplicações; Um Sistema de Transformação de Software para geração de código ObjectPascal; e Uma Linguagem Orientada a, ObjectPascal (Delphi), para implementação de componentes e das Aplicações desenvolvidas, a partir do framework de um domínio. Este artigo está organizado da seguinte forma: a Seção 2 apresenta os principais conceitos envolvidos na abordagem; a Seção 3 apresenta a abordagem proposta; a Seção 4 apresenta trabalhos correlatos ao proposto, e finalmente, a seção 5 apresenta uma conclusão deste artigo. Principais Conceitos Os conceitos fundamentais para o entendimento da abordagem proposta estão relacionados com o processo de Desenvolvimento Baseado em, a transformação de software realizada pelo Sistema de Transformação Draco-PUC, as técnicas de modelagem disponíveis na ferramenta CASE MVCASE, e a linguagem ObjectPascal do ambiente Delphi. Desenvolvimento Baseado em (DBC) Segundo Krueger [1], [2], [3] e [4], o processo de desenvolvimento de software pode ser dividido em duas etapas: desenvolvimento para reutilização e desenvolvimento com reutilização. Baseado nesta idéia diferentes abordagens têm sido propostas para o DBC, destacando-se o método Catalysis[5], que integra, entre outras, técnicas de modelagem e frameworks, para suportar o processo de desenvolvimento para reutilização. O processo de DBC em Catalysis inicia com a identificação dos requisitos do domínio de problema para o qual se deseja construir os componentes, prossegue com a especificação dos componentes com base nos requisitos identificados, e finalmente conclui com o projeto interno dos componentes. Baseia-se nos princípios plug-in e de refinamentos sucessivos, para obter componentes com maior grau de reutilização e mais fáceis de serem reutilizados. Considerando as experiências do grupo de pesquisa, do qual os pesquisadores deste projeto fazem parte, com o método Catalysis, decidiu-se também por utilizar grande parte de suas idéias, principalmente para apoiar o processo de modelagem dos componentes, uma das etapas da abordagem proposta. Ferramenta MVCASE Ferramentas CASEs têm sido empregadas para suportar as diferentes etapas dos processo de desenvolvimento de software. Dentre estas ferramentas tem-se a MVCASE [6 e 7] que provê técnicas gráficas e textuais da UML[8], para auxiliar o Engenheiro de Software no DBC. Na MVCASE podem-se especificar os componentes em diferentes
níveis de abstração, e gerar código, a partir dessas especificações, em linguagens como Java e ObjectPascal. Assim, o Engenheiro de Software pode ter diferentes visões dos componentes, desde suas especificações até suas implementações e deployment em um servidor, para reuso das aplicações. Dada estas vantagens a MVCASE foi integrada na abordagem proposta, para facilitar tanto na construção como no reuso dos componentes. Sistema de Transformação Draco-PUC O paradigma Draco [9] está fundamentado na reutilização de componentes de software, elementos comuns que estão sempre presentes em diversos sistemas construídos e que refletem objetos e operações inerentes à área na qual se está trabalhando. No Sistema de Transformação (ST) Draco-PUC, um domínio é composto de três partes, Linguagem, Parser, e um Prettyprinter, ou unparser, e Transformadores. Baseado na idéia de transformação de software o ST Draco-PUC suporta a transformação de especificações em uma linguagem para a mesma ou outra linguagem, e por isso tem sido usado em diferentes processos de engenharia e reengenharia de software. Diferentes domínios já foram construídos no ST Draco-PUC, dentre os quais o MDL, das descrições das especificações em UML. Dada estas vantagens o mesmo foi integrado na abordagem proposta, para transformar as descrições das especificações da MVCASE para a linguagem ObjectPascal. Para tal, além do domínio MDL, foi necessário construir o domínio ObjectPascal, usado para gerar o código nesta linguagem, a partir de descrições MDL. Ambiente Delphi Delphi [10] é um ambiente integrado para desenvolvimento de aplicações (IDE - Integrated Development Environment), que fornece ferramentas para desenhar, codificar, compilar, executar, depurar, distribuir e testar aplicações, nas plataformas Windows e Linux (Kylix). Possui a VCL (Visual Component Library) que é uma hierarquia de classes, escritas em ObjectPascal, que suporta a criação de componentes, através do mecanismo de herança. Na arquitetura VCL existem dois tipos de componentes: Visuais e Não-Visuais, com acessos em tempo de projeto (Designtime) e em tempo de execução (Runtime). Delphi foi adotado na abordagem proposta devido principalmente à sua grande divulgação e utilização na indústria de software. A hierarquia de classes da VCL é utilizada tanto para construção como para reutilização dos componentes. Combinando as idéias do método Catalysis de DBC, o ST Draco, a ferramenta MVCASE, e a linguagem ObjectPascal, propõe-se uma abordagem para construção e reutilização de componentes de software, apresentada a seguir. Metodologia e Resultados - Construção e Reutilização de de Software A Figura 1 mostra a abordagem proposta, que é realizada em duas grandes etapas: Construir Framework e Reutilizar Framework. Técnicas de DBC, Framework, e de Linguagens orientadas a Conhecimento do Domínio do Problema MVCase Construir Framework Engenheiro de Software ST Draco Delphi do Framework Técnicas de DBC, Frameworks, e de Linguagens orientadas a Requisitos da Aplicação Reutilizar Framework Modelos dos do Framework Implementados Projetos da Aplicações Implementações da Aplicações Legenda (SADT) Controle Entrada Saída MVCase ST Draco Mecanismos Engenheiro de Software Figura 1. Construir e Reutilizar Framework Delphi
Os principais mecanismos de execução, que auxiliam o Engenheiro de Software na abordagem proposta, são: a ferramenta MVCASE, o ST Draco- PUC, e o ambiente Delphi. Na primeira etapa, Construir Framework, a partir do conhecimento do domínio do problema, obtêm-se os do Framework, que são representados por Modelos que facilitam seus entendimentos e suas reutilizações em alto nível de abstração. Os componentes implementados em ObjectPascal, permitem suas reutilizações conforme as idéias da VCL do Delphi. Na segunda etapa são desenvolvidas as aplicações, que reutilizam os componentes do Framework. A partir dos requisitos da aplicação obtém-se o seu projeto e implementação orientada a componentes. Para facilitar o entendimento da abordagem proposta, será utilizado o Domínio de Cardiologia. A utilização do domínio de Cardiologia tem como base as experiências de um dos pesquisadores [11, 12 e 13].no desenvolvimento de um sistema de cardiologia, denominado SisCardio, do Instituto do Coração de Marília (ICM), em 1997 com 320 classes, e o desenvolvimento de outros softwares para a área de saúde [14, 15 e 16]. Construir Framework A Construção de um Framework de um domínio do problema é realizada em três passos: Modelar Framework, Gerar Código dos e Instalar do Framework. No passo Modelar Framework faz-se a modelagem do framework a partir do conhecimento do domínio do problema. No caso do domínio de Cardiologia, partiu-se de um levantamento de requisitos realizado para desenvolver o sistema SisCardio. Neste passo são especificados os Modelos de Interações, representados pelos Diagramas de Casos de Usos e de Seqüência, detalhando os cenários de utilização dos componentes nas diferentes aplicações do domínio. Estes modelos são refinados para obter o projeto interno dos componentes, representado nos Modelos de. Os componentes com suas interfaces para conexão e suas dependências, Baseado na arquitetura VCL do Delphi foi definida a arquitetura dos componentes, com duas interfaces, Designtime e Runtime. Uma vez concluído o modelo do framework, representado pelas classes dos componentes e seus relacionamentos, pode-se gerar as especificações MDL usadas para geração de código dos componentes. Adicionalmente pode-se gerar especificações SQL para construção do banco de dados, com as tabelas que fazem a persistência dos componentes persistentes do framework. No passo Gerar Código dos faz-se a geração de código em uma linguagem Orientada a, no caso ObjectPascal, a partir das especificações MDL. O ST Draco-PUC é utilizado para Gerar Códigos dos componentes usando os domínios MDL e ObjectPascal, previamente construídos. Dada a capacidade do ST Draco de trabalhar com diferentes domínios de diferentes linguagens de programação, modelagem e aplicações, outras linguagens poderiam ser utilizadas na geração do código, como Java, C++, e outras. No passo Instalar do Framework faz-se a instalação dos componentes implementados no ambiente Delphi, disponibilizando-os para serem reutilizados pelas aplicações. Para facilitar a reutilização o FrameCardio foi organizado em oito paletas no ambiente Delphi. A Figura 2 mostra uma das paletas, denominada Appointment, com os respectivos componentes. Figura 2. Pacote Appointment do FrameCardio no ambiente Delphi Ao final deste passo, tem-se concluída a primeira etapa da abordagem. Contudo, os testes com os componentes construídos são realizados com suas aplicações, e caso ocorram erros com os mesmos, deve-se retornar a esta etapa de Construção do Framework e repetir os seus passos para corrigir os erros e obter nova versão do framework.
Reutilizar Framework A reutilização pode ocorrer tanto na modelagem como na implementação das Aplicações. Para reutilizar os componentes deve-se Modelar, Gerar Código e Executar a aplicação. - Modelar a Aplicação, a partir dos Modelos de do framework construído e dos requisitos da aplicação; - Gerar Código da Aplicação, reutilizando os componentes do framework ; - Executar a Aplicação, no ambiente Delphi; e - Opcionalmente, Refinar a Aplicação, para atender requisitos normalmente não funcionais, no ambiente Delphi. O passo Modelar Aplicação compreende a especificação e o projeto da aplicação, considerando os modelos dos componentes do framework. Para agilizar a implementação, as miniespecificações dos corpos dos métodos das classes são escritas diretamente em ObjectPascal. A Figura 3 mostra um modelo de componentes de uma aplicação que Registra o Implante de Marcapasso em Pacientes. Conforme a notação da UML, no modelo as setas tracejadas representam as dependências dos componentes. Em (1) têm-se os componentes TForm e TDataModule da arquitetura da VCL que são reutilizados pelos componentes da aplicação. Em (2) têm-se os componentes da aplicação. Em (3) têm-se os componentes do FrameCardio: TPatient, TPacemaker, TDoctor, e TAtropina, reutilizados pela aplicação. (1) (2) (3) Figura 3. Modelo de da Aplicação No passo Gerar Código da Aplicação, a ferramenta MVCASE gera as descrições MDL do projeto da aplicação. Em seguida, utiliza-se o ST Draco-PUC para gerar código da aplicação, transformando as descrições MDL para a Linguagem ObjectPascal. Finalmente, no passo Executar Aplicação. No passo o Engenheiro de Software utiliza o ambiente Delphi para executar e testar o código gerado da aplicação. Os dados de testes servem para verificar se os requisitos especificados para a aplicação foram atendidos. A Figura 4 mostra um dos formulários da execução da aplicação. Opcionalmente, o Engenheiro de Software pode refinar a aplicação para atender requisitos não funcionais não tratados na modelagem.
Figura 4 - Passo Executar Aplicação Discussão - Trabalhos Correlatos Diferentes abordagens têm sido utilizadas na área de DBC, como o Rational Unified Process (RUP) [2] e UML Components [3]. A ferramenta Rational Rose [17] tem sido usada como principal mecanismo para execução destes processos. Contudo, tanto o RUP como UML Components, não tratam com detalhes a implementação do componente, como no caso da abordagem proposta. A CASE Bold, é outro exemplo, de ferramenta voltada para a construção de componentes dirigidas pelo modelo (Model Driven Application - MDA) [18]. Contudo, diferente da abordagem proposta, que permite utilizar diferentes linguagens de implementação devido à capacidade do ST Draco, e a ferramenta Bold atualmente tem versões para Delphi e C++. Existem também vários ambientes integrados para desenvolvimento de componentes e suas aplicações, como o Eclipse[19], NetBeans[20], JBuilder, C++Builder e o próprio Delphi. Contudo normalmente estes ambientes estão centrados em uma única linguagem e alguns não enfocam a modelagem. Em resumo, a abordagem proposta diferencia dos trabalhos citados porque: Combina diferentes tecnologias, automatizando o processo de geração de código, através das ferramentas MVCASE e Draco-PUC; Permite trabalhar com diferentes domínios suportados pelo ST Draco; Possibilita que os componentes sejam reutilizados, tanto na MVCASE, a partir dos seus modelos disponíveis no framework, como no ambiente Delphi; e Permite a integração e consistência entre os modelos dos componentes e suas implementações. Conclusões Este artigo pesquisou uma abordagem para a construção e reutilização de componentes de software com implementação em Delphi, que pode contribuir para redução de custos e melhoria de produtividade de software. A abordagem foi utilizada para a construção de um framework do domínio de cardilogia. Diferentes aplicações, semelhantes à do estudo de caso, foram desenvolvidas para testar os componentes e a abordagem proposta. A abordagem contribui para tornar mais confiável todo o processo de desenvolvimento de software baseado em componentes. Referências 1. Krueger, C.; Software Reuse, ACM Computing Surveys, vol. 24, no 2, Junho 1992. 2. Jacobson, I., et. Al. The Unified Software Development Process. USA-2001. 3. Cheesman, J., Daniels, J. UML Components. Addison-Wesley. USA-2000. 4. Pressman, R. S. Software Engineering. McGraw-Hill, 2001. 5. Catalysis. Catalysis Enterprise Components.with UML.http://www.catalysis.org. 6. Software Engineering Institute (SEI). Domain Analysis. http://www.sei.cmu.edu. 7. Lucrédio, D., Prado, A. F. Ferramenta MVCASE, XV SBES-2001. 8. Rumbaugh, J., Jacobson, I., Booch, G. The UML Reference Manual, 1999. 9. Neighbors, J.M. The Draco approach to Constructing Software from Reusable Components. IEEE Transactions on Software Engineering. v.se-10, n.5, pp.564-574, September, 1984. 10. Borland/Inprise. Visual Component Library Reference - 2002.
11. Moraes, J. L. C., Prado, A. F. I WIM - Framework de Cardiologia baseado em. XV SBES-2001. Rio de Janeiro- RJ, Brasil. 03-05 de Outubro, 2001. 12. Moraes, J. L. C.,Prado, A. F. Framework de do Domínio de Cardiologia. II - JIISIC/2002 - Sessão Técnica(4), Artigo nº1, 2002, Salvador Brazil. 13. Moraes, J. L. C., Prado, A. F. Reutilização de do Framework do Domínio de Cardiologia (FrameCardio). II WIM-2002 - Sessão Técnica(4), Artigo nº3. 14. Moraes, J. L. C., Bossonaro, A. A., Prado, A. F. Desenvolvimento de um Framework, baseado em componentes, do domínio de Cardiologia. VIII CBIS-2002, Natal-Brasil. 15. Moraes, J. L. C., Prado, A. F. Automatic ObjectPascal Code Generation from Catalysis Specifications. CLEI Eletronic Journal, Dez 2002. 16. Moraes, J. L. C., Prado, A. F. Geração Automática de Código Delphi a partir de Especificações em Catalysis. XXVII CLEI-2001. Mérida, México. 17. Rational Software Corporation., http://www.rational.com. 18. Object Management Group OMG, http://www.omg.org/mda. 19. Eclipse Platform http://www- 106.ibm.com/developerworks/opensource/library/ os-eclipse.html. 20. Net Beans http://www.netbeans.org/ Contato Nome: João Luís Cardoso de MORAES Profissão: Oficial Exército Brasileiro Escolaridade: Mestrando Ciência da Computação Universidade Federal de São Carlos (UFSCar-SP) Endereço: Rua União 49, LINS-SP CEP 16400-515 Telefone: 14-35325430 / 97252134 Email: moraes.6bil@uol.com.br