##############################################################
# Name: /home/users/otso/official/otso/docs/SCCS/s.READ-ME-FIRST
# Vers: 5.1    Time: 92/07/09, 10:37:24
##############################################################


NOTICE, DISCLAIMER AND CONDITIONS OF USE


Copyright (c) 1992      Technical Research Centre of Finland (VTT)

Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided
that this notice and the reference to this notice appearing in each software
module be retained unaltered, and that the name of any contributors shall not
be used in advertising or publicity pertaining to distribution of the software
without specific written prior permission.  No contributor makes any
representations about the suitability of this software for any purpose.
It is provided "as is" without any express or limited warranty.

		NO WARRANTY

ALL CONTRIBUTORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTIBILITY
AND FITNESS.  IN NO EVENT SHALL ANY CONTRIBUTOR BE LIABLE FOR ANY
SPECIAL, PUNITIVE, INDIRECT OR CONSEQUENTIAL DAMAGES OR DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA, GOODWILL, PROFITS,
USE OF MONEY OR LICENSED SOFTWARE, INTERRUPTION IN USE OR
AVAILABILITY OF DATA OR LICENSED SOFTWARE, STOPPAGE OF
TELECOMMUNICATIONS TRAFFIC, OTHER WORK OR IMPAIRMENT OF OTHER
ASSETS, WHETHER IN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
INABILITY TO USE OR PERFORMANCE OF THIS SOFTWARE.  THE ENTIRE
RISK AS TO THE QUALITY AND PERFORMANCE OF THIS SOFTWARE IS WITH
YOU.  SHOULD THIS SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST
OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

As used above, "contributor" includes, but is not limited to :
       The Technical Research Centre of Finland


OTSO 

An Object-Oriented, C++ Language Based Environment for
Development, Use, Implementation, and Interactive Testing of
Telecommunication Protocols and Distributed Applications


PREFACE

The software described herein has been developed as a research tool.  It
represents an effort to help promote use of :
- International Organization for Standardization (ISO) interpretation of
  Open Systems Interconnection (OSI),
- Object-Oriented programming, and in particular the C++ programming language.


ABSTRACT

OTSO is a model and a set of software tools for developing portable
communication protocols and distributed applications.  Specifically, it is an
environment for development, interactive testing, simulation, and execution.
OTSO is built using the principles of object-oriented (O-O) programming, on
top of the C++ programming language.  OTSO supports concurrency, asynchronous
communication, finite state automata, transparent distribution of objects, and
automatic generation of interactive user interfaces.  OTSO consists of a C++
class library, and a mini-compiler.


OVERVIEW

OTSO consists of
- A mini-compiler ("prepro") that supports :
- a small set of optional extensions to the C++ programming language
- interprets information in C++ class headers
- generation of interactive, textual interfaces for objects
- location and distribution transparency
- integrated documentation in C++ class headers
- C++ Run-time support class libraries:
- DVOPS Kernel library (Basic types (Strings, Frames, ...), Messages and 
  Message queues, Runners (threaded objects), Schedulers, Container objects 
  (FIFO, LIFO, heap, ring, priority queue, ...).
- Device library
- Environment (Portability) configuration library
- Protocol libraries
- Other

An OTSO system consists of C++ objects.  In order to cooperate, objects must 
communicate.  To prevent undesirable interference in parallel execution, the
control flow can be constrained by synchronization.  Objects that provide
services for other objects are called service providers, or servers.
Objects that use the services of other objects are service users, or clients.

The roles of objects can change dynamically, and most objects are both service
users and providers.  In OTSO, service interfaces are defined as C++ class
headers.  An OTSO system consists of objects.  These objects communicate via
messages.  Protocol objects are typically derived from the OTSO class Runner.
Runners can be given messages (to be put in an input queue for example) and
scheduled (in order to handle the messages in the queue).  Protocol objects
are also derived from the abstract protocol interfaces whose messages they
can handle.  Syntactically, communication takes place via C++ virtual function
calls.  Communication is implemented using normal C++ function calls, message
passing, or remote procedure calls.  The run-time environment takes care of
passing the messages from the sender to the receiver, and scheduling
processing time for the Runners.  

The role of the OTSO mini-compiler "prepro" is to generate code to handle
message passing, remote procedure calls, user interface, shorthand macros,
etc.  In fact, the PDU classes presented above were not generated by CLASN but
by the OTSO mini-compiler.   

As OTSO interfaces are defined using C++ abstract base class headers, the
mini-compiler takes these headers as input.  The mini-compiler also translates
the optional OTSO extensions to C++.  For example, it translates state machines
into C++ class member functions.  OTSO supports extended finite state automata
(EFSA), because they are often used for defining the behaviour of protocol
objects.  In OTSO, service interfaces are defined as C++ class headers and
virtual function declarations.  Normal C++ functions are synchronous.  The
caller of a synchronous method is blocked until the method has been executed.
OTSO extends C++ by providing asynchronous methods.  An asynchronous method
does not return any value, and the caller can continue execution before the
called function has been executed Q synchronization between the server and the
client is not necessary.  Asynchronous methods are denoted by the special OTSO
"return type" async.  The strong, static typing of C++ is preserved in 
all OTSO communication.


REVISION INFORMATION

This document (Version 5.1) and its companion documents are believed to
accurately reflect  release Version 5.1 of  OTSO as of 1 June 1992.


CONTACT INFORMATION

Comments, bug reports, fixes, user software contributions, etc. concerning
this release should be addressed to :

Internet E-mail:	OTSO-Bug@tel.vtt.fi.

Postal Address:		OTSO Development Group
			Attention: Juha Koivisto & James Reilly
			Technical Research Centre of Finland (VTT),
			Telecommunications Laboratory, P.O. Box 34,
			Otakaari 7B SF-02151 Espoo, Finland

Telephone:		+358-0-4565664 (Juha)	+358-0-4565663 (James)
Fax:			+358-0-4550115


RELEASE INFORMATION

If you'd like a copy of the release described in this document :

Internet:
If you can FTP to the Internet, you can use anonymous FTP to the host : 
tel1.tel.vtt.fi (130.188.12.3) to retrieve the file : pub/misc/otso-
small-release.tar.Z in binary mode.  This is a compressed tarfile image.
If you retrieve a copy of OTSO by FTP, please send an Internet E-mail message
to : OTSO-Interest@tel.vtt.fi.  We only look at this information internally, to 
get a rough idea of who, what, where, how many users are interested in OTSO.
It is NOT used for bug reports, joining mailing lists, or any other purposes.


MAILING LIST DISCUSSIONS

An Internet Mailing List will be maintained to allow general purpose
discussion about OTSO.  If you would like to join (or be deleted from) the
OTSO mailing list, please notify :


OTSO-Request@tel.vtt.fi.

To send messages to the Mailing List, use the Internet E-mail address :
OTSO@tel.vtt.fi.  Bug reports should NOT be sent to these addresses, but to
the address supplied in the CONTACT INFORMATION section.


ACKNOWLEDGEMENTS

OTSO research was originally funded by the TEKES Finsoft programme, and the 
Technical Research Centre of Finland during the years 1988-1991.  We are
grateful for their support.  Lappenranta University of Technology
(Lappenranta, Finland) and Nokia Telecommunications have provided valuable
feedback, fixes, support and comments for OTSO.


PRINTED DOCUMENTATION 

The following is a short list of some printed OTSO documents that are
available.

1) "OTSO User's Guide and Reference Manual"
	VTT/TEL documentation

2) "OTSO - An Object Oriented Approach to Distributed Computation",
	USENIX C++ conference - 1991 (updated for Nordic Workshop on
	Programming Environment Research - Tampere, 1992).

3) "Object Oriented Techniques in Telecommunication Systems: Experiences
    With The OTSO System"
	TINA conference 1991

4) "Object Oriented Implementation of Telecommunication Software
    Using the OTSO Environment"
	INDC-92 conference - Otaniemi, Finland

5) "Simulation Support for the OTSO Environment"
	INDC-92 conference - Otaniemi, Finland



HELP FILES

The following files provide more help with OTSO :
	- HELP
	- INSTALL-OTSO
	- INTRO-OTSO
	- PROBLEMS-OTSO
