1 / 8

Object-oriented Design Elements of the OPUS Application Programming Interface

Object-oriented Design Elements of the OPUS Application Programming Interface. Data Processing Team. DATA FLOW. Process Step 1. Process Step 2. Process Step 1. OPUS. Process Step 3. Process Step 3. Process Step 4. What Is OPUS?.

vian
Download Presentation

Object-oriented Design Elements of the OPUS Application Programming Interface

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Object-oriented Design Elements of the OPUS Application Programming Interface Data Processing Team STScI Software Workshop 2000

  2. DATA FLOW Process Step 1 Process Step 2 Process Step 1 OPUS Process Step 3 Process Step 3 Process Step 4 What Is OPUS? OPUS is a software system that marshals data flow through a pipeline of distributed processes. Each application is triggered when data are ready for it to process. A pipeline application may or may not be aware of OPUS. STScI Software Workshop 2000

  3. OPUS Blackboards • Process and data state information are stored on “blackboards” visible to each process. • The current blackboard implementation uses NFS (specifically, file names) as the blackboards. “Observation Status File”: 38289e02-cncccc_____nnv__________.o4an17blq______________-sti-111-____ time stamp processing state dataset name ID class cmd. STScI Software Workshop 2000

  4. The OPUS Application Programming Interface (OAPI) • Written in ISO/ANSI Standard C++. • Makes extensive use of the STL and templates. • Maximizes code reuse. • Exception handling. • Namespace partitioning. • Contains over 80 classes. • Object-oriented design. • Not just C compiled with a C++ compiler. • 70 classes are in 6 class hierarchies. STScI Software Workshop 2000

  5. The OPUS Application Programming Interface (OAPI) • Fully documented. • Web-based documentation is constructed from in-line source code comments. • Designed to be highly extensible, portable and flexible… • Adaptability to change with little impact on software that uses the library was a key design element. STScI Software Workshop 2000

  6. Blackboard virtual void a() = 0; virtual void b() = 0; virtual void c() = 0; virtual void d() = 0; Osf_bb* Osf_bb void a(); void b(); void c(); void d(); File_osf_bb Db_osf_bb Net_osf_bb Extensibility • Abstract base classes define the interfaces, and are used in the code to manipulate more derived types of arbitrary implementation. (inheritance + run-time polymorphism) Example: OSF Blackboard Hierarchy STScI Software Workshop 2000

  7. Portability • Recent standardization of C++ ensures portability. • OAPI available for OpenVMS Alpha, Tru64 UNIX, Solaris and Linux (Windows 2000 coming soon). • System calls adhere to the POSIX standard. • OS-specific parameters (e.g., file name syntax) are isolated in a single namespace where precompilation directives select the appropriate forms. STScI Software Workshop 2000

  8. Flexibility • Object-oriented design benefits. • Good separation of interface from implementation increases adaptability. • Enforced information hiding reduces version dependence. • Objects tend to be more reusable than functions (inheritance). • C++ benefits. • Widespread use ensures good interoperability with other languages and protocols. • Java, CORBA, … STScI Software Workshop 2000

More Related