Проектирование систем

Введение

Крупные технологические компании все чаще включают интервью по проектированию информационных систем (System Design) как один из этапов собеседований. Обычно не ожидается, что кандидат успеет спроектировать полноценную систему, но важен сам процесс проектирования, он позволяет продемонстрировать вам свои навыки инженера, обосновать выбор архитектурных решений и ответить на вопросы интервьюера.

Каково же место system design в современной науке и инженерии? Поищем определения, стандарты, университетские программы и доступные в интернете курсы и статьи.

Определения

System Design — это процесс определения архитектуры, модулей и компонентов системы, а также различных интерфейсов этих компонентов и данных, которые проходят через систему. Этот процесс нацелен на удовлетворение конкретных потребностей бизнеса или организации посредством разработки согласованной и эффективно функционирующей системы[1].

System Design можно рассматривать как применение теории систем к разработке продукта. Существуют некоторые совпадения с дисциплинами системного анализа, системной архитектуры и системной инженерии[2]. При этом System Design можно рассматривать и в более широком контексте, без привязки к ИТ[3][4].

Место в инженерии

Стандарта или свода знаний (Body of knowledge, BoK) по проектированию информационных систем похоже не существует. В программе обучения различных вузов по специальности 09.03.04 «Программная инженерия» встречаются дисциплины «Проектирование и архитектура программных систем», «Проектирование информационных систем». Поиски также приводят либо к смежным областям знаний, в частности к программной инженерии, либо к различным курсам и книгам, набор тем в которых может различаться довольно сильно (список материалов добавлю в конце статьи). При этом как правило все программы и курсы по system design направлены на практическое применение знаний. Исходя из вышесказанного дадим свое определение:

System Design в информационных технологиях — дисциплина, которая затрагивает множество научных, инженерных и других областей, направленная на практическое применение знаний в целях создания систем в рамках заданных характеристик (требований).

Основные разделы

По system design отсутствуют стандарты или единые программы, а курсы и книги включают довольно разнообразные темы. Приведем программу из наиболее часто встречающихся разделов:

  • Требования. Категории требований, сбор требований, влияние требований на архитектурные решения.
  • Расчет нагрузки. Оценка количества пользователей, соотношение нагрузки запись/чтение на сеть, внешний и внутренний трафик, хранилища, вычислительные мощности.
  • Архитектурное проектирование. Проектирование границ системы, фиксация публичного API для всех сценариев системы.
  • Высокоуровневое проектирование. Итеративное проектирование системы, важно проработать как happy path, так и exceptional flows. По мере того, как мы прорабатываем поток данных у нас появляются компоненты системы, которые выполняют какие-то функции, которые требуются для реализации желаемого сценария.
  • Низкоуровневое проектирование. Выбор конкретных технологий и обсуждение возможностей масштабирования системы.
  • Обсуждение дополнительных вопросов, которые часто расширяют контекст системы или усложняют нефункциональные требования.
  • Примеры дизайна систем.

Дополнительные ссылки и материалы

См. также

Примечания

  1. Techopedia. System Design
  2. Википедия. Systems Design
  3. Википедия. Systemic Design
  4. Википедия. Системная инженерия

Comments

So empty here ... leave a comment!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Sidebar