Andy: Today I'd like to introduce a fellow MathWorker with whom I will be tag teaming for content on this blog. His name is Arvind Hosagrahara and he is a principal technical consultant in the MathWorks Consulting Services group. He helps organizations use MATLAB in their business critical applications. Arvind has a plethora of knowledge and experience in deployment scenarios and connecting MATLAB to external production systems, and I anticipate you'll agree that what he has to share is both fascinating and powerful. To start, Arvind will give a high level overview of how he has seen MATLAB used in business critical technology stacks. With that, without further ado, Arvind Hosagrahara.
A business critical application is one whose failure can result in a serious financial loss, user dissatisfaction and loss in productivity. In these business critical applications, the results must be correct and highly available.
I write to discuss lessons learnt from years of experience on a wide variety of consulting projects that have successfully put MATLAB at the center of business critical applications and processes.
MATLAB is a desktop tool, a complete platform and a language widely regarded as one of the most popular in use. It is fun, easy to learn, flexible, powerful, scalable and designed to be open and extensible to a variety of 3rd party technologies.
Although commonly operated as a simple scripting environment and an exploratory programming language, MATLAB is flexible enough to also be used as a full-fledged development environment with complete object oriented software development patterns for use in complex software projects that run in business critical applications.
A bit of background before we begin our life-sized, real-world MATLAB work/project/development.
To the typical MATLAB user, the language used to describe these business critical applications is often strange and unfamiliar as these systems are normally the realm of IT organizations. Words like scalability, fail-over, security, concurrency, and a whole jumble of three letter acronyms are tossed around (can you say DRP?). In some of these applications, MATLAB is only a part of the full solution and robust interoperability of all the components is critical to success of the entire solution.
The good news is that most everything you need to take MATLAB into production can be found in standard software development best practices. What isn't there can be covered in best practices for developing and deploying MATLAB code into these environments.
Our story begins here!
As with all good stories, it starts with a simple idea - reuse your MATLAB prototypes for your production environment. You will gain efficiencies in expressing ideas/algorithms and avoid the error prone, redundant process of re-implementing them in languages such as in Microsoft® .NET or Java®.
The Big Picture
A big picture of working with MATLAB in these environments attempts to illustrate what you need to consider in travelling this path.
What you are looking at above is a 10,000 ft. mental map of strong foundational software development processes and practices which produce quality software. We begin with capture of requirements, consideration of architecture and design leading to implementation coupled with testing and finally deployment. (Hint: mouse over the image for details)
Depending on the type of integration, MATLAB software can show up as web services, as database procedures/functions, as the engine for visualization software, all running on a variety of platforms in production.
Andy, has started this conversation/blog by focusing on some aspects of this big picture perspective such as testing and software design. Together, we hope to share our combined knowledge of MATLAB with demonstrations, code, tools and patterns/anti-patterns from our experience of putting MATLAB in business critical applications.
More personally, my time with MATLAB has been a love affair that now spans over 16 years. As with matters of love, there are idiosyncrasies that I need to deal with as the MATLAB I love offers a thousand different ways to solve problems (and also a few ways of shooting myself in the foot). I look forward to sharing information here that you will find useful in building robust solutions using MATLAB.
As always, your questions, comments and suggestions are welcome.
Get the MATLAB code
Published with MATLAB® R2015a