eclipsesource / theia-ai-exerciser-labcourse2024

Eclipse Public License 2.0
0 stars 0 forks source link

Architecture and System Design #14

Open atahankilc opened 1 week ago

atahankilc commented 1 week ago
  1. Define Detailed Requirements

    • List user requirements.
    • Define technical requirements.
  2. Develop the System Architecture

    • Define the number and roles of agents.
    • Specify which tool functions will be used for which agents.
    • Structure an initial version of the architecture.
  3. Document the System Design in README

    • Provide a textual explanation of the system design.
    • Diagrams (e.g., using Mermaid) can be used to visually represent the architecture and design.
    • Integrate both textual descriptions and diagrams into the README file.
mihaela21k commented 5 days ago

Flowchart for System Design


flowchart TD
 subgraph subGraph0["User Side"]
        User["User Interface"]
        UserConductorFile["Conductor File (Editable)"]
  end
 subgraph subGraph1["Creator Agent"]
        CreatorAgent["Exercise Creator Agent"]
        ExerciseFiles["Exercise Files (Description + Instructions)"]
        SolutionFile["Solution File (Blocked)"]
  end
 subgraph subGraph2["Conductor Agent"]
        Conductor["Conductor Agent"]
        SupportModule["Support Module (Feedback + Hints)"]
  end
 subgraph subGraph3["Sharing Module"]
        SharingSystem["Exercise Sharing Module"]
        OtherUser["Other User Interface"]
  end

    User -- Specify Topic --> CreatorAgent
    CreatorAgent -- Provide File List + Summary --> User
    User -- Approve/Decline Files --> CreatorAgent
    CreatorAgent -- Generate Exercise Files --> ExerciseFiles
    ExerciseFiles -- Create Conductor File --> UserConductorFile
    CreatorAgent -- Generate Solution File --> SolutionFile
    User -- Conduct Exercises --> UserConductorFile
    UserConductorFile -- Send for Feedback or Hints --> Conductor
    Conductor -- Access Support Module --> SupportModule
    SupportModule -- Validate Solution --> SolutionFile
    SupportModule -- Provide Feedback/Hints --> User
    User -- Share Exercises --> SharingSystem
    SharingSystem -- Show File List --> OtherUser
    OtherUser -- Approve/Decline --> SharingSystem
    SharingSystem -- Notify --> CreatorAgent
mihaela21k commented 5 days ago

@JonasHelming

JonasHelming commented 5 days ago

i think this is a very good basis for discussion on Friday. One thing: This diagram is a bit of a mixture between a system composition and a flow chart. I believe it would be good to separate these two thingsmid term, i.e. one diagram showing the components and then the user flow in a separate diagram.

Also: I would call the solutions "files" in the architecture, they are rather objects. Storing them to files is a requirement. I think you should specify an object "exercise" and start to clearly define what it contains.

One unclaified question that is raised by the diagram is how the different modules and agents communicate to each other about exercises. Would it maybe make sense to introduce a "Exercise service" that hold all created exercises (including all information like files to be created, desription, instructions and solution) and information like which exercise is currently conducted? If you like this, please specify it.

this service could then also be the basis to implement persistence (in files or something else)

mihaela21k commented 4 days ago

flowchart TD
 subgraph UserModule["User Module"]
        UI["User Interface"]
      end
 subgraph CreatorModule["Creator Module"]
        Creator["Exercise Creator Agent"]
        ExerciseObj["Exercise Objects (Exercise, Instructions, Solution)"]
  end
 subgraph ConductorModule["Conductor Module"]
        Conductor["Conductor Agent"]
        Support["Support Module (Feedback + Hints)"]
  end
 subgraph SharingModule["Sharing Module"]
        Sharing["Sharing Service"]
        OtherUser["Other User Interface"]
  end
 subgraph PersistenceLayer["Persistence Layer"]
        ExerciseService["Exercise Service (Centralized Storage)"]
  end
 subgraph InitService["Initialization Module"]
        Initialization["Initialization Service"]
  end
    UI --> Creator & Conductor & Sharing
    Creator --> ExerciseObj
    ExerciseObj --> ExerciseService
    ExerciseService --> Initialization
    Initialization --> Conductor
    Conductor --> Support
    Support --> ExerciseService
    Sharing --> ExerciseService & OtherUser
TANG839 commented 4 days ago

@JonasHelming