Skip to content

Software Requirements

xaterz edited this page Apr 13, 2017 · 24 revisions

SOFTWARE REQUIREMENTS

The Goal of the Project

Our project aims to offer visualizations of data (such as module demand, module demand history) and simulations of data changes (such as changes to class size, the dismounting of a module, changes to module prerequisites) to Module Administrators, so that it can help them to plan modules more efficiently and conveniently.

Requirement Gathering Process

We consulted our professor for advice for the project, since he has indicated his experience in module planning.

Non-functional requirements

  1. Our program requires a persistent internet connection.
  2. Our program runs in Google Chrome and Mozilla Firefox. JavaScript must be enabled in these browsers.
  3. Our program should be able to handle large volumes of text data, of up to 2000 database rows.
  4. Our program should complete each user request in less than 5 seconds. This is computed from the time when the user clicks on a button, to the time where the display finishes loading.
  5. Our program should have input sanitization as a security measure.
  6. Our program’s database should be safe from penetration as a security measure.
  7. Our program should be general enough to accommodate modules outside of CS modules if given the data.
  8. Our program should not crash when encountering invalid inputs or queries.

Functional Requirements

Basic requirements (MUST HAVES)

CRUD:

  1. As a user, I want to be able to add modules to the system, so that I can introduce new modules in the curriculum.
  • When adding a module, the user should supply the following essential information:
    • Module code
    • Module name
    • Modular credits
    • Module description
  • By ‘module’, we refer to modules that are unofficial - i.e. those that do not exist in the system, but have been planned by the department as a potential future module)
  • By default, all existing modules and their information will be provided by SoC office in an excel file, which will be used to populate the database (i.e. user does not have to add the module one by one into the system)

View link: https://drive.google.com/open?id=0B_c3EwcOyXsZQnJLTUxmTlFudzg

  1. As a user, I want to be able to see the mounting status of a module for a particular AY-Sem.
  1. As a user, I want to be able to edit a module in the system, so that I can change its information.
  • The information that can be edited includes:
    • Module name
    • Modular credits
    • Module description
    • Preclusion
    • Prerequisite
    • Mounting status (for an AY-Sem)
    • Quota (for an AY-Sem)

View link: https://drive.google.com/open?id=0B_c3EwcOyXsZclBEbVVsTUVPVEE

View link: https://drive.google.com/open?id=0B_c3EwcOyXsZMS0tMGJpX0hpemM

View link: https://drive.google.com/open?id=0B16vsMqHnVPxMFFTVllnaUxsSkk

  1. As a user, I want to be able to restore a module to its original state, so that I can revert unfavorable changes to a module in the curriculum.
  • The following information of a module can be restored:
    • Mounting status
    • Quota
    • Module details (name/description/MC)

View link: https://drive.google.com/open?id=0B_XZfqDthY7eQVpXcEcxX2NNdkk

  1. As a user, I want to be able to delete a module that was manually added into the system, so that I can revert the creation of a new module.

View link: https://drive.google.com/open?id=0B_c3EwcOyXsZeUNFeWNPR0VnVG8


Queries:

  1. As a user, I want to know how many students plan to take a certain module during a specific semester, so that I can decide if I want to mount it or not.

View link: https://drive.google.com/open?id=0B_XZfqDthY7eRC1jekhKdVJsYzQ

  1. As a user, I want to be able to see all other modules associated with a module (prerequisites and/or preclusion modules), so that I can see what other modules will be affected by changes to one of them.

View link: https://drive.google.com/open?id=0B_XZfqDthY7eUkpDdllwNWlGUVU

  1. As a user, I want to see how many students belong to a certain group, so that I know the student population’s distribution across the different groups. The criteria for such 'grouping' will be by:
  • Focus Area

View link: https://drive.google.com/open?id=0B_XZfqDthY7eOWhLVlN0V3Z4S2s

  • Year of Study

View link: https://drive.google.com/open?id=0B_c3EwcOyXsZNThjVzFYQVUtaFk

  1. As a user, I want to see the list of modules which have been modified, so that the changes can be announced to students when publishing circulars for curriculum changes. The type of modifications include:
  • Changes in mounting
  • Changes in quota
  • Changes in module details (name, description, MC)

View link: https://drive.google.com/open?id=0B_c3EwcOyXsZZzdhdnNDRDdBZVE

  1. As a user, I want to see the maximum class size of a module for the current semester, so that I know whether I should adjust the quota or not.

View link: https://drive.google.com/open?id=0B_XZfqDthY7eOEFDejQ3aVVYUU0

  1. As a user, I want to set class quotas for modules in future semesters, so that I can compare the demand with the preset class quota.

View link: https://drive.google.com/open?id=0B_c3EwcOyXsZMS0tMGJpX0hpemM

  1. As a user, I want to get a list of all students whose study planners include a modified module (changed or removed) and/or fail to meet prerequisite(s) for the modified module, so that I can notify them to change their plan.

View link: https://drive.google.com/open?id=0B_XZfqDthY7eaHdJdG1vLUJ0S28

  1. As a user, I want to know which modules have more interested students than preset quota, so that I can decide if I want to open up more slots for that module.

View link: https://drive.google.com/open?id=0B_c3EwcOyXsZb2Q4X2g1djhGRlE

  1. As a user, I want to be able to sort modules by some criteria, so that I can pay attention to different aspects for module planning. These criteria include:

View link: https://drive.google.com/open?id=0B_XZfqDthY7eWnRtbDBhYjBpbm8

  1. As a user, I want to be able to see modules usually taken together in the same semester so that I can figure out how to prevent class clashes for those modules.

View link: https://drive.google.com/open?id=0B_c3EwcOyXsZN0FkaGFJMnR5OVU

Security:

  1. As a user, I want to be able to create a user account, so that I can gain access to the system.

View link: https://drive.google.com/open?id=0B_XZfqDthY7eQkk4QkhydExfeVk

  1. As a user, I want to be able to login to the system, so that I can access the system.

View link: https://drive.google.com/open?id=0B_XZfqDthY7eNlFHMUZCNHhrbUE


Higher-level requirements (Good to have)

  1. As a user, I want to see how many students have taken module A prior to taking module B, so that I can inform the professor whether he needs to touch on the contents of module A while teaching module B.

View link: https://drive.google.com/open?id=0B_c3EwcOyXsZVUJXUDdMMlMzaFU

  1. As a user, I want to see what modules students have taken before they go for internship, so that I can share these details with companies and they will know what to expect from students.

View link: https://drive.google.com/open?id=0B_c3EwcOyXsZMllGcDd1THdLTzA

  1. As a user, I want to find pairs of modules that do not have any student that are planning to take both at the same semester, so that I know which modules can have classes scheduled at the same time.

View link: https://drive.google.com/open?id=0B_c3EwcOyXsZQnh6aFZ3UVdhRDA

  1. As a user, I want to know the types (seniority, focus area) of students who plan to read a certain module during a certain semester.

View link: https://drive.google.com/open?id=0B_XZfqDthY7ea0RWUUJNWWt5dmM

View link: https://drive.google.com/open?id=0B_XZfqDthY7eNDJicjg4RzhQZ1k

  1. As a user, I want to see all modules with a specified class size, so that I know how to allocate venues for them.

View link: https://drive.google.com/open?id=0B_c3EwcOyXsZSmFoQktKeE96LUU

  1. As a user, I want to mark modules as 'starred', so that I can easily access these modules whenever I want.

View link: https://drive.google.com/open?id=0B_c3EwcOyXsZYmdELS1SQmdVV2s

  1. As a user, I want to be able to migrate mounting data when a new AY has arrived, so that the mounting data shown in the system is always with respect to the current AY and the next AY.

View link: https://drive.google.com/open?id=0B16vsMqHnVPxdzBIN2hxSGxtUnc

View link: https://drive.google.com/open?id=0B16vsMqHnVPxUnU1a3hEYldTaGc


Requirements for Future Development

  1. As a user, I want to be able to reset my password, so that I can regain access to the system in case I forget it.

  2. As a super-admin, I want to be able to delete an account so that I can stop previously authorized users from accessing the system. (i.e. when the professor/staff leaves the university)

  3. As a super-admin, I want to be able to activate an account, so that I can approve a user's access to the system.

  4. As a user, I want be able to see the general time gap between prerequisite modules (taken in any semester) and the target module (for a specified semester), so that it can help professors gauge how much of the prerequisite knowledge have the students retained.

  5. As a user, I want to be able to filter modules by some criteria, so that I can restrict my view of modules to aid in module planning. These criteria include:

  • Focus area
  • Focus primary/elective
  1. As a user, I want to be able to import module data from excel file into the application, so that I can populate the database easily with the external data that I already have

  2. As a user, I want to be able to export module data from the application to an excel file, so that I can backup these data on my local storage.

  3. As a user, I want to be able to create or upload alternative mounting plans, so that I can compare student statistics for these mounting plans.

Clone this wiki locally