Plugin Architecture

Today is the last day of my five-week architecture project at AspenTech. We have completed a very flexible and extensible architecture design with a working prototype for highly integrated desktop application framework and runtime infrastructure used in the process control and online optimiation applications.

At its core, it’s so-called Plugin concept that enables the runtime to be configured based on meta data. The runtime starts with an empty stack with some minimal bootstrap to discover and load the plugins. All the application functionalities are provided by the plugins. The plugins can work together based on the meta data instructions.

We have provided a set of default plugins to interpret the meta data, support a sophiscated GUI interface that utilizes the Model-View-Control design pattern. There’s a default Undo/Redo stack. All operations can be undone/redone. The object persistence is available as well.

The techniques used are XML seralization, object serialization, reflection, code generation, dynamic evaluation, etc. The prototype is implemented in C#. We have been using Extreme Programming and Pair Programming via Net Meeting all the time. The results are very good.

TabletPC SDK …

The TabeletPC project was over. I spent three weeks in Austin in Samsung’s Austin facility prototyping a solution to replace their current paper based auditing process in the fab.

We had to start the prototyping on XP without a TabletPC on hand. Within a week, we finally settled down the GUI design options that were best fit for our users’ taste and preferences. A lot of time we spent on was trying to explore the new features offered by the digital ink and pen. We chose two most promosing desgins with simple prototypes then presented them to the users. It turned out that they liked both:-) So we ended up a new desgin incorporating the features from both prototypes.

Soon we found out that TabletPC SDK had some undocumented limitations on how many Windows handles could be used. Our design called for a journal like interface where a user could just write down some short-hand codes, counts of violations and comments. The codes and counts are recognized and validated against a known list. Due to limited time, we had originally laid out as many rows of ink controls as we would need on the form, it turned out that SDK could not support it. We ended up using a template of controls and reused them.

Using factoids and well defined wordlists, the recognition accuracy is very high, but a traditional combobox still works very well.

The whole solution consists of a GUI frontend implemented in Windows Form and deployed via No Touch web deployment, a web site for reporting inplemented in ASP.NET and OWC, a server component implemented and deployed as .NET Remoting objects and a SQL Server 2000 as backend.

The security model is integrated Windows security all the way from user’s computer, the web server and the datbase server. It has offline feature to handle WI-FI connectivity issues when roaming in a fab lab. It’s written in C#.