Проектирование На Уровне Системы. Часть 1. От Идеи К Системе

Всем привет. Я часто применяю принципы системной инженерии в своей работе и хотел бы поделиться этим подходом с сообществом.

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

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

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

В этом уроке я покажу приемы системного проектирования на примере проектирования достаточно простой системы контроля доступа (СКУД).



Формируем первоначальную архитектуру

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

Такие прямоугольники Компоненты системы.

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

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

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

Например, если в нашей системе есть микроконтроллер, то на архитектурном уровне нам важно только то, что это микроконтроллер, а не то, что это STM32, Arduino или Миландер.

Более того, зачастую нам совершенно не ясно, что именно будет в системе, и мы обращаемся к системному проектированию для разработки требований к оборудованию, программному обеспечению и т. д. Для нашего примера с СКУД попробуем сформулировать ее назначение.

Это поможет нам идентифицировать его компоненты.

Итак, задача системы контроля доступа – пропустить в помещение ограниченный круг людей.

То есть это умный замок.

Следовательно, у нас есть первый компонент – некое устройство, которое запирает и отпирает дверь! Давай позвоним ему Замок Откуда мы знаем, что человек может попасть внутрь? Мы ведь не хотим ставить сторожа и проверять паспорта? Давайте раздадим людям специальные карты с RFID-метками, на которых мы будем записывать уникальные идентификаторы или другие данные, позволяющие точно идентифицировать человека.

Тогда нам понадобится какое-то устройство, способное читать эти теги.

Отлично, у нас есть еще один компонент, RFIDReader Давайте еще раз посмотрим на то, что у нас получилось.

RFIDReader читает какие-то данные, система контроля доступа что-то с ними делает, и на основе этого что-то контролируется Замок .

Зададимся следующим вопросом — где хранить список людей с правами доступа? Лучший в базе данных.

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

Итак, у нас есть еще один компонент — ДБхандлер .

Итак, мы получили предельно абстрактное, но достаточное для начала описание системы.

Мы понимаем, что он должен делать и как это работает. Вместо листа бумаги я воспользуюсь System Composer — специальным инструментом для моделирования системных архитектур в среде Simulink — и создам 3 компонента.

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

Проектирование на уровне системы.
</p><p>
 Часть 1. От идеи к системе



Расширение архитектуры

Давайте посмотрим на нашу схему.

Кажется, что все хорошо, но на самом деле это не так.

Посмотрите на эту систему с точки зрения пользователя – пользователь подносит карту к считывателю и.

? Как пользователь узнает, разрешен или запрещен доступ? Надо как-то его об этом уведомить! Поэтому добавим еще один компонент — уведомление пользователя, Пользовательское уведомление :

Проектирование на уровне системы.
</p><p>
 Часть 1. От идеи к системе

Теперь давайте спустимся на более низкий уровень абстракции.

Попробуем описать некоторые компоненты немного подробнее.

Начнем с компонента RFIDReader .

В нашей системе этот компонент отвечает за чтение RFID-метки.

Его выходные данные должны содержать некоторые данные (UID, пользовательские данные.

).

Но подождите, RFID, как и NFC, — это прежде всего аппаратное обеспечение, а не программное обеспечение! Поэтому можно предположить, что у нас отдельно есть сам RFID-чип, который передает «сырые» данные на какой-то препроцессор.

Итак, у нас есть абстрактное оборудование, которое может читать RFID-метки, и абстрактное программное обеспечение, которое может конвертировать данные в нужный нам формат. Давайте позвоним им RFIDсенсор И RFIDПарсер соответственно.

Как отобразить это в System Composer? Вы можете удалить компонент RFIDReader и поставить вместо них два компонента, но лучше этого не делать, иначе потеряем читабельность архитектуры.

Вместо этого давайте зайдем внутрь RFIDReader и добавим 2 новых компонента:

Проектирование на уровне системы.
</p><p>
 Часть 1. От идеи к системе

Отлично, теперь перейдем к уведомлению пользователя.

Как система уведомит пользователя о том, что ему запрещен или разрешен доступ в помещение? Лучше всего человек воспринимает звуки и мерцание чего-либо.

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

Добавим соответствующие компоненты в Пользовательское уведомление :

Проектирование на уровне системы.
</p><p>
 Часть 1. От идеи к системе

Мы создали архитектуру нашей системы, но что-то в ней не так.

Что? Давайте посмотрим на имена соединений.

В автобусе И OutBus - не совсем нормальные названия, которые бы помогли разработчику.

Их необходимо переименовать:

Проектирование на уровне системы.
</p><p>
 Часть 1. От идеи к системе

Итак, мы рассмотрели, как применяются методы системной инженерии в самом грубом приближении.

Возникает вопрос: зачем их вообще использовать? Система примитивна, и кажется, что проделанная работа ненужна.

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

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

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

Теги: #Инженерные системы #matlab #simulink #simulink #Системное проектирование

Вместе с данным постом часто просматривают: