---
# System prepended metadata

title: Design Team Discussion

---

# Design Team Discussion

1. Design 1 (Alberto Lopez)
![Alberto Lopez](https://github.com/qc-se-fall2019/370Fall19Team5b/blob/master/GroupProject/individualDesignImages/loalberto.png)
    * Pros
        * The arrows pointing to each class is clear in their relationship with each other.
    * Cons
        * Add methods that would be used in the class and multiplicities such as where there can be one list but many reminders.
        * Hierarchy list need more information.
        * Need to show how the objects are going to be organized in the hierarchy list.
2. Design 2 (Harmandeep Singh)
![Harmandeep Singh](https://github.com/qc-se-fall2019/370Fall19Team5b/blob/master/GroupProject/individualDesignImages/singhharmandeep.png)
    * Pros
        * Simple and straightforward diagram.
        * Legible and easy to follow
        * Has most of the necessary components.
    * Cons
        * Needs more classes to do some of the tasks
        * Need to implement diagram for hierarchy list.
        * Needs to distribute the workload in separate classes for a more organized and efficient model
3. Design 3 (Josh Improgo)
![Josh Improgo](https://github.com/qc-se-fall2019/370Fall19Team5b/blob/master/GroupProject/individualDesignImages/joshimprogo.png)
    * Pros
        * May need to clarify the relationships between each class
    * Cons
        * Database should not be implemented in the design
        * Should have day and time alert and allow repeat in the Reminder Class.
        * ReminderApplication is GUI based and should not be implemented in the design
4. Design 4 (Miguel Santos)
![Miguel Santos](https://github.com/qc-se-fall2019/370Fall19Team5b/blob/master/GroupProject/individualDesignImages/miguelsantos.png)
    * Pros
        * Very detailed diagram
        * The model is easy to understand
        * What needs to be implemented seems to be very clear
    * Cons
        * Database should not be implemented in the design
        * Add some multiplicities to add detail to the diagram.
        * Driver shouldn't be implemented in the design
5. Design 5 (Thom De Jesus)
![Thom De Jesus](https://github.com/qc-se-fall2019/370Fall19Team5b/blob/master/GroupProject/individualDesignImages/thomdejesus.png)
    * Pros
        * Captures the simple idea of a UML diagram
        * The model is simple and has enough details to understand what is going on
        * It is easy to follow and to code up
        * It shows a clear idea of what the final project should follow
    * Cons
        * Could use more classes to be able to distribute the work
# Team Design
![Team Design](https://github.com/qc-se-fall2019/370Fall19Team5b/blob/master/GroupProject/individualDesignImages/team-design-image.png)
* The commonalities between our designs were the main 3 classes: Reminder, ReminderList, and ReminderType which are required to fulfill the ReminderManager requirements.
* We made sure to implement all necessary methods for each of the classes.
* Some of our individual designs implemented and included diagram objects for a Database, a ReminderApplication/Manager/Driver. We've decided that these diagram objects shouldn't be considered as they are not displayed in a UML Class Diagram
* We corrected multiplicity relationships and arrow relationships between the classes.
* We decided that a User class and a Notification class would be necessary in the diagram.
* The Notification class will be utilized by the Reminder class
* The Notification class will notify/alert the user based on the Date, Time, or Location.
* The User class will allow the user to create multiple lists and be responsible for conducting operations on the ReminderLists.
* A Reminder can only be instantiated via a ReminderList, but by default the Reminder would belong to the default ReminderList that would be implemented by the design.
# Summary
* Our team was able to divide our responsibilities and able to communicate our thoughts about each of our individual designs. In doing so, we provided constructive feedback about how we can improve our designs as well as giving praise to complement each other's works. We were then able to come up with a design that implements the correct aspects from our individual designs and thus agreed upon a single design for our team.
*  As a result, we've concluded to keep three classes: the Reminder, the ReminderList, and the ReminderType classes. In addition, we added two classes: a User and Notification class. These additions enabled us to do the following: the User class defines a structure that enables organization for multiple lists, the Notification class added a new component to the design and that is the structure for a location alert. 
*  The relationship between the Reminder and the ReminderType sets a ReminderType for each Reminder. In addition, multiple Reminders instances can belong to a single ReminderList instance and multiple ReminderLists instances can belong to single user.