Мені подобається відповідь Вільяма Піетрі (+1), але я вважаю, що її потрібно додати. Навіть припускаючи, що те, що ви маєте на увазі під системами, складається виключно з програмного забезпечення.
Але перш ніж я перейду до м'яса цього, я не знаю книги, яка допоможе. Все, що випливає, я дізнався з досвіду (маючи на увазі три моменти, які зробив Вільям).
Те, про що ви говорите, охоплює як мінімум чотири широкі ролі. Іноді одна людина може заповнити всі ці ролі, для малих та середніх проектів, але коли ви починаєте з великих проектів, вам потрібно хоч дещо відокремити ці ролі. Кому-небудь важко будь-який знатний у них будь-який змістовний спосіб.
Бізнес-аналітик
Це людина, яка розмовляє із замовником і переводить їхні вимоги на те, що архітектор може мати сенс. В основному перелік правильно сформульованих вимог. Сюди входять очевидні функціональні вимоги (що повинна поставляти ця система?), А також нефункціональні вимоги (які загальні характеристики повинна виконувати система? Це може включати безпеку, надійність, доступність, стійкість, потужність, продуктивність, надійність і інші такі вимоги з точки зору користувача).
Це перший прохід того, що повинна зробити система, самий початок серйозного мислення.
Системний архітектор
Ця людина виробляє технічну базу на високому рівні, в рамках якої потрібно працювати. Вони дають план контуру матчу. Загальні інструменти, прийоми, конструкції. Вони розбивають всю систему на більш дрібні компоненти, як вони поєднуються між собою, як вони підходять до зовнішнього світу ...
Це багато в чому допомагає уточнити те, що потрібно думати. На цьому етапі дуже часто будуть виявлені проблеми щодо вимог, написаних бізнес-аналітиком. Зверніться до них для деяких ітерацій, щоб поліпшити їхнє розуміння того, чого вони хочуть, і їх вираження цього.
Дизайнер системи
Ця роль полягає в тому, як змусити це все працювати. Це може бути більше командною роботою, ніж виставою для одного. Але, швидше за все, головний дизайнер буде контролювати весь дизайн системи. Ця людина повинна заглибитися в деталі і переконатися, що погляд архітектора є чимось, що насправді можна побудувати.
Очікуйте подальшого вдосконалення архітектури системи, а отже, потенційно і бізнес-аналізу.
Менеджер тестів
Ця роль дуже часто забувається. Але наприкінці дня, якщо ви не можете перевірити його, як ви можете довести, що ви можете його побудувати? Потрібно переглянути огляд результатів на всіх етапах: бізнес-аналіз, архітектура та дизайн хтось компетентний у тестуванні, який зможе виділити недоліки і, таким чином, дозволити раннє виправлення, перш ніж будь-який код буде написаний.
Це короткий підсумок.
Ці хлопці / дівчата - це лише загальний пробіг людей, що перебувають у ланцюгу, щоб думати про те, що треба думати.
Для складних проектів, таких як великі банківські або космічні програми, щоб взяти два приклади (думаю, що сотні - багато тисяч людино-днів), існує багато експертів з предметних питань, оскільки ми закликаємо їх переглядати та підтримувати проекти на кожному етапі. Ці ролі включають аналіз безпеки, розмір системи, потужність, продуктивність, бази даних, кластеризацію та багато інших таких вузьких областей знань, включаючи точні сфери бізнесу. Різноманітність ролей залежить від розміру та складності систем.
Все, що говорить про те, що ви не повинні намагатися все це знати, ви не будете. Однак ви можете зрозуміти загальну картину, і на невеликих проектах ви можете поглибитись набагато більше, ніж на великих проектах, просто тому, що рівень складності дозволяє вам бути більш округлими.
Якщо ви хочете знати, як проектувати системи, тоді вам потрібно почати задавати питання, думаючи поза межами. Поставте себе достатньо у взуття клієнта і спробуйте подумати, що може піти не так, для чого потрібно тестування. Потім збирайтеся з реальним клієнтом і підштовхуйте їх, щоб пояснити розширення та межі системи, яку вони передбачають. Плюс кожного разу, коли я кажу «замовник», ви повинні розуміти, що це охоплює декількох дуже різних людей. Там є людина, яка користується системою день у день для того, що вона була розроблена. Там є оператор, технічна підтримка, менеджер, якому потрібен певний звіт чи інше, аудитор, команда інфраструктури, зацікавлена сторона, яка за це заплатила, менеджер з якості, який потребує засобів для тестування вашої системи ... Запитайте їх усіх (і якщо вони одна людина, попросіть їх покласти всі ці шапки по одному), тому запитайте у них все, що їм потрібно, і ви добре почнете знати, які ваші системні вимоги. Звідти можна отримати архітектуру, а звідти дизайн.
Для складних систем (будь то тільки програмне забезпечення або інтегруватися з апаратним забезпеченням у найбільш загальному сенсі) не лише однієї людини недостатньо для кожної з чотирьох перерахованих вище ролей, але вам потрібно керувати проектами навіть визначення того, що повинна мати система зробіть, не кажучи вже про інші фази.
ВПЛ, асм.