Consider a factory with lots of machines involved in production. From time to time these machines malfunction, and generate some kind of error or warning message. Getting these messages in time to the responsible employees is vital to keep the production running. The employees cannot stand right next to the machine and wait for the error, they have got other things to take care of, however they carry their cell phones all the time. My task is to find a both time and cost efficient method to transfer alert messages from the machines to the employees’ phones.
First I have to define the system’s architecture. The main components are the machines, the message listener, the storage server, the web server, and the mobile application. The machines generate the alerts and warnings. The message listener has to observe the machines and report any activity to the storage server. The storage server has to keep record of the incoming messages, and has to provide a way to transfer the messages to the phones. The storage server needs a user interface for maintenance and administration, while is provided by the web server. The client running on the employees’ phones has to download the messages from the storage server.
The second step is to find out what kind of phones should be used, and how the phones will communicate with the server. Using low end phones can decrease the cost, on the other hand we lose some functionality. There are many possible solution for the communication channel that should be taken into consideration for example: GRPS, 3G, Wi-Fi, Bluetooth, SMS. Each method has a different fix and running costs, different reliability, different range, etc. Also the phone type and the communication channel are not an orthogonal problem, for example low end phones do not have Wi-Fi connection capability.
After selecting the phone and communication type, I have to design the architecture’s details, I will evaluate the possible platform for the store and web server, define how the data will be stored.
One must be very careful with the resources during development for embedded devices such as a cell phone. The mobile application’s interface should be simple and obvious to use, despite of the small screen. Battery usage is also an important aspect to guarantee high availability.