Принципы проектирования: от идеи к реализации

Системное проектирование, структура процесса проектирования Системное проектирование

Основные подходы к проектированию систем

Существует несколько основных подходов к проектированию систем, каждый из которых имеет свои особенности и преимущества:

  • Структурный подход: Этот подход основан на разбиении системы на составные части и определении взаимосвязей между ними.
  • Объектно-ориентированный подход: В этом подходе система рассматривается как набор взаимосвязанных объектов, каждый из которых имеет свои свойства и методы.
  • Функциональный подход: Здесь система рассматривается как набор функций, которые она выполняет.
  • Архитектурный подход: В этом подходе система рассматривается с точки зрения ее архитектуры и взаимодействия между ее компонентами.

Монографии Липаева В.В.

Системное проектирование сложных программных средств для информационных систем.

Издание второе, переработанное и дополненное. Серия «Управление качеством». М: СИНТЕГ, 2002.-268 с.

Настоящее второе издание книги значительно переработано и дополнено новыми материалами. Это обусловлено высокими темпами развития за последние три года методов и стандартов создания программных средств (ПС) информационных систем (ИС)

В новом издании внимание акцентировано на обеспечении высокого качества ПС, начиная с системного анализа и проектирования. В то же время значительно сокращены разделы, излагающие содержание международных стандартов, которые стали доступны российским разработчикам, а некоторые утверждены как ГОСТы

Изложены основы предварительного структурного проектирования и современных технологий системного анализа и проектирования сложных комплексов программ

Значительное внимание уделено методам разработки требований к характеристикам качества и распределению ресурсов, необходимых для реализации проектов ПС, планированию жизненного цикла и управлению их качеством. Рассмотрены задачи и принципы системного проектирования защиты функционирования комплексов программ, а также выбору инструментальных средств для поддержки всего ЖЦ ПС

Представлены фрагменты между народных стандартов, регламентирующие основные задачи и требования к системному проектированию, к характеристикам и процессам обеспечения качества ПС при их реализации. Изложены методики системного проектирования сложных ПС и требований к их качеству, а также структура и содержание документов, отражающих результаты выполненных работ.

Для разработчиков, заказчиков и руководителей проектов информационных систем, может использоваться как исходный материал при подготовке фирменных руководств по подготовке контрактов па проекты ПС и как учебное пособие по системному проектированию сложных программных средств.

Введение.
Глава 1. ОСНОВЫ СИСТЕМНОГО ПРОЕКТИРОВАНИЯ СЛОЖНЫХ ПРОГРАММНЫХ СРЕДСТВ.

1.1. Цели и принципы системного проектирования сложных программных средств.

1.2. Системный анализ ресурсов для жизненного цикла программных средств.

1.3. Структурное проектирование сложных программных средств.

1.4. Системные основы современных технологий, обеспечивающих жизненный цикл программных средств.
Глава 2. СИСТЕМНОЕ ПРОЕКТИРОВАНИЕ ХАРАКТЕРИСТИК КАЧЕСТВА ПРОГРАММНЫХ СРЕДСТВ.

2.1. Основные факторы, определяющие качество программных средств.

2.2. Свойства и атрибуты качества функциональных возможностей программных средств.

2.3. Системное проектирование защиты программных средств.

2.4. Конструктивные характеристики качества программных средств.

2.5. Характеристики качества баз данных.
Глава 3. АНАЛИЗ РЕСУРСОВ, НЕОБХОДИМЫХ ДЛЯ ОБЕСПЕЧЕНИЯ ВЫСОКОГО КАЧЕСТВА ПРОГРАММНЫХ СРЕДСТВ.

3.1. Затраты ресурсов на обеспечение функциональной пригодности при разработке сложных программных средств.

3.2. Затраты ресурсов на конструктивные характеристики качества программных средств.

3.3. Затраты на имитацию внешней среды при обеспечении качества программных средств.

3.4. Ресурсы специалистов для обеспечения системного проектирования и всего жизненного цикла программных средств.

Глава 4. ПЛАНИРОВАНИЕ ПРОЦЕССОВ ПРИ СИСТЕМНОМ ПРОЕКТИРОВАНИИ ПРОГРАММНЫХ СРЕДСТВ.

4.1. Планирование процессов жизненного цикла программных средств.

4.2. Планирование процессов управления качеством программных средств.

4.3. Процессы разработки требований к характеристикам качества программных средств.

4.4. Системный анализ рисков при разработке требований к программным средствам.

4.5. Выбор инструментальных средств при системном проектировании комплексов программ.

Глава 5. МЕТОДИКИ СИСТЕМНОГО ПРОЕКТИРОВАНИЯ СЛОЖНЫХ ПРОГРАММНЫХ СРЕДСТВ.

5.1. Методика разработки системного проекта сложного комплекса программ информационной системы.

5.2. Методика разработки требований к характеристикам качества при проектировании программных средств.

Приложение. Перечень стандартов, регламентирующих проектирование программных средств.
Литература.
Книги издательства СИНТЕГ.
Информация.

IoC

Inversion of Control — Инверсия управления

Важный принцип объектно-ориентированного программирования, используемый для уменьшения зацепления (связанности) в компьютерных программах. Он подразумевает что ходом программы управляет внешний, по отношению к ней, фреймворк. Dependency Injection (DI) является частью IoC.

DI

Dependency Injection — Внедрение зависимости

Стиль разработки программного кода, когда в зависимости класса не создаются им напрямую, а внедряются из вне. При этом уменьшается связанность кода, но теряется контроль над созданием и временем жизни объектов, от которых зависит класс.

Типы системного дизайна

Логический дизайн

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

При подготовке логического проекта системы системный аналитик определяет потребности пользователя на уровне детализации, который фактически определяет поток информации в систему и из нее, а также требуемые источники данных. Используются диаграммы потоков данных, моделирование ER диаграмм.

Физический дизайн

Физический дизайн относится к фактическим процессам ввода и вывода системы. Он фокусируется на том, как данные вводятся в систему, проверяются, обрабатываются и отображаются в качестве вывода.

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

Он состоит из следующих шагов —

  • Указание носителя ввода / вывода, проектирование базы данных и определение процедур резервного копирования.

  • Внедрение системы планирования.

  • Разработка плана тестирования и внедрения, а также определение нового оборудования и программного обеспечения.

  • Обновление затрат, выгод, дат преобразования и системных ограничений.

Архитектурный дизайн

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

Концептуальное моделирование данных

Это представление организационных данных, которые включают все основные сущности и взаимосвязи. Системные аналитики разрабатывают концептуальную модель данных для текущей системы, которая поддерживает объем и требования для предлагаемой системы.

Основная цель концептуального моделирования данных — уловить как можно больше смысла данных. Большинство организаций сегодня используют концептуальное моделирование данных с помощью ER-модели, в которой используются специальные обозначения для представления максимально возможного значения данных.

Модель отношений сущностей

Это метод, используемый при проектировании базы данных, который помогает описать отношения между различными объектами организации.

Термины, используемые в модели ER

  • ENTITY— Он определяет отдельные элементы реального мира в приложении. Например: поставщик, предмет, студент, курс, учителя и т. Д.

  • RELATIONSHIP— Это значимые зависимости между сущностями. Например, поставщик поставляет товары, учитель ведет курсы, а затем расходные материалы и курс — это отношения.

  • ATTRIBUTES— Он определяет свойства отношений. Например, код поставщика, имя студента. Символы, используемые в модели ER, и их соответствующие значения —

В следующей таблице показаны символы, используемые в модели ER, и их значение.

Условное обозначение Имея в виду
сущность
Слабая сущность
Отношения
Отношения идентичности
Атрибуты
Ключевые атрибуты
Многозначный
Составной атрибут
Производные атрибуты
Общее участие E2 в R
Коэффициент мощности 1: N для E1: E2 в R

Между двумя наборами данных могут существовать три типа отношений: один к одному, один ко многим и многие ко многим.

Что такое системный анализ?

Системный анализ — это процесс обзора технологической системы для устранения неполадок, разработки или улучшения. Такая система может быть программной реализацией, такой как система или прикладная программа

Важно рассматривать системный анализ как один из этапов более крупного процесса, жизненного цикла разработки систем (SDLC), который мы обсудим более подробно позже. На этапе системного анализа аналитики занимаются изложением предлагаемого решения определенной проблемы

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

Этим анализам обычно способствуют две задачи: технико -экономическое обоснование и разработка требований.

  • ТЭО сосредоточено на нескольких показателях того, насколько вероятно предлагаемое решение для решения определенной проблемы.
  • Разработка требований определяет, чего должно достичь предлагаемое решение.

Позже мы рассмотрим обе эти задачи более подробно.

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

Раздел 4: Протоколы чата и потоковой передачи данных

В этом разделе мы рассмотрим протоколы чата и потоковой передачи, которые обеспечивают связь в реальном времени и потоковую передачу данных между клиентами и серверами. Понимание этих протоколов поможет разработчикам создавать интерактивные и отзывчивые приложения.

4.1: RTMP (Real-Time Messaging Protocol)

RTMP — это запатентованный протокол Adobe Systems. Он нужен для потоковой передачи аудио, видео и данных через Интернет, широко используется в приложениях для потоковой передачи видео и обеспечивает низкую задержку при передаче данных между клиентами и серверами. Однако из-за зависимости от Flash Player его популярность в последние годы снизилась.

4.2: WebRTC (Web Real-Time Communication)

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

4.3: WebSocket

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

4.4: SSE (Server-Sent Events)

Server-Sent Events (SSE) — это технология, которая позволяет серверам получать данные о клиентских событиях через HTTP-соединение. Она предназначена для односторонней связи от сервера к клиенту в реальном времени, что делает ее подходящим решением для приложений, работающих с новостными лентами и уведомлениями.

4.5: HTTP Short Polling

В случае с Short Polling клиенты неоднократно отправляют HTTP-запросы на сервер, чтобы проверить наличие новых событий. Несмотря на простоту реализации метода, он может привести к высокой нагрузке на сервер и увеличению задержки из-за постоянных запросов, особенно если новые события происходят нечасто.

4.6: HTTP Long Polling

Это улучшенный вариант Short Polling: клиент посылает запрос на сервер, а сервер держит его открытым до получения новых данных. Такой подход снижает количество запросов и нагрузку на сервер, однако он все же может приводить к задержкам и требует тщательного управления ресурсами сервера.

4.7: Вебхуки

Вебхуки — это определяемые пользователем HTTP-коллбеки, запускаемые в результате определенных событий в системе. Когда происходит событие, сайт-источник отправляет HTTP-запрос на URL, настроенный для вебхука. Этот подход позволяет обеспечить эффективное, привязанное к событиям взаимодействие между разными системами или сервисами.

4.8: Stream API

Stream API позволяет клиентам получать непрерывный поток данных с сервера, часто с помощью соединения по HTTP или WebSocket. Эти API предназначены для приложений, которым нужно получать данные в реальном времени. Например, это актуально для лент социальных сетей, данных фондового рынка и аналитики в реальном времени.

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

Основные принципы проектирования систем

В процессе проектирования систем существует несколько основных принципов, которые следует учитывать:

  • Модульность: Система должна быть разделена на независимые модули, каждый из которых выполняет определенные функции.
  • Гибкость: Система должна быть гибкой и адаптивной к изменениям внешней среды.
  • Масштабируемость: Система должна быть способна масштабироваться в зависимости от изменяющихся потребностей.
  • Эффективность: Система должна быть эффективной и выполнять свои функции с минимальными затратами ресурсов.
  • Надежность: Система должна быть надежной и устойчивой к сбоям и ошибкам.

Следующие шаги по проектированию системы

Вот и все! Очень упрощенное руководство по проектированию системы. Помните, что дизайн должен быть простым, не всегда все будет идти своим чередом, поэтому вам, возможно, придется вернуться и внести некоторые изменения на ходу.

Следующие темы рекомендуются в качестве следующего шага для понимания системного дизайна:

  • Изучите реальные примеры проектирования систем
  • Основы микросервисов
  • Основы проектирования баз данных

Если вы хотите глубже изучить этот вопрос, обратите внимание на комплексный курс Grokking Modern System Design for Software Engineers & Managers от Educative. В этом курсе рассматриваются все важные концепции веб-приложений, микросервисов и архитектуры AWS, а также практические занятия по кодированию и многое другое

Счастливого обучения!

Продолжить чтение о системном проектировании на Educative

  • Полное руководство по системному проектированию в 2022 году
  • Grokking Modern System Design for Software Engineers & Managers
  • Микросервисы в Azure: введение
  • Учебник по проектированию баз данных

Методы системного проектирования

Пройдите наш авторский курс по выбору акций на фондовом рынке → обучающий курс

Бесплатный Экспресс-курс «Оценка инвестиционных проектов с нуля в Excel» от Ждановых. Получить доступ

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

  1. Эвристические, то есть новые идеи, основанные на творческом подходе.
  2. ТРИЗ. Аббревиатура расшифровывается как «теория решения изобретательских задач». Данный метод основал Г.С. Альтшуллер.
  3. Экспериментальные приемы, то есть варианты, которые ранее компания не использовала.
  4. Формальные методы характеризуются тем, что применяются ради достижения цели. При этом ни о каком творческом подходе речи не идет.
  5. В отдельную группу нужно отнести приемы, которые используются при принятии решений. Они должны соответствовать принципам обоснованности, своевременности, обязательности, правомочности и согласованности.

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

Эвристические

Эвристические методы  — это приемы, основанные на творческом мышлении и оригинальном подходе. Если говорить простыми словами, эвристическими вариантами называют совершенно новый подход, не имеющий аналогий.

Надо отметить, что подобные методы в настоящее время используют практически все успешные крупные фирмы, независимо от их деятельности. К эвристическим методам относят следующие приемы:

  1. Предмет творческой работы. В качестве подобного результата могут выступать открытия, любые изобретения, предложения по улучшению, а также ноу-хау в виде секрета производства.
  2. Поэтапность приближения результата. Данный прием характеризуется последовательным изучением информации, необходимой для выполнения задачи.
  3. Расчленение задач, процессов или предметов. По-другому его называют методом декомпозиции.
  4. Решение контрольных вопросов. Его особенность заключается в том, что выполнение задачи происходит путем нахождения ответов на конкретные вопросы.
  5. Прием мозговой атаки характерен для принятия решений в ограниченные сроки. При этом задачу обсуждают небольшим коллективом, а каждая идея детально рассматривается и анализируется.

ТРИЗ

Основу теории решения изобретательских задач заложил ученый  Г.С. Альтшуллер, после того, как сформировал тысячи патентов. Его огромный опыт позволил создать алгоритм выполнения заданий. Данная группа приемов необходима, чтобы найти причины, которые влияют на выполнение задачи. ТРИЗ включает в себя следующие методы:

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

Последний метод делится на несколько подгрупп. Выбор того или иного приема напрямую зависит от вида производимой продукции.

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

Метод агрегирования характеризуется соединением унифицированных членов. Модификация связана с видоизменением ранее установленных форм, а стандартизация, производство продукции и ее усовершенствование осуществляются путем использования нормативов.

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

К экспериментальным приемам относят методы, которые ранее компания не применяла. Их реализация осуществляется путем измерения показателей, анализа, диагностирования, а также закрепления явлений. Группа экспериментальных приемов включает в себя следующие методы:

  • планирование опыта и анализ результатов;
  • машинное исследование;
  • мыслительный вариант.

В первом случае аналитик планирует, проводит опыт, а затем оценивает его итоги. Второй прием предполагает реализацию исследования при помощи предметов автоматизации, например, компьютера. Мыслительный вариант – это прием, при котором весь эксперимент проходит в голове у исследователя и не является производством физических действий.

Формальные

Формальные методы – это привычные всем приемы системного планирования. Их достоинство заключается в том, что они помогают быстро и без лишних затрат составить проект, сформировать его структуру и реализовать в автоматическом режиме.

Организация файлов

Он описывает, как записи хранятся в файле.

Есть четыре метода организации файлов —

  • Serial — Записи хранятся в хронологическом порядке (в порядке их ввода или возникновения). Examples — Учет телефонных расходов, транзакций банкоматов, телефонных очередей.

  • Sequential — Записи хранятся в порядке, основанном на ключевом поле, которое содержит значение, однозначно идентифицирующее запись. Examples — Телефонные справочники.

  • Direct (relative)— Каждая запись хранится на основе физического адреса или местоположения на устройстве. Адрес рассчитывается из значения, хранящегося в ключевом поле записи. Преобразование выполняет процедура рандомизации или алгоритм хеширования.

  • Indexed — Записи могут обрабатываться как последовательно, так и непоследовательно с использованием индексов.

Оцените статью