Всем привет. Я часто применяю принципы системной инженерии в своей работе и хотел бы поделиться этим подходом с сообществом.
Системная инженерия – без стандартов, а проще говоря, это процесс разработки системы как достаточно абстрактных компонентов, без привязки к конкретным образцам устройств.
В ходе этого процесса устанавливаются свойства компонентов системы и связи между ними.
Дополнительно необходимо сделать систему целостной и оптимальной, а также отвечающей предъявляемым требованиям.
В этом уроке я покажу приемы системного проектирования на примере проектирования достаточно простой системы контроля доступа (СКУД).
Формируем первоначальную архитектуру
Когда система, несмотря ни на что, только начинает разрабатываться, в голове или на бумаге появляются прямоугольники со стрелками.Такие прямоугольники Компоненты системы.
И стрелки есть связи между компонентами.
И очень часто у нас нет времени сидеть и думать о том, как все те компоненты, которые мы определили, будут работать друг с другом, и в итоге мы начинаем создавать кучу костылей, придумывая избыточные конструкции.
Важно помнить, что с точки зрения системы и ее архитектуры компонент — вещь довольно абстрактная.
Например, если в нашей системе есть микроконтроллер, то на архитектурном уровне нам важно только то, что это микроконтроллер, а не то, что это STM32, Arduino или Миландер.
Более того, зачастую нам совершенно не ясно, что именно будет в системе, и мы обращаемся к системному проектированию для разработки требований к оборудованию, программному обеспечению и т. д. Для нашего примера с СКУД попробуем сформулировать ее назначение.
Это поможет нам идентифицировать его компоненты.
Итак, задача системы контроля доступа – пропустить в помещение ограниченный круг людей.
То есть это умный замок.
Следовательно, у нас есть первый компонент – некое устройство, которое запирает и отпирает дверь! Давай позвоним ему Замок Откуда мы знаем, что человек может попасть внутрь? Мы ведь не хотим ставить сторожа и проверять паспорта? Давайте раздадим людям специальные карты с RFID-метками, на которых мы будем записывать уникальные идентификаторы или другие данные, позволяющие точно идентифицировать человека.
Тогда нам понадобится какое-то устройство, способное читать эти теги.
Отлично, у нас есть еще один компонент, RFIDReader Давайте еще раз посмотрим на то, что у нас получилось.
RFIDReader читает какие-то данные, система контроля доступа что-то с ними делает, и на основе этого что-то контролируется Замок .
Зададимся следующим вопросом — где хранить список людей с правами доступа? Лучший в базе данных.
Поэтому наша система должна иметь возможность отправлять запросы и обрабатывать ответы из базы данных.
Итак, у нас есть еще один компонент — ДБхандлер .
Итак, мы получили предельно абстрактное, но достаточное для начала описание системы.
Мы понимаем, что он должен делать и как это работает. Вместо листа бумаги я воспользуюсь System Composer — специальным инструментом для моделирования системных архитектур в среде Simulink — и создам 3 компонента.
Выше я описал связи между этими компонентами, так что давайте сразу их подключим:
Расширение архитектуры
Давайте посмотрим на нашу схему.Кажется, что все хорошо, но на самом деле это не так.
Посмотрите на эту систему с точки зрения пользователя – пользователь подносит карту к считывателю и.
? Как пользователь узнает, разрешен или запрещен доступ? Надо как-то его об этом уведомить! Поэтому добавим еще один компонент — уведомление пользователя, Пользовательское уведомление :
Теперь давайте спустимся на более низкий уровень абстракции.
Попробуем описать некоторые компоненты немного подробнее.
Начнем с компонента RFIDReader .
В нашей системе этот компонент отвечает за чтение RFID-метки.
Его выходные данные должны содержать некоторые данные (UID, пользовательские данные.
).
Но подождите, RFID, как и NFC, — это прежде всего аппаратное обеспечение, а не программное обеспечение! Поэтому можно предположить, что у нас отдельно есть сам RFID-чип, который передает «сырые» данные на какой-то препроцессор.
Итак, у нас есть абстрактное оборудование, которое может читать RFID-метки, и абстрактное программное обеспечение, которое может конвертировать данные в нужный нам формат. Давайте позвоним им RFIDсенсор И RFIDПарсер соответственно.
Как отобразить это в System Composer? Вы можете удалить компонент RFIDReader и поставить вместо них два компонента, но лучше этого не делать, иначе потеряем читабельность архитектуры.
Вместо этого давайте зайдем внутрь RFIDReader и добавим 2 новых компонента:
Отлично, теперь перейдем к уведомлению пользователя.
Как система уведомит пользователя о том, что ему запрещен или разрешен доступ в помещение? Лучше всего человек воспринимает звуки и мерцание чего-либо.
Поэтому можно подать определенный звуковой сигнал, чтобы пользователь обратил внимание, и поморгать светодиодом.
Добавим соответствующие компоненты в Пользовательское уведомление :
Мы создали архитектуру нашей системы, но что-то в ней не так.
Что? Давайте посмотрим на имена соединений.
В автобусе И OutBus - не совсем нормальные названия, которые бы помогли разработчику.
Их необходимо переименовать:
Итак, мы рассмотрели, как применяются методы системной инженерии в самом грубом приближении.
Возникает вопрос: зачем их вообще использовать? Система примитивна, и кажется, что проделанная работа ненужна.
Вы могли сразу писать код, проектировать базу данных, писать запросы или паять.
Проблема в том, что если не продумать систему и не понять, как ее компоненты связаны друг с другом, то интеграция компонентов системы будет длительной и достаточно болезненной.
Главный вывод из этой части: Использование методов системного проектирования и моделирования архитектуры при разработке систем позволяет снизить затраты на интеграцию компонентов и повысить качество разрабатываемой системы.
Теги: #Инженерные системы #matlab #simulink #simulink #Системное проектирование
-
Законные Бизнес-Идеи В Интернете
19 Oct, 24 -
Веб-Приложения Office
19 Oct, 24 -
Работа Будущего
19 Oct, 24