COTS Challenges for Embedded Systems - PowerPoint PPT Presentation

About This Presentation
Title:

COTS Challenges for Embedded Systems

Description:

E81 CSE 532S: Advanced Multi-Paradigm Software Development. Christopher D. Gill, Ryan Cooper, Gene Tien. Department of Computer Science and Engineering ... – PowerPoint PPT presentation

Number of Views:58
Avg rating:3.0/5.0
Slides: 13
Provided by: dsch7
Learn more at: https://www.cs.wustl.edu
Category:

less

Transcript and Presenter's Notes

Title: COTS Challenges for Embedded Systems


1
E81 CSE 532S Advanced Multi-Paradigm Software
Development
Wrapper Façade Pattern
Chris Gill, Ryan Cooper, Gene Tien Department of
Computer Science and Engineering Washington
University, St. Louis cdgill_at_cse.wustl.edu
2
Continued Reading Assignment
  • CNPv1 Chapter 3
  • Optional POSA 2 pp. 47-74

3
Wrapper Facade
  • Encapsulates functions and data
  • Adapts existing procedural APIs
  • Offers better interfaces
  • Concise, maintainable
  • Robust, portable
  • Cohesive, object-oriented

ACE_IPC_SAP
ACE_SOCK
ACE_SPIPE
ACE_SOCK_Stream
ACE_SOCK_Dgram
4
Wrapper Façade Intent Why?
  • To protect the application programmer from
    worrying about platform-specific APIs
  •  To simplify use of the APIs (less
    tedious/error-prone)
  • To do this while paying only a small
    performance cost
  •  Other related patterns have different intents
  • Façade
  • Decorator
  • Bridge
  • Adapter

5
Wrapper Façade Context When?
  • When extensibility can be achieved at a suitably
    low cost (vs. direct use of API)
  • When extensibility is more important than
    performance improvements
  • Other design patterns can give even more
    significant flexibility improvements, but the
    performance costs often increase as well
  • E.g., the Extension Interface pattern

6
Wrapper Façade Context Where?
ACE_INLINE ACE_thread_t ACE_OSthr_self
(void) // ACE_OS_TRACE ("ACE_OSthr_self")
if defined (ACE_HAS_THREADS) if defined
(ACE_HAS_PTHREADS) // Note, don't use "" here
since the // following call is often a macro.
ACE_OSCALL_RETURN (pthread_self (), int, -1)
elif defined (ACE_HAS_STHREADS)
ACE_OSCALL_RETURN (thr_self (), int, -1)
elif defined (ACE_HAS_WTHREADS) return
GetCurrentThreadId () elif defined
(ACE_PSOS) // there does not appear to be a way
to get // a task's name other than at creation
return 0 elif defined (VXWORKS) return
taskName (taskIdSelf ()) endif /
ACE_HAS_STHREADS / else return 1 // Might as
well make it the first thread -) endif /
ACE_HAS_THREADS /
  • Most commonly used with networking, threading,
    and other low-level APIs

7
Wrapper Façade Implementation How? (from POSA2)
  • Identify cohesive abstractions and relationships
    among low level APIs
  • E.g., Every IPC SAP has a handle and every
    socket is an IPC SAP, but not every IPC SAP is a
    socket.

8
Wrapper Façade Implementation, cont.
2. Cluster cohesive groups of functions into
wrapper façade classes and methods 2.1 -
Create cohesive classes 2.2 - Coalesce multiple
individual functions into a single method (e.g.,
bind/listen) 2.3 - Automate creation and
destruction 2.4 - Select level of
indirection 2.5 - Determine where to
encapsulate platform-specifics
9
Wrapper Façade Implementation, cont.
  • 3. Consider allowing selective access to some
    implementation details, e.g., ACE_IPC_SAPget_han
    dle() is a controlled violation of
    encapsulation.
  • 4. Develop error handling (language support for
    features such as exceptions may matter)
  • 5. Define related helper classes

10
Example Thread Management
  •  Thread_Mutex, Thread_Condition, Thread_Manager
  •  Automatic creation, initialization and
    destruction
  •  Extensible templates parameterized by mutex
    types

11
Common Problems and Issues
  • Exceptions
  • Language support
  • Different ways of handling
  • Resource management (e.g., memory leaks in C)
  • Overhead
  • Loss of functionality
  • Poor cross-language support
  • Performance costs relative to application needs

12
For Discussion
  •  What problem is addressed by the Wrapper Façade
    pattern?
  • Compare and contrast socket programming code
    with and without ACE.
  •  How can wrapper façade increase type safety? At
    the same time, how can it increase type
    compatibility?
Write a Comment
User Comments (0)
About PowerShow.com