Take A Number: Analysis to Design

1 minute read


Now that I understand the problem and have selected the technology I’m going to use to implement the take a number system, I need to move from my analysis classes:

Analysis classes from simplistic conversion of use case diagram.

to my design classes:

Analysis Class to Design Class mapping.

Recall that the green items are my «interface» classes, the red items are my «controller» classes and the purple items are my «entity» classes.

As is usual with analysis classes, they don’t necessarily represent the way the real software will be organized.

In this case, the «interface» classes are too numerous, an so I’ve merged the five analysis classes Registration, ServiceCustomer, SeeQueueLength, TakeANumberNotification, and TakeANumber into three Python modules registration.py, service.py, and customer.py.

All the «controller» analysis classes, I’ve merged into a single module. The RegistrationStatus «entity» is a little too small for a class on its own, and the Queue has its own module.

Missing: Database

As you may recall, the architecture I chose included a web server and a database.

But the database doesn’t show in the design classes. This is because, as I posted before, I’ve decided to use SQLite as my database, and this is accessible directly as a Python library.

Missing: Web Server

Also missing is what sort of a web server I’m going to be using. Previously, I mentioned IIS or Apache. However, again Python has a simple implementation of a web server that means I won’t have to bother with either of those.

What Next?

The next step is to write the code. To do this, I’m going to be using the PyCharm CE IDE from Jetbrains, because I liked the IntelliJ-like interface and I’m going to use the test-driven development approach because I like having test coverage of my code.