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