Skip to content

Latest commit

 

History

History
500 lines (401 loc) · 15.8 KB

File metadata and controls

500 lines (401 loc) · 15.8 KB

Software Requirements Specification (SRS)

Simple Project Management System (SPMS)

Document Information

  • Document Version: 1.0
  • Date: December 2024
  • Author: Development Team
  • Status: Approved

1. Introduction

1.1 Purpose

This document specifies the requirements for the Simple Project Management System (SPMS), a web-based application designed to help teams manage projects, tasks, and track progress efficiently.

1.2 Scope

SPMS is a lightweight project management tool that provides:

  • User management with role-based access control
  • Project creation and management
  • Task assignment and tracking
  • Progress visualization and reporting
  • Activity logging and collaboration

1.3 Definitions and Acronyms

  • SPMS: Simple Project Management System
  • Admin: System administrator with full access
  • Project Manager: User who can create and manage projects
  • Team Member: User who can view and update assigned tasks
  • CRUD: Create, Read, Update, Delete operations

1.4 References


2. Overall Description

2.1 Product Perspective

SPMS is a standalone web application built using:

  • Backend: Flask (Python web framework)
  • Database: SQLite (lightweight database)
  • Frontend: HTML, CSS (Bootstrap), JavaScript
  • Authentication: Flask-Login with role-based access

2.2 Product Functions

  • User registration and authentication
  • Project management (create, edit, delete, view)
  • Task management (create, assign, update status)
  • Dashboard with progress visualization
  • Activity logging and comments
  • Role-based access control

2.3 User Classes and Characteristics

2.3.1 Administrator

  • Characteristics: Full system access, manages all users and projects
  • Responsibilities: User management, system configuration, oversight
  • Access Level: Complete system access

2.3.2 Project Manager

  • Characteristics: Creates and manages projects, assigns tasks
  • Responsibilities: Project planning, team coordination, progress tracking
  • Access Level: Project and task management within assigned scope

2.3.3 Team Member

  • Characteristics: Works on assigned tasks, updates progress
  • Responsibilities: Task completion, status updates, collaboration
  • Access Level: Limited to assigned tasks and projects

2.4 Operating Environment

  • Server: Linux/Windows/macOS with Python 3.7+
  • Database: SQLite (file-based database)
  • Web Server: Flask development server or production WSGI server
  • Browser: Modern web browsers (Chrome, Firefox, Safari, Edge)

2.5 Design and Implementation Constraints

  • Must use Flask framework for backend
  • SQLite database for simplicity and portability
  • Responsive design for mobile and desktop
  • Role-based access control implementation
  • Secure password hashing and session management

3. Specific Requirements

3.1 Functional Requirements

3.1.1 User Management (FR-001 to FR-010)

FR-001: User Registration

  • Description: Users can register for new accounts
  • Input: Username, email, password, role selection
  • Processing: Validate input, hash password, create user record
  • Output: User account created, confirmation message
  • Priority: High

FR-002: User Authentication

  • Description: Users can login with username and password
  • Input: Username, password, remember me option
  • Processing: Verify credentials, create session
  • Output: Successful login, redirect to dashboard
  • Priority: High

FR-003: Role-Based Access Control

  • Description: System enforces different access levels based on user roles
  • Input: User role, requested action
  • Processing: Check permissions, grant or deny access
  • Output: Access granted or denied with appropriate message
  • Priority: High

FR-004: User Profile Management

  • Description: Users can view and update their profile information
  • Input: Profile data, password change
  • Processing: Validate and update user information
  • Output: Updated profile, confirmation message
  • Priority: Medium

FR-005: Password Security

  • Description: Passwords must be securely hashed and stored
  • Input: Plain text password
  • Processing: Hash password using secure algorithm
  • Output: Hashed password stored in database
  • Priority: High

3.1.2 Project Management (FR-011 to FR-020)

FR-011: Project Creation

  • Description: Authorized users can create new projects
  • Input: Project name, description, start date, end date, status
  • Processing: Validate input, create project record
  • Output: New project created, redirect to project view
  • Priority: High

FR-012: Project Editing

  • Description: Project creators can edit project details
  • Input: Updated project information
  • Processing: Validate input, update project record
  • Output: Project updated, confirmation message
  • Priority: High

FR-013: Project Deletion

  • Description: Project creators can delete projects
  • Input: Project deletion confirmation
  • Processing: Delete project and all associated tasks
  • Output: Project deleted, confirmation message
  • Priority: Medium

FR-014: Project Listing

  • Description: Users can view list of projects based on their role
  • Input: User role and permissions
  • Processing: Filter projects based on access level
  • Output: List of accessible projects
  • Priority: High

FR-015: Project Progress Tracking

  • Description: System calculates and displays project progress
  • Input: Project tasks and their status
  • Processing: Calculate completion percentage
  • Output: Progress percentage and statistics
  • Priority: High

3.1.3 Task Management (FR-021 to FR-030)

FR-021: Task Creation

  • Description: Authorized users can create tasks within projects
  • Input: Task title, description, priority, due date, assigned user
  • Processing: Validate input, create task record
  • Output: New task created, activity logged
  • Priority: High

FR-022: Task Assignment

  • Description: Tasks can be assigned to specific team members
  • Input: Task ID, assigned user ID
  • Processing: Update task assignment
  • Output: Task assigned to user
  • Priority: High

FR-023: Task Status Updates

  • Description: Users can update task status (To Do, In Progress, Done)
  • Input: Task ID, new status
  • Processing: Update task status, log activity
  • Output: Status updated, activity logged
  • Priority: High

FR-024: Task Filtering

  • Description: Users can filter tasks by status, priority, or project
  • Input: Filter criteria
  • Processing: Query tasks based on filters
  • Output: Filtered task list
  • Priority: Medium

FR-025: Task Comments

  • Description: Users can add comments to tasks
  • Input: Task ID, comment text
  • Processing: Create activity log entry
  • Output: Comment added, activity logged
  • Priority: Medium

3.1.4 Dashboard and Reporting (FR-031 to FR-040)

FR-031: Dashboard Statistics

  • Description: Dashboard displays task and project statistics
  • Input: User role and permissions
  • Processing: Calculate statistics based on accessible data
  • Output: Statistics cards and charts
  • Priority: High

FR-032: Progress Visualization

  • Description: System displays progress using charts and graphs
  • Input: Task and project data
  • Processing: Generate chart data
  • Output: Visual progress representation
  • Priority: High

FR-033: Recent Activities

  • Description: Dashboard shows recent system activities
  • Input: Activity log data
  • Processing: Query recent activities
  • Output: List of recent activities
  • Priority: Medium

FR-034: Overdue Tasks Alert

  • Description: System identifies and alerts about overdue tasks
  • Input: Task due dates and current date
  • Processing: Compare dates, identify overdue tasks
  • Output: Overdue task alerts
  • Priority: High

3.1.5 Activity Logging (FR-041 to FR-045)

FR-041: Activity Tracking

  • Description: System logs all user activities and changes
  • Input: User actions and system changes
  • Processing: Create activity log entries
  • Output: Activity logged in database
  • Priority: High

FR-042: Activity History

  • Description: Users can view activity history for tasks and projects
  • Input: Task or project ID
  • Processing: Query activity logs
  • Output: Chronological activity list
  • Priority: Medium

3.2 Non-Functional Requirements

3.2.1 Performance Requirements (NFR-001 to NFR-005)

NFR-001: Response Time

  • Description: Web pages must load within 3 seconds
  • Measurement: Time from request to page display
  • Priority: High

NFR-002: Database Performance

  • Description: Database queries must complete within 1 second
  • Measurement: Query execution time
  • Priority: High

NFR-003: Concurrent Users

  • Description: System must support at least 50 concurrent users
  • Measurement: Number of simultaneous active sessions
  • Priority: Medium

NFR-004: Data Storage

  • Description: System must handle up to 10,000 projects and 100,000 tasks
  • Measurement: Database size and record count
  • Priority: Medium

3.2.2 Security Requirements (NFR-006 to NFR-010)

NFR-006: Password Security

  • Description: Passwords must be hashed using secure algorithms
  • Implementation: Werkzeug password hashing
  • Priority: High

NFR-007: Session Security

  • Description: User sessions must be secure and timeout after inactivity
  • Implementation: Flask-Login session management
  • Priority: High

NFR-008: Input Validation

  • Description: All user inputs must be validated and sanitized
  • Implementation: WTForms validation
  • Priority: High

NFR-009: CSRF Protection

  • Description: Forms must be protected against CSRF attacks
  • Implementation: Flask-WTF CSRF tokens
  • Priority: High

NFR-010: Access Control

  • Description: Users can only access authorized resources
  • Implementation: Role-based permission checking
  • Priority: High

3.2.3 Usability Requirements (NFR-011 to NFR-015)

NFR-011: Responsive Design

  • Description: Interface must work on desktop and mobile devices
  • Implementation: Bootstrap responsive framework
  • Priority: High

NFR-012: User Interface

  • Description: Interface must be intuitive and easy to use
  • Implementation: Modern web design principles
  • Priority: High

NFR-013: Error Handling

  • Description: System must provide clear error messages
  • Implementation: User-friendly error pages and messages
  • Priority: Medium

NFR-014: Navigation

  • Description: Navigation must be consistent and logical
  • Implementation: Consistent navigation structure
  • Priority: Medium

3.2.4 Reliability Requirements (NFR-016 to NFR-020)

NFR-016: System Availability

  • Description: System must be available 99% of the time
  • Measurement: Uptime percentage
  • Priority: Medium

NFR-017: Data Integrity

  • Description: Data must remain consistent and accurate
  • Implementation: Database constraints and validation
  • Priority: High

NFR-018: Error Recovery

  • Description: System must recover gracefully from errors
  • Implementation: Exception handling and logging
  • Priority: Medium

NFR-019: Data Backup

  • Description: System must support data backup and recovery
  • Implementation: Database backup procedures
  • Priority: Medium

3.3 System Requirements

3.3.1 Hardware Requirements

  • Minimum RAM: 512 MB
  • Recommended RAM: 2 GB
  • Storage: 1 GB for application and database
  • CPU: 1 GHz processor

3.3.2 Software Requirements

  • Operating System: Linux, Windows, or macOS
  • Python: Version 3.7 or higher
  • Web Browser: Modern browser with JavaScript support
  • Database: SQLite (included with Python)

3.3.3 Network Requirements

  • Internet: Required for external dependencies (Bootstrap, Font Awesome)
  • Port: 5000 (default Flask port)
  • Protocols: HTTP/HTTPS

4. Use Cases

4.1 User Registration and Login

Actor: New User Goal: Create account and access system Preconditions: None Main Flow:

  1. User navigates to registration page
  2. User fills registration form
  3. System validates input
  4. System creates user account
  5. User is redirected to login page
  6. User enters credentials
  7. System authenticates user
  8. User is redirected to dashboard

4.2 Project Creation

Actor: Project Manager or Admin Goal: Create new project Preconditions: User is logged in and has permission Main Flow:

  1. User navigates to project creation page
  2. User fills project form
  3. System validates input
  4. System creates project
  5. System logs activity
  6. User is redirected to project view

4.3 Task Assignment

Actor: Project Manager or Admin Goal: Assign task to team member Preconditions: Project and users exist Main Flow:

  1. User navigates to task creation
  2. User fills task form including assignment
  3. System validates input
  4. System creates task
  5. System logs activity
  6. Task appears in assigned user's task list

4.4 Task Status Update

Actor: Team Member Goal: Update task progress Preconditions: User has assigned tasks Main Flow:

  1. User views assigned tasks
  2. User selects task to update
  3. User changes status
  4. System updates task status
  5. System logs activity
  6. Updated status is reflected in dashboard

5. Acceptance Criteria

5.1 Functional Acceptance Criteria

  • Users can register and login successfully
  • Role-based access control works correctly
  • Projects can be created, edited, and deleted
  • Tasks can be created, assigned, and updated
  • Dashboard displays accurate statistics
  • Activity logging captures all changes
  • All forms validate input correctly

5.2 Non-Functional Acceptance Criteria

  • Pages load within 3 seconds
  • System supports 50+ concurrent users
  • Responsive design works on mobile devices
  • Security measures are properly implemented
  • Error handling provides clear messages
  • Database performance meets requirements

5.3 User Acceptance Criteria

  • Interface is intuitive and easy to use
  • Navigation is consistent and logical
  • All features work as expected
  • System is stable and reliable
  • Documentation is complete and accurate

6. Assumptions and Dependencies

6.1 Assumptions

  • Users have basic computer literacy
  • Modern web browsers are available
  • Internet connection for external resources
  • Python environment is properly configured

6.2 Dependencies

  • Flask framework and extensions
  • SQLite database
  • Bootstrap CSS framework
  • Chart.js for visualizations
  • Modern web browser

7. Risks and Mitigation

7.1 Technical Risks

  • Risk: Database performance with large datasets

  • Mitigation: Implement indexing and query optimization

  • Risk: Security vulnerabilities

  • Mitigation: Regular security audits and updates

7.2 User Risks

  • Risk: User adoption and training
  • Mitigation: Provide comprehensive documentation and training

8. Future Enhancements

8.1 Planned Features

  • Email notifications
  • File attachments
  • Advanced reporting
  • API integration
  • Mobile application

8.2 Scalability Considerations

  • Database migration to PostgreSQL/MySQL
  • Caching implementation
  • Load balancing
  • Microservices architecture

Document Approval

  • Technical Lead: _________________ Date: _______
  • Project Manager: _________________ Date: _______
  • Stakeholder: _________________ Date: _______