Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aggiunge "Sviluppo Mobile" #152

Merged
merged 26 commits into from
Jan 27, 2024
Merged
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
2393c53
feat: sviluppo mobile - aggiunta definizione, fasi e cenni storici
AngeloAvv Oct 22, 2023
e079d7f
Merge branch 'main' into add/sviluppo-mobile
AngeloAvv Nov 5, 2023
bc79dde
chore: sviluppo mobile - spostamento capitolo in language driven
AngeloAvv Nov 5, 2023
e56bcfa
chore: sviluppo mobile - aggiunto piattaforme target e modalità di ri…
AngeloAvv Dec 5, 2023
062d448
chore: sviluppo mobile - modalità di sviluppo: nativo vs ibrido
AngeloAvv Dec 6, 2023
9d03b2c
chore: sviluppo mobile - il ruolo di chi sviluppa su mobile
AngeloAvv Dec 6, 2023
116d986
chore: sviluppo mobile - design system per mobile
AngeloAvv Dec 7, 2023
81afa60
chore: sviluppo mobile - ingegneria del software per lo sviluppo mobile
AngeloAvv Dec 7, 2023
fabef81
feat: sviluppo mobile - aggiunta definizione, fasi e cenni storici
AngeloAvv Oct 22, 2023
2dba573
chore: sviluppo mobile - spostamento capitolo in language driven
AngeloAvv Nov 5, 2023
7431243
chore: sviluppo mobile - aggiunto piattaforme target e modalità di ri…
AngeloAvv Dec 5, 2023
0759a2d
chore: sviluppo mobile - modalità di sviluppo: nativo vs ibrido
AngeloAvv Dec 6, 2023
7590f37
chore: sviluppo mobile - il ruolo di chi sviluppa su mobile
AngeloAvv Dec 6, 2023
44a4c2f
chore: sviluppo mobile - design system per mobile
AngeloAvv Dec 7, 2023
3a9cef5
chore: sviluppo mobile - ingegneria del software per lo sviluppo mobile
AngeloAvv Dec 7, 2023
4f16fa4
Merge remote-tracking branch 'origin/add/sviluppo-mobile' into add/sv…
AngeloAvv Dec 13, 2023
e677212
fix: correzione code review
AngeloAvv Dec 13, 2023
30e9458
fix: typo
AngeloAvv Dec 16, 2023
552a7eb
fix: aggiunti suggerimenti dopo code review
AngeloAvv Jan 19, 2024
f21b135
Merge branch 'main' into add/sviluppo-mobile
AngeloAvv Jan 19, 2024
e7cf0f6
fix: aggiunti suggerimenti dopo code review
AngeloAvv Jan 24, 2024
f93d93a
Apply suggestions from code review
Cadienvan Jan 27, 2024
3ba9abf
chore: tentando di aggiornare da main
Cadienvan Jan 27, 2024
43c8f80
Merge branch 'main' into add/sviluppo-mobile
Cadienvan Jan 27, 2024
9005636
chore: linting
Cadienvan Jan 27, 2024
8bf1378
feat: aggiunti metadata
Cadienvan Jan 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions docs/sviluppo-mobile/README.md
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ho visto che in lavorazione la sezione Nativo vs Ibrido. Che ne direste poi di aggiungere una sezione Android ed una iOS? Si potrebbe anche aggiungere una sezione Crossplatform con elencati i principali linguaggi, oppure meglio fare una sezione dedicata per ogni linguaggio crossplatform?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Io credo possa essere interessante partire da un'idea generale per scendere poi nei particolari, facendo sezioni sempre più "atomiche" e specifiche...
Magari si parte da un'overview dello sviluppo mobile e si prosegue con la sezione che introduce nativo vs ibrido.
In questo modo abbiamo un'introduzione dell'argomento, un'introduzione alla tipolgia di sviluppi e qui si può declinare a sua volta nelle varie esperienze di sviluppo, tools, framework e linguaggi ecc ecc suddividendole per OS o per cross-platform, solo introducendole/elencandole.

Poi inseriamo un bel paragrafo che ne evidenzia le differenze (angry text of wall contro le approvals per iOS obbligatorio :')) e proseguiamo approfondendo, seguendo questa suddivisione

Che ne pensate? Lascio a voi l'ultima parola perchè sono certo che avete più esperienza di me nel raccontare questo ambito!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@fulgido avevi in mente degli argomenti in particolare per una potenziale sezione Android ed iOS? Personalmente mi vengono in mente pattern architetturali e design patterns, ma non vorrei diventasse un doppione del capitolo su cui altri stanno già lavorando. @BrianAtzori sui principali linguaggi/framework cercherei di essere quanto più generico possibile perché vorrei evitare che poi emergesse fra le righe una sorta di code/framework war.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ci sta effettivamente @AngeloAvv, oltre a non scatenare framework wars rimaniamo oggettivi e non troppo opinionati e non ci avevo pensato così su due piedi!
In questo modo il capitolo verte più verso un'introduzione al mondo mobile e alla figura dello sviluppatore specializzato in mobile, vogliamo tralasciare le tecnologie o comunque dargli meno spazio?

Non è errato eh, voglio solo capire l'obiettivo del capitolo per supportarvi al meglio, ipotizzando la lettura di una persona che magari vuole appassionarsi al mondo mobile avere una dritta su come iniziare non sarebbe male imho, ci sta però evitare di dare spazio per i soliti flame

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AngeloAvv Si potrebbe parlare delle principali differenze tra Android ed iOS. Ad esempio i linguaggi nativi, le applicazioni che vengono prodotte (.apk e .ipa) ed i principali framework che vengono utilizzati. Di Android nativo so veramente poco, ma posso contribuire per la controparte iOS! E nel frattempo imparare qualcosa in più di Android :D

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P.S. @AngeloAvv @BrianAtzori per evitare flame secondo me non è che bisogna evitare l'argomento, basta rimanere oggettivi. Non dobbiamo dare opinioni ma elencare le possibilità e le caratteristiche di questo ambito. È inevitabile secondo me parlare di Android ed iOS, non per creare flame ma perché effettivamente sono due ambienti di sviluppo differenti.

Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Sviluppo Mobile

## Che cos'è lo sviluppo mobile?

Per "sviluppo mobile" si intende un insieme di processi e attività che coinvolgono l'analisi, la progettazione, la realizzazione e il rilascio di una o più applicazioni la cui esecuzione avverrà su dispositivi tascabili come smartphone e tablet.

## Le fasi dello sviluppo mobile
AngeloAvv marked this conversation as resolved.
Show resolved Hide resolved

Le fasi di analisi e di progettazione nello sviluppo mobile condividono molte caratteristiche con lo sviluppo del software classico. Sebbene sia un settore di nicchia, in questo particolare momento dello sviluppo è necessario tenere in considerazione alcuni aspetti di fondamentale importanza. Ad esempio l'usabilità differente dettata dalle dimensioni compatte di uno smartphone, o dalla potenziale assenza di connettività, passando dall'architettura e dalle prestazioni del dispositivo o dalla durata della batteria.

La fase di realizzazione, come per qualsiasi tipologia di software, consiste nel tradurre il prodotto delle analisi e della progettazione in istruzioni da fornire al nostro dispositivo. Con il passare degli anni si sono consolidate due tipologie di approcci allo sviluppo: lo sviluppo nativo e lo sviluppo ibrido. Lo sviluppo nativo si è evoluto tecnologicamente nel tempo ma ha mantenuto concettualmente lo stesso significato, discorso diverso per l'approccio ibrido: nato con una particolare filosofia che ha cambiato significato grazie alla diffusione dei moderni framework di sviluppo cross-platform come React Native e Flutter.

Il rilascio di una applicazione è probabilmente l'unica fase che differisce rispetto al classico processo che avviene per altre tipologie di software. In questa fase il mobile developer deve costruire degli artefatti che nella maggior parte dei casi possono essere distribuiti ai propri utenti passando attraverso delle piattaforme che prendono il nome di Store. E' possibile distribuire queste applicazioni senza passare dagli store attraverso il sideloading, ma questo penalizzerà la diffusione del prodotto e renderà il processo di installazione e di aggiornamento più complesso del normale. Allo stato dell'arte attuale, per ragioni di sicurezza, in alcune piattaforme Apple è persino vietato il sideloading di applicazioni non distribuite attraverso lo store principale, sebbene la comunità europea stia cercando in qualche modo di forzare la mano per sfavorire il monopolio di Apple.
AngeloAvv marked this conversation as resolved.
Show resolved Hide resolved

## Cenni Storici

La nascita dello sviluppo mobile e della professione del mobile developer va fatta coincidere con la diffusione di dispositivi tascabili come smartphone e tablet, in origine definiti palmare.

Secondo [Wikipedia](https://it.wikipedia.org/wiki/Computer_palmare), "Un computer palmare (detto anche palmare), spesso indicato in lingua inglese con la sigla PDA (Personal Digital Assistant), o con l'ormai desueto termine palmtop, è un computer di dimensioni contenute, tali da essere portato sul palmo di una mano (da cui il nome), dotato anche di un touch screen."

Questi computer sono nati principalmente con l'obiettivo di avere con sé agende, calendari, rubriche e calcolatrici dalle dimensioni contenute che potessero essere facilmente riposte in tasca o in un piccolo contenitore più facilmente trasportabile rispetto ad un laptop.

Le aziende pioniere di questo settore sono state Palm, Texas Instruments e Microsoft: sebbene i primi palmare altro non erano che calcolatrici arricchite di funzionalità come rubrica e calendario, con il passare degli anni questi strumenti hanno iniziato ad evolvere e, di pari passo con il diffondersi a macchia d'olio di Internet e della microminiaturizzazione, a convergere verso un unico dispositivo ad oggi noto come smartphone.

I primi palmare ad essere di fatto degli smartphone sono stati i Pocket PC di Microsoft. L'azienda di Redmond realizzò una piattaforma denominata Windows CE (Windows Embedded Compact) installabile su tutta una serie di dispositivi tascabili. Su questa piattaforma Microsoft ha continuato a realizzare versioni parallele dei suoi principali sistemi operativi Microsoft Windows compatibili con processori ARM, MIPS o SH3.

L'abbandono del concetto di palmare e la convergenza verso gli smartphone si è avuta con la diffusione delle connessioni a Internet sui telefoni cellulari e con l'introduzione di sempre più strumenti accessori come il GPS, la radio FM, la fotocamera, e tutta la sensoristica di base di cui sono dotati gli ormai moderni smartphone.

A dominare la prima generazione di smartphone è stata Nokia con SymbianOS. La multinazionale finlandese ha letteralmente conquistato le tasche della popolazione mondiale grazie al suo sistema operativo in grado di far girare le prime applicazioni realizzate in JavaME (Java MicroEdition). Sebbene inizialmente lo sviluppo di applicazioni per palmare e smartphone era un'attività riservata a chi era stato fisicamente assunto presso l'azienda madre, con la diffusione di Java, chiunque poteva studiare l'SDK della Sun per realizzare le proprie applicazioni.

La generazione successiva di smartphone ha visto contendersi il mercato da aziende come Apple con l'introduzione dell'iPhone, uno dei primissimi smartphone privi di tastiera fisica e dotato esclusivamente di touchscreen; BlackBerry con il suo BlackBerry OS, Microsoft con Windows Phone, Nokia con SymbianOS e Google con Android. Di queste realtà, ad oggi fra i principali player si annoverano solo Apple con iOS/iPadOS e Google con Android: molte delle aziende precendemente menzionate non sono state in grado di innovarsi e tenere il passo nella scena mobile.

In questi anni, alcune realtà come Samsung prima e Huawei poi hanno tentato in qualche modo di eliminare il duopolio di Apple e Google, senza successo. Ad oggi, sviluppare su mobile significa sostanzialmente realizzare applicazioni per iPhone e iPad compatibili con il sistema operativo iOS sul fronte Apple, e per smartphone e tablet che montano il sistema operativo di Google sul fronte Android.

## Le Piattaforme Target

TODO

## Modalità di sviluppo: Nativo vs Ibrido

TODO

## Il ruolo di chi sviluppa su mobile

TODO