Як проектувати архітектуру на етапі старту проекту?

Рубіфорс продовжує набирати оберти і сьогодні ми публікуємо наступну статтю, Марія Кулакова пише про проектування архітектури на старті проекту.

Однією з найвидатніших пам’яток Італії є Пізанська вежа. Можна багато говорити про її велич і красу. У цій статті я не буду проводити огляд місць, де протягом життя повинен побувати кожен, але, як не дивно, мова йтиме про архітектуру і як правильно її проектувати.

Так от, ціль створення такого дива була в тому, щоб вежа слугувала дзвіницею в місті Піза (це унікальний випадок того, що вежа прославилась саме завдяки своєму нахилу). Але тут питання інакше – коли вона впаде? Отже, як би сумно не було і якою б величною вона не була, рано чи пізно це станеться. Звичайно, влада країни тратить величезні кошти на те, щоб споруда стояла довше. І це дасть свій результат, але на деякий час. А все зводиться до питання: ”Чи достатньо подумав архітектор, перед тим як закладати перші камені в її фундамент?” Напевно, легко провести аналогію зі світом IT. І, мабуть, не один проект є цією вежею. Тому дана стаття про наболіле і про те, як уникнути грабель:)

Дуже часто програміст, на початку створення якогось нового проекту, намагається відразу писати код. В когось, навіть, це виходить, створюється клас за класом і…..приходить усвідомлення: “Що ж це я роблю? Та програма не працює так, як би мала”. Тоді вже написана велика кількість рядків, а найстрашніше попереду – вночі починаються снитися сни, що ти забрів в такі дебрі, що вибратись звідти можна тільки стрибнувши в розпечену лаву. І посеред ночі ти прокидаєшся в холодному поту та приймаєш рішення: “ТРЕБА ВСЕ ПОМІНЯТИ!” Звичайно, можна продовжувати варити макарони, і їх, навіть, можна буде їсти. Але, може, краще було б продумати все наперед?

Як не дивно, але першим і основним правилом для тих, хто починає створювати проект – це сісти, взяти ручку і листочок і почати малювати. Так, саме малювати. Ну якщо говорити більш детально, то ось алгоритм створення проекту:

  • Постановка задачі.
  • Мінімальний функціонал.
  • Інтерфейси.
  • Проектування.
  • Код.

Давайте пройдемося по цьому детальніше.

Чи не найголовніше завдання, яке стоїть перед програмістом – це розуміння цілі виконання даного завдання, для яких потреб воно створюється і які проблеми буде вирішувати. Тільки після чіткого усвідомлення цілей можна приступати до наступного – детально прописати всі функції, які виконуватиме програма. Можливо на даному етапі ви не знаєте, як реалізувати функцію, але то нормально. Це робиться для того, щоб було зрозуміло, які функцї є зайвими, а які потрібно додати. Інтерфейси… ні, це не ті інтерфейси, які програмісти використовують разом з класами. До написання коду ще далеко. Це користувацькі інтерфейси. Точніше те, як користувач буде взаємодіяти з програмою. Якщо це, до прикладу, сайт чи десктопна аплікація, то промалювати віконечка, текстові поля і т.д. І після того, як ви зрозуміли, як буде працювати програма з точки зору користувача, можна переходити до вияснення того, як це все буде виглядати з точки зору програміста. Отже, проектування.

Є дуже багато підходів до проектування, про які написано безліч книжок. В їхній основі лежить правило декомпозиції або “розділяй і володарюй”. Суть полягає в тому, що потрібно нашу програму розбити на такі модулі, щоб при потребі щось змінити в одній частині програми, це майже не повпливало на решту коду. Так, це звучить як суха теорія. Ну якшо говорити про практичну сторону, то це можна реалізувати з допомогою діаграм і звязків. Промалювати які будуть класи і як вони мають взаємодіяти між собою. Насправді,немає чіткого рецепту як правильніше спроектувати архітектуру, але в даному питанні більшу роль відіграє досвід проектування і чим свіжіша голова над цим працює, тим краще.

Аж тут можна починати писати код. Ну нарешті!

Не знаю, в якому стані були архітектори, які проектували Пізанську вежу, але краще буду схилятись до думки, що це сталося через брак часу. Тому завдяки їм, ми маємо чудову ілюстрацію того, як не потрібно проектувати архітектуру. А для простих смертних це є ще однією локацією в списку запланованих подорожей:)

Leave a Reply

Be the First to Comment!

Notify of
avatar
wpDiscuz