Mobile Applications have revolutionised the way we interact with computing devices. It is estimated that, in 2021, each user spent, on average, 4.8 hours a day using mobile apps. The two main operating systems for mobile devices are Apple iOS and Google Android. In this Thesis, I analyse a set of 140 selected open-source native iOS applications and their evolution to gain insights into three areas: used programming languages, chosen user interface definition methods and adopted dependencies. Native iOS app development has historically been characterised by the use of Objective-C and, from 2014, of a new, more modern programming language, Swift. Using a line-of-code counter tool, I evaluated the percentage of code for each language available in a subset of commits for each app. Currently, Swift has overtaken Objective-C in adoption rates: 94% of all apps contain Swift code. I also observed that it takes, on average, six months to one year for most apps to adopt a new release of Swift. The two user interface specification methods available for native iOS apps are UIKit and the more recent SwiftUI, introduced in 2019. Analysing the number of components for each of these frameworks in the app dataset, I observed that the adoption of SwiftUI is growing quickly: 64 apps out of 140 include SwiftUI elements. In particular, regarding apps whose development began after the announcement of SwiftUI, 21 out of 44 apps were built as SwiftUI apps from the beginning. Dependencies, libraries of already written code, are the reification of the code reuse principle. There are three dependency managers for iOS apps: CocoaPods, Carthage and SwiftPM. Retrieving the names of specified dependencies in the app dataset for each manager, I noticed that the first-party SwiftPM has recently become more popular than the historically renowned one, CocoaPods. I tried to find a correlation between app dimensions and the number of adopted dependencies, and I observed that it does not exist. I lastly compiled a list of the most used dependencies across the managers.

Le applicazioni per dispositivi mobili hanno rivoluzionato il modo in cui interagiamo con i sistemi elettronici. Si stima che, nel 2021, ogni utente abbia passato in media 4,8 ore ogni giorno usando applicazioni mobili. I due sistemi operativi per dispositivi mobili principali sono iOS di Apple e Android di Google. In questa Tesi analizzo un dataset di 140 applicazioni open-source native per iOS e la loro evoluzione per ottenere informazioni riguardanti tre aree: linguaggi di programmazione usati, metodi di definizione delle interfacce grafiche scelti e dipendenze adottate. Lo sviluppo di applicazioni native per iOS è stato storicamente caratterizzato dall'uso di due linguaggi di programmazione: Objective-C e, a partire dal 2014, il più moderno Swift. Usando uno strumento per il conteggio di righe di codice, ho valutato, per ogni app, la percentuale di codice in ognuno di questi linguaggi. Queste percentuali dimostrano che l'adozione di Swift ha superato, al momento, quella di Objective-C. Il 94% delle app contiene codice Swift. Ho inoltre osservato che la maggior parte delle app adotta ogni nuova versione di Swift in un periodo da sei mesi a un anno dal suo rilascio. I due metodi per la specifica di interfacce grafiche disponibili per le app iOS native sono UIKit e il più recente SwiftUI, introdotto nel 2019. Analizzando il numero di componenti relativi ad ognuno di questi framework nel dataset di app, ho osservato che l'adozione di SwiftUI è in fervente crescita: 64 app su 140 includono elementi relativi a SwiftUI. In particolare, 21 di 44 app il cui sviluppo è iniziato in seguito al rilascio di SwiftUI sono state pensate come app SwiftUI sin dall'inizio. Le dipendenze, librerie di codice già scritto, sono la realizzazione del principio di riuso del codice. Esistono tre gestori di dipendenze per iOS: CocoaPods, Carthage e SwiftPM. Dopo aver ottenuto i nomi delle dipendenze specificate nel dataset di app per ogni gestore, ho notato che, al momento, SwiftPM è più usato del gestore storicamente più noto, CocoaPods. Ho cercato una correlazione fra dimensioni delle app e numero di dipendenze adottate e ho constatato che non esiste. Infine, ho stilato una lista contenente i nomi delle dipendenze più utilizzate.

Exploring the evolution of open-source native iOS applications

BERGAMINI, GIANLUCA
2022/2023

Abstract

Mobile Applications have revolutionised the way we interact with computing devices. It is estimated that, in 2021, each user spent, on average, 4.8 hours a day using mobile apps. The two main operating systems for mobile devices are Apple iOS and Google Android. In this Thesis, I analyse a set of 140 selected open-source native iOS applications and their evolution to gain insights into three areas: used programming languages, chosen user interface definition methods and adopted dependencies. Native iOS app development has historically been characterised by the use of Objective-C and, from 2014, of a new, more modern programming language, Swift. Using a line-of-code counter tool, I evaluated the percentage of code for each language available in a subset of commits for each app. Currently, Swift has overtaken Objective-C in adoption rates: 94% of all apps contain Swift code. I also observed that it takes, on average, six months to one year for most apps to adopt a new release of Swift. The two user interface specification methods available for native iOS apps are UIKit and the more recent SwiftUI, introduced in 2019. Analysing the number of components for each of these frameworks in the app dataset, I observed that the adoption of SwiftUI is growing quickly: 64 apps out of 140 include SwiftUI elements. In particular, regarding apps whose development began after the announcement of SwiftUI, 21 out of 44 apps were built as SwiftUI apps from the beginning. Dependencies, libraries of already written code, are the reification of the code reuse principle. There are three dependency managers for iOS apps: CocoaPods, Carthage and SwiftPM. Retrieving the names of specified dependencies in the app dataset for each manager, I noticed that the first-party SwiftPM has recently become more popular than the historically renowned one, CocoaPods. I tried to find a correlation between app dimensions and the number of adopted dependencies, and I observed that it does not exist. I lastly compiled a list of the most used dependencies across the managers.
ING - Scuola di Ingegneria Industriale e dell'Informazione
4-mag-2023
2022/2023
Le applicazioni per dispositivi mobili hanno rivoluzionato il modo in cui interagiamo con i sistemi elettronici. Si stima che, nel 2021, ogni utente abbia passato in media 4,8 ore ogni giorno usando applicazioni mobili. I due sistemi operativi per dispositivi mobili principali sono iOS di Apple e Android di Google. In questa Tesi analizzo un dataset di 140 applicazioni open-source native per iOS e la loro evoluzione per ottenere informazioni riguardanti tre aree: linguaggi di programmazione usati, metodi di definizione delle interfacce grafiche scelti e dipendenze adottate. Lo sviluppo di applicazioni native per iOS è stato storicamente caratterizzato dall'uso di due linguaggi di programmazione: Objective-C e, a partire dal 2014, il più moderno Swift. Usando uno strumento per il conteggio di righe di codice, ho valutato, per ogni app, la percentuale di codice in ognuno di questi linguaggi. Queste percentuali dimostrano che l'adozione di Swift ha superato, al momento, quella di Objective-C. Il 94% delle app contiene codice Swift. Ho inoltre osservato che la maggior parte delle app adotta ogni nuova versione di Swift in un periodo da sei mesi a un anno dal suo rilascio. I due metodi per la specifica di interfacce grafiche disponibili per le app iOS native sono UIKit e il più recente SwiftUI, introdotto nel 2019. Analizzando il numero di componenti relativi ad ognuno di questi framework nel dataset di app, ho osservato che l'adozione di SwiftUI è in fervente crescita: 64 app su 140 includono elementi relativi a SwiftUI. In particolare, 21 di 44 app il cui sviluppo è iniziato in seguito al rilascio di SwiftUI sono state pensate come app SwiftUI sin dall'inizio. Le dipendenze, librerie di codice già scritto, sono la realizzazione del principio di riuso del codice. Esistono tre gestori di dipendenze per iOS: CocoaPods, Carthage e SwiftPM. Dopo aver ottenuto i nomi delle dipendenze specificate nel dataset di app per ogni gestore, ho notato che, al momento, SwiftPM è più usato del gestore storicamente più noto, CocoaPods. Ho cercato una correlazione fra dimensioni delle app e numero di dipendenze adottate e ho constatato che non esiste. Infine, ho stilato una lista contenente i nomi delle dipendenze più utilizzate.
File allegati
File Dimensione Formato  
2023_05_Bergamini.pdf

accessibile in internet solo dagli utenti autorizzati

Descrizione: Thesis
Dimensione 3.11 MB
Formato Adobe PDF
3.11 MB Adobe PDF   Visualizza/Apri
2023_05_Bergamini_ExecutiveSummary.pdf

accessibile in internet solo dagli utenti autorizzati

Descrizione: Executive Summary
Dimensione 1.45 MB
Formato Adobe PDF
1.45 MB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/202475