INF 123: Software Architectures, Distributed Systems, and Interoperability Discussion Session Week 4 - Spring 2008 Instructor: Prof. Richard N. Taylor.

Slides:



Advertisements
Similar presentations
18 Copyright © 2005, Oracle. All rights reserved. Distributing Modular Applications: Introduction to Web Services.
Advertisements

.NET Technology. Introduction Overview of.NET What.NET means for Developers, Users and Businesses Two.NET Research Projects:.NET Generics AsmL.
Web Service Ahmed Gamal Ahmed Nile University Bioinformatics Group
A component- and message-based architectural style for GUI software
Architecture Representation
SOAP Quang Vinh Pham Simon De Baets Université Libre de Bruxelles1.
G O B E Y O N D C O N V E N T I O N WORF: Developing DB2 UDB based Web Services on a Websphere Application Server Kris Van Thillo, ABIS Training & Consulting.
Internet Technologies 1 Master of Information System Management Java Server Faces Model/View/Controller Design Pattern for Web Development Slides.
INF 123: Software Architectures, Distributed Systems, and Interoperability Discussion Session Week 3 - Spring 2008 Instructor: Prof. Richard N. Taylor.
UML CASE Tool. ABSTRACT Domain analysis enables identifying families of applications and capturing their terminology in order to assist and guide system.
1 of 6 Parts of Your Notebook Below is a graphic overview of the different parts of a OneNote 2007 notebook. Microsoft ® OneNote ® 2007 notebooks are digital.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
INF 123: Software Architectures, Distributed Systems, and Interoperability Discussion Session Week 5 - Spring 2008 Instructor: Prof. Richard N. Taylor.
Institute for Software Research©2001, University of California, Irvine Product-Line Architectures André van der Hoek Institute for Software Research University.
INF 123: Software Architectures, Distributed Systems, and Interoperability Discussion Session Week 1 - Spring 2008 Instructor: Prof. Richard N. Taylor.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
C++ fundamentals.
TIBCO Designer TIBCO BusinessWorks is a scalable, extensible, and easy to use integration platform that allows you to develop, deploy, and run integration.
UNIT-V The MVC architecture and Struts Framework.
Chapter 12 Creating and Using XML Documents HTML5 AND CSS Seventh Edition.
11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous.
Tutorial: Introduction to ASP.NET Internet Technologies and Web Application 4 th February 2010.
1 Lecture 22 George Koutsogiannakis Summer 2011 CS441 CURRENT TOPICS IN PROGRAMMING LANGUAGES.
A Scalable Application Architecture for composing News Portals on the Internet Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta Famagusta.
Aurora: A Conceptual Model for Web-content Adaptation to Support the Universal Accessibility of Web-based Services Anita W. Huang, Neel Sundaresan Presented.
Overview of Previous Lesson(s) Over View  ASP.NET Pages  Modular in nature and divided into the core sections  Page directives  Code Section  Page.
SSC2: Web Services. Web Services Web Services offer interoperability using the web Web Services provide information on the operations they can perform.
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
Introducing Axis2 Eran Chinthaka. Agenda  Introduction and Motivation  The “big picture”  Key Features of Axis2 High Performance XML Processing Model.
1 The Architectural Design of FRUIT: A Family of Retargetable User Interface Tools Yi Liu, H. Conrad Cunningham and Hui Xiong Computer & Information Science.
An Introduction to Software Architecture
Architecture-Based Runtime Software Evolution Peyman Oreizy, Nenad Medvidovic & Richard N. Taylor.
Virtual techdays INDIA │ Nov 2010 Developing Office Biz Application using WPF on Windows 7 Sarang Datye │ Sr. Consultant, Microsoft Sridhar Poduri.
CSCI 6962: Server-side Design and Programming Introduction to Java Server Faces.
Assessing the Suitability of UML for Modeling Software Architectures Nenad Medvidovic Computer Science Department University of Southern California Los.
Tutorial 121 Creating a New Web Forms Page You will find that creating Web Forms is similar to creating traditional Windows applications in Visual Basic.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Implementing Architectures Software Architecture.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
Web Services Description Language CS409 Application Services Even Semester 2007.
11 Web Services. 22 Objectives You will be able to Say what a web service is. Write and deploy a simple web service. Test a simple web service. Write.
Session 1 SESSION 1 Working with Dreamweaver 8.0.
Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about.
INF 123: Software Architectures, Distributed Systems, and Interoperability Discussion Session Week 1 - Spring 2008 Instructor: Prof. Richard N. Taylor.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Selected Topics in Software Engineering - Distributed Software Development.
Web Services. ASP.NET Web Services  Goals of ASP.NET Web services:  To enable cross-platform, cross- business computing  Great for “service” based.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
1 Introduction  Extensible Markup Language (XML) –Uses tags to describe the structure of a document –Simplifies the process of sharing information –Extensible.
07/09/04 Johan Muskens ( TU/e Computer Science, System Architecture and Networking.
Grid Services I - Concepts
Internet Technologies Review Week 1 How does Jigsaw differ from EchoServer.java? What abstractions are made available to the servlet writer (under.
ModelPedia Model Driven Engineering Graphical User Interfaces for Web 2.0 Sites Centro de Informática – CIn/UFPe ORCAS Group Eclipse GMF Fábio M. Pereira.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 13. Review Shared Data Software Architectures – Black board Style architecture.
User Profiling using Semantic Web Group members: Ashwin Somaiah Asha Stephen Charlie Sudharshan Reddy.
Kemal Baykal Rasim Ismayilov
ASP.NET Web Services.  A unit of managed code installed under IIS that can be remotely invoked using HTTP.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Comanche A GUI management tool for Apache Daniel López Ridruejo
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
® IBM Software Group © 2007 IBM Corporation Module 1: Getting Started with Rational Software Architect Essentials of Modeling with IBM Rational Software.
Copyright 2007, Information Builders. Slide 1 iWay Web Services and WebFOCUS Consumption Michael Florkowski Information Builders.
IBM Proof of Technology Discovering the Value of SOA with WebSphere Process Integration © 2005 IBM Corporation SOA on your terms and our expertise WebSphere.
SOAP, Web Service, WSDL Week 14 Web site:
Basic Concepts of Software Architecture. What is Software Architecture? Definition: – A software system’s architecture is the set of principal design.
XML and Distributed Applications By Quddus Chong Presentation for CS551 – Fall 2001.
ArchStudio 4 An Introductory Tutorial
Based on Eric Dashofy’s slides for
(Includes setup) FAQ ON DOCUMENTS (Includes setup)
(Includes setup) FAQ ON DOCUMENTS (Includes setup)
Presentation transcript:

INF 123: Software Architectures, Distributed Systems, and Interoperability Discussion Session Week 4 - Spring 2008 Instructor: Prof. Richard N. Taylor TA: Rosalva Gallardo

Overview Questions about Assignment 1 ArchStudio 4 Hello World Demo using ArchStudio 4 and Myx.fw

Questions about Assignment 1 How our answer for 2.2 should look like? Should I include code details? How many types of connector do we have for 2.3? Any other questions? ==> Post your questions in the Noteboard and check it often

ArchStudio 4 An Introductory Tutorial Slides adapted from Hazel Asuncion

Roadmap What is ArchStudio 4 Concepts xADL 2.0 Data Bindings Myx Architectural Style Toolset integrated with Eclipse Eclipse plug-in AIM Launcher ArchEdit Archipelago ArchLight Selector Type Wrangler Using ArchStudio Hello World Demo

What is ArchStudio 4? Architecture-centric IDE Open-source Eclipse plug-in Integrated tools for software architecture Modeling Visualization Analysis Implementation Ref:

Just Another IDE? No, it complements existing IDEs like Eclipse Minimize architectural drift “Architectural drift: is the introduction of principal design decisions into a system’s descriptive architecture that are not included in, encompassed by, or implied by the prescriptive architecture, but which do not violate any of the prescriptive architecture’s design decisions… If not properly addressed, architectural drift will eventually result in architectural erosion.” [Taylor et al, 2009] Built on its own architecture style

Concepts xADL 2.0 Data Bindings Myx Architectural Style

xADL 2.0 Architectural Description Language in XML developed by ISR at UCI This ADL is defined in a set of XML Schemas Modeling language behind ArchStudio Modular and highly extensible Core models Components (computation) Connectors (communication) Interfaces (the exposed entry and exit points for components and connectors) Configurations (topology) Ref:

xADL 2.0 Tools can access the architecture description in xADL 2.0 via a common interface, the component xArchADT. Base: xArch Instances Core Extensions Architecture structures and types Product Families – versions, options, variants Implementation mappings – architecture types to implementations Ref:

xADL 2.0: CM/Product Family Arch Ref:

xADL 2.0: Implementation Mapping ArchStudio 4 currently supports mapping to Java files Ref:

XML eXtensible Markup Language Means of representing structured data Looks like HTML but the tags are user- defined Schema Describe data in the XML doc The “rules” for the XML doc Ref:

xADL 2.0 Core Model Server Client HTTP main Server getResource in Client getResource out HTTP getResource in getResource out

xADL 2.0 Components Server Client HTTP Server getResource in Client getResource out

xADL 2.0 Connector Server Client HTTP HTTP getResource in getResource out

xADL 2.0 Interfaces Server Client HTTP Server getResource in Client getResource out HTTP getResource in getResource out

Data Bindings A set of Java classes that can be used to create and manipulate architecture descriptions Generated by “Apigen” tool, based on XML schemas Reduces the complexity of editing architecture descriptions by hiding the XML and providing constructs more familiar to architects Parses from and serializes to XML XML API (DOM, SAX) Elements Attributes Documents Namespaces Data Binding API Components Connectors Interfaces Links Configurations etc. vs. Ref:

Data Binding Library Ref: Dashofy, E., Asuncion, H., et al. ArchStudio 4: An Architecture-Based Meta-modeling Environment. ICSE 2007 Demo Paper.

Myx Architecture Style Purpose Support building flexible, high performance tool- integrating environments Serve as a foundation for building environments in Eclipse Heritage Borrows most of key properties from C2 style System implementation currently supported in ArchStudio 4 Ref:

Myx Architectural Style Rules Components are the loci of computation Connectors are the loci of communication Components communicate only through well-defined provided and required interfaces Components and connectors have two ‘faces’: ‘top’ and ‘bottom’ Components interact through three distinct patterns Synchronous bottom-to-top procedure call Asynchronous top-to-bottom (notification) messaging Asynchronous bottom-to-top (request) messaging Components may only make assumptions about the services provided above them, and may make no assumptions about the services provided below them. Applications have at least one main thread of control. Additional threads may be created by components as necessary. Asynchronous connectors also have their own threads. Shared Memory Ref:

Myx Architectural Style Benefits Easy to reuse - components are relatively independent of each other Easy to reconfigure – communication only via explicit interfaces Enables runtime modification – through dynamic proxies and event pumps

Myx.fw Framework Difficult to adhere to the constraints of a style using an existing programming language Bridge the gap between Myx and Java: myx.fw Component and Connectors implement IMyxBrick interface Ref:

Implementing a myx.fw component Components have main classes that implement IMyxBrick They may have as many auxiliary classes as you want The main class may just be a wrapper for services provided internally AbstractMyx SimpleBrick IMyxBrick LunarLander Components extends implements Ref:

Implementing a myx.fw component Components have three main jobs Store data from the framework (IMyxBrickItems) Implement lifecycle methods (init, begin, end, destroy) Provide true objects for all provided interfaces Ref:

Component Jobs Store IMyxBrickItems from the framework The framework needs to store some data about the component along with the component Abstract base classes take care of this for you Implement lifecycle methods Called by the framework when the architecture is in particular states init(): Brick is created begin(): Brick is wired into the architecture and ready to start end(): Brick is about to be unwired and shut down destroy(): Brick is about to be dismissed Ref:

Component Jobs Provide true objects for each provided interface Each provided/required interface has a name The framework will occasionally ask a component “give me the object that corresponds to this provided interface” Likewise, a component may request, from the framework, the true object corresponding to one of its required interfaces Ref:

Toolset Integrated with Eclipse Eclipse plug-in ArchStudio Perspective AIM Launcher – launch the system in development within ArchStudio ArchEdit Visualization Tree-view – schema driven Indicate implementation mappings Archipelago Visualization and modeling Boxes and arrows ArchLight - analysis Selector – product Families Type Wrangler – consistency checks between types and instances

ArchStudio 4.0 Built on its own tools and technologies Architecture specified in xADL 2.0 Upon invocation Bootstrapper parses the ArchStudio xADL file using the Data Binding Library Bootstrapper steps through xADL file and instantiates the various components

ArchStudio Tools xArchADT – Data Store Live integration between tools Ref:

Using ArchStudio Hello World Demo

1. Create Architecture 1.1 Create Structure 1.2 Create Types Set and Component Type 2. Add component 2.1 Edit description 2.2 Assign type to component 3. Map Architecture to Implementation 4. Write HelloWorld Java class 5. Move xml file to Java Project 6. Run Hello World

1. Create Architecture In Eclipse, go to ArchStudio Perspective Create a new project. File->New->Project. General->Project. Next. Project Name: HelloWorldProject. Finish

1. Create Architecture Right-click on the Project and select New- >Other…ArchStudio 4 -> ArchStudio architecture Description File Name: Architecture.xml. Finish. Open the xml file with Archipelago.

1.1 Create Structure On the Outline View, expand the root element. Right click on Structures. Select New Structure. Expand Structures. Right click on the new Structure and select Edit Description. New Description: HelloWorld

1.2 Create Type Set and Component Type On the Outline View, select the root element. Right click on it. Select Create Type Set. Expand Types. Right click on Component Types and select New Component Type. Select the new Type. Right click on it and select Edit Description. New Description: HelloWorldType

2. Add Component In the Outline View, double click on the HelloWorld structure Right click on the Archipelago View and Select New Component

2.1 Edit description Right click on the new component. Select Edit Description… New Description: HelloWorld

2.2 Assign type to component Select HelloWorldType in the Outline View. Drag it and drop it on the HelloWorld component.

3. Map Architecture to Implementation In the Navigator View, right click on the xml file. Open With->ArchEdit In the Outline View, Expand Xarch, Arch Types, Component Type [HelloWorldType]. Right click on it. Select Promote to VariantComponentTypeImpl

3. Map Architecture to Implementation Similarly, right click on Component Type [HelloWorld Type]. Select Add Implementation. Right click on Implementation and select Promote to JavaImplementation Right click on Implementation and select Add Main Class

3. Map Architecture to Implementation Right click on Main Class and select Add JavaClassName Expand MainClass and double click on Java ClassName and enter “HelloWorld” as a value

4. Write Java Class Create Java Project. File->New->Java Project. Project Name: HelloWorld. Next. Click on Projects, Add.. Check edu.uci.isr.myx.fw. OK and Finish.

4. Write Java Class Right click on HelloWorld project and select New-> Class Class Name: Hello World. Finish.

4. Write Java Class Copy the following content in HelloWorld.java and Save the file import edu.uci.isr.myx.fw.AbstractMyxSimpleBrick; import edu.uci.isr.myx.fw.IMyxName; import edu.uci.isr.myx.fw.MyxUtils; public class HelloWorld extends AbstractMyxSimpleBrick{ // category: constructor public HelloWorld( ){} // category: startup and cleanup public void init(){} public void begin() { System.out.println("Hello world!"); } public void end(){} public void destroy(){} // override a required method public Object getServiceObject(IMyxName name){ //Since we are not implementing an interface in this class //we will return null. //if(name.equals(INTERFACE_NAME_IN_NAME)){ // return this; //} return null; }

5. Move XML file to Java Project Create “arch” folder in HelloWorld/src Move (drag and drop)Architecture.xml from HelloWorldProject to HelloWorld/src/arch

6. Run Hello World In the Navigator View, right click on Architecture.xml, select Open With AIM Launcher In the Outline View, double click on HelloWorld Click on Instantiate

6. Run Hello World You should see the following output in the Console