Assessing reusable web applications: the Django ecosystem case

Carregando...
Imagem de Miniatura

Título da Revista

ISSN da Revista

Título de Volume

Editor

Universidade Federal de Minas Gerais

Descrição

Tipo

Dissertação de mestrado

Título alternativo

Analisando aplicações web reutilizáveis: o caso do ecossistema Django

Primeiro orientador

Membros da banca

Marco Túlio de Oliveira Valente
Eduardo Magno Lages Figueiredo

Resumo

Modern web applications are built on top of web frameworks, which offer benefits such as feature reuse and productivity improvement. By relying on web frameworks, developers can safely deal with many needs of real-world web applications, like authentication, session management, and URL routing. Despite the benefits of relying on web frameworks, they do not address all the needs to create web applications. It is expected that not all requirements are satisfied by the selected web framework, therefore, developers may need to implement their local solutions or rely on external libraries for reusability purposes. In particular, the Django web framework provides a rich software ecosystem of reusable packages that are available in the Django Packages platform. These reusable packages support developers with advanced development aspects, such as modern authentication, caching, and deployment. Due to the Django native structure, developers can reuse out-of-the-box applications (known as reusable apps). However, currently, it is not clear what solutions are available to be reused by developers, or how active and reliable this ecosystem really is. This information would be important to characterize the Django ecosystem, helping developers to better understand the positive and negative aspects of adopting this framework. To overcome this gap, in this research, we propose an empirical study to assess the Django ecosystem of reusable applications. We analyze 487 reusable applications to understand their target domain, level of activity, tests, and compatibility. We find that reusable applications are mostly concentrated in three categories: developer tools (27.8%), user interface (17.1%), and persistence (15.9%). We also detect that these categories have distinct characteristics. Developer tools have the highest concentration of young and inactive applications. In contrast, persistence applications are the oldest ones, while security ones are the most active. Moreover, performance applications have proportionally more tests. The most supported Python versions are 3.7 to 3.11, while the most supported Django versions are 3.2 and 4.0. Finally, based on our findings, we provide implications for both practitioners and researchers.

Abstract

Os aplicativos web modernos são construídos utilizando web frameworks, que oferecem benefícios como reutilização de recursos e melhoria de produtividade. Ao utilizar esses frameworks, os desenvolvedores podem contar com várias funcionalidades comumente requeridas por aplicações do mundo real, como autenticação, gerenciamento de sessão e roteamento de URL. Apesar dos benefícios de contar com frameworks web, eles não atendem a todas as necessidades de desenvolvimento. É esperado que nem todos os requisitos sejam satisfeitos pelo framework selecionado, portanto, os desenvolvedores podem precisar implementar suas soluções localmente ou contar com bibliotecas externas. O framework web Django em particular possui um rico ecossistema de pacotes disponíveis na plataforma Django Packages. Esses pacotes reutilizáveis oferecem diversas funcionalidades como autenticação moderna, armazenamento em cache, e integrações com sistemas externos. Devido à estrutura de aplicações construídas com o Django framework, os desenvolvedores podem reutilizar aplicativos prontos para uso. No entanto, atualmente, não está claro quais soluções estão disponíveis para serem reutilizadas pelos desenvolvedores, ou quão ativo e confiável esse ecossistema realmente é. Estas informações seriam importantes para caracterizar o ecossistema Django, ajudando os desenvolvedores a entender melhor os aspectos positivos e negativos da adoção deste framework. Para preencher essa lacuna, propomos um estudo empírico para avaliar o ecossistema Django de aplicações reutilizáveis. Analisamos 487 aplicativos reutilizáveis para entender seu domínio alvo, nível de atividade, testes e compatibilidade. Descobrimos que os aplicativos reutilizáveis estão concentrados principalmente em três categorias: ferramentas de desenvolvedor (27,8%), interfaces de usuário (17,1%) e persistência (15,9%). Detectamos também que essas categorias possuem características distintas. As ferramentas de desenvolvedor têm a maior concentração de aplicativos jovens e inativos. Em contrapartida, os aplicativos de persistência são os mais antigos, enquanto os de segurança são os mais ativos. Além disso, aplicações de desempenho possuem proporcionalmente mais testes. As versões do Python mais suportadas são 3.7 a 3.11, enquanto as versões do Django mais suportadas são 3.2 e 4.0. Finalmente, com base em nossas descobertas, apontamos implicações tanto para profissionais da área quanto para pesquisadores.

Assunto

Computação – Teses, Engenharia de software – Teses, Website – Desenvolvimento - Teses, Django (Recurso eletrônico)

Palavras-chave

software ecosystem, web development, software evolution, empirical study, Django web framework

Citação

Endereço externo

Avaliação

Revisão

Suplementado Por

Referenciado Por