Teses e dissertações

Doutoramento
Ciências e Tecnologias da Informação
Título

Web systems quality evolution: A web smells approach

Autor
Rio, José Américo Alves Sustelo
Resumo
pt
Contexto. As aplicações e os sistemasWeb raramente são estudados, provavelmente devido à heterogeneidade das plataformas (servidor e cliente) e das linguagens. Os cheiros de código (CS) são sintomas de más escolhas de conceção e implementação no desenvolvimento de software que podem levar a um aumento da incidência de defeitos, à diminuição da compreensão do código e a tempos mais longos para o lançamento. Os cheiros de código da Web são cheiros no contexto do desenvolvimento da Web. Para estudar os cheiros de código Web, é necessário considerar os CS que abrangem a sua diversidade. É necessário compreender a sua evolução e o tempo que permanecem no código. Além disso, a literatura fornece poucas provas da afirmação de que os CS são um sintoma de má conceção, conduzindo a futuros problemas nas aplicações Web. Objectivo. Construir um catálogo de CS para aplicações web. Em seguida, descobrir como os CS evoluem, a sua sobrevivência/vida em aplicações web típicas em PHP, globalmente, por âmbito ou período, e variações súbitas na sua densidade. Finalmente, para estudar a evolução e relação interna de CS em aplicações web no lado do servidor e do cliente e o seu impacto de CS (de ambos os lados) na capacidade de manutenção (problemas e defeitos da aplicação web) e no tempo de lançamento da aplicação. Método. Recolhemos e analisámos 18 CS do lado do servidor e 12 CS do lado do cliente de 12 aplicações web típicas de PHP, somando 811 lançamentos, e as suas métricas, problemas de manutenção (issues), defeitos(bugs) reportados, e datas de lançamento. Analisámos a evolução e distribuição de CS, o tempo de vida dos CS usando técnicas de análise de sobrevivência, e critérios padronizados de deteção de anomalias de evolução de CS. Utilizámos várias metodologias para identificar relações de causalidade entre as séries temporais consideradas irregulares, tais como Granger-causality e Information Transfer Entropy(TE) com CS de lançamentos anteriores (com atrasos lags de 1 a 4). Resultados. Descobrimos tendências da evolução de CS do lado do servidor e do lado do cliente. Identificámos os cheiros que mais sobreviveram. Os CS vivem cerca de 37% da vida útil das aplicações, quase 4 anos, em média; cerca de 61% dos CS introduzidos são removidos. Encontrámos anomalias na evolução de 5 aplicações. O TE mais significativo entre grupos de CS é do lado do cliente para o lado do servidor. Os CS individuais do lado do cliente contribuem mais para a evolução dos problemas, seguidos pelos CS do lado do servidor. Quase todos os CS contribuem para a evolução dos defeitos; Há uma inferência causal entre CS individuais e TTR (time-to-release). Todos os CS contribuem para problemas, defeitos, e tempo para lançamento. Conclusões. Apresentamos um catálogo de web code smells e uma plataforma web para a sua expansão. Os CS permanecem muito tempo no código; a taxa de remoção é baixa e não se alterou substancialmente nos últimos anos. Deve ser feito um esforço para evitar este mau comportamento. Há provas de inferência estatística entre cheiros de código do lado do cliente e do lado do servidor e entre os CS e aos problemas das aplicações web (ou sistemas web), defeitos, e tempo para lançamento, que convida a confirmação independente por outros investigadores.
en
Context. Web applications and systems are seldom studied, probably due to the heterogeneity of platforms (server and client) and languages. Code smells (CS) are symptoms of poor design and implementation choices in software development that may lead to increased defect incidence, decreased code comprehension, and longer times to release. Web code smells are smells in the context of web development. To study web code smells, we need to consider CS covering the diversity. Understanding their evolution and how long they stay in code is necessary. Furthermore, the literature provides little evidence for the claim that CS are a symptom of poor design, leading to future problems in web apps. Objective. To build a CS catalog for web apps. Next, to discover how CS evolve, their survival/lifespan in typical PHP web systems, globally, by scope or period, and sudden variations in density. Finally, to study the evolution and inner relationship of CS in web apps on the serverand client-sides and their impact of CS (from both sides) on maintainability (web app issues and bugs) and app time-to-release. Method. We collected and analyzed 18 server-side and 12 client-side CS from 12 typical PHP web apps, summing 811 releases and their metrics, maintenance issues, reported bugs, and release dates. We analyzed CS evolution, distribution and lifespan using survival analysis techniques, and standardized CS evolution anomalies detection criteria. We used several methodologies to identify causality relationships among the considered irregular time series, such as Granger-causality and Information Transfer Entropy(TE) with CS from previous releases (lag 1 to 4). Results. We discovered evolution trends for server- and client-side CS. We identified the smells that survived the most. CS live around 37% of applications life, almost 4 years, on average; around 61% of CS introduced are removed. We found anomalies in 5 apps’ evolution. The most significant TE between CS groups is from client-side to server-side. Individual client-side CS contribute more to issues’ evolution, followed by server-side CS. Almost all CS contribute to bugs’ evolution; There is causal inference between individual CS and time-to-release(TTR). All CS groups contribute to issues, bugs, and time-to-release (delays). Conclusions. We presented a catalog of web code smells and a web platform to its expansion. We found that CS stay a long time in code; the removal rate is low and did not change substantially in recent years. An effort should be made to avoid this bad behavior. There is evidence of statistical inference between client- and server-side CS and from the CS to web applications’ issues, bugs, and time to release, that welcomes further independent confirmation.

Data

24-jul-2023

Palavras-chave

Análise de sobrevivência
Survival analysis
Aplicações web
Code smells
Cheiros de código
Web apps
Software evolution
Causal inference
Evolução do software
Inferência causal

Acesso

Acesso livre

Ver no repositório  
Voltar ao topo