.github

Analysis

Target users

Personas

Alex Carter

Mia Fernandez

Emma Carter

Liam Carter

Evelyn Moore

Jordan Patel

Claire Bennett

Requirements

User stories

As a I want so that
Admin to add, remove or rename smart devices in my smart home i can extend my domotic system
Admin to be able to set up user-device permissions and as a consequence tasks can be executed only by users that own the user-device permission for every device included in the task i can prohibit uninteded use of the system
Admin tasks to have a user whitelist and a user blacklist to override user-device permissions i can prohibit uninteded use of the system
Admin tasks and automations to have an editlist to specify which user can edit that i can prohibit uninteded use of the system
Admin to review and accept or decline users registration requests i can manage who has access to the system
Admin to be able to remove users from the system i can manage who has access to the system
Admin to organize the home devices in groups it’s easier to manage them
User to see the properties exposed by my smart devices i can gain knowledge about the state of the house
User to make smart devices execute an action i can alter the state of the house
User to set up tasks to be executed with one click i can automate the execution of multiple instructions
User to express conditional logic in my tasks i can achieve complex behaviour
User to set up automations to be executed periodically or when specific triggering events happen my home can do stuff even without me taking care of it
User to enable and disable automations i can stop some automations to run for a while
User to receive a notification when a specific device goes offline i can fix problems in case they happen
User to edit my profile data like my nickname, email and password i can keep my data up to date

Non functional requirements

Ubiquitous language

Word Definition Synonyms
User A person which interacts with the domotic system  
Nickname A simple name or string that the user choose to present himself to other users Username
Email An e-mail address that it used to identify a user inside the system E-mail
Password A string that grants the access to a user account  
Admin A role played by a user of the system which is responsible for its management Administrator
Smart home A phisical house equipped with a software to manage connected smart devices Domotic, Domotic system, Home, System
Smart device An electronic device able to interact or sense the environment, generally connected to other devices or networks IoT device, device
Client A computer (mobile or desktop) used by the users to interact with the system  
Remote access Ability to access the domotic system even if not connected to the local network  
Property Some data provided by a smart device Device data
Action An operation that can be executed by a smart device  
Notification A message sent by the server to every user that wants to receive it  
Instruction An operation that can be executed by the domotic system (for example running a device action, reading some property on a device or sending a notification, wait for some time, set constants for scripting purposes and start other tasks). Instructions can have inputs  
Constant A name with an associated value of a specific type. It can be set manually or by reading a device property variable
Type (scripting) A set of possible values  
Control flow instructions Instructions that can alter the control flow of the script (if and if-else) based on a condition  
Condition An expression that results in a boolean value  
Task A sequence of instructions to be executed  
Automation A sequence of instructions triggered by an automation trigger  
Script A task or an automation  
Active/Inactive automation An automation that is/is not run by the domotic system when it triggers  
Automation trigger A device event or a time period specification trigger
Triggering period How frequently an automation should be run, has a starting point in time period
Device event An event that can be fired by a device  
Offline device A smart device that is not reachable by the domotic system  
Interacting with a device A client that reads properties or runs actions on a smart device  
User-Device permission Right of a user to interact with some device User permission
Task permissions A task whitelist, blacklist and editlist  
Automation permissions An automation editlist  
Task whitelist A list of users that can run the task regardless of their user-device permissions  
Task blacklist A list of users that cannot run the task regardless of their user-device permissions  
Task/Automation editlist A list of users which can edit the script  
Registration request A user must send a registration request that must be accepted by the admin before he can interact with the system  
Device group A grouping of smart devices, each device can be part of 0 or N groups Group
Server A computer installed in the house responsible for managing all aspects of the domotic system  
Token A piece of data that contains information about a user and it’s role in the system. It is signed in order to prove it’s validity  

Use case

Use case diagram

Bounded contexts

Bounded contexts map

Other doc

Distribuited doc