WUT_Computer_Science/Programming/AIS/strukturizrz/workspace.dsl
2026-02-06 22:14:32 +01:00

155 lines
6.2 KiB
Plaintext
Executable File

workspace "Name" "Description" {
!identifiers hierarchical
model {
admin = person "Administrator" "Administrator zarządzający systemem e-Toll"
kierowca = person "Kierowca" "Kierowca korzystający z płatnych dróg w systemie e-Toll"
archiwum = softwareSystem "System agregacji danych historycznych" "Archiwum danych do celów statystycznych"
systemPlatnosci = softwareSystem "System procesowania płatności" "System odpowiedzialny za obsługę płatności dokonywanych prze użytkowników"
systemEtoll = softwareSystem "System e-Toll" {
webApp = container "Aplikacja webowa" "Służy do zarządzania kontem oraz systemem"
mobileApp = container "Aplikacja mobilna" "Pozwala na śledzenie pozycji pojazdu w celu dokonywania opłat"
embeddedApp = container "Aplikacja na dedykowane urządzenia zbierania opłat" "Działa na dedykowanych urządzeniach śledzących pozycję pojazdu"
serverApp = container "Aplikacja serwerowa" "Obsługuje logikę działania systemu" {
mainComponent = component "MainComponent" "Centralny element aplikacji odpowiedzialny za jej działanie"
signinController = component "SigninController" "Odpowiada za logowanie do systemu i autoryzację"
tollController = component "TollController" "Odpowiada za kontrolowanie wysokości opłat"
userService = component "UserService" "Zawiera logikę biznesową dotyczącą użytkowników"
paymentService = component "PaymentService" "Zawiera logikę dotyczącą przetwarzania płatności"
userRepository = component "UserRepository" "Odpowiada za dostęp do danych użytkownika"
paymentRepository = component "PaymentRepository" "Odpowiada za dostęp do danych płatności"
positionService = component "PositionService" "Odpowiada za określanie pozycji pojazdu w kontekście odcinków dróg"
mainComponent -> signinController "Używa"
mainComponent -> tollController "Używa"
signinController -> userService "Używa"
mainComponent -> paymentService "Używa"
tollController -> positionService "Używa"
userService -> userRepository "Odczytuje/zapisuje dane"
paymentService -> paymentRepository "Odczytuje/zapisuje dane"
}
db = container "Baza danych" {
tags "Database"
}
serverApp -> db "Czyta i zapisuje dane"
webApp -> serverApp
mobileApp -> serverApp
embeddedApp -> serverApp
}
admin -> systemEtoll.webApp "Zarządza systemem"
kierowca -> systemEtoll "Korzysta z systemu"
kierowca -> systemEtoll.webApp "Zarządza kontem"
kierowca -> systemEtoll.mobileApp "Opłaca przejazdy"
kierowca -> systemEtoll.embeddedApp "Opłaca przejazdy"
systemEtoll.serverApp -> systemPlatnosci "Realizuje płatność"
systemEtoll.serverApp -> archiwum "Przekazuje dane o użyciu dróg"
liveDeployment = deploymentEnvironment "Deployment" {
deploymentNode "Urządzenie mobilne klienta" "" "Apple iOS or Android" {
liveMobileAppInstance = containerInstance systemEtoll.mobileApp
}
deploymentNode "Dedykowane urządzenie zbierania opłat" "" "Linux" {
liveEmbeddedAppInstance = containerInstance systemEtoll.embeddedApp
}
deploymentNode "Urządzenie klienta" "" "Laptop/Desktop" {
deploymentNode "Przeglądarka internetowa" "" "Chromium/Firefox" {
browserInstance = containerInstance systemEtoll.webApp
}
}
deploymentNode "System e-Toll" "" "Data Center dla systemu e-Toll" {
deploymentNode "etoll-server" "" "Ubuntu Server 24.04 LTS" "" 4 {
deploymentNode "Apache Tomcat" "" "Apache Tomcat 8.x" {
liveWebApplicationInstance = containerInstance systemEtoll.serverApp
}
}
db1 = deploymentNode "etoll-db01" "" "Ubuntu Server 24.04 LTS" {
primaryDatabaseServer = deploymentNode "Oracle - Primary" "" "Oracle 12c" {
livePrimaryDatabaseInstance = containerInstance systemEtoll.db
}
}
db2 = deploymentNode "etoll-db02" "" "Ubuntu Server 24.04 LTS" "Failover" {
secondaryDatabaseServer = deploymentNode "Oracle - Secondary" "" "Oracle 12c" "Failover" {
liveSecondaryDatabaseInstance = containerInstance systemEtoll.db "Failover"
}
}
deploymentNode "etoll-prod001" "" "" "" {
softwareSystemInstance systemEtoll
}
db1.primaryDatabaseServer -> db2.secondaryDatabaseServer "Replikuje dane"
}
}
}
views {
systemContext systemEtoll "SystemContext" {
include *
autolayout bt
}
container systemEtoll "Container" {
include *
}
# component systemEtoll.webApp "ComponentWebApp" {
# include *
# }
# component systemEtoll.mobileApp "ComponentMobileApp" {
# include *
# }
# component systemEtoll.embeddedApp "ComponentEmbeddedApp" {
# include *
# }
component systemEtoll.serverApp "ComponentServerApp" {
include *
autoLayout bt
}
deployment systemEtoll "Deployment" {
include *
autoLayout lr
}
styles {
element "Element" {
color #ffffff
}
element "Person" {
background #199b65
shape person
}
element "Software System" {
background #1eba79
}
element "Container" {
background #23d98d
}
element "Database" {
shape cylinder
}
}
}
configuration {
scope softwaresystem
}
}