├── .DS_Store ├── LICENSE ├── README.md └── UML ├── L1-c4-context.puml ├── L2-c4-container.puml └── L3-c4-component.puml /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djvelimir/demo-software-architecture/5c8983241ced8b4fb8ce7870234e6ee6f1eb4cd7/.DS_Store -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Velimir Đurković 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Software Architecture 2 | 3 | ## Context 4 | ![Class Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&fmt=svg&src=https://raw.githubusercontent.com/djvelimir/demo-software-architecture/main/UML/L1-c4-context.puml) 5 | 6 | ## Container 7 | ![Class Diagram](http://www.plantuml.com/plantuml/proxy?cache=no&fmt=svg&src=https://raw.githubusercontent.com/djvelimir/demo-software-architecture/main/UML/L2-c4-container.puml) 8 | 9 | ## Component 10 | ## Code 11 | -------------------------------------------------------------------------------- /UML/L1-c4-context.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml 3 | 4 | SHOW_PERSON_OUTLINE() 5 | Person(person, "Personal Banking Customer", "A customer of the bank, with personal bank accounts.") 6 | System(internetBanking, "Internet Banking System", "Allow customers to view information about their bank accounts and make payments.") 7 | System_Ext(mainframeBanking, "Mainframe Banking System", "Stores all the core baning information about customers, accounts, transactions, etc.") 8 | System_Ext(emailSystem, "Email System", "The internal microsoft exchange e-mail system") 9 | 10 | Rel_Down(person, internetBanking, "Views account balances, and makes payments using") 11 | Rel_Down(internetBanking, mainframeBanking, "Get accounts information from, and make payments using") 12 | Rel_Right(internetBanking, emailSystem, "Sends e-mail using") 13 | Rel_Up(emailSystem, person, "Sends e-mails to") 14 | 15 | 'System Context diagram for Internet Banking System 16 | 'The system context diagram for the internet banking system 17 | 'Workspace last modified: [] 18 | @enduml -------------------------------------------------------------------------------- /UML/L2-c4-container.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml 3 | 4 | AddElementTag("dashedLine") 5 | 6 | AddRelTag("dashedLine", $lineStyle = DashedLine()) 7 | 8 | SHOW_PERSON_OUTLINE() 9 | Person(person, "Personal Banking Customer", "A customer of the bank, with personal bank accounts.") 10 | System_Ext(mainframeBankingSystem, "Mainframe Banking System", "Stores all the core baning information about customers, accounts, transactions, etc.") 11 | System_Ext(emailSystem, "Email System", "The internal microsoft exchange e-mail system") 12 | 13 | Boundary(internetBankingSystem, "Internet Banking System", "Software System") { 14 | Container(webApp, "Web Application", "Container: Java and Spring MVC", "Delivers the static content and the internet banking single page application.") 15 | Container(spaApp, "Single-Page application", "Container: JavaScript and Angular", "Provides all the internet banking functionality to customers via their web browsers.") 16 | Container(mobileApp, "Mobile Application", "Container: Xamarin", "Provides a limited subset of the internet banking functionality to customers via their mobile devices.") 17 | Container(apiApp, "API Application", "Container: Java and Spring MVC", "Provides internet banking functionality via a JSON/HTTPS API.") 18 | ContainerDb(db, "Database", "Container: Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") 19 | 20 | Rel_Right(webApp, spaApp, "Delivers to the customer's web browser", $tags="dashedLine") 21 | Lay_Right(spaApp, mobileApp) 22 | Rel_Down(spaApp, apiApp, "Makes API calls to", "JSON/HTTPS", $tags="dashedLine") 23 | Rel_Down(mobileApp, apiApp, "Makes API calls to", "JSON/HTTPS", $tags="dashedLine") 24 | Rel_Left(apiApp, db, "Read from and writes to", "DBC", $tags="dashedLine") 25 | 26 | Rel_Right(apiApp, emailSystem, "Makes API calls to", "JSON/HTTPS", $tags="dashedLine") 27 | Rel_Right(apiApp, mainframeBankingSystem, "Makes API calls to", "JSON/HTTPS", $tags="dashedLine") 28 | 29 | } 30 | 31 | Rel_Down(person, webApp, "Visits bigbank.com/ib using","HTTPS", $tags="dashedLine") 32 | Rel_Down(person, spaApp, "Views account balances, and makes payments using", $tags="dashedLine") 33 | Rel_Down(person, mobileApp, "Views account balances, and makes payments using", $tags="dashedLine") 34 | Rel_Up(emailSystem, person, "Sends e-mails to", $tags="dashedLine") 35 | 36 | 'Lay_Right(internetBankingSystem, emailSystem) 37 | Lay_Down(emailSystem, mainframeBankingSystem) 38 | 39 | 40 | 'Container diagram for Internet Banking System 41 | 'The container diagram for the internet banking system 42 | 'Workspace last modified: [] 43 | @enduml -------------------------------------------------------------------------------- /UML/L3-c4-component.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml 3 | 4 | @enduml --------------------------------------------------------------------------------