Skip to content

Deliverable_2

Alejandro Osorno edited this page Oct 2, 2024 · 1 revision

Deliverable 2: High-Level Design Document

Team and Roles:

  • Esteban Salazar → Architect
  • Alejandro Osorno → Developer
  • Pablo Betancur → Developer
  • Samuel Santamaria → Developer

Table of Contents

  1. General Aspects of the Delivery
  2. Section 1: Estimation
  3. Section 2: Sprint Evaluation
  4. Section 3: Current Sprint Planning
  5. Section 4: Structural and Architectural Aspects
  6. Section 5: Progress and Demonstration
  7. Conclusion and Lessons Learned
  8. References

General Aspects of the Delivery

The purpose of this document is to ensure consensus among team members on the software architecture design for the WorkSphere application. It also aims to apply concepts related to the SCRUM framework. The architecture outlined in this document is based on the following fronts:

  • Logical View: Focuses on the main elements and design principles.
  • Physical View: Focuses on the distribution of processing across devices.

Section 1: Estimation

  • Backlog Items Estimation:

image

  • Cost Estimation:

image


Section 2: Sprint Evaluation

During the retrospective of the previous sprint, the team used Discord for the meeting and applied the Start, Stop, Continue technique. This method helped structure the team's reflections and learnings from the sprint. The team identified concrete actions to optimize the process:

Actions for Improvement:

  • Start:

    • Begin documenting all tasks and their progress in GitHub Projects to improve visibility and team coordination.
    • Assign a facilitator in Discord meetings to keep discussions concise and focused.
  • Stop:

    • Stop overloading certain team members with excessive tasks. Ensure a more equitable distribution of work.
    • Stop assuming all members understand priorities without clear communication. Improve task assignment clarity.
  • Continue:

    • Continue using the Start, Stop, Continue technique for retrospectives as it helps identify improvement opportunities.
    • Maintain collaborative sprint planning practices that have enhanced task and objective organization.

Meeting Evidence:

image

image


Section 3: Current Sprint Planning

User Stories for Sprint #2:

  1. Create Landing Page:
    As a new user, I want to see a well-designed homepage to have a clear first impression of the system's purpose and available options.

  2. Create Chat System:
    As a user, I want access to a chat system within the platform to easily communicate with other users and event organizers in real-time.

  3. Schedule Events:
    As a user, I want to schedule events on the platform so I can efficiently manage and organize my activities, keeping participants informed of schedules and details.

  4. Post Updates and News:
    As a user, I want to post updates and news on the platform to stay informed about important events and relevant community updates.

  5. Add Favorites:
    As a user, I want to add events to my favorites list for quick access to those I'm interested in and to help organize my participation.

  6. Implement Search-Bar:
    As a user, I want a search bar on the platform to quickly find specific events or content without having to browse the entire site.

Planning and Backlog:

image

image

Backlog:

https://github.com/users/osozzz/projects/4


Section 4: Structural and Architectural Aspects

Architecture Drivers

Driver Attributes Scenarios
Scalability The application is designed to scale independently in both frontend and backend. As the number of users grows, more resources can be added either on the client side or the server side (using Flask and Django).
Maintainability Modular and reusable structure with clear responsibilities by layer. When the team needs to add new features or fix bugs, the separated layers make it easier to identify and modify the necessary code.
Performance Efficient server response to multiple client requests. When many users access the system simultaneously, communication between the frontend and backend must remain fast and efficient.
Reusability Reusable components in the user interface. When new interfaces or updates are needed, previously defined UI components can be reused, saving time and effort.
Security Protects data and business logic. When accessing the database and performing critical operations, Django ensures secure data management and access controls are enforced.

Architectural Styles

Application Type Web App
Architectural Style/Pattern Client/Server (Implementation):
Justification: This style is appropriate because it clearly separates the frontend and backend and allows greater permeability of requests.
Implications: Facilitates the independence of the frontend and backend, allowing both parts to be developed separately and scale independently.
3-Tiers / N-Tiers (Implementation):
Justification: The application will follow a three-layer structure: presentation layer, business logic layer, and data layer.
Implications: Provides clear separation of responsibilities, improving the system's maintainability and scalability.
Object-Oriented (Structure):
Justification: Django uses object-oriented programming principles to organize the code around classes and objects.
Implications: Facilitates the modeling of entities and their relationship with the database and business logic.
Layered (Structure):
Justification: The database follows a layered approach where data access and business logic layers are clearly separated.
Implications: Increases code clarity and robustness, with well-defined layers that allow system scalability.
Programming Languages Python, HTML, CSS, JS.
Technical Aspects SQLite3
Framework Django

Logic View

Preconceptual schema

image

Design class diagram

image

Entity-relationship diagram

image

Physical View

Component diagram

image


Section 5: Progress and Demonstration


Conclusion and Lessons Learned

The team has effectively leveraged Django to optimize the development process in Sprint 2. The framework's integrated tools, such as the ORM and authentication management, have facilitated database interaction and security implementation. The collaboration and constant communication within the group have been key to maintaining a clear and unified object-oriented structure in the code. The use of Django templates has simplified the creation of dynamic user interfaces, allowing the team to focus on business logic without added complexity. This approach has improved our efficiency and laid the groundwork for smoother deployment.


References