RAD Project Portfolio
Assessment 2 — Outcomes 2, 3 and 4
The Educational Administration Management System (EAMS) is designed to serve multiple user groups within a tertiary education institution. The following table identifies the primary users, their roles, responsibilities, and required access levels within the system.
| User Role | Description | Key Responsibilities | Access Level |
|---|---|---|---|
| Administrator | Administrative staff responsible for day-to-day management of student and course records | Add/edit/delete students, manage courses, process enrollments, generate reports | Full access to all modules |
| Teacher/Lecturer | Academic staff who deliver courses and assess student performance | View student lists, record and update grades, view enrollment data | Read access to students/courses; Write access to grades |
| Student | Enrolled learners who need to view their academic information | View own enrollment details, check grades, view course information | Read-only access to own records |
| Department Head | Senior academic staff overseeing departmental operations | View reports, monitor enrollment numbers, oversee grade distributions | Read access to all modules; reporting access |
The educational institution currently relies on manual, paper-based processes and disconnected spreadsheets to manage student records, course information, enrollments, and grades. This approach is error-prone, time-consuming, and results in data inconsistencies. Staff spend excessive time on routine administrative tasks that could be automated, reducing time available for student support and academic improvement.
| Pain Point | Impact | Severity |
|---|---|---|
| Duplicate student records in paper files | Confusion, incorrect reporting, wasted time reconciling | High |
| Manual enrollment tracking via spreadsheets | Enrollment errors, capacity violations, missed deadlines | High |
| Grade recording on paper forms | Transcription errors, delayed results, lost documents | High |
| No centralised search capability | Excessive time to locate student information | Medium |
| Manual report generation | Inconsistent formats, labour-intensive, prone to calculation errors | Medium |
| No audit trail for changes | Inability to track who modified records and when | Medium |
| ID | Requirement | Description | Priority |
|---|---|---|---|
| FR01 | User Authentication | System shall provide login functionality with username and password validation | Must Have |
| FR02 | User Logout | System shall allow users to securely log out and clear session data | Must Have |
| FR03 | Add Student | System shall allow administrators to add new student records with validated fields | Must Have |
| FR04 | Edit Student | System shall allow modification of existing student records | Must Have |
| FR05 | Delete Student | System shall allow deletion of student records with confirmation prompt | Must Have |
| FR06 | Search Students | System shall provide search functionality to find students by name or ID | Must Have |
| FR07 | Add Course | System shall allow creation of new course records with code, title, and credits | Must Have |
| FR08 | Edit Course | System shall allow modification of existing course details | Must Have |
| FR09 | Delete Course | System shall allow deletion of courses with dependency checking | Must Have |
| FR10 | Enroll Student | System shall allow enrollment of a student into a course with duplicate prevention | Should Have |
| FR11 | Unenroll Student | System shall allow removal of a student from a course | Should Have |
| FR12 | Record Grades | System shall allow entry and modification of student grades per enrollment | Should Have |
| FR13 | Generate Reports | System shall generate summary reports of enrollments, grades, and statistics | Should Have |
| FR14 | Export Data | System shall export data to CSV format for external use | Could Have |
| FR15 | Dashboard Overview | System shall display summary statistics on a dashboard page | Could Have |
| Category | ID | Requirement |
|---|---|---|
| Performance | NFR01 | Pages shall load within 2 seconds on standard hardware |
| Performance | NFR02 | Search results shall appear within 1 second of query submission |
| Usability | NFR03 | Interface shall be intuitive and require no more than 3 clicks to reach any function |
| Usability | NFR04 | System shall provide clear error messages for invalid input |
| Usability | NFR05 | System shall be responsive and usable on screens 1024px and above |
| Security | NFR06 | Passwords shall not be stored in plain text visible to the user |
| Security | NFR07 | Unauthenticated users shall not access system functions |
| Reliability | NFR08 | Data shall persist between sessions using browser localStorage |
| Reliability | NFR09 | System shall handle invalid input gracefully without crashing |
| Feature | Description | Priority |
|---|---|---|
| User Login/Logout | Secure authentication with session management | Must Have |
| Student CRUD | Create, read, update, delete student records | Must Have |
| Course CRUD | Create, read, update, delete course records | Must Have |
| Student Search | Search students by name or student ID | Must Have |
| Data Validation | Input validation on all forms with error messages | Must Have |
| Data Persistence | All data persists between sessions via localStorage | Must Have |
| Enrollment Management | Enroll and unenroll students in courses | Should Have |
| Grade Recording | Record and manage student grades per course | Should Have |
| Grade Statistics | Calculate averages, pass rates, grade distributions | Should Have |
| Dashboard | Overview page with system statistics and summaries | Should Have |
| Report Generation | Generate formatted reports viewable on screen | Should Have |
| CSV Export | Export student and grade data to CSV files | Could Have |
| Responsive Layout | Interface adapts to different screen sizes | Could Have |
| Confirmation Dialogs | User confirmation before destructive actions | Could Have |
| Print Styling | Reports are formatted for printing | Could Have |
| Step | User Action | System Response |
|---|---|---|
| 1 | User opens the application in a web browser | System displays the login page with username and password fields |
| 2 | User enters username "admin" and password "admin123" | System enables the Login button |
| 3 | User clicks the "Login" button | System validates credentials against stored user data |
| 4 | — | Credentials valid: System redirects user to Dashboard with welcome message |
| 4b | — | Credentials invalid: System displays "Invalid username or password" error message |
| Step | User Action | System Response |
|---|---|---|
| 1 | User clicks "Students" in the sidebar navigation | System displays the student list view with all current students in a table |
| 2 | User clicks the "Add New Student" button | System displays a blank student registration form |
| 3 | User enters: ID (STU001), First Name, Last Name, Email, Programme, Date | System provides real-time field validation (e.g., email format check) |
| 4 | User clicks "Save Student" | System validates all fields are complete and properly formatted |
| 5 | — | Validation passes: System saves student to localStorage, shows success alert, returns to list |
| 5b | — | Validation fails: System highlights invalid fields with red border and error text |
| Step | User Action | System Response |
|---|---|---|
| 1 | User clicks "Enrollments" in sidebar navigation | System displays enrollment management page with current enrollments table |
| 2 | User selects a student from the student dropdown | System loads available courses in the course dropdown |
| 3 | User selects a course from the course dropdown | System enables the "Enroll" button |
| 4 | User clicks "Enroll" | System checks if student is already enrolled in selected course |
| 5 | — | No duplicate: System creates enrollment record and updates list |
| 5b | — | Duplicate found: System shows "Student already enrolled in this course" error |
| Step | User Action | System Response |
|---|---|---|
| 1 | User clicks "Grades" in sidebar navigation | System displays grade management page |
| 2 | User selects an enrollment from the list | System displays grade entry form for selected student-course combination |
| 3 | User enters numeric grade (e.g., 78) | System auto-displays corresponding letter grade (B+) |
| 4 | User clicks "Save Grade" | System validates grade is between 0-100 |
| 5 | — | Valid: System saves grade, updates grade list, recalculates statistics |
| 5b | — | Invalid: System shows "Grade must be between 0 and 100" error |
Login
Welcome, Administrator
| Student ID | Name | Programme | Actions | |
|---|---|---|---|---|
| STU001 | John Smith | [email protected] | BSc Computing | Edit | Delete |
| STU002 | Jane Doe | [email protected] | BA Business | Edit | Delete |
| STU003 | Mike Johnson | [email protected] | BSc Computing | Edit | Delete |
Student Registration Form
| Code | Title | Credits | Capacity | Enrolled | Actions |
|---|---|---|---|---|---|
| CS101 | Intro to Programming | 15 | 30 | 25 | Edit | Delete |
| CS201 | Data Structures | 15 | 25 | 18 | Edit | Delete |
| BA101 | Business Fundamentals | 15 | 40 | 35 | Edit | Delete |
New Enrollment
Current Enrollments
| Student | Course | Date | Actions |
|---|---|---|---|
| John Smith (STU001) | CS101 - Intro to Programming | 15/03/2026 | Unenroll |
| Jane Doe (STU002) | BA101 - Business Fundamentals | 16/03/2026 | Unenroll |
Record Grade
Grade Records
| Student | Course | Grade | Letter | Actions |
|---|---|---|---|---|
| John Smith | CS101 | 78 | B+ | Edit |
| Jane Doe | BA101 | 92 | A | Edit |
The application uses a fixed sidebar navigation pattern, providing consistent access to all modules from any page. The sidebar remains visible at all times, with the active section highlighted.
| Level 1 | Level 2 (Page) | Description |
|---|---|---|
| Dashboard | — | System overview with statistics |
| Students | Student List | View all students with search |
| Add Student | Student registration form | |
| Edit Student | Modify existing student | |
| Courses | Course List | View all courses |
| Add Course | Create new course | |
| Edit Course | Modify existing course | |
| Enrollments | Enrollment Manager | Manage student-course enrollments |
| Grades | Grade Manager | Record and view grades |
| Reports | Report Dashboard | Generate and export reports |
| Attribute | Data Type | Constraints | Description |
|---|---|---|---|
| studentId | String | Primary Key, Unique, Required | Unique student identifier (e.g., STU001) |
| firstName | String | Required, Max 50 chars | Student's first name |
| lastName | String | Required, Max 50 chars | Student's last name |
| String | Required, Valid email format | Student's email address | |
| programme | String | Required | Academic programme enrolled in |
| enrollmentDate | String (Date) | Required, Valid date | Date student was registered |
| Attribute | Data Type | Constraints | Description |
|---|---|---|---|
| courseCode | String | Primary Key, Unique, Required | Course identifier (e.g., CS101) |
| title | String | Required, Max 100 chars | Full course title |
| credits | Number | Required, 1-30 | Credit points for the course |
| capacity | Number | Required, Min 1 | Maximum number of students |
| department | String | Required | Department offering the course |
| Attribute | Data Type | Constraints | Description |
|---|---|---|---|
| enrollmentId | String | Primary Key, Unique, Auto-generated | Unique enrollment record ID |
| studentId | String | Foreign Key (Student), Required | Reference to student |
| courseCode | String | Foreign Key (Course), Required | Reference to course |
| enrollDate | String (Date) | Required, Auto-populated | Date of enrollment |
| status | String | Required (Active/Completed/Withdrawn) | Current enrollment status |
| Attribute | Data Type | Constraints | Description |
|---|---|---|---|
| gradeId | String | Primary Key, Unique, Auto-generated | Unique grade record ID |
| enrollmentId | String | Foreign Key (Enrollment), Required | Reference to enrollment |
| score | Number | Required, 0-100 | Numeric grade score |
| letterGrade | String | Auto-calculated | Corresponding letter grade |
| dateRecorded | String (Date) | Auto-populated | Date grade was entered |
| Attribute | Data Type | Constraints | Description |
|---|---|---|---|
| username | String | Primary Key, Unique, Required | Login username |
| password | String | Required, Min 6 chars | User password (hashed display) |
| role | String | Required (admin/teacher/student) | User role determining access level |
| fullName | String | Required | Display name for the user |
| Entity | Field | Type | Size | Key | Nullable | Validation |
|---|---|---|---|---|---|---|
| Student | studentId | String | 10 | PK | No | Format: STUxxx |
| Student | firstName | String | 50 | — | No | Letters only |
| Student | lastName | String | 50 | — | No | Letters only |
| Student | String | 100 | — | No | Valid email format | |
| Student | programme | String | 100 | — | No | From predefined list |
| Student | enrollmentDate | Date | 10 | — | No | DD/MM/YYYY format |
| Course | courseCode | String | 10 | PK | No | Format: XXnnn |
| Course | title | String | 100 | — | No | Min 3 characters |
| Course | credits | Integer | 2 | — | No | Range: 1-30 |
| Course | capacity | Integer | 3 | — | No | Range: 1-200 |
| Course | department | String | 50 | — | No | From predefined list |
| Enrollment | enrollmentId | String | 15 | PK | No | Auto-generated UUID |
| Enrollment | studentId | String | 10 | FK | No | Must exist in Student |
| Enrollment | courseCode | String | 10 | FK | No | Must exist in Course |
| Enrollment | enrollDate | Date | 10 | — | No | Auto-populated |
| Enrollment | status | String | 15 | — | No | Active/Completed/Withdrawn |
| Grade | gradeId | String | 15 | PK | No | Auto-generated UUID |
| Grade | enrollmentId | String | 15 | FK | No | Must exist in Enrollment |
| Grade | score | Integer | 3 | — | No | Range: 0-100 |
| Grade | letterGrade | String | 2 | — | No | Auto-calculated from score |
| Grade | dateRecorded | Date | 10 | — | No | Auto-populated |
| User | username | String | 30 | PK | No | Alphanumeric |
| User | password | String | 50 | — | No | Min 6 characters |
| User | role | String | 10 | — | No | admin/teacher/student |
| User | fullName | String | 100 | — | No | Display name |
The Educational Administration Management System (EAMS) is designed for use within a tertiary education institution (university or polytechnic). The system will be deployed in the following context:
| Component | Minimum | Recommended |
|---|---|---|
| Processor | Intel Core i3 or equivalent | Intel Core i5 or better |
| RAM | 4 GB | 8 GB |
| Storage | 256 GB HDD | 256 GB SSD |
| Display | 1366 x 768 resolution | 1920 x 1080 resolution |
| Network | Internet connection for resource access | Broadband connection |
| Input | Keyboard and mouse | Keyboard and mouse |
| Component | Specification |
|---|---|
| Server (if web-hosted) | Any web server capable of serving static HTML/CSS/JS files (e.g., Apache, Nginx, or simple HTTP server) |
| Local deployment | Any PC capable of running a modern web browser; no server required as the application runs entirely client-side |
| Storage | Minimal (< 5 MB for application files); localStorage limited to 5-10 MB per browser |
| Component | Requirement |
|---|---|
| Device | Desktop PC, laptop, or tablet with minimum 1024px screen width |
| Browser | Modern browser with JavaScript enabled (Chrome 90+, Firefox 88+, Edge 90+, Safari 14+) |
| Network | Internet connection for initial page load (if hosted); no connection needed for local deployment |
| Storage | Browser localStorage must be enabled and have at least 5 MB available |
| Tool | Purpose | Version |
|---|---|---|
| Visual Studio Code | Primary code editor / IDE | 1.80+ |
| Google Chrome | Primary testing browser with DevTools | 90+ |
| Mozilla Firefox | Cross-browser testing | 88+ |
| Git | Version control | 2.30+ |
| Live Server (VS Code extension) | Local development server with hot reload | Latest |
| Technology | Purpose | Notes |
|---|---|---|
| HTML5 | Page structure and semantic markup | Standard compliant, accessible |
| CSS3 | Styling, layout, responsiveness | Flexbox/Grid for layout; no frameworks |
| JavaScript (ES6+) | Application logic, DOM manipulation, data management | Vanilla JS; no external libraries |
| localStorage API | Client-side data persistence | JSON serialisation for structured data |
| Browser | Minimum Version | Support Level |
|---|---|---|
| Google Chrome | 90 | Full support (primary target) |
| Mozilla Firefox | 88 | Full support |
| Microsoft Edge | 90 | Full support |
| Safari | 14 | Supported with minor variations |
| Internet Explorer | — | Not supported |
| Level | Description | Scope | Responsible |
|---|---|---|---|
| Unit Testing | Testing individual functions and components in isolation | JavaScript functions, validation logic, data manipulation | Developer |
| Integration Testing | Testing interactions between modules | Module communication, data flow between components | Developer |
| System Testing | Testing the complete application end-to-end | Full user workflows, all features working together | Developer / Tester |
| User Acceptance Testing | Validation that system meets user requirements | Real-world scenarios, usability, requirements compliance | Assessor / Client |
| Iteration | Testing Focus | Test Types |
|---|---|---|
| Iteration 1 | Core functionality (login, student CRUD, course CRUD) | Unit tests on validation; system tests on basic workflows |
| Iteration 2 | Extended features (enrollment, grades, reports) + regression | Full test suite execution; integration tests; UAT |
| Criteria Type | Description |
|---|---|
| Entry Criteria | Code is complete for the iteration; application runs without console errors; all features for the iteration are implemented |
| Exit Criteria | All "Must Have" test cases pass; no critical or high-severity defects remain open; all change requests from previous iteration addressed |
| Phase | Timeline | Activities |
|---|---|---|
| Test Planning | Week 1 | Define test cases, prepare test data, set up test environment |
| Iteration 1 Testing | Week 3 | Execute test cases TC001-TC018 (authentication, students, courses) |
| Assessor Review | Week 3-4 | Collect feedback, document change requests |
| Iteration 2 Testing | Week 6 | Execute full test suite TC001-TC035 including regression |
| Final UAT | Week 6 | User acceptance testing, sign-off |
| Component | Specification |
|---|---|
| Hardware | Windows 10/11 PC, Intel i5, 8GB RAM, 1920x1080 display |
| Browser | Google Chrome (latest stable), Firefox (latest stable) |
| Developer Tools | Chrome DevTools for debugging and localStorage inspection |
| Test Data | Pre-populated localStorage with sample students, courses, enrollments |
| Role | Responsibility |
|---|---|
| Developer/Tester | Write test cases, execute tests, log defects, fix issues |
| Assessor (Client) | Review prototype, provide feedback, approve deliverables |
| ID | Description | Pre-conditions | Test Steps | Expected Result | Iteration 1 Result | Iteration 2 Result |
|---|---|---|---|---|---|---|
| TC001 | Valid login with correct credentials | Application loaded; user not logged in | 1. Enter username "admin" 2. Enter password "admin123" 3. Click Login | User redirected to Dashboard; welcome message displayed | PASS | PASS |
| TC002 | Invalid login with wrong password | Application loaded; user not logged in | 1. Enter username "admin" 2. Enter password "wrong" 3. Click Login | Error message "Invalid username or password" displayed; user remains on login page | PASS | PASS |
| TC003 | Login with empty fields | Application loaded; user not logged in | 1. Leave username empty 2. Leave password empty 3. Click Login | Validation error shown; fields highlighted; login prevented | PASS | PASS |
| TC004 | Logout functionality | User logged in | 1. Click "Logout" in navigation | User redirected to login page; session cleared | PASS | PASS |
| TC005 | Access protected page without login | User not logged in; localStorage cleared | 1. Navigate directly to dashboard URL | User redirected to login page | FAIL | PASS |
| TC006 | Add new student with valid data | User logged in; on Student page | 1. Click "Add New Student" 2. Fill all fields with valid data 3. Click Save | Student saved; success message shown; student appears in list | PASS | PASS |
| TC007 | Edit existing student | User logged in; at least one student exists | 1. Click "Edit" on a student 2. Modify first name 3. Click Save | Student updated; changes reflected in list | PASS | PASS |
| TC008 | Delete student with confirmation | User logged in; at least one student exists | 1. Click "Delete" on a student 2. Confirm deletion in dialog | Student removed from list; success message shown | PASS | PASS |
| TC009 | Search students by name | User logged in; multiple students exist | 1. Enter partial name in search box 2. Observe filtered results | Only matching students displayed in table | PASS | PASS |
| TC010 | Add student with missing required fields | User logged in; on Add Student form | 1. Leave required fields empty 2. Click Save | Validation errors shown; student not saved | FAIL | PASS |
| TC011 | Add student with invalid email format | User logged in; on Add Student form | 1. Enter "notanemail" in email field 2. Fill other fields 3. Click Save | Email validation error displayed; student not saved | PASS | PASS |
| TC012 | Add student with duplicate ID | User logged in; student STU001 exists | 1. Enter "STU001" as student ID 2. Fill other fields 3. Click Save | Error: "Student ID already exists"; student not saved | FAIL | PASS |
| TC013 | Add new course with valid data | User logged in; on Course page | 1. Click "Add New Course" 2. Fill all fields 3. Click Save | Course saved; appears in course list | PASS | PASS |
| TC014 | Edit existing course | User logged in; at least one course exists | 1. Click "Edit" on a course 2. Modify title 3. Click Save | Course updated; changes reflected in list | PASS | PASS |
| TC015 | Delete course with no enrollments | User logged in; course has no enrolled students | 1. Click "Delete" on course 2. Confirm deletion | Course removed from list | PASS | PASS |
| TC016 | Delete course with active enrollments | User logged in; course has enrolled students | 1. Click "Delete" on course with enrollments 2. Observe response | Warning displayed; deletion prevented or enrollments handled | N/A | PASS |
| TC017 | Search courses by code or title | User logged in; multiple courses exist | 1. Enter search term 2. Observe filtered results | Only matching courses displayed | PASS | PASS |
| TC018 | Add course with invalid credits | User logged in; on Add Course form | 1. Enter "0" or "50" in credits field 2. Click Save | Validation error; course not saved | PASS | PASS |
| TC019 | Enroll student in course | User logged in; student and course exist; not already enrolled | 1. Select student 2. Select course 3. Click Enroll | Enrollment created; appears in enrollment list | N/A | PASS |
| TC020 | Unenroll student from course | User logged in; enrollment exists | 1. Click "Unenroll" on an enrollment 2. Confirm action | Enrollment removed from list | N/A | PASS |
| TC021 | Prevent duplicate enrollment | Student already enrolled in course | 1. Select same student and course 2. Click Enroll | Error: "Student already enrolled in this course" | N/A | PASS |
| TC022 | Enroll when course at capacity | Course capacity reached | 1. Select student 2. Select full course 3. Click Enroll | Error: "Course is at full capacity" | N/A | PASS |
| TC023 | View enrollments by student | User logged in; enrollments exist | 1. Filter enrollments by student name | Only selected student's enrollments displayed | N/A | PASS |
| TC024 | View enrollments by course | User logged in; enrollments exist | 1. Filter enrollments by course | Only selected course's enrollments displayed | N/A | PASS |
| TC025 | Enrollment count updates on dashboard | User logged in; enrollments exist | 1. Add enrollment 2. Navigate to Dashboard | Enrollment count incremented correctly | N/A | PASS |
| TC026 | Record grade for enrolled student | User logged in; enrollment exists without grade | 1. Select enrollment 2. Enter grade 75 3. Click Save | Grade saved; letter grade "B" auto-calculated; appears in list | N/A | PASS |
| TC027 | Edit existing grade | User logged in; grade record exists | 1. Click Edit on grade 2. Change score to 85 3. Save | Grade updated; letter grade recalculated to "A-" | N/A | PASS |
| TC028 | Grade validation - out of range | User logged in; on grade entry form | 1. Enter grade "105" 2. Click Save | Error: "Grade must be between 0 and 100" | N/A | PASS |
| TC029 | Grade validation - non-numeric | User logged in; on grade entry form | 1. Enter "abc" in grade field 2. Click Save | Error: "Please enter a valid number" | N/A | PASS |
| TC030 | Grade statistics calculation | Multiple grades recorded for a course | 1. Navigate to grade statistics 2. Select course | Average, highest, lowest, pass rate displayed correctly | N/A | PASS |
| TC031 | Export student data to CSV | User logged in; students exist in system | 1. Navigate to Reports 2. Click "Export Students CSV" | CSV file downloaded with correct student data | N/A | PASS |
| TC032 | Generate enrollment report | User logged in; enrollments exist | 1. Navigate to Reports 2. Click "Enrollment Report" | Report displayed with enrollment statistics | N/A | PASS |
| TC033 | Navigation between all modules | User logged in | 1. Click each menu item in sequence | Each page loads correctly; no broken links | PASS | PASS |
| TC034 | Responsive layout at 1024px width | User logged in; browser resized to 1024px | 1. Resize browser to 1024px width 2. Navigate through pages | All content visible; no horizontal overflow; sidebar usable | FAIL | PASS |
| TC035 | Data persistence after page refresh | User logged in; data entered | 1. Add a student 2. Refresh the page 3. Check student list | All data persists; student still visible after refresh | PASS | PASS |
Rapid Application Development (RAD) is an adaptive software development methodology that prioritises rapid prototyping and iterative delivery over lengthy upfront planning. Originally formalised by James Martin in 1991, RAD emphasises active user involvement, iterative development cycles, and time-boxed delivery to produce functional software quickly.
Unlike traditional Waterfall approaches where each phase must be completed before the next begins, RAD allows overlapping phases and embraces change throughout the development lifecycle. The focus is on delivering a working prototype early and refining it through user feedback.
| Phase | Activities | Deliverables |
|---|---|---|
| 1. Requirements Planning | Identify users, define scope, gather functional and non-functional requirements, create initial designs | Requirements document, user stories, preliminary designs, data models |
| 2. User Design | Create prototypes, develop screen layouts, design navigation, establish data structures | Wireframes, screen mockups, navigation maps, storyboards |
| 3. Construction (Iterative) | Build working prototype, code features, integrate modules, test and refine based on feedback | Working prototype (Iteration 1), refined prototype (Iteration 2), test results |
| 4. Cutover | Final testing, user acceptance, deployment, documentation | Final application, user documentation, test sign-off |
| Component | Specification | Justification |
|---|---|---|
| Development PC | Intel Core i5, 8GB RAM, 256GB SSD | Sufficient for VS Code, Chrome with DevTools, and multiple browser testing |
| Display | 1920 x 1080 minimum | Required for side-by-side code editing and browser testing |
| Internet Connection | Broadband (10+ Mbps) | For accessing documentation, CDN resources during research |
| Backup Storage | USB drive or cloud storage (1GB+) | Version backups and project file storage |
| Software | Version | Purpose | Cost |
|---|---|---|---|
| HTML5 | Living Standard | Application structure, forms, semantic content | Free |
| CSS3 | Level 3+ | Layout (Flexbox, Grid), styling, animations, responsiveness | Free |
| JavaScript ES6+ | ECMAScript 2015+ | Application logic, event handling, localStorage API, DOM manipulation | Free |
| Visual Studio Code | 1.80+ | Code editor with IntelliSense, debugging, extensions | Free |
| Google Chrome | 90+ | Primary browser for development and testing | Free |
| Chrome DevTools | Built-in | Debugging, performance analysis, localStorage management | Free |
| Git | 2.30+ | Version control, change tracking, iteration management | Free |
| Live Server (Extension) | Latest | Hot-reload development server | Free |
| # | Advantage | Explanation |
|---|---|---|
| 1 | Zero installation required | Runs in any modern browser without plugins, frameworks, or server setup |
| 2 | Rapid development cycle | Changes visible immediately on save; no compilation or build step required |
| 3 | Cross-platform compatibility | Works on Windows, macOS, Linux, and mobile devices via the browser |
| 4 | No server dependency | Using localStorage eliminates the need for database servers, reducing complexity |
| 5 | Low learning curve | HTML/CSS/JS are foundational web technologies taught widely in education |
| 6 | Excellent debugging tools | Chrome DevTools provides comprehensive debugging, profiling, and inspection |
| 7 | Easy deployment | Application is a set of static files; can be opened directly or served from any HTTP server |
| 8 | No licensing costs | All tools and technologies are free and open-source |
| # | Disadvantage | Mitigation |
|---|---|---|
| 1 | localStorage limited to ~5-10MB | Acceptable for prototype; production system would use a database |
| 2 | No multi-user support | Out of scope for prototype; would require server-side architecture |
| 3 | Data tied to single browser | Export/import functionality allows data transfer; acceptable for demonstration |
| 4 | No built-in security for sensitive data | Prototype scope; production would require proper authentication and encryption |
| 5 | Client-side only - no real authentication | Simulated login demonstrates the concept; real system would verify server-side |
| Criteria | HTML/CSS/JS (Chosen) | Python + Django | PHP + MySQL |
|---|---|---|---|
| Setup complexity | None (browser only) | High (Python, pip, Django) | High (XAMPP/WAMP, PHP, MySQL) |
| Development speed | Very fast for prototyping | Moderate | Moderate |
| Multi-user support | No (single browser) | Yes (server-based) | Yes (server-based) |
| Database | localStorage (limited) | SQLite/PostgreSQL (robust) | MySQL (robust) |
| Deployment | Open HTML file | Requires server | Requires server |
| Suitability for RAD prototype | Excellent | Good | Fair |
| Learning required | Minimal (standard web) | Significant (Python + framework) | Significant (PHP + SQL) |
| Feature | Requirement Ref | Iteration | Description |
|---|---|---|---|
| Login System | FR01, FR02 | 1 | Username/password authentication with session management via localStorage |
| Student List View | FR06 | 1 | Tabular display of all students with search and filter capability |
| Add Student Form | FR03 | 1 | Form with validation for all required fields including email format and ID uniqueness |
| Edit Student | FR04 | 1 | Pre-populated form for modifying existing student records |
| Delete Student | FR05 | 1 | Deletion with confirmation dialog and dependency check |
| Course List View | FR07 | 1 | Tabular display of all courses with search capability |
| Add/Edit/Delete Course | FR07, FR08, FR09 | 1 | Full CRUD for course records with validation |
| Enrollment Management | FR10, FR11 | 2 | Enroll/unenroll students with duplicate and capacity checks |
| Grade Recording | FR12 | 2 | Grade entry with auto-calculated letter grades and range validation |
| Dashboard | FR15 | 2 | Summary statistics and system overview |
| Reports | FR13 | 2 | Enrollment and grade reports with summary statistics |
| CSV Export | FR14 | 2 | Export student and grade data as downloadable CSV files |
| Responsive UI | NFR05 | 2 | Interface adapts to screen sizes 1024px and above |
| Input Validation | NFR04, NFR09 | 1 & 2 | Comprehensive client-side validation with clear error messages |
Iteration 1 focused on delivering the core functionality of the system within the first three weeks of development. The following features were implemented:
| Week | Activities | Deliverables |
|---|---|---|
| Week 1 | Project setup, requirements analysis, UI framework development (HTML/CSS structure) | Base HTML structure, CSS stylesheet, navigation layout |
| Week 2 | Authentication module, student management CRUD, localStorage integration | Working login, student list/add/edit/delete |
| Week 3 | Course management CRUD, search functionality, initial testing | Working course management, search, Iteration 1 prototype complete |
Assessor Review Date: End of Week 3
Overall Assessment: Core student and course CRUD works well. Good use of localStorage for persistence. Navigation is clear and intuitive.
Areas for Improvement:
| CR ID | Description | Priority | Source | Status |
|---|---|---|---|---|
| CR001 | Implement enrollment management module (enroll/unenroll students in courses with duplicate prevention and capacity checking) | High | Assessor feedback | Implemented in Iteration 2 |
| CR002 | Implement grade management module (record grades, auto-calculate letter grades, grade statistics) | High | Assessor feedback | Implemented in Iteration 2 |
| CR003 | Fix validation issues: duplicate student ID check, empty form submission prevention, page access protection without login | High | Test results (TC005, TC010, TC012) | Implemented in Iteration 2 |
| Category | Tests Executed | Passed | Failed | N/A |
|---|---|---|---|---|
| Authentication (TC001-TC005) | 5 | 4 | 1 | 0 |
| Student Management (TC006-TC012) | 7 | 5 | 2 | 0 |
| Course Management (TC013-TC018) | 6 | 5 | 0 | 1 |
| Enrollment (TC019-TC025) | 7 | 0 | 0 | 7 |
| Grades (TC026-TC030) | 5 | 0 | 0 | 5 |
| Reports/General (TC031-TC035) | 5 | 2 | 1 | 2 |
| TOTAL | 35 | 16 | 4 | 15 |
Pass Rate (Executed, excluding N/A): 16/20 = 80%
| Criteria | Rating (1-5) | Comments |
|---|---|---|
| Functionality completeness | 3/5 | Core CRUD works but enrollment and grades missing |
| User interface design | 3/5 | Clean layout but needs responsive improvements |
| Ease of navigation | 4/5 | Sidebar navigation intuitive; all pages accessible |
| Data validation | 2/5 | Some gaps in validation; empty forms can be submitted |
| Error handling | 3/5 | Basic error messages present but not comprehensive |
| Data persistence | 4/5 | localStorage working well; data survives refresh |
| Overall satisfaction | 3/5 | Good foundation; needs iteration 2 features to be complete |
Iteration 2 addressed all change requests from the assessor review and implemented the remaining "Should Have" and "Could Have" features:
| Week | Activities | Deliverables |
|---|---|---|
| Week 4 | Fix CR003 bugs (validation, access protection, duplicates); implement enrollment module | Fixed bugs; working enrollment management with duplicate/capacity checks |
| Week 5 | Grade management module; dashboard statistics; report generation | Working grade entry, letter grade calculation, dashboard, reports |
| Week 6 | CSV export; responsive improvements; comprehensive testing; documentation | Complete system; all tests passing; final documentation |
| CR ID | Description | Priority | Source | Status |
|---|---|---|---|---|
| CR004 | Add confirmation dialog before unenrolling a student (currently unenrolls immediately) | Low | Internal review | Implemented |
| CR005 | Add course code display alongside title in enrollment dropdown for clarity | Low | Usability testing | Implemented |
| Category | Tests Executed | Passed | Failed |
|---|---|---|---|
| Authentication (TC001-TC005) | 5 | 5 | 0 |
| Student Management (TC006-TC012) | 7 | 7 | 0 |
| Course Management (TC013-TC018) | 6 | 6 | 0 |
| Enrollment (TC019-TC025) | 7 | 7 | 0 |
| Grades (TC026-TC030) | 5 | 5 | 0 |
| Reports/General (TC031-TC035) | 5 | 5 | 0 |
| TOTAL | 35 | 35 | 0 |
Pass Rate: 35/35 = 100%
| Criteria | Rating (1-5) | Comments |
|---|---|---|
| Functionality completeness | 5/5 | All required features implemented and working |
| User interface design | 4/5 | Clean, professional appearance with good visual hierarchy |
| Ease of navigation | 5/5 | All modules accessible within 2 clicks from any page |
| Data validation | 5/5 | Comprehensive validation with clear error messages |
| Error handling | 4/5 | All edge cases handled gracefully |
| Data persistence | 5/5 | All data persists correctly across sessions |
| Overall satisfaction | 5/5 | System meets all requirements; ready for deployment |
| Week | Milestone | Status | Notes |
|---|---|---|---|
| Week 1 | Requirements complete, UI framework built | Complete | All Task 1A/1B documentation finalised |
| Week 2 | Authentication and Student module complete | Complete | Login working, student CRUD functional |
| Week 3 | Iteration 1 complete, assessor review | Complete | Course module done; feedback collected |
| Week 4 | Bug fixes and enrollment module | Complete | CR001, CR003 addressed |
| Week 5 | Grades, dashboard, reports | Complete | CR002 addressed; dashboard and reports done |
| Week 6 | Final testing, documentation, submission | Complete | 100% test pass rate achieved |
| Test ID | Iteration 1 Status | Iteration 2 Status | Change Notes |
|---|---|---|---|
| TC001 | PASS | PASS | No change needed |
| TC002 | PASS | PASS | No change needed |
| TC003 | PASS | PASS | No change needed |
| TC004 | PASS | PASS | No change needed |
| TC005 | FAIL | PASS | Fixed: Added session validation check on page load (CR003) |
| TC006 | PASS | PASS | No change needed |
| TC007 | PASS | PASS | No change needed |
| TC008 | PASS | PASS | No change needed |
| TC009 | PASS | PASS | No change needed |
| TC010 | FAIL | PASS | Fixed: Added required field validation before form submit (CR003) |
| TC011 | PASS | PASS | No change needed |
| TC012 | FAIL | PASS | Fixed: Added duplicate ID check against existing records (CR003) |
| TC013 | PASS | PASS | No change needed |
| TC014 | PASS | PASS | No change needed |
| TC015 | PASS | PASS | No change needed |
| TC016 | N/A | PASS | New: Enrollment module now exists; dependency check implemented |
| TC017 | PASS | PASS | No change needed |
| TC018 | PASS | PASS | No change needed |
| TC019 | N/A | PASS | New: Enrollment module implemented (CR001) |
| TC020 | N/A | PASS | New: Unenroll functionality added (CR001) |
| TC021 | N/A | PASS | New: Duplicate enrollment prevention implemented |
| TC022 | N/A | PASS | New: Course capacity checking implemented |
| TC023 | N/A | PASS | New: Filter by student implemented |
| TC024 | N/A | PASS | New: Filter by course implemented |
| TC025 | N/A | PASS | New: Dashboard statistics implemented |
| TC026 | N/A | PASS | New: Grade recording implemented (CR002) |
| TC027 | N/A | PASS | New: Grade editing implemented |
| TC028 | N/A | PASS | New: Grade range validation implemented |
| TC029 | N/A | PASS | New: Non-numeric grade validation implemented |
| TC030 | N/A | PASS | New: Grade statistics calculation implemented |
| TC031 | N/A | PASS | New: CSV export implemented |
| TC032 | N/A | PASS | New: Report generation implemented |
| TC033 | PASS | PASS | No change needed |
| TC034 | FAIL | PASS | Fixed: Added responsive media queries and flexible layouts |
| TC035 | PASS | PASS | No change needed |
| Bug ID | Description | Severity | Found In | Resolution | Fixed In |
|---|---|---|---|---|---|
| BUG001 | Accessing dashboard URL directly when not logged in does not redirect to login | High | Iteration 1 | Added session check at page initialisation; redirect to login if no session found | Iteration 2 |
| BUG002 | Student form can be submitted with empty required fields | High | Iteration 1 | Added JavaScript validation function that checks all required fields before allowing form submission | Iteration 2 |
| BUG003 | Duplicate student IDs can be created without warning | High | Iteration 1 | Added ID uniqueness check: search existing students array before saving new record | Iteration 2 |
| BUG004 | Sidebar navigation overlaps content area at 1024px width | Medium | Iteration 1 | Added CSS media query to adjust sidebar width and content margin at smaller breakpoints | Iteration 2 |
| BUG005 | Unenroll action fires immediately without confirmation | Low | Iteration 2 | Added confirm() dialog before processing unenrollment (CR004) | Iteration 2 |
| Req ID | Requirement Description | Implementation Status | Test Case(s) | Verified |
|---|---|---|---|---|
| FR01 | User Authentication — login with username/password | Implemented | TC001, TC002, TC003 | Yes |
| FR02 | User Logout — secure logout with session clearing | Implemented | TC004 | Yes |
| FR03 | Add Student — create new student records with validation | Implemented | TC006, TC010, TC011, TC012 | Yes |
| FR04 | Edit Student — modify existing student records | Implemented | TC007 | Yes |
| FR05 | Delete Student — remove records with confirmation | Implemented | TC008 | Yes |
| FR06 | Search Students — find by name or ID | Implemented | TC009 | Yes |
| FR07 | Add Course — create course records | Implemented | TC013, TC018 | Yes |
| FR08 | Edit Course — modify existing courses | Implemented | TC014 | Yes |
| FR09 | Delete Course — remove with dependency check | Implemented | TC015, TC016 | Yes |
| FR10 | Enroll Student — enrollment with duplicate/capacity checks | Implemented | TC019, TC021, TC022 | Yes |
| FR11 | Unenroll Student — remove from course | Implemented | TC020 | Yes |
| FR12 | Record Grades — entry with validation and letter grade | Implemented | TC026, TC027, TC028, TC029 | Yes |
| FR13 | Generate Reports — enrollment and grade reports | Implemented | TC032 | Yes |
| FR14 | Export Data — CSV export functionality | Implemented | TC031 | Yes |
| FR15 | Dashboard Overview — summary statistics display | Implemented | TC025 | Yes |
| NFR01 | Pages load within 2 seconds | Met | Manual observation | Yes |
| NFR02 | Search results within 1 second | Met | Manual observation | Yes |
| NFR03 | 3 clicks or fewer to any function | Met | Navigation testing | Yes |
| NFR04 | Clear error messages for invalid input | Met | TC003, TC010, TC011, TC028, TC029 | Yes |
| NFR05 | Responsive at 1024px and above | Met | TC034 | Yes |
| NFR06 | Passwords not stored in visible plain text | Met | Manual inspection of localStorage | Yes |
| NFR07 | Unauthenticated users cannot access functions | Met | TC005 | Yes |
| NFR08 | Data persists between sessions | Met | TC035 | Yes |
| NFR09 | System handles invalid input without crashing | Met | TC010, TC011, TC018, TC028, TC029 | Yes |
| Feature | Evidence of Implementation | Verification Method |
|---|---|---|
| Login System | Login form validates credentials; invalid attempts show error; successful login redirects to dashboard with welcome message | Manual testing (TC001-TC003) |
| Logout | Clicking logout clears session from localStorage and redirects to login page | Manual testing (TC004); localStorage inspection |
| Session Protection | Attempting to access any page without a valid session redirects to login | Manual testing (TC005); cleared localStorage and navigated |
| Add Student | Form accepts valid data, validates all fields, checks for duplicate IDs, saves to localStorage, and displays in student list | Manual testing (TC006, TC010-TC012) |
| Edit Student | Edit form loads with pre-populated data; changes are saved and reflected in list view | Manual testing (TC007) |
| Delete Student | Confirmation dialog appears before deletion; student removed from list and localStorage after confirmation | Manual testing (TC008) |
| Search Students | Search input filters the student table in real-time by name or ID | Manual testing (TC009) |
| Course CRUD | Full create, read, update, delete operations work with validation for credits range and course code uniqueness | Manual testing (TC013-TC018) |
| Enrollment | Dropdown selectors for student and course; duplicate enrollment prevented; capacity limit enforced; enrollment list updates | Manual testing (TC019-TC025) |
| Grade Management | Grade entry linked to enrollments; range validation (0-100); auto letter grade calculation; edit capability; statistics displayed | Manual testing (TC026-TC030) |
| Reports | Report page shows enrollment counts by course, grade summaries, and pass rate statistics | Manual testing (TC032) |
| CSV Export | Export button generates and downloads a CSV file containing student/grade data with correct formatting | Manual testing (TC031); opened CSV in spreadsheet |
| Dashboard | Shows total students, courses, enrollments counts; updates dynamically as data changes | Manual testing (TC025) |
| Responsive Layout | Sidebar and content area adjust correctly at 1024px width; no horizontal scrollbar; all content accessible | Manual testing (TC034); browser resize |
| Data Persistence | All data (students, courses, enrollments, grades) persists after page refresh and browser restart | Manual testing (TC035); page refresh after data entry |
| Metric | Value |
|---|---|
| Total Test Cases | 35 |
| Tests Passed | 35 |
| Tests Failed | 0 |
| Pass Rate | 100% |
| Defects Found (Total) | 5 |
| Defects Resolved | 5 |
| Open Defects | 0 |
| Category | Total Tests | Passed | Pass Rate |
|---|---|---|---|
| Authentication | 5 | 5 | 100% |
| Student Management | 7 | 7 | 100% |
| Course Management | 6 | 6 | 100% |
| Enrollment Management | 7 | 7 | 100% |
| Grade Management | 5 | 5 | 100% |
| Reports and General | 5 | 5 | 100% |
| Metric | Iteration 1 | Iteration 2 | Improvement |
|---|---|---|---|
| Tests Executed | 20 (15 N/A) | 35 | +15 tests |
| Tests Passed | 16 | 35 | +19 tests |
| Tests Failed | 4 | 0 | All defects resolved |
| Pass Rate | 80% | 100% | +20% |
| Features Complete | 7 of 14 | 14 of 14 | All features delivered |
I hereby declare that the Educational Administration Management System (EAMS) prototype has been fully implemented and tested to meet all agreed requirements as documented in the User Requirements Planning (Task 1A) and System Requirements Planning (Task 1B) phases.
Evidence supporting this declaration:
The RAD methodology's iterative approach enabled early identification of issues in Iteration 1 and comprehensive resolution in Iteration 2, resulting in a robust and complete solution.
Signed: ______________________ Date: ______________________
| Term | Definition |
|---|---|
| RAD | Rapid Application Development — an iterative software development methodology focused on rapid prototyping and user feedback |
| CRUD | Create, Read, Update, Delete — the four basic operations for persistent data management |
| localStorage | A web storage API that allows JavaScript to store key-value pairs in the browser with no expiration date |
| UAT | User Acceptance Testing — testing performed by end users to verify the system meets their requirements |
| MoSCoW | Prioritisation technique: Must Have, Should Have, Could Have, Won't Have |
| SPA | Single Page Application — a web application that loads a single HTML page and dynamically updates content |
| DOM | Document Object Model — a programming interface for HTML documents |
| CSS Grid | A two-dimensional CSS layout system for creating complex responsive layouts |
| Flexbox | A one-dimensional CSS layout method for arranging items in rows or columns |
| JSON | JavaScript Object Notation — a lightweight data-interchange format |
| CSV | Comma-Separated Values — a plain text file format for tabular data |
| ES6+ | ECMAScript 2015 and later versions of the JavaScript language standard |
| FK | Foreign Key — a field that references the primary key of another entity |
| PK | Primary Key — a unique identifier for each record in an entity |
| HTA | Hierarchical Task Analysis — a method of describing tasks in terms of a hierarchy of goals and sub-goals |