CS511: Software Engineering
Taught by Prof. Peter Masters
Time frame: Fall 1998
Class summary:



Projects Statistics:

Screenshot of Penumbra (click)
This amazing course took a two-pronged approach to teaching us about software engineering. On one hand, it introduced us to the theory behind creating applications, to things like development cycle, testing and system analysis among others. On the other hand, it gave a a very real taste of what it feels like to engulf yourself in a large and demanding project with a team of other people and a stiff deadline to meet. That is the side of the course that I would like to tell you about on my Projects webpage.

Some details about the project were known at the beginning of the class. We bought a book about UML which had a fully functional demo of Rational Rose, a Computer-Aided Software Engineering tool which makes use of the Unified Modeling Language, another standard though of by the SE wizards at Rational.
To tell you the truth, it was quite awkward, and some of the interface choices seemed questionable. We were told that we would implement something like Rational Rose in Java, but with an extended task of being able to save and load UML diagrams in the form of eXtensible Markup Language (XML).

Then we were subdivided into teams. I became a member of what initially was known as the I-team (all teams had letters assigned to them) and later came to be known as the SNEEZ team (Stan - that's me, Nick Eskelinen, Eric Chang, Estephanie Tam, Zach McCaffrey).

First came the Product Requirements Document. The thing about professor Masters is that he actually is a manager of a team at Lotus, and I am betting that his PRD was very close to the real thing. Given the PRD, we had two weeks to produce our team's Functional Specification. We met outside of the class and designed the internal conceptual schema of the components and pretty much agreed on what our UML modeler will look like. We agreed on distribution of tasks: I volunteered to do GUI and do some back-end design, Nick would deal with loading and saving XML files, Zach would also work on the back-end, with Stephanie and Eric helping each of us as needed.

Even though we had a month to do this project, there was not enough time. I was taking Image and Video Processing at the time. This project had a lot of User Interface features to implement and I was the person in charge of UI. The result: I spent the last two weeks before the break typing at the top of my typing speed, non-stop, just sitting in the lab. I believe I fully realized what the term "crunch-time" refers to, and so did Nick and Zach. Nick did not sleep during the last week at all, and Zach had missed occasional night or two of sleep. There were thousands of issues to be resolved.


My Class/Interface Editor
But I am very happy with the result. There are hundreds of nifty features in the GUI, like the toolbar, multiple selections, blazing-fast drawing, dragging and resizing of the classes boxes thanks to my pre-rendering ideas, a class editor (on the left), a tree viewer (thanks to Nick/programming and Eric/graphics), a Scroll Viewer (that little rectangle in the lower-left corner can be dragged around to navigate in the virtual diagram --thanks Zach/some bugfixing by me/shadowed look by Nick), walking arrows (making sure that relationship lines are never incorrectly attached--see the demonstration), reattachable relationship ends, drag-and-scroll (limited by Java) and many others.

Nick's amazing XML parser/loader/saver boasts some muscle too. It has capabilities of dirt-bagging (if the format from which the file is read is slightly different, it remembers the unknown elements and saves them when the file is saved again) and God knows what else.
While it is still slightly buggy (occasional trouble with loading/saving the XML documents, visibility options don't quite work), I am quite proud of this project and thank everyone in my group for toughing it out and coming through victorious.

Oh, in case you wonder, here's the XML data type description doc which our XML module used to load/save files. While IBM and Rational are trying to standardize the way to save the UML diagrams, Prof. Masters felt their spec was too detailed for our needs.



Want to see for yourself? Want source code? E-mail me