This site uses the diagrams python package to draw all diagrams as code.
SW Architecture
from diagrams import Diagramfrom diagrams.c4 import Person, Container, Database, System, SystemBoundary, Relationshipgraph_attr = {"splines": "spline",}with Diagram("Container diagram for Internet Banking System", direction="TB", graph_attr=graph_attr) as diag: customer = Person( name="Personal Banking Customer", description="A customer of the bank, with personal bank accounts." )with SystemBoundary("Internet Banking System"): webapp = Container( name="Web Application", technology="Java and Spring MVC", description="Delivers the static content and the Internet banking single page application.", ) spa = Container( name="Single-Page Application", technology="Javascript and Angular", description="Provides all of the Internet banking functionality to customers via their web browser.", ) mobileapp = Container( name="Mobile App", technology="Xamarin", description="Provides a limited subset of the Internet banking functionality to customers via their mobile device.", ) api = Container( name="API Application", technology="Java and Spring MVC", description="Provides Internet banking functionality via a JSON/HTTPS API.", ) database = Database( name="Database", technology="Oracle Database Schema", description="Stores user registration information, hashed authentication credentials, access logs, etc.", ) email = System(name="E-mail System", description="The internal Microsoft Exchange e-mail system.", external=True) mainframe = System( name="Mainframe Banking System", description="Stores all of the core banking information about customers, accounts, transactions, etc.", external=True, ) customer >> Relationship("Visits bigbank.com/ib using [HTTPS]") >> webapp customer >> Relationship("Views account balances, and makes payments using") >> [spa, mobileapp] webapp >> Relationship("Delivers to the customer's web browser") >> spa spa >> Relationship("Make API calls to [JSON/HTTPS]") >> api mobileapp >> Relationship("Make API calls to [JSON/HTTPS]") >> api api >> Relationship("reads from and writes to") >> database api >> Relationship("Sends email using [SMTP]") >> email api >> Relationship("Makes API calls to [XML/HTTPS]") >> mainframe customer << Relationship("Sends e-mails to") << emaildiag
Warning: node '02ae3635e34c422c98460a9a5d692305', graph 'Container diagram for Internet Banking System' size too small for label
Warning: node '63915a69b643469abb1c3efd67acac47', graph 'Container diagram for Internet Banking System' size too small for label
Warning: node '704225c8c73e4a949e258a3ad5d907b8', graph 'Container diagram for Internet Banking System' size too small for label
Warning: node '7ad6263589bd4cdda9ed6bf88a868f8e', graph 'Container diagram for Internet Banking System' size too small for label
Warning: node '8a9b3468651d4b4783abbd1468608bfb', graph 'Container diagram for Internet Banking System' size too small for label