software development practices within matlab€¦ · software development practices within matlab...
TRANSCRIPT
![Page 1: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/1.jpg)
1© 2015 The MathWorks, Inc.
Software Development Practices
within MATLAB
David Sampson
![Page 2: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/2.jpg)
2
I want to help you…
Design Architect Implement Share
…your MATLAB tools
![Page 3: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/3.jpg)
3
What are your software development concerns?
▪ Accuracy
▪ Execution performance
▪ Development time
▪ Cost
▪ Compatibility
▪ Documentation
▪ Reusability
▪ Effective testing
▪ Integration
▪ Ease of collaboration
▪ Legacy code
▪ Liability
▪ Maintainability
▪ Model risk
▪ Robustness
▪ Developer expertise
▪ Software stack complexity
▪ …?
![Page 4: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/4.jpg)
4
Agenda
▪ MATLAB Projects
▪ Version control integration
▪ Language features
▪ Development environment
▪ Testing & CI
▪ Toolbox distribution
▪ Design patterns
![Page 5: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/5.jpg)
5
MATLAB Projects
![Page 6: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/6.jpg)
6
Projects (MATLAB + Simulink Projects)
▪ Manage your files and path
▪ Analyze file dependencies
▪ Function refactoring
▪ Run startup & shutdown tasks
▪ Create project shortcuts
▪ Label and filter files
▪ Integrate source control
![Page 7: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/7.jpg)
7
Managing your code with Projects
1. Create project
![Page 8: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/8.jpg)
8
Managing your code with Projects
1. Create project
2. Set path and startup tasks
![Page 9: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/9.jpg)
9
Managing your code with Projects
1. Create project
2. Set path and startup tasks
3. Explore dependencies
![Page 10: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/10.jpg)
10
Managing your code with Projects
1. Create project
2. Set path and startup tasks
3. Explore dependencies
4. Label files Identify and run tests
![Page 11: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/11.jpg)
11
Managing your code with Projects
1. Create project
2. Set path and startup tasks
3. Explore dependencies
4. Label filesIdentify and run tests
…on Continuous Integration servers
![Page 12: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/12.jpg)
12
Managing your code with Projects
1. Create project
2. Set path and startup tasks
3. Explore dependencies
4. Label files
5. Integrate source control
![Page 13: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/13.jpg)
13
Version control
![Page 14: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/14.jpg)
14
Version control
▪ Maintain backups, history, and
ability to restore
▪ Track changes and responsibility
▪ Simplify reconciling conflicting
changes
▪ Generate discussion
▪ Save you from yourself
![Page 15: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/15.jpg)
15
Version control integration
▪ Manage your code from within
the MATLAB Desktop
▪ Git integrated into:
– Projects
– Current Folder browser
▪ Use Comparison Tool to view and
merge changes between revisions
![Page 16: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/16.jpg)
16
Repo
Co-authoring workflows
Creating a repo:
▪ Initialize
▪ Add
▪ Clone
Making changes:
▪ Commit
▪ Push
▪ Branch
▪ Merge
branch
Repo
Repo
Repo Repo
commitmerge request
![Page 17: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/17.jpg)
17
Implementation
![Page 18: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/18.jpg)
18
Considerations when writing better, robust, and portable code
▪ Input validation
▪ Error handling
▪ Writing faster code using the MATLAB Profiler
▪ Writing code faster using the Live Editor
▪ Refactoring code to reduce complexity
▪ Writing code that works on all operating systems
![Page 19: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/19.jpg)
19
Unactionable errors
>> y = myfunc( 1:5 )
Index exceeds matrix dimensions.
Error in mypkg1.mypkg1a.mypkg1ab.myfunc1 (line 9)
y(idx) = u(idx)*log(u_hat(idx))+(1-u(idx))*log(1-u_hat(idx));
Error in mypkg2.mypkg2a.myfunc2 (line 5)
y = mypkg1.mypkg1a.mypkg1ab.myfunc1( myVar1 .* myVar2 );
Error in mypkg3.mypkg3a.myfunc3>@(x)mypkg2.mypkg2a.myfunc2(x) (line 4)
y = arrayfun( @(x) mypkg2.mypkg2a.myfunc2( x ), myVar );
Error in mypkg3.mypkg3a.myfunc3 (line 4)
y = arrayfun( @(x) mypkg2.mypkg2a.myfunc2( x ), myVar );
Error in myfunc (line 10)
![Page 20: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/20.jpg)
20
▪ validateattributes
▪ assert
▪ isempty, isnan, isfinite, …
▪ narginchk
▪ inputParser
▪ Property validation for classes
Validating inputs
>> myfunc( 1:5 )
Error using myfunc (line 4)
Expected input to be of size 1x3, but it is of size
1x5.
>> myfunc( [2 3 1] )
Error using myfunc (line 4)
Expected input to be increasing valued.
![Page 21: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/21.jpg)
21
Handling errors more elegantly
▪ error and warning
– Use identifiers
▪ try/catch
▪ MException
▪ errordlg and warndlg
![Page 22: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/22.jpg)
22
MATLAB Profiler
▪ Total number of function calls
▪ Time per function call
▪ Highlights largest code bottlenecks
▪ Statement coverage of code
![Page 23: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/23.jpg)
23
Programming aids in the Live Editor
▪ Automatically closed parentheses,
loops, and conditional blocks
▪ Context-aware coding guides
– Automatically suggest function names
variables, or file names
– List available Name/Value pairs
![Page 24: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/24.jpg)
24
Quickly and safely refactoring code
▪ Live Editor shortcuts to refactor blocks of code into functions
![Page 25: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/25.jpg)
25
Quickly and safely refactoring code
▪ Function refactoring
across files in Projects
![Page 26: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/26.jpg)
26
Simple code quality and complexity assessment – checkcode
▪ Analyze all warnings and errors in a code
▪ McCabe Cyclomatic Complexity
– Measures complexity based on the number of linearly independent paths through a code
![Page 27: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/27.jpg)
27
Code that runs everywhere
▪ Operating System-aware code
– fullfile
– ispc, ismac, isunix
▪ More reliable portability with Projects
– Consistent path management
– Automated startup/shutdown procedures
– Built-in file dependency analysis
>> fullfile("..","data","2019","April")
Windows: "..\data\2019\April"
Mac/Linux: "../data/2019/April"
![Page 28: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/28.jpg)
28
Code maintenance
![Page 29: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/29.jpg)
29
Code Compatibility Report
▪ Tool to help upgrade code to
latest and greatest MATLAB
▪ Identifies potential
compatibility issues
▪ Hundreds of checks for
incompatibilities, errors, and
warnings
Link to documentation
for updates
Go directly to the
line of code
![Page 30: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/30.jpg)
30
▪ MATLAB Unit Testing Framework
▪ Performance Testing Framework
▪ App Testing Framework
Testing Frameworks
![Page 31: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/31.jpg)
31
MATLAB Unit Testing Framework
▪ Script-based test
▪ Function-based test
▪ Class-based test
▪ Test integration with
Projects
![Page 32: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/32.jpg)
32
Editor integration
▪ Added buttons to make testing more
readily accessible
▪ Testing your code should be as easy as
hitting the “Run” button!
![Page 33: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/33.jpg)
33
App Testing Framework
▪ Verify app behavior with tests that programmatically perform gestures on a UI component
testCase.press(myApp.checkbox)
testCase.choose(myApp.discreteKnob, "Medium")
testCase.drag(myApp.continuousKnob, 10, 90)
testCase.type(myApp.editfield, myTextVar)
![Page 34: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/34.jpg)
34
Continuous Integration (CI)
▪ A system to automate the building, testing, integration, and deployment of
code as it is being developed and maintained
▪ Popular CI systems: Jenkins, Travis, CircleCI , Bamboo, and others…
▪ Benefits:
– Detect integration bugs early
– Allow you to stop bugs from being accepted
– Track and report testing history
– Flexible testing schedules and triggers
![Page 35: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/35.jpg)
35
Continuous Integration workflow
Source Control Trigger Build Post Build
▪ Git
▪ GitHub
▪ GitLab
▪ Subversion
▪ …
▪ Push
▪ Merge Request
▪ Pull Request
▪ Check In
▪ Scheduled
▪ Manual
▪ Publish:
– Test Results
– Coverage Results
– Performance
Results
▪ Accept Merge
Request
▪ Email Notification
▪ Run MATLAB / Simulink Tests
▪ Run Performance Tests
▪ Compile MEX Files
▪ Generate Code*
▪ Package Toolboxes
▪ Build Components with MATLAB
Compiler Stack*
▪ Integrate with other software
* Transformation products may require Client Access Licensing
![Page 36: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/36.jpg)
36
Jenkins plugin
▪ Easily connect and configure
MATLAB with Jenkins
▪ Schedule automatic code
execution and testing:
– based on time of day
– whenever new code changes
are committed
![Page 37: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/37.jpg)
37
Jenkins plugin configuration
▪ Locate MATLAB
▪ Identify repository to load
▪ Set build triggers
▪ Add build step
![Page 38: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/38.jpg)
38
Jenkins plugin reports
▪ View testing results
▪ View code coverage
▪ View testing reports
![Page 39: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/39.jpg)
39
Sharing your code – The traditional way
▪ Unzip the zip file
▪ Find the instructions and release notes
▪ Decide whether you want the thing
▪ Remove folders from old versions from the path
▪ Add folders to the path
▪ Save the path for next time
▪ Find the documentation
▪ Do work
![Page 40: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/40.jpg)
40
Sharing your code – How should you share code?
It depends on who you are sharing your code with:
▪ Co-authors → Project
▪ End-user with MATLAB → Toolbox or App
▪ End-user without MATLAB → Deployment (application, library, C code …)
![Page 41: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/41.jpg)
41
Sharing your code with MATLAB users – Packaging your code
▪ Toolbox Packaging
▪ App Packaging
• Combine files into one installation file
• Installs in MATLAB Add-Ons or Apps tab
• Documents required products
![Page 42: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/42.jpg)
42
Sharing your code outside of MATLAB – Application Deployment
Share your applications as:
▪ Standalone software
▪ Web applications
▪ Language-specific libraries
▪ Generated code
MATLAB Compiler
MATLAB Compiler
MATLAB Compiler SDK
MATLAB Coder
![Page 43: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/43.jpg)
43
Design Patterns
![Page 44: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/44.jpg)
44
Preface: handles and values
▪ MATLAB has both value and handle classes
▪ Everyday MATLAB datatypes exhibit value behaviour
▪ Handle classes facilitate multiple references to the same object
▪ MATLAB’s copy-on-write optimization limits memory consumption
▪ MATLAB’s reference counter disposes of unused handle objects
Choose handle or value based on the need for multiple references.
![Page 45: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/45.jpg)
45
Design patterns
▪ Observer
▪ Adapter
▪ Singleton
▪ Builder
▪ Memento
![Page 46: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/46.jpg)
46
Observer pattern
▪ When an object changes state, how can an arbitrary number of dependent
objects react?
▪ How to avoid making the objects tightly coupled?
▪ Handle class for subject
▪ Event(s) on subject, possibly with custom event data
▪ Observers listen to events on subject
▪ Example: model with multiple views
![Page 47: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/47.jpg)
47
Adapter pattern
▪ How can a class be reused that does not have an interface that a client
requires?
▪ How can classes that have incompatible interfaces work together?
▪ How can an alternative interface be provided for a class?
▪ Private property to store an instance of the reused class
▪ Dependent properties to forward gets and sets
▪ Wrapper generator using meta.class APIs
▪ Examples: chart, modified timer, map services
![Page 48: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/48.jpg)
48
Singleton pattern
▪ How can it be ensured that a class has only one instance?
▪ How can the sole instance of a class be accessed easily?
▪ How can a class control its instantiation?
▪ How can the number of instances of a class be restricted?
▪ Private constructor
▪ Private property to store the object
▪ getInstance static method
▪ Example: pointer manager
![Page 49: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/49.jpg)
49
Builder pattern
▪ How can a class create different representations of a complex object?
▪ How can a class that includes creating a complex object be simplified?
▪ MATLAB handle class
▪ create* method(s)
▪ Example: create unit from database
![Page 50: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/50.jpg)
50
Memento pattern
▪ How can the internal state of an object be saved externally so that the
object can be restored to this state later?
▪ Saving to and loading from disk or database is a common case
▪ saveobj instance method
▪ loadobj static method
▪ ConstructOnLoad class attribute
▪ Examples: renaming a class, removing a property
![Page 51: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/51.jpg)
51
Closing remarks
![Page 52: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/52.jpg)
52
Recap
▪ MATLAB Projects
▪ Version control integration
▪ Language features
▪ Development environment
▪ Testing & CI
▪ Toolbox distribution
▪ Design patterns
![Page 53: Software Development Practices within MATLAB€¦ · Software Development Practices within MATLAB David Sampson. 2 I want to help you… Design Architect Implement Share …your MATLAB](https://reader033.vdocuments.net/reader033/viewer/2022053023/6052f78314ae10452678fccf/html5/thumbnails/53.jpg)
53
Thank you.
Questions?