Prism - Middleware for Mobile and Embedded Systems

Welcome to the Prism-MW homepage. PrismMW is an extensible middleware platform that enables efficient implementation, deployment, and execution of distributed software systems in terms of their architectural elements: components, connectors, configurations, and events.

Benefits

Prism-MW is a middleware targeted at applications in highly distributed, resource constrained, heterogeneous, and mobile settings. The key properties of Prism-MW are its native, and flexible, support for architectural abstractions (including architectural styles), efficiency, scalability, and extensibility. These properties are enabled by Prism-MW’s extensive separation of concerns that spans several dimensions:

  • By adopting an explicit architectural perspective, Prism-MW has inherited the separation of computation (handled by components) from interaction (handled by ports and connectors) intrinsic to software architectures.
  • By providing a simple mechanism for supporting multiple architectural styles (possibly in a single application), Prism-MW allows system developers to separate cleanly a system’s design from its implementation; Prism-MW’s style extensions automatically ensure all relevant architectural relationships and properties.
  • Prism-MW’s extensive use of abstract classes and interfaces, as well as minimized dependencies among its classes, allow tailoring implementation-level concerns (e.g., the ability to select different schedulers independently of dispatchers or to compose distribution, XML encoding, and compression facilities for network-based interactions).
  • Finally, Prism-MW completely separates an application’s conceptual architecture from its realization. For example, each component in an architecture may be implemented in multiple PLs; those implementations are fully interchangeable if ExtensiblePorts with the appropriate implementations of the AbstractXMLConversion class are used.

Design

Prism-MW Class Diagram

UML Class Diagram of PrismMW. Middleware core classes are in gray and dark gray.

A distributed system implemented in Prism-MW consists of a number of Architecture objects, each of which serves as a container for a single subsystem and delimits an address space. Components within and across the different Architecture objects interact by exchanging Events. The default implementation of Prism-MW uses a circular array for storing all events in a single address space. This allowed us to optimize event processing by introducing a pool of shepherd threads to handle events sent by any component in a given address space. The size of the thread pool is adjustable. Since the event queue is of a fixed size (determined at system construction-time), we also use a producer-consumer algorithm to keep event production under control and supply shepherd threads with a constant stream of events to process.

Downloads

The following versions of Prism-MW run on JVM 1.4.1 or higher.

Download Prism-MW Java Lite 1.0.1

Prism-MW Lite is a minimal subset of Prism-MW, intended for use in academic courses.

The following versions of Prism-MW run on JVM 1.1.8 or higher and on Pocket PC handheld devices running the Jeode Runtime virtual machine.

Download Prism-MW Java 2.1

Prism-MW 2.1 is the first version of Prism-MW that supports multiple styles.

Download Prism-MW Java 2.0

Includes the following packages:

Prism.core package contains the classes from the middleware core.
Prism.extensions.comp contains the ExtensibleComponent class and its extensions.
Prism.extensions.conn contains the ExtensibleConnector class and its extensions.
Prism.extensions.evt contains the ExtensibleEvent class and its extensions.
Prism.extensions.port contains the ExtensiblePort class and its extensions.
Prism.handler contains event handler classes.
Prism.util contains several helper classes needed by other packages.
Prism.test contains several sample test application.

Download Prism-MW Java 2.0 Security Extension

Includes the following packages:

Prism.extensions.port.security package contains security extension.

Download Prism-MW Java 1.0

Includes the following packages:

Prism.framework package contains the classes from the middleware core.
Prism.conn.distribution package contains border connectors used in communication across machine boundaries.
Prism.util contains several helper classes needed by other packages.
Prism.test contains a sample test application.

The following versions of Prism-MW run on Microsoft Embedded Visual C++ and Windows CE.

The framework is available as source code or as a dynamic link library which can be easily linked with an application. The link library is named FWDLL. The source code includes sample test applications.

Download Prism-MW C++ 1.0 Source

Download Prism-MW C++ 1.0 Library

Documentation

Prism-MW Lite 1.0 Documentation

The Javadocs for Prism-MW Lite 1.0

Prism-MW 2.1 Documentation

The Javadocs for Prism-MW 2.1.

Prism-MW 1.0 Documentation

The Javadocs for Prism-MW 1.0.

Technical Papers

Marija Mikic-Rakic, Sam Malek, and Nenad Medvidovic. "Architecture-Driven Software Mobility in Support of QoS Requirements." In proceedings of the International Workshop on Software Architectures and Mobility (SAM), Leipzig, Germany, May 2008.

George Edwards, Chiyoung Seo, Daniel Popescu, Sam malek, and Nenad Medvidovic. "Self-* Software Architectures and Component Middleware in Pervasive Environments." In proceedings of the 5th International Workshop on Middleware for Pervasive and Ad-Hoc Computing (MPAC 2007), Newport Beach, Orange County, California, November 2007.

Sam Malek, Chiyoung Seo, Sharmila Ravula, Brad Petrus, and Nenad Medvidovic. "Reconceptualizing a Family of Heterogeneous Embedded Systems via Explicit Architectural Support." In proceedings of the 29th International Conference on Software Engineering (ICSE 2007), Minneapolis, Minnesota, May 2007 .

Chiyoung Seo, Sam Malek, George Edwards, Nenad Medvidovic, Brad Petrus, and Sharmila Ravula. "Exploring the Role of Software Architecture in Dynamic and Fault Tolerant Pervasive Systems." In proceedings of the Workshop on Software Engineering of Pervasive Computing Applications, Systems and Environments (SEPCASE 07), Minneapolis, MN, May 2007.

Sam Malek, Chiyoung Seo, and Nenad Medvidovic. "Tailoring an Architectural Middleware Platform to a Heterogeneous Embedded Environment." In proceedings of the 6th International Workshop on Software Engineering and Middleware (SEM 2006), Portland, Oregon, November 2006.

Sam Malek, Chiyoung Seo, Sharmila Ravula, Brad Petrus, and Nenad Medvidovic. "Providing Middleware-Level Facilities to Support Architecture-Based Development of Software Systems in Pervasive Environments." In proceedings of the 4th International Workshop on Middleware for Pervasive and Ad-Hoc Computing (MPAC 2006), Melbourne, Australia, November 2006.

Sam Malek, Marija Mikic-Rakic, and Nenad Medvidovic. "A Style-Aware Architectural Middleware for Resource Constrained, Distributed Systems." IEEE Transactions on Software Engineering, vol. 31, no. 3, March 2005.

Marija Mikic-Rakic, Sam Malek, Nels Beckman, and Nenad Medvidovic. "Improving Availability of Distributed Event-Based Systems via Run-Time Monitoring and Analysis." Proceedings of Twin Workshops on Architecting Dependable Systems (WADS 2004), Edinburgh, UK, May 25, 2004 and Florence, Italy, June 30, 2004. (pdf)

Marija Mikic-Rakic and Nenad Medvidovic. "Software Architectural Support for Disconnected Operation in Highly Distributed Environments." Proceedings of the 7th International Symposium on Component Based Software Engineering (CBSE-7), Edinburgh, UK, May 24-25, 2004. (pdf)

Marija Mikic-Rakic, Sam Malek, Nels Beckman, and Nenad Medvidovic. "A Tailorable Environment for Assessing the Quality of Deployment Architectures in Highly Distributed Settings." Proceedings of the 2nd International Working Conference on Component Deployment (CD 2004), Edinburgh, UK, May 20-21, 2004. (pdf)

Marija Mikic-Rakic and Nenad Medvidovic. "Support for Disconnected Operation via Architectural Self-Reconfiguration." Proceedings of the First International Conference on Autonomic Computing (ICAC-04), New York, NY, May 17-18, 2004. (pdf)

Nenad Medvidovic, Sam Malek, and Marija Mikic-Rakic. "Software Architectures and Embedded Systems." Proceedings of the Monterey Workshop on Software Engineering for Embedded Systems (SEES 2003), pages 65-71, Chicago, IL, September 24-26, 2003. (pdf)

N. Medvidovic, M. Mikic-Rakic, N. R. Mehta, S. Malek. "Software Architectural Support for Handheld Computing" IEEE Computer, special issue on handheld computing, September 2003. (pdf)

M. Mikic-Rakic, N. Medvidovic. "Adaptable Architectural Middleware for Programming-in-the-Small-and-Many". ACM/IFIP/USENIX International Middleware Conference, Rio de Janeiro, Brazil, June 2003. (pdf)

M. Mikic-Rakic, N. Medvidovic. "Architecture-Level Support for Software Component Deployment in Resource Constrained Environments". First International IFIP/ACM Working Conference on Component Deployment. Berlin, Germany, June 2002. (pdf)

N. Medvidovic, M. Mikic-Rakic. "Programming-in-the-Many: A Software Engineering Paradigm for the 21st Century." Workshop on New Visions for Software Design and Productivity: Research and Applications, Nashville, Tennessee, December 2001. (pdf)

N. Medvidovic, M. Mikic-Rakic. "Architectural Support for Programming-in-the-Many." Submitted. Available as Technical Report, USC-CSE-2001-506, University of Southern California, October 2001. (pdf)

CONTACT
Nenad Medvidovic
941 W. 37th Place
University of Southern California
Los Angeles, CA 90089
Office: SAL 338
Phone: 213-740-5579
Email: neno@usc.edu


DOWNLOADS
Prism-MW Lite 1.0
Prism-MW C++ 1.0
Prism-MW Java 2.1
Prism-MW Java 2.0
Prism-MW Java 2.0 Security Extension
Prism-MW Java 1.0


DOCUMENTATION
Prism-MW Lite 1.0
Prism-MW Java 2.1
Prism-MW Java 1.0


TECHNICAL PAPERS