@startuml
'https://plantuml.com/class-diagram

skinparam classAttributeIconSize 0
hide circle

title Domain Model

class Project{
- code
- projectName
- description
- startDate
- endDate
- numberOfSprints
- sprintDuration
}

class Typology{
- description
}

class ProductBacklog{
}

class SprintBacklog{
}

class Sprint{
- name
- startDate
- endDate
}

class TaskEffort{
- effortHours
- effortMinutes
- effortDate
- comment
- attachment
}

class Task{
- name
- description
- effortEstimate
- effortRemaining
- startDate
- endDate
- hourSpent
- executionPercentage
}

class TaskStatus{
- description
}

class TaskType{
- name
}

class UserStoryStatus{
- description
- sprintAvailable
}

class UserStory{
- name
- priority
- description
- parentUserStory
- timeEstimate
- workDone
}

class BusinessSector{
- description
}

class Budget{
- amount
}

class ProjectStatus{
- description
}

class Customer{
- name
- email
}

class Company{
}

class Resource{
- startDate
- endDate
- costPerHour
- percentageOfAllocation
}

class ProjectRole{
- name
}

class UserProfile{
- name
}

class Request{
- requestDate
- requestStatus
}

class SystemUser{
- userName
- email
- photo
- password
- function
- activateUser
}

class ProjectTeam{
}


SystemUser "1" -- "*" Request: sent by
SystemUser "1" -- "*" Resource: act as
Company "1" -left- "*" SystemUser: employed by
UserProfile "1..*" -- "*" SystemUser: is assigned
Request "*" <-- "1" UserProfile: asks for a
Resource "1..*" -up- "*" Sprint: participates
Resource "1" -down- "*" Task: under responsibility of
Resource "*" -left- "1" ProjectRole: plays a
Resource "*" -left-> "1" ProjectTeam: is associate
Resource "1" --> "*" TaskEffort: register work
SprintBacklog "1" -up- "1" Sprint: origins
Task "1..*" -up- "1" Sprint: contains
Task "*" -- "1" TaskStatus: includes
Task "*" -- "1" TaskType: is classified by
Task "1" -- "*" TaskEffort: is measured by
Task "1..*" -up- "1" UserStory: contains
Task "1" -left- "*" Task: is preceded by
UserStoryStatus "1" <-right- "*" UserStory: includes
UserStory "1" -- "*" UserStory: is groomed
UserStory "*" -- "1" ProductBacklog: includes
UserStory "1..*" -right- "*" SprintBacklog: is composed by
ProductBacklog "1" <-- "1" Project: contains
Project "1" -- "*" Sprint: is divided in
Budget "1" <-- "1" Project: financed by
Project "*" -up-> "1" ProjectStatus: includes
Project "1" -- "1" Customer: requested by
Project "*" -left- "1" Company: belongs to
Project "1" -- "1" ProjectTeam: worked by
Project "1" -- "1" BusinessSector: correlates
Typology "1" <-right- "*" Project: characterized by
@enduml



