README.md

SmartHouse

Отчет о выполнении проекта по дисциплине “Программная инженерия кибериммунных систем” по теме “Cистема управления умным домом”

Постановка задачи

Задача: создать прототип автоматизированной системы управления всеми приборами в доме, которые объединены в единую экосистему.

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

Определение ценностей продукта и негативных сценариев

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

Роли и пользователи

Роль Описание
Владелец дома (жильцы) могут задавать сценарии поведения системы
имеют возможеость обращения к конкретным элементам системы
Гости дома могут обращаться к элементам системы
могут пользоваться готовыми сценариями
не имеют полного доступа к элементами системы

Цели и предположения безопасности

Цели безопасности

  1. При любых обстоятельствах выполняются только подходящие для жизни системы сценарии

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

Предположения безопасности

  1. при любых обстоятельствах система получает только допустимый объём электричества.

  2. авторизованные пользователи ознакомлены с набором рекомендованых команд*

    *команды, которые не наносят прямой ущерб здоровью пользователя

Контекстная диаграмма

image

Базовые сценарии

image

Основные блоки

image

Архитектура

image

Базовый сценарий и HLA

Основные этапы работы системы

image

image

Негативные сценарии

image

image

Политика архитектуры

Итерации разработки

Начальный этап разработки

image

image

Декомпозиция контроллера(хаба)

image

image

Декомпозиция внешних элеменов на критичные и некритичные

image

image

Тесты

Для тестирования системы были прописаны 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-продукта.

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

После окончания работ по реализации мы решили оценить насколько хорошо представляли объёмы и сложность работ до их начала.

Оценка объемов и сложности разработки до начала реализации:

image

Обновление оценок после реализации:

image

Как видно из диаграмм, сложность компонент 1 и 3 была переоценена, в то время как сложность компоненты 4 недооценена. Что касается объёмов кода, компонента 3 была недооценена, а компонента 5 переоценена. В целом подобный результат говорит о том, что изначальная гипотеза о сложности и объёмах отдельных компонентов была корректной.

Конвейеры
0 успешных
0 с ошибкой