mirror of
https://github.com/sabazadam/Se302.git
synced 2025-12-31 20:31:22 +00:00
837 lines
31 KiB
Markdown
837 lines
31 KiB
Markdown
# TEAM ASSIGNMENTS - EXAM SCHEDULING SYSTEM
|
||
|
||
**Project:** Exam Planner Desktop Application
|
||
**Course:** SE302 - Software Engineering
|
||
**Team:** Team 3, Section 1
|
||
**Date:** November 26, 2025
|
||
|
||
---
|
||
|
||
## TEAM ROSTER
|
||
|
||
| Name | Student ID | Primary Role | Secondary Responsibilities |
|
||
|------|-----------|--------------|---------------------------|
|
||
| **Kerem Bozdag** | 20200602012 | Database & Data Layer Lead | Data validation, CSV import/export |
|
||
| **Milena Larissa Ünal** | 20230602107 | Algorithm Specialist | CSP solver, constraint validation, optimization |
|
||
| **Rabia Tülay Gokdag** | 20210602029 | UI/FXML Specialist | JavaFX views, FXML layouts, Scene Builder |
|
||
| **Mehmet Sefa Keskin** | 20230602047 | Controller Layer Lead | MVC controllers, UI-business integration |
|
||
| **Feyza Gereme** | 20230602028 | Testing & QA Lead | JUnit tests, integration testing, CI/CD |
|
||
| **Emin Arslan** | 20230602007 | Documentation & Integration Lead | JavaDoc, user manual, code reviews |
|
||
|
||
---
|
||
|
||
## DETAILED ROLE RESPONSIBILITIES
|
||
|
||
### 1. Kerem Bozdag - Database & Data Layer Lead
|
||
|
||
#### Primary Responsibilities
|
||
|
||
**Database Design & Implementation:**
|
||
- Design and implement SQLite database schema
|
||
- Create ER diagrams for all entities and relationships
|
||
- Write SQL schema creation script (`schema.sql`)
|
||
- Define all tables with proper constraints (foreign keys, uniqueness, indexes)
|
||
- Optimize database performance with appropriate indexes
|
||
|
||
**DAO Layer (Data Access Objects):**
|
||
- Implement all DAO classes:
|
||
- `StudentDAO` - CRUD operations for students
|
||
- `CourseDAO` - CRUD operations for courses
|
||
- `ClassroomDAO` - CRUD operations for classrooms
|
||
- `EnrollmentDAO` - Manage student-course relationships
|
||
- `ScheduleDAO` - Save, load, list, delete schedules
|
||
- `ExamAssignmentDAO` - Manage exam assignments
|
||
- Implement batch operations for performance (bulk inserts)
|
||
- Write transaction management utility (`TransactionManager`)
|
||
- Create database connection pool/singleton (`DatabaseConnection`)
|
||
|
||
**CSV Import/Export:**
|
||
- Implement `CSVParser` utility class
|
||
- Create `ImportService` for all 4 CSV file types:
|
||
1. Student IDs
|
||
2. Course codes
|
||
3. Classroom capacities (format: `ClassroomID;Capacity`)
|
||
4. Enrollment/attendance lists
|
||
- Implement data validation during import:
|
||
- Duplicate detection
|
||
- Format validation
|
||
- Referential integrity checks
|
||
- Create detailed error reporting with line numbers
|
||
- Implement CSV export functionality for schedule views
|
||
|
||
**Data Validation:**
|
||
- Validate all user inputs before database insertion
|
||
- Ensure referential integrity (enrollments reference valid students/courses)
|
||
- Implement constraint checks at database level (CHECK constraints)
|
||
- Create validation utility methods used by service layer
|
||
|
||
#### Testing Responsibilities
|
||
- Write unit tests for all DAO methods (target: >90% coverage)
|
||
- Test batch operations for correctness and performance
|
||
- Test transaction rollback on errors
|
||
- Test duplicate detection
|
||
- Create test CSV files (valid and invalid cases)
|
||
- Integration testing for CSV import workflow
|
||
|
||
#### Collaboration Points
|
||
- **With Milena:** Provide efficient query methods for CSP solver (enrollment lookups, student-course mappings)
|
||
- **With Sefa:** Design clean DAO interfaces for controller layer to use
|
||
- **With Feyza:** Create testable DAO methods, support integration testing
|
||
- **With Emin:** Document database schema, DAO API, CSV formats
|
||
|
||
#### Deliverables
|
||
- Week 1: Database schema script and ER diagram
|
||
- Week 2: All DAO classes with unit tests, CSV import working
|
||
- Week 3: Schedule and exam assignment persistence
|
||
- Week 7: CSV export functionality
|
||
- Week 9: Database optimization and performance tuning
|
||
|
||
---
|
||
|
||
### 2. Milena Larissa Ünal - Algorithm Specialist
|
||
|
||
#### Primary Responsibilities
|
||
|
||
**Domain Model Design:**
|
||
- Create all POJO (Plain Old Java Object) classes:
|
||
- `Student` - Student entity
|
||
- `Course` - Course entity
|
||
- `Classroom` - Classroom entity with capacity
|
||
- `Enrollment` - Student-course relationship
|
||
- `Schedule` - Schedule metadata
|
||
- `ExamAssignment` - Course assignment to {classroom, day, slot}
|
||
- `ScheduleConfiguration` - Exam period configuration (days, slots, strategy)
|
||
- Ensure proper encapsulation, getters/setters, equals/hashCode, toString
|
||
|
||
**Constraint Validation:**
|
||
- Implement `ConstraintValidator` class with methods for each hard constraint:
|
||
1. **No consecutive exams:** `checkNoConsecutiveExams(student, day, slot, assignment)`
|
||
2. **Max 2 exams per day:** `checkMaxTwoExamsPerDay(student, day, assignment)`
|
||
3. **Classroom capacity:** `checkClassroomCapacity(course, classroom)`
|
||
- Create detailed constraint violation messages
|
||
- Implement `ValidationResult` class with error details
|
||
- Handle edge cases (day boundaries for consecutive constraint)
|
||
|
||
**CSP Solver Implementation:**
|
||
- Implement backtracking algorithm with constraint propagation
|
||
- Core algorithm in `CSPSolver` class:
|
||
```java
|
||
public Map<Course, ExamAssignment> solve(
|
||
List<Course> courses,
|
||
List<Classroom> classrooms,
|
||
List<Enrollment> enrollments,
|
||
ScheduleConfiguration config,
|
||
OptimizationStrategy strategy,
|
||
ProgressTracker progressTracker
|
||
) throws NoSolutionException, CancelledException
|
||
```
|
||
- Implement variable ordering heuristic (Minimum Remaining Values - MRV)
|
||
- Implement value ordering heuristic (Least Constraining Value)
|
||
- Implement forward checking for constraint propagation
|
||
- Add progress tracking callback mechanism
|
||
- Implement cancellation support (check flag during backtracking)
|
||
|
||
**Optimization Strategies:**
|
||
- Create `OptimizationStrategy` interface
|
||
- Implement 4 concrete strategies:
|
||
1. `MinimizeDaysStrategy` - Pack exams into fewest days
|
||
2. `BalanceDistributionStrategy` - Spread exams evenly across days
|
||
3. `MinimizeClassroomsStrategy` - Use fewest classrooms
|
||
4. `BalanceClassroomsStrategy` - Balance classroom usage per day
|
||
- Integrate strategies with value ordering heuristic
|
||
- Document when to use each strategy
|
||
|
||
**Conflict Detection:**
|
||
- Implement `ConflictDetector` class
|
||
- Analyze why no solution exists when solver fails:
|
||
- Students with too many courses for available slots
|
||
- Courses with more students than max classroom capacity
|
||
- Overlapping enrollment patterns creating conflicts
|
||
- Generate `ConflictReport` with:
|
||
- List of students causing conflicts
|
||
- List of courses causing conflicts
|
||
- Specific recommendations (extend period, add classrooms, reduce enrollments)
|
||
|
||
**Performance Optimization:**
|
||
- Pre-compute enrollment mappings (student→courses, course→students)
|
||
- Implement domain pre-filtering (eliminate impossible assignments)
|
||
- Add memoization for repeated constraint checks
|
||
- Use efficient data structures (HashSet, HashMap for fast lookups)
|
||
- Optimize for small-medium datasets (20-50 courses, 250-500 students)
|
||
|
||
#### Testing Responsibilities
|
||
- Write unit tests for each constraint validator (>95% coverage target)
|
||
- Create test cases with known solutions (3-5 courses with obvious valid schedule)
|
||
- Create test cases with known conflicts (unsolvable scenarios)
|
||
- Test all 4 optimization strategies produce different results
|
||
- Performance testing:
|
||
- Small dataset (50 courses, 500 students): <10 seconds ✓
|
||
- Sample dataset (20 courses, 250 students): <5 seconds ✓
|
||
- Test edge cases:
|
||
- Single course
|
||
- All students in one course
|
||
- Consecutive slots at day boundaries
|
||
- Maximum enrollments per student
|
||
|
||
#### Collaboration Points
|
||
- **With Kerem:** Use DAO queries efficiently, understand data structure
|
||
- **With Sefa:** Design `ScheduleService` API for controllers to call
|
||
- **With Feyza:** Make algorithm testable, provide test data generators
|
||
- **With Emin:** Document algorithm design, create flowcharts
|
||
|
||
#### Deliverables
|
||
- Week 1: Algorithm design document and pseudocode
|
||
- Week 3: Domain models and constraint validators (fully tested)
|
||
- Week 4: Working CSP solver for simple cases (3-5 courses)
|
||
- Week 5: All optimization strategies, solver handles sample data (<10 sec)
|
||
- Week 5: Conflict detector for unsolvable cases
|
||
- Week 9: Performance optimization and final algorithm polish
|
||
|
||
---
|
||
|
||
### 3. Rabia Tülay Gokdag - UI/FXML Specialist
|
||
|
||
#### Primary Responsibilities
|
||
|
||
**UI Design & Wireframing:**
|
||
- Design wireframes for all application screens
|
||
- Create color scheme and visual design guidelines
|
||
- Design application icon and branding
|
||
- Ensure consistent UI/UX across all views
|
||
- Plan responsive layouts (different screen resolutions)
|
||
|
||
**FXML Layout Creation:**
|
||
Create FXML files for all views using Scene Builder:
|
||
1. `MainWindow.fxml` - Main application window with navigation
|
||
2. `ImportView.fxml` - CSV file import screen
|
||
3. `ConfigurationView.fxml` - Exam period configuration
|
||
4. `ScheduleView.fxml` - Schedule generation with progress
|
||
5. `ClassroomView.fxml` - Classroom schedule view (table)
|
||
6. `StudentView.fxml` - Student schedule view (table with search)
|
||
7. `CourseView.fxml` - Course schedule view (sortable table)
|
||
8. `DayView.fxml` - Day-by-day grid view
|
||
9. `ExportView.fxml` - Export options screen
|
||
10. `HistoryView.fxml` - Schedule history list
|
||
11. Dialogs: Edit dialog, Conflict report dialog, Error dialogs
|
||
|
||
**UI Components:**
|
||
- Design table layouts (columns, headers, alternating rows)
|
||
- Create form inputs (text fields, spinners, combo boxes)
|
||
- Design buttons with consistent styling
|
||
- Add icons and visual feedback (success checkmarks, error icons)
|
||
- Implement progress indicators (progress bar, spinner)
|
||
- Design filter controls (dropdowns, search boxes)
|
||
|
||
**Styling (CSS):**
|
||
- Create `styles.css` with consistent theme
|
||
- Define color palette:
|
||
- Primary: Blue (#2196F3)
|
||
- Success: Green (#4CAF50)
|
||
- Error: Red (#F44336)
|
||
- Neutral: Gray (#9E9E9E)
|
||
- Style all UI components (buttons, tables, inputs, labels)
|
||
- Add hover effects and focus states
|
||
- Ensure accessibility (sufficient color contrast, clear focus indicators)
|
||
|
||
**Visual Polish:**
|
||
- Add icons for all buttons and actions
|
||
- Design loading spinners and progress animations
|
||
- Create success/error message displays
|
||
- Add tooltips for user guidance
|
||
- Ensure proper alignment and spacing
|
||
- Test on different screen sizes
|
||
|
||
#### Testing Responsibilities
|
||
- Test UI layouts on different screen resolutions
|
||
- Verify all FXML files load correctly
|
||
- Test keyboard navigation (tab order)
|
||
- Verify CSS styling is consistent
|
||
- Test accessibility features
|
||
- Ensure no UI elements overlap or clip
|
||
|
||
#### Collaboration Points
|
||
- **With Sefa:** Provide FXML files with proper fx:id for controller binding
|
||
- **With Emin:** Provide screenshots for documentation, create visual guide
|
||
- **With Feyza:** Support TestFX UI testing
|
||
- **With all:** Get feedback on UI designs, iterate based on usability
|
||
|
||
#### Deliverables
|
||
- Week 1: Wireframes and visual design guidelines
|
||
- Week 2: Import View FXML
|
||
- Week 3: Configuration View FXML
|
||
- Week 4: Schedule generation view with progress UI
|
||
- Week 6: All 4 schedule views (Classroom, Student, Course, Day)
|
||
- Week 7: Export View and edit dialog
|
||
- Week 8: History View and conflict report display
|
||
- Week 9: Final UI polish and consistency check
|
||
|
||
---
|
||
|
||
### 4. Mehmet Sefa Keskin - Controller Layer Lead
|
||
|
||
#### Primary Responsibilities
|
||
|
||
**Application Setup:**
|
||
- Create `Main.java` - JavaFX application entry point
|
||
- Set up application lifecycle (start, stop)
|
||
- Load main window FXML
|
||
- Initialize application resources
|
||
|
||
**Main Controller:**
|
||
- Implement `MainController` for main window
|
||
- Handle navigation between views
|
||
- Manage view switching logic
|
||
- Implement menu bar actions (File, Edit, View, Help)
|
||
|
||
**Feature Controllers:**
|
||
Implement controllers for all views:
|
||
1. `ImportController` - CSV file import workflow
|
||
- File browse dialogs (4 file choosers for each CSV type)
|
||
- Call `ImportService` to process files
|
||
- Display import results (success/error messages with line numbers)
|
||
- Handle import errors gracefully
|
||
2. `ConfigurationController` - Exam period setup
|
||
- Input validation (positive integers only)
|
||
- Calculate total slots (days × slots per day)
|
||
- Validate sufficient slots for courses
|
||
- Save configuration to database
|
||
3. `ScheduleController` - Schedule generation
|
||
- Create JavaFX Task for background solver execution
|
||
- Update progress bar in real-time
|
||
- Handle cancellation (interrupt solver)
|
||
- Display success or failure results
|
||
- Show conflict report on failure
|
||
4. `ClassroomViewController`, `StudentViewController`, `CourseViewController`, `DayViewController` - Schedule display
|
||
- Populate tables/grids with schedule data
|
||
- Implement filtering (dropdown filters, search boxes)
|
||
- Implement sorting (sortable table columns)
|
||
- Handle view switching
|
||
5. `ExportController` - Export workflow
|
||
- Format selection (CSV or Excel radio buttons)
|
||
- View selection (checkboxes for which views to export)
|
||
- File save dialog
|
||
- Call export service
|
||
- Display export success/error messages
|
||
6. `HistoryController` - Schedule history
|
||
- Load schedule list from database
|
||
- Display schedule metadata (date, strategy, counts)
|
||
- Load selected schedule
|
||
- Delete schedules with confirmation dialog
|
||
|
||
**Business Logic Integration:**
|
||
- Connect controllers to service layer (ImportService, ScheduleService, ExportService)
|
||
- Handle service exceptions and display user-friendly errors
|
||
- Manage application state (current schedule, configuration)
|
||
- Implement proper resource cleanup (close database connections)
|
||
|
||
**Error Handling:**
|
||
- Catch all exceptions from service/DAO layers
|
||
- Convert technical errors to user-friendly messages
|
||
- Display errors in dialog boxes or status labels
|
||
- Log errors for debugging
|
||
|
||
**Threading:**
|
||
- Use JavaFX Task for long-running operations (solver, import, export)
|
||
- Keep UI responsive during background tasks
|
||
- Update UI from background threads safely (Platform.runLater)
|
||
- Handle task cancellation properly
|
||
|
||
#### Testing Responsibilities
|
||
- Write unit tests for controller logic (mock service layer)
|
||
- Test error handling for all exception cases
|
||
- Test threading (background tasks update UI correctly)
|
||
- Ensure no memory leaks (resources cleaned up)
|
||
- Test with TestFX for UI integration
|
||
|
||
#### Collaboration Points
|
||
- **With Rabia:** Get FXML files with fx:id set, provide feedback on UI design
|
||
- **With Kerem/Milena:** Use service layer APIs, handle exceptions
|
||
- **With Feyza:** Make controllers testable, support TestFX testing
|
||
- **With Emin:** Document controller architecture and event flows
|
||
|
||
#### Deliverables
|
||
- Week 1: Main controller with navigation
|
||
- Week 2: Import controller (integrate with ImportService)
|
||
- Week 3: Configuration controller
|
||
- Week 4: Schedule controller with background task and progress
|
||
- Week 6: All 4 view controllers (Classroom, Student, Course, Day)
|
||
- Week 7: Export controller and edit dialog controller
|
||
- Week 8: History controller
|
||
- Week 9: Final controller polish and error handling improvements
|
||
|
||
---
|
||
|
||
### 5. Feyza Gereme - Testing & QA Lead
|
||
|
||
#### Primary Responsibilities
|
||
|
||
**Test Infrastructure Setup:**
|
||
- Configure JUnit 5 in Maven/Gradle
|
||
- Set up test directory structure (`src/test/java`)
|
||
- Create test utility classes (`TestDataBuilder`, `TestDatabase`)
|
||
- Configure test coverage reporting (JaCoCo)
|
||
- Set up CI/CD pipeline (GitHub Actions)
|
||
|
||
**Unit Testing:**
|
||
Write comprehensive unit tests for all layers:
|
||
- **DAO Layer Tests:**
|
||
- Test CRUD operations (insert, update, delete, select)
|
||
- Test batch operations
|
||
- Test transaction rollback on error
|
||
- Test uniqueness constraints
|
||
- Test foreign key constraints
|
||
- Target: >90% coverage for DAO layer
|
||
- **Algorithm Layer Tests:**
|
||
- Test each constraint validator individually
|
||
- Test CSP solver with known solutions (3-5 courses)
|
||
- Test unsolvable cases (known conflicts)
|
||
- Test all 4 optimization strategies
|
||
- Test edge cases (single course, max enrollments, day boundaries)
|
||
- Target: >95% coverage for algorithm layer
|
||
- **Service Layer Tests:**
|
||
- Test business logic validation
|
||
- Test error propagation (DAO → Service → Controller)
|
||
- Mock DAO and algorithm layers using Mockito
|
||
- Test transaction handling
|
||
- Target: >80% coverage for service layer
|
||
- **Controller Layer Tests:**
|
||
- Mock service layer
|
||
- Test error handling in controllers
|
||
- Test state management
|
||
- Target: >70% coverage for controller layer
|
||
|
||
**Integration Testing:**
|
||
- **Database Integration:**
|
||
- Test end-to-end import (CSV → Database → Verify)
|
||
- Test schedule save → load round-trip
|
||
- Test manual edit → validation → save
|
||
- **UI Integration (TestFX):**
|
||
- Test navigation workflow
|
||
- Test import workflow (select files → import → verify results)
|
||
- Test generation workflow (configure → generate → view schedule)
|
||
- Test export workflow (select format → export → verify file)
|
||
- **End-to-End Testing:**
|
||
- Complete user workflows from start to finish
|
||
- Test with sample data (20 courses, 250 students, 10 classrooms)
|
||
|
||
**Performance Testing:**
|
||
- Create benchmark tests for solver performance:
|
||
- Small dataset (50 courses, 500 students): Must complete <10 seconds
|
||
- Sample dataset (20 courses, 250 students): Must complete <5 seconds
|
||
- Test database query performance (all queries <100ms)
|
||
- Profile application memory usage
|
||
- Identify and report performance bottlenecks
|
||
|
||
**Test Data Management:**
|
||
- Create test CSV files:
|
||
- `test_students_10.csv` - 10 students
|
||
- `test_students_100.csv` - 100 students
|
||
- `test_students_250.csv` - 250 students (matches sample)
|
||
- `test_courses_5.csv` - 5 courses
|
||
- `test_courses_20.csv` - 20 courses (matches sample)
|
||
- `test_classrooms_small.csv` - 3 classrooms, capacity 20
|
||
- `test_classrooms_medium.csv` - 10 classrooms, capacity 40
|
||
- `test_enrollments_simple.csv` - Simple enrollment pattern
|
||
- `test_enrollments_complex.csv` - Complex pattern for stress testing
|
||
- Create test data builders for easy test object creation
|
||
- Maintain test fixtures (consistent test data for repeatable tests)
|
||
|
||
**CI/CD Pipeline:**
|
||
- Set up GitHub Actions workflow:
|
||
- Run all tests on every commit
|
||
- Generate coverage report
|
||
- Upload coverage to Codecov (or similar)
|
||
- Fail build if coverage drops below 70%
|
||
- Fail build if any test fails
|
||
- Configure test execution in Maven/Gradle
|
||
- Set up test reporting (JUnit XML reports, HTML reports)
|
||
|
||
**Bug Tracking & Quality Assurance:**
|
||
- Create bug report template
|
||
- Track all bugs found (use GitHub Issues or similar)
|
||
- Prioritize bugs (critical, major, minor)
|
||
- Verify bug fixes (regression tests)
|
||
- Monitor code quality metrics (coverage, complexity)
|
||
|
||
#### Testing Responsibilities
|
||
- All testing tasks are primary responsibility!
|
||
- Coordinate with other team members to ensure testable code
|
||
- Review all PRs for test coverage before approval
|
||
- Generate weekly test coverage reports
|
||
- Identify untested code paths and create tests
|
||
|
||
#### Collaboration Points
|
||
- **With Kerem:** Get testable DAO interfaces, create database test utilities
|
||
- **With Milena:** Get test data generators for algorithm, create solvable/unsolvable test cases
|
||
- **With Rabia/Sefa:** Write TestFX UI tests, verify UI behavior
|
||
- **With Emin:** Document testing strategy, contribute to quality assurance documentation
|
||
|
||
#### Deliverables
|
||
- Week 1: CI/CD pipeline setup, test infrastructure
|
||
- Week 2: DAO layer tests (>90% coverage)
|
||
- Week 3: Constraint validation tests
|
||
- Week 4: Solver unit tests, performance benchmarks
|
||
- Week 5: All optimization strategy tests
|
||
- Week 6: View controller TestFX tests
|
||
- Week 7: Export functionality tests
|
||
- Week 8: Integration tests, end-to-end tests
|
||
- Week 9: Full test suite complete, coverage report >70%
|
||
- Week 10: Final QA report
|
||
|
||
---
|
||
|
||
### 6. Emin Arslan - Documentation & Integration Lead
|
||
|
||
#### Primary Responsibilities
|
||
|
||
**Memory Bank Maintenance:**
|
||
- Maintain and update `MEMORY_BANK.md` as project evolves
|
||
- Document all design decisions and rationale
|
||
- Track assumptions and open questions
|
||
- Update API contracts when interfaces change
|
||
- Add discovered edge cases and solutions
|
||
|
||
**Code Documentation:**
|
||
- Ensure all public methods have JavaDoc comments
|
||
- Review JavaDoc for clarity and completeness
|
||
- Set up JavaDoc generation in Maven/Gradle
|
||
- Generate JavaDoc HTML documentation
|
||
- Create package-level documentation (`package-info.java`)
|
||
- Document complex algorithms with explanatory comments
|
||
|
||
**Technical Documentation:**
|
||
- Create/maintain technical documents:
|
||
- `DATABASE_SCHEMA.md` - Database documentation with ER diagrams
|
||
- `ALGORITHM_DESIGN.md` - Algorithm pseudocode and flowcharts
|
||
- `GIT_WORKFLOW.md` - Git branching strategy and PR process
|
||
- `API_DOCUMENTATION.md` - Service layer API reference
|
||
- `UI_COMPONENT_GUIDE.md` - FXML components and styling guide
|
||
- `TESTING_GUIDE.md` - How to run tests, write tests, interpret coverage
|
||
- Create architecture diagrams (use draw.io, PlantUML, or similar):
|
||
- System architecture (MVC layers)
|
||
- Class diagrams (domain models, DAO, services)
|
||
- Sequence diagrams (import workflow, generation workflow)
|
||
- ER diagram (database schema)
|
||
|
||
**User Documentation:**
|
||
- Write comprehensive **User Manual** (15-25 pages) with:
|
||
- Introduction and overview
|
||
- Installation guide (step-by-step with screenshots)
|
||
- Getting started tutorial
|
||
- Feature reference (all features explained with screenshots)
|
||
- Troubleshooting guide (common issues and solutions)
|
||
- FAQ (frequently asked questions)
|
||
- Appendix (sample CSV formats, configuration options)
|
||
- Create **Quick Start Guide** (1-2 pages)
|
||
- Write **Installation Guide** (standalone document)
|
||
- Write **Troubleshooting Guide** with common errors and fixes
|
||
|
||
**Code Review & Integration:**
|
||
- Review all Pull Requests for:
|
||
- Code quality and style
|
||
- Documentation completeness (JavaDoc, comments)
|
||
- Adherence to architecture (MVC separation)
|
||
- Naming conventions
|
||
- No obvious bugs
|
||
- Coordinate integration of features from different team members
|
||
- Resolve merge conflicts when needed
|
||
- Ensure clean Git history (meaningful commit messages)
|
||
- Conduct weekly integration review meetings
|
||
|
||
**Presentation & Delivery:**
|
||
- Create presentation slides for final demo (15-20 slides)
|
||
- Prepare demo script for presentation
|
||
- Coordinate demo video recording (optional but recommended)
|
||
- Compile final deliverable package:
|
||
- Source code (clean, organized)
|
||
- User manual (PDF)
|
||
- Developer documentation (JavaDoc + technical docs)
|
||
- Executable JAR
|
||
- Sample database
|
||
- Sample CSV files
|
||
- Installation guide
|
||
- README
|
||
|
||
**Git Workflow Management:**
|
||
- Enforce Git branching strategy (main, develop, feature branches)
|
||
- Review commit messages for clarity
|
||
- Create and maintain Pull Request template
|
||
- Manage release tagging (v1.0.0, etc.)
|
||
- Coordinate merges to `develop` and `main`
|
||
|
||
**Quality Assurance Support:**
|
||
- Work with Feyza on quality standards
|
||
- Review test coverage reports
|
||
- Identify documentation gaps
|
||
- Ensure consistency across all documentation
|
||
- Create checklists (final delivery checklist, PR review checklist)
|
||
|
||
#### Testing Responsibilities
|
||
- Review test documentation
|
||
- Ensure tests have clear descriptions
|
||
- Document test execution procedures
|
||
- Create user acceptance test scenarios
|
||
|
||
#### Collaboration Points
|
||
- **With ALL:** Review all code, provide feedback, coordinate integration
|
||
- **With Kerem:** Document database schema and DAO APIs
|
||
- **With Milena:** Document algorithm design and optimization strategies
|
||
- **With Rabia:** Take screenshots for user manual, document UI components
|
||
- **With Sefa:** Document controller architecture and event flows
|
||
- **With Feyza:** Document testing strategy and procedures
|
||
|
||
#### Deliverables
|
||
- Week 1: MEMORY_BANK.md, ROADMAP.md, TEAM_ASSIGNMENTS.md, GIT_WORKFLOW.md
|
||
- Week 2: DATABASE_SCHEMA.md with ER diagram
|
||
- Week 3: Domain model documentation
|
||
- Week 4: ALGORITHM_DESIGN.md with pseudocode and flowcharts
|
||
- Week 5: API documentation for service layer
|
||
- Week 6: UI component guide with screenshots
|
||
- Week 8: Architecture diagrams (system, class, sequence)
|
||
- Week 9: Testing guide and quality assurance documentation
|
||
- Week 10: User Manual (complete), Installation Guide, Final deliverable package, Presentation slides
|
||
|
||
---
|
||
|
||
## TEAM COLLABORATION GUIDELINES
|
||
|
||
### Weekly Meetings
|
||
|
||
**Monday Sprint Planning (30 min):**
|
||
- Each person reports: What did you complete last week?
|
||
- Discuss blockers and issues
|
||
- Assign tasks for current week from roadmap
|
||
- Set weekly goals
|
||
|
||
**Wednesday Mid-Week Sync (15-30 min):**
|
||
- Quick round-robin status update
|
||
- Identify anyone who is blocked
|
||
- Schedule pair programming sessions if needed
|
||
- Adjust week's plan if necessary
|
||
|
||
**Friday Demo & Retrospective (30-45 min):**
|
||
- Each person demos their work for the week
|
||
- Celebrate completed features
|
||
- Retrospective: What went well? What to improve?
|
||
- Brief planning for next week
|
||
|
||
### Pair Programming Sessions
|
||
|
||
**Recommended pairings for integration:**
|
||
- **Kerem + Sefa:** Integrate DAO with controllers
|
||
- **Milena + Sefa:** Integrate CSP solver with UI
|
||
- **Rabia + Sefa:** Connect FXML views with controllers
|
||
- **Kerem + Milena:** Optimize database queries for solver
|
||
- **Feyza + [anyone]:** Write tests together (test-driven development)
|
||
|
||
**Schedule:** As needed, typically 1-2 hours, Wednesday or Thursday
|
||
|
||
### Code Review Process
|
||
|
||
**Every Pull Request Must:**
|
||
- Have at least 1 approval (from someone other than author)
|
||
- Pass all CI/CD checks (tests, coverage)
|
||
- Have no merge conflicts
|
||
- Follow PR template (description, changes made, testing done)
|
||
|
||
**Review Turnaround Time:**
|
||
- PRs should be reviewed within 24 hours
|
||
- Small PRs preferred (easier to review)
|
||
- Urgent PRs can be flagged in WhatsApp/Discord
|
||
|
||
**Who Reviews:**
|
||
- Emin reviews all PRs for documentation and code quality
|
||
- Feature-specific specialist reviews related PRs (e.g., Kerem reviews DB changes)
|
||
- Feyza reviews for test coverage
|
||
|
||
### Communication Channels
|
||
|
||
**Synchronous (Real-time):**
|
||
- Weekly meetings (Monday, Wednesday, Friday)
|
||
- Pair programming sessions
|
||
- Emergency sync if someone is blocked
|
||
|
||
**Asynchronous:**
|
||
- WhatsApp/Discord - Daily updates, quick questions, coordination
|
||
- GitHub - Code reviews, PR discussions, issue tracking
|
||
- Email - Formal communication with professor
|
||
|
||
### Conflict Resolution
|
||
|
||
**If technical disagreement arises:**
|
||
1. Discuss in team meeting (not in PR comments)
|
||
2. Each person presents their approach and rationale
|
||
3. Team votes (majority wins)
|
||
4. Emin documents decision in MEMORY_BANK.md with rationale
|
||
|
||
**If someone is blocked:**
|
||
1. Post in group chat immediately (don't wait)
|
||
2. If not resolved in 2 hours, schedule sync call
|
||
3. Pair programming session to unblock
|
||
|
||
**If someone is behind schedule:**
|
||
1. Notify team in Monday meeting
|
||
2. Other team members offer to help
|
||
3. Re-distribute tasks if necessary
|
||
4. Update roadmap if needed
|
||
|
||
---
|
||
|
||
## ACCOUNTABILITY & EXPECTATIONS
|
||
|
||
### Individual Commitments
|
||
|
||
**Each team member commits to:**
|
||
- Attend all weekly meetings (or send written update if absent)
|
||
- Complete assigned tasks by Friday demo
|
||
- Review assigned PRs within 24 hours
|
||
- Write tests for their own code
|
||
- Document their own code (JavaDoc, comments)
|
||
- Communicate blockers early
|
||
- Help teammates when they're stuck
|
||
|
||
### Quality Standards
|
||
|
||
**All code must:**
|
||
- Follow Java naming conventions
|
||
- Have JavaDoc for public methods
|
||
- Have meaningful variable/method names
|
||
- Have no compiler warnings
|
||
- Pass all tests
|
||
- Have test coverage (per layer targets)
|
||
|
||
### Definition of "Done"
|
||
|
||
**A task is only "done" when:**
|
||
- Code is written and works correctly
|
||
- Tests are written and passing
|
||
- JavaDoc is complete
|
||
- Code is reviewed and approved
|
||
- Merged to `develop` branch
|
||
- Documentation is updated (if needed)
|
||
|
||
---
|
||
|
||
## ESCALATION & SUPPORT
|
||
|
||
### When to Ask for Help
|
||
|
||
**Ask your teammate for help if:**
|
||
- Stuck for >2 hours on a technical problem
|
||
- Unsure about design decision
|
||
- Need code review or feedback
|
||
- Want to pair program
|
||
|
||
**Ask Emin (Integration Lead) if:**
|
||
- Merge conflicts arise
|
||
- Architecture question (which layer should this code go in?)
|
||
- Documentation question
|
||
- Git workflow question
|
||
|
||
**Ask the whole team if:**
|
||
- Major technical decision needed
|
||
- Significant roadmap change proposed
|
||
- Need to reprioritize tasks
|
||
|
||
**Ask the professor if:**
|
||
- Requirements are unclear
|
||
- Need clarification on constraints
|
||
- Considering major scope change
|
||
- Need project extension
|
||
|
||
---
|
||
|
||
## SUCCESS METRICS
|
||
|
||
### Individual Performance
|
||
|
||
**Each team member will be evaluated on:**
|
||
- Completion of assigned tasks (on time)
|
||
- Code quality (clean, documented, tested)
|
||
- Collaboration (helping teammates, pair programming)
|
||
- Communication (attending meetings, timely updates)
|
||
- Testing (writing tests, achieving coverage targets)
|
||
- Documentation (JavaDoc, comments, technical docs)
|
||
|
||
### Team Performance
|
||
|
||
**Team success measured by:**
|
||
- Meeting weekly milestones from roadmap
|
||
- Passing all tests (>70% coverage overall)
|
||
- All functional requirements implemented (FR1-FR12)
|
||
- All non-functional requirements met (NFR1-NFR6)
|
||
- Complete and polished deliverable package
|
||
- Successful final presentation
|
||
|
||
---
|
||
|
||
## APPENDICES
|
||
|
||
### Appendix A: Tools & Technologies
|
||
|
||
**Required Tools (All Team Members):**
|
||
- Java JDK 17+
|
||
- IntelliJ IDEA (recommended) or Eclipse
|
||
- Git (for version control)
|
||
- Maven or Gradle (build tool)
|
||
- SQLite Browser (for database inspection)
|
||
|
||
**Role-Specific Tools:**
|
||
- **Kerem:** DB Browser for SQLite
|
||
- **Milena:** Profiling tools (JProfiler or VisualVM)
|
||
- **Rabia:** Scene Builder (for FXML editing)
|
||
- **Sefa:** JavaFX Scene Builder
|
||
- **Feyza:** JaCoCo (coverage), TestFX (UI testing)
|
||
- **Emin:** Draw.io (diagrams), Markdown editor
|
||
|
||
### Appendix B: Learning Resources
|
||
|
||
**JavaFX:**
|
||
- Official docs: https://openjfx.io/javadoc/17/
|
||
- Tutorial: https://openjfx.io/openjfx-docs/
|
||
- Scene Builder: https://gluonhq.com/products/scene-builder/
|
||
|
||
**SQLite:**
|
||
- Tutorial: https://www.sqlitetutorial.net/
|
||
- JDBC: https://www.sqlitetutorial.net/sqlite-java/
|
||
|
||
**CSP Algorithms:**
|
||
- Russell & Norvig "Artificial Intelligence: A Modern Approach" - Chapter 6
|
||
- Online: https://artint.info/2e/html/ArtInt2e.Ch4.html
|
||
|
||
**Testing:**
|
||
- JUnit 5: https://junit.org/junit5/docs/current/user-guide/
|
||
- Mockito: https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html
|
||
- TestFX: https://github.com/TestFX/TestFX
|
||
|
||
### Appendix C: Contact Information Template
|
||
|
||
| Team Member | Email | Phone | Preferred Contact Method |
|
||
|------------|-------|-------|-------------------------|
|
||
| Kerem Bozdag | [fill in] | [fill in] | WhatsApp / Discord |
|
||
| Milena Larissa Ünal | [fill in] | [fill in] | WhatsApp / Discord |
|
||
| Rabia Tülay Gokdag | [fill in] | [fill in] | WhatsApp / Discord |
|
||
| Mehmet Sefa Keskin | [fill in] | [fill in] | WhatsApp / Discord |
|
||
| Feyza Gereme | [fill in] | [fill in] | WhatsApp / Discord |
|
||
| Emin Arslan | [fill in] | [fill in] | WhatsApp / Discord |
|
||
|
||
**Group Chat:** [WhatsApp/Discord link]
|
||
**Repository:** [GitHub URL]
|
||
**Professor:** [Name, Email, Office Hours]
|
||
|
||
---
|
||
|
||
## CHANGELOG
|
||
|
||
| Version | Date | Author | Changes |
|
||
|---------|------|--------|---------|
|
||
| 1.0 | 2025-11-26 | Claude Code | Initial team assignments document |
|
||
|
||
---
|
||
|
||
**END OF TEAM ASSIGNMENTS**
|
||
|
||
---
|
||
|
||
**Note:** This document defines roles but emphasizes collaboration. While each person has a specialty, everyone helps each other to ensure project success. Cross-functional collaboration is encouraged and expected.
|