Розбираємо ази архітектури й нефункціональні вимоги

Усі статті, обговорення, новини для початківців — в одному місці. Підписуйтеся на телеграм-канал!

Вітаю, мене звати Людмила Зінченко, я Software Architect в EPAM.

У цій статті ми поговоримо про ази архітектури й нефункціональні вимоги, або non-functional requirements. Матеріал буде корисний для тих, хто тільки починає шлях в архітектурі й прагне розібратися з напрямом детальніше, а також фахівцям із певним досвідом, які хочуть систематизувати знання.

Почну з простої, однак цікавої аналогії: порівняємо Solution Architect з архітектором у класичному розумінні, тобто технологом навколишнього середовища. Уявіть, що ви клієнт і прийшли до останнього із запитом: «Спроєктуйте мені будинок». Як результат роботи ви можете очікувати на красиву картинку з гарним та сучасним зовнішнім фасадом. Але цього недостатньо. Бо архітектор також має попіклуватися про правильні розрахунки, розміри в просторі (як-от стелі, вікон, дверних проходів), місце для проведення комунікацій (електрики, водопроводу тощо) і навіть намалювати окремо, як буде проходити електропровіддя, труби і т. ін. Тобто в підсумку в архітектора буде умовно не одна картинка, а декілька, плюс креслення. І всі вони відображатимуть єдину систему з різних рівнів: фасад, планування поверхів, креслення з облаштуванням комунікацій та багато іншого.

Те саме в Solution-архітектурі. Коли ми робимо дизайн, або солюшн, то маємо піклуватися не тільки про компоненти й сервіси, з яких він складатиметься. Не можна обійтися однією гарною діаграмою. Потрібно продумати на різних рівнях, як і що виглядатиме, яка буде пропускна здатність системи, навантаження, які ресурси будуть залучені.

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

Перш ніж продовжити говорити про архітектуру і позицію Solution Architect, пояснимо певні терміни. А саме поняття бізнес-цілей, бізнес-драйверів і власне non-functional requirements, quality attribute, architecture significant requirements. Чому це важливо? Architecture in IT — це напрям в ІТ-індустрії, який має свої стандарти, сертифікати, ком’юніті, що працюють над оновленням стандартів. А ще в нього є власна термінологія, яку потрібно знати й використовувати, зокрема на співбесідах.

Business goals and business drivers

Бізнес-цілі — заздалегідь визначена мета, якої бізнес або окрема особа планує досягти за встановлений період часу.

Бізнес-драйвери — ключові вхідні дані та дії, які керують операційними та фінансовими результатами бізнесу.

Щоб розуміти, як визначити бізнес-ціль та бізнес-драйвер і навіщо, повернімося до прикладу з будинком. Коли ми поцікавимося в клієнта: «Навіщо цей будинок? Що ви хочете покращити у своєму житті?», то дізнаємося нашу бізнес-ціль. А відповідь на запитання «чи можемо ми цього досягти, використовуючи певні матеріали?» буде нашим бізнес-драйвером.

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

Тепер перейдемо до IT-індустрії. Уявімо таку ситуацію: компанія, продуктом якої є стримінгова платформа, звертається до архітектора з завданням «покращити систему». Навіщо? Щоб підвищити дохід. Бізнес-ціль вимірюється певним проміжком часу, тому тут її можна переформулювати так: «Ми хочемо підняти дохід на 15% до кінця року».

Що в цьому випадку може бути бізнес-драйвером? Наприклад, для стримінгової платформи розширення аудиторії зумовить збільшення кількості підписок, за які користувачі платять, і таким чином збільшиться дохід. Це один з варіантів розвитку бізнесу.

Інший шлях може полягати в додаванні функцій та процесів, що потребуватиме збільшення кількості співробітників. Ці оновлення будуть автоматизовані, для цього можна створити додатковий відділ або команду. Основний ресурс і драйвер у цьому випадку — це співробітники, які обслуговуватимуть нові функції.

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

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

Для визначення цілей і драйверів важливо знати, які питання ставити замовнику. Дуже часто він сам не знає, чого хоче, — це нормально. Є технічні люди зі сторони клієнта, яких наймають для покращення процесу передачі всі технічних і нетехнічних нюансів, але це не оберігає від того, що замовник може щось не згадати в розмові або просто забути.

Тож є ціла система визначення нефункціональних вимог. Це quality attributes workshops, Q&A-сесії, документація в певному вигляді та ін.

Non-functional requirements

Якщо перейти власне до визначення нефункціональних вимог, то варто згадати про типи функціональних вимог загалом. Вони діляться на функціональні та нефункціональні. Все, що відповідає на запитання «що система має робити?», — це функціональні вимоги. А «як саме?» — нефункціональні.

A screenshot of a computer screenDescription automatically generated

Нефункціональні вимоги (non-functional requirements) — набір специфікацій, які описують можливості роботи системи та обмеження і можуть бути явними або неявними.

NFR складаються з quality attribute requirements, або QAR (не плутати з QA, що тестує), і constraints. Quality attribute — це щось маленьке, конкретне, вимірюване; можна оцінити, наскільки це адресує потреби стейкголдерів. Constraints — це обмеження, які входять до non-functional requirements. Наприклад, якщо система має використовувати певну технологію або модуль, який не можна змінювати, — це констрейнт. Бюджет і вартість розробки теж можуть бути constraints.

Отже, non-functional requirements складаються з:

  1. Quality attribute requirements (QAR) — вимоги до якості, які вимірюються й оцінюються.
  2. Constraints — обмеження або обмежувальні умови, які впливають на розробку системи (наприклад, використання певної технології або дотримання бюджету).

A diagram of a diagramDescription automatically generated with medium confidence

Software quality attributes допомагають оцінити його якість з різних кутів зору. Їх можна широко класифікувати на п’ять типів: якості дизайну, якості під час виконання, системні якості, якості з погляду користувача та якості, що не пов’язані з часом виконання. Однак, якщо розглядати детальніше, існує принаймні 14 різних атрибутів, а у вікіпедії їх узагалі перелічено понад 50. Є різні класифікації за різними стандартами, і вони постійно оновлюються.

Ось основні quality attribute requirements:

  1. Performance — наскільки швидко система обробляє запити та з якою затримкою.
  2. Scalability — наскільки система може збільшити свої ресурси в умовах зростання навантаження.
  3. Usability — наскільки зручним є інтерфейс для користувачів, зокрема доступність (accessibility).
  4. Maintainability — наскільки легко підтримувати та вдосконалювати систему.
  5. Reliability — наскільки система може витримувати фейли й відновлюватись.
  6. Availability — наскільки система доступна для користувачів без перерв.
  7. Security — наскільки система захищена від несанкціонованого доступу й атак.
  8. Portability — наскільки легко переносити систему між різними середовищами.
  9. Integration — наскільки система інтегрована з іншими системами.
  10. Extensibility — наскільки легко розширювати систему новими компонентами або функціями.
  11. Flexibility — наскільки легко змінювати або замінювати компоненти системи.
  12. Compatibility — наскільки система сумісна з іншими системами або середовищами.

Введемо ще одне поняття — architecture significant requirements, адже не всі вимоги, що ми збираємо, впливають на архітектурні рішення.

Отже, architecture significant requirements (ASR) — це сукупність functional і non-functional requirements, які суттєво впливають на архітектуру системи. Зміна, додавання або видалення ASR призведе до змін в архітектурі системи.

A diagram of a diagramDescription automatically generated

Щоб ефективно візуалізувати та подати non-functional requirements замовнику, можна використовувати діаграми у формі дерева. Ось як це можна зробити на прикладі реальної системи (анонімізовано):

  1. Root node: основний корінь діаграми — це загальна категорія вимог, наприклад utility.
  2. Branches: від кореня відходять гілки, які уособлюють основні категорії вимог, такі як Performance, Security, Usability тощо. Ці категорії відображають quality attributes, які ми можемо виміряти та оцінити.
  3. Leaves: кінцеві елементи гілок — це конкретні вимоги або атрибути якості. Вони охоплюють як functional, так і non-functional requirements. Найсвітлішим кольором зображені architecture significant requirements.

A screenshot of a computer screenDescription automatically generated

Пріоритезація нефункціональних вимог

Пріоритезацію варто виділити як окремий пункт під час роботи з нефункціональними вимогами. Це ще один спосіб ефективної роботи з NFR й обов’язковий крок у процесі їхнього визначення та впровадження.

Пріоритети бізнесу та технічної команди часто відрізняються. Наприклад, бізнес може вважати певну функціональність менш важливою (low priority), тому що вона не має прямого впливу на дохід або задоволення клієнтів. Водночас для технічної команди ця функціональність критична (high або medium priority) в рамках забезпечення стабільності, безпеки або масштабованості системи.

Для ефективної пріоритезації вимог використовують різні категорії пріоритетів, такі як high, medium і low. Наприклад:

  • High priority: вимоги, які мають найбільший вплив на досягнення бізнес-цілей або стабільність системи. Їх задовольняють насамперед.
  • Medium priority: вимоги, які важливі, але не критичні. Мають бути реалізовані після вимог з високим пріоритетом.
  • Low priority: вимоги, які можуть бути корисними, але не є критичними для поточного релізу. Їх можна відкласти на пізніший час.

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

Отже, пріоритезація допомагає визначити, які вимоги є найбільш критичними для успіху проєкту. Без пріоритезації від бізнесу та технічних стейкголдерів легко зробити акцент не на ті рекваєрменти, що є найважливішими. Це може призвести до невідповідності між очікуваннями стейкголдерів і реальними можливостями системи, оскільки всі вимоги задовольнити одночасно неможливо.

Що далі

Отже, ми розглянули важливу термінологію і докладно поговорили про нефункціональні вимоги. І якщо підсумувати, що з ними робити, інструкція виглядатиме так:

  1. Визначити бізнес-цілі й бізнес-драйвери. Це етап спілкування із замовником і детальних обговорень. Лише від уміння правильно скласти й поставити запитання буде залежати успіх цього етапу, і для цього є різні техніки.
  2. Збирання і документація нефункціональних вимог. Буває, що замовник не знає, які нефункціональні вимоги підійдуть. Тоді варто запропонувати йому варіанти й подати це у вигляді таблиці, текстового документа або діаграми, наприклад utility tree.
  3. Пріоритезація. Процес пріоритезації має бути прозорим, гнучким та визначатися двома сторонами — і бізнесом, і технічною командою.
  4. Адресування вимог.

Й ось нарешті на четвертому кроці ми доходимо до адресування (задоволення) вимог, що є, напевно, найцікавішим кроком для всіх інженерів. Тоді йдеться вже власне про створення архітектури, про дизайн архітектури. Результатом можуть бути діаграми, іноді із супутнім описом.

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

Саме тому існують цілі типології та підходи для візуалізації, такі як C4 Model і 4+1 View Model, їхній мікс тощо. За цим принципом на систему можна дивитися з різних перспектив. Наприклад, у C4 Model виділяють такі чотири діаграми:

  1. System context diagram.
  2. Container diagram.
  3. Component diagram.
  4. Code diagram.

Треба пам’ятати, що кожна діаграма має свою кінцеву аудиторію і призначена для певних цілей.

Це ціле мистецтво — створювати діаграми для правильної аудиторії та з правильними компонентами й деталізацією. Саме на діаграмі ми як архітектори зобов’язані показати, як саме адресуємо вимоги, а після цього ще й детально описати, який патерн чи тактику було використано в конкретному випадку.

Це досить об’ємна тема, тож я наведу тут лише один маленький приклад з адресуванням security.

Для адресування кожної quality attribute є цілий набір технік і патернів. Наприклад, для security такими можуть бути Federated identity, Gatekeeper, Valet key тощо.

Якщо ми як архітектори обираємо певний патерн, то маємо пояснити чому. Наприклад, система, яку ми створюємо, має декілька доменів, і є вимога, щоб користувачі могли залогінитись у всі ці домени за допомогою одних і тих самих логіна й паролю. Отож Federated identity тут ідеально підходить. Тоді ми обираємо цей патерн і наносимо його на діаграму, де і всі компоненти. Також, якщо частиною адресування вимоги security є використання HTTPs замість HTTP, шифрування даних чи використання закритої мережі, або whitelisting, ми також маємо відобразити це на діаграмах.

Нижче наведено приклад, як можна намалювати Federated identity pattern. На діаграмі бачимо, що відображена лише маленька частина системи, показано, як ми адресуємо security саме цим патерном.

A diagram of a software companyDescription automatically generated with medium confidence

Висновок

Основна помилка, яку я помічаю, — застосовування патернів і технік просто тому, що вони популярні, хайпові. Проте завжди важливо розуміти, звідки ноги ростуть, та починати аналіз згори — з бізнесу, бізнес-цілей — і вже тільки тоді складати список актуальних для конкретної системи вимог (ASR). І як останній фінальний етап — підбирати техніки й патерни, що можуть допомогти у вирішенні завдання. Бо кожен дизайн (архітектура) чи патерн вирішує певну проблему, вимогу. А в голові архітектора має бути чітка зв’язка, яку вимогу / проблему ми вирішуємо. Лише тоді можливо побудувати дійсно якісну систему.

👍ПодобаєтьсяСподобалось22
До обраногоВ обраному23
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Так і наприклад про метод Буча при проектуванні теж нічого, хоча він явно використовується. В статті ми бачимо C4 c4model.com а не скажімо Use Case діаграми.
Та це в принципі ок, бо широко відомі методи вони як алфавіт — інші люди здатні їх читати. Погано коли самі масала-діаграми, чи взагалі само придуманий UML чи щось подібне, а в деяких компаніях таке справді створено сініор архітекторами та директороми з технологій і лежить в надрах корпоративних документів. І коли скажеш — а давайте це не брати, бо тоді доведеться як Rational Software робити велику роботу по загальному розповсюдженню, писати і видавати купу книжок, робити метод OOSE, створювати та приймати участь в міжнародному комітеті з стандартизації і т.д. тощо — вам скажуть давайте без давайте. В інших же відділах цієї же корпорації будуть використовувати ISO/IEC 19501:2005. А у клієнта буде усе що завгодно, може навіть і каракулі, при чому їх чомусь виявиться теж можливо якось читати і працюватимуть вони не гірше за методи IBM чи Пентагону, просто будуть свої.
З цим між іншим зіштовхнулась програма міжнародної космічної станції в повній мірі. Коли НАСА запитала документи щодо радянського скафандру, зокрема про надійність — інженери сказали, що радянській звіт був найкращій з тих які вони коли небудь бачили. При цьому він не відповідав жодному з їх стандартів. Там було багато узгоджень по стандартах, з рештою тою НАСА перейшло на метричну систему та систему СІ навідміну від усієї Америки.

P.S. А Пентагон та SEI і університеті Карнегі Мелоун рулить. Головний офіс в Пенсільванії. Там ніби IBM їх найбільші партнери, та вчилось купа відомого народу скажімо Джеймс Гослінг.

оли НАСА запитала документи щодо радянського скафандру, зокрема про надійність — інженери сказали, що радянській звіт був найкращій з тих які вони коли небудь бачили.

а можна пруфи, буудь ласка, де про це написано?

Та от будь ласка репорт humanresearchroadmap.nasa.gov/Evidence/reports/HAB.pdf Я про це дізнався з великого фільму Discovery, де спеціалісти NASA коли проектували МКС про це розповідали. Там куди як дальша історія, пішла ще з програми Союз-Аполон. Там між інше в конструкції станції були і політичні мотиви, скажімо японці категорично були проти стикування свого модулю до російських. Коли почали з’ясовувати чому? В рамках вирішення конфлікту (у програми завжди був загально науковий підхід до усього, в тому числі працювали соціологи і психологи, усі конфлікти детально вивчались) — виявилось, що не було жодних технічних аргументів. Японській уряд давив на інженерів, між тодішнім урядом Японії та федерації була чергова тяжба за Курильські острови. Довелось проектувати положення японського модулю так щоб він не стикувався з російськими.
Також були розмови про бюджет, чому звернулись до росіян та інших країн, теж був експеримент. НАСА почали проект власної станції як альтернативи радянькій програмі Салют-Мир. Витратили 20 мільярдів доларів, тих сами — старих доларів 80х-90х років, та при цьому не було отримано взагалі жодного результату, ну було зроблено геть нічого повна чиста дошка. Численні організації витратили бюджет просто в своє існування, мітинги та конференції. Діло зійшло с мертвої точки, коли два нових керівника намалювали авант-проект на серветці під час обіду в Токіо, де була чергова конференція і якраз японці поставили питання — коли нарешті будуть результати з цих усіх мітингів ? В Хрунічева сказали, що 20 мільярдів їм би тоді вистачило і на дві таких програми. Так само американці були здивовані, що росіяни будують комічні станції макетним шляхом як в 50-ті роки, в них вже усюди були САПР. Потім був провал дедлайну росіянами — Хрунічіва постійно скаржились, що фінансування приходить не вчасно. Зсувалось, що Єльцин і компанія (Березовскій) прокручували гроші в автопромі, тому вони йшли із затримкою тощо.

чудовий матеріал, дякую!
хто зайшов через архітектуру в назві прошу сюди
github.com/...​rtin/system-design-primer
плюс черговий раз звучить ім‘я дядька Боба

Зі статті не зрозуміло, де зв’язок між NFR, гарними діаграмами і самим програмним кодом.

Якшо брати ваш приклад, про спроєктований будинок і красиві діаграми — ну картинка була красива, клієн був у захваті, але отримав будівлю з падаючею стелею та тріщинами у стінах.
Хто винен і що робити далі?

Солюшин Архитектор — это как чайка. Прилетел, нагадил диаграммами и полетел на другой проект.

Виноваты конечно потом будут девелоперы. Какие сомнения? ;)

Во всех профессиях есть понятие квалификации. В буддизме считается что очень многие многие могут достичь нирваны, однако почитаются как инкарнации Будды только те — кто вернулся в Сансару и стал помогать другим достичь Нирваны. Кто — то малюет диаграммы, а кто-то учит остальных их малевать и с конкретными целями. Например с их помощью и выуживать требования и знания о существующих системах из клиента, о которых вам совсем ничего не известно как и о бизнес процессах которые происходят в бизнесе клиента. При этом как-то так выходит, что клиент конечно знает как и что у них работает — но формализовать оказывается довольно сложно.

А потім сюрприз, формалізувати не означає донести вимоги до виконавця.
В результаті маємо гору непотрібного паперу, який ніхто не читає. А навіть якщо читає — не розуміє, що там написано.

??? Увесь процес створення ПЗ — це процесс поступової формалізації вимог. Оператори мови програмування, чи маркапів і т.д. — це просто фінальний етап. Тут вже фінальна фаза де потрібно досягнути мінімально необхідної стадії формальності. Вважається що і на цьому етапі в будь якої програми є не формальні ділянки — тобто дефекти, які однак не впливають на головну дію системи, тобто система вдовільняє функціональним та не функціональним вимогам. Як приклад потенційно в програми може закінчитись вільна оперативна пам’ять, але на практиці в існуючих умовах експлуатації цього ніколи не відбувається.
По agile методи де команди розробки спілкуються з тими хто користується системою на пряму, і іншими підходами типу Waterflow або спіраль тут не йдеться. Гнучкі методології звісно зараз є най моднішими в індустрії (так що те що ними не є, усеодно ними називають), разом з тим вони не підходять для цілого виду робіт, або вимагають додаткових методів організації типу SAFe. В такому випадку дійсно потрібні — архітектори завдання яких координувати роботу декількох команд розробки. Коли працює одна команда на три місячне замовлення, це усе звісно нафіг не треба.

Ну зв’язок в тому, що коли маємо конфлікти в NFR, протиріччя потрібно рознести по модулях — себто, якщо в нас одночасно хочуть інтерактивність та якийсь довгий розрахунок чи запит — то інтерактивим має бути один модуль, а розрахунком займається інший. І спілкування між ними асинхронне. Інакше — код буде як в Оракла news.ycombinator.com/item?id=18442941

Буду нескромним — ось стаття на цю тему medium.com/...​distribution-b53beee65e74

Тим не менше
“As of June 2024, the most popular relational database management system (RDBMS) worldwide was Oracle”
і так вже скільки десяткив років :) ?

Якщо по поресерчити далі першого посилання то там і по іншому виглядає статистика : MySQL, PostgreSQL, Microsoft SQL Server. Що більше схоже на правду по особистому досвіду. За останні п’ять років я стикався з Oracle лише один раз. Хоча до цього працював з ним 9 років поспіль.
survey.stackoverflow.co/2023
По опитуванням Stack Overflow перша PostgreSQL, друга MySQL, Oracle — 8 в списку, що як на мене набагато більше схоже на правду.
Oracle відверто прошляпили та програли хмарні війни в одну калітку. Коли стали наздоганяти то стали далеко позаду : Amazon, Microsoft, Google та і Red Hat, VMware. Як так сталось — політикою компанії так сталось. Це вже давно не Томас Кайт та ко.

картинка була красива, клієн був у захваті, але отримав будівлю з падаючею стелею та тріщинами у стінах.
Хто винен і що робити далі?

Клієнт не мамонт, не вимре.
А архітект з сейлом молодці і пишуть про успішний успіх статтю)

Чудова стаття для тих, хто хоче далі рости в архітектурі!
На ДОУ не вистачає такого технічного контенту!

Якщо почитати коментарі, стає зрозуміло, чому на DOU мало технічного контенту. Тому що тут мало людей, які скажуть «дякую», і багато тих, хто буде чіплятися, думаючи, що вони найрозумніші.

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

В той же час ми бачимо, що багато лайкнуло і додало в закладки, тобто контент людям заходить.
І це ще одна наша особливість: не дякувати за щось хороше( я намагаюсь це виправляти ) і шукати до чого придовбатись.

чудова нагода попрактикувати антикрихкість і здоровий погуїзм до хейтерів-довбограїв)

нащо? ))

Це не технічна, прохідна стаття для досягнення цитованості окремо взятої авторки та окремо взятої компанії. Але разом з тим, на ДОУ буває гарний технічній контент.

Це нормальна стаття.
Більше половини сініорів, не кажучи вже при джунів та мідлів, не чули взагалі або, як мінімум, не зможуть тобі розказати як створюється архітектура, що таке вимоги і звідки вони беруться, не кажучи вже про розказати чим architecture significant requirements відрізняється від звичайних функціональних чи не функціональних вимог.
Більшість уявляє собі процес створення архітектури як чувак сів, нагавнякав код і далі воно якось працює.
Тому стаття, як мінімум, не зайва, а в реальності дуже навіть потрібна багатьом.

Эта статья копипаста с тренинга компании. За что тут лайкать?

Лол, а всі відвідувачі цього форуму були присутні на тому тренінгу?
У всіх є конспект по якому була написана ця стаття?

У самій копіпасті внутрішнього тренінгу нічого поганого нема, навпаки розповсюдження інфи це дуже добре.

Пане Олеже, я пропоную вам відділити загальнодоступний теоретичний матеріал і унікальний досвід автора. Цю статтю роблять унікальними саме мої особисті приклади і аналогія процесу створення архітектури ІТ і створення архітектури будинку, яка є унікальною, і я такої ніде ні в яких матеріалах не зустрічала.
Зверніть увагу, що матеріал не новий, і для багатьох неновачків вже знайомий (як і багато інших матеріалів), проте подача різна — через призму досвід кожного автора унікальна. Я використала таку аналогію і таку подачу, і щиро сподіваюся, що в такому форматі буде легше сприйняти і запам’ятати матеріал багатьом.

унікальний досвід автора
Цю статтю роблять унікальними саме мої особисті приклади і аналогія процесу створення архітектури ІТ і створення архітектури будинку, яка є унікальною, і я такої ніде ні в яких матеріалах не зустрічала.

Тільки вирішив зам’ютити тему, а тут таке.
Передивився статтю, не побачив ніякого унікального досвіду. Могли б ви продублювати ці унікальні особисті приклади?

вот валіт гад ((

Вітаю, мене звати X, я Y в L.

Я б дуже хотів бачити технічні статті, не проплачені статті, що мотивують до навчання та глубокого технічного знання, бажано з меншою кількістю афіліацій з аутсорсингом/аутстафінгом.

Стаття орієнтована на реалії нашого ІТ. Вона вийшла з формалізації процесу залучення нового клієнта до аутсорсингової/аутстафінгової компанії, які, на мою суб’єктивну думку, є дуже поганим явищем, від якого індустрія вже давно повинна була б позбутися.

До речі, я не кажу, що

architecture significant requirements

це нецікава інформація.

Я також вважаю, що авторка дуже заслуговує на повагу. Скільки я не намагався, не написав нічого навіть близько такого гарного, як тут. Тільки респект. Увесь мій бугурт стосується якості контенту в цілому, платних статей, аутсорсингу/аутстафінгу.

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

Якщо ви маєте побажання щодо тем та авторів на Форумі — буду рада поспілкуватись, можете накидати мені пропозицій, обов’язково візьмемо з командою в роботу)

дякую за відповідь!

Я здивован, якщо так, то вибачаюсь за своє невірне припущеня.

Хотів би бачити глибоко технічні статті, DYI, приклади indie hackers з України, популярні pop-культурні трендові статті у напрямку з ThePrimeagen, Theo та інших техно-поп-блогерів (так, попса, але прикольно та гарно для індустрії), інтерв’ю з українцями які мали причетність до публічних внутрішніх продуктів в тех-блогах великих продуктових компаній.

Класний запит! Дякую, порісьорчимо і, сподіваюсь, втілимо його в життя)

Мені здається, що ви трошки перемудрували і дофантазували на тему «проплаченості». Такого, очевидно, нема.

Як і нема чогось поганого в аутсорсингу, тому що це те, як працює сучасний світ, глобалізація, кластеризація регіонів, спеціалізація компаній і все таке.

Так, побачив коментарій від редакції та вибачився.

За аутсорс це моя особиста суб’єктивна думка.

Денис, це звісно дуже прикро що багато людей причетних до створення архітектури не мають знайомства з business analysis, або хоча б його підмножиною — requirement engineering .... і дізнаються (відкривають для себе) зі статей що все починається (і закінчується...) з вимог до ПЗ, це окрема тема.

Безпосередньо до статті + вашого допису ...

Введемо ще одне поняття — architecture significant requirements, адже не всі вимоги, що ми збираємо, впливають на архітектурні рішення.

Отже, architecture significant requirements (ASR) — це сукупність functional і non-functional requirements, які суттєво впливають на архітектуру системи. Зміна, додавання або видалення ASR призведе до змін в архітектурі системи.

розказати чим architecture significant requirements відрізняється від звичайних функціональних чи не функціональних вимог

питання — так чим саме вони відрізняются ? так щоб це був прийнятний критерій який можна визначити, виміряти, оцінити?

Бачу 4 тези які на мою думку частково протирічать одна одній:
1) не всі вимоги (які є функ. + нефунк., і ніякі більше вимоги) впливають на архитектуру
2) ASR складається з функ. + нефунк., і ніякіх більше вимог (іншого типу немає)
3) ASR це підмножина функ. + нефунк які впливають «суттево»
4) ASR відрізняются від «звичаних» функ. + нефунк вимог, тобто підмножина відрізняється від множини

Що таке «звичайні» вимоги і що таке «суттевий вплив»?

Це саме головне питання на мою думку. Тому що з точки зору інженерії вимог — якщо вимога провалідована з бізнесом і веріфікована з розробниками — то вимога існує (приймається) як вимога до ПЗ. На цьому етапі — вона, вимога — відділена від архитектури або дизайну рішення. Як саме вимога отримає статус «суттевого впливу»? Ким це рішення приймається? За якими критеріями? Суттєвість — це boolean (Так або Ні) або це як вона ця «суттєвість» вимірюються?

І в цій статnі це ніяк не розкрито, ні теоритично ні практично.
Тобто воно так все рівно і виходить

Більшість уявляє собі процес створення архітектури як чувак сів, нагавнякав код і далі воно якось працює.

Тільки тепер додається — сів чувак і сказав — оці ці вимоги, і ці, і ось ця вимога у куточку — вони суттєві, а інші не суттєві. Погнали код гавнякать.

Що таке «звичайні» вимоги і що таке «суттевий вплив»?

Якби ми були в академічному середовищі, то оте все що ви написали, було б вагомим недоліком статті. Але ми не там і нагадую стаття для базового рівня.
По навіть цитатам, що ви навели:
— «Звичайні» вимоги — ті що не отримали статус АСР. Ну просто не чітке формулювання дали.
— «Суттєвий вплив» — «Зміна, додавання або видалення ASR призведе до змін в архітектурі системи.» Академічне визначення від СЕІ:
An architecturally significant requirement (ASR) is a requirement that will have a profound effect on the architecture—that is, the architecture might well be dramatically different in the absence of such a requirement (сторінка 291)

Дякую, буквально такими ж словами хотів написати майже аналогічний коментар)

Добре, добре — я не хочу бути хейтером статті :)
Мабуть таки не взяв до уваги який трешак в знаннях у так званої більшості

Більшість уявляє собі процес створення архітектури як чувак сів

Мабуть таки на те що я звернув увагу — дійсно НЕ для початківців, які ще не знають базових речей.

Якщо почитати коментарі, стає зрозуміло, чому на DOU мало технічного контенту

Та бо він тут і не потрібен.
Це форум, тут поговорити а не вчитись чогось нового)

Перепостить Епам курс для SA на Доу? Ради чего?

Компанії іноді просять про активність у соц-мережах, щоб проштовщувати бренд компаніїї.
Зазвичай у таких авторів є 1-2 поста, без іншої активності (бо воно їм не потрібно)

Реклама людини, вангую скоро перекочує на іншу галеру=)

Спасибо, было интересно прочитать. Поздравляю с ростом, Людмила 👍

Как ты видишь дальнейший рост архитектора после 5-7 лет на этой роли? Переход в управление, или например ведение гильдий/практик по определенной предметной области в компании?

Quality attribute — це щось маленьке, конкретне, вимірюване;
Ось основні quality attribute requirements:
Performance — наскільки швидко система обробляє запити та з якою затримкою.
.....

Наскільки маленькими і конкретними є перелічені QAR?
І як Ви кожен з них вимірюєте? Ще й так щоб не було на кожен qar 100500 методів оцінки

І як Ви кожен з них вимірюєте? Ще й так щоб не було на кожен qar 100500 методів оцінки

Про «маленьке» — то скоріше за все неправильно сформульоване «атомарне», але хз.
По як вимірювати — це якраз робота архітектора зафіксувати з усіма стейкхолдерами (тут же поговоримо про англіцизми) як ми вимірюємо і пріоритезуємо кожен якісний атрибут. Наприклад, хтось буде міряти перформанс в кількості запитів в 1 часу, хтось у 99 персентілі запитів, хтось в 95 персентилі, хтось в середньому, а хтось в часу до першого байта. І задача архітектора це зафіксувати і прийняти дизайн рішення відповідно до погодженої метрики, а не до тієї яку прикольно пооптимізовувати розробникам.

з адресуванням security.
Це ж якийсь англіцизм чи просто буквальний переклад з доки to address an issue.

Власне в чому проблема? Вимогу можна адресувати, мітігувати, релаксити. Враховуючи відсутність сталої україномовної термінології, такі запозичення — не проблема.
Згадайте як колись (особливо росіяни) перекладали «сінглтон», як «адіночка», у нас теж пробували перекладати як «одинак». Чомусь не прижилось.
Та і адресувати (вирішити не підійде в даному контексті) — це напевне найменша проблема. Є слова типу стейкхолдери, які не зовсім «зацікавлені особи» чи «задіяні особи». Ще є проблема, хоча й менша, з перекладом reliability/durability. Usability як перекласти?

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

До речі

Integration — наскільки система інтегрована з іншими системами.

Часто використовують Integrability для однотипності з іншими «ілітіс».

verb address — think about and begin to deal with (an issue or problem).

Розглянути/ звернути увагу на — чим не краща заміна якомусь штучному «адресуванню» ?
Це взагалі якийсь словотвір, бо листування точно є, адресація також є, а адресування то до чого?

Мітігувати/ релаксити це щось з тієї ж опери. Фу-фу-фу і ка-ка-ка

Розглянути/ звернути увагу на — чим не краща заміна якомусь штучному «адресуванню» ?

Жодне з цих слів не покриває значення: адресувати — зробити якусь дію, щоб вирішити проблему, а не лише розглянути проблему. Фактично адресувати йде вже після звертання уваги чи розгляду проблеми (and begin to deal with).
Та і воно якраз не штучне, а природне запозичення.

Це досить об’ємна тема, тож я наведу тут лише один маленький приклад з адресуванням security.

Це ж якийсь англіцизм чи просто буквальний переклад з доки to address an issue.

Агов , тут є редактори? Бажано такі , що вичитують статті перед публікацією.

Бо так легше). Не треба думати

Software Architect. EPAM. Аутсорс. Закінчила вуз у 2019. Дуже мало що змінилося.

Сподіваюся, що я не прав та це мій внутрішній старий дід ниє, та тайтл по скілам, а не через аутсорсову інфляцію личок.

Software Architect. EPAM. Аутсорс. Закінчила вуз у 2019. Дуже мало що змінилося.
не через аутсорсову інфляцію личок.

А які зміни ви очікували? До чого тут інфляція тайтлів?
Власне у людини 5 років після магістратури і сумарно 8+ років ОР. Нормальний досвід, якщо не просиджувати штани.

Інша історія, що є популярна фантазія, що архітектор — це наступна личка після тімліда, який має бути крутіше сеньйора.
Насправді архітектор — це роль сфокусована на дизайні системи відповідно до вимог, а не на імплементації дизайну. Якщо ви вже претендуете на те щоб називатись дідом, то колись була посада системного аналітика, зараз вона певною мірою бізнес аналітика (тут весь спектр сеньйорності зберігся) та на софтвер архітектура (тут історично починається з сеньйор систем аналіст)

Дякую за відповідь. Я з вами трохи згоден.

Але 3 роки досвіду у EPAM починаючи зразу с Senior SWE (що вже дуже дивно, або дуже видатні навички), як лід одно з досягнень — Refined app architecture by introducing a DI framework та інші «Documentation».

А потім хоба — архітектор. Та «поради початківцям архітекторам».

Усе ок?

Це так не працює. Я дуже радий за авторку. Дуже бажаю тільки досягнень височенних. Але вибачте, це інфляція тайтлив, дуже погано для індустрії у країні, дуже погано для самої авторки, бо потім потрібно буде зіткнутися з реальністю.

Та «поради початківцям архітекторам».

Усе ок?

Усе ок :)
Бо:
— те що в тексті статті дуже схоже на матеріал САС (туди контрибютять і дуже досвідчені люди);
— тут не поради, а розкриття базових речей
— як ви сказали, стаття для початківців. Їм треба значно глибше розкриття теми?

По хорошому цей матеріал мають давати на вступній лекції по Архітектурі ПЗ в універі для 3-4 курсів.

Це назва професії, а не кваліфікації, тому і виникає батхерт. Просто в нас історично склалось, що «architect» називають кваліфікацію Principlal в термінах Google наприклад.
А професія полягає в технічному супроводженні перед-продажної підготовки, де технічний спеціаліст співпрацює разом іншими зокрема менеджером проекту та бізнес аналістом з метою формування комерційної пропозиції. Задля цього зовсім не обов’язково мати кваліфікацію рівня Principal, це просто робота яку хтось має робити. Зазвичай йдеться про людей які знаходяться як то кажуть on shore, тобто безпосередньо в офісі клієнта. І під це трохи інші вимоги, так зовнішній вигляд та вільна англійська мова будуть в пріоритеті, торгівля є торгівля. Друге це знову таки конкретні навички з розбудови програмних систем та роботи з вимогами, чому треба окремо вчитись. Злий матюкливий бородатий дядько, може і є професіоналом екстра класу з проектування ПЗ — тільки таких використовуватимуть наприклад у разі негайної потреби привести до ладу якийсь програмний проект, що валиться тобто виходить зі строків та бюджету, це теж називатимуть архітектором або новою назвою advanced engineering. При чому можуть і поправляти дизайн та архітектуру в разі наявності не врахованих на початкових фазах помилок, в реальному житті — лайно трапляється, завжди є ліміти часу, конкурентні пропозиції тощо. Під час підписання контракту — таких людей клієнту не показуватимуть. Стосується в повній мірі і продуктових компаній.
Треба виходити з того, що головна мета компанії — отримання прибутку, а не якась там абстрактна справедливість. Можна бути дуже справедливим, але мати борги по зарплатні при тому — що її загальний рівень нижче ніж по ринку. Зате в компанії супер-дупер підхід в проектуванні, DDD, мега якість і т.д. та продуктовий бізнес.

Зазвичай йдеться про людей які знаходяться як то кажуть on shore, тобто безпосередньо в офісі клієнта. І під це трохи інші вимоги, так зовнішній вигляд та вільна англійська мова будуть в пріоритеті, торгівля є торгівля.

PowerPoint architect, який не пише код, і вже не вміє програмувати, але має добрі SoftSkills?

Я би сказав швидше on shore-off shore, та який проект який клієнт, програмам, портрфель тощо. У когось це люди які «тушать пожежі», у когось це люди які працюють з вимогами.
В бізнесі усе вимірюється грошима, коли публічні фінансові звіти для компанії чиї акції котируються на NYSE чи NASDAQ показують сотні мільйонів доларів прибутку в рік і офіси в 50 країнах світу, то напевно на чомусь вище керівництво компанії знається. Станом на 2024 найбільші прибутки показали компанії : Microsoft, NVidea та Apple. В цих поважних компаніях не існує таких титулів як «Sofware architect», там вони дещо інші.
В Microsoft вони такі

  • Software Engineer I (Entry-level)
  • Software Engineer II
  • Senior Software Engineer
  • Principal Software Engineer
  • Senior Principal Software Engineer
  • Distinguished Engineer
  • Technical Fellow
Тобто за основу взята система звань Google : Junior->Middle->Senior->Staff->Senior Staff->Principal->Fellow, тільки Staff нема назви. В Україні дуже розповсюджена була система ранків IBM, де architect була назва найвищої 5-ї кваліфікації тобто рівень Technical Fellow.
Власне НАТО має стандарти на звання саме через це. В усіх арміях бригадна організація, та відповідна узгоджена система звань.

Зачем software architect told about solution architectute? Или ты хочешь level up или на визу в штаты?

Так и учёным разным нужен индекс цитирования, так есть и разные корпоративные правила — кто что должен делать чтобы получит левел ап в сениор архитекторы и т.д.. Даже если пишешь о проведении пресейлов и продуктовый менеджмент и т.п. что от дяди Боба он же Роберт Мартин и разной Чистой Архитектуры, принципов построения программных немного отличается. Специфика аутстафингового и аутсорсингового бизнеса. Так этих джентльменов переписывать то и не надо, их читать надо и применять на практике. Тут же что то вроде : «Как мы можем помочь нашим клиентам в их проблеме потому что все что нужно умеем, у нас выработанная технология серийного получения качества и результата. Покупайте наших слонов».
Но обязательно кто-нибудь злой наедет и обезценит проделанную работу. Как и на любом съезде стратаперов где вместо клиентов, стартаперы — друг другу питчат, а зарабатывает с этого мероприятия только организатор слета. При том что целевая аудитория — потенциальные покупатели и инвесторы, которых на мероприятии просто не присутствует. Другие стартаперы с ровно аналогичным конкурирующим продуктом или услугой — обязательно обгадят с ног до головы такой питч.

Я без наезда, явно пару дней работы потрачено, просто интересно зачем такую статью вообще писать, если на O-1A или EB-1A визу , то разве статьи на этом ресурсе идут в зачёт?

явно пару дней работы потрачено, просто интересно зачем такую статью вообще писать

Очевидні причини:
— асесмент
— узагальнення для себе отриманих знань
— попросили з умовного маркетингу
— просто є бажання спробувати

Щодо 2 дні, то це оглядова стаття по основам, 1-2 вечори, сумарно десь 2-6 годин (з чатГПТ скоріше 2 ніж 6).

Незважаючи, на те що стаття дуже базова, її варто кидати початківцям або навіть деяким досвідченим інженерам, для розуміння загальних процесів. Хоча я поверхнево читав, бо здогадуюсь на основі яких матеріалів вона писалась.

Человек написала чем занимается на роботе и какие имеет результаты.
Если критикуете — где ваши аргументы по списку ?

Ладно, могу накинуть из реальной жизни, а что будешь делать если бизнес цели и бизнес-факторы тебе просто не говорят? Например потому что это is not your business

Задавать наводящие вопросы, список которых у меня имеется. Там есть проблемы значительно хуже, недавно коллега писала статью о них dou.ua/forums/topic/49416 очень рекомендую. Там не добавить ни убавить.

Ладно, могу накинуть из реальной жизни, а что будешь делать если бизнес цели и бизнес-факторы тебе просто не говорят? Например потому что это is not your business

1) То велика ймовірність, що ви і не в ролі архітектора на тому проекті :)
2) Задача архітектора (тут ви правильно сказали, що це скоріше про солюшн архітектора) якраз і витягнути/зрозуміти ті самі бізнес цілі. Тут знову ж розмитість понять:
— часто під софтвер архітектором розуміють техліда або прінсіпл/стаф інженера; в такому випадку справді цілі/драйвери не дуже треба і можна працювати вже з зібраними вимогами;
— у випадку, коли все ж мова про архітектора, то зазвичай говорять офіційні цілі (цілі стейкхолдерів, наприклад політичні, доведеться вгадувати або якось діставати).

доведеться вгадувати або якось діставати

Між іншим вигадувати через метод персон абсолютно дієвий варіант. Колись давно колеги рекомендували книгу Алана Купера The Inmates Are Running the Asylum: Why High-Tech Products Drive Us Crazy and How to Restore the Sanity Одна з моїх як то кажуть настільних, закладені туди принципи можна використовувати геть для усього.

И вот сидит голова над матрицей целей, а они конфликтные, а время идёт 🙃

:) Троль вооруженный психологией Эйзенхауэра — сука опасный. SMART — тоже не плохо.

Підписатись на коментарі