Model Driven Development using Software Matrix Tilak Patel Advisor: Dr. James Fawcett 21 December 2007
Research Overview Efficient Support for software salvage using Model Driven Development approach Salvage: lifting significant blocks of existing systems and inserting them into newly developed system We develop a framework to facilitate Rapid Application development using Model Driven Development approach We show how the Software Matrix framework can be used for the development of such framework Developing a prototype Computer-Aided Software Engineering tool for software development with effective software salvage Advantages: reduced development cost and maintenance cost, gains in development schedule and quicker time to market, increased robustness and quality Message Passing to achieve loose coupling between various system blocks
Software Reuse Not a new idea Effective reuse promises: Reduced development and maintenance cost Gains in development schedule and quicker time to market Increased robustness and quality Prior approaches object-oriented reuse component-oriented reuse Neither software reuse nor CASE is new idea however if we didn't re-invent the wheel from time to time, we still be riding on stone wheels
Model Driven Development Commercial products using same approach: IBM Rational Rose Sparx Enterprise Architect Separate design from architecture and choosing from the best and most fitting in both domains Existing piece of code always part of design but lack of frameworks supporting Salvage Old saying about the shoemaker’s children: the shoemaker is so busy making shoes for others that his children don’t have shoes of their own. Many software developers are “shoemaker’s children” Although these technical professionals build complex systems and products that automates the work of others, they used very little automation themselves. Differences between approaches and concepts used to realize designs and the concepts and technologies used to realize architectures Definition of Model Driven Development: The Model Driven Development approach defines system functionality using a platform-independent model (PIM) using an appropriate domain-specific language. Then, given a platform definition model (PDM) corresponding to CORBA, .NET, the Web, etc., the PIM is translated to one or more platform-specific models (PSMs) that computers can run. The PSM may use different Domain Specific Languages, or a General Purpose Language like Java, C#, Ruby, Python, etc. (ref: wikipedia) Various Model Driven Development Approaches (commercial products like rational rose and Sparx) Software Reuse models (Object Oriented Reuse, Component Oriented Reuse)
Matrix Framework Framework for reuse Integrated Network of Cells with Cells supporting automated testing Simple XML messaging interface with auto Cell discovery Sync and Async message passing Loosely coupled code blocks for effective software salvage Heterogeneous network of Cells possible Auto cell discovery on in local Matrix
A Closer Look at Matrix Cells Message Queues for communication with other Cells Unique Cell ID Capability List for advertising services Functionality which is the processing for the services provided Dispatcher thread monitoring blocking queue and processing messages GUID as unique ID Switch-case for different message types
Improvements to the Software Matrix Test Support Enabled Cells: Cells can be loaded in Automated Test Harness for automated testing Auto Cell Discovery: Cell can now discover Cells from local Matrix for required functionality Intelligent Loader: Loader directly registering Cells based on Cell diagram and so direct message exchange between Cells without Mediator
Athena Designer Prototype Computer Aided Software Engineering tool Design time support for Model Driven Development with compatibility with Visual Studio 2005 and later versions Developed using Windows Presentation Foundation (.NET 3.0)
Athena Designer Components myCanvas : provides hosting panel to create Cell Diagrams and does line routing between the Cell connections . diagramInfo: maintains information related to diagram constructed on canvas. codeGen: generates code compatiable with Visual Studio 2005 and later versions Next slide has more details (Screenshot) about line routing
Line Routing See: Chapter 4, page 54
Line Routing See: Chapter 4, page 55
Sample Cell Diagram See: Chapter 2, page 21
Project Templates See: Chapter 4, page 57 Original project file snippet Template to create emptyCell snippet <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" Version="8.00" Name=”emptyCell” ProjectGUID=”{BD2CE710-DEE2-4b4b-869F- 4B6E0CC612C8}” RootNamespace=”matrix” Name=" [ ! safe projectname ] " ProjectGUID=" { [ ! safe GUID ] } " RootNamespace="[!safe rootnamespace ] " See: Chapter 4, page 57
Code Generation Mapping between Cell Diagram and Visual Studio Solution See: Chapter 4, page 49
Test Application: Process and Port Sniffer Scans machine to observe processes running and ports currently hosting connection We demonstrate construction of Sniffer Application using Model Driven Development approach We construct Cell Diagram using Athena Designer and generate code to build Sniffer application
Components of Sniffer Application Sniffer block: observes all processes running or ports hosting a connection and updates safe/unsafe process/port list Communication block: exchange information between server-client and exchange commands from client to server to update safe/unsafe list User interface block: accept user command and display safe/unsafe process/port information. Executive block: host Sniffer block and communication block at server
Cell Diagram: Sniffer Server See: Chapter 3, page 41
Cell Diagram: Sniffer Client See: Chapter 3, page 44
Generated Sniffer Application Project See: Chapter 3, page 43
Instance of Sniffer Application See: Chapter 3, page 45
Thesis Conclusions Model Driven Development with effective software salvage is possible and we have developed prototype tool and framework to support it Our work shows that effective software salvage is possible without drastic change in software development process with framework developed using Software Matrix
Thesis Conclusions Our work shows that Model Driven Development using Software Matrix is based on system decomposition and is better suited for system development environment characterized by rapidly changing conditions and requirements Our work shows how placeholder cells evolves into new “standard” cells easily
Thesis Conclusions We have demonstrated that Model Driven Development with effective software salvage increases development speed and helps to ensure that quality is built into the system.
Future Work Integrated Designer, Repository and Test Harness server Auto Upgrading Systems with real time Cell replacement or up-gradation Cross platform wrapper Cell to develop application with Cells developed using different languages Load balancing Sophisticated Network Cells
Thank You