• Nenhum resultado encontrado

uma enorme dificuldade na gestão do código assim como perda desnecessária de tempo na compreensão a estrutura existente. A linguagem Ruby apresenta esta componente dinâ- mica muito poderosa que permite agilizar e interligar rapidamente os componentes, mas pode revelar-se traiçoeira assim que o desenvolvimento código atinja um nível considerado de crescimento.

7.7 s u p o r t e e m a n u t e n ç ã o

O suporte e a manutenção prestada aos Frameworks é um fator de grande importância na escolha de tecnologias. Apesar de tanto Struts2 e Rails se apresentarem como Frameworks maduros e com provas dadas pelas aplicações que se encontram atualmente no mercado, a garantia de suporte ao nível de atualizações futuras é um ponto crucial. Existem varia- dos casos de Frameworks usados por pequenas empresas, que de repente deixam de obter suporte, causando a asfixia dos seus projetos e levando-os a ter que migrar o código para outras tecnologias. Nos Frameworks Struts2 e Rails, os membros da comunidade de desen- volvimento são encorajados a melhorar a qualidade dos Frameworks. Desta forma sempre que algum erro factual ou até erros relacionados com problemas de segurança graves são detetados, estes são reportados às equipas de manutenção dos Frameworks que tratam rapidamente de disponibilizar atualizações sobre a forma de um patch que será incluído posteriormente assim que uma nova versão seja disponibilizada. Dada a ampla utilização dos mesmos, mesmo quando o erro/problema encontrado não apresenta solução instantâ- nea, é normalmente encontrada um solução para contornar o problema.

Em ambos os Frameworks estudados, para além da manutenção regular, de versão para versão, são disponibilizadas e adicionadas novas funcionalidades aos Frameworks que per- mitem aumentar a produtividade.

À data da produção deste documento, ambos os Frameworks sofreram atualizações para versões mais recentes do que as que foram utilizadas na implementação de SeTaRe. Struts2 dispõe de uma nova versão 2.5.2, disponível desde 7 de Julho de 2016 e Rails com a versão

5.0.0.1, disponível desde 1 de Agosto de 2016. Este facto, por si só, revela que ambos os Frameworks podem ser considerados confiáveis no que diz respeito ao investimento para

8

C O N C L U S Ã O

No final deste trabalho, ficou bem claro que o desenvolvimento de aplicações Web, com recurso à utilização de Frameworks é cada vez mais uma tarefa imprescindível.

Tal como referido no capítulo introdutório, existem atualmente inúmeros Frameworks de desenvolvimento Web. Este documento relata, o estudo, a avaliação, e comparação dos Frameworks Ruby on Rails e Apache Struts2, este último pertencente ao universo das tecnologias Java Enterprise Edition.

Numa fase inicial foi efetuado o estudo de cada uma das tecnologias, o que permitiu conhecer quais os componentes pelas quais são constituídas e quais os princípios de desen- volvimento pelos quais se regem.

A comparação de Frameworks de desenvolvimento web revelou-se um desafio, dada a inexistência de uma forma sistemática bem definida no que diz respeito aos critérios de avaliação a usar. A fim de alcançar objetividade, foram definidos critérios que se conside- raram os mais aptos para serem testados e avaliados. No entanto é de notar que existem fatores inevitáveis que influenciam sempre os resultados, tais como:

• A ordem de implementação de cada uma das aplicações Web, que influência de uma forma indireta os tempos em desenvolvimento, pois é mais provável que seja despen- dido mais tempo para implementar na primeira tecnologia escolhida para desenvol- ver, do que na seguinte.

• O conhecimento tecnológico já existente. O conhecimento prévio da tecnologia ou de partes dela, podem influenciar o processo de aprendizagem.

À parte os fatores mencionados, foram definidos um conjunto de critérios de avaliação que se consideram importantes para as equipas de desenvolvimento, divididos em dois grupos. Numa primeira fase, foram definidos os critérios de avaliação relativamente à com- plexidade dos Frameworks e configurações necessárias para dar início ao desenvolvimento, a facilidade de utilização e consequente curva de aprendizagem, e o estado da documenta- ção existente, assim como a comunidade que lhes dá suporte. Numa segunda fase foram avaliados os resultados que os Frameworks permitem alcançar durante o desenvolvimento,

74 Capítulo 8. conclusão

nomeadamente a estrutura arquitetural de desenvolvimento e a qualidade dos recursos disponibilizados pelo ecossistema dos Frameworks.

Tanto Struts2 como Rails permitiram a implementação das aplicações de uma forma fa- cilitada, disponibilizando na maioria dos casos ferramentas de apoio ao desenvolvimento de cada tarefa específica. De uma forma geral e através da análise dos critérios definidos, chega-se à conclusão de que um Framework não é melhor que o outro no geral, mas sim em pontos específicos, portanto para ser feita a seleção do Framework ideal é necessário analisar todo o contexto onde o Framework será utilizado. Rails apresenta-se como uma distribuição bem definida que engloba todos os componentes necessários ao desenvolvi- mento, incentivando o desenvolvimento de acordo com determinadas práticas consideradas as mais corretas (cf. conventions). Através destas, é possível iniciar o desenvolvimento quase de imediato, mesmo apenas com um conhecimento básico da tecnologia. Struts2, pelo con- trário, apenas implementa a arquitetura básica do padrão MVC, não incitando nenhum tipo de nomenclatura específica de desenvolvimento. Assim surge a principal diferença entre os dois Frameworks, que demonstra que Rails é um ótimo Framework para pequenos e mé- dios projetos que pretendam ser rapidamente desenvolvidos, enquanto Struts2 oferece uma estrutura fortemente parametrizada, que se encontra preparada para integrar com todas as APIs de JEE, estando preparada para assumir o controlo em projetos de médio e grande porte.

Apesar de tudo, uma consideração final retirada deste estudo, é que ao mesmo tempo que JEE oferece um vasto leque de tecnologias como opções para o desenvolvimento, isto pode também surgir como um inconveniente. Por isto, pode afirmar-se que existe uma falha na indefinição de um standard de combinação de tecnologias para utilização. É co- mum encontrarem-se livros ou tutoriais em que para obter as mesmas finalidades se usa um conjunto de tecnologias diferentes, o que torna particularmente difícil definir com cla- reza quais os primeiros passos a dar na conceção de software. Por não existir pelo menos uma forma standard de desenvolver em JEE, como acontece com Rails, perde-se por vezes demasiado tempo com pormenores. Uma possível solução passaria por definir uma distri- buição standard de desenvolvimento completa (e. g (Facelets (JSF API) + Struts2 (Servlets API) + Hibernate (JPA API) + Tomcat (API Server)), o que faria com que uma melhor do- cumentação fosse produzida, contribuindo para uma aceitação ainda maior por parte das equipas de desenvolvimento que pretendam desenvolver utilizando JEE. Quanto a Rails, esta tecnologia demonstrou estar cada vez mais estável e madura e começa a tomar um im- portante papel no desenvolvimento Web, deixando de ser considerada como apenas mais uma ferramenta de conceção de protótipos, como aconteceu nos últimos anos.

A título pessoal, acrescento ainda que o estudo que efetuei durante o período de desen- volvimento da presente dissertação, foi efetuado em paralelo com um projeto numa bolsa de investigação ao abrigo de uma parceria entre a Bosch Car Multimedia BrgP e a Universi-

75

dade do Minho, projeto HMIExcel: "Shaping the future UMinho e Bosch”, que me permitiu colocar em prática e testar os conhecimentos aprendidos sobre Struts2.

B I B L I O G R A F I A

[1] F. M. Martins, Notas Teóricas de Arquitecturas de Software, Universidade do Minho, De- partamento de Informática, MEI, ACS, 2012-2013.

[2] Oracle, “Java platform, enterprise edition (java ee) technical documentation,” http: //docs.oracle.com/javaee/.

[3] “Apache struts2 guides,”https://struts.apache.org/docs/guides.html.

[4] “Apache struts2 api,”http://struts.apache.org/maven/struts2-core/apidocs/.

[5] D. T. Sam Ruby, David Heinemeier Hansson, Agile Web Development with Rails 4. Prag- matic Bookshelf, 2013.

[6] M. Hartl, Ruby on Rails 4 Tutorial: Learn Rails by Example. Addison-Wesley Professional Ruby Series, 2013.

[7] D. Flanagan and Y. Matsumoto, The Ruby Programming Language, 1st ed. O’Reilly, 2008.

[8] “Documentação da linguagem ruby,” https://www.ruby-lang.org/pt/ documentation/.

[9] “Documentação de ruby on rails,”http://api.rubyonrails.org/.

[10] “Manifesto for agile software development,”http://agilemanifesto.org/. [11] JetBrains, “Rubymine ide,”https://www.jetbrains.com/ruby/features/, 2013. [12] Oracle, “Netbeans ide,”https://netbeans.org/features/index.html.

[13] NetBeans, “The affable beans - e-commerce web application,” https://netbeans.org/ kb/docs/javaee/ecommerce/design.html.

[14] “Airport taxi transfers,”http://airportstaxitransfers.com/. [15] “Rental cars - aluguer de carros,”http://www.rentalcars.com/.

[16] J. Offutt, “Quality attributes of web software applications,” IEEE, Agosto 2002.

[17] L. D. J. I. Fernández-Villamor and C. A. Iglesias, “A comparison model for agile web frameworks,” 2008.

78 Bibliografia

[18] “Ruby on rails guides,”http://guides.rubyonrails.org/. [19] “Ruby on rails api,”http://api.rubyonrails.org/.

[20] D. Newton, Apache Struts 2 Web Application Development, Junho 2009.

[21] J. C. HaiLan Pan and C. Wu, “The network platform based on struts2 + jpa + spring framework,” IEEE, Setembro 2010.

[22] S. Metz, Practical Object-Oriented Design in Ruby: An Agile Primer, 1st ed. Addison- Wesley Professional, 2012.

[23] M. Fowler, Patterns of Enterprise Application Architecture. Addison-Wesley Professional, 2002.

[24] P. K. Michael Bächle, “Ruby on rails,” IEEE, Novembro 2007.

[25] S. J. Lok Fang Fang Stella and B. Wadhwa, “A comparative study of maintainability of web applications on j2ee, .net and ruby on rails,” IEEE, Outubro 2008.

Documentos relacionados