SmartHouse
Отчет о выполнении проекта по дисциплине “Программная инженерия кибериммунных систем” по теме “Cистема управления умным домом”
- Постановка задачи
- Определение ценностей продукта и негативных событий
- Роли и пользователи
- Цели и предположения безопасности
- Контекстная диаграмма
- Базовые сценарии
- Оновные блоки
- Архитектура
- Базовый сценарий и HLA
- Негативные сценарии
- Политика архитектуры
- Тесты
- Выводы
Постановка задачи
Задача: создать прототип автоматизированной системы управления всеми приборами в доме, которые объединены в единую экосистему.
Система может сама принимать решения и выполнять определенные задачи, без участия человека. Владельцу остается лишь управлять дистанционно путем ввода команд в консоль.
Определение ценностей продукта и негативных сценариев
Ценность | Негативные события | Величина ущерба | Комментарий |
---|---|---|---|
Люди | Причинение вреда здоровью пользователя | Высокий | Возможны судебные иски |
Имущество дома | Причинение ущерба критической инфраструктуре или имуществу третьих лиц | Высокий | Судебные иски, возможно требование возмещения ущерба |
Компоненты системы управления | Выход из строя одного/нескольких компонентов системы | Средний | Система и её компоненты застрахованы |
Роли и пользователи
Роль | Описание |
---|---|
Владелец дома (жильцы) | могут задавать сценарии поведения системы |
имеют возможеость обращения к конкретным элементам системы | |
Гости дома | могут обращаться к элементам системы |
могут пользоваться готовыми сценариями | |
не имеют полного доступа к элементами системы |
Цели и предположения безопасности
Цели безопасности
-
При любых обстоятельствах выполняются только подходящие для жизни системы сценарии
-
При любых обстоятельствах доступ к компонентам системы, которые оказывают влияние на самочувствие человека, есть только у авторизованных пользователей.
Предположения безопасности
-
при любых обстоятельствах система получает только допустимый объём электричества.
-
авторизованные пользователи ознакомлены с набором рекомендованых команд*
*команды, которые не наносят прямой ущерб здоровью пользователя
Контекстная диаграмма
Базовые сценарии
Основные блоки
Архитектура
Базовый сценарий и HLA
Основные этапы работы системы
Негативные сценарии
Политика архитектуры
Итерации разработки
Начальный этап разработки
Декомпозиция контроллера(хаба)
Декомпозиция внешних элеменов на критичные и некритичные
Тесты
Для тестирования системы были прописаны unit-тесты политик безопасности: https://github.com/GeorgeD615/SmartHouse/blob/tests/Tests/MonitorUnitTests.cs А также сковзной тест на создание и выполнение пользовательского сценария: https://github.com/GeorgeD615/SmartHouse/blob/tests/Tests/E2E.cs
Тесты находятся в ветке tests в папке Tests. Для запуска unit-тестов достаточно запустить их в Visual Studio через вкладку Test Explorer. Для запуска сквознового теста, необходим запуск всей системы с работающим брокером сообщений.
Выводы
В результате работы над прототипированием системы управления умным домом команде удалось познакомиться и в теории, и на практике с кибериммунным подходом к разработке, появилось понимание о том, из каких этапов состоит построение нового it-продукта.
Интересным показался опыт разделения ролей в команде. Так в результате обсуждений архитектуры системы, когда часть команды защищала интересы бизнеса, а другая часть отвечала за возможности разработки, был найден компромисс, который лёг в основу текущей реализации проекта.
После окончания работ по реализации мы решили оценить насколько хорошо представляли объёмы и сложность работ до их начала.
Оценка объемов и сложности разработки до начала реализации:
Обновление оценок после реализации:
Как видно из диаграмм, сложность компонент 1 и 3 была переоценена, в то время как сложность компоненты 4 недооценена. Что касается объёмов кода, компонента 3 была недооценена, а компонента 5 переоценена. В целом подобный результат говорит о том, что изначальная гипотеза о сложности и объёмах отдельных компонентов была корректной.