Progettare l'architettura iOS: motivazione

Affrontiamo l'argomento della creazione della propria architettura in questa serie di articoli.

Cos'è l'architettura?

L'architettura è il massimo livello di progettazione di un sistema.

La progettazione del sistema è un modo per facilitare la produzione di codice per un'applicazione.

Un'applicazione è un mezzo necessario per raggiungere un obiettivo (aziendale).

Posso saltarlo?

Anche quando non prepari la progettazione del sistema prima di creare l'app, devi ancora pensare prima di scrivere qualsiasi codice, e questo si chiama progettazione accidentale del sistema, che porta all'architettura accidentale (AA).

È facile rilevare l'architettura accidentale:
D: Perché il nostro codice è così brutto?
A: Ragioni storiche ...

Cosa guadagnerò?

Lo scopo di creare un'architettura formale piuttosto che saltare a cose di codifica è stabilire linee guida, vincoli e schemi in base ai quali il codice crescerà.

Pensa a impostare l'architettura come a costituire una ferrovia per un codice che la percorra come un treno.

Perché dovrei trattenermi?

Linee guida, vincoli e schemi aiutano a:

  • codice secondo il principio del minimo stupore;
  • capire come funziona un sistema esistente;
  • evitare di reinventare la ruota;
  • diffondere idee di lavoro nella comunità.

Posso usare uno di quelli da Internet?

Dovresti imparare da quelli, ma tutti soffrono di molti problemi:

  • non fornire strategie di crescita;
  • adatto per una sola dimensione di app e team;
  • livello casuale di componenti astrazione e comunicazione;
  • vaga distribuzione dei ruoli (ti guardo "Lavoratore");
  • spietato e fanatico;)

Ho abbastanza competenze per progettarlo?

Nessuno ne ha abbastanza, ma più ne hai, più è facile vedere la luce alla fine di un tunnel.
Ecco cosa ti aiuterà:

  • leggere vecchi libri e white paper sulla progettazione e sui modelli del sistema;
  • evitare nuovi articoli che provano a venderti un proiettile d'argento;
  • imparare cosa funziona per gli altri in produzione;
  • utilizzare altre piattaforme come fonte di ispirazione;
  • provare idee a casa, se funzionano, portale al lavoro;
  • rinviare la decisione in caso di dubbio (fare una cosa stupida nel frattempo);
  • discutere idee e implementazioni con gli altri.

Dove iniziare?

Dovremmo sempre iniziare analizzando i requisiti (come in ogni impresa matura) che provengono dall'obiettivo.

Richieste funzionali.

Nel peggiore dei casi è possibile ottenere una specifica funzionale di alto livello, come questa:

  • Applicazione della lista della spesa;
  • Capacità di collaborare su liste;
  • Possibilità di utilizzare senza connessione a Internet.

In questa fase, l'azienda potrebbe pensare che i requisiti siano sufficienti ed è tua responsabilità trovare risposte allo sciame di domande che sorgono, ad esempio:

  • Come sarà l'interfaccia utente?
  • Quali dispositivi deve supportare l'app?
  • Devo creare anche lato server?

Quando non riesci a pensare ad altre domande da porre, è tempo di passare alla fase successiva.

Requisiti organizzativi.

Se non si tratta di un progetto greenfield, potrebbero esserci molte restrizioni sulla scelta dell'architettura, almeno prova a rispondere a queste domande:

  • Chi è la mia squadra?
  • Cosa si aspettano dalla nostra architettura?
  • Abbiamo strumenti e lingue consolidati?
  • Possiamo riutilizzare un'architettura esistente?

Posso finalmente iniziare a fare architettura?

Si, puoi! Mettendo insieme i requisiti funzionali e organizzativi, puoi iniziare a delineare le tue idee e infine comporre un'architettura formale! Ma è una storia completamente diversa da raccontare ...

Posso andare a casa adesso?

Prima di portare le tue idee in libertà, ti suggerisco di sottoporle a stress in una lista di controllo completa che ho compilato per tua comodità.

Come usare la checklist?

Prendi la tua architettura candidata e fingi di essere il suo difensore rispondendo a domande come in prova (immaginando una giuria di comunità iOS aiuta).

Grazie per aver letto!

Mandami un messaggio su Twitter per un feedback.

Dove andare da qui?

Panoramica delle architetture iOS esistenti.
Revisione del modello MVC.