Logic Circuits: The Next Generation
By Amber Hinkle
Logic Circuits was an application previously created by the computer science department to aid students in understanding the basics of boolean logic and circuit design. It accomplished this by giving students a tool to design and test the logic circuits within a graphical interface. Previously students would design a logic circuit and then have to check its functionality by hand. That would mean tracing every possible path on the circuit to verify the correct results were being received. This can become a grueling, not to mention, time consuming effort for large circuits. This tool provided student not only a quick and easy way to test logic circuit, but it was also more accurate in its testing.
This application, however, was written in a language called SmallTalk when it was first originated. When the computer science department switched from Apple to IBM computers the application no longer functioned correctly. This is due to the fact that SmallTalk is not platform independent. That is, an application written in SmallTalk has to be written specifically for the type of computer on which it is running. This is why the project, Logic Circuits: the next generation was created.
The project’s primary objective was to take the old version of Logic Circuits and rebuild it using a platform independent programming language, Java. The first and most important step was to understand the functionality of the original Logic Circuits application through reverse engineering. Every part of the original application, from the appearance of the tool bar to the function of a mouse click, was examined and broken down into the greatest detail possible. Once the list of details was compiled and the previous design was completely understood enhancements could be added. This included improvements to some of the graphical aspects of the application to increase usability, as well as some functional improvements to increase performance.
With the application design set in place the program design was the next phase. It was decided that the program would be split into two parts, the graphical and functional, much like the application design. Each part was to be worked on independently, causing an additional design of the interaction between the two parts. Basically, the functional part was to provide a certain set of objects, and functions, that the graphical part could use to perform its tasks. An example is when someone clicks the mouse on a selection in a menu. The graphical part created the menu and can see the mouse click, but needs the functional part to do something about the mouse click, to perform an action, like opening a file. This coordination of the two parts was the most difficult part of creating the application. After both parts were completed and working together the project began to be treated as a whole.
The testing phase went reasonably well, except for a few errors. The most outstanding error and one that was never fixed was the lack of printing capability. The knowledge of a way to print the screen using the Java programming language was never found. But, it is quite possible that, at that time, printing was available, just poorly documented. With the few seemingly unfixable errors the project was finished.
The Logic Circuits: the next generation application was just what its name suggested, a new updated version of the original. However it was also a lesson in reverse engineering, redesign, and a true team project.