a 10 years journey of medical device development other ... · pdf filea 10 years journey of...

Post on 09-Mar-2018

213 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Other Cool Stuff

A 10 years journey ofMedical Device Development

together with Eclipse and Modelling

Carsten Gosvig

SW Tools Architect

20 March 2017

Why do we use modelling?

Domain Access

Fitting SW C#/.NET

Service C#/.NET

Production Labview

Product Matlab

Audiology Matlab

DSP Algorithm Matlab

eSW Matlab

FW Java

HW Java

2Requirements

Audiology

Research Digital HW

FW

Analog HW

Platform

Avenue

Product

Embedded SW

DSP Algorithm

Application

Street

Completion

Alley

Production___

Fitting SW

Service

Development Highway

2 parameters

Type = LP

f3dB

= 1.5 kHz

Parameter Abstraction Levels

3Requirements

D

D

+

a1+

a2

+

+

s0 b0

b1

b2

Input

ctl[2]

MUX

ctl[1]

SHIFTctl[5:3]

+/-

REG REG

MU

X

REG

REG

REG

REG

MU

XM

UX

Register file

ctl[6]

ctl[9]

ctl[10] ctl[11]ctl[7]

ctl[0]

A B

data_in

REGctl[12]

input_sel

sh_res

add_res

res1

w1

w2

q0_w1

q0_w2 q1_w2

q1_w1

ctl[8]

acc_sel

data_out

f3dB

LP

6 coefficients

a1

= 0.125 a2

= 0.375

b0

= 1.0 b1

= 0.5 b1

= 1.0

s0

= 0.75

f3dB

LP2

f3dB

LP1

1 parameter

Filter = LP2f3dB

LP3

HW

eSW

DSP Algorithm

Audiology

32 instructionsSEL(Q0), SEL(W2), SHR(2), ADD(0), UPD(A);

SEL(Q0), SEL(W2), SHR(4), ADD(A), UPD(A); -- (1)

SEL(Q0), SEL(W2), SHL(1), ADD(0), UPD(B);

SEL(Q0), SEL(W2), SHR(2), ADD(B), UPD(B); -- (2)

SEL(Q0), SEL(W1), SHR(2), ADD(B), UPD(B); -- (3)

...

Tra

nsfo

rma

tion

s: M

atla

b, C

#, D

SL

PC

on

lyP

C a

nd

De

vic

e

Automation and Customization

4Requirements

Start

set: HW.bias = 42

run: FW.startTest3(4, 10)

get: stat = FW.isRunning

stat == 0

get: result = FW.level

Stop

start

HW.bias FW.level

snoop

Production FW

The Journey

2007-2010

• HW, FW and eSWdevelopment

• XML, C, RT model, CLI tools, Java API, Device debug GUI

• Eclipse Ganymede, RCP, EMF, CDT

2011-2013

• DSP Algorithm and Device production

• Cached RT model, IDE, HTTP API, Settings diff GUI

• Eclipse Juno, Jetty, CNF, EMFCompare

2014-2016

• Audiology development and Fitting SW driver

• Custom debug GUI M2T, Textual DSL

• Eclipse Mars, Xtend, Xtext

2017…

• Performance and Modelling usability

• Incremental M2M, Graphical editors, new Eclipse+Java

• Eclipse Neon, Graphiti, e4 XWT

The Solution 6

Modelling like source code

6The Solution

2007-2010

• HW, FW and eSW

development

• XML, C, RT model,

CLI tools, Java API,

Device debug GUI

• Eclipse Ganymede,

RCP, EMF, CDT

X

Y

Z • N

• M

• A

• B

• C

X

• A

• B

• D

Y

• N

• M

Z

• N

• M

.c

CDT

• A

• B

• D

Patched

RT model

XML

Performance with models in 2010

Year 2010

Types 90

Files 170

Elements 14K

Instances 220K

Memory 540 MB

Load XML 1 sec

Transform 11 sec

Numbers are for the parameter DSL

Types: Element types in DSL

Files: Source model files

Elements: Source model elements

Instances: RT model elements

Load XML: Load source model

Transform: Source model to RT model

7The Solution

2007-2010

• HW, FW and eSW

development

• XML, C, RT model,

CLI tools, Java API,

Device debug GUI

• Eclipse Ganymede,

RCP, EMF, CDT

eSWFWHW

Source model tooling

Controlling XML syntax for href attributes

…xmi.impl.XMLResourceImpl.getEObjectByID(String)

…xmi.impl.XMLResourceImpl.getURIFragment(EObject)

From EMF library example: <author>#//@writers.0</author>

Source model example: link="#idsp_unit.gp_core.top_param"

Generating source model files from c code with annotated elements

Using Eclipse CDT Managed Builder to drive the source file iteration

Each IASTTranslationUnit calls special ASTVisitor for annotated elements

8The Solution

2007-2010

• HW, FW and eSW

development

• XML, C, RT model,

CLI tools, Java API,

Device debug GUI

• Eclipse Ganymede,

RCP, EMF, CDT

RT model tooling

9The Solution

2007-2010

• HW, FW and eSW

development

• XML, C, RT model,

CLI tools, Java API,

Device debug GUI

• Eclipse Ganymede,

RCP, EMF, CDT

X

• A

• B

• D

Y

• N

• M

Z

• N

• M

.image

X.A = 100

Y.N = 10

Z.N = 20

Z.M = 70

Matlab Tests

Java API

Device debug GUI

CLI

Java TestsRCP

More model tooling

10The Solution

2011-2013

• DSP Algorithm and

Device production

• Cached RT model,

IDE, HTTP API,

Settings diff GUI

• Eclipse Juno, Jetty,

CNF, EMFCompare

X

• A

• B

• D

Y

• N

• M

Z

• N

• M

.binary.xml

EMF Binary

Resource

Impl

EMF CompareProduction

CNF

Jetty

HTTP

Server

Supporting non Java runtime

Uses org.eclipse.jetty.server.Handler.handle(String,

Request, HttpServletRequest, HttpServletResponse)

11The Solution

2011-2013

• DSP Algorithm and

Device production

• Cached RT model,

IDE, HTTP API,

Settings diff GUI

• Eclipse Juno, Jetty,

CNF, EMFCompare

Request:

http://localhost:2950/plain/manager/sessions/foo/connections/bar/automation.flowchart

Response:

x=100

y=3000

Caching RT model

Year 2010

Types 90

Files 170

Elements 14K

Instances 220K

Memory 540 MB

Load XML 1 sec

Transform 11 sec

Load Bin 2 sec

Numbers are for the parameter DSL

Types: Element types in DSL

Files: Source model files

Elements: Source model elements

Instances: RT model elements

Load XML: Load source model

Transform: Source model to RT model

Load Bin: Load cached RT model

12The Solution

2011-2013

• DSP Algorithm and

Device production

• Cached RT model,

IDE, HTTP API,

Settings diff GUI

• Eclipse Juno, Jetty,

CNF, EMFCompare

org.eclipse.emf.ecore.resource.impl.BinaryResourceImpl

Binary format is tightly coupled to classifier and feature ID’s

Even more model tooling

13The Solution

2014-2016

• Audiology

development and

Fitting SW driver

• Custom debug GUI

M2T, Textual DSL

• Eclipse Mars,

Xtend, Xtext

X

• A

• B

• D

Y

• N

• M

Z

• N

• M

Fitting

Software

.driver

workflow readLevel {

output a

a = FW.level

}

XML

C#

Xtend

Generator

Custom debug GUI

From XML to Xtext DSL approach

14The Solution

2014-2016

• Audiology

development and

Fitting SW driver

• Custom debug GUI

M2T, Textual DSL

• Eclipse Mars,

Xtend, Xtext

Customizable debugging GUI

15The Solution

2014-2016

• Audiology

development and

Fitting SW driver

• Custom debug GUI

M2T, Textual DSL

• Eclipse Mars,

Xtend, Xtext

EM

F.E

dit

Performance with ever growing models

Year 2010 2017

Types 90 260

Files 170 3300

Elements 14K 190K

Instances 220K 3100K

Memory 540 MB 2800 MB

Load XML 1 sec 3 sec

Transform 11 sec 103 sec

Load Bin 2 sec 23 sec

Numbers are for the parameter DSL

Types: Element types in DSL

Files: Source model files

Elements: Source model elements

Instances: RT model elements

Load XML: Load source model

Transform: Source model to RT model

Load Bin: Load cached RT model

16The Solution

2017…

• Performance and

Modelling usability

• Incremental M2M,

Graphical editors,

new Eclipse+Java

• Eclipse Neon,

Graphiti, e4 XWT

ProductAudiology

DSP AlgorithmeSWFWHW

eSWFWHW

Improved tooling

Our own BinaryResourceImpl

Handling classifier and feature ID’s

17The Solution

2017…

• Performance and

Modelling usability

• Incremental M2M,

Graphical editors,

new Eclipse+Java

• Eclipse Neon,

Graphiti, e4 XWT

X

Y

Z • N

• M

• A

• B

• D

Q

P

P

• S

Q

• S

X

Y

Z

Y

• N

• M

X

• A

• B

• D

Z

• N

• M

Q

P

P

• S

Q

• SRT model

Accessor

• Z

• N

• M

RT model memory consumption

Requirement

Production test systems have limited memory

Solution

Use Boolean flags field instead of individual Boolean fields

Our own base class that extends org.eclipse.emf.ecore.impl.EObjectImpl

Find elements in model that are identical and then only keep one of them

Finding identical elements also takes time

Replace general element structures with new element type

Instead of *1000 elements per memory block we will only have one element

18The Solution

2017…

• Performance and

Modelling usability

• Incremental M2M,

Graphical editors,

new Eclipse+Java

• Eclipse Neon,

Graphiti, e4 XWT

T

• 1

• 7

U

• 1

• 7 U

TU

• 1

• 7

T

New Eclipse and Java versions

Requirement

Use the latest versions – less bugs and most features

Support Eclipse Neon which requires Java 8 runtime

Support Matlab having it’s own JVM embedded, which is only at Java 7

Solution

Make the API needed in Matlab available through an HTTP interface

Ended up reusing/extending the first Jetty HTTP Server based API

Will generate a Java 7 compliant frontend for Matlab that uses HTTP

19The Solution

2017…

• Performance and

Modelling usability

• Incremental M2M,

Graphical editors,

new Eclipse+Java

• Eclipse Neon,

Graphiti, e4 XWT

Graphical Editors

20

2017…

• Performance and

Modelling usability

• Incremental M2M,

Graphical editors,

new Eclipse+Java

• Eclipse Neon,

Graphiti, e4 XWTGraphiti

e4 XWT

Binding Editor

Solution Numbers

Human Resources

20 SW developers have contributed over time

Around 60 man-years of work

More than 240 users

Artifacts

7500 files of Java source and test code

2500K lines of Java source and test code

85000 test model files

21The Solution

2007-2017

Did we get what we wanted?

We got to the Development Highway

One common and shared set of DSL’s for exchanging artifacts

Optimized cooperation between teams by using same DSL’s and tools

Learnings

By starting bottom-up the modelling did become quite low-level

Implementing Model Editors at a later stage has been challenging

22The Solution

2007-2017

Live Demo

Browse source model (Model files)

Parameter Browser (Abstraction layers)

Operation Browser (Automation workflows)

Interface Browser (Custom debug GUI)

HTTP API Server (Non Java access)

23The Solution

Questions?

A 10 years journey of

Medical Device Development

together with Eclipse and Modelling

Company: Oticon A/S – oticon.com

Location: Copenhagen – Denmark

Presenter: Carsten Gosvig – cgos@oticon.com

24Thank You

Evaluate the SessionsSign in and vote at eclipseconverge.org

-1 0 +1

top related