College of Computer and Information Sciences (CCIS)

Sillah (صلة): Family Health Management System

Course: SE201 – Introduction to Software Engineering
Instructor: Ms. Ishrat Khan
Section: 1320
Project Contributors:
SHOUG FAWAZ ADULLAH ALOMRAN 223410392
ALJOHARA WALEED A ALBAWARDI 223410346
ALJAWHARA MOHMMAD NASSER ALRUZUQ 223410216
ALJAWHARAH TURKI ABDULLAH ALSALEH 223410217

Table of Contents

Phase I: Project Proposal

1.1 Introduction

The Sillah (صلة) project is a preventive health management system designed to help Saudi families identify hereditary cardiac risks through an easy-to-use digital platform.

It enables users to record their family health history, receive automatic risk alerts, and book preventive clinic appointments.

This report documents all project phases — from requirements to design, prototype, and testing — demonstrating a full software development process aligned with SE201 objectives.

1.2 Project Overview

1.2.1 Goals

  1. Promote Preventive Health Awareness: Promote public awareness regarding hereditary diseases and encourage early detection.
  2. Simplify Family Health Tracking: Provide a simple-to-use interface for families to follow and chart medical histories.
  3. Enable Smart Risk Detection: Use rule-based reasoning to automatically detect hereditary cardiac risk patterns.
  4. Support Action Through Integration: Link users to accredited clinics for consultations and checkups.
  5. Empower Public Health Systems: Demonstrate a scalable model that can be embedded in national healthcare systems.

1.2.2 Objective

To provide a user-friendly system that allows citizens to record family health data, analyze hereditary patterns, and take proactive steps toward cardiac screening.

1.2.3 Main Features

  • Add and manage family members with health events
  • Detect hereditary risks automatically
  • Send personalized alerts and recommendations
  • Access an Awareness Hub with educational content and checklists
  • Book appointments with local clinics

1.2.4 Users

  1. General citizens (families)
  2. Healthcare Providers (view bookings)
  3. Administrators (manage awareness content)

Phase II: Requirements Analysis & Documentation

2.1 Functional Requirements

ID Requirement Description Priority
FR-01 Add Family Member User can record family members with name, relation, and health conditions High
FR-02 Add Health Event User can specify a condition and age of onset High
FR-03 Generate Risk Alert System detects hereditary risk and sends an alert High
FR-04 Book Appointment User can select a clinic and confirm booking Medium
FR-05 View Awareness Content User can access health tips and checklists Medium
FR-06 View Alert History User can view past alerts Low

2.2 Non-Functional Requirements

2.2.1 Introduction & Overview

This document specifies the Non-Functional Requirements (NFRs) for the Sillah Family Health Management System across Usability, Reliability, and Security. The goal is to ensure the platform is simple to use, robust, and safe for all users in Saudi Arabia. Items marked [Conceptual] indicate production-level expectations. In Phase IV (Java prototype), those items will be simulated or documented, while core functionality will be implemented.

2.2.2 Usability Requirements

UR-01: Mobile-First Responsive Design

Priority: Critical

Phase IV: Implement

Rationale: Most users in Saudi Arabia access services via mobile; optimizing for phones maximizes reach.

User Stories: SIL-7 to SIL-16

Requirement: Interface must work across screen sizes, prioritizing mobile.

Acceptance Criteria:

  • Passes Google Mobile-Friendly Test
  • Verified on iPhone (Safari) and Android (Chrome)
  • Viewport meta tag is set correctly
  • Touch targets ≥ 44×44 px (WCAG)
  • No horizontal scrolling

UR-02: WCAG 2.1 Level AA Accessibility

Priority: High

Phase IV: Implement core; document full compliance

Rationale: Public services must be accessible and legally compliant.

User Stories: SIL-7 to SIL-16

Requirement: Meet WCAG 2.1 AA guidelines.

Acceptance Criteria:

  • WAVE/axe automated scan: zero critical errors
  • Manual test with NVDA or JAWS
  • Keyboard-only navigation succeeds
  • Color contrast verified with WebAIM (≥ 4.5:1 normal text)

UR-03: Task Completion Efficiency

Priority: High

Phase IV: Implement

Rationale: Faster tasks increase adoption and adherence to preventive actions.

User Stories: SIL-7, SIL-13, SIL-14

Requirement: Key tasks should be quick and low-effort.

Acceptance Criteria:

  • Build a basic family tree in < 5 minutes (≥ 15 participants)
  • Find & download a checklist in < 3 minutes
  • ≥ 90% success on critical tasks without help

UR-04: Bilingual Interface (Arabic & English)

Priority: High

Phase IV: Implement

Rationale: Serves both Arabic speakers and expatriates.

User Stories: SIL-7 to SIL-16

Requirement: Full bilingual support.

Acceptance Criteria:

  • 100% UI translated
  • RTL layout correct for Arabic
  • Language preference persists
  • Medical terminology reviewed by an Arabic-speaking clinician

UR-05: Clear Error Messages & Guidance

Priority: High

Phase IV: Implement

Rationale: Friendly, actionable errors reduce frustration and support load.

User Stories: SIL-7, SIL-8, SIL-15

Requirement: Errors must be specific, polite, and near the relevant field.

Acceptance Criteria:

  • Messages free of technical jargon
  • Inline placement beside fields
  • Visible success states with confirmation

UR-06: Intuitive Information Architecture

Priority: High

Phase IV: Implement

Rationale: Logical structure lowers cognitive load.

User Stories: SIL-7 to SIL-16

Requirement: Content and features must be easy to find.

Acceptance Criteria:

  • ≤ 3 clicks to any feature
  • "Ease of finding" rating ≥ 4/5
  • Breadcrumbs available site-wide

UR-07: Consistent UI & Design System

Priority: High

Phase IV: Implement

Rationale: Consistency reduces cognitive load and errors.

User Stories: SIL-7 to SIL-16

Requirement: Use a single component style (buttons, inputs, spacing, headings).

Acceptance Criteria:

  • One button hierarchy (primary/secondary) applied site-wide
  • 4/8 px spacing scale used consistently
  • H1–H4 typography consistent across pages

UR-08: Progressive Disclosure

Priority: Medium

Phase IV: Implement

Rationale: Hide advanced options until needed to keep screens simple.

User Stories: SIL-7, SIL-11, SIL-15

Requirement: Collapsible/stepwise flows for long forms and settings.

Acceptance Criteria:

  • Long tasks split into ≤ 5 clear steps
  • Advanced options hidden by default, revealed on demand
  • User completes add-member flow without scrolling more than one screen per step

UR-09: Forms – Validation, Defaults & Undo

Priority: High

Phase IV: Implement

Rationale: Fewer entry errors and easier recovery.

User Stories: SIL-7, SIL-8, SIL-13

Requirement: Real-time validation, sensible defaults, and undo for deletes.

Acceptance Criteria:

  • Inline validation fires on blur and submit
  • Common fields prefilled (e.g., city from profile)
  • Delete shows snackbar with 10-second “Undo”

UR-10: Help, Hints & Empty States

Priority: Medium

Phase IV: Implement

Rationale: Users succeed without external documentation.

User Stories: SIL-11, SIL-12, SIL-16

Requirement: Contextual tips and meaningful empty states.

Acceptance Criteria:

  • Each empty list/page shows a 1–2 step “how to start”
  • Tooltips/help icons for non-obvious fields
  • Help links resolve to in-app guidance

UR-11: Status, Loading & Save Feedback

Priority: High

Phase IV: Implement

Rationale: Clear feedback improves trust and perceived speed.

User Stories: SIL-9, SIL-10, SIL-13

Requirement: Visual loading states and explicit save/booking confirmations.

Acceptance Criteria:

  • Loading shown if action > 300 ms
  • Save/booking shows success toast with details
  • Failures include reason + next action

UR-12: Locale Usability (Dates/Numbers/RTL Details)

Priority: Medium

Phase IV: Implement

Rationale: Locale-correct entry/format prevents mistakes.

User Stories: SIL-7 to SIL-16

Requirement: Use locale formats and mirror UI for RTL.

Acceptance Criteria:

  • Dates use user locale (e.g., dd/mm/yyyy or Hijri label if shown)
  • Numbers use Arabic/Western numerals per language
  • All icons/layouts mirror correctly in RTL

2.2.3 Reliability Requirements

RR-01: Availability & Uptime [Conceptual]

Priority: Critical

Phase IV: Document

Rationale: Users need access when risk alerts matter most.

User Stories: SIL-7 to SIL-16

Requirement: High availability with minimal unplanned downtime.

Acceptance Criteria:

  • Monthly uptime target 99.5% (≤ 3.65 hours downtime)
  • Automated monitoring & alerts
  • Public status page

RR-02: Fault Tolerance & Graceful Degradation

Priority: High

Phase IV: Implement core; document full design

Rationale: Prevent total failure when a component misbehaves.

User Stories: SIL-7 to SIL-16

Requirement: The system continues in a reduced mode if non-critical parts fail.

Acceptance Criteria:

  • No crashes on data/IO errors; user sees a recoverable message
  • Automatic retry with exponential backoff (max 3 attempts)
  • Read-only mode available if writes fail

RR-03: Data Backup & Restore [Conceptual]

Priority: Critical

Phase IV: Document; prototype provides export/import

Rationale: Recover from data loss incidents.

User Stories: SIL-7 to SIL-16

Requirement: Define backup schedule and recovery targets.

Acceptance Criteria:

  • RPO ≤ 24h; RTO ≤ 4h
  • Backups encrypted at rest
  • Prototype: JSON export/import verified on test data

RR-04: Data Accuracy & Integrity

Priority: Critical

Phase IV: Implement

Rationale: Incorrect risk results undermine the system's purpose.

User Stories: SIL-7 to SIL-10

Requirement: Protect data quality and detect risks accurately.

Acceptance Criteria:

  • False negatives ≤ 1% on a defined test set
  • False positives < 5% from entry errors
  • DB constraints prevent impossible data
  • 100% detection on known-risk test trees

RR-05: Performance & Response Time

Priority: High

Phase IV: Implement

Rationale: Fast responses increase trust and task completion.

User Stories: SIL-7, SIL-9, SIL-13

Requirement: Keep key actions responsive under typical load.

Acceptance Criteria:

  • P95 response < 1.0s for add member, view alerts, book appointment
  • P99 response < 2.5s for above actions
  • Prototype includes simple timing output for these actions

RR-06: Scalability Path [Conceptual]

Priority: Medium

Phase IV: Document

Rationale: Prepare for increased users and data volume.

User Stories: SIL-7 to SIL-16

Requirement: Architecture supports horizontal scaling for stateless services.

Acceptance Criteria:

  • Design notes for scaling UI/API independently
  • No hard-coded limits in code for list sizes
  • Prototype uses collections sized dynamically

RR-07: Observability & Logging

Priority: High

Phase IV: Implement core

Rationale: Diagnose issues and monitor reliability.

User Stories: SIL-9, SIL-10, SIL-16

Requirement: Structured logs with levels and correlation IDs.

Acceptance Criteria:

  • INFO for user actions; WARN/ERROR for failures with reasons
  • Each request/action includes a correlation ID in logs
  • Prototype prints structured console logs for main flows

RR-08: Session Reliability & Auto-Save

Priority: Critical

Phase IV: Implement

Rationale: Prevent loss of in-progress data; aligns with SR-03 timeout note.

User Stories: SIL-7, SIL-8, SIL-15

Requirement: Stable sessions with safe inactivity handling.

Acceptance Criteria:

  • Auto-save drafts every 30 seconds (or on step change)
  • Inactivity logout at 15 minutes; warning at 60 seconds before
  • On restart, user can restore last draft

RR-09: Consistency & Concurrency

Priority: High

Phase IV: Implement core; document full approach

Rationale: Avoid lost updates when multiple edits occur.

User Stories: SIL-7, SIL-8, SIL-10

Requirement: Use optimistic locking/version checks on updates.

Acceptance Criteria:

  • Conflicting edits are detected and surfaced to the user
  • Atomic add/edit operations for family members
  • Prototype simulates version check in memory

2.2.4 Security Requirements

SR-01: Data Privacy & PII Protection

Priority: Critical

Phase IV: Implement core; document full policy

Rationale: Protect sensitive family medical data and comply with local regulations.

User Stories: SIL-7 to SIL-16

Requirement: Limit collection, mask sensitive fields, and restrict exposure.

Acceptance Criteria:

  • Only necessary fields collected; optional items clearly labeled
  • PII redacted in logs and debug output
  • Access to PII requires authenticated session + role check

SR-02: Encryption (In Transit & At Rest) [Conceptual]

Priority: Critical

Phase IV: Document; prototype simulates at-rest via obfuscation

Rationale: Prevent eavesdropping and data theft.

User Stories: SIL-7 to SIL-16

Requirement: TLS 1.2+ for transit; encrypted storage for PII.

Acceptance Criteria:

  • Design notes: TLS required for all endpoints; HSTS enabled
  • At rest: keys managed outside code; encrypted backups (see RR-03)
  • Prototype: no plaintext PII persisted to disk

SR-03: Authentication

Priority: Critical

Phase IV: Implement

Rationale: Only authorized users should access health data.

User Stories: SIL-15

Requirement: Follow secure authentication practices.

Acceptance Criteria:

  • Weak passwords rejected
  • Session tokens rotated at login
  • Auto-logout after 15 minutes (mirrors RR-08)
  • Prototype documents hashing policy; production uses bcrypt ≥ 12 rounds + breached-password checks

SR-04: Role-Based Access Control (RBAC)

Priority: Critical

Phase IV: Implement

Rationale: Enforce least privilege by role.

User Stories: SIL-7 to SIL-16

Requirement: Three roles with appropriate permissions.

Acceptance Criteria:

  • Role set at account creation
  • Unauthorized access attempts blocked and logged
  • UI hides unavailable options
  • Server-side role checks on every protected API

SR-05: Secure Input Validation & Output Encoding

Priority: High

Phase IV: Implement

Rationale: Prevent injection and XSS issues.

User Stories: SIL-7, SIL-8, SIL-15

Requirement: Validate on server side; encode all untrusted output.

Acceptance Criteria:

  • Server rejects invalid age/relationship values with clear errors
  • No direct rendering of raw user input without encoding
  • Prototype unit tests cover typical injection payloads

SR-06: Secrets Management

Priority: High

Phase IV: Document; implement placeholder mechanism

Rationale: Prevent credential leaks.

User Stories: SIL-16

Requirement: No secrets committed to source control; use environment/config store.

Acceptance Criteria:

  • Repo scan shows no hard-coded secrets/tokens
  • Prototype reads secrets from environment variables only

SR-07: Security Logging & Audit Trails

Priority: High

Phase IV: Implement core (align with RR-07)

Rationale: Investigate incidents and unauthorized access attempts.

User Stories: SIL-9, SIL-10, SIL-16

Requirement: Log auth events, privilege changes, and access denials.

Acceptance Criteria:

  • Login success/failure logged with correlation ID (no PII)
  • RBAC denials recorded with reason
  • Prototype prints structured “SECURITY” lines for these events

SR-08: Dependency & Vulnerability Management

Priority: Medium

Phase IV: Document; run basic checks

Rationale: Reduce risk from third-party libraries.

User Stories: SIL-16

Requirement: Keep libraries updated; scan for known CVEs.

Acceptance Criteria:

  • Dependency list maintained; updates planned each sprint
  • Prototype: build step includes a vulnerability check (report attached)

SR-09: Data Retention & Right to Erasure

Priority: Medium

Phase IV: Document; prototype supports delete/export

Rationale: Respect user control over personal data.

User Stories: SIL-15, SIL-16

Requirement: Define retention periods; allow user-initiated deletion/export.

Acceptance Criteria:

  • Policy: default retention and deletion triggers defined
  • Prototype: user data export (JSON) and delete path demonstrated

SR-10: Third-Party/Clinic Integration Security [Conceptual]

Priority: High

Phase IV: Document

Rationale: Securely interact with external clinic systems.

User Stories: SIL-13, SIL-14

Requirement: Use signed requests, least-privilege tokens, and input sanitization on responses.

Acceptance Criteria:

  • Design specifies token scopes and rotation
  • All inbound data validated before use

2.4 Traceability Matrix

Requirement ID Priority Phase IV Status Related User Stories Verification Method
UR-01 Critical Implement SIL-7 to SIL-16 Mobile responsive test (Google Mobile-Friendly)
UR-02 High Implement SIL-7 to SIL-16 WAVE/axe scan + manual NVDA test
UR-03 High Implement SIL-7, SIL-13, SIL-14 Usability timing tests (avg <5 min)
UR-04 High Implement SIL-7 to SIL-16 Arabic/English switch verified
UR-05 High Implement SIL-7, SIL-8, SIL-15 Error message placement verified
UR-06 High Implement SIL-7 to SIL-16 Navigation ≤ 3 clicks
UR-07 Medium Document SIL-7 to SIL-16 Design system audit
UR-08 Medium Document SIL-10 First-time use UX evaluation
UR-09 Medium Document SIL-11 Readability test (grade ≤ 9)
UR-10 Medium Document SIL-11, 12 System feedback responses
UR-11 Low Document SIL-12 Help & support access test
UR-12 Low Document SIL-12 SUS ≥ 80 % target
RR-01 Critical Document SIL-7 – SIL-16 Availability log (target 99.5 %)
RR-02 High Document SIL-7 – SIL-16 Backup policy simulation
RR-03 Medium Document SIL-7 – SIL-16 Fault-tolerance test scenario
RR-04 Critical Implement SIL-7 – SIL-10 Data validation + accuracy check
RR-05 High Document SIL-7 – SIL-16 Browser/device compatibility test
RR-06 Medium Document SIL-7 – SIL-16 Performance load simulation
RR-07 Medium Document SIL-11 Content update review log
RR-08 High Implement SIL-15 Session persistence & auto-save
RR-09 Medium Document SIL-14, 15 API timeout/error test
RR-10 Low Simulate SIL-13 Notification delivery mock test
SR-01 Critical Document SIL-15 Data encryption at rest plan
SR-02 Critical Document SIL-15 Transport-layer encryption (HTTPS)
SR-03 Critical Implement SIL-15 Password & session security test
SR-04 Critical Implement SIL-7 – SIL-16 Role-based access validation
SR-05 High Document SIL-7 – SIL-16 Consent management audit
SR-06 High Document SIL-7 – SIL-16 Audit log review procedure
SR-07 Critical Implement SIL-7 – SIL-10 Input validation & sanitization test
SR-08 High Document SIL-7 – SIL-10 Privacy review (data minimization)
SR-09 High Implement SIL-15 Secure password reset scenario
SR-10 High Document SIL-12 – SIL-14 Awareness Hub content security check

2.5 Implementation Summary

Total NFRs

32 Total

Critical: 9
High: 15
Medium: 8

Phase IV Plan

  • Implement: 18 (prototype core)
  • Simulate: 1 (notification delivery)
  • Document: 13 (production-scale, conceptual)

Prototype Focus

Responsive family health tree Basic risk rules + validation Arabic/English content Secure authentication Reliable session + auto-save Clear feedback & messaging

2.6 Ethics Considerations

The development and deployment of the Sillah Family Health Management System involve significant ethical considerations due to the sensitive nature of health data and the potential impact on users' healthcare decisions.

2.6.1 Data Privacy and Confidentiality

  • Health Data Sensitivity: Family health history constitutes highly sensitive personal information requiring the highest level of protection against unauthorized access or disclosure.
  • Informed Consent: Users must provide explicit, informed consent before their data is collected or processed, with clear explanations of how their information will be used.
  • Data Minimization: Only essential health information required for hereditary risk assessment is collected, avoiding unnecessary personal data storage.

2.6.2 Algorithmic Fairness and Bias

  • Inclusive Risk Assessment: The rule-based risk detection algorithms must be designed to work equitably across different demographic groups and family structures.
  • Transparent Logic: Risk calculation methodologies should be explainable to users, avoiding "black box" decisions that cannot be justified or understood.
  • Regular Validation: Risk detection rules should be periodically reviewed by medical professionals to ensure accuracy and prevent misdiagnosis.

2.6.3 User Autonomy and Decision-Making

  • Educational Purpose: The system explicitly states that risk alerts are for educational and screening purposes only, not medical diagnoses.
  • User Empowerment: The system provides information and recommendations while preserving users' autonomy in healthcare decisions.
  • Voluntary Participation: All system usage is voluntary, with clear options to withdraw consent and request data deletion.

2.6.4 Social and Cultural Considerations

  • Family Dynamics: The system respects potential cultural sensitivities around hereditary conditions and family health discussions.
  • Language Accessibility: Bilingual support ensures equitable access for both Arabic and English speakers in Saudi Arabia.
  • Digital Inclusion: Mobile-first design and accessibility features prevent exclusion of users with disabilities or limited technology access.

2.6.5 Professional Responsibility

  • Medical Disclaimer: Clear disclaimers indicate that the system complements but does not replace professional medical advice.
  • Content Accuracy: All educational materials are medically reviewed to prevent misinformation.
  • Referral Integrity: Clinic recommendations are based on objective criteria without commercial influence or bias.

2.6.6 Implementation Ethics

  • Transparent Development: The development process maintains transparency about system capabilities and limitations.
  • Testing Ethics: User testing follows ethical guidelines with proper consent and data protection.
  • Continuous Oversight: Regular ethical reviews ensure the system continues to operate responsibly as it evolves.

These ethical guidelines ensure that Sillah not only meets technical and functional requirements but also operates as a responsible, trustworthy healthcare technology that respects user rights and promotes equitable health outcomes.

Phase III: Software Initial Design

3.1 Initial Software Design Approach

The Sillah system follows an Object-Oriented Design (OOD) approach, emphasizing modularity, encapsulation, and separation of concerns. The design centers around core domain entities such as User, FamilyMember, HealthEvent, and Clinic, each encapsulating their respective data and behaviors. This approach enables maintainability, extensibility, and clear responsibility assignment across system components.

Key design principles applied include:

  • Encapsulation: All class attributes are private with public accessor methods
  • Single Responsibility: Each class has a clearly defined, focused purpose
  • Loose Coupling: Components interact through well-defined interfaces
  • High Cohesion: Related functionality is grouped within the same modules

3.2 Software Architecture

3.2.1 Architectural Overview

Sillah employs a Three-Layer Architecture consisting of Presentation, Business Logic, and Data layers. This layered approach provides clear separation of concerns, enabling independent development, testing, and maintenance of each layer.

3.2.2 Component Responsibilities

Presentation Layer

  • Java Console Interface: Handles all user interaction in the prototype through menu-driven console input/output
  • Family Health Tree Interface: Manages the display and input for adding/viewing family members and health history
  • Risk Dashboard: Presents risk assessment results and alerts to the user
  • Awareness Hub Interface: Displays educational content and preventive checklists
  • Clinic Booking Interface: Facilitates clinic selection and appointment scheduling

Responsibilities: User input validation, data presentation, user experience flow, and interaction management.

Business Logic Layer

  • Risk Calculation Engine: Implements rule-based algorithms to analyze family health patterns and detect hereditary cardiac risks based on criteria such as multiple SCD cases under age 50
  • Alert Notification Service: Generates and manages risk alerts, determining appropriate messaging and urgency levels
  • Family History Analyzer: Processes and interprets family relationship data to identify hereditary patterns
  • Clinic Matching Service: Matches users with appropriate healthcare providers based on location and specialty
  • Booking System: Manages appointment scheduling, availability checks, and confirmation processes

Responsibilities: Core business rules, data processing, decision-making, and application logic.

Data Layer

  • User Profiles Manager: Handles user account data including authentication information and personal details
  • Family History Repository: Manages persistent storage of family member records and health events
  • Clinic Database: Maintains information about certified healthcare providers and their availability
  • Educational Content Store: Manages awareness materials, articles, and preventive checklists

Responsibilities: Data persistence, retrieval, integrity maintenance, and data access operations.

3.3 Architectural Pattern

3.3.1 Pattern Selection: Layered Architecture

The system implements the Layered Architecture pattern (also known as N-Tier Architecture). This pattern organizes the system into horizontal layers where each layer has a specific role and interacts only with adjacent layers.

3.3.2 Justification for Pattern Selection

The Layered Architecture pattern was selected for several key reasons:

  1. Separation of Concerns: Clear distinction between user interface, business logic, and data management enables specialized development and testing of each layer.
  2. Maintainability: Changes in one layer (e.g., switching from console to web interface) minimally impact other layers, reducing maintenance complexity.
  3. Testability: Each layer can be tested independently:
    • Presentation Layer: User interaction flows
    • Business Logic: Risk algorithms and business rules
    • Data Layer: Data storage and retrieval operations
  4. Team Development: The layered structure allows parallel development by team members with different specializations (UI, business logic, database).
  5. Scalability Path: While the prototype uses in-memory data structures, the layered design facilitates seamless transition to database persistence and web-based interfaces in future iterations.
  6. Academic Alignment: This pattern effectively demonstrates fundamental software engineering principles of modularity and separation of concerns, aligning with SE201 course objectives.

3.4 UML Design

3.4.1 Use Case Diagram

Use Case Diagram

Actors:

  • Citizens: Log family medical histories, access checklists, receive risk alerts, and schedule clinic appointments.
  • Healthcare Providers: Access hereditary risk reports and respond to system alerts.
  • Administrators: Manage users, clinics, and awareness content.

System Scope: The diagram represents the Sillah Family Health Management System, encompassing preventive care, hereditary risk detection, and awareness education.

Primary Use Cases:

  • Register and log in
  • Add and edit family health history
  • View family tree
  • Search and book certified clinics
  • Access awareness resources and preventive checklist
  • Get and view smart risk alerts
  • Manage users and system data (admin)

3.4.2 Tabular Use Case Descriptions

Use Case – Add Family Member
Primary Actor Citizen (User)
Goal To allow the user to record a family member's basic information and health condition.
Preconditions Users must be logged into the system.
Main Flow 1. The user selects "Add Family Member."
2. System prompts for relation, age, and health condition.
3. The user enters details.
4. The system validates input data.
5. The system saves the new family member.
Alternative Flow If data is invalid (e.g., empty fields or impossible age), the system displays an error message and prompts for correction.
Postcondition The new family member record is successfully saved and displayed in the user's family tree.
Use Case – Generate Risk Alert
Primary Actor System
Goal To automatically analyze family data and determine whether hereditary cardiac risk exists.
Preconditions Family members and their health conditions are recorded in the system.
Main Flow 1. The system scans all recorded family members.
2. It checks for patterns (e.g., two or more relatives with SCD under age 50).
3. If a pattern is found, a risk alert is generated.
4. An alert is displayed to the user.
Alternative Flow If no risk is detected, the system displays a "No immediate hereditary risk detected" message.
Postcondition Risk level (Low, Moderate, or High) is shown to the user and can trigger a clinic recommendation.
Use Case – Book Clinic Appointment
Primary Actor Citizen (User)
Goal To book a preventive health screening appointment at an available clinic.
Preconditions The user has received a risk alert and clinic options are available.
Main Flow 1. The user selects a recommended clinic.
2. The system checks clinic availability.
3. User confirms preferred time slot.
4. The system books the appointment and confirms details.
Alternative Flow If no appointment slots are available, the system suggests alternative clinics or future dates.
Postcondition Appointment confirmation message is shown and stored in the user's record.

3.4.3 Activity Diagram

Activity Diagram

3.4.4 Sequence Diagrams

Add Family Members and Health History Sequence Diagram Book Clinic Appointment Sequence Diagram Receive Smart Risk Alerts Sequence Diagram

3.4.5 Class Diagram

Class Diagram

3.4.6 System Architecture Diagram

System Architecture Diagram

Figure: Three-layer architecture showing Presentation, Business, and Data layers.

Phase IV: Prototype and Testing

4.1 Prototype Implementation (Java)

The Phase IV prototype was implemented in Java, demonstrating the interaction between these layers:

4.2 Awareness Hub Simulation

The Awareness Hub prototype simulates educational and preventive features through:

4.3 Testing & Results

Test Case Input Expected Output Result
TC-01 Enter 1 SCD relative "No immediate hereditary risk detected." Passed
TC-02 Enter 2 SCD relatives under 50 "High Risk: Please schedule preventive screening." Passed
TC-03 Awareness Hub menu Displays educational content and checklist Passed

4.4 Conclusion

The Sillah system successfully integrates software engineering concepts across all SE201 phases — from requirements and design to implementation and testing.

The team achieved a fully functional Java prototype reflecting preventive health awareness, risk detection, and basic system reliability.

Future improvements could include a web-based GUI, secure authentication, and database persistence.

4.5 References

Alomran, S. F. (2025). Sillah (صلة): Preventive Family Health Risk Detection System [Java project]. Prince Sultan University, SE201 – Introduction to Software Engineering.

GitHub Repository: https://github.com/Shoug-Alomran/SE201--Sillah-Project

Atlassian Jira (2025). Sillah Project Management Board. Prince Sultan University – SE201 Course.

Jira Board: https://sillah.atlassian.net

Appendix A: Code Implementation

Main Class

import java.util.Scanner;

public class Main {
    private static final String title = "=== Sillah (صلة) Preventive Health System ===";
    
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        while (true) {
            printMenu();
            String choice = input.nextLine().trim();
            
            if ("1".equals(choice)) {
                runLowRiskDemo();
            } else if ("2".equals(choice)) {
                runHighRiskDemo();
            } else if ("3".equals(choice)) {
                AwarenessHub hub = new AwarenessHub();
                hub.start(input);
            } else if ("0".equals(choice)) {
                System.out.println("Goodbye!");
                break;
            } else {
                System.out.println("Invalid choice.");
            }
        }
        input.close();
    }
    
    private static void runLowRiskDemo() {
        User user = new User("Shoug Alomran");
        FamilyMember f1 = new FamilyMember("Father", 55, "Healthy");
        FamilyMember f2 = new FamilyMember("Brother", 30, "Healthy");
        user.addFamilyMember(f1);
        user.addFamilyMember(f2);
        runFlow(user);
    }
    
    private static void runHighRiskDemo() {
        User user = new User("Shoug Alomran");
        // Two relatives with SCD and age < 50 → triggers High Risk alert
        FamilyMember f1 = new FamilyMember("Father", 45, "SCD");
        FamilyMember f2 = new FamilyMember("Brother", 30, "SCD");
        user.addFamilyMember(f1);
        user.addFamilyMember(f2);
        runFlow(user);
    }
}

User Class

import java.util.*;

public class User {
    private String name;
    private List<FamilyMember> familyMembers = new ArrayList<>();
    
    public User(String name) {
        if (name == null || name.trim().isEmpty()) {
            throw new IllegalArgumentException("Name required");
        }
        this.name = name.trim();
    }
    
    public void addFamilyMember(FamilyMember fm) {
        if (fm != null)
            familyMembers.add(fm);
    }
    
    public List<FamilyMember> getFamilyMembers() {
        return Collections.unmodifiableList(familyMembers);
    }
    
    public String getName() {
        return name;
    }
}

FamilyMember Class

import java.util.*;

public class FamilyMember {
    private String relation;
    private int age;
    private List<HealthEvent> healthEvents = new ArrayList<>();
    
    public FamilyMember(String relation, int age) {
        if (relation == null || relation.trim().isEmpty()) {
            throw new IllegalArgumentException("Relation required");
        }
        if (age < 0 || age > 120) {
            throw new IllegalArgumentException("Age must be between 0 and 120");
        }
        this.relation = relation.trim();
        this.age = age;
    }
    
    public FamilyMember(String relation, int age, String healthCondition) {
        this(relation, age);
        if (healthCondition != null && !healthCondition.trim().isEmpty()) {
            addHealthEvent(new HealthEvent(
                healthCondition.trim(), 
                Math.max(0, Math.min(age, 50)), 
                "Initial condition"
            ));
        }
    }
    
    public void addHealthEvent(HealthEvent event) {
        if (event != null) {
            healthEvents.add(event);
        }
    }
    
    public List<HealthEvent> getHealthEvents() {
        return Collections.unmodifiableList(healthEvents);
    }
}

AlertSystem Class

public class AlertSystem {
    public String checkRisk(User user) {
        int earlySCDCount = 0;
        
        for (FamilyMember fm : user.getFamilyMembers()) {
            for (HealthEvent event : fm.getHealthEvents()) {
                if ("SCD".equalsIgnoreCase(event.getCondition()) 
                    && event.getAgeAtDiagnosis() < 50) {
                    earlySCDCount++;
                }
            }
        }
        
        if (earlySCDCount >= 2) {
            return "High Risk: Multiple early SCD cases detected. "
                 + "Please schedule a preventive screening.";
        } else if (earlySCDCount == 1) {
            return "Moderate Risk: One hereditary case detected. "
                 + "Consult your doctor for screening.";
        } else {
            return "No immediate hereditary risk detected.";
        }
    }
}

BookingSystem Class

public class BookingSystem {
    public Clinic findClinic(String name) {
        if (name != null && name.equalsIgnoreCase("Riyadh Heart Center"))
            return new Clinic("Riyadh Heart Center", "Riyadh");
        return new Clinic("General Health Clinic", "Riyadh");
    }
    
    public Appointment bookAppointment(User user, Clinic clinic) {
        if (user == null || clinic == null)
            throw new IllegalArgumentException("User and clinic are required");
        System.out.println("Booking appointment...");
        return new Appointment(user, clinic);
    }
}

AwarenessHub Class

import java.util.Scanner;

public class AwarenessHub {
    public void start(Scanner input) {
        while (true) {
            System.out.println("\n=== Awareness Hub ===");
            System.out.println("1) View Educational Topics");
            System.out.println("2) Preventive Checklist");
            System.out.println("0) Back to main menu");
            
            String choice = input.nextLine().trim();
            
            if ("1".equals(choice)) {
                showTopics(input);
            } else if ("2".equals(choice)) {
                showChecklist();
            } else if ("0".equals(choice)) {
                break;
            }
        }
    }
    
    private void showChecklist() {
        System.out.println("\n=== Preventive Checklist ===");
        System.out.println("[✓] Add family members to your health tree");
        System.out.println("[ ] Schedule your first screening");
        System.out.println("[ ] Read one Awareness article");
        System.out.println("Progress: 1/3 completed");
    }
}

Appendix B: Project Management with Jira

To support project planning and agile task tracking, the Sillah (صلة) team utilized Atlassian Jira for sprint management and backlog organization.

The board below represents SIL Sprint 1, containing 10 user stories aligned with system functionalities defined in the requirements and design phases.

Epic User Stories Description
Family Health Tree SIL-7, SIL-8 Add and view family members, record health history
Risk Alert System SIL-9, SIL-10 Generate hereditary risk alerts and display risk reports
Awareness Hub SIL-11, SIL-12 Display educational content and preventive health checklist
Clinic Locator & Booking SIL-13, SIL-14 Search for certified clinics and book appointments
User Management & Dashboard SIL-15, SIL-16 Registration, login, and personal dashboard view

This setup ensured every requirement (functional and non-functional) was represented as a Jira issue, enabling traceability from the requirements phase to prototype implementation.