We present an integrated engineering software framework (named Zyric) that we hope will serve as a standard platform for nanotechnology applications. The effort is driven by a desire to: 1) accelerate the development and deployment of nanotechnology applications; 2) allow for interoperability and sharing of data between such applications; 3) leverage existing solutions from other engineering fields; 4) reduce training time for users; 5) define a common format for design data; 6) reduce the barriers to entry for those interested in nanotech engineering; 7) provide a common means of communication for researchers and practitioners; and 8) establish an open standard before a proprietary one has time to take root.
Zyric is envisioned as an engineer's workstation or window on his work; it is the front-end for design, visualization, analysis, simulation, animation, and manufacture. Several features of Zyric make it relatively straightforward to incorporate existing software as well as to create new software, and to combine them to create a rich tool-set for the user. Such features include multiple programming language support, a cross-platform component framework, an object model, and a data flow model.
Software is incorporated into Zyric by creating extension components. A component is just a piece of code that implements an "interface" . Extensions interact with Zyric via interfaces as defined by the object model. Interfaces are provided to build the GUI, set user preferences, construct "commands", specify hot-keys, etc. The Zyric application takes care of common low-level tasks such as logging, persisting user preferences, and window management. The user may select the set of extensions that he wishes to be loaded when Zyric is started. In this way Zyric may be configured as a domain specific application suite. An example would be a series of extensions for molecular modeling, visualization and simulation.
The data flow model defines a common format for communication between process components (which are the nodes in the data flow). Explicit in the format is a representation of hierarchy, sharing of data (e.g. directed acyclic graphs), and extensible semantics. Also incorporated is a push/pull concept that alleviates some inefficiencies inherent in the standard data flow model. The "push" part is just a notification to the consumer that the producer is prepared to compute new data. The consumer accesses the new data by creating and configuring an iterator on the link to the producer. The producer may use the iterator's configuration to determine what needs to be computed and/or transmitted. This permits custom data streaming since the producer has a-priori knowledge of what data is required by the consumer.
Zyric is currently being used at Zyvex Corporation in support of the top-down group's MEMS effort. The base architecture and implementation of Zyric will be published as an open-source project under the GNU public license. A license exception will permit commercial interests to distribute proprietary extensions and applications integrated with Zyric.
Don Box, Essential COM (chapter 2), Addison Wesley, 1998.
Top Down Group, Zyvex
1321 N. Plano Road, Richardson, TX 75081 USA
phone: (972) 235-7881 ext. 212
fax: (972) 235-7882
email: firstname.lastname@example.org http://www.zyvex.com/