UseCaseDiagramsDraft - bounswe/bounswe2025group5 GitHub Wiki

Draft 1 by Cengiz Bilal Sarı PlantUml

Draft 2 by Ege Tanriverdi UseCaseDiagramDraft

The full code of Draft 2:
@startuml
left to right direction

actor UnregisteredUser as "Unregistered User"
actor RegisteredUser as "Registered User"
actor Moderator as "Moderator"

skinparam usecase {
  BorderColor Black
  BackgroundColor White
  RoundCorner 15
  Margin 20
}

skinparam actorMargin 30
skinparam usecaseMargin 30

rectangle "Identity and Access Management (IAM) System" {
usecase UC11 as "Register"
usecase UC12 as "Set Up Credentials"
usecase UC13 as "Create username"
usecase UC14 as "Create password"
usecase UC15 as "Verify Credentials"
usecase UC21 as "Login"
usecase UC22 as "Enter Username and Password"
usecase UC23 as "Approve Credentials"
usecase UC24 as "Reject Credentials"
}

rectangle "Profile Management System" {
Usecase viewProfile as "View Profile"
usecase up as "Add/Change Profile Picture"
usecase bio as "Add/Change Bio Section"
Usecase display as "Select Badges to Display"
Usecase addText as "Add/Change Descriptive Text"
Usecase set as "Set Waste Management Goals"
Usecase view as "View Goals" 
Usecase selectType as "Select the Goal Type"
Usecase select as "Select Goal"
Usecase log as "Log Waste"
Usecase removeGoal as "Remove Goal"
Usecase visualize as "Visualize Progress"
Usecase seePosts as "See Posted Content"
Usecase deletePosts as "Delete Posted Content"
Usecase logout as "Log Out"
Usecase edit as "Edit Profile"
}

RegisteredUser --> UC21
Moderator --> UC21
UC21 -.> UC22 :<<includes>>
UC22 <-. UC15 :<<extends>>
UC15 <-. UC23 :<<extends>>
UC15 <-. UC24 :<<extends>>

UnregisteredUser --> UC11
UC11 -.> UC12 :<<includes>>
UC12 -.> UC13 :<<includes>>
UC12 -.> UC14 :<<includes>>

RegisteredUser --> viewProfile
bio <-. display :<<extends>>
bio <-. addText :<<extends>>
viewProfile <-. view :<<extends>>
view <-. set :<<extends>>
set -.> selectType :<<includes>>
view <-. select :<<extends>>
select <-. removeGoal:<<extends>>
select <-. visualize :<<extends>>
select <-. log :<<extends>>
viewProfile <-. seePosts :<<extends>>
seePosts <-. deletePosts :<<extends>>
viewProfile <-. logout :<<extends>>
viewProfile <-. edit :<<extends>>
edit <-. bio :<<extends>>
edit <-. up :<<extends>>

rectangle "Community Forum System" {
Usecase scroll as "Scroll Through Feed"
Usecase createpost as "Create a Post"
Usecase post as "Post the Content"
Usecase viewChallange as "View Community Challanges"
Usecase participate as "Join A Community Challange"
Usecase viewLeaderBoard as "View Leaderboard"
Usecase report as "Report A Post"
usecase selectChallange as "Select A Community Challange"
usecase deletePostMod as "Delete Post"
usecase postACommunity as "Start A Community Challange"
}

Moderator --> scroll
Moderator --> viewChallange
RegisteredUser --> viewChallange
RegisteredUser --> report
RegisteredUser --> scroll
UnregisteredUser --> scroll
RegisteredUser --> createpost
Moderator --> deletePostMod
Moderator --> postACommunity

viewChallange <-. selectChallange :<<extends>>
selectChallange <-. viewLeaderBoard :<<extends>>
selectChallange <-. participate :<<extends>>
createpost <-. post :<<extends>>

@enduml

Draft 3 by Serdar Bahar

usecase-diagram

(I will upload by UML code)

Draft 4 by Abdurrahman Arslan

plantuml-diagram

Draft 5 by Abdülkerim Kasar (This draft reflects the discussions and agreements reached during our meeting)
Edit1: I deleted verify credentials and connected "Login" to the "User" actor as we spoke during the 12th March PS hour. (by Abdülkerim Kasar)
Edit2: Regular "Login" and "Admin Login" have been separated for the "User" actor. (by Abdülkerim Kasar)

image

The full code of Draft 5:
@startuml
left to right direction

actor User as "User"
actor RegisteredUser as "Registered User"
actor Moderator as "Moderator"
actor Admin as "Admin"
actor Wikidata as "Wikidata"

skinparam usecase {
  BorderColor Black
  BackgroundColor White
  RoundCorner 15
  Margin 20
}
skinparam actorMargin 30
skinparam usecaseMargin 30

' Identity and Access Management (IAM) Use Cases
usecase UC11 as "Register"
usecase UC12 as "Set Up Credentials"
usecase UC21 as "Login"
usecase UC22 as "Enter Username and Password"

' New IAM Use Cases (added bubbles)
usecase adminLogin as "Admin Login"
usecase verifyAccount as "Verify Account"

' Profile Management Use Cases
usecase viewProfile as "View Profile"
usecase up as "Add/Change Profile Picture"
usecase bio as "Add/Change Bio Section"
usecase display as "Select Badges to Display"
usecase addText as "Add/Change Descriptive Text"
usecase set as "Set Waste Management Goals"
usecase view as "View Goals" 
usecase selectType as "Select the Goal Type"
usecase select as "Select Goal"
usecase log as "Log Waste"
usecase removeGoal as "Remove Goal"
usecase visualize as "Visualize Progress"
usecase seePosts as "See Posted Content"
usecase deletePosts as "Delete Posted Content"
usecase logout as "Log Out"
usecase edit as "Edit Profile"
usecase changePassword as "Change Password"

' Admin and Moderator Use Cases
usecase createDefaultChallenges as "Create default challenges"
usecase viewAppStats as "View statistics about app usage"
usecase modReports as "View and Moderate Reported posts"
usecase modChallengeRequests as "Verify challenge requests from registered users"

' New Forum Use Cases for RegisteredUser
usecase viewChallenges as "View Challenges"
usecase selectCommunityChallenge as "Select a Community Challenge"
usecase viewLeaderboard as "View Leaderboard"
usecase joinChallenge as "Join a Challenge"

usecase accessForum as "Access Forum"
usecase createPost as "Create Post"
usecase viewPost as "View Post"
usecase semanticSearch as "Semantic Search"
usecase likePost as "Like Post"
usecase commentPost as "Comment on Post"
usecase savePost as "Save Post"
usecase sharePost as "Share Post"
usecase reportPost as "Report a Post"

' New Forum Use Case for unregistered User (View Only Mode)
usecase accessForumViewOnly as "Access Forum (View Only Mode)"

' New extension for viewing post owner's profile from a post
usecase viewOwnerProfile as "View Profile (of the Post Owner)"

' IAM Relationships
User --> UC11
User --> UC21
UC21 -.> UC22 :<<includes>>
UC11 <-. UC12 :<<extends>>

' New IAM Relationships for Admin Login
User --> adminLogin
adminLogin -.> verifyAccount :<<includes>>

' Profile Management Relationships
RegisteredUser --> viewProfile
bio <-. display :<<extends>>
bio <-. addText :<<extends>>
viewProfile <-. view :<<extends>>
view <-. set :<<extends>>
set -.> selectType :<<includes>>
view <-. select :<<extends>>
select <-. removeGoal :<<extends>>
select <-. visualize :<<extends>>
' Moved Log Waste to extend View Profile
viewProfile <-. log :<<extends>>
viewProfile <-. seePosts :<<extends>>
seePosts <-. deletePosts :<<extends>>
viewProfile <-. logout :<<extends>>
viewProfile <-. edit :<<extends>>
edit <-. bio :<<extends>>
edit <-. up :<<extends>>
' Edit Profile now extends Change Password
edit <-. changePassword :<<extends>>

' Admin and Moderator Relationships
Admin --> createDefaultChallenges
Admin --> viewAppStats
Moderator --> modReports
Moderator --> modChallengeRequests

' New Forum Relationships for RegisteredUser
RegisteredUser --> viewChallenges
viewChallenges <-. selectCommunityChallenge :<<extends>>
selectCommunityChallenge <-. viewLeaderboard :<<extends>>
selectCommunityChallenge <-. joinChallenge :<<extends>>

RegisteredUser --> accessForum
accessForum <-. createPost :<<extends>>
accessForum <-. viewPost :<<extends>>
' Removed the direct arrow from Access Forum to Semantic Search

' View Post Relationships
viewPost <-. likePost :<<extends>>
viewPost <-. commentPost :<<extends>>
viewPost <-. savePost :<<extends>>
viewPost <-. sharePost :<<extends>>
viewPost <-. reportPost :<<extends>>
' Semantic Search now included in View Post
viewPost -.> semanticSearch :<<includes>>

' Arrow from Wikidata to Semantic Search
Wikidata --> semanticSearch

' New Forum Relationship for User (View Only Mode)
User --> accessForumViewOnly

' Extend View Post with ability to view the post owner's profile
viewPost <-. viewOwnerProfile :<<extends>>

' Note for the "Enter Username and Password" use case
note right of UC22
  Based on the account type selected during login,
  a User is granted the appropriate role,
  such as Registered User or Moderator.
end note

@enduml


Draft 6 by Cengiz Bilal Sarı and Ahmet Çağdaş Girit according to feedbacks

TLTDSzis4BtpL-peOkVWD76dbquc4qTEE-d4jSUEwpD4h2ZK9C02e5Mrq_zUS45n0LWyMTZtiD_2apyvBwmVkhPgSUl16x2gsNcGocBjbT5L9MflB3mwj20ShCOFgybuZuro7YtA6MOJfCmR8z4ARoBfU9hXAzafJH1zEfgVrBEImWj2ZeTLLRbdfNjXHGU3mreuX7yhWC_61hThquQR

The full code of Draft 6:

@startuml left to right direction

actor User as "User" actor RegisteredUser as "Registered User" actor Moderator as "Moderator" actor Admin as "Admin" actor Wikidata as "Wikidata"

skinparam usecase { BorderColor Black BackgroundColor White RoundCorner 15 Margin 20 } skinparam actorMargin 30 skinparam usecaseMargin 30

' Identity and Access Management (IAM) Use Cases usecase UC11 as "Register" usecase UC12 as "Set Up Credentials" usecase UC21 as "Login" usecase UC22 as "Enter Username and Password"

' New IAM Use Cases (added bubbles) usecase adminLogin as "Admin Login" usecase verifyAccount as "Verify Account"

' Profile Management Use Cases usecase viewProfile as "View Profile" usecase up as "Add/Change Profile Picture" usecase bio as "Add/Change Bio Section" usecase display as "Select Badges to Display" usecase addText as "Add/Change Descriptive Text" usecase set as "Set Waste Management Goals" usecase view as "View Goals" usecase selectType as "Select the Goal Type" usecase select as "Select Goal" usecase log as "Log Waste" usecase removeGoal as "Remove Goal" usecase visualize as "Visualize Progress" usecase seePosts as "See Posted Content" usecase deletePosts as "Delete Posted Content" usecase logout as "Log Out" usecase edit as "Edit Profile" usecase changePassword as "Change Password"

' Admin and Moderator Use Cases usecase createDefaultChallenges as "Create default challenges" usecase viewAppStats as "View statistics about app usage" usecase modReports as "View and Moderate Reported posts" usecase modChallengeRequests as "Verify challenge requests from registered users"

' New Forum Use Cases for RegisteredUser usecase viewChallenges as "View Challenges" usecase selectCommunityChallenge as "Select a Community Challenge" usecase viewLeaderboard as "View Leaderboard" usecase joinChallenge as "Join a Challenge"

usecase createPost as "Create Post" usecase viewPost as "View Post" usecase semanticSearch as "Semantic Search" usecase likePost as "Like Post" usecase commentPost as "Comment on Post" usecase savePost as "Save Post" usecase sharePost as "Share Post" usecase reportPost as "Report a Post"

' New Forum Use Case for unregistered User (View Only Mode) usecase accessForumViewOnly as "Access Forum (View Only Mode)"

' New extension for viewing post owner's profile from a post usecase viewOwnerProfile as "View Profile (of the Post Owner)"

' IAM Relationships User --> UC11 RegisteredUser--> UC21 RegisteredUser--> viewLeaderboard

UC21 -.> UC22 :<> UC11 -.> UC12 :<>

' New IAM Relationships for Admin Login User --> adminLogin adminLogin -.> verifyAccount :<>

' Profile Management Relationships RegisteredUser --> viewProfile RegisteredUser --> log RegisteredUser --> edit RegisteredUser --> view bio <-. display :<> bio <-. addText :<> view <-. set :<> set -.> selectType :<> view <-. select :<> select <-. removeGoal :<> select <-. visualize :<> ' Moved Log Waste to extend View Profile viewProfile <-. seePosts :<> seePosts <-. deletePosts :<> viewProfile <-. logout :<> edit <-. bio :<> edit <-. up :<> ' Edit Profile now extends Change Password edit <-. changePassword :<>

' Admin and Moderator Relationships Admin --> createDefaultChallenges Admin --> viewAppStats Moderator --> modReports Moderator --> modChallengeRequests

' New Forum Relationships for RegisteredUser RegisteredUser --> viewChallenges viewChallenges <-. selectCommunityChallenge :<> selectCommunityChallenge <-. joinChallenge :<>

RegisteredUser --> createPost RegisteredUser --> viewPost ' Removed the direct arrow from Access Forum to Semantic Search

' View Post Relationships viewPost <-. likePost :<> viewPost <-. commentPost :<> viewPost <-. savePost :<> viewPost <-. sharePost :<> viewPost <-. reportPost :<> ' Semantic Search now included in View Post viewPost -.> semanticSearch :<>

' Arrow from Wikidata to Semantic Search Wikidata --> semanticSearch

' New Forum Relationship for User (View Only Mode) User --> accessForumViewOnly

' Extend View Post with ability to view the post owner's profile viewPost <-. viewOwnerProfile :<> @enduml

Draft 7 by Cengiz Bilal Sarı after Kerim's review XLTDK-Gs4BtxLtJD1VOmcuLKBYcAMXX8QbCGA5Z2MMFrU1HioP7acKm-_dlabaSVniwU6FLhTRUUMltCPsEPjbrJ5pLkB5W5MbHR2rneBArGiYXOQPM65uCQc855_sCn69-m4iQYHXxWQ8BKyrvnrCmgxtHS1VYADq8IHB-EvbVn9ZYpZ93ZOb4Kvat8bcdMG6UmP0RX

The full code of Draft 7: @startuml left to right direction

actor User as "User" actor RegisteredUser as "Registered User" actor Moderator as "Moderator" actor Admin as "Admin" actor Wikidata as "Wikidata"

skinparam usecase { BorderColor Black BackgroundColor White RoundCorner 15 Margin 20 } skinparam actorMargin 30 skinparam usecaseMargin 30

' Identity and Access Management (IAM) Use Cases usecase UC11 as "Register" usecase UC12 as "Set Up Credentials" usecase UC21 as "Login" usecase UC22 as "Enter Username and Password"

' New IAM Use Cases (added bubbles) usecase adminLogin as "Admin Login" usecase verifyAccount as "Verify Account"

' Profile Management Use Cases usecase viewProfile as "View Profile" usecase up as "Add/Change Profile Picture" usecase bio as "Add/Change Bio Section" usecase display as "Select Badges to Display" usecase addText as "Add/Change Descriptive Text" usecase set as "Set Waste Management Goals" usecase selectType as "Select the Goal Type" usecase select as "See Created Goal" usecase log as "Log Waste" usecase removeGoal as "Remove Goal" usecase visualize as "Visualize Progress" usecase seePosts as "See Posted Content" usecase deletePosts as "Delete Posted Content" usecase logout as "Log Out" usecase edit as "Edit Profile" usecase changePassword as "Change Password"

' Admin and Moderator Use Cases usecase createDefaultChallenges as "Create default challenges" usecase viewAppStats as "View statistics about app usage" usecase modReports as "View and Moderate Reported posts" usecase modChallengeRequests as "Verify challenge requests from registered users"

' New Forum Use Cases for RegisteredUser usecase viewChallenges as "View Challenges" usecase selectCommunityChallenge as "Select a Community Challenge" usecase viewLeaderboard as "View Leaderboard" usecase joinChallenge as "Join a Challenge"

usecase createPost as "Create Post" usecase viewPost as "View Post" usecase semanticSearch as "Semantic Search" usecase likePost as "Like Post" usecase commentPost as "Comment on Post" usecase savePost as "Save Post" usecase sharePost as "Share Post" usecase reportPost as "Report a Post"

' New Forum Use Case for unregistered User (View Only Mode) usecase accessForumViewOnly as "Access Forum (View Only Mode)"

' New extension for viewing post owner's profile from a post usecase viewOwnerProfile as "View Profile (of the Post Owner)"

' IAM Relationships User --> UC11 RegisteredUser--> UC21 RegisteredUser--> viewLeaderboard

UC21 -.> UC22 :<> UC11 -.> UC12 :<>

' New IAM Relationships for Admin Login User --> adminLogin adminLogin -.> verifyAccount :<>

' Profile Management Relationships RegisteredUser --> viewProfile RegisteredUser --> log RegisteredUser --> edit RegisteredUser --> logout RegisteredUser --> deletePosts RegisteredUser --> seePosts RegisteredUser --> select RegisteredUser --> removeGoal RegisteredUser --> set

bio <-. display :<> bio <-. addText :<> set -.> selectType :<> select -.> visualize :<> ' Moved Log Waste to extend View Profile edit <-. bio :<> edit <-. up :<> ' Edit Profile now extends Change Password edit <-. changePassword :<>

' Admin and Moderator Relationships Admin --> createDefaultChallenges Admin --> viewAppStats Moderator --> modReports Moderator --> modChallengeRequests

' New Forum Relationships for RegisteredUser RegisteredUser --> viewChallenges viewChallenges <-. selectCommunityChallenge :<> selectCommunityChallenge <-. joinChallenge :<>

RegisteredUser --> createPost RegisteredUser --> viewPost ' Removed the direct arrow from Access Forum to Semantic Search

' View Post Relationships RegisteredUser --> sharePost RegisteredUser --> savePost RegisteredUser --> commentPost RegisteredUser --> viewPost RegisteredUser --> likePost RegisteredUser --> reportPost

RegisteredUser <|-- Moderator

' Semantic Search now included in View Post viewPost -.> semanticSearch :<>

' Arrow from Wikidata to Semantic Search Wikidata --> semanticSearch

' New Forum Relationship for User (View Only Mode) User --> accessForumViewOnly

' Extend View Post with ability to view the post owner's profile viewPost <-. viewOwnerProfile :<> @enduml

⚠️ **GitHub.com Fallback** ⚠️