Building an ML-Enabled System
for the Maritime Domain

https://renatocf.xyz/jads26-slides

2026

Renato Cordeiro Ferreira

Institute of Mathematics and Statistics (IME)
University of São Paulo (USP)  Brazil

Jheronimus Academy of Data Science (JADS)
Technical University of Eindhoven (TUe) / Tilburg University (TiU)  – The Netherlands

 OCEAN GUARD

Former Principal ML Engineer at Elo7 (BR)
4 years of industry experience designing, building, and operating ML products with multidisciplinary teams

B.Sc. and M.Sc. at University of São Paulo (BR)

Theoretical and practical experience with Machine Learning and Software Engineering

Scientific Programmer at JADS (NL)

Currently participating of the MARIT-D European project, using ML techniques for more secure seas

Ph.D. candidate at USP + JADS

Research about SE4AI, in particular about MLOps and software architecture of ML-Enabled Systems

Renato Cordeiro Ferreira

https://renatocf.xyz/contacts

This talk describes
challenges and lessons learned
on building OCEAN GUARD:
a system for anomaly detection in the
maritime domain

System
Specification

Actors

Investigator

Anomaly
Detection
Engine

Ocean Guard

Metadata
(User retrieves more info if available)

Vessel ID
MMSI
---

Lat / Lon
Heading
COG / SOG

Date + Time Selector
(show clues of which data is available)

1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
13
13
15
16
17
18
..

months

days

hours

Vessel
Trajectory

Known
Vessel
(AIS)

Known
Vessel
(LRIT)

Known
Vessel
(VMS)

Known
Structure

Piraeus Sea
(35.86, 23.03)
(37.95, 23.76)

Move to another
Area of Interest

AoI Selector
(indicates where the map is zoomed in currently)

Unknown
Vessel
(AIS)

Unknown
Vessel
(Satellite)

Known
Vessel
(AIS + Radar)

See geolocations of marine objects in a map

Filter geolocations by area of interest, date and time

I2

Discern different types of marine objects (vessels, etc.)

I3

Retrieve geolocations from different data sources.

I4

Check metadata associated with a given marine object

I5

Highlight the trajectory of a marine object

I6

See anomalies identified by the tool in a map

I7

Filter anomalies by area of interest, date and time

I8

Inspect why an anomaly was considered so by the tool

I9

I1

Ocean Guard

Metadata
(User retrieves more info if available)

Vessel ID
MMSI
---

Lat / Lon
Heading
COG / SOG

Date + Time Selector
(show clues of which data is available)

1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
13
13
15
16
17
18
..

months

days

hours

Vessel
Trajectory

Known
Vessel
(AIS)

Known
Vessel
(LRIT)

Known
Vessel
(VMS)

Known
Structure

Piraeus Sea
(35.86, 23.03)
(37.95, 23.76)

Move to another
Area of Interest

AoI Selector
(indicates where the map is zoomed in currently)

I3

Unknown
Vessel
(AIS)

I3

I7

I1

I6

I3

I3

I2

I8

Unknown
Vessel
(Satellite)

I7

Known
Vessel
(AIS + Radar)

I4

Detect anomalies related to a marine object

List anomalies by area of interest, date and time

Explain why an anomaly can be
considered so

A2

A3

A1

Architecture

Software Architecture in Practice - ICSA 2026

Reusability in MLOps:
Leveraging Ports and Adapters
to Build a Microservices Architecture
for the Maritime Domain

https://renatocf.xyz/icsa26-paper

Data Lake
Database
Data
Processor
API
GUI
Data Broker
Data
Ingestor
Model
Evaluator
Data Source
Data
Loader
Model
Evaluator
Ocean Guard
Service
External
Service
Legend
External
Model
Data
Flow
Storage
Internal or External
Model
Ocean Guard
or 
External
Service
Internal
Model
Data Lake
Database
Data
Processor
API
GUI
Data Broker
Data
Ingestor
Model
Evaluator
Data Source
Data
Loader
Model
Evaluator
Ocean Guard
Service
External
Service
Legend
External
Model
Data
Flow
Storage
Internal or External
Model
Ocean Guard
or 
External
Service
Internal
Model

Delta Architecture

Reactive
Machine Learning

Data Product

read / write
read / write
request / response
request / respon...
Service
Application
Service...
Pipeline
Pipeline
Storage
Storage
Subsystem
Subsystem
Legend
Legend
1
1
I
I
A
A
Service Label
Service Label
Pipeline Label
Pipeline Label
Storage Label
Storage Label
continuation
continuation
start
start
[action]
[action]
Data Flow
Data Flow
Execution Flow
Execution Flow
Serving
Serving
Continuous Training
Continuous Training
Monitoring
Monitoring
Continuous Delivery
Continuous Delivery
Data Acquisition
Data Acquisition
Development
Development
Data
Store
Data...
Feature
Store
Feature...
Data
Pipeline
Data...
Feature
Engineering
Pipeline
Feature...
Training
Pipeline
Training...
Metadata
Store
Metadata...
Raw Data
Store
Raw Data...
Model
Registry
Model...
CI
Pipeline
CI...
Artifact
Registry
Artifact...
Scheduler
Service
Scheduler...
Code
Repository
Code...
CD4ML
Pipeline
CD4ML...
Streaming
Prediction
Service
Streaming...
Batch
Prediction
Pipeline
Batch...
API
Prediction Service
API...
Prediction
Store
Prediction...
Code Editor
IDE
Code Editor...
Notebooks
Notebooks
Physical
Sensors

(IoT)
Physical...
Data
Crawlers
Data...
Labeling
Application
(Mechanical Turk)
Labeling...
Label
Store
Label...
CD
Pipeline
CD...
Consumer
Application
Consumer...
Monitoring
Service
Monitoring...
[ trigger ]
[ trigger ]
Data
Collection
Application
Data...
1
1
2
2
3
3
5
5
I
I
II
II
III
III
6
6
7
7
IV
IV
VI
VI
V
V
13
13
12
12
11
11
VII
VII
10
10
8
8
A
A
B
B
D
D
H
H
G
G
F
F
E
E
J
J
C
C
[ build ]
[ build ]
[ trigger ]
[ trigger ]
[ trigger ]
[ trigger ]
Governance
Application
Governance...
[ trigger ]
[ trigger ]
9
9
Manual
Trigger
Manual...
Metrics
Store
Metrics...
[  deploy  ]
[  update  ]
[ rollback ]
[  deploy  ]...
I
I
Queue
Broker
Queue...
K
K
[ train ]
[ train ]
[ redeploy ]
[ redeploy ]
[ run ]
[ run ]
[  deploy  ]
[  update  ]
[ rollback ]
[  deploy  ]...
Telemetry
Store
Telemetry...
L
L
3rd party
Application
(External)
3rd party...
4
4
[  deploy  ]
[  update  ]
[ rollback ]
[  deploy  ]...

Doctoral Symposium - CAIN 2025

A Metrics-Oriented Architectural Model
to Characterize Complexity on
Machine Learning-Enabled Systems

https://renatocf.xyz/cain25-paper

Core Dev Team
Scientific Programmers

Research Team
MSc Students

Innovation Team
PDEng Trainees

Core Dev Team
Scientific Programmers

Ui Dev Team
Hired Developers

Core Dev Team
Scientific Programmers

Research Team
MSc Students

Innovation Team
PDEng Trainees

Published at SADIS @ ECSA 2025

Making a Pipeline Production-Ready:
Challenges and Lessons Learned
in the Healthcare Domain

https://renatocf.xyz/sadis25-paper

Adapters Monorepo Data Ingestor Data Processor Data Loader Anomaly Detector API Settings Metrics Web Data Retrieval Broker Consumer Broker Producer Cache Database Storage Data Processor Data Loader Model

Contains Ports & Adapters reusable by all services

Cross-cutting concerns
get reused in every service

Specialized dependencies
are reused by connected services

Contract-Based
Development

Research
Team

Innovation
Team

Core Dev
Team

UI Dev
Team

Exploration of
state-of-the-art
techniques

Exploration of
state-of-the-practice
techniques

Back-end development
and infrastructure management

Front-end development
and user interface
design

Experimentation and Training Pipelines

Experimentation and Training Pipelines

API, Databases,
Model Repository

WebApp

Master
Students

EngD
Trainees

Scientific
Programmers

Assistant
Programmers

Document the expected formats of data exchange between two services or pipelines, which interact as consumer and producer via a data storage

Document the expected protocol of behavior between two services,
which interact synchronously or asynchronously via the network

Document the expected input and output between a trainer and a server, which interact by storing and loading models in a model registry

Code Contracts

Data Contracts

Model Contracts

This talk about OCEAN GUARD
illustrates how established
software engineering practices
can be applied to successfully build
Machine Learning-Enabled Systems

Building an ML-Enabled System
for the Maritime Domain

https://renatocf.xyz/jads26-slides

2026

Renato Cordeiro Ferreira

Institute of Mathematics and Statistics (IME)
University of São Paulo (USP)  Brazil

Jheronimus Academy of Data Science (JADS)
Technical University of Eindhoven (TUe) / Tilburg University (TiU)  – The Netherlands

 OCEAN GUARD

[JADS 2026] Ocean Guard: Building an ML-Enabled System for the Maritime Domain

By Renato Cordeiro Ferreira

[JADS 2026] Ocean Guard: Building an ML-Enabled System for the Maritime Domain

In this talk, I'll share our challenges and lessons learned on building Ocean Guard (OG): a Machine Learning–Enabled System (MLES) for anomaly detection in the maritime domain. In particular, I'll highlight how we designed an MLOps architecture to allow multiple JADS Masters and EngDs to work in a single project. Finally, I'll present how we incrementally developed the tool through multiple practical pilots, allowing us to go beyond TRL-6 (Technical Readiness Level #6).

  • 25