Since software has been a major focus while the PCBs have been in production we will give you a sneak peek into how we’re designing and keeping track of things.
Above is our UML (Unified Modelling Language) class diagram for the software that is being developed on the Raspberry Pi. With a project as complicated as ours, it was very important to plan the software. This allowed us to break up the overall goal into smaller, more manageable modules. These modules could then be programmed in parallel as the requirements of each piece of code was predetermined.
Software Ideas Modeler is a lightweight and powerful CASE (Computer Aided Software Engineering) tool. It helps you to describe and design your software and processes using UML 2.4, BPMN 2.0, SysML 1.3, ERD, flowcharts and other diagrams. – softwareideas.net/en/about/
To do this, we’ve been using a great piece of software called Software Ideas Modeler (SIM). It allows us to create diagrams, mapping out our thoughts about how the Twitalu’s software will work. It also acts as documentation for the code structure so that programmers can work on it in the future.
As you can see from the diagram above, the software is designed in a hierarchical manner whereby the higher level classes use the functions that are contained within lower classes. This means that there will only be one code instance running (TwitALU) and code from lower classes will be run when needed.
An interesting feature of this modularisation is that the system can be adapted in the future to accommodate different interfaces to the Twitalu. For example, rather than using Twitter as the interface for calculations, we could use voice recognition or a mechanical typewriter – all that is required is to replace the job creation classes with ones that deal with the other interfaces.
For those who are eager to take a look at the code-base, we have been thinking about using a public project hosting website like Github but for the moment we’re working out of a shared Dropbox folder. When we feel our code is in a publishable state (i.e. neatened up and documented well) we will migrate to Github and post you guys a link.