Student: Nirmal Fernando
Student e-mail: nirmal070125 AT gmail DOT com
Student Major: Computer Science and Engineering
Student Degree: Undergraduate
Student Graduation: October 2011
Organization: Apache Software Foundation
Assigned Mentor: Raymond Feng
Abstract:
Apache Tuscany provides a comprehensive infrastructure to simplify the task of developing and managing Service Oriented Architecture (SOA) solutions based on Service Component Architecture (SCA) standard. Tuscany Java SCA is a lightweight runtime that is designed to run standalone or provisioned to different host environments.
...
This tool can serve multiple purposes:
1) Help to document Tuscany's tutorials and samples.
2) Be integrated Integrate with the SCA domain manager to visualize the SCA domain (contributions, composites, nodes etc).
Implementation Plan:
Composite XML should should be generated using the Tuscany's in-memory representation of the composite model.
It will then will give as an input for the Composite Analyzer. Composite Analyzer then analyzes the Composite Analyser. Composite Analyser is not a single object but the whole program itself as a single unit. Composite Analyser then analyses the XML document
and grab the relevant DOM Elements such as as Composite, Component, Service, Reference, Property, Wire etc, Text etc. and starts to
build the SVG document using using SVG DOM API of of Apache Batik.After Composite Analyzer built up the SVG document it will be the output which represents the
Basically Composite Analyser contains three objects, CompositeFileReader, LayoutBuilder, and SVGDocumentBuilder.
- CompositeFileReader is responsible for reading the input composite XML file and provide the necessary details to LayoutBuilder.
- LayoutBuilder then builds a layout which uses the space optimally and provides the details of positions and sizes of each artifact to SVGDocumentBuilder. I already researched on few layout building algorithms and tools (JGraphX) but further research will be done and will pick the most appropriate algorithm.
- SVGDocumentBuilder creates the DOM Elements according to the layout and builds the final SVG composite diagram.
Since DOM elements (Composite, Component, Service, Reference, Property, Wire, Text etc.) possibly be static classes which holds the
shape of the artifact, colour, other static properties and will be given the dynamic properties (such as position, size etc.)
as input, in order to create a DOM element and it will be then handover to the Composite Analyzer.will be used multiple times in order to build a single diagram, I am planning to create separate objects for those elements. Each object is responsible for creating its own element according to the requirement and giving it to the SVGDocumentBuilder. Most of the artifacts will hold a same structure and behaviour, therefore I have implemented following class diagram for the prototype.
In the prototype I built to create a SVG diagram using Apache Batik I used following SVG elements for each artifact mentioned above.
- Composite, Component: “rect” SVG elements with rounded corners
- Property: “rect” SVG element with equal height and width
- Reference: “polygon” SVG element with 6 vertices and coordination of point B of the following sketch should be given to the addElement method.
- Service: “polygon” SVG element with 6 vertices and coordination of point A of the following sketch should be given to the addElement method.
- Wire: “polyline” SVG element used to connect a Reference and a Service object.
- Text: “text” SVG element used to add a given text
Following image shows a sample composite diagram which is built using Apache Batik as a prototype for this project after converting to PNG format.
Deliverables:
- Code of the tool which will be built.
- Tests to verify the accuracy of the diagrams generated.
- User documentation on operation of the tool and sample diagrams generated.
Time-line:
April 20 - Till May 2310
- Read on Tuscany SCA Java, understand the design, and concentrate on project relevant parts
- Read on Scalable Vector Graphics (SVG) 1.1
- Read on Apache Batik and build write examples to get familiar
- Recognize all the artifacts of SCA.
- Research on layout building algorithms and tools and find out the appropriate algorithm
May 11 - May 24
- Finalize the process view after getting the comments from the developers’ community and from my mentor.
- Start initial implementations - building artifact structures
May 24 - June 31
- Start implementing Composite Analyzer.
May 24 - July 10
- MidPreparing for the mid-term evaluation of the project.
July 12 - August 15
- Continue to implement Composite Analyzer.
- Improve performance by using parallel design patterns.
- Develop test cases to verify the accuracy of the generated diagrams.
August 16 - August 22
- Wrap up the work done, and polishing up the code.
- Preparing for the final evaluation.
August 26
- Final evaluation deadline.
Community Interactions:
Apache Tuscany developers’ community is the main community behind this project and I highly appreciate comments/ ideas of the expert developers of Tuscany and consider those as a great opportunity to learn and contribute more and more to the improvement of Tuscany.
Biography:
I am Nirmal Fernando, final year undergraduate at Department of Computer Science and Engineering at University of Moratuwa, Sri Lanka. I am very competent at Java programming language, OOP, XML, XSL and data structures and algorithms. I am familiar with SOA concepts and web services.
I participated in GSoC 2010 for Apache Derby (RDBMS in Java) project and successfully finished the project. This is a sample of the work (final output) which I've done for Derby last summer (http://nirmalfdo.blogspot.com/p/my-work-at-gsoc-2010.html).
You can find my profile and recommendations at LinkedIn (http://www.linkedin.com/profile/view?id=54105394&trk=tab_pro).
I am looking forward to have an exciting summer with Apache Tuscany, and I consider this is a great opportunity to me, to apply my knowledge and skills into a real world application which benefits many people around the globe.
Thanks!