TECNOLOGIAS E FERRAMENTAS UTILIZADAS EM UMA ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB Ruan Alves Brandão1, Ricardo Ribeiro Rufino1 ¹Universidade Paranaense (Unipar) Paranavaí – PR – Brasil
[email protected] [email protected]
Resumo. O presente artigo é composto de uma revisão bibliográfica de tecnologias e ferramentas que compõem uma arquitetura de software web, com o objetivo de apresentar para o leitor uma arquitetura de software de alto nível e referência no mercado de trabalho, para tanto foi realizada uma pesquisa bibliográfica em diversos meios como livros, e-books, e etc. O conhecimento proporcionado por meio das pesquisas para o desenvolvimento permite inferir que existem ainda mais tecnologias e ferramentas que podem ser exploradas, mas as destacadas neste artigo apresentam grande performance e são recomendadas por diversos desenvolvedores experientes. 1. Introdução No atual contexto de produção de software web um conjunto de tecnologias e ferramentas que ao serem utilizadas juntas trazem um resultado satisfatório que algumas vezes pode exceder as expectativas dos indivíduos envolvidos no projeto de software em questão, e consequentemente tornar-se uma arquitetura de desenvolvimento de software referência, sendo adotada por diversos desenvolvedores e fábricas de software, onde essa arquitetura referência pode até transforma-se em uma solução coorporativa. A arquitetura de software possui diversas definições, uma delas é o conjunto de elementos arquiteturais que possuem alguma organização, os elementos e sua organização são definidos por decisões tomadas para satisfazer objetivos e restrições, os elementos destacados são: processamento, dados e conexão. As relações entre os elementos possuem propriedades e restringem como os elementos devem interagir de forma a satisfazer os objetivos do sistema. Os conceitos citados e explicados acima traduzem na seguinte fórmula: Arquitetura = {Elementos, Organização, Decisões} [Perry; Wolf, 1992]. O padrão ISO/IEEE define arquitetura de software como a organização fundamental de um sistema em seus componentes, seus relacionamentos com o ambiente, e os princípios que conduzem seu design e evolução [ISO-Architecture, 2011]. Essa pesquisa tem como objetivo apresentar tais componentes ou elementos que formam a arquitetura de software.
2. Metodologia Para a realização desse trabalho foram necessárias diversas pesquisas em materiais como livros, e-books, sites da internet e artigos. O material levantado pelas pesquisas é de grande volume, por isso só as partes principais foram utilizadas para construção desse artigo. A verdadeira meta foi apresentar um pouco sobre cada ferramenta e tecnologia utilizada em uma arquitetura de desenvolvimento de software web. 3. Desenvolvimento 3.1. Modelagem Utilizando a UML A UML (Unified Modeling Language) (Linguagem de Modelagem Unificada) é uma linguagem de modelagem que foi criada visando a criação de modelos abstratos de processos, assim pode ser utilizada para descrever o mundo real e os detalhes internos que descrevem um software. É uma linguagem formal e visual ao mesmo tempo, pois é definhada de forma gramatical e é baseada em diversos diagramas. A UML é considerada uma linguagem de modelagem moderna e eficiente para o desenvolvimento de artefatos como documentações e especificações de uma aplicação computacional [Gudwin, 2010]. É importante destacar que apesar da UML possuir versão, sendo a última versão disponibilizada 2.4.1 pelo seu grupo mantenedor Object Management Group não deve ser compreendida como uma linguagem de programação, pois na verdade a UML é uma linguagem de modelagem sendo umas das principais características a possibilidade de ser uma linguagem visual, para modelagem de software utilizando o paradigma de orientação a objeto. Segue como exemplo a Figura 1 – Diagrama de classe simples., um simples diagrama de classe, nele foi aplicado um dos conceitos do paradigma orientado a objeto a herança.
Figura 1 – Diagrama de classe simples.
3.2. Plataforma de Operação e o Framework JSF A plataforma J2EE Java 2 Platform Enterprise Edition é uma plataforma robusta, utilizada principalmente para o desenvolvimento e execução de aplicações no lado do servidor, possui capacidade para desenvolvimento de aplicações robustas e escaláveis, a ideia seria que o desenvolvedor escreva menos código, aproveitando toda uma plataforma de serviços e APIs (Application Programming Interface) já existente, afinal o J2EE estende do Java [Melo JR, 2007]. O JSF (Java Server Faces) é um framework de componentes do lado do servidor, é caracterizado como uma tecnologia que permite criar aplicações Java para Web utilizando componentes visuais prontos, é considerada robusta e flexível pois permite separar modelo da visão, além disso ele incorpora especificação do J2EE [Caelum, s.d.].
Um framework utilizado no mundo inteiro, é considerado uma referência para o desenvolvimento de aplicações web, ele utiliza modelo de arquitetura de software chamado MVC (Model-view-controller). Esse modelo é multicamadas, pois suporta componentes de apresentação, componentes da regra de negócio e persistência de dados e componentes da camada de controle da aplicação. O modelo MVC é considerado fantástico, pois pode ser utilizado em qualquer aplicação, utilizando qualquer tecnologia ou pacote. O padrão MVC implementa um usecase interativo nos três componentes citados anteriormente, segue uma breve descrição cada um deles [Melo JR, 2007]:
Modelo (Model): É utilizado para manipular informações, mantém o estado da View e fornece a mesma os valores atuais.
Visão (View): Camada que permite a interação do usuário com a aplicação, ela captura as ações do usuário e se comunica com o controle (Controller).
Controle (Controller): Recebe solicitações da camada de visão (View), invoca as regras de negócio necessárias, comanda a alteração do estado do modelo (Model), e a atualização das informações exibidas na camada de visão (View).
Com intuito de deixar de melhor esclarecer o funcionamento do MVC, segue a Figura 2 com a representação gráfica apresentada através de um diagrama de sequência:
Figura 2 - Diagrama de sequência do modelo MVC. Fonte: [Melo JR, 2007]
3.3. Primefaces Suite para JSF Esse framework implementa a especificação do JSF e deve ser utilizando em conjunto
com o mesmo, tem código aberto, disponibiliza uma versão gratuita e outra paga, sua utilização é possível em projetos de código aberto ou comerciais, desde que respeitados os termos da licença [PrimeFaces, s.d.]. O Primafaces conta com diversos componentes, todos personalizáveis e que implementam as tecnologias AJAX e JavaScript. O que torna o Primefaces um framework muito utilizado é o fato de ela possuir um showcase com muitos exemplos práticos da utilização de seus componentes, alguns com diversos exemplos para diversos tipos de usos, fazendo com que o desenvolvedor possa tentar aprender a usá-lo sozinho. 3.4. Eclipse A IDE (Integrated Development Environment) (Ambiente Integrado de Desenvolvimento), está IDE é open-source e não possui um fabricante e sim uma comunidade que presta o que pode ser chamado de um suporte geral à ferramenta, prestando suporte no rastreio de bugs, fóruns de discussão para os usuários entre outros, o nome dessa comunidade é Free and open-source software community. O Eclipse foi incialmente desenvolvido pela IBM (International Business Machine), que gastou a considerável quantia de 40 milhões de dólares para o desenvolvimento inicial. Pode-se notar que na última década no século XXI a IBM fez fortes contribuições para a comunidade de software livre, uma delas foi à doação da primeira versão do Eclipse a comunidade de software livre [Junnarkar, 2001]. A IDE em questão é vastamente utilizada no mercado pelo seu alto rendimento no desenvolvimento, suporta a linguagem JAVA, C/C++, PHP entre outras, e também a plataforma Android, possui uma arquitetura que pode ser considerada modular, pois permite a utilização de diversos plug-ins para contemplar todas as necessidades extras do desenvolvedor. 3.5. Banco de dados Um banco de dados é um sistema que permite armazenar informações em forma de registros, também permite buscar, atualizar e remover essa informação que pode ser qualquer coisa pertinente ao utilizador. O PostgreSQL é um banco de dados relacional que utiliza o padrão ANSI (American National Standards Institute) (Instituto Americano Nacional de Padrões) e possui todas as características de vários outros bancos de dados robustos, mas com uma diferença, ele é open-source, essa é uma propriedade interessante caso o desenvolvedor tenha interesse em mudar algo em seu banco de dados com objetivo de satisfazer alguma necessidade específica do projeto de software, esse banco pode ser gerenciado pelo SGBD (Sistema Gerenciador de Banco de Dados) pgAdmin que possui uma interface gráfica agradável e de fácil utilização mesmo por um desenvolvedor pouco experiente. O PostgreSQL é considerado o banco de dados mais avançado do mundo devido á diversas propriedades que em sua maioria somente estão presentes em produtos comerciais [Worsley; Drake, 2013].
3.6. Servlet Container Um servlet container é um programa compilado e executável, a função principal do servlet é carregar, inicializar e executar servlets, quando uma página web faz uma solicitação ao servlet, o servidor entrega a solicitação para o container que contém o servlet, esse container gerencia o ciclo de vida e da suporte às páginas, o sistema será executado utilizando o Apache Tomcat na versão 7.0 da Apache Software Foundation. O Apache Tomcat é servlet container é muito estável e possui todas as propriedades de um servlet container comercial, mesmo sendo uma ferramenta opensource [Vukotic; Goodwill, 2011]. Sua capacidade estende-se pois o mesmo pode atuar como um servidor web HTTP (Hyper Text Transfer Protocol) totalmente em Java. 3.7. Repositório Maven Na última década, notou-se a necessidade de gerir melhor o desenvolvimento de software para se criar as chamadas “soluções corporativas” a fim de garantir propriedades como: segurança, robustez, acessibilidade, integração, etc. Maven é uma ferramenta utilizado para gerenciamento de projetos, e suas dependências, é um projeto de código livre mantido pela Apache Software Foundation [Santos, 2008]. O Maven é configurado por meio do arquivo pom.xml, (Project Object Model) nele são inseridas as configurações gerais do projeto, como nome do projeto, tipo de empacotamento, suas dependências, repositórios de onde as dependências serão buscadas, esses repositórios podem ser locais ou remotos, se o artefato não for localizado no repositório local, o Maven irá tentar buscar utilizando um repositório remoto o mesmo estiver inserido. Também é permitida a configuração de plug-ins adicionais, para satisfazer a necessidade do desenvolvedor ao construir e fazer o deploy do seu projeto. 3.8. Segurança A maioria dos softwares são contemplados com um módulo de segurança, mesmo que seja uma implementação mínima, mas ela existe, afinal é uma necessidade proteger a informação a fim de garantir a integridade da mesma. Spring Security é um framework utilizado para a implementação da segurança, a utilização do framework é considerada simples pois não necessita de muitas alterações no código, para implementação do Spring Security o mínimo necessário é a adição de alguns filtros ao descritor de implantação do J2EE, (web.xml), e a adição de um arquivo XML (eXtensible Markup Language) (Linguagem de Marcação Extensível) ao projeto com as especificações mínimas necessárias para o funcionamento da ferramenta junta ao projeto, o site do framework disponibiliza um amostra desse arquivo e indicações de como deve ser integrada ao projeto, a utilização do framework para implementação de autenticação por login e senha é simples, mas se o desenvolvedor desejar ir mais a fundo, a ferramenta permite, pois possui uma arquitetura altamente mutável [Spring Security, s.d.].
4. Considerações Finais Uma arquitetura de software web que adapta-se bem a diferentes escopos e traz bons resultados ao processo de desenvolvimento de software, é algo muito importante para qualquer profissional na vasta área da Tecnologia da Informação que esteja envolvido no desenvolvimento de uma aplicação computacional para qualquer tipo de plataforma. A tecnologia, ou ferramenta só é tão boa quanto o domínio que o seu usuário tem sobre ela, para qualquer tecnologia, ferramenta ou novo processo é necessário tempo, para agregar conhecimento até chegar ao ponto que possa ser aproveitado o máximo oferecido. Os elementos da arquitetura aqui proposta não é considerado um modelo a ser seguido, pois um indivíduo não deve acorrentar-se a uma única arquitetura, afinal de contas o mercado de software e as necessidades dos clientes são mutáveis, mas essa é uma arquitetura que já provou ser bem eficaz e se necessário pode ser adaptável de acordo com a necessidade do projeto de software. 5. Referências ISO-Architeture. ISO/IEC/IEEE 42010:2011: System and software engineering – Architecture description. Available on: . Access: August 13. 2014. Gudwin, Ricardo. (2010). Introdução à linguagem UML. Disponível em: . Acesso em: 15/08/2014. Junnarkar, Sandeep. (2001). IBM makes $40 million open-source offer, CNET, San Fransisco, nov. 2001. News - Business Tech. Available on: . Access: May 20. 2014. Melo Jr, Cleuton Sampaio, 2007, Guia do Java Enterprise Edition 5: desenvolvendo aplicações corporativas. 5. ed. Rio de Janeiro: Brasport. Perry, D. E.; WOLF, A. L. (1992). Foundations for The Study of Software Architecture. Available on: . Access: August 13. 2014. SIGSOFT Software Engineering Notes, 17(4), 40–52. PrimeFaces. PrimeFaces ultimate JSF comonent suite. Available on: . Access: August 14. 2014. Santos, W. (2008). Introdução ao Apache Maven. Belo Horizonte: Eteg. Spring Security. Spring Security. Available on: . Access: August 20. 2014. Vukotic, A. and Goodwin, J. (2010). Apache Tomcat 7. Las Vegas: Apress, 2010, 296 p. Worsley. J. and Drake, D, J. (2012). Pratical PostgreSQL. Sebastopol, O’Reilly Media, 2012, 640p.