12.4. Conclusion

12.4.1. Summary

The first part of this chapter introduced SAI, a software architecture model for designing, analyzing, and implementing applications performing distributed, asynchronous, parallel processing of generic data streams. The goal of SAI is to provide a universal framework for the distributed implementation of algorithms and their easy integration into complex systems that exhibit desirable software engineering qualities such as efficiency, scalability, extensibility, reusability, and interoperability.

SAI specifies a new architectural style (components, connectors, and constraints). The underlying extensible data model and hybrid (shared repository and message passing) distributed, asynchronous, parallel processing model allow natural and efficient manipulation of generic data streams, using existing libraries or native code alike. The modularity of the style facilitates distributed code development, testing, and reuse, as well as fast system design and integration, maintenance, and evolution. A graph-based notation for architectural designs allows intuitive system representation at the conceptual and logical levels, while at the same time mapping closely to processes.

Architectural patterns were illustrated through a number of computer vision-related demonstration projects ranging from single-stream, automatic, real-time video processing to fully integrated, distributed interactive systems mixing live video, graphics, sound, and so on. By design, the SAI style preserves desirable properties identified in the classic Pipes-and-Filters model. These include modularity and natural support for parallelism. Unlike the Pipes-and-Filters model, the SAI style allows optimal (theoretical) system latency and throughput to be achieved, and provides a unified framework for consistent representation and efficient implementation of fundamental processing patterns such as feedback loops and incremental processing along the time dimension.

The second part of the chapter was a code-level tutorial on MFSM, an architectural middleware implementing the SAI style. Its core element, the FSF library, is a set of extensible classes that can be specialized to define new data structures and processes or encapsulate existing ones (e.g., from libraries). MFSM is an open source project, released under the GNU Lesser General Public License. A number of software modules regroup specializations implementing specific algorithms or functionalities. They constitute a constantly growing base of open source, reusable code maintained as part of the MFSM project. The project is also thoroughly documented and comprises a user guide, a reference guide, and various tutorials.

Simple example applications illustrated the design and implementation of image-stream-manipulation applications using the SAI style and the MFSM middleware. In particular, the implementation of a generic image node (object of an open source module) and its use in conjunction with the OpenCV library in specialized cells were described step by step.

12.4.2. Perspectives

The SAI architectural style exhibit properties that make it relevant to research, educational, and even industrial projects.

Thanks to its modularity, it can accommodate today's requirements while preparing for tomorrow's applications. Using the SAI style for research can not only save time by avoiding the need to redevelop existing modules, it can also reduce the technology transfer time once the research has matured.

SAI also allows distributed development of functional modules and their seamless integration into complex systems. The modularity of the design also allows gradual development, facilitating continuing validation and naturally supporting regular delivery of incremental system prototypes. A number of crossdisciplinary research projects, in addition to those described in Section 12.2.3, are already leveraging these properties. They are producing real-time, interactive systems spanning a range of research domains.

Using the SAI style for developments in research projects can also reduce the technology transfer time once the technology has matured. From an industry point of view, the SAI style allows fast prototyping for proof-of-concept demonstrations.

For education, SAI allows classroom projects to be efficiently related to the realities of the research laboratory and of industrial software development. A project-oriented Integrated Media Systems class based on SAI and its applications in the distributed development model, was taught at USC in the Fall 2002 semester at the advanced graduate level. Rather than having small teams of students develop a same, simple, complete project, the small teams first implemented complementary parts of an overall, much more complex project (distributed soccer game). After six weeks of distributed development, sanctioned by careful incremental cross-testing, all the pieces were put together to produce a playable system. The course was an outstanding success, and regular graduate and undergraduate courses based on this model are in the planning.

Beyond those highlighted in this chapter, the SAI style has several important desirable architectural properties that make it a promising framework for many applications in various fields. These properties include natural support for dynamic system evolution, runtime reconfigurability, self-monitoring, and so on. Application of SAI in various contexts is currently being explored (e.g., interactive immersive systems). Short-term technical developments for SAI include development of a graphical user interface for system architecture design. Architecture validation and monitoring and analysis tools will be gradually integrated.

Finally, from a theoretical point of view, because of the explicit distinction between volatile and persistent data, SAI is a unified computational model that bridges the conceptual and practical gap between signal (data stream) processing on the one hand and the computation of higher level data (persistent, dynamic structures) on the other hand. As such, it might prove to be a powerful tool not only for implementing but also for modeling and reasoning about problems spanning both aspects. An example is computer vision.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset