Overview » History » Version 10

« Previous - Version 10/24 (diff) - Next » - Current version
J. Wienke, 06/10/2011 05:39 PM


Overview

Problem statement

  • easier integration of complex (partially) distributed systems required
    • in-house (one middleware)
    • adaption (combination with other middlewares)
  • targeting at technical architecture (only supporting functional concepts)
  • performance requirements
  • platform requirements
  • programming language requirements
  • basis for describing and analyzing systems required
  • open architecture
    • specifications for data format and transport protocols

Sebastian's Aims

  • XCF support ends
    • better solution required

Lessons learned (also from other frameworks)

XCF:
  • identified problems:
    • Footprint too large for embedded systems
    • Architectural erosion
    • Unmaintainable code base
  • lessons learned:
    • layered architecture with improved functional decomposition in distinct libraries, layers:
      • core (bus realization across different transports)
      • tools
      • xml compatibility layer
      • XCF API adapters
  • clear dependency statements:
    • core must survive with the least amount of external libraries

Functional properties:

  • Event-driven middleware with broadcast semantics
    • Additional patterns implemented on top of this base functionality
  • logically unified bus across multiple transports
    • currently a spread-based and an in-process transport are available
    • extensible to other transports -> compatibility to existing frameworks
  • Bus is structured by hierarchical channels
    • / receives all messages of sub-scopes like /a/test

Non-functional properties:

  • lightweight:
    • small dependency footprint for the core layer
    • Targeting at embedded systems (e.g. Nao)
  • Languages: cpp, java, python, common lisp
    • real implementations, no bindings to provide natural interfaces in each language
  • No single wire type like XML:

Planned functionality:

  • naming and discovery
  • introspection tools
  • model-based setup