Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "1/18/2000STScI Software Workshop 20001 Object-oriented Design Elements of the OPUS Application Programming Interface Data Processing Team."— Presentation transcript:

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

2 1/18/2000STScI Software Workshop 20002 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. OPUS Process Step 1 Process Step 1 Process Step 4 Process Step 2 Process Step 3 Process Step 3

3 1/18/2000STScI Software Workshop 20003 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 stampprocessing statedataset name class ID cmd.

4 1/18/2000STScI Software Workshop 20004 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.

5 1/18/2000STScI Software Workshop 20005 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.

6 1/18/2000STScI Software Workshop 20006 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 virtual void a() = 0; virtual void b() = 0; File_osf_bb Blackboard Osf_bb Db_osf_bbNet_osf_bb Osf_bb* virtual void c() = 0; virtual void d() = 0; void a(); void b(); void c(); void d();

7 1/18/2000STScI Software Workshop 20007 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.

8 1/18/2000STScI Software Workshop 20008 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, …


Download ppt "1/18/2000STScI Software Workshop 20001 Object-oriented Design Elements of the OPUS Application Programming Interface Data Processing Team."

Similar presentations


Ads by Google