Cross Platform Development using Software Matrix

Slides:



Advertisements
Similar presentations
A Free sample background from © 2001 By Default!Slide 1.NET Overview BY: Pinkesh Desai.
Advertisements

© 2012 WIPRO LTD | 1 Version 1.0a, 23 rd April 2012 TTCN-3 Users Conference Practical integration of TTCN-3 with Robot test automation framework.
Intro to Web Services Dr. John P. Abraham UTPA. What are Web Services? Applications execute across multiple computers on a network.  The machine on which.
Reconfigurable Communication Interface Between FASTER and RTSim Dec0907.
IPS Infrastructure Technological Overview of Work Done.
Copyright 2007, Information Builders. Slide 1 iWay Web Services and WebFOCUS Consumption Michael Florkowski Information Builders.
Introduction to Algorithm. What is Algorithm? an algorithm is any well-defined computational procedure that takes some value, or set of values, as input.
Application Sharing Bhavesh Amin Casey Miller Casey Miller Ajay Patel Ajay Patel Bhavesh Thakker Bhavesh Thakker.
1 Chapter 1 INTRODUCTION TO WEB. 2 Objectives In this chapter, you will: Become familiar with the architecture of the World Wide Web Learn about communication.
Web and Proxy Server.
Compute and Storage For the Farm at Jlab
Java Web Services Orca Knowledge Center – Web Service key concepts.
Architecture Review 10/11/2004
Databases (CS507) CHAPTER 2.
Review of Last Year’s Midterm
Model Driven Development using
Kai Li, Allen D. Malony, Sameer Shende, Robert Bell
Dependency Analysis Use Cases
Netscape Application Server
Goals Give you a feeling of what Eclipse is.
Chapter 2 Database System Concepts and Architecture
Sabri Kızanlık Ural Emekçi
z/Ware 2.0 Technical Overview
Chapter 1 Introduction to Computers, Programs, and Java
WEB SERVICES.
Self Healing and Dynamic Construction Framework:
Chapter 3 Internet Applications and Network Programming
Spark Presentation.
Unit – 5 JAVA Web Services
Intent To provide a framework to manage the process of software salvage and promote loose coupling through message passing. Salvage means recycling significant.
Pluggable code Repository
Software Configuration Management
Distribution and components
Introduction to Operating System (OS)
Processes The most important processes used in Web-based systems and their internal organization.
CHAPTER 3 Architectures for Distributed Systems
Java programming lecture one
Pegasus Status Update April 2001
Dependency Analysis Use Cases
PHP / MySQL Introduction
Module 1: Getting Started
Ch > 28.4.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
Chapter 2: Operating-System Structures
Wsdl.
Ch 15 –part 3 -design evaluation
Application layer Lecture 7.
Design and Programming
Chapter 2: System Structures
Operating Systems Lecture 4.
Lecture 1: Multi-tier Architecture Overview
Exploring the Power of EPDM Tasks - Working with and Developing Tasks in EPDM By: Marc Young XLM Solutions
Software models - Software Architecture Design Patterns
Objectives In this lesson you will learn about: Need for servlets
Language Processors Application Domain – ideas concerning the behavior of a software. Execution Domain – Ideas implemented in Computer System. Semantic.
Chapter 7 –Implementation Issues
Outline Chapter 2 (cont) OS Design OS structure
Chapter 2: Operating-System Structures
An XML-based System Architecture for IXA/IA Intercommunication
System calls….. C-program->POSIX call
Computer components is a programmable machine that receives input, stores and manipulates data, and provides output in a useful format. Computer The computer.
Distributed Database Management System
Message Passing Systems Version 2
OPeNDAP/Hyrax Interfaces
Architectural Mismatch: Why reuse is so hard?
Ponder policy toolkit Jovana Balkoski, Rashid Mijumbi
Web Application Development Using PHP
Thread per client and Java NIO
DIBBs Brown Dog BDFiddle
Message Passing Systems
Presentation transcript:

Cross Platform Development using Software Matrix Vijay Appadurai Advisor: Dr. James Fawcett Mar 23rd 2007

Cross-Platform Cross-platform software consists of applications which work on multiple system platforms (eg. Linux/Unix, Mac OS, Windows) This may mean supporting all common platforms or simply more than one eg. standard libraries, game development, developer toolkits etc.

Research Overview Our work mainly centers on simplifying cross-platform development We develop a framework to help facilitate the process of cross-platform programming We show how the Software Matrix can be used for the development of such frameworks We demonstrate that simple XML Messaging is effective in developing cross-platform software

Need for Cross-Platform Software Software Industry works in an environment with many different operating systems and processors The software has to be built, tested and deployed on all platforms of interest Cross-platform software can be run everywhere and it can be proposed as a standard

Software Matrix : The Framework Simple XML Messaging Interface Cross-platform messaging protocol Sync and Async Message Passing Pluggable service-oriented architecture

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

Improvements to the Software Matrix : Efficiency In previous models, messages were passed to the Mediator for every cell to cell communication We use a light-weigth Mediator, providing only discovery services for other cells in the Matrix Cells now query the Mediator using a “Matrix Query” message Once the location of a destination cell is known, messages are sent directly

Repository Testbed System We’ve developed the RTB framework for supporting cross-platform development Repository is the system component which contains source code for all platforms Testbed consists of a build process specific to each platform RTClient is an integrated user interface to both the Repository and the Testbed

Repository Testbed Framework Single code base One Test-bed Server for every platform RTClient is the UI to interact with the servers

Software Matrix and RTB system RTB consists of parts that reside on different machines with different platforms Software Matrix technology used for communication between the different parts XML is cross-platform and the Software Matrix messaging protocol is lightweight Repository and Testbed were developed using C++ in windows and linux whereas RTClient was developed using C# in windows We seamlessly integrate parts on different platforms written in different programming languages effectively using Software Matrix technology

Repository Contains the source code for all the platforms of interest Uses XML meta-data to store information and organize the various items in the Repository in a dependency hierarchy Provides source-code control services such as check-in, check-out, extract and versioning Supports browsing of all items and their dependencies in the Repository

Repository Definitions Version: A version is a number generated in sequence by the Repository Server that is assigned to a file. This number is encoded in the file specification using the convention: filename.VersionNumber.Extension Item: An item is a named, versioned XML metadata and all the files on which it holds references, excluding references to other items. Each item refers directly to one or more source code files and configuration files associated with the source code files. XML Manifest: A named, versioned XML file that groups together items with the same name but which may be intended for different platforms. All items within the manifest have the same name and the same version.

Definitions Component: A component is one root item and all the items it references, either directly or indirectly. That is, a component is a top-level item and the closure of all its references. Check-In: The process of storing all the files of an item in the repository and providing sequenced version numbers as described above is called a check-in. On check-in, the item is given a unique name for a given platform and a version number. Check-Out: The process of transferring files of an item from the Repository Server to the RTClient for the purpose of modification is called a check-out. Items checked out can be checked back in to create newer versions.

More Definitions . . . Extraction: The process of transferring a component’s files from the Repository Server to the RTClient and/or Testbed Server is called Extraction. Browsing: The process of viewing the items and components in the Repository Server and their dependencies is called Browsing. Browsing an item shows all the files it is dependent on and their relationships with other items.

Version Control M1 and M2 are items which can run on multiple platforms M1 is dependent on M2 M1 contains different implementations for windows and linux M2 contains the same implementation for both windows and linux

XML Metadata of an Item <manifest> <platform> <pinfo>   <name>Threads</name>   <version>1</version>   <description>Thread class</description>   <compiler>VC++</compiler>   <status>closed</status>   <pname>win32</pname>   <outputType>exe</outputType>   <outputFilename>threads.exe</outputFilename>   <checkedout>no</checkedout>   <miscCompilerOptions />   <miscLinkerOptions />   <references>Lock.1.xml:win32</references>   <sourcefiles>threads.1.h</sourcefiles>   <sourcefiles>threads.2.cpp</sourcefiles> </pinfo> </platform> </manifest> Every item in the Repository has metadata associated with it The combination of name + platform in unique in the Repository Metadata contains information about item name, version, checked-out status, build information and references to other items Also references the source files, documentation files and related configuration files for the item

TestBed Server Dedicated server running in each platform the application has to be deployed on Accepts test requests from the RTClient Uses the services of the Repository to extract components Testbed Server consists of a Builder and a Test Harness

Builder Builds test libraries and executables from the source code files in the Repository Each item has a specification for its build in its meta-data This meta-data is used by builder to generate compiler command on-the-fly for each item This compiler command is executed on the command line and produces output files as requested

Test Harness Contains a test-aggregator that loads the libraries built by the builder Each test library is required to support a ITest interface, so the aggregator creates instances of each test it loads Executes the test by invoking test() function declared in the interface and implemented by each of the test libraries Test results are sent back to the RTClient

RTClient Integrated user-interface to access the services of the Repository Server and the Testbed Server Used for check-in, check-out and insert of code into the Repository Items in Repository can be shown as a tree view and browsed comfortably Also used to issue test requests to the Testbed Server

RTClient : Check-In

RTClient : Repository Browsing

Test Application : Process and Port Sniffer Truly cross-platform client-server application with the user interface written using Java and the server written using C++ We demonstrate development of the server module written using C++. The client and server communicate using XML and sockets The server monitors the running processes and the open ports in the target machine and reports the client which displays the information in the user-interface Parts of the server application can run on both windows and linux while part of the application runs only on one platform

Design: Process and Port Sniffer SnifferServer SnifferServer.cpp SnifferServer.h ProcessSniffer ProcessSnifferWin32.cpp ProcessSnifferLinux.cpp ProcessSniffer.h PortSniffer PortSniffer.h PortSnifferWin32.cpp PortSnifferLinux.cpp Threads Threads.cpp Threads.h Locks Locks.cpp Locks.h FileIO FileIO.h FileIOLinux.cpp SnifferServer: Executive module listening to client requests on a socket. ProcessSniffer: Monitors running processes in a system – OS specific implementation Port Sniffer: Gets port information – OS specific FileIO: Basic Directory and FileIO services for linux Threads: Thread class for both win32 and Posix – runs on all platforms Locks: Sync primitives for win32 and Posix – runs on all platforms

Windows Build Extracts the Sniffer Server from the Repository Builds the Sniffer Server Component for the Win32 Platform

Linux Build Extracts the Sniffer Server from the Repository Builds the Sniffer Server for the Linux Platform

Execution of Sniffer Application on WinXP Shows Java client displaying running processes and open ports in a listview Server application displaying XML messages with these information on the console

Execution Of Sniffer Application on RHEL 4.0 Shows Java client displaying running processes and open ports in a listview Server application displaying XML messages with this information on the console

Conclusion Cross-platform development is important and we have developed a framework to support it The Software Matrix was effective in developing and tying together a large heterogeneous application Simple XML Messaging is the most-effective solution for cross-platform applications Simplifying cross-platform development in this way will help improve productivity in the software industry

Thank You