Vous êtes sur la page 1sur 8

Questes importantes na implementao de software Important issues in the software implementation

Lucio Geronimo Valentin, Maria Madalena Dias, Roberto Carlos Santos Pacheco
1 UTFPR - Universidade Tecnolgica Federal do Paran, Campus Campo Mouro. E-mail: lgvalentin@utfpr.edu.br 2 UEM - Universidade Estadual de Maring, Departamento de Informtica. E-mail: mmdias@din.uem.br 3 UFSC Universidade Federal de Santa Catarina, Departamento de Engenharia do Conhecimento. E-mail: pacheco@egc.ufsc.br

RESUMO Um software precisa ser considerado de boa qualidade para ser til e fornecer suporte adequado s atividades a que se prope. Isto implica que o mesmo deve ter sido bem concebido, bem projetado e bem implementado. A implementao envolve questes importantes que precisam ser tratadas e definidas j na etapa de projeto. Atualmente, existem diferentes solues, disponveis no mercado, para facilitar e tornar mais eficiente a realizao das atividades que fazem parte da etapa de implementao. Assim, neste artigo, apresentada uma discusso sobre questes que devem ser tratadas e resolvidas na etapa de projeto de um software, por serem imprescindveis para sua implementao. Palavras-chave: Questes de implementao. Boas prticas na implementao. Solues para implementao.

ABSTRACT Software needs to be considered of good quality to be useful and provide appropriate support to the activities as proposed, which implies to have been well conceived, well designed and well implemented. Implementation involves important issues that need to be addressed and defined already in the stage of design. Currently, there are different solutions, available in the market, to facilitate and make more efficient implementation of activities that are part of the stage of implementation. Therefore, this paper presents a discussion on issues to be addressed and resolved in the stage of software design, because they are essential to its implementation. Keywords: Questions of implementation. Good practice in implementation. Solutions for implementation.

INTRODUO A implementao demanda grande parte do tempo no processo de desenvolvimento de um software, por ser uma das atividades mais trabalhosas e exigir grandes habilidades do profissional da rea de informtica. Assim, antes de se iniciar a etapa de implementao de um software, necessrio escolher o ambiente de programao e tratar outras questes que possam influenciar direta ou indiretamente no bom desempenho desta atividade. Alm da escolha do ambiente de programao, existem boas prticas a serem seguidas para facilitar, principalmente, a manuteno do software e, ainda, alguns problemas a serem solucionados relativos documentao, s rotinas de teste, integrao da equipe de desenvolvimento e composio de arquivos de configurao da aplicao. No caso de um ambiente orientado a objetos, outros problemas surgem, como, por exemplo, controle de instncias e relacionamentos entre objetos e persistncia de objetos. Assim, o objetivo deste artigo apresentar questes importantes que precisam ser consideradas durante o projeto de um software para facilitar a realizao da etapa de implementao. Como base para essa discusso, considerada a implementao de um framework para arquitetura de software proposta por Valentin et al. (2008). Alm disso, apresentada uma aplicao prtica das questes abordadas.

Revista Tecnolgica, v. 17, p. 73-80, 2008.

74 QUESTES NO DESENVOLVIMENTO DE SOFTWARE

Valentim; Dias; Pacheco

A primeira questo tratada diz respeito linguagem que seria utilizada para a implementao. Considerando o caso do software ser integrado em ambientes corporativos1, a primeira deciso escolher uma tecnologia que oferea suporte ao desenvolvimento de sistemas 2 corporativos. Foram analisadas as plataformas .Net da Microsoft e a J2EE da Sun. A segunda pode ser definida como sendo a mais indicada por ser um software gratuito e manter um bom 3 relacionamento com a comunidade de software livre , alm de contar com inmeras ferramentas gratuitas. Alm da questo da linguagem, a seguir so descritas outras questes que precisam ser abordadas.

MELHORES PRTICAS EM DESENVOLVIMENTO DE SOFTWARE Broemmer (2003) apresenta prticas de desenvolvimento que durante anos tm sido comprovadamente as melhores. Seu foco na plataforma J2EE, no entanto, as questes abordadas so perfeitamente praticadas em qualquer plataforma ou metodologia de desenvolvimento de software. Aqui so consideradas trs prticas que desempenham um importante papel na especificao de um framework.

Tratamento padronizado das mensagens geradas pelos elementos da arquitetura Durante a execuo de uma atividade, alguns erros podem ocorrer. O usurio que iniciou a atividade precisa ser informado sobre o que deu errado. A exibio de uma pilha de execuo que mostra os procedimentos que foram interrompidos no ser esclarecedora para o usurio. necessrio que o sistema informe, de uma maneira sistemtica, quais atividades de negcio foram interrompidas e como o usurio pode proceder. O recurso de tratamento de excees das linguagens um avanado mecanismo que auxilia neste controle de erros e de mensagens. No entanto, ele bastante tcnico e focado em tratar excees das rotinas do software. necessrio estend-lo para criar um mecanismo capaz de controlar excees de negcio. Erros de variveis no inicializadas, de tipos incompatveis de dados, de ndice invlido de vetor, entre outros, so erros da linguagem que devem ser separados dos erros de negcio, que seriam: erro ao iniciar um processo; erro ao executar um servio; erro ao registrar a movimentao na conta; erro de saldo insuficiente para a operao. Geralmente, erros de linguagem revelam bugs da aplicao, enquanto que erros de negcio revelam inconsistncia nos dados da aplicao ou dos parmetros fornecidos para algum processo. Estendendo o mecanismo de excees, pode ser criada uma estrutura de mensagens para que cada servio, processo, visualizao ou componente de apoio possa tratar as mensagens de negcio de uma maneira padronizada. Os erros de linguagem so convertidos para esta estrutura. Este mecanismo tambm utilizado para tratar mensagens de informaes que devem ser exibidas para o usurio.

Ambiente corporativo referido aqui ao ambiente de instituies que utilizam diversas solues de software e que integram seus processos de negcio com os seus sistemas de informao. Muitas vezes este ambiente heterogneo, com a presena de diversas tecnologias. 2 Maiores informaes sobre a plataforma .NET da Microsoft podem ser conseguidas no stio http://microsoft.com/net/. 3 Uma referncia de software livre no pas o portal do prprio governo (http://www.softwarelivre.gov.br).

Revista Tecnolgica, v. 17, p. 73-80, 2008.

Questes importantes na implementao de software Mensagens armazenadas fora do cdigo, em repositrio de mensagens

75

Os textos das mensagens so mais volteis que o cdigo da aplicao. Durante o perodo de implantao, as mensagens tendem a ser alteradas para serem mais bem compreendidas pelo usurio. Uma boa prtica armazenar estas mensagens fora do cdigo fonte da aplicao. Isto permite que os textos sejam alterados sem que a aplicao seja compilada novamente. Alm disso, os erros de negcio mostrados para o usurio devem estar na linguagem utilizada pelo usurio. Isto implica que o mecanismo de mensagem precisa armazenar os textos das mensagens em diversas linguagens, o que contribui para a utilizao de um repositrio que armazena essas mensagens.

Metadados sobre as entidades em arquivos separados comum que os programadores implementem rotinas de validao das propriedades das entidades dentro do cdigo da aplicao, como por exemplo: valor mximo, mnimo, valores vlidos, entre outras. No entanto, algumas dessas rotinas podem ser automatizadas utilizando um repositrio de metadados para descrio das validaes que devem ser aplicadas s propriedades das entidades. Isto permite que as validaes sejam alteradas sem mudana nas linhas de cdigo da aplicao. Alm disso, centraliza a definio das validaes utilizadas pela aplicao, evitando a redundncia de cdigo e facilitando a manuteno do software.

PROBLEMA DE CONTROLE DE INSTNCIAS DE OBJETOS E RELACIONAMENTO ENTRE OS OBJETOS CRIADOS Uma arquitetura deve manter um controle sobre os objetos por ela instanciados de forma que ela possa definir o relacionamento entre os objetos de uma maneira mais automtica. Alm disso, necessrio que muitos objetos criados pela arquitetura recebam referncias da prpria arquitetura em que ele est sendo instanciado. Esta questo resolvida pelo padro de projeto chamado fbrica de objetos (Metsker, 2002). Assim, pode ser utilizado um framework de integrao 4 chamado Spring . O Spring um framework de cdigo aberto que foi desenvolvido com o objetivo principal de facilitar a implementao de aplicaes empresariais. Sua principal caracterstica uma fbrica de instncias de objetos. Esta fbrica possui um mecanismo de IoC (Inversion of Control) que, ao instanciar um novo objeto, verifica os relacionamentos do objeto, instancia outros objetos necessrios e faz a ligao entre os objetos. Isto evita que o programador fique controlando os objetos instanciados e os relacionamentos entre eles. comum o desenvolvedor de software querer desenvolver seu prprio framework de controle de instncias de objetos. No entanto, a utilizao de um framework como o Spring pode oferecer inmeros outros benefcios para o projeto, como por exemplo: Possibilidade de integrao de outras ferramentas como o Ant5, JSP6, Hibernate7 e xDoclet8. Isto seria, no mnimo, bastante trabalhoso de se obter com uma fbrica personalizada de objetos;
4 5

http://www.springframework.org/ http://ant.apache.org/ 6 http://java.sun.com/products/jsp/ 7 http://www.hibernate.org/ 8 http://xdoclet.sourceforge.net/

Revista Tecnolgica, v. 17, p. 73-80, 2008.

76

Valentim; Dias; Pacheco Mecanismo de Programao Orientada a Aspectos (AOP9, do ingls Aspect Oriented Programming). Por ser uma fbrica de objetos, o Spring tem total controle sobre o objeto instanciado e, com isto, possvel definir a injeo de aspectos em tempo de execuo da aplicao utilizando a configurao da fbrica; Arquivo de configurao centralizado. O Spring utiliza um arquivo XML que descreve a aplicao que ele vai gerenciar. Neste arquivo so definidas as classes, os mtodos de instanciao e os relacionamentos entre os objetos instanciados. Vrios parmetros da aplicao podem ser alterados simplesmente editando este arquivo, sem a necessidade de re-compilar a aplicao.

PROBLEMA DE PERSISTNCIA DE OBJETOS A persistncia refere-se ao armazenamento no-voltil dos dados, ou seja, uma vez aceitos pelo gerenciador de banco de dados, os dados so mantidos em um dispositivo fsico de armazenamento e s podem ser removidos por alguma requisio explcita a esse gerenciador. Na orientao a objetos, a persistncia de objetos diz respeito existncia dos objetos mesmo aps o trmino da execuo do programa. O paradigma da orientao a objetos no apresenta uma soluo simples para a persistncia, raramente existe disponvel um banco de dados orientado a objetos e, geralmente, um banco de dados relacional utilizado para armazenar as caractersticas do objeto. Assim, surgem problemas na persistncia de objetos. O problema de armazenamento de objetos em estruturas relacionais j foi bastante pesquisado e apresenta algumas solues satisfatrias. Uma delas o framework Hibernate. O Hibernate um framework de persistncia de objetos sobre bancos de dados relacionais que realiza esta atividade de maneira transparente. considerado um dos maiores projetos de cdigo aberto desenvolvido em Java. As principais vantagens da utilizao do Hibernate em um projeto so (Bauer e King, 2005): Transparncia do mapeamento Orientado a Objetos vs. Relacional: os objetos e as colees de objetos so vistos sem a preocupao de referncia de esquemas, tabelas e itens de dado do banco de dados. Isto permite que o programador concentre seus esforos na aplicao dos conceitos orientados a objetos nas entidades e nos seus relacionamentos. Utilizando o Hibernate para o controle de persistncia, o programador no necessita implementar classes que realizam as operaes de insero, alterao e remoo de uma determinada entidade de negcio. Portabilidade de banco de dados: Utilizando o Hibernate, todas as classes da aplicao so mapeadas pelo framework. Este mapeamento independente do banco de dados a ser utilizado e responsabilidade do Hibernate realizar as adaptaes e tradues do mapeamento para instrues SQL compatveis a cada sistema gerenciador de banco de dados disponvel no mercado. Linguagem de consulta de objetos: Outra caracterstica muito importante do Hibernate fornecer uma linguagem de consulta bastante parecida com a SQL, a HQL (Hibernate Query Language). A HQL permite realizar consulta de objetos persistidos utilizando os conceitos orientados a objetos. Esta linguagem bastante flexvel e suas consultas apresentam um grau de compreenso maior do que a mesma consulta escrita em SQL. Isto porque as relaes entre as classes de objetos ficam transparentes para quem escreve a consulta. Por ser bastante semelhante SQL, a HQL de fcil aprendizado.

http://aosd.net/

Revista Tecnolgica, v. 17, p. 73-80, 2008.

Questes importantes na implementao de software PROBLEMA DE DOCUMENTAO

77

A questo aqui tratada a documentao das interfaces e cdigos desenvolvidos. Fazendo a pergunta: quem que gosta de documentar o que implementa, em uma sala de aula de bacharelandos em informtica ou cincia da computao possvel notar que a documentao do software pode se tornar um problema se no abordada logo no incio do projeto. Durante o desenvolvimento de uma rotina, a ateno do programador est voltada resoluo do problema. A documentao geralmente deixada para um segundo momento, que s vezes no chega nunca. Para auxiliar nesta questo, a integrao da documentao com o prprio cdigo uma proposta que evita que o programador tenha que acessar outra ferramenta para documentar o que est sendo implementado. Segundo Pamplona (2006), a linguagem Java inventou o conceito de comentrio de documentao. Este comentrio especfico para quem precisa saber o que o cdigo fonte faz sem ver o cdigo, ou seja, um comentrio para documentos. Este padro de documentao chamado de JavaDoc10.

PROBLEMA DE TESTES Murphy (2005) destaca a importncia de estar definindo testes logo no incio do processo de desenvolvimento de um software. Ele mostra que indispensvel que cada funcionalidade do sistema seja testada antes de sua integrao com os demais elementos da aplicao. As questes de teste abordadas contribuem para a implementao de classes que auxiliam na realizao de testes em funcionalidades que se integraro arquitetura. Para a implementao das classes bsicas para teste pode ser utilizado o framework de teste 11 unitrio JUnit . Com este framework, possvel construir classes de testes que so instanciadas e executadas para automatizar as atividades de teste.

PROBLEMA DE INTEGRAO O desenvolvimento de um sistema de grande porte pode envolver diferentes equipes trabalhando em paralelo. Assim, para a sua integrao, necessrio o uso de uma ferramenta de controle de verso concorrente (CVS, do ingls Concurrent Version System). 12 O Eclipse pode ser o ambiente escolhido pelo fato de possuir uma interface gil, inmeros recursos que facilitam a produo de software (assistentes e modelos) e consumir menos recurso computacional do equipamento ( mais leve). Nesse ambiente, o sistema de controle de verso j integrado. Sendo necessrio somente configurar um servidor do repositrio central.

PROBLEMA DE COMPOSIO DE ARQUIVOS DE CONFIGURAO DA APLICAO Quando se trata de um ambiente de desenvolvimento que envolve vrios frameworks, a atividade de definir os arquivos de configurao desses frameworks, para manipular os componentes da arquitetura, pode se tornar uma tarefa bastante extensa. Esses frameworks so
10 11

http://java.sun.com/j2se/javadoc/ http://www.junit.org/ 12 http://www.eclipse.org/

Revista Tecnolgica, v. 17, p. 73-80, 2008.

78

Valentim; Dias; Pacheco

configurados por meio de arquivos XML. A alterao de uma funcionalidade ou a criao de uma nova funcionalidade exige que os arquivos de configurao dos frameworks sejam atualizados. Para 13 agilizar essas atualizaes, pode ser usada a ferramenta XDoclet . XDoclet um framework que possibilita programao orientada a atributos. Utilizando os comentrios de documentao JavaDoc, possvel adicionar metadados no cdigo-fonte Java. A ferramenta analisa gramaticamente o cdigo-fonte e gera os metadados em arquivos XML. Esses arquivos so utilizados como arquivo de configurao por outras ferramentas como Spring, Hibernate e Java Faces. Desta forma, a manuteno das configuraes facilitada por que tudo se encontra dentro de um mesmo arquivo, o cdigo-fonte. Para acionar as tarefas da ferramenta XDoclet, usada uma ferramenta de compilao 14 chamada Ant . Esta ferramenta permite a criao de arquivos de configurao XML que descrevem todo o processo de compilao e implantao de uma aplicao. Seu principal objetivo substituir os complicados comandos de console que so necessrios para compilar, configurar, copiar e integrar uma aplicao. Estas atividades so abstradas em tarefas que podem ser facilmente configuradas e executadas.

APLICAO PRTICA DAS QUESTES ABORDADAS Todas essas questes respondidas formaram uma base slida para a implementao de um framework que foi desenvolvido para validao da arquitetura de software proposta por Valentin et al. (2008). Essa arquitetura faz parte do projeto de um sistema de descoberta de conhecimento em banco de dados (Knowledge Discovery in Database KDD), mas que pode ser utilizada para outros domnios. A Figura 1 mostra a rea de trabalho do ambiente de desenvolvimento do framework e a integrao das ferramentas em um nico ambiente. A seguir descrito cada item que foi destacado na figura.

13 14

http://xdoclet.sourceforge.net http://ant.apache.org

Revista Tecnolgica, v. 17, p. 73-80, 2008.

Questes importantes na implementao de software

79

1) 3)

4)

2) 5) 6)

Figura 1: rea de trabalho no ambiente de desenvolvimento Eclipse

O item 1 da Figura 1 destaca a estrutura dos projetos framework e Kdd. Como pode ser visto, cada projeto possui especificaes separadas e implementado independentemente. Porm, todos seguem uma estrutura bsica de diretrios que foi definida para melhor organizar os artefatos dos projetos. A seguir so descritos os diretrios e os arquivos em destaque no item 1: src: diretrio onde os pacotes e as classes Java so armazenados; test: diretrio onde os pacotes e as classes que implementam os testes unitrios so armazenados. Nesta pasta seguida a mesma hierarquia de pacotes da pasta src; bin: este diretrio no aparece na figura por ser um diretrio oculto, porm ele utilizado pelo compilador para armazenar as classes compiladas; hib: este diretrio armazena os arquivos de configurao do Hibernate e do Spring; WebContent: este diretrio segue a estrutura J2EE que permite a implantao de uma aplicao em diversos servidores que seguem o padro J2EE; build.xml: este o arquivo de configurao da ferramenta de compilao Ant. O item 2 da figura mostra como este arquivo organizado em tarefas. Cada tarefa configurada dentro do arquivo e pode ser acionada com um duplo clique sobre o cone da mesma; readme.txt: este arquivo descreve a estrutura de diretrio definida; schema-export.sql: este arquivo gerado pelo Hibernate, de acordo com o mapeamento dos objetos persistidos que so manipulados pelo sistema, e contm as instrues SQL que criam as tabelas, itens de dado, ndices e restries relacionais em um banco de dados; spring-beans.xml: este arquivo utilizado pelo Spring para definir algumas configuraes adicionais da aplicao. O item 3 da Figura 1 destaca a documentao integrada ao cdigo que posteriormente analisada pela ferramenta JavaDoc para gerao de documentos. O item 4 destaca a insero de metadados que so utilizados pela ferramenta XDoclet para

Revista Tecnolgica, v. 17, p. 73-80, 2008.

80

Valentim; Dias; Pacheco

gerao dos arquivos XML de configurao. Neste item, so mostrados metadados que definem a atual classe ServiceManager como uma unidade controlada pela ferramenta Spring. O item 5 destaca algumas visualizaes do ambiente. Em evidncia est a visualizao do Console onde so mostradas as mensagens de execuo da aplicao, entre outras funcionalidades. O item 6 da Figura 1 destaca a ferramenta de teste unitrio JUnit. Esta ferramenta executa os testes e indica quais foram executados com sucesso ou com falha. Com isto, o ambiente de desenvolvimento est montado.

CONCLUSO As questes no desenvolvimento de um software, apresentadas neste artigo, foram estudadas e analisadas durante o projeto de um framework, por serem consideradas imprescindveis na sua implementao. Isto ocorre por existir, atualmente disponvel no mercado, uma variedade de tcnicas e ferramentas que facilitam e tornam possvel a implementao de um software com mais rapidez e segurana. O resultado da escolha correta do ambiente de programao e demais ferramentas um produto de software de boa qualidade. No basta saber programar em uma linguagem de programao para implementar um software, necessrio, tambm, conhecer e aplicar boas prticas de programao e usar ferramentas disponveis para tornar esta atividade mais eficiente e eficaz. A aplicao prtica das questes avaliadas possibilitou a implementao de um framework que, alm de validar a arquitetura de software proposta por Valentin et al. (2008), poder ser utilizado na implementao de software de diferentes domnios.

REFERNCIAS BAUER, C., King, G., Hibernate in action. Manning Publications Co., 2005. BROEMMER, D., J2EE Best Practices - Java Design Patterns, Automation, and Performance. Wiley Publish Inc, EUA, 2003. METSKER S. J., Design Pattern Java Workbook. Addison Wesley, 2002. MURPHY, C., METHODS & TOOLS - Global knowledge source for software development professionals. Spring 13(1), ISSN 1023-4918, 2005. PAMPLONA, V. F., Tutorial Java: O que Java?, disponvel no endereo http://www.javafree.org/content/view.jf?idContent=84, acesso em agosto/2009. VALENTIN, L. G., Dias, M. M., Pacheco, R. C. S. From Reference Architecture towards Software Architecture for Knowledge Discovery in Database Systems. In: XXXIV CONFERENCIA LATINOAMERICANA DE INFORMTICA, 2008, Santa F, Anais... Santa F - Argentina, 2008. p.679688.

Revista Tecnolgica, v. 17, p. 73-80, 2008.

Vous aimerez peut-être aussi