yostane / cours-archi-logicielle

Cours d'Architecture Logicielle
https://yostane.github.io/cours-archi-logicielle/
Other
2 stars 0 forks source link

kata d'archi 23 - 04 - 2024 #22

Open yostane opened 2 months ago

yostane commented 2 months ago

https://www.architecturalkatas.com/kata.html?kata=WhosYourDaddy.json

TomBPro commented 2 months ago

C4 Model of Who's Your Daddy

Level 1

graph TD;

    Clients
    APIs
    UnifiedDataStorage(Unified Data Storage)

    Actors --"Sends Requests to"--> Clients
    Clients --"Makes Requests to"--> APIs
    APIs --"Accesses"--> UnifiedDataStorage

Level 2

flowchart TD

    subgraph "Actors"
        ThirdPartyApp
        Facebook
        User
        HistoricalRecordsTeam
    end

    subgraph "Clients"
        WebClient(Web Client)
        MobileClient(Mobile Client)
    end

    subgraph "Third-Party Integration"
        ThirdPartyAppContainer(Third-Party App Container)
        SocialNetworkService(Social Network Integration)
    end

    subgraph "Services"
        ThirdPartyAPIService(Third-Party API Service)
        InternalApiService(Internal API Service)
        HistoricalRecordsService(Historical Records Service)
    end

    subgraph "Data Storage"
        GenealogicalData(Genealogical Data Storage)
    end

    User --"Interacts with"--> WebClient
    User --"Engages with"--> MobileClient
    Facebook --"Utilizes"--> SocialNetworkService
    ThirdPartyApp --"Connects to"--> ThirdPartyAppContainer
    HistoricalRecordsTeam --"Requests Data from"--> HistoricalRecordsService

    WebClient --"Sends Data to"--> ThirdPartyAPIService
    MobileClient --"Sends Data to"--> ThirdPartyAPIService
    SocialNetworkService --"Sends Data to"--> ThirdPartyAPIService
    ThirdPartyAppContainer --"Sends Data to"--> ThirdPartyAPIService
    HistoricalRecordsService --"Retrieves Data from"--> InternalApiService
    ThirdPartyAPIService --"Accesses"--> GenealogicalData
    InternalApiService --"Accesses"--> GenealogicalData

Level 3

flowchart TD

    subgraph "System"
        subgraph "Controllers"
            ApplicationController(Application Controller)
        end
        subgraph "Facades"
            ThirdPartyFacade(Third-Party Facade)
            InternalFacade(Internal Facade)
        end
        subgraph "Components"
            WebAppComponent(Web Application Component)
            ThirdPartyAppComponent(Third-Party App Component)
            SocialNetworkComponent(Social Network Component)
            HistoricalRecordsComponent(Historical Records Component)
        end
        subgraph "Database"
            GenealogicalDatabase(Genealogical Database)
        end
    end

    Actors --"Sends Request to"--> ApplicationController
    ApplicationController --"Handles Request for"--> WebAppComponent
    ApplicationController --"Handles Request for"--> ThirdPartyAppComponent
    ApplicationController --"Handles Request for"--> SocialNetworkComponent
    ApplicationController --"Handles Request for"--> HistoricalRecordsComponent

    WebAppComponent --"Utilizes"--> ThirdPartyFacade
    ThirdPartyAppComponent --"Utilizes"--> ThirdPartyFacade
    SocialNetworkComponent --"Utilizes"--> ThirdPartyFacade
    HistoricalRecordsComponent --"Utilizes"--> InternalFacade

    ThirdPartyFacade --"Accesses"--> GenealogicalDatabase
    InternalFacade --"Accesses"--> GenealogicalDatabase

Notes

WpFeltac commented 2 months ago

Who's your daddy ?

Level 1

classDiagram
    class User{
        <<Actor>>
    }
    class ThirdParty{
        <<Actor>>
    }
    class Genealogist{
        <<Actor>>
    }

    class GraphSystem{
        <<Software System>>
    }
    class FacebookAPI{
        <<External API>>
    }

    User-->GraphSystem:uses
    ThirdParty-->GraphSystem:uses
    Genealogist-->GraphSystem:contributes through
    GraphSystem-->FacebookAPI:uses

Level 2

classDiagram
    class ThirdParty{
        <<Actor>>
    }
    class User{
        <<Actor>>
    }
    class Genealogist{
        <<Actor>>
    }

    namespace GraphSystem{
        class GraphWebsite{
            <<Website>>
        }
        class GraphBackOffice{
            <<Website>>
        }
        class GraphDB{
            <<Database>>
        }
        class GraphWebAPI{
            <<WebAPI>>
        }
    }

    class FacebookAPI{
        <<External API>>
    }

    ThirdParty-->GraphWebAPI:uses
    GraphWebAPI-->FacebookAPI:uses
    GraphWebAPI-->GraphDB:uses
    Genealogist-->GraphBackOffice:contributes through
    GraphBackOffice-->GraphDB:populate
    User-->GraphWebsite:uses
    GraphWebsite-->GraphWebAPI:uses

Level 3

classDiagram
    class ThirdParty{
        <<Actor>>
    }
    class User{
        <<Actor>>
    }
    class Genealogist{
        <<Actor>>
    }

    namespace GraphWebsite{
        class GraphWebsiteFront{
            <<Single Page Application>>
        }
        class GraphWebsiteBack{
            <<Website Backend>>
        }
    }
    namespace GraphBackOffice{
        class BackOfficeFront{
            <<Single Page Application>>
        }
        class BackOfficeBack{
            <<Website Backend>>
        }
    }
    class GraphDB{
        <<Database>>
    }
    namespace GraphWebAPI{
        class RelationshipController{
            <<API Controller>>
        }
        class RelationshipService{
            <<API Service>>
        }
        class FacebookService{
            <<API Service>>
        }
    }

    class FacebookAPI{
        <<External API>>
    }

    ThirdParty-->RelationshipController:uses
    FacebookService-->FacebookAPI:uses
    RelationshipService-->GraphDB:uses
    User-->GraphWebsiteFront:uses
    GraphWebsiteFront-->GraphWebsiteBack:uses
    GraphWebsiteBack-->RelationshipController:uses
    BackOfficeFront-->BackOfficeBack:uses
    Genealogist-->BackOfficeFront:contributes through
    BackOfficeBack-->GraphDB:communicates with
    RelationshipController-->RelationshipService:uses
    RelationshipController-->FacebookService:uses
WpFeltac commented 2 months ago

Who's your daddy - C4 Model

Level 1

C4Context
    title System Context for architectural kata
    Boundary(b0, "Graph System Context") {
        Person_Ext(user, "User")
        Person_Ext(thirdParty, "Third Party")
        Person_Ext(genealogist, "Genealogist")

        System(graphSystem, "Graph System")
        System_Ext(facebookAPI, "Facebook API")

        Rel_D(user, graphSystem, "uses")
        Rel_D(thirdParty, graphSystem, "uses")
        Rel_D(genealogist, graphSystem, "contributes through")
        Rel_D(graphSystem, facebookAPI, "uses")
    }
ThomasBerthier commented 2 months ago

kataArchitecture drawio

image

image

image

barry07-al commented 2 months ago

Level 1 Capture d’écran du 2024-04-24 10-15-47 Level 2 Capture d’écran du 2024-04-24 10-16-14

DuskGTB commented 2 months ago

Diagramme sans nom drawio

omarDeCombat commented 2 months ago

C1: C1 drawio

C2: C2 drawio

C3: C3(1)

Durties1 commented 2 months ago

DiagrammeJulian drawio (1)