Diagrams Part of Implementation Milestone Report - bounswe/bounswe2025group8 GitHub Wiki
Our approach to creating diagrams for the Neighborhood Assistance Board platform evolved significantly throughout the project lifecycle, reflecting our growing understanding of software design principles and collaborative development:
In Meeting 6 , we initially aimed to create the sequence, class, context, and use case diagrams by assigning roles among the group members, and we completed the role distribution accordingly. Since the creation of sequence diagrams required the other diagrams to be prepared first, we decided to draft all the diagrams except for the sequence diagrams. These drafts were a crucial step for us, as they helped us better understand the project and provided a solid foundation for our future work.
After solidifying our requirements and detailed scenarios, we recognized the need for more structured and implementation-focused diagrams. We restructured our approach by:
-
Starting with shared responsibility: Initially, in Meeting 7, we adopted a collaborative approach where all members contributed to sequence diagrams to maximize exposure and learning.
-
Assigning individual use cases: We distributed specific use cases among team members, ensuring individual accountability and deep focus on distinct functionalities.
This also helped us parallelize the work efficiently.
Example: Ali was responsible for "Post Assistance Request", Musa for "Register", etc. -
Pairing sequence diagrams with use cases: We shifted from group-created sequence diagrams to an individual approach where each member developed the sequence diagram for their assigned use case, ensuring stronger alignment and deeper understanding of system interactions.
-
Ensuring requirement traceability: Each diagram was explicitly linked to relevant requirements and scenarios, forming a tightly integrated documentation system from analysis to design.
-
Following a sequential development flow: As agreed in Meeting 7, we followed a sequential workflow where we first developed context and use case diagrams, then class diagrams, and finally sequence diagrams—ensuring each diagram builds logically on top of the previous one.
This transition reflected our team’s commitment to treating diagrams not as static documentation but as living blueprints that directly support implementation.
# | Use-Case | Assignee(s) |
---|---|---|
1 | Ban User | Erdem |
2 | Register | Musa |
3 | Post Assistance Request | Ali |
4 | Update Assistance Request | Üveys |
5 | Cancel Assistance Request | Yusuf Kaan |
6 | Rate and Review | Ahmet Eren |
7 | Attach Photos to Task | Alperen |
8 | Confirm Task Completion | Abdullah |
9 | Select Assignee | Ebru |
10 | Recover Password | Eray |
11 | Change Profile Information | Batuhan |
- Tool standardization: All diagrams were created using [Lucidchart/Draw.io/etc.] to ensure consistent styling and collaborative editing.
-
Naming convention: All diagram files followed the pattern
[DiagramType]_[MainFocus]_v[Version].png
(e.g.,UseCase_TaskCreation_v1.2.png
). - Review checklist: Each diagram was reviewed against a standardized checklist covering technical accuracy, completeness, and adherence to UML standards.
- System boundary definition: The context diagram clearly delineates the boundaries of the Neighborhood Assistance Board system.
- External entity identification: All external entities that interact with the system are identified.
- Data flow representation: Major data flows between the system and external entities are represented.
- Simplicity focus: The context diagram maintains a high-level view without delving into internal system components.
- Actor specificity: All actors corresponded to specific user roles defined in our requirements, as shown in our Use Case diagram which clearly distinguishes between Guest User, Registered User, and Administrator.
- Use case atomicity: Each use case represented a single, coherent user goal (e.g., "Register," "View Public Requests," "Volunteer for Request").
- Relationship clarity: "Extends" and "Includes" relationships were used purposefully to show relationships between use cases, such as how "Rate and Review" is included in the "Confirm Task Completion" process.
- System boundary: Our diagram clearly identifies the "Neighborhood Assistance Board" system boundary, distinguishing between user actions and system responsibilities.
- Scenario alignment: As decided in Meeting 6, we ensured that use case diagrams were aligned with user scenarios, with scenarios being finalized after the use case diagram drafts were completed.
- User role representation: As decided in Meeting 6, our class diagram does not have separate Volunteer and Requester classes, as all users can perform both roles. This design decision was explicitly made to reflect the flexible nature of user roles in our system.
- Attribute completeness: Classes included all attributes necessary for implementation with appropriate data types, as demonstrated in our comprehensive class diagram where each entity (like RegisteredUser, Task, Notification) contains complete attribute definitions with proper data types (String, int, Date, etc.).
- Method specificity: Methods included parameter types and return values (e.g., "+login(email, password) : boolean" in the RegisteredUser class).
- Relationship precision: All relationships specified multiplicity (e.g., 1.., 0.., 1) and included descriptive association names (e.g., "creates," "receives," "has").
- Package organization: Classes were organized into logical groups reflecting our implementation architecture, with clear separation between user management, task management, and supporting functionality.
- Actor-system consistency: Actors in sequence diagrams matched those in use case diagrams.
- Alternative flows: Complex interactions included alternative flows for error cases and edge conditions.
- Individual ownership model: As decided during our project evolution, each team member created the sequence diagram for their own assigned use case, ensuring deep understanding of each scenario.
- Scenario alignment: Following Meeting 7 decisions, each sequence diagram was directly tied to a specific scenario developed for each use case.
- Dependency on preceding diagrams: As established in Meeting 7, sequence diagrams were developed after use case and class diagrams were finalized, ensuring consistency across all diagram types.
Our diagram development process demonstrated effective team collaboration through:
-
Evolving ownership structure: Initially, as per Meeting 6, different members led the creation of different diagram types. Later, we transitioned to an individual ownership model where each member was responsible for:
- A specific use case
- The corresponding scenario development
- The sequence diagram visualizing that scenario
-
Comprehensive use case coverage: We ensured all major system functionalities were represented, with each use case assigned to one team member.
Example: Ali was responsible for “Post Assistance Request”, Musa for “Register”, etc. -
Structured peer review cycles: Diagrams underwent structured internal reviews, with team feedback leading to meaningful changes such as clearer relationships and better naming conventions.
-
Internal knowledge transfer: Team members with stronger UML experience supported others by explaining proper notations, guiding relationship modeling, and sharing best practices, improving overall diagram quality.
-
Phased diagram development: Following the plan from Meeting 7, we adopted a sequential development approach:
- Context and use case diagrams were finalized first
- Then class diagrams were built based on these foundations
- Finally, sequence diagrams were developed once scenarios and structures were fully clarified
-
Standardized scenario and mockup workflow: After Meeting 7, we introduced a shared template for scenario development, which included a full workflow:
- Scenario text
- Corresponding sequence diagram
- Related mockups
This ensured consistency across all contributions while preserving individual ownership.
Our diagrams significantly influenced our implementation approach:
-
Context diagrams established clear system boundaries and identified all external entities interacting with our system, helping focus development efforts.
-
Use case diagrams helped prioritize feature development and establish clear acceptance criteria for each functionality. For instance, the clear separation of user roles (Guest User, Registered User, Administrator) in our diagram directly informed our authentication and authorization implementation.
-
The relationship structure in our Use Case diagram between core functionalities like "Post Assistance Request" and its extensions ("Update Assistance Requests," "Cancel Assistance Requests," "Attach Photos to Tasks") guided our implementation of the request creation workflow.
-
Class diagrams directly informed our database schema design and API structure. For example, our comprehensive class diagram clearly defines the relationship between RegisteredUser and Task entities, showing that a user "creates" tasks and "has" a feed. This directly translated into our database schema and API endpoints for user-task interactions.
-
The enumeration types defined in our class diagram (TaskStatus, TaskCategory, VolunteerStatus) established standardized values used consistently across both frontend and backend implementations.
-
Entity relationships mapped in our class diagram (such as the connection between Task, Review, and RegisteredUser) ensured consistent data flow throughout the application.
-
Sequence diagrams guided our API endpoint design and frontend-backend communication protocols. By having each team member create the sequence diagram for their assigned use case, we ensured deep understanding of both the user interaction flow and the technical implementation requirements.
-
Integration of scenarios, sequence diagrams, and mockups for each use case, as organized in our wiki, provided a comprehensive view that guided both frontend and backend development teams with consistent vision.
-
All diagrams collectively served as reference documentation during development sprints, reducing ambiguity and implementation errors.
-
The organized structure of our wiki with diagrams grouped logically facilitated easy access to relevant documentation during implementation, improving team efficiency.
Despite our structured approach, we encountered several challenges:
-
Ensuring consistency across individually created artifacts: With the decision in Meeting 7 to have each team member create their own scenario, sequence diagram, and mockups, we needed to establish templates and standards to ensure consistency. We developed standardized templates for scenarios to address this challenge.
-
Coordinating sequential development: Managing the dependencies between diagram types (with sequence diagrams dependent on completed use case and class diagrams) required careful planning and communication to ensure timely completion without bottlenecks.
-
Adapting to requirement changes: When requirements evolved, diagrams needed updating. This is reflected in our commit history, where we made significant revisions based on stakeholder input. We addressed this ongoing challenge by establishing clear change management procedures and responsibility assignments.
-
Diagrams are most effective when created collaboratively with input from various team roles, not just architects or designers.
-
Regular diagram reviews against implementation progress help keep documentation and code in sync.
-
Starting with simpler, high-level diagrams before adding detail helps maintain focus on core system relationships.
-
Explicitly connecting diagrams to requirements and scenarios creates a more cohesive project documentation ecosystem.
-
Investing time in diagram standards and templates early saves significant effort in later project phases.
-
Sequential development of diagram types (context → use case → class → sequence) creates more consistent and cohesive system documentation.
-
Cross-team knowledge sharing about UML standards and best practices improves overall diagram quality and utility.
-
Clear team assignments for specific diagram types leads to better specialization and more detailed diagrams.
-
Individual ownership of end-to-end scenarios (from use case to sequence diagram to mockups) promotes deeper understanding and better integration between diagrams and implementation.
-
Standardized templates for scenarios ensure consistency across individually developed artifacts.
-
Combining use cases, scenarios, sequence diagrams, and mockups provides a comprehensive view of system functionality from both technical and user experience perspectives.
All our diagrams are maintained in our project repository with an organized structure that facilitates easy navigation and access. Based on the screenshots of our wiki home page and sidebar, we have created a comprehensive navigation structure that groups related documentation.
We have organized our project documentation into logical sections in both the wiki home page and sidebar:
-
Requirement Analysis Section(Wiki Sidebar):
- Requirements
- Elicitation Questions
- Scenarios
- Customer Meeting
- UML Class Diagram
- UML Use Case Diagram
- Scenarios & UML Sequence Diagrams (with expandable subsections for each use case)
-
Diagrams Section(Wiki Homepage):
- UML Class Diagram
- UML Use Case Diagram
- Scenarios & UML Sequence Diagrams (with expandable subsections for each use case)
This hierarchical organization allows team members and stakeholders to quickly locate specific diagrams and related documentation, with clear relationships between scenarios, use cases, and their corresponding sequence diagrams.
Our project repositories:
-
UML Sequence Diagrams
Register
Select Assignee
Recover Password
Rate and Review
Post Assistance Request
Confirm Task Completion
Change Profile Information
Cancel Assistance Request
Ban User
Attach Photo to Task
Update Assistance Request