Michael Lawson - addo225/CS499Team1 GitHub Wiki

GCCR: 4,560


Resume: 544

Use Cases: 313

Project Plan Total: 743

  • Requirements Document: 593
  • Planning and Estimating: 88
  • Metrics: 62

Ethics Essay: 572

Architecture: 143

Developer notes WC total: 2245


01/24/2019: Initial meeting with Dr. Brown. We primarily went over the workflow of coroners and deputy coroners from the time they enter the crime scene. Dr. Brown informed us that the means of data collection available to coroners is decentralized and disorganized. To remedy this, she has established the Kentucky Violent Death Reporting System (KVDRS) website at kvdrs.ky.gov, using funds allocated by the Center for Disease Control and Prevention (CDC). Through this site, coroners and deputy coroners can submit Death Scene Investigation (DSI) forms to the Coroner Investigation Reporting System (CIRS). Our objective is to create a cross platform mobile application that can interface with CIRS, and allow coroners and deputy coroners to work on and submit DSI forms from their android or iOS device. Dr. Brown expressed a desire for the mobile app to include voice dictation, along with the ability to automatically populate location information by utilizing the device GPS. Our second objective is to begin the process of migrating the KVDRS site onto servers at the University, Dr. Arnie Stromberg and his team will be assisting us with this task. (WC: 183)


01/28/2019: Initial team meeting. We discussed the programming language and development platform that we will be using to complete the mobile application. We then completed the Use Case Assignment as a team. (WC: 32)


01/31/2019: Second meeting with Dr. Brown. We met with Dr. Brown and one of her colleagues from the Public Health department. We inquired as to what she would want out of the aesthetic design of the user interface, as well as about gaining access to the CIRS web application. Dr. Brown relayed information from her meeting with Dr. Stromberg about setting up the new KVDRS website on servers housed at the University of Kentucky. Dr. Stromberg had decided to use either Redcap or SQL to manage the database, Alex informed the team that while Redcap is more flexible and is in widespread use on campus, SQL would be the easier platform to work with. (WC: 114)


02/04/2019: Second meeting with group. We primarily discussed what we would talk about with Dr. Brown during our next meeting, we needed to clear up some confusion about the requirements and ask whether we could focus on compatibility with iOS, and attempt to port the app to Android at a later date. We then split up the Project Plan Assignment among us. We have determined that it is unnecessary to hold weekly meetings with Dr. Brown as we can contact her through text messaging, moving forward, our in person meetings with Dr. Brown will be held biweekly. (WC: 97)


02/05/2019: Third meeting with Dr. Brown. We discussed access control requirements with Dr. Brown, and she helped clarify how we are meant to gain access to CIRS. We decided that we will be using a level 2 Role Based Access Control (RBAC) model for permissions, each coroner or deputy coroner will have access to the cases that they are working on, and have the option of granting others registered with CIRS access to these cases. Fayette county does not currently use the CIRS system, so, in order to gain access to CIRS, we will need to register for roles based out of Fayette county. We were also informed that our mobile application does not have to handle user registration, only user log-in. (WC: 122)


02/11/2019: Third group meeting. We primarily discussed the project plan assignment and worked collectively on the metrics and planning and estimating sections. We hammered out a rough schedule for when we would like to have features of the application finished. (WC: 40)


02/22/2019: Sign in page. I completed the bulk of the work dealing with user login, we will still need to meet with Dr. Stromberg to determine where the server handles user authentication, and what kind of data it sends in response to an authentication request. We may also want to add the capability of saving user credentials to the iCloud keychain. I also do not know how to push the entire Xcode project to github, so I just added a file that can be removed later once I figure out how this is done. (WC: 94)


02/26/2019: Fourth meeting with Dr. Brown, fourth group meeting. We received feedback on our Project Plan Assignment from Dr. Brown, we also signed up for the CIRS web application under her guidance, as we had neglected to do so after the last meeting. We requested that Dr. Brown would organize a meeting between our group and Dr. Stromberg after spring break, so that we can acquire the information we need to finalize the login page. We met as a group after we finished our meeting with Dr. Brown, I stepped through the login page code with the team and Alex showed me how to push an entire Xcode project onto github. We then split up the Architecture Assignment. (WC: 118)


03/03/2019: Fifth group meeting. We finished up the Architecture assignment and began working on the class presentation. We set up a practice presentation with presentation U on the 4th. (WC: 29)


03/04/2019: Practice presentation. We met to practice our in class architecture presentation at Presentation U. The practice went smoothly and we are fully prepared for the presentation. (WC: 27)


03/25/2019: Sixth group meeting. Met to establish some organization in how we plan to tackle the coding portion of the Mobile Death Scene Investigation app. I am to work on the landing page and image upload, Danny will attempt to implement voice dictation, while Najwa and Alex create the Death Scene Investigation. We also established what kind of information we will need about the database from Dr. Stromberg, as we are to meet with him tomorrow. (WC: 76)


03/26/2019: Meeting with Dr. Stromberg, 5th meeting with Dr. Brown. We met with Dr. Stromberg and one of his IT technicians to discuss some details about the database. While we were previously under the impression that the database was functional and that the backend of our app had been set up by another team working out of the University, we were informed that this was, in fact, not the case. The IT technician working with Dr. Stromberg proposed setting up a simple virtual machine that will allow us to connect our app to the server, this will allow us to handle the backend of our app on the fly. Since Danny has had some experience in dealing with databases, he will be implementing the backend, we hope that this set back will not throw us off track in completing the app. Dr. Brown was able to join us via Skype, we updated her on the progress we had made and inquired about some issues we had been having with the KVDRS website. The CIRS web application has been down for the past few days, and because of this, Najwa and Alex were stalled out in completing the Death Scene Investigation forms. Dr. Brown informed us that she hopes to be able to solve these issues by Thursday, but in a worst case scenario we can use the Death Scene Investigation pdf found on the KVDRS website itself. (WC: 237)


03/29/2019: I was able to complete a bare bones landing page relatively easily today. Once the user signs in to the app a DispatchQueue (FIFO queue that forks from the main process) will change the root view controller from that of the sign in page, to that of a UITabBarController which will allow the user to switch between three tabs; Edit New Form, a UIViewController containing a single button, that will create a new document; Edit Pending Form, a UITableViewController that will populate cells with the case numbers of forms that have been created and edited, but have not been submitted to the server. Upon selecting one of the table cells, the unpublished document will be brought up. The primary goal of this page is to facilitate the offline functionality of the application; Edit Published Form, a UITableViewController that will populate cells with the case numbers of forms that have already been submitted to the server. Upon selecting one of the table cells, the published document will be brought up. The primary goal of this page is to allow users to change permissions or amend mistakes in forms that have already been uploaded to the server. As of now these pages are stubs, the code for populating the Edit Published and Edit Pending page has been implemented but, as we currently have no way to save to either the device or database, they cannot be confirmed to function properly. I’m now waiting on the backend to be completed in order to finish the landing page. (WC: 255)


04/01/2019: Seventh group meeting. We met to discuss the remaining objectives that are to be completed in order to finish the Mobile Death Scene Investigation app. The Death Scene Investigation form is almost complete, voice to text and the landing page have been implemented. We still have to find a way to save the document on the devices local storage, give the app the capacity to upload images, work on the GPS location data auto population, and Danny has to finish the backend. We have scheduled our sixth meeting with Dr. Brown for next Tuesday the ninth of April. (WC: 99)


04/07/2019: I was able to implement the upload photo page, have expanded some of the stubs that made up the landing page, and have begun investigating a way to save the Death Scene Investigation forms to local storage. For image upload, UIImageViews are used to allow the app to accept images, the info.plist must also be updated in order to allow the app to have access to the camera, a UIImagePickerController is also necessary. In order to implement the takePhoto function in the upload photo page, the UIViewController of the upload photo page had to conform to the UINavigationControllerDelegate and the UIImagePickerControllerDelegate protocols. To achieve the intended functionality of the Edit Pending Form and Edit Published Form pages, I had to learn how data can be passed from one view controller to another. I discovered that the easiest way to achieve this is to override the prepare(for: segue) method that is generated as a commented out stub on every Cocoa Touch class that is created in Xcode. The destination controller is specified via a segue method within this function and it must have access to a variable that is capable of storing the data that is being passed ahead. Since I had organized all of my view controllers into different storyboards, I also had to learn how to access a separate story board within the prepare(for: segue) function. On the topic of local storage, I have been doing research on the UIDocument class. This class has a public function, save(), that will allow information that is written on the forms to persist in device memory. The UIDocument class must be subclassed in order to work, as two functions: load and contents, are not implemented in the class itself. The contents method describes what will be stored in the document, while the load method describes how the document is to be loaded from storage. My issue now is trying to figure out how to implement these methods so that they will work with the many variables that we are dealing with in the Death Scene Investigation form. I have created a struct that contains all data gathered in the forms themselves. This struct will be useful in dealing with remote storage, but in order to use it with the contents and load methods of the UIDocument class, I have to find a way to compress this data into a single string of binary information. I have focused my research on using a fileWrapper to accomplish this, all of the information I can find about file wrappers, however, seems to be outdated. Core Data and NSKeyedArchiver may prove to be useful means of saving data or compressing the struct, but they may require a lot more time to research and implement than we have available to us. (WC: 465)


04/09/2019: Sixth meeting with Dr. Brown. We met to demo the Mobile Death Scene Investigation app to our customer, Dr. Sabrina Brown. Dr. Brown seemed pleased with the progress we have made on the app so far. We also had the opportunity to meet with the man who provides the grants to Dr. Browns department, he seemed to enjoy the demo as well. (WC: 63)


04/20/2019: Our meetings throughout the month have been primarily focused on completing the coding assignment write up and presentation, and trying to finish the Mobile Death Scene Investigation app. Today and tomorrow we will be meeting to push our product to completion. Alex has finished the pills on scene page, using text fields to populate a TableView embedded in the Pills_On_Scene view controller. Danny has completed the backend, allowing us to push data to the servers at UK, he is now working on allowing us to retrieve this information from the servers so that we can complete the Edit Published Forms page. Najwa has completed the Death Scene Investigation forms and has been working on putting the KVDRS logo onto the app. I have been working on creating a UIDocument subclass that uses an NSKeyedArchiver to compress the variable in the MDSIProperties struct. However, I am having issues getting the document browser view controller to work with the forms as they currently exist, and we do not have time to refactor all of the code for each form. We will likely have to find an alternative method of saving the data to device memory. (WC: 194)