Nemesys - Thales Opus

Download Report

Transcript Nemesys - Thales Opus

www.thalesgroup.com
Nemesys workshop
An introduction to Nemesys
By Patrick Stephens
 Thales Underwater Systems– 13 April 2015
Introduction
2 /
Agenda



Nemesys

Why do we use it?

What is it?

How does it work?

Why is it not used in GVA?
OPUS

What is it?

Comparisons with MyCCM
Questions

Handout provided

Online links also available
 Thales Underwater Systems– 13 April 2015
www.thalesgroup.com
OPUS
An overview of OPUS
By Patrick Stephens
 Thales Underwater Systems– 13 April 2015
What is OPUS?
4 /

Open Platform for (Underwater) Systems


Common middleware products


Open-source – in use by other companies
Reuse and common evolution
Toolbox approach

Only use what you need
Common middleware
Pick and choose what you want to use
 Thales Underwater Systems– 13 April 2015
www.thalesgroup.com
Nemesys
An introduction to Nemesys
By Patrick Stephens
 Thales Underwater Systems– 13 April 2015
Problems
6 /


Inconsistent interface definitions

Late detection leads to large costs

Hard to change

Defined by architect not individual engineers
Re-inventing the wheel

Multiple implementations of same comms layer

Slightly different assumptions leads to bugs

Unable to reuse applications
What are the problems with previous approaches?
 Thales Underwater Systems– 13 April 2015
What is Nemesys?
7 /

Communications layer

Independent of technology

Multi-language support

Scalable

Dynamic

Consistent simple API
Communications layer
Part of OPUS
 Thales Underwater Systems– 13 April 2015
Why use Nemesys?
8 /

“It just works”

Simple

Consistent
S_WatchDataNavigator line = allocLine();
Factory.getInstance().createServer(this,
line.setMins(mins);
"WatchData", technology
);
line.setSecs(secs);
Nemesys.getInstance().manage(this)
sendLine(line);
Factory.getInstance().createClient(this,
"WatchData", S_WatchDataNavigator
technology );
line = getLine();
Nemesys.getInstance().manage(this)
Long mins = line.getMins();
Long secs = line.getSecs();
Simple to use
 Thales Underwater Systems– 13 April 2015
Reuse
9 /


Common communications layer

Reuse of communication layer

Reuse of application modules (even between projects)
Most people do not care how data is sent

Still allow for full control at a lower level if required

Consistent approach everywhere
 Thales Underwater Systems– 13 April 2015
History
10 /

Initial CORBA-only implementation



UK need for socket implementation
French need for DDS implementation
Proposals for more technologies
Based on French CORBA product
Evolved into multiple technologies
 Thales Underwater Systems– 13 April 2015
Why not in GVA?
11 /


Decision taken early on

GVA is DDS-only

Lack of knowledge about Nemesys

Existing tools later discarded
GVA tooling is now based on Nemesys

DDS plugin and Java Rhapsody wizards

Using IDL defined externally
No real technical reason
 Thales Underwater Systems– 13 April 2015
How to use Nemesys?
12 /

Define data model


Generate


Wizards and other automation
Use


UML or text
API generated in code and Rhapsody
Demo
Only need to define data model
Simple to then generate and use
 Thales Underwater Systems– 13 April 2015
13 /
 Thales Underwater Systems– 13 April 2015
Questions
www.thalesgroup.com
Nemesys workshop
End
 Thales Underwater Systems– 13 April 2015