Intent To provide a framework to manage the process of software salvage and promote loose coupling through message passing. Salvage means recycling significant.

Slides:



Advertisements
Similar presentations
웹 서비스 개요.
Advertisements

MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
UNIT-V The MVC architecture and Struts Framework.
Design Patterns.
Zhonghua Qu and Ovidiu Daescu December 24, 2009 University of Texas at Dallas.
An Introduction to Software Architecture
Patterns in programming 1. What are patterns? “A design pattern is a general, reusable solution to a commonly occurring problem in software. A design.
Putting it all together Dynamic Data Base Access Norman White Stern School of Business.
Object Oriented Software Engineering Chapter 16 and 17 review 2014/06/03.
Patterns in programming1. 2 What are patterns? Answers to common design problems. A language used by developers –To discuss answers to design problems.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Object Oriented Software Development
Design Patterns Introduction
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Faculty Advisor – Dr. Suraj Kothari Client – Jon Mathews Team Members – Chaz Beck Marcus Rosenow Shaun Brockhoff Jason Lackore.
CSE 332: Design Patterns (Part II) Last Time: Part I, Familiar Design Patterns We’ve looked at patterns related to course material –Singleton: share a.
FlowLevel Client, server & elements monitoring and controlling system Message Include End Dial Start.
Design Patterns Creational Patterns. Abstract the instantiation process Help make the system independent of how its objects are created, composed and.
CLASSIFICATION OF DESIGN PATTERNS Hladchuk Maksym.
Design Patterns CSCE 315 – Programming Studio Spring 2013.
12. DISTRIBUTED WEB-BASED SYSTEMS Nov SUSMITHA KOTA KRANTHI KOYA LIANG YI.
J2EE Platform Overview (Application Architecture)
Model Driven Development using
Facade Pattern Jim Fawcett CSE776 – Design Patterns Summer 2010
Presented by FACADE PATTERN
GRASP – Designing Objects with Responsibilities
Design Patterns: MORE Examples
Software Design Refinement Using Design Patterns
Mediator Design Pattern
Abstract Factory Pattern
Visit for more Learning Resources
CSE775 - Distributed Objects, Spring 2006
Project Center Use Cases Revision 2
Segments Basic Uses: slides minutes
MPCS – Advanced java Programming
Self Healing and Dynamic Construction Framework:
Project Center Use Cases
Cross Platform Development using Software Matrix
Activities and Intents
Distribution and components
LCGAA nightlies infrastructure
Part 3 Design What does design mean in different fields?
Out-of-Process Components
Enterprise Computing Collaboration System Example
Project Center Use Cases Revision 3
Factory Method Pattern
Facade Pattern Jim Fawcett CSE776 – Design Patterns Summer 2010
object oriented Principles of software design
PHP / MySQL Introduction
Project Center Use Cases Revision 3
Abstract Factory Pattern
Enterprise Application Architecture
Decorator Design Pattern
Intent (Thanks to Jim Fawcett for the slides)
Multiuser Protection and the Mediator Pattern
Advanced Programming Behnam Hatami Fall 2017.
Tools of Software Development
Jim Fawcett CSE776 – Design Patterns Summer 2003
Software Architecture
An Introduction to Software Architecture
Chapter 7 –Implementation Issues
Introduction of Week 11 Return assignment 9-1 Collect assignment 10-1
Middleware, Services, etc.
Out-of-Process Components
Informatics 122 Software Design II
Executable Specifications
Message Passing Systems Version 2
Message Passing Systems
Presentation transcript:

Intent To provide a framework to manage the process of software salvage and promote loose coupling through message passing. Salvage means recycling significant blocks of existing systems for use in a newly developed system. Unlike reuse, it does not insist on zero change, but instead focuses on few, tightly controlled changes.

Motivation Consider a hypothetical Radar System Development firm. It develops customized Radar Systems based on the client requirements. The company has developed many radar systems in past projects, based on an original design, but responsive to current customer requirements. Now suppose they get a new client that asks for a set of features where some are almost similar to systems developed in past and some of the features require new code development. To build this new radar system, large pieces of software from the existing radar systems software - pieces not necessarily designed for reuse - were extracted.

Motivation Modifying and integrating these pieces is often a challenging task, as extracted code has many dependencies with code in the system in which it was originally embedded. Adding a new feature set and code pieces adds more problems and the whole process becomes complex.

Applicability A new system is to be composed by extracting code blocks from existing code base and integrating it with new blocks. When a system is to be developed in incremental steps where all code blocks don’t exist at once and empty place holder blocks initially fill gaps and later contribute to system by adding functionality.

Applicability To achieve dynamic reconstruction by plugging/un- plugging blocks at run time. Experimenting with variations of a system by trying various combinations of existing blocks and composing the system with empty placeholders or working blocks for the remaining system parts.

Structure

Structure

Structure

Participants IMsgPass Wrapper AMessageHandler Message Defines interface for cells to communicate. Wrapper Converts any software block into matrix cell and provides blocking queue to store incoming messages and dispatcher thread to dequeue messages from queue. Its virtual function dispatch is overridden by derived classes to handle messages in application specific ways. AMessageHandler Defines code block aka cell and has to implement message handler to process incoming messages and perform operations based on that. Message Defines methods to create an xml message with source and destination to hold parameters required to communicate between code blocks.

Collaboration A block, acting as mediator, creates instances of other blocks and routes messages between them based on source and destination fields of message. Instances are generally created once and are stored in static data structure. We’ve experimented with different levels of mediator activity in several of our research projects.

Consequences The Software Matrix consissts of software-IC code blocks loosely coupled code blocks almost any existing component can be converted to a matrix cell flexible, as constructing a new system from existing blocks won’t have dependencies on a large set of unique function signatures and plugging of new blocks is very easy. promises reduced development cost and maintenance cost and quicker time-to-market for product families composed of same base code blocks register existing cells and put in empty, place-holder, cells for future blocks, developing their functionality later.

Consequences Makes a system dynamic Cells can be plugged in or plugged out at run time Cells can be upgraded at run time without shutting down the system Testing of the system can be made more dynamic and innovative create test cells and replace any system cell with special test cell and test system at run time It adds liability on developers to communicate message interpretations across various teams or make message usage public so anyone can use their cells Trade off between flexibility and message-passing over- head

Implementation Mediator based implementation Hierarchy of Mediators Mediator loads blocks and starts up the system and does the message routing. Hierarchy of Mediators mediator does part of the message routing if can, but if it can’t, then it will pass the message to a top level mediator who can forward it to mediator capable of routing that message Mediator not routing messages Mediator is still loading all blocks but whenever particular block wants to talk to other block, mediator will connect them directly and let them talk.

Implementation If implemented in C# or C++ on windows platform, blocks (cells) can be composed as Dynamic Link Libraries and can be loaded through loader. Java classes can be converted to jar files and classes can be loaded from classpath using class discovery

Known uses The Software Matrix: Architecture for software salvage – Riddhiman Ghosh A directory synchronizer using software matrix and a conventional approach both implemented for comparison. Performance degradation not perceptible to human users. We measured a few percent difference in operational latency Framework for self-healing and dynamic construction: application of software matrix – Aniruddha Krishna Observed ease of system development using matrix architecture. demonstrated effectiveness of dynamically rearranging system components to heal a system after part of the system failed

Known uses Remote Software Assistant class project (CSE 784: Software Studio) Class of 24 students implemented software system consisting of tools like model builder, software repository, testbed server, requirements database manager, bug tracker, change logger, and a code analyzer. Successfully demonstrated how easily things can be integrated and composed of various blocks and how any system can be composed using message passing based software matrix framework.

Known uses Cross Platform Development - Vijay Appadurai demonstrated building programs for both Windows and Linux platforms from a common Software Matrix code base. Athena: Tool for diagram based code generation - Tilak My goal is to show dynamic templatized construction from available cells and placeholder cells and experiment with possible designs of systems and automatic code generation.

Patterns part of this pattern Mediator Mediator pattern is part of this pattern. Mediator does block loading, maintains instances of the code blocks and may do message routing Abstract factory Abstract factory is used to create block instances Singleton Maintaining static data structure to maintain block instances is similar to using singleton pattern

References Dr. Fawcett’s research page http://www.ecs.syr.edu/faculty/fawcett/handouts/webpages/research.htm Riddiman Ghosh’s research page http://www.ecs.syr.edu/faculty/fawcett/handouts/webpages/softwarematrix.htm Anirudha Krishna’s research page http://www.ecs.syr.edu/faculty/fawcett/handouts/webpages/SelfHealingSoftwareMatrix.htm Vijay Appadurai’s research page http://www.ecs.syr.edu/faculty/fawcett/handouts/webpages/SWMatrixCrossPlatformDev.htm Software Studio http://www.ecs.syr.edu/faculty/fawcett/handouts/webpages/RSA/rsa2006.html Design Patterns: Elements of Reusable Object-Oriented Software - Gang of four Hill side http://hillside.net/