Adaptive Communication Environment
Encyclopedia
The Adaptive Communication Environment (often referred to as ACE) is an open-source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 framework
Software framework
In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...

 used to simplify various aspects of network programming. It provides a set of high performance object-oriented
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...

 C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

 class
Class (computer science)
In object-oriented programming, a class is a construct that is used as a blueprint to create instances of itself – referred to as class instances, class objects, instance objects or simply objects. A class defines constituent members which enable these class instances to have state and behavior...

es designed to help address the inherent complexities and challenges in network programming by preventing common errors.

History

ACE was initially developed by Douglas C. Schmidt
Douglas C. Schmidt
Douglas C. Schmidt is a computer scientist and author known for his works in the fields of object-oriented programming, distributed computing and design patterns. Currently he is working as Associate Chair of Computer Science and Engineering and Professor of Computer Science in Vanderbilt University...

 during his graduate work at the University of California, Irvine
University of California, Irvine
The University of California, Irvine , founded in 1965, is one of the ten campuses of the University of California, located in Irvine, California, USA...

. Development followed him to the Washington University in St. Louis where he was employed. It was there in the Distributed Object Computer (DOC) group where ACE was released as open source. Today, most of the development work on ACE continues as part of the Institute for Software Integrated Systems (ISIS) at Vanderbilt University
Vanderbilt University
Vanderbilt University is a private research university located in Nashville, Tennessee, United States. Founded in 1873, the university is named for shipping and rail magnate "Commodore" Cornelius Vanderbilt, who provided Vanderbilt its initial $1 million endowment despite having never been to the...

.

Features

ACE provides a standardized usage for operating system/machine specific features. It provides common data types and methods to access the powerful but complex features of modern operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

s. These include: inter-process communication
Inter-process communication
In computing, Inter-process communication is a set of methods for the exchange of data among multiple threads in one or more processes. Processes may be running on one or more computers connected by a network. IPC methods are divided into methods for message passing, synchronization, shared...

, thread
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...

 management, efficient memory management
Memory management
Memory management is the act of managing computer memory. The essential requirement of memory management is to provide ways to dynamically allocate portions of memory to programs at their request, and freeing it for reuse when no longer needed. This is critical to the computer system.Several...

, etc.

It was designed to be portable and provides a common framework. The same code will work on most Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...

es, Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

, VxWorks
VxWorks
VxWorks is a real-time operating system developed as proprietary software by Wind River Systems of Alameda, California, USA. First released in 1987, VxWorks is designed for use in embedded systems.- History :...

, QNX
QNX
QNX is a commercial Unix-like real-time operating system, aimed primarily at the embedded systems market. The product was originally developed by Canadian company, QNX Software Systems, which was later acquired by Canadian BlackBerry-producer Research In Motion.-Description:As a microkernel-based...

, OpenVMS
OpenVMS
OpenVMS , previously known as VAX-11/VMS, VAX/VMS or VMS, is a computer server operating system that runs on VAX, Alpha and Itanium-based families of computers. Contrary to what its name suggests, OpenVMS is not open source software; however, the source listings are available for purchase...

 etc, with minimal changes. Due to this cross-platform
Cross-platform
In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms...

 support, it has been widely used in the development of communication software
Communication software
Communication software is used to provide remote access to systems and exchange files and messages in text, audio and/or video formats between different computers or user IDs...

. Some of the successful projects that have used ACE includes: Motorola
Motorola
Motorola, Inc. was an American multinational telecommunications company based in Schaumburg, Illinois, which was eventually divided into two independent public companies, Motorola Mobility and Motorola Solutions on January 4, 2011, after losing $4.3 billion from 2007 to 2009...

 Iridium
Iridium (satellite)
Iridium Communications Inc. is a company, based in McLean, VA, United States which operates the Iridium satellite constellation, a system of 66 active satellites used for worldwide voice and data communication from hand-held satellite phones and other transceiver units...

 satellites, Boeing Wedgetail
Boeing Wedgetail
The Boeing 737 AEW&C is a twin-engine airborne early warning and control aircraft. It is lighter than the 707-based Boeing E-3 Sentry, and mounts a fixed, electronically scanned, rather than a rotating, radar antenna. It was designed for the Royal Australian Air Force under "Project Wedgetail"...

's Australian airborne early warning & control (AEW&C) system, and others.

Design patterns

One of the unique features of ACE is the extensive use of design patterns in addressing the complexity of software. The ACE framework utilizes the following design patterns:

Event handling patterns:
  • reactor
    Reactor pattern
    The reactor design pattern is an event handling pattern for handling service requests delivered concurrently to a service handler by one or more inputs...

  • Acceptor-connector
  • proactor
    Proactor pattern
    Proactor is a software design pattern for Event handling in which long running activities are running in an asynchronous part. A Completion Handler is called after the asynchronous part has terminated....

  • Asynchronous completion token


Synchronization patterns:
  • Scoped locking
  • Strategized locking
  • Thread-safe interface
  • Double-checked locking optimization


Concurrency patterns:
  • Thread-specific storage
  • monitor object
    Monitor (synchronization)
    In concurrent programming, a monitor is an object or module intended to be used safely by more than one thread. The defining characteristic of a monitor is that its methods are executed with mutual exclusion. That is, at each point in time, at most one thread may be executing any of its methods...

  • Active object
    Active Object
    The active object design pattern decouples method execution from method invocation that reside in their own thread of control. The goal is to introduce concurrency, by using asynchronous method invocation and a scheduler for handling requests....

  • Half-synch/half-asynch
  • Leader/follower


service access and configuration patterns:
  • Component configurator
  • Interceptor
  • Extension interface
  • Wrapper facade

See also

  • TAO
    TAO (software)
    The ACE ORB is a freely available, open-source, and standards-compliant real-time C++ implementation of CORBA based upon the Adaptive Communication Environment . It attempts to provide efficient, predictable, and scalable quality of service end-to-end...

     (component-integrated ACE ORB
    Component-Integrated ACE ORB
    The component-integrated ACE ORB is a CORBA component model implementation built on top of TAO.CIAO is currently aiming to provide component-oriented paradigm to the distributed, real-time, embedded system developers by abstracting DRE-critical systemic aspects, such as QoS requirements, RT...

     a CORBA
    Çorba
    Chorba , ciorbă , shurpa , shorpo , or sorpa is one of various kinds of soup or stew found in national cuisines across Middle East...

     implementation)
  • CIAO
    Component-Integrated ACE ORB
    The component-integrated ACE ORB is a CORBA component model implementation built on top of TAO.CIAO is currently aiming to provide component-oriented paradigm to the distributed, real-time, embedded system developers by abstracting DRE-critical systemic aspects, such as QoS requirements, RT...

  • Communication software
    Communication software
    Communication software is used to provide remote access to systems and exchange files and messages in text, audio and/or video formats between different computers or user IDs...

  • Cross-platform support middleware
    Cross-Platform Support Middleware
    A cross-platform support middleware is a software abstraction layer that guarantees the existence, and correct implementation, of a set of services on top a set of platforms.-Formal model:Formally, a CPSM can be represented by the following model:...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK