160 likes | 459 Views
Nemesys workshop. An introduction to Nemesys By Patrick Stephens. Introduction. 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. OPUS.
E N D
Nemesys workshop • An introduction to Nemesys • By Patrick Stephens Thales Underwater Systems–20 October 2014
Introduction • 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–20 October 2014
OPUS • An overview of OPUS • By Patrick Stephens Thales Underwater Systems–20 October 2014
What is OPUS? • Open Platform for (Underwater) Systems • Open-source – in use by other companies • Common middleware products • Reuse and common evolution • Toolbox approach • Only use what you need Common middleware Pick and choose what you want to use Thales Underwater Systems–20 October 2014
Nemesys • An introduction to Nemesys • By Patrick Stephens Thales Underwater Systems–20 October 2014
Problems • 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–20 October 2014
What is Nemesys? • Communications layer • Independent of technology • Multi-language support • Scalable • Dynamic • Consistent simple API Communications layer Part of OPUS Thales Underwater Systems–20 October 2014
Why use Nemesys? • “It just works” • Simple • Consistent S_WatchDataNavigator line = allocLine(); line.setMins(mins); line.setSecs(secs); sendLine(line); Factory.getInstance().createServer(this, "WatchData", technology ); Nemesys.getInstance().manage(this) Factory.getInstance().createClient(this, "WatchData", technology ); Nemesys.getInstance().manage(this) S_WatchDataNavigator line = getLine(); Long mins = line.getMins(); Long secs = line.getSecs(); Simple to use Thales Underwater Systems–20 October 2014
Reuse • 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–20 October 2014
History • 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–20 October 2014
Why not in GVA? • 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–20 October 2014
How to use Nemesys? • Define data model • UML or text • Generate • Wizards and other automation • Use • API generated in code and Rhapsody • Demo Only need to define data model Simple to then generate and use Thales Underwater Systems–20 October 2014
Questions Thales Underwater Systems–20 October 2014
Nemesys workshopEnd Thales Underwater Systems–20 October 2014