This is simply an in-browser translation of the French version of the report that was then downloaded as a complete webpage and slightly modified. It is not a
perfect translation. The page was reformatted to fit the VaxTodo website style and work on mobile devices.
This deliverable focuses on the analysis, design and implementation of the
VaxToDo:Re system based on the work done in deliverable 1. Specifically, the physical and conceptual requirements of the system were analyzed, and the
system's performance was analyzed using activity diagrams. Then, a class diagram and sequence diagrams were used to design the system by paying
attention to the classes, their interactions, their attributes and methods, and the order in which the classes interact with each other as a
function of time. Finally, the system was implemented in Java, on the command line with a working prototype and a README user manual was written.
Subsequently, a GUI interface was made with JavaFX, the diagrams were updated and unit tests were performed.
The problem domain is the medical domain. The client does not know anything about computers. The client is the NPO GoodPeople which created the VaxTodo initiative, which vaccinates adults against COVID-19.
The problem is that the client has more and more problems meeting appointment dates and following up within an acceptable time frame. Our task is to create a system that will guarantee the periods of appointments booked and to facilitate the follow-up.
Deliverable 1:
We first prioritized text analysis, client interviews and glossary in order to fully understand the area and the problem. Next, we prioritized the use case diagram in order to have a good basis for writing scenarios. Subsequently, we prioritized the writing of the scenarios. Then we worked on the analysis of risks and non-functional needs. Subsequently, we worked on the paper prototype and the Java prototype. Finally, we have completed the report.
Deliverable 2:
As with assignment 1, we first prioritized the analysis of the text in order to fully understand the problem. We then prioritized the analysis and correction of our Assignment 1, to ensure we were on the right track. Subsequently, we prioritized the design of the diagrams, in order to have a good understanding of how we were going to implement the system. It might have been easier to start with the activity diagram, but we started with the class diagram. We still worked on prototype at the same time prioritizing the design of classes, attributes, getters, setters and other methods without writing the methods in detail. After completing the diagrams, we worked on the prototype and wrote the material requirements, physical and conceptual requirements, and report.
Deliverable 3:
As with homework 1 and 2, we first prioritized the analysis of the text in order to fully understand the problem. We then prioritized the analysis and correction of our assignment 2, to ensure we were on the right track. Subsequently, we prioritized the VaxToDo application, to ensure that we did not have to modify the diagrams, README and report several times. Then we did the tests, and then we finalized the README, the report, and the diagrams.
It is assumed that the data saved on the server must have a backup.
It is assumed that the data saved on the server must have a backup.
After many meetings and familiarization with the VaxTodo activity, we have prepared a glossary gathering the key terms and expressions characterizing the environment.
Our preliminary analysis allowed us to analyze the risks and non-functional requirements of VaxxTodo:Re. It also allowed us to analyze the material needs and physical and conceptual constraints of VaxToDo:Re. Finally, it allowed us to analyze the behavior of the system using dynamic analysis models: activity diagrams.
Classification according to the severity of the risk.
Since this is a small-volume application and the budget is limited, the best option is to use an interactive mode with on-site computers that will be used by employees. The part of appointment management (and calendar), account management of the volunteer and the visitor as well as the follow-up and vaccination report for each visitor will be computerized.
There will be a database that will save with the help of rows and columns all the important data and necessary for the use of the software.
The data will be stored in the src/Data/ folder in .csv format.
Everything will be saved on the hard drive of the computer and it will be possible to easily transfer the data to an external hard drive to have "back-ups".
There are a maximum of 15 visits per one-hour time slot (8am, 9am, ..., 4pm, 5pm), so a maximum of 150 visits per day, a maximum of 5 parallel visits, lasting 30 to 45 minutes each and a maximum of 40 visitors to the premises at the same time. The premises are open 10 hours a day, from 8am to 6pm. GoodPeople has a dozen computers, one of which will serve as a server.
VaxToDo:Re, models and views have a size of ~500 KB.
There are 8 csv files with an initial size of ~50-140 B.
Each new item saved in a csv file takes ~25-130 B depending on the number of boxes saved.
An employee or volunteer account takes ~130 B.
Assuming that the total number of employees and volunteers is about 22 (because there are a dozen computers and one of them is used as a server, the premises are open 10 hours / day, 5 days / week, so 50 hours / week and it is assumed that the average working hours of employees and volunteers is 25 hours / week), the total initial size of employee and volunteer accounts is ~3.2 KB.
Thus, the initial size of the system (Java + csv) before taking into account visitors would be ~1.3 MB.
Since a time slot lasts one hour and is limited to 15 appointments, assuming the worst case where each new appointment is a first visit, so where you have to create a new visitor account each time, you have to create 15 items per hour in the csv files Visitors, Follow-upVaccination, Appointments, ReportsVaccination, Interviews, Calendars. The maximum input volume per hour is therefore ~9.6 KB/h.
There are 10 one-hour time slots per day (8am, 9am, ..., 4pm, 5pm). The maximum input volume per day is therefore ~96 KB/day.
The premises are open 5 days/week, there are at most 22 weekdays (Monday to Friday) per month. The maximum input volume per month is therefore ~2.1 MB/month.
There are no more than 252 non-statutory holiday weekdays in a year (if leap). The maximum volume of entries per year is therefore ~532 MB/year.
The hard disk of the server must have at least 4 GB to have an operating system such as a "mini Linux" system that can handle the command line, files and sending emails, and contain the equivalent of at least four years (~2 GB) of data.
Employees' and volunteers' computers must have hard drives of at least 1 GB to use a "mini Linux" operating system that can handle the command line and a connection to the server.
If GoodPeople eventually plans to increase its amount of employees, volunteers and visitors, add features to the system such as a graphical interface, etc., hard drives should be have more storage space. In this case, in order to take into account all possible situations, we would recommend hard drives of at least 32 GB for each computer with a modern operating system such as Linux Mint or Windows 10.
Our design allowed us to have a good understanding of how we were going to implement the VaxToDo:Re system, the classes and their interactions, the attributes, the methods and the order in which they interact with each other as a function of time.
We aim for high cohesion. Our classes have limited special purposes. Each class has its own purpose. The majority of classes and interfaces have only one specific task. The VaxTodo interface has three: the management of appointments and accounts of volunteers and visitors. The menu takes care of displaying the text on the screen and allowing the user to select the menu options. Employees and volunteers have a code and password and interact with the menu. Visitor is used to manage visitors, their vaccination report and questionnaire. The latter two are implemented by classes that have only one identifier as well as attributes equivalent to the questions asked. Follow-upVaccination is used to manage the follow-up of the vaccination, including the sending of the vaccination reminder.
We are aiming for a low coupling. We minimize relationships and dependency between classes. Changing something in one of the classes does not affect the others. The majority of classes have a connection with the Employe (employee) class, some also with Benevole (volunteer), as volunteers have restricted access. Some have a link to Visitor, only when the visitor is involved in the task for which the class serves. The rest are implementation relationships for the interface and inheritence relationships for the Person class.
The Person class is used by Employe (employee), Benevole (volunteer), and Visiteur (Visitor), because several attributes are used by the other three classes. Also, the VaxTodo interface is implemented by Employe and Benevole, who use the system, and by Menu, which calls its methods when the user selects an option. We initially had a second Calendar interface with the printCalendrier() method and implemented by RendezVous, but we decided to simply place the method in RendezVous and return the list of appointments.