Home|News blank.gif
When Design Matters CoreLinux++ CoreLinux Consortium
blank.gif
CoreLinux++
blank.gif
Goals
blank.gif
Developer's Corner
blank.gif
Contacts
Library Loader

CoreLinux++ Functional Requirement Document
Revision $Revision: 1.2 $
Last Modified : $Date: 2000/07/26 14:06:07 $

Title : Library Loader

Requirement ID: 4865
Analysis References: Use Case Report, Analysis Diagrams
Design References: Class Report, Design Diagrams
Cross References:

1. Introduction

Linux provides the ability to dynamically load shared libraries. Dynamically loaded shared libraries offer the developer the advantage of defering the linking of funtions until which time they are needed. By creating libraries with a dynamically shareable attribute, the packager enables this capability.

1.1 Deliverables Overview

The participants in the Library Loader pattern include:

Library
A Library is a container of LibraryObjects, and declares the factory interfaces for access.
LibraryObject
A LibraryObject is an entity of the Library.

CoreLinux++ team will provide FunctionLibrary and ExecutableLibraryObject types to facilitate dynamic shared library function execution..

2. Functional Requirements

The Library requirements:

  1. Library shall support the registration/deregistration of library loaders specific to a library type

  2. The CoreLinux++ team shall implement a default shared library (*.so) loader for registration

  3. The CoreLinux++ team shall implement the default library handler using the Linux dlopen dlsym dlclose API.

  4. Library shall support the loading of a library

  5. If a library is not resolvable, a LibraryLoadException shall be thrown

  6. If a library is resolvable, the loader shall provide a LibraryInstance object for that type of library

  7. The loader shall cache the library instance for subsequent reuse

  8. Library shall support the unloading of a library

  9. Upon the last shared library instance reference, the loader shall remove the LibraryInstance from memory

The LibraryInstance requirements:

  1. The LibraryInstance shall resolve requests for LibraryObjects

  2. If a LibraryObject is not resolvable, a LibraryObjectException shall be thrown.

The LibraryObject requirements:

  1. The LibraryObject shall provide common type for library object instances.

The ExecutionObject requirements:

  1. The CoreLinux++ team shall implement a ExecutionObject class which is a LibraryObject type.

2.1 User Interface Specifications

Domain defined

2.2 Product Services

Domain defined

2.3 External Interfaces and Database Requirements

Domain defined

2.4 Error Handling

Domain defined

2.5 Foreseeable Functional Changes and Enhancements

It is foreseeable that this pattern will be used to extend the definition of Library and LibraryObject types so that other loaders may be used in the framework or application domain. For this reason, the CoreLinux++ team will abstract a reasoning system for supporting heterogenous types and libraries.

3. Non-Functional Requirements

Precondition constraints: None

Postcondition constraints: None

Invarient constraints: None

3.1 Performance Requirements

NA

3.2 User Documentation and Other User Aids

This Document

Analysis Use-Case diagrams

Design class diagrams

3.3 Development Requirements

Standards: CoreLinux++ C++ Standards and Guidelines

3.4 Foreseeable Non-Functional Changes

NA

4. Remarks and Guidelines for Later Life Cycle Phases

TBD

5. Term Glossary

TBD


Copyright © 1999, 2000 by CoreLinux Consortium
This material may be distributed only subject to the terms and conditions set forth in the Open Publication License
Contacts
- contact the webmaster
News
Powered / Hosted by

SourceForge.net
Contributor
NoMagic, inc.
thanks Gary!
Cool OO Sites
cetus
corba
omg
patterns
  Made with xemacs / php Comments to webmaster blank.gif