overview || style || middleware || applications || publications || acknowledgements
SAI is a new software architecture model for designing, analyzing and implementing applications performing distributed, asynchronous concurrent processing of generic data streams. SAI provides 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 provides formal, system design-oriented architectural support compatible with agile methodology practices. In particular, SAI's modularity facilitates incremental system design, development, maintenance and evolution. The underlying concurrent processing model ensures that optimal system throughput and latency are achievable for a given design.
Please see the the technical report IMSC-05-003 for an up-to-date, high-level presentation of the project.
SAI specifies a formal architectural style comprised of an extensible data model and an hybrid (shared memory and message-passing) distributed asynchronous concurrent processing model. Figure 1 presents an overview of SAI defining elements in their standard notation.
Figure 1: Overview of SAI elements. Cells are represented as squares,
sources as circles. Source-cell connections are drawn as fat lines, while
cell-cell connections are drawn as thin arrows crossing over the cells. When
color is available, cells are colored in green (reserved for processing);
sources, source-cell connections, passive pulses are in colored in red
(persistent information); streams and active pulses are colored in blue
(volatile information).
In SAI, all data is encapsulated in pulses. A pulse is the carrier for all the synchronous data corresponding to a given time stamp. Information in a pulse is organized as a mono-rooted composition hierarchy of node instances. The nodes constitute an extensible set of atomic data units that implement or encapsulate specific data structures. Pulses holding volatile data flow down streams defined by connections between processing centers called cells, in a message passing fashion. They trigger computations, and are thus called active pulses. In contrast, pulses holding persistent information are held in repositories called sources, where the processing centers can access them in a concurrent shared memory access fashion. Processing in a cell may result in the augmentation of the active pulse (input data), augmentation and/or update of the passive pulse (process parameters). The processing of active pulses is carried concurrently, as they are received by the cell. Data binding is performed dynamically in an operation called filtering. Active and passive filters qualitatively specify, for each cell, the target data in respective pulses. This hybrid model combining message passing and shared repository communication, combined with a unified data model, constitutes a universal processing framework.
A particular system architecture is specified at the conceptual level by a set of source and cell instances, and their inter-connections. Specialized cells may be accompanied by a description of the task they implement. The logical level specification of a design describes, for each cell, its active and passive filters and its output structure, and for each source, the structure of its passive pulse.
An open source architectural middleware called Modular Flow Scheduling Framework (MFSM), developed in C++, provides cross-platform code support for SAI's architectural abstractions, in the form of an extensible set of classes. A number of software modules regroup specializations that implement specific data structures, algorithms and/or functionalities. They constitute a constantly growing base of open source, reusable code, maintained as part of the MFSM project. The project also comprises extensive documentation, including user guide, reference guide and tutorials, all available on the project Web site (mfsm.sourceforge.net).
SAI and MFSM are used in several research groups and project teams. Projects designed in the SAI style and implemented using MFSM include:
SAI and MFSM are also used as support tools for various class projects. Classes in which SAI and MFSM are/were used include:
IMSC SAI Workshops: http://pollux.usc.edu/~afrancoi/sai/workshop
Alexandre R.J. François, SAI: Architecting Distributed Asynchronous Software Systems, IMSC Technical Report IMSC-05-003, University of Southern California, Los Angeles, September 2005. [pdf] [BibRef]
Alexandre R.J. François, "A Hybrid Architectural Style for Distributed Parallel Processing of Generic Data Streams," Proceedings of the International Conference on Software Engineering, pp. 367-376, Edinburgh, Scotland, UK, May 2004. [pdf] [BibRef]
Alexandre R.J. François, Software Architecture for Immersipresence, IMSC Technical Report IMSC-03-001, University of Southern California, Los Angeles, December 2003. [pdf] [BibRef]
Alexandre R.J. François and Gérard G. Medioni, "A Modular Middleware Flow Scheduling Framework," Proceedings of ACM Multimedia 2000, Los Angeles, CA, November 2000, pp. 371-374. [pdf] [BibRef]
Alexandre R. J. François, Elaine Chew and Dennis Thurmond, "Visual Feedback in Performer-Machine Interaction for Musical Improvisation," to appear in Proceedings of the International Conference on New Interfaces for Musical Expression, New York, NY, USA, June 2007. [pdf][BibRef]
Elaine Chew and Alexandre R. J. François, "Visible Humour - Seeing P.D.Q. Bach's Musical Humor in The Short Tempered Clavier on the Spiral Array Space," to appear in Proceedings of the International Conference on Mathematics and Computation in Music , Berlin, Germany, May 2007. [Abstract and pdf]
Elaine Chew, Jie Liu and Alexandre R. J. François, "ESP: Roadmaps as Constructed Interpretations and Guides to Expressive Performance," Proceedings of the ACM Multimedia Workshop on Audio and Music Computing, Santa Barbara, CA, USA, October 2006. [Abstract and pdf]
Jie Liu, Elaine Chew and Alexandre R. J. François, "From Driving to Expressive Music Performance: Ensuring Tempo Smoothness," Proceedings of the ACM SIGCHI International Conference on Advances in Computer Entertainment Technology (ACE), Hollywood, CA, USA, June 2006. [Abstract and pdf]
Alexandre R. J. François and Elaine Chew, "An Architectural Framework for Interactive Music Systems," Proceedings of the International Conference on New Interfaces for Musical Expression, pp. 150-155, Paris, France, June 2006. [pdf][BibRef]
Elaine Chew and Alexandre R. J. François, "Interactive multi-scale visualizations of tonal evolution in MuSA.RT Opus 2," ACM Computers in Entertainment Special Issue on Music Visualization, vol. 3, no. 4, October-December 2005, 16 pages. [ACM Digital Library]
Elaine Chew, Alexandre R. J. François, Jie Liu and Aaron Yang, "ESP: A Driving Interface for Expression Synthesis," Proceedings of the International Conference on New Interfaces for Musical Expression, Vancouver, B.C., Canada, May 2005. [Abstract and pdf]
Elaine Chew and Alexandre R.J. François, "MuSA.RT : Music on the Spiral Array . Real-Time," Proceedings of the ACM Multimedia 2003, Berkeley, CA, Nov 2-8, 2003. [Abstract, pdf and BibRef]
Alexandre R.J. François and Elaine Kang, "A Handheld Mirror Simulation," Proceedings of the IEEE International Conference on Multimedia and Expo, vol. II, pp. 745-748, Baltimore, MD, July 2003. [pdf] [BibRef]
Alexandre R.J. François, "Components for Immersion," Proceedings of the IEEE International Conference on Multimedia and Expo, Lausanne, Switzerland, August 2002. [pdf] [BibRef]
Alexandre R.J. François, Elaine Kang and Umberto Malesci, "A Handheld Virtual Mirror," SIGGRAPH Conference Abstracts and Applications proceedings, p.140, San Antonio, TX, July 2002. [see conference paper] [pdf] [BibRef]
Gérard G. Medioni, Alexandre R.J. François, Matheen Siddiqui, Kwangsu Kim and Hosub Yoon, "Robust Real-Time Vision for a Personal Service Robot," to appear, Computer Vision and Image Understanding, special issue on Human-Computer Interaction. [doi] [BibRef]
Alexandre R.J. François and Gérard G. Medioni, A Vision System for Personal Service Robots: Resilient Detection and Tracking of People, Computer Science Technical Report 06-880, University of Southern California, Los Angeles, June 2006. [pdf] [BibRef]
Alexandre R.J. François, "Software Architecture for Computer Vision," Emerging Topics in Computer Vision, G.Medioni and S.B. Kang Eds., Prentice Hall, 2004, pp. 585-654.
Alexandre R.J. François, CAMSHIFT Tracker Design Experiments with Intel OpenCV and SAI, IRIS Technical Report IRIS-04-423, University of Southern California, Los Angeles, July 2004. [pdf] [BibRef]
Alexandre R.J. François, Real-Time Multi-Resolution Blob Tracking, IRIS Technical Report IRIS-04-422, University of Southern California, Los Angeles, April 2004. [pdf] [BibRef]
Alexandre R.J. François, Software Architecture for Computer Vision: Beyond Pipes and Filters, IRIS Technical Report IRIS-03-420, University of Southern California, Los Angeles, July 2003. [pdf] [BibRef]
Alexandre R.J. François and Gérard G. Medioni, "A Modular Software Architecture for Real-Time Video Processing," Proceedings of the International Workshop on Computer Vision Systems, Vancouver, B.C., Canada, July 2001, pp. 35-49. [pdf] [BibRef]
This research was funded in part by the Integrated Media Systems Center, a National Science Foundation Engineering Research Center, Cooperative Agreement No. EEC-9529152. Any opinions, findings and conclusions or recommendations expressed in this material are those of the author and do not necessarily reflect those of the National Science Fundation.