Ontwerp van iOS-architectuur: motivatie

Laten we het onderwerp van het maken van een eigen architectuur in deze reeks artikelen benaderen.

Wat is architectuur?

Architectuur is het hoogste niveau van een systeemontwerp.

Systeemontwerp is een manier om de productie van code voor een toepassing te vergemakkelijken.

Een applicatie is een medium dat nodig is om een ​​(bedrijfs) doel te bereiken.

Kan ik het overslaan?

Zelfs als u geen systeemontwerp voorbereidt voordat u de app maakt, moet u nog steeds nadenken voordat u een code schrijft, en dit wordt per ongeluk systeemontwerp genoemd, wat leidt tot accidentele architectuur (AA).

Het is gemakkelijk om accidentele architectuur te detecteren:
Vraag: Waarom is onze code zo lelijk?
A: Historische redenen ...

Wat zal ik winnen?

Het doel van het opzetten van een formele architectuur in plaats van in codering te springen, is om richtlijnen, beperkingen en patronen vast te stellen volgens welke de code zal groeien.

Denk aan het opzetten van architectuur als het leggen van een spoorweg voor een code om er als een trein langs te rijden.

Waarom zou ik mezelf bedwingen?

Richtlijnen, beperkingen en patronen helpen om:

  • code volgens het principe van de minste verbazing;
  • begrijpen hoe een bestaand systeem werkt;
  • vermijd het wiel opnieuw uit te vinden;
  • verspreid werkideeën in de gemeenschap.

Kan ik een van die van internet gebruiken?

Daar moet je van leren, maar dat ze allemaal veel problemen hebben:

  • geef geen groeistrategieën;
  • goed geschikt voor slechts één grootte van apps en team;
  • willekeurig niveau van componenten abstractie en communicatie;
  • vage rolverdeling (ik kijk naar je "Werker");
  • meedogenloos en fanatiek;)

Heb ik voldoende vaardigheden om het te ontwerpen?

Niemand heeft genoeg, maar hoe meer je hebt, hoe gemakkelijker het is om het licht aan het einde van een tunnel te zien.
Dit is wat u zal helpen:

  • lees oude boeken en whitepapers over systeemontwerp en patronen;
  • vermijd nieuwe artikelen die u een zilveren kogel proberen te verkopen;
  • leer wat werkt voor anderen in productie;
  • gebruik andere platforms als inspiratiebron;
  • probeer ideeën thuis, als ze werken, breng ze aan het werk;
  • stel de beslissing uit als je twijfelt (maak ondertussen iets doms);
  • ideeën en implementaties bespreken met anderen.

Waar te beginnen?

We moeten altijd beginnen met het analyseren van vereisten (zoals bij elke volwassen poging) die uit het doel voortvloeien.

Functionele vereisten.

In het ergste geval kunt u een functionele specificatie op hoog niveau krijgen, zoals deze:

  • Boodschappenlijst applicatie;
  • Mogelijkheid om samen te werken op lijsten;
  • Mogelijkheid om te gebruiken zonder internetverbinding.

In dit stadium kan het bedrijf denken dat de vereisten voldoende zijn en het is uw verantwoordelijkheid om antwoorden te vinden op de zwerm vragen die zich voordoen, bijvoorbeeld:

  • Hoe ziet de gebruikersinterface eruit?
  • Welke apparaten moet de app ondersteunen?
  • Moet ik ook server-side maken?

Wanneer je geen andere vragen kunt bedenken, is het tijd om door te gaan naar de volgende fase.

Organisatorische vereisten.

Als het geen greenfield-project is, zijn er mogelijk veel beperkingen op uw architectuurkeuze, probeer in ieder geval deze vragen te beantwoorden:

  • Wie is mijn team?
  • Wat verwachten ze van onze architectuur?
  • Hebben we hulpmiddelen en talen vastgesteld?
  • Kunnen we een bestaande architectuur hergebruiken?

Kan ik eindelijk beginnen met het maken van architectuur?

Ja dat kan! Door functionele en organisatorische vereisten samen te stellen, kunt u beginnen met het schetsen van uw ideeën en uiteindelijk een formele architectuur samenstellen! Maar het is een heel ander verhaal om te vertellen ...

Mag ik nu naar huis?

Voordat je je ideeën de vrije loop laat, raad ik je aan ze te testen op een uitgebreide checklist die ik voor je gemak heb samengesteld.

Hoe gebruik je de checklist?

Neem je kandidaat-architectuur en doe alsof je voorstander bent door vragen te beantwoorden zoals op proef (een jury van een iOS-community helpt denken).

Bedankt voor het lezen!

Stuur me een bericht op Twitter voor feedback.

Waar te gaan vanaf hier?

Overzicht van bestaande iOS-architecturen.
Herziening van het MVC-patroon.