Libraries for C++

\comment{See  [BV90].} \sli{

C++ Booch Components

[] basic collection/container abstractions\n [] template for templates\n [] tradeoff of inheritance structures {\footnotesize

Goals\n

Efficiency -- minimal runtime/memory overhead\n Ease of use -- clear and consistent organization\n Extensibility -- e.g. new storage mechanisms\n Adaptability -- local tailoring }

Scope:\n

-- like NIH Class Library \zline{ [GOP90]}\n -- not like Interviews \zline{ [LVC89]}

Support for concurrency\n

{\em \bullet multiple threads, multiprocessing } \n } \sli{

Design -- Key Abstractions

\nl {\footnotesize {\bf 1. Datastructures}: List, Set, Bag\n {\bf 2. Storage}: Un/Bounded, Managed, Controlled\n {\bf 3. Concurrency Managers}: Semaphore, Monitor\n {\bf 4. Exceptions}: Over/Underflow, Null, Position_Error\n {\bf 5. Tools}: pipes, filters, sorts, searches\nl \indent \fbox{5} -> \fbox{1} -> \fbox{2} -> \fbox{3} \nl \indent \fbox{ < DataStructure, StorageMgr, ConcurrencyMgr > } }

Inheritance {\em -- forest}

{\footnotesize [] Layered abstractions -- reuse\n [] Polymorphism -- virtual functions, redefinition\n [] Design structure -- interfaces\n [] Composition -- private use \n } } \sli{

Using type parametrization

Implementation mechanisms

\zline{\bf [reuse]}\n Classes/inheritance \xline{+} \n Templates -- type parametrization \xline{-}\n Exceptions -- uniform error reporting \xline{-}\n Task library -- concurrency control \xline{+}

Exceptions

-- in type system\n {\rm \bullet non-fatal user errors}\n {\rm \bullet fatal resource/corruption errors}

Tasking

{\em -- in C++ library} \zline{[AT\&T 2.0]}\n Assume: Semaphore, Monitor\n Forms: Concurrent, Multiple, Controlled\n Primitives: {\em Lock, Read_Lock, Write_Lock} \n }