Computer Science
Software Engineering Design
System Requirements
You are to design (but not implement) a task management system with the following functional requirements:
User Management:
Users can register, log in, and manage profiles (e.g., name, email, role: admin or regular user).
Admins can invite new users and assign roles.
Task Creation and Management:
Create tasks with attributes: title, description, priority (low/medium/high), status (to-do/in-progress/done), assignee(s), due date.
Tasks can be grouped into projects or boards.
Support for subtasks or dependencies between tasks.
Collaboration Features:
Assign tasks to multiple users.
Comment on tasks and receive notifications for updates (e.g., status changes, new comments).
Real-time updates (design for potential WebSocket integration, but focus on design only).
Reporting and Search:
Generate reports on task completion rates, overdue tasks, and user productivity.
Search tasks by keyword, status, assignee, or date.
Non-functional requirements:
The design should be scalable to handle up to 1,000 users and 10,000 tasks.
Ensure data persistence (assume a database like SQL, but model it abstractly).
Prioritize security (e.g., authentication, authorization) and usability.
Deliverables
Submit a single PDF report (maximum 20 pages, excluding appendices) containing:
System Architecture Overview:
A high-level architectural diagram (e.g., using MVC or layered architecture).
Description of key components and their interactions.
UML Diagrams:
Class diagram: Showing classes, interfaces, relationships (inheritance, association, etc.), and attributes/methods.
Use case diagram: At least 5 use cases with actors.
Sequence diagram: For at least two key scenarios (e.g., creating a task, updating status with notifications).
State diagram: For task lifecycle.
Design Patterns Application:
Identify and apply at least three design patterns (e.g., Observer for notifications, Factory for task creation, Singleton for user session management).
Justify why each pattern is suitable and how it improves the