The prototype’s architecture implementation
The architecture was already presented in the Prototype application architecture and now we’ll see the actual implementation. The prototype implementation tries to follow as close as possible the recommended architectural patterns and guidelines. To support the argumentation, a class diagram will be presented to give a visual orientation through the prototype implementation presentation.
The built prototype supporting Brainstorming Sessions on Microsoft Surface, further named Breiny, was developed as part of this thesis and uses all the above framework features. Thus, it is creating the basis for future work by being flexible in development yet fully packed with features.
Breiny’s class diagram
The class diagram was created with Visual Studio 2010 default diagramming tool and it is presented below. Its structure visually follows the MVVM pattern and it is composed from 4 main areas:
- The main window – handles all underlying user controls, tag recognition and tag visualizations and offers the binding context to the Session object to all user controls. It represents the View from MVVM pattern. Additionally, for the tag interaction there is a visualization which is created each time a tag is placed on the screen of the Microsoft Surface. This tag allows personalized experiences for all the users registered into the system;
- User controls – keeps concerns separated into several areas. The naming convention is uc for User Control, SV for the ScatterView and SV…Item for Scatter View Item. Each ScatterView has a User Control as template for the data bound item. This way the look of the items is customized to allow easy recognition by the users, an important feature since each item affords different actions;
- Session – the ViewModel, aggregates, transforms and offers the objects it contains to the above controls for binding. It is composed from the main Session object which acts as a central hub of information, using the Singleton pattern. The design choice was made because the main screen binds only to this object; subsequent User Controls bind deeper into a specific collection contained the Session object (e.g. the BrainstormingItemList) and display the appropriate data. This approach, because it is just a single object through the application life, provides easy serialization and deserialization of the entire environment when the “Save session” or “Load Session” features are used.
- The Model is represented by the means to get the information over the internet and the structures (models) in which it is stored. The communication is enabled by four modules which fill five model structures. Some communication modules have an independent way of refreshing their corresponding module – like in the case of CommWeb module which refreshes at a specific interval the collection of BrainItemType; other run only when invoked, like CommRPC module which connects to the BSCW server only when required.
Depicted with arrows in the Model area are ways by which the structures are filled with data from the communication modules.
Microsoft Surface
The hardware device that will allow software development of the prototype was chosen Microsoft Surface. The reasons behind this choice are:
- It is a complete device, which allows easy operation and minimal hardware maintenance. Other multi-touch tabletops either are custom built (which is not the point of this master thesis) or require constant maintenance if they are composed from separate components – by example moving it requires recalibration because the camera responsible to process infrared touch is not precisely in the last setup point;
- It runs Microsoft’s Windows operating system, allowing development in high performance frameworks like .Net 4.0.
- The touch framework is deeply integrated in both Operating System and Hardware and easily accessible;
- The community which develops Microsoft Surface application is big, allowing easy and fast application engineering.
The device itself is presented in the left handside picture. The screen (1) is a special polarization transparent material, allowing both projection of an image from a beamer (4) included in the unit and recording of infrared touches using infrared cameras (2). The system is composed completed by a computer (3) which processes maximum 50 simultaneous touch inputs, runs applications and shows them on the device’s screen through the beamer.
Microsoft Surface’s Operating system is Microsoft Windows Vista tightly integrated with the touch framework. It allows developers to use the native framework WPF (Windows Presentation Foundation) development in C#, Visual Basic or other .Net languages supported by Visual Studio. Nevertheless, ones can use also other frameworks like Java with custom built libraries, but this with the cost of adding another set of layers of abstraction which transforms into performance degradation.
Because of my previous experience in Visual Studio, C# and WPF I decided to use the native languages to implement the already presented prototype’s architecture.