130 likes | 507 Views
A component- and message-based architectural style for GUI software. Richard N. Taylor et al. IEEE Transactions on Software Engineering, Vol.22, No.6, June 1996 Presented by Leonardo Salayandia Software Architecture Class. Overview. Introduction The C2 architectural style Example (KLAX)
E N D
A component- and message-based architectural style for GUI software Richard N. Taylor et al. IEEE Transactions on Software Engineering, Vol.22, No.6, June 1996 Presented by Leonardo Salayandia Software Architecture Class CS 5381 - Topics in Software Design: Software Architecture
Overview • Introduction • The C2 architectural style • Example (KLAX) • The Argo design environment • Related work CS 5381 - Topics in Software Design: Software Architecture
Introduction (1/2) • Architectural styles are key design idioms • pipe-and-filter • blackboard • Styles typically used in user interface software • Client-server style (e.g., X-Windows) • Call-back style • Model-View-Controller style • Arch style • C2 is another (C2 from Chiron-2) “Network of concurrent components hooked together by message routing devices.” CS 5381 - Topics in Software Design: Software Architecture
Introduction (2/2) • Motivation for C2 style • Support component-based software development • Extend UI code reuse beyond toolkit code • Support multi-lingual programming • Support distributed, heterogeneous environments • Support dynamic architectural changes • Others CS 5381 - Topics in Software Design: Software Architecture
The C2 architectural style (1/6) • The internal architecture of a C2 component Receives notifications and send requests Determines requests that can be received and notifications that can be sent Mapping between component’s internal semantic domain and that of the connector above • react to a notification • execute a request received • maintain some constraint Send notifications Receive requests CS 5381 - Topics in Software Design: Software Architecture
The C2 architectural style (2/6) • Notifications and requests • Asynchronous communication via messages • Notification: Report state changes (e.g., routine that was invoked, parameters, and return value) • Request: Invoke desired functionality from another component Send notification Receive requests Receive notification Send requests CS 5381 - Topics in Software Design: Software Architecture
The C2 architectural style (3/6) • Connectors • Bind components together • Connected to components and other connectors • Routing and broadcast of messages • Message filtering • No filtering • Notification filtering • Prioritized • Message sink CS 5381 - Topics in Software Design: Software Architecture
The C2 architectural style (4/6) • Architecture composition and properties Requests that a component accepts one-to-one OR one-to-many Connector domains defined in terms of domains from connected components along with connector’s filter Pair wise relationships between connected components and connectors CS 5381 - Topics in Software Design: Software Architecture
The C2 architectural style (5/6) • Domain translation • Transformation of requests issued by a component into domain of recipient • Transformations of notifications received by a component into its domain • Simple domain translations • Message name matching • Parameter matching • May be automatically generated for some cases • Other factors in domain translation • Differences in state notified and state expected • Missing parameters • Unit conversions • Tradeoff between communication efficiency and component reusability CS 5381 - Topics in Software Design: Software Architecture
The C2 architectural style (6/6) • Principles • Substrate independence • Message-based communication • Multi-threaded • No assumption of shared address space • Multiple programming languages • Heterogeneous environments • Implementation separate from architecture CS 5381 - Topics in Software Design: Software Architecture
Example • KLAXTM • Multiple implements • Single process • Multi-threaded • Multi-process • Components not changed • Multi-lingual (C++ and Ada) • Components swapped • Performance issues not noticeable State Game logic Abstract graphics Layout manager Graphics binding CS 5381 - Topics in Software Design: Software Architecture
The Argo design environment • Graphical design environment • White rectangles represent components • Black bars represent connectors • Arcs represent pathways • Ovals in rectangles represent ports • Conceptual arch VS Implementation arch • Collaboration: design critics • Some code generation (C++) • Architecture analysis (pro-active design critics) CS 5381 - Topics in Software Design: Software Architecture
Related work • Implicit invocation • Messages and message mechanisms • Layered systems • Language and process support • Component interoperability models • Design environments • Relating C2 concepts to OO types CS 5381 - Topics in Software Design: Software Architecture