Проектиране на iOS архитектура: Мотивация

Нека да подходим към темата за създаване на собствена архитектура в тази поредица от статии.

Какво е архитектура?

Архитектурата е най-високото ниво на системен дизайн.

Дизайнът на системата е начин да се улесни производството на код за приложение.

Приложението е средство, необходимо за изпълнение на (бизнес) цел.

Мога ли да го прескоча?

Дори когато не подготвяте системния дизайн преди да направите приложението, все още трябва да помислите, преди да напишете някакъв код, и това се нарича случайно проектиране на системата, което води до случайна архитектура (AA).

Лесно е да се открие случайна архитектура:
Въпрос: Защо кодът ни е толкова грозен?
О: Исторически причини ...

Какво ще спечеля?

Целта на създаването на формална архитектура, а не прескачането на кодиращи неща, е да се създадат насоки, ограничения и модели, според които кодът ще расте.

Помислете да настроите архитектурата като полагане на железопътна линия за код, който да се движи по нея като влак.

Защо бих се сдържал?

Насоките, ограниченията и моделите помагат за:

  • код, следващ принципа на най-малко учудване;
  • разберете как работи съществуваща система;
  • избягвайте изобретяването на колелото;
  • разпространявайте работещи идеи в общността.

Мога ли да използвам един от тези от интернет?

Трябва да се поучите от тях, но всички те страдат от много проблеми:

  • не предоставяйте стратегии за растеж;
  • добро прилягане само за един размер приложения и екип;
  • произволно ниво на абстракция и комуникация на компонентите;
  • неясно разпределение на ролите (гледам ви „Работник“);
  • непростим и фанатичен;)

Имам ли достатъчно умения, за да го проектирам?

Никой няма достатъчно, но колкото повече имате, толкова по-лесно е да видите светлината в края на тунел.
Ето какво ще ви помогне:

  • четете стари книги и бели книги за дизайна и моделите на системата;
  • избягвайте нови статии, които се опитват да ви продадат сребърен куршум;
  • научете какво работи за другите в производството;
  • използвайте други платформи като източник на вдъхновение;
  • изпробвайте идеи у дома, ако работят, доведете ги на работа;
  • отложете решението, ако се съмнявате (направете тъпо нещо междувременно);
  • обсъдете идеи и реализации с други.

Къде да започна?

Винаги трябва да започнем с анализиране на изискванията (както във всяко зряло начинание), които идват от целта.

Функционални изисквания.

В най-лошия случай можете да получите функционална спецификация на високо ниво, като тази:

  • Приложение за списък за пазаруване;
  • Възможност за сътрудничество по списъци;
  • Възможност за използване без интернет връзка.

На този етап бизнесът може да смята, че изискванията са достатъчни и ваша отговорност е да намерите отговори на рояка от възникнали въпроси, например:

  • Как ще изглежда потребителският интерфейс?
  • Кои устройства трябва да поддържа приложението?
  • Трябва ли да правя и от страна на сървъра?

Когато не можете да измислите други въпроси, които да зададете, е време да преминете към следващия етап.

Организационни изисквания.

Ако не е greenfield проект, може да има много ограничения при избора на вашата архитектура, поне се опитайте да отговорите на тези въпроси:

  • Кой е моят екип?
  • Какво очакват от нашата архитектура?
  • Имаме ли създадени инструменти и езици?
  • Можем ли да използваме отново съществуваща архитектура?

Мога ли най-накрая да започна да правя архитектура?

Да, можеш! Поставяйки функционални и организационни изисквания, можете да започнете да очертавате идеите си и след това да съставите официална Архитектура! Но това е съвсем различна история за разказване ...

Мога ли да се прибера вкъщи сега?

Преди да изведете идеите си в природата, предлагам да ги тествате със стрес срещу изчерпателен контролен списък, който съставих за ваше удобство.

Как да използвате контролния списък?

Вземете архитектурата на вашия кандидат и се преструвайте на негов защитник, като отговаряте на въпроси като на изпитание (представяйки си, че журито от iOS общността помага).

Благодаря ви за четенето!

Изпратете ми съобщение в Twitter за обратна връзка.

Къде да отида от тук?

Преглед на съществуващите архитектури на iOS.
Преглед на MVC модела.