Requirements - massbay-cs/cs225-proj4 GitHub Wiki

Functionality

  • Calendar
  • Participants
    • Organizers
      • Admins (fka "Privileged")
        • Add events to calendar
        • Add tasks to events
        • Add other organizers
      • Committee leaders (fka "Non-privileged")
        • TODO: Clarify role later
    • Non-privileged participants
      • Added by organizers along with contact info
      • Can customize own contact info (?)
  • Events
    • Each event has associated tasks
  • Track completion of tasks
  • Track completion of events based on completion of its tasks
  • Committees
    • Managed by organizers
  • Email
    • SMTP (real email)
    • Can be sent from and received by users/groups
      • What's a group?
    • Automatic email reminders for important dates/events
  • Budget
    • Managed by organizer
  • Reports
    • Budget
    • Calendar of events/tasks
    • Event details
      • Name
      • Location
      • Duration
      • Required tools/equipment
      • Handler/manager/chair
    • Task progress
  • Forms
    • Registration
    • Budget
      • Expense
        • Location
        • Usage:
          • Hourly
          • Daily
          • All event
        • Description
      • Income
        • Registration fees
        • Fundraising
    • Sub-events
      • Used to create schedule
      • Types:
        • During actual event
        • Pre-events
        • Post-events
      • Fields (see Data)
    • Buttons on each form
      • Save
      • Cancel
  • Non-privileged participants
    • Read-only access to events/tasks
    • No access to other participants' contact info
    • Read-write access to own contact info
  • Low priority:
    • Printing/previewing
    • Exporting

Data

  • Participants
    • Name
    • Address
    • Phone number
    • Email address
    • Affiliation
    • Selected sub-events that they will be attending
    • Biographies
    • Are they presenting?
  • Abstract: Event base
    • Name
    • Type (pre, post, during)
    • Duration
    • Date/time
    • Location
    • Description
  • Event
    • Extends: Event base
    • Sub-events
      • Extends: Event base
  • Budget items
    • TODO: Discuss further
    • Expense
      • Location
      • Usage:
        • Hourly
        • Daily
        • All event
      • Description
    • Income
      • Source
  • Documentation for events

Usability

  • Tab focus order should be taken into accounts #1
  • Unified button labeling (Save, Cancel)
  • Enter should submit dialog forms #10
  • Only one layer of tabs #18
  • Calendar
    • Jump to "Today" #20
    • Jump to arbitrary date #21
  • Descriptive section labeling
  • Controls should be sized to dialogs
  • Calculated totals should be displayed on forms that take numerical input
  • Validation of fields #3
  • Everything should be cancelable
  • Confirmation dialogs for destructive events
  • Simplified UI
  • In-program manual
  • Placeholders for form fields where lacking labels #2

Reliability

  • Security #19
  • Shouldn't crash
  • Preservation of data; avoid data loss
  • Reliable database implementation (e.g. SQLite)
    • Consistency
    • CAP theorem
  • Allow corrections to all information
  • Exception handling

Performance

  • No significant delays
  • Threading for long-running tasks (low priority?)
    • Email
    • Exporting
    • Printing

Supportability

  • Logging
  • Enforce code style