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 с ошибкой