Lista de Abreviaturas, Siglas e Símbolos
3 ESCOLHA DAS FERRAMENTAS COMPUTACIONAIS
3.3 FERRAMENTAS DE DESENVOLVIMENTO
3.3.2 Ferramentas de Implementação
As ferramentas de implementação são aquelas que dão suporte para criação, teste e execução de códigos computacionais. As ferramentas de implementação utilizadas no presente trabalho são: linguagem de programação (e ambiente de programação), sistema gerenciador de banco de dados, pacotes para mapeamento objeto-relacional e ferramenta para geração de gráficos.
3.3.2.1 Linguagem de Programação
Linguagem de programação é um conjunto de comandos padronizados que permitem comunicar instruções ao computador. É a linguagem de escrita dos códigos computacionais que compõem o sistema. Ex.: C, C++, Java, Python, C#, entre outras.
Apesar da linguagem C/C++ ser amplamente utilizada no domínio da engenharia, a linguagem Java SE 8 (JAVA 8 SE, 2014), foi adotada para as implementações do sistema proposto neste trabalho, pois:
• É orientada a objetos.
• É gratuita – possui licença GNU.
• Java foi criado a partir do C++, buscando-se o aperfeiçoamento dos pontos que continham desvantagens em sua precursora, criando-se assim uma linguagem mais simples e voltada para atender às necessidades do desenvolvimento de aplicações em ambientes distribuídos e heterogêneos.
• Tem um número de desenvolvedores superior ao C++.
• Proporciona desenvolvimento de aplicativos para uma grande variedade de ambientes, sendo independente de plataforma – JVM.
• Java é mais confiável, pois não permite a manipulação direta de endereços de memória como C/C++, prevenindo erros em tempo de execução.
• Possui mecanismos de tratamento de exceção mais efetivo que o C++, pois toda exceção é um objeto e pode ser tratado.
• A memória alocada em Java é liberada automaticamente pelo Garbage
Collector, tal atividade é dependente do comando do programador em C++.
• Java mapeia e localiza classes a serem utilizadas facilmente, sem a necessidade de pré-processador para resolver diretivas de inclusão de arquivos externo, por exemplo.
• Possui mecanismos que permitem a construção de programas com processamento em paralelo de instruções.
• O Java 8 incorpora conceitos das linguagens funcionais, com a LISP, facilitando a manipulação de coleções de dados, tais como as listas. Contém mecanismos de comparação, ordenação em paralelo eficientes e de fácil utilização.
Além disso, Java fornece extensa biblioteca ou pacotes de classes, que são elementos para adicionar funcionalidades à linguagem de programação escolhida, tais como:
• Criar gráficos e outras interfaces: JFreeChart (JFREECHART, 2014), JMathPlot (JMATHPLOT, 2014);
• Gerar relatórios: JasperReport (JASPERREPORT, 2014), iReport (IREPORT, 2014);
• Implementar construções matemáticas elaboradas: JMathArray
(JMATHARRAY, 2014), MatlabControl (MATLABCONTROL, 2014) (que possibilita executar o MATLAB® a partir do código Java).
3.3.2.2 Ambiente de Programação
Um ambiente de programação é um conjunto de ferramentas utilizadas no desenvolvimento de software, conforme Sebesta (2009), tais como um sistema de arquivos, um editor de texto, um ligador, um compilador, um depurador, um controlador de versão, as quais são acessadas através de uma interface uniforme. Ambiente de Programação são ambientes para escrita de programas computacionais. Ex.: NetBeans, BlueJ, Eclipse, DEVC++, Borland C++, C++ Builder. Ao se adotar a linguagem Java para implementação, os ambientes de programação ficam restritos àqueles que suportam tal linguagem. Entre os mais utilizados e conhecidos ambientes para implementações em Java é possível destacar o Eclipse (ECLIPSE LUNA, 2014) e Netbeans (NETBEANS, 2014). Qualquer um dos dois ambientes fornece características e funcionalidades equivalentes. A opção foi realizada pela familiaridade e facilidade de uso do desenvolvedor em relação ao ambiente, neste caso o Netbeans é a ferramenta escolhida. Considerando-se o fato de que o ambiente de programação é um acelerador/facilitador para a criação do código, podendo, em termos, ser dispensado, usar um ambiente equivalente, porém desconhecido, acarretaria em um atraso, que seria resultante do tempo de familiarização com o novo ambiente.
3.3.2.3 Sistema de Gerenciamento de Banco de Dados
Um sistema de gerenciamento de banco de dados (SGBD), conforme Silberschatz, Korth e Sudarshan (2006), é uma coleção de dados inter-relacionados e um conjunto de programas para acessar esses dados, cujo objetivo é recuperar informações de modo eficiente.
SGBD são aplicativos responsáveis pela administração e gerenciamento de uma ou mais base de dados, cujo principal objetivo é gerenciar o acesso, manipulação e organização dos dados. Ex.: MySQL (MYSQL, 2014), PostgreSQL (POSTGRESQL, 2014), Firebird (FIREBIRD, 2014), Oracle (ORACLE DATABASE, 2014).
Um ambiente para administrar o banco de dados é uma ferramenta que oferece interface gráfica para realizar todas as tarefas necessárias para o suporte e manutenção do banco de dados. Ex.: IBExpert, pgAdmin, entre outros.
A interação entre o Java e o SGBD é facilitada pelo JDBC (Java Database
Connetivity), o que é um mecanismo para comunicação entre o banco de dados e a linguagem
Java. A maioria dos desenvolvedores/empresas de SGBDs oferece o JDBC para o seu respetivo banco de dados.
Entre os SGBD mais utilizados estão o MySQL e o PostgreSQL, ambos são gratuitos e possuem JDBC disponível para ser utilizado em aplicações Java. Assim, diante das semelhanças entre os SGBDs, optou-se por utilizar o PostgreSQL. Entre os motivos, é possível citar: a familiaridade da equipe de implementação com o mesmo, poupando tempo de aprendizagem do MySQL; e não foram identificadas desvantagens comprometedoras ao trabalho, se comparado ao MySQL.
Associado ao uso do PostgreSQL, será utilizado o pgAdmin III (PGADMIN, 2014), que é um sistema de concepção e gestão de banco de dados PostgreSQL, disponível gratuitamente para sistemas Unix e Windows.
3.3.2.4 Mapeamento Objeto-Relacional
Conforme mencionado anteriormente, os bancos de dados orientados a objetos ainda não são tão difundidos e utilizados como as linguagens de programação orientadas a objetos. Já banco de dados relacionais são amplamente difundidos e utilizados. Desta forma o armazenamento e a recuperação de objetos em um banco de dados não são realizados diretamente, e necessita de um tratamento. Ferramentas de ORM (mapeamento objeto relacional, do inglês Object Relational Mapping) facilitam a vida do desenvolvedor ao converterem automaticamente objetos nos dados que eles representam. A necessidade do uso de ferramenta deste tipo é devida ao grau de dificuldade do domínio em questão (projetos de conversores), associada a metodologia adotada para o desenvolvimento (prototipação evolucionária). Isto ocorre porque, a cada ciclo da metodologia, novos requisitos podem ser identificados, ou os anteriormente conhecidos podem ser modificados, ocasionando alterações custosas nos modelos de dados. Ao se optar por uma ferramenta de ORM, as alterações realizadas nos objetos passaram a ser facilmente refletidas (mapeadas) no banco de dados, já que este passou a ser obtido automaticamente.
A ferramenta utilizada foi o ORMLite (Mapeamento Objeto Relacional Leve, do inglês Lightweight Object Relational Mapping) (ORMLITE, 2016), que é uma ferramenta
simples, poderosa e que evita a complexidade e sobrecarga da maioria dos pacotes ORM padrão. ORMLite é facilmente incorporada ao código Java e suporta conexões com o PostgreSQL, MySQL, entre outros. As classes são configuradas para serem persistentes em um banco de dados usando anotações OrmLite. A anotação @DatabaseTable é usada para configurar algumas classes para persistirem em tabelas de banco de dados. Da mesma forma, as anotações @DatabaseField mapeiam alguns campos nessas classes para as colunas do banco de dados. Desta forma, é possível obter o modelo de dados (tabelas e relacionamentos) a partir dos modelos de objetos (as classes).
3.3.2.5 Geração de Gráficos
O Gnuplot (GNUPLOT, 2016) foi o sistema escolhido para geração de gráficos. O Gnuplot é um utilitário de linha de comando para diferentes plataformas como Linux, OS / 2, MS Windows, OSX, VMS e outros. O código-fonte é protegido por direitos autorais, mas livremente distribuído. Ele foi originalmente criado para visualizar funções matemáticas e dados interativamente, mas evoluiu e suporta muitos usos não-interativos, como um mecanismo de plotagem para aplicativos de terceiros, como é aqui usado. Java possui um método para fazer uma chamada ao sistema operacional e facilmente rodar algum outro programa, como por exemplo o GNUPLOT, que, desta forma, pode ser utilizado para construção de gráficos a partir de diretivas criadas dentro do código Java. Os gráficos disponibilizados no sistema POCE, em sua maioria, são construídos com a ferramenta Gnuplot (GNUPLOT, 2016).
3.4. CONCLUSÃO
O presente capítulo contém as informações sobre a metodologia, ferramentas e tecnologias utilizadas para o desenvolvimento do Sistema de Projetos Otimizados de Conversores Estáticos – POCE, além das justificativas para as escolhas realizadas. Foram selecionados:
- Prototipação Evolucionária, como metodologia para o desenvolvimento software. - UML 2, como linguagem para modelagem do sistema.
- Astah Professional 6.8.0, como ferramenta case para criação dos modelos do sistema e do banco de dados.
- PostgresSQL 9.2.4 e pgAdmin III 1.16.1, como sistemas de gerenciamento de bando de dados e interface gráfica para operação do SGBD.
- ORMLite para realizar o mapeamento objeto-relacional. - GNUPLOT para geração de gráficos.