Project report

profilelily33
SampleFinalProject.pdf

CMSC 495 FINAL REPORT 1

Final Report

Names of Group Members

CMSC 495 – Section XXXX

DATE

CMSC 495 FINAL REPORT 2

Table of Contents

1. Overview ........................................................................................................................... 3

2. Project Plan ....................................................................................................................... 4

3. Requirements Specification ............................................................................................... 4

4. System Specification .......................................................................................................... 4

5. User's Guide ...................................................................................................................... 4

6. Test Plan and Results ........................................................................................................ 5

7. Design and Alternate designs ............................................................................................. 5

8. Development History ......................................................................................................... 8

9. Conclusions ..................................................................................................................... 11

9.1. Lessons Learned ................................................................................................................... 11

9.2 Design Strengths ................................................................................................................... 12

9.3 Limitations ............................................................................................................................ 13

9.4. Suggestions for Future Improvement ................................................................................... 13

CMSC 495 FINAL REPORT 3

1. Overview

The Plate License and Tag Editor (PLaTE) application was designed to automate the license

plate management division of the DMV. Features provided by the application include:

 License plate data management including adding and deleting records

 Renewals of existing license plates

 Ordering new license plates

 Sending payment information to credit card companies securely

 Storage of application data including customer data, vehicle data, license plate data

The application operates though a Python based Graphic User Interface (GUI) with a SQL based

database for information storage. The application runs on either Windows or Mac systems that

have python and SQLite loaded on the system.

The application has 3 major components, the GUI, the database, and the backend code.

Development of the system was accomplished by a two-person team (Pearce, Rosario-Baez).

Being that the development team had a limited manpower pool, the entire development team

were involved almost every of the application management and oversight of the major portions

of the development were assigned to specific individuals as follows:

 GUI development - Name 1

 Database management - Name 2

 Python application backend code – Name 3

 Documentation - Name

CMSC 495 FINAL REPORT 4

2. Project Plan

The finalized Version 3 of the Project Plan is embedded in this document. Open it by clicking on

the icon below.

3. Requirements Specification

Requirement specifications are covered in the finalized project plan. Access it by clicking on the

icon in the previous section.

4. System Specification

The application will come with the Python GUI, SQL code to place the required tables on any

SQL database, and the Python code to run the GUI/SQL database integration. The Python GUI

will communicate with the SQL database to add, view, and delete customer records. These

records will be used to keep track who owns a vehicle in the state of Maryland and help

Maryland drivers renew and obtain new license plates to maintain proper ownership of the

vehicle.

5. User's Guide

The PLaTE Version 3 User Guide is a comprehensive document that has been vetted by the team

and the professor on through multiple revisions. The current revision is a clearly laid out step-by-

step guide to every function of the PLaTE program. Each process contains figures of each step of

5 CMSC 495 FINAL REPORT

the process to guide an inexperienced user through the program. The finalized Version 3 of

the User Guide is embedded in this document. Open it by clicking on the icon below.

6. Test Plan and Results

The test plan documents, and results have been key to ensuring that the release of our program

was successful. Combing the GUI and associated code step by step with the test pans have

helped us to identify problems that would have made it into production. All problems found have

been fixed until the test plan could be ran with no failures

The Finalized Test Plan and its attachments are embedded in this document. Open them by

clicking on their icons below.

7. Design and Alternate designs

Primary designs for the program were comprehensive, the original program UML is shown

below:

CMSC 495 FINAL REPORT 6

UML

Figure 1. UML Part 1

Figure 2. UML Part 2

CMSC 495 FINAL REPORT 7

Although this fix helped the user to be able to easily see records, we quickly realized that we did

not take into consideration that a customer could own more than one car and could there for have

multiple cars and plates that would have to be connected and able to be accessed individually for

display and renewal. purposes. The solution to that was several functions and a new window.

The new functionality of the program made the program look to see if a customer had more than

one vehicle when their driver’s license was entered in the normal process. If there was only one

record everything processed as normal. If there was more than one the window below would

open showing the VIN, make, model, and year for all the vehicles associated with the driver’s

license entered.

Figure 3. UML Part 3

CMSC 495 FINAL REPORT 8

Figure 4. Multiple Record User Interface

The user could then choose which record they wished to use by clicking on the record in the

displayed list and pressing submit. The record that was selected would then process. This

window and the functionality attached it fixed a major shortfall in the program. The program

remains in its final state with only the addition of this one window and popups to tell users the

success or failures of their entries.

The Finalized Design Plan is embedded in this document. Open it by clicking on their icons

below.

8. Development History

The Plate program s developmental history is best displayed through our milestone chart and

later quite comprehensively through our phase submissions. On the milestone chart shown

below, the black lines show the milestones as they were set at the beginning of the project. The

CMSC 495 FINAL REPORT 9

green lines show the actual times. Most time frames were very close to the prospective times set

forth at the beginning. Times for GUI assembly, backend coding, and connection of components

are shown longer as the GUI and its functionality was an ongoing process after the initial build

for the entire project. All of these times ran over their estimates but concluded in plenty of time

while leaving a much better program than in the beginning.

Figure 5. Milestones of the Project VS Actual Times

10 CMSC 495 FINAL REPORT

An overview of the three phases of this developmental processes where as follows:

PHASE I (5 Sept 15 – Sept 21)

Name Got to work on learning PYSimpleGUI and getting the initial build of the GUI together.

This was a major undertaking as neither member of the team had ever used Python to write a

GUI.

Name started writing pseudo functions for the backend and creating SQL tables that would hold

the data needed for the program and hold enough information on each customer, vehicle, and

license plate so that they could be attached to their corresponding records and be used by the

GUI and backend code.

PHASE II (Sept 22 – Sept 28)

Namecontinue to work on the GUI, adding functionality while coordinating with Pearce to

ensure that the backend code was written to correspond with the database as it was coming

together.

Name added 20 rows of values to each table to use when constructing the backend code. Pearce

then wrote code into each function, testing that each function worked with the SQL database

adding, deleting, and viewing the information from the database.

PHASE III (Sept 29 – Oct 5)

The program is functionally complete at this point and bugs are being discovered as we wade

through testing. At this point in the project both member of the team had to be very careful of

version control. Coding was often done on Zoom with both member working through any

problems that had arisen.

CMSC 495 FINAL REPORT 11

9. Conclusions

Over the past eight weeks, team one has put their shoulder to the wheel and fought through some

difficult learning curves. Despite all that, we feel that the product we produced is hearty and does

what we want it to. We did not, at any time during the process, say to ourselves, “let’s skip this

functionality so that we can get this thing done”. We fought through some areas, but all aspects

of the program’s functionality were as we envisioned them and some even turned out better than

we had expected. Both team members are much better programmers and project coordinators

because of the programming tasks and teamwork involved in this project.

9.1. Lessons Learned

There are several lessons learned during this project:

First, be flexible. There will almost always be design changes that must happen once you start

coding. They may be small, but they may affect other parts of the program. Accept that this is

going to happen and don’t try to stall or hide them. Triage them as they are found and decide

what needs to be done to make things right. We ran into a few such items in our code as we went

along. Either a program logic item that we had not considered or one that we had considered but

when applied acted differently. We discussed fixes when the problems were identified and got

after it. We are proud to say that there is not one problem, that we identified that, that we did not

fix.

Next, keep to your timelines if possible. We set milestones and either kept or exceeded

them. This allowed us time to meet incoming problems head on. Not only in our code but in our

home life and jobs. Because we stayed a focused and did not let ourselves get behind on the

CMSC 495 FINAL REPORT 12

coding or the documentation, we were able to overcome not only unseen code problems but also

events that were out of the team’s control that took a team member offline for a day or two.

Lastly, the answers are out there. We are fortunate today to have a vast repository of

knowledge at our fingertips. If you wish to learn or clarify something. The answer is most often

just a internet search away. We were lacking some of the knowledge we needed to complete this

project at the beginning. We identified that fact early and taught ourselves what we needed with

many hours of research. The lesson learned is that you can do almost anything with coding

today, it may take some research, but it is possible.

9.2 Design Strengths

Our program is solidly built and held together with strong code. Lines of code that were used

more than once were made into functions so that they could be managed easier, and the code

would be easier to read from an outside perspective. We did not allow for covering or burying

flaws that we found while testing. If a rewrite of a section of the code was required to fix issues

raised by testing, it was rewritten. This would often set us back, but we had made provisions in

the planning for this and stayed with or ahead of our timeline as a rule.

We designed the program to be easy to use. Sections of the GUI that require use input are

highlighted when that input is needed. All other input areas are shaded out. Popup boxes notify

users when they are using the program incorrectly or when errors are made during data input.

Visual examples are given of plates as they are ordered aid the user and customer to verify what

they are ordering.

CMSC 495 FINAL REPORT 13

The GUI is easily modifiable. Future upgrades to the program could easily modify, replace, or

add windows in response to user feedback. This will allow the software development cycle to

continue easily as it comes around in its cyclical manner.

9.3 Limitations

As far as limitations go for the program, our team focused on removing limitations when they

were discovered in the design process or when coding started. That is not to say that our program

does not have limitations. It means that we have far fewer limitation than we would have if we

would not have worked under that credo. There are limitations both remaining both

programmatically and structurally.

 The SQLite database will only hold approximately 281 terabytes of data. (SQLite.org,

2021)

 Each table in the database can only hold 18,446,744,073,709,551,616 rows of data

(SQLite.org, 2021)

 We currently do not automatically track expiration dates in the database. This must be

done manually and could be made automated in future releases of the program

 Current versions of Python and SQLite must be loaded on each machine that wishes to

use the program.

9.4. Suggestions for Future Improvement

Our team has kept an eye out for future improvements as the program was coming together.

Some of those improvements that were identified we were able to incorporate immediately.

Others were noted for the future. One of the upgrades we were able to incorporate was the ability

CMSC 495 FINAL REPORT 14

to select which record was being selected when the customer hand more than one vehicle. How

the user performed this task was upgraded from a manual count of the records by the user to a

list populated with the options available that the user can click on their selection and submit it.

There was a lot of blood sweat and tears to bring that upgrade into production, but we

accomplished it and it works beautifully.

Some of the future improvements that we identified for future versions of the program was the

addition of more plate backgrounds beyond the eight versions we currently offer, an expiration

date tracker that automatically combs the database and provides that information to the user. This

task currently must be done manually. Lastly, combing the program into an executable file would

make the initial download and startup of the program easier and could be accomplished by an

average user instead of a programmer.

CMSC 495 FINAL REPORT 15

REFERENCES

Geeks for Geeks.org. (2019, March 27). Python | Convert list of tuples to list of list.

GeeksforGeeks. https://www.geeksforgeeks.org/python-convert-list-of-tuples-to-list-of-list/

Programiz. (n.d.). Python list remove(). Programiz: Learn to Code for

Free. https://www.programiz.com/python-programming/methods/list/remove

PySimpleGUI. (2021). PySimpleGUI. https://pysimplegui.readthedocs.io/en/latest/

Python, R. (2020, June 17). PySimpleGUI: The simple way to create a GUI with Python – Real Python.

Python Tutorials – Real Python. https://realpython.com/pysimplegui-python/

Python Software Foundation. (2021). Sqlite3 — DB-API 2.0 interface for SQLite databases — Python

3.9.7 documentation. 3.9.7 Documentation. https://docs.python.org/3/library/sqlite3.html

SQLite.org. (2021, June 18). Implementation limits for SQLite. SQLite. https://www.sqlite.org/limits.html

Trinket.io. (2021). The basics of the pysimplegui program. https://pysimplegui.trinket.io/demo-

programs#/demo-programs/the-basic-pysimplegui-program

Tutorialspoint. (2021). SQLite - Python. Biggest Online Tutorials

Library. https://www.tutorialspoint.com/sqlite/sqlite_python.htm

Tutorialspoint. (2021). SDLC - Overview. The Biggest Online Tutorials Library - AppML, AI with Python,

Behave, Java16, Spacy. https://www.tutorialspoint.com/sdlc/sdlc_overview.htm

W3 Schools. (2021). SQL SELECT statement. W3Schools Online Web

Tutorials. https://www.w3schools.com/sql/sql_select.asp