diff --git a/src/sa/model/index.md b/src/sa/model/index.md index a61125e..c70cb2b 100644 --- a/src/sa/model/index.md +++ b/src/sa/model/index.md @@ -2,7 +2,7 @@ lecture: Software Architecture --- title: -Smarthut.sm +SmartHut.sm --- author: Claudio Maggioni @@ -50,7 +50,7 @@ Hint: to choose a meaningful project look at the rest of the modeling tasks whic } -Project Name: Smarthut.sm +Project Name: SmartHut.sm Project Type: Website / Web application / IoT @@ -63,7 +63,7 @@ Vision Statement:
Who:
wish to manage such equipment from a unified web interface and API;
The:
-
Smarthut.sm application;
+
SmartHut.sm application;
Is:
A website and REST API enabled engine;
That:
@@ -74,7 +74,7 @@ Vision Statement:
Aims to perform most features implemented by competitors and more, allowing for ease of expandability in terms of features and supported devices.
-Additional Information: This project is from the Spring semester 2020 edition of _Software Atelier 4: Software engineering project_. The original project does not support any actual smart home device, and instead mocks device state and readouts in its backend. This poses as a potential opportunity to expand the existing architecture of the project to include device support as well. More information on the project can be found [here](https://maggioni.xyz/portfolio/smarthut.html). Source code of the existing project can be found [here](https://git.maggioni.xyz/smarthut). +Additional Information: This project is from the Spring semester 2020 edition of _Software Atelier 4: Software engineering project_. The original project does not support any actual smart home device, and instead mocks device state and readouts in its backend. This poses as a potential opportunity to expand the existing architecture of the project to include device support as well. More information on the project can be found [here](https://maggioni.xyz/portfolio/SmartHut.html). Source code of the existing project can be found [here](https://git.maggioni.xyz/SmartHut). # Ex - Architectural Decision Records @@ -143,6 +143,7 @@ Exceed: >6 scenarios using challenging qualities } + + +## Scenario \#1: Live *device refresh* parameter + +Quality: _Configurability_ + +Scenario: When deploying its own instance of the Smartt software, the user shall be able to change the refresh timeout for checking device status without restarting the software. + +```puml +@startuml + +skinparam componentStyle rectangle +skinparam monochrome true +skinparam shadowing false + +rectangle "When user deploys instance of SmartHut" { + +rectangle "User (Admin of its own instance)" as Source +rectangle "System not restarted" as Measure + +Source -> [System] : "Changes devies refresh timeout" + +[System] -> [Measure] : "No restarts required" + +} + +@enduml +``` + +## Scenario \#2: Time to market for first MVP + +Quality: _Time to market_ + +Scenario: The first MVP aimed at gathering feedback from power users shall be shipped in less than 3 months. + +```puml +@startuml + +skinparam componentStyle rectangle +skinparam monochrome true +skinparam shadowing false + +rectangle "Development" { + +rectangle "SmartHut team" as Source +rectangle "max 3 months" as Measure + +Source -> [System] : "Develops" + +[System] -> [Measure] : "first MVP ready" + +} + +@enduml +``` + +## Scenario \#3: Authorized access to camera live stream + +Quality: _Authorization_ + +Scenario: Access to camera live streams shall be granted only to users explicity authorized by the user owning the camera. + +```puml +@startuml + +skinparam componentStyle rectangle +skinparam monochrome true +skinparam shadowing false + +rectangle "Normal operation" { + +rectangle "Alice" as Source +rectangle "Access granted" as Measure + +Source -> [System] : "Shares camera live stream with Bob" +[System] -> [Measure] : "Bob wants to watch camera live stream" +} +@enduml +``` + +```puml +@startuml + +skinparam componentStyle rectangle +skinparam monochrome true +skinparam shadowing false + +rectangle "Normal operation" { + +rectangle "Alice" as BSource +rectangle "Access denied" as BMeasure + +BSource -> [System] : "Shares camera live stream with Bob" +[System] -> [BMeasure] : "Eve wants to watch camera live stream" +} + +@enduml +``` + +## Scenario \#4: State change of devices is processed within two seconds + +Quality: _Performance (latency)_ + +Scenario: When a user changes the state of a smart device from the UI (e.g. switches on a light bulb), the change shall be applied to the smart device (e.g. light turns on) within 2 seconds + +```puml +@startuml + +skinparam componentStyle rectangle +skinparam monochrome true +skinparam shadowing false + +rectangle "Normal operation" { + +rectangle "User" as Source +rectangle "max 2 seconds" as Measure + +Source -> [System] : "Requests device state change from UI" +[System] -> [Measure] : "Smart device changes state" +} +@enduml +``` + + +## Scenario \#5: State change of device is + +Quality: _Usability_ + +Scenario: During user testing, at least 75% of users, with no prior training, should be able to define a device automation workflow within 20 minutes. + +```puml +@startuml + +skinparam componentStyle rectangle +skinparam monochrome true +skinparam shadowing false + +rectangle "User testing" { + +rectangle "Untrained user" as Source +rectangle "max 20 minutes" as Measure + +Source -> [System] : "Define device automation flow" +[System] -> [Measure] : "Comply to user desire" +} +@enduml +``` # Ex - Quality Attribute Tradeoff