27
1 © 2016 The MathWorks, Inc. MATLAB App and Toolbox Development David Sampson MathWorks Consulting MATLAB Computational Finance Conference - London - 25 May 2016

David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

  • Upload
    others

  • View
    21

  • Download
    0

Embed Size (px)

Citation preview

Page 1: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

1© 2016 The MathWorks, Inc.

MATLAB App and Toolbox Development

David SampsonMathWorks Consulting

MATLAB Computational Finance Conference - London - 25 May 2016

Page 2: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

2

Agenda

§ Frequently used design patterns§ Calling external code from MATLAB§ Packaging and distributing code§ Learning more

Page 3: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

3

Frequently used design patterns

Page 4: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

4

Frequently used design patterns

§ Data access layer§ Componentized apps§ Graphics components

Page 5: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

5

Data access layer

Source: Wikipedia

Page 6: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

6

Demonstration:

Data access layer

Page 7: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

7

Data access layers in MATLAB

§ Design pattern: adapter§ Define a data access API (a set of abstract methods)§ Implement a class for each actual data source or sink type§ Applications interact with data sources or sinks via these data access

objects

Page 8: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

8

Componentized apps

Page 9: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

9

Demonstration:

Data visualization app

Page 10: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

10

Model

Event notificationProperty access, method call

HeartRateHistogramView StripChartView

MapViewPlayer

Page 11: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

11

Componentized apps in MATLAB

§ Design pattern: model-view-controller§ Decompose the app into a model and a series of views and controllers§ Model owns shared data and state§ Model is a handle class whose API includes properties, methods and

events§ Views react to model events and update their graphics objects§ Controllers respond to user actions and set model properties and/or call

model methods

Page 12: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

12

Graphics components

Page 13: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

13

Demonstrations:

Password entry boxWeb map

Page 14: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

14

Graphics components in MATLAB

§ Design pattern: composite§ Handle class (matlab.mixin.SetGet)§ Create graphics in constructor, store in private properties§ Expose specific properties§ Expose standard properties: Parent, Units, Position, Visible§ Delete object when graphics is deleted, and vice versa

Page 15: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

15

Calling external code

Page 16: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

16

Calling external code from MATLAB

§ Java§ .NET§ Python§ WSDL§ C/C++/Fortran MEX§ C shared libraries

Why?§ Use algorithms§ Use utilities and services§ Interface to systems

Page 17: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

17

Demonstration:

Calling external code

Page 18: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

18

Packaging and distributing code

Page 19: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

19

Page 20: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

20

MATLAB Toolbox files (.mltbx)

§ Available from R2014b§ Packs multiple files into a single file to be distributed§ Includes metadata and product dependencies§ Single step to install (or update)§ Configures MATLAB path§ Registers apps and documentation

www.mathworks.com/help/matlab/matlab_prog/create-and-share-custom-matlab-toolboxes.html

Page 21: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

21

Toolbox artifacts

§ Code§ Apps§ Examples§ Documentation§ Tests§ Utilities

Page 22: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

22

Suggested toolbox structure

/my.prj/util.m/tbx/releases/tests

where tbx is what is released, and contains…

/tbx/my/Contents.m/fcn.m/Class.m

/mydoc/howto.html/example.m

/apps/app.m

Page 23: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

23

Toolbox packaging dialog

Page 24: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

24

Toolbox automation APIs

§ matlab.addons.toolbox.packageToolbox§ toolboxVersion§ installToolbox§ uninstallToolbox§ installedToolboxes

Page 25: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

25

Demonstration:

Toolbox UIs and automation APIs

Page 26: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

26

Learn more

§ Slides and some demos will be available§ “Building, Scaling, and Implementing Risk Model and Stress Test

Framework” by Bet Herrera @ 1520§ Training

– Building interactive applications in MATLAB– Object-oriented programming in MATLAB

§ Workshops by MathWorks Consulting– App development– Testing

§ Upcoming posts on Developer Zone, blogs.mathworks.com/developer

Page 27: David Sampson MathWorks Consulting...David Sampson MathWorks Consulting MATLAB Computational Finance Conference -London -25 May 2016 2 Agenda Frequently used design patterns Calling

27

Thank you.

Questions?