Proiectarea arhitecturii iOS: motivație

Să abordăm subiectul creării arhitecturii proprii în această serie de articole.

Ce este Arhitectura?

Arhitectura este cel mai înalt nivel al proiectării unui sistem.

Proiectarea sistemului este o modalitate de a facilita producerea de cod pentru o aplicație.

O aplicație este un mediu necesar pentru îndeplinirea unui obiectiv (de afaceri).

Îl pot sări?

Chiar și atunci când nu pregătiți proiectarea sistemului înainte de a face aplicația, trebuie să vă gândiți înainte de a scrie orice cod, iar acest lucru se numește design accidental de sistem, ceea ce duce la o arhitectură accidentală (AA).

Este ușor de detectat arhitectura accidentală:
Î: De ce codul nostru este atât de urât?
A: Motive istorice ...

Ce voi câștiga?

Scopul creării unei arhitecturi formale, mai degrabă decât a sari în chestii de codificare este de a stabili linii directoare, constrângeri și modele conform cărora codul va crește.

Gândiți-vă să configurați arhitectura ca la stabilirea unei căi ferate pentru ca un cod să se deplaseze de-a lungul ei ca un tren.

De ce m-aș reține?

Liniile directoare, constrângerile și modelele ajută la:

  • cod care urmează principiul celor mai puțin uimite;
  • înțelegeți cum funcționează un sistem existent;
  • evitați reinventarea roții;
  • răspândiți idei de lucru în comunitate.

Pot să folosesc unul dintre cele de pe internet?

Ar trebui să înveți de la acestea, dar că toate suferă de multe probleme:

  • nu oferiți strategii de creștere;
  • potrivire pentru o singură dimensiune de aplicații și echipă;
  • nivel aleatoriu de abstractizare și comunicare a componentelor;
  • distribuție vagă a rolurilor (te privesc „lucrător”);
  • neiertător și fanatic;)

Am suficiente abilități pentru a-l proiecta?

Nimeni nu are suficient, dar cu cât ai mai mult, cu atât este mai ușor să vezi lumina la capătul unui tunel.
Iată ce vă va ajuta:

  • citiți cărți vechi și cărți albe despre proiectarea și tiparele sistemului;
  • evitați articole noi care încearcă să vă vândă un glont de argint;
  • aflați ce funcționează pentru alții în producție;
  • folosiți alte platforme ca sursă de inspirație;
  • încercați idei acasă, dacă lucrează, aduceți-le la muncă;
  • amâna decizia dacă aveți îndoieli (faceți un lucru mut între timp);
  • discuta idei si implementari cu altii.

Unde să încep?

Ar trebui să începem întotdeauna prin analizarea cerințelor (ca în orice efort matur) care provin din obiectiv.

Cerințe funcționale.

În cel mai rău caz, puteți obține o specificație funcțională la nivel înalt, astfel:

  • Cerere de listă de cumpărături;
  • Capacitatea de a colabora pe liste;
  • Posibilitate de utilizare fără conexiune la internet.

În această etapă, afacerea ar putea crede că cerințele sunt suficiente și este responsabilitatea dvs. să găsiți răspunsuri la roiul de întrebări care apar, de exemplu:

  • Cum va arăta interfața de utilizator?
  • Ce dispozitive suportă aplicația?
  • Trebuie să fac și server?

Când nu vă puteți gândi la alte întrebări, trebuie să treceți la următoarea etapă.

Cerințe organizatorice.

Dacă nu este un proiect greenfield, s-ar putea să existe o mulțime de restricții în alegerea arhitecturii dvs., cel puțin încercați să răspundeți la aceste întrebări:

  • Cine este echipa mea?
  • Ce așteaptă de la arhitectura noastră?
  • Avem instrumente și limbaje consacrate?
  • Putem reutiliza o arhitectură existentă?

Pot să încep în sfârșit să fac arhitectură?

Da, poti! Prin punerea la dispoziție a cerințelor funcționale și organizaționale, puteți începe să vă conturați ideile și apoi să compuneți o Arhitectură formală! Dar este o cu totul altă poveste de spus ...

Pot să mă întorc acasă?

Înainte de a-ți lua ideile în sălbăticie, îți sugerez să le testezi pe stres pe baza unei liste de verificare cuprinzătoare pe care am compilat-o pentru comoditatea ta.

Cum se utilizează lista de verificare?

Luați-vă arhitectura candidat și pretindeți să fiți susținătorul acesteia răspunzând la întrebări precum proces (imaginarea unui juriu al comunității iOS ajută).

Vă mulțumim pentru lectură!

Mesajează-mi pe Twitter pentru feedback.

De unde să plec de aici?

Prezentare generală a arhitecturilor iOS existente.
Revizuirea modelului MVC.