Sweet Talk (part 2) Tool Support for Sweet Phil Quitslund.

Slides:



Advertisements
Similar presentations
Extending Eclipse CDT for Remote Target Debugging Thomas Fletcher Director, Automotive Engineering Services QNX Software Systems.
Advertisements

©2004 BLACKBOARD, INC. ALL RIGHTS RESERVED. Java Integrated Development Environments Heather Natour Senior Lead Engineer Blackboard Inc. July 18 th 10:15am.
Integrated Development Environments, Source Control Repositories, Automated Testing Tools, Bug Tracking, Code Analysis Tools, Build Tools, Project Hosting.
ALAR E2 Architecture - Minh Vu1 E2 Plugin Architecture Project Minh Vu Mentor: Craig Thompson CSCE Department, University Of Arkansas.
Introduction to Eclipse plugin development for CSU 670 course project, Selector language (Xaspect) editor plugin implementation.
Developing an Eclipse Plug-in David Gallardo. Platform Runtime Workspace Help Team Workbench JFace SWT Eclipse Project Java Development Tools (JDT) Their.
Goals Give you a feeling of what Eclipse is.
Leveraging the Eclipse Ecosystem for the Scientific Community Tony ANSTO Andy ESRF ICALEPCS 2005.
Eclipse Architecture Dwight Deugo Nesa Matic
mbe/pa/olm 1 Integration of BETA with Eclipse eTX presentation Barcelona 2004 Peter Andersen Mads Brøgger Enevoldsen Ole Lehrmann Madsen.
V0.01 © 2009 Research In Motion Limited Introduction to Java Application Development for the BlackBerry Smartphone Trainer name Date.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
1 Plug-in Development Environment (PDE) Guide. 2 Introduction to PDE l What is PDE: »a tool designed to help you develop platform plug-ins while working.
Stimulating reuse with an automated active code search tool Júlio Lins – André Santos (Advisor) –
1 Software Reuse in Eclipse Kellie-Ann Smith Norgye Yuanyuan Song Xiang Yin Jia Xu.
Test Automation Best Practices
Version Enterprise Architect Redefines Modeling in 2006 An Agile and Scalable modeling solution Provides Full Lifecycle.
03 Using Eclipse. 2 IDE Overview An IDE is an Interactive Development Environment Different IDEs meet different needs BlueJ and DrJava are designed as.
Overview of Eclipse Parallel Tools Platform Adam Leko UPC Group HCS Research Laboratory University of Florida Color encoding key: Blue: Information Red:
COMP 6471 Software Design Methodologies Winter 2006 Dr Greg Butler
ESB Guidance 2.0 Kevin Gock
Introduction to Version Control with SVN & Git CSC/ECE 517, Fall 2012 Titus Barik & Ed Gehringer, with help from Gaurav.
MAVEN-BLUEMARTINI Yannick Robin. What is maven-bluemartini?  maven-bluemartini is Maven archetypes for Blue Martini projects  Open source project on.
PRESENTATION 2 Sri Raguraman CIS 895 Kansas State University.
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
Duke University Program Design & Construction Course Application Development Tools Sherry Shavor
© 2005 by IBM Corporation; made available under the EPL v1.0 | February 28 th 2005 Adopting the Eclipse™ Test and Performance Tools Platform (TPTP) project.
XML in Development of Distributed Systems Tooling Programming Runtime.
Tools for Diagrammatic Specifications Stian Skjerveggen Supervisors: Yngve Lamo, Adrian Rutle, Uwe Egbert Wolter.
Introduction to Eclipse Plug-in Development. Who am I? Scott Kellicker Java, C++, JNI, Eclipse.
For Eclipse users Reduces information overload For developers and integrators Provides framework for tasks and contexts Mik Kersten, project lead EclipseCon,
Ontology Engineering and Plugin Development with the NeOn Toolkit Plug-in Development for the NeOn Toolkit June 1st, 2008 Michael Erdmann, Peter Haase,
Delivering business value through Context Driven Content Management Karsten Fogh Ho-Lanng, CTO.
Hyper/J and Concern Manipulation Environment. The need for AOSD tools and development environment AOSD requires a variety of tools Life cycle – support.
Aspect Oriented Programming Sumathie Sundaresan CS590 :: Summer 2007 June 30, 2007.
Mylyn The Task-Focused Interface Mik Kersten, Tasktop President & CTO, Mylyn Project Lead.
Introduction to Eclipse CSC 216 Lecture 3 Ed Gehringer Using (with permission) slides developed by— Dwight Deugo Nesa Matic
INFSO-RI Module 01 ETICS Overview Etics Online Tutorial Marian ŻUREK Baltic Grid II Summer School Vilnius, 2-3 July 2009.
Testing. 2 Overview Testing and debugging are important activities in software development. Techniques and tools are introduced. Material borrowed here.
Distributed Java Programming Distributed Java Programming Setting up a Java Development Environment.
Perforce Software Version Everything.. Visual Studio Industry Partner Perforce Software NEXT STEPS Contact us at: Perforce products.
Eclipse Eclipse An IDE is an Integrated Development Environment Different IDEs meet different needs – BlueJ, DrJava are designed as teaching.
CMSC 466 / 666 Yong Rao Feb. 11, 2004 Revised Mar. 15, 2004.
A (very brief) intro to Eclipse Boyana Norris June 4, 2009.
15/06/2006 The Future of Visual DCT EPICS Collaboration 2006 Argonne National Laboratory
Eclipse Simple Profiler Ben Xu Mar 7,2011. About Eclipse simple profiler is a open source project to analyze your plug-ins/RCPs performance.
Eclipse 24-Apr-17.
Mik Kersten Mylyn Project Lead, Tasktop President & CTO BZ Media Webinar, July , made available under the EPL v1.0 Eclipse 3.3 and Mylyn 2.0.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 13. Review Shared Data Software Architectures – Black board Style architecture.
Development with Eclipse Software Engineering Prof. Werner Krandick.
PRESENTATION 2 Sri Raguraman CIS 895 Kansas State University.
Architecture for an Ontology and Web Service Modelling Studio Michael Felderer & Holger Lausen DERI Innsbruck Frankfurt,
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
® IBM Software Group © 2009 IBM Corporation Essentials of Modeling with IBM Rational Software Architect, V7.5 Module 18: Applying Patterns and Transformations.
Refining the Use Cases 1. How Use Cases Evolve  Early efforts typically define most of the major use cases.  The refining stages complete the process.
Bogor-Java Environment for Eclipse MSE Presentation III Yong Peng.
aspectj tools new and noteworthy Mik Kersten University of British Columbia Andy Clement, George Harley IBM Hursley Labs.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
Eclipse.NET An Integration Platform for ProjectIT-Studio João Saraiva IST & INESC-ID (GSI)
ECLIPSE RICH CLIENT PLATFORM Part 1 Introduction.
DECTRIS Ltd Baden-Daettwil Switzerland Continuous Integration and Automatic Testing for the FLUKA release using Jenkins (and Docker)
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
Goals Give you a feeling of what Eclipse is.
SE goes software engineering; (practically) managing the Compose
A (very brief) intro to Eclipse
Architecture, Components, Configuration
MySQL Migration Toolkit
SE goes software engineering; (practically) managing the Compose
An Introduction to Eclipse
Presentation transcript:

Sweet Talk (part 2) Tool Support for Sweet Phil Quitslund

Plan 1.Sweet Tooling issues 2.Introduction to Eclipse 3.Sweet Plugin at a glance 4.Implementation notes 5.Pitch and Caveats 6.Where next

Plan 1.Sweet Tooling issues 2.Introduction to Eclipse 3.Sweet Plugin at a glance 4.Implementation notes 5.Pitch and Caveats 6.Where next

Automating the Build The Problem: Manual builds considered painful

Automating the Build generative techniques require extra steps to stage builds The Problem: Manual builds considered painful

Automating the Build generative techniques require extra steps to stage builds The Problem: Manual builds considered painful the rub: manual builds hurt and interrupt programmer flow

public abstract class List { public case Nil public case Cons(private int head, private List tail) } public int length() case List abstract; case Nil { return 0; } case Cons { return 1 + tail.length(); } Automating the Build

public abstract class List { public case Nil public case Cons(private int head, private List tail) } public int length() case List abstract; case Nil { return 0; } case Cons { return 1 + tail.length(); }

Automating the Build 3 “Introductions” public abstract class List { public case Nil public case Cons(private int head, private List tail) } public int length() case List abstract; case Nil { return 0; } case Cons { return 1 + tail.length(); }

Automating the Build public abstract class List { public case Nil public case Cons(private int head, private List tail) } public int length() case List abstract; case Nil { return 0; } case Cons { return 1 + tail.length(); }

Automating the Build repository S

Automating the Build repository J J J S

Automating the Build repository J J J S C C C

Managing Dependencies The Problem: Crufty Orphans

Managing Dependencies generated files are "orphaned" when their introductions get removed. The Problem: Crufty Orphans

Managing Dependencies generated files are "orphaned" when their introductions get removed. The Problem: Crufty Orphans the rub: manual maintenance is tedious and error prone

Managing Dependencies repository J J J S C C C

Managing Dependencies repository J J J S C C C

Managing Dependencies repository J J J S C C C

Managing Dependencies repository J J J S C C C

Managing Dependencies repository J J S C C C

Managing Dependencies repository J J S C C

Managing Dependencies repository J J S C C Done manually this is tedious and prone to error!

Error Handling The Problem: Say What?

Error Handling Errors in generated files can be hard to trace back to their source The Problem: Say What?

Error Handling Errors in generated files can be hard to trace back to their source The Problem: Say What? the rub: indirection decreases understandability

public abstract class List { public case Nil public case Cons(private int head, private List tail) } public int length() case List abstract; case Nil { return 0; } case Cons { return 1 + tail.length(); } Error Reporting

public abstract class List { public case Nil public case Cons(private int head, private List tail) } public int length() case List abstract; case Nil { return 0; } case Cons { return 1 + tail.length(); } Error Reporting Legal Sweet

public abstract class List { public case Nil public case Cons(private int head, private List tail) } public int length() case List abstract; case Nil { return 0; } case Cons { return 1 + tail.length(); } case Nil { return 1; } Error Reporting Legal Sweet?

Error Reporting public abstract class List { public case Nil public case Cons(private int head, private List tail) } public int length() case List abstract; case Nil { return 0; } case Cons { return 1 + tail.length(); } case Nil { return 1; } Legal Sweet? Nope…

Error Reporting Conflicting declarations public abstract class List { public case Nil public case Cons(private int head, private List tail) } public int length() case List abstract; case Nil { return 0; } case Cons { return 1 + tail.length(); } case Nil { return 1; }

Error Reporting (from 10,000ft) repository S S S

Error Reporting (from 10,000ft) repository S S S

Error Reporting (from 10,000ft) repository S S S

Error Reporting (from 10,000ft) repository S S S

Error Reporting (from 10,000ft) repository S S S

Plan 1.Sweet Tooling issues 2.Introduction to Eclipse 3.Sweet Plugin at a glance 4.Implementation notes 5.Pitch and Caveats 6.Where next

What is Eclipse? A universal platform for integrating development tools –“An IDE for everything and nothing in particular” An open, extensible architecture based on plug-ins

What is Eclipse? (a picture) Platform Runtime Workspace Help Team Workbench JFace SWT Eclipse Project Java Development Tools (JDT) Stellation Sweet Plugin Another Tool Plug-in Development Environment (PDE) Eclipse Platform Debug

What is Eclipse? Lot’s for free (well almost) –Tight integration of common core tools CVS, Ant, JUnit, diff –Extensible/open architecture Third-party plugins –ruby, c#, php, etc. –AOSD (aspectJ, hyperJ, FEAT, JQuery, etc)

Plan 1.Sweet Tooling issues 2.Introduction to Eclipse 3.Sweet Plugin at a glance 4.Implementation notes 5.Pitch and Caveats 6.Where next

Plugin Features Keyword awareness Integrated SweetBuilder Automated House-Cleaning Artifact Special Treatment Basic Error-Reporting Integrated Help

DEMO! ! Cross fingers please…

Plan 1.Sweet Tooling issues 2.Introduction to Eclipse 3.Sweet Plugin at a glance 4.Implementation notes 5.Pitch and Caveats 6.Where next

Automating the Build (Impl.) - Eclipse leverages the Observer (Listener) Design Pattern The idea is to register listeners to monitor for changes to resources that should trigger a build.

Automating the Build (Impl.) Our pipeline:

Automating the Build (Impl.) Ordered list of builders Insert SweetBuilder before JavaBuilder Our pipeline: SB JB

Managing Dependencies (Impl.) / pkgApkgBpkgC ouptut/ pkgApkgBpkgC Possible Approach: Parallel Worlds

Managing Dependencies (Impl.) / pkgApkgBpkgC ouptut/ pkgApkgBpkgC Possible Approach: Parallel Worlds Possible Solution: “make clean”

Managing Dependencies (Impl.) - Complete rebuild - Worst case every Java file re-compiled -File-based - subtler: de-values artifacts In a multi-view setting should be first-class! Parallel Worlds Disadvantages

Managing Dependencies (Impl.) - Use Sweet Parser to collect Introductions - Store in Resource object metadata Advantages: –Persistence for free –Limited introduction/deletion ripple Better: Mapping

Error Reporting (Impl.) -Should be integrated into environment -Shouldn’t re-route programmer flow -Minimize dissonance Ideal: Handle Like Errors NOT Exceptions!

Error Reporting (Impl.) - Extended Sweet Handler to collect Problem data - Data marshalled into a Marker object - Attached to Eclipse Resource Result: - visual (localized) cues, persistence, navigability Eclipse Resource Marker Strategy

Plan 1.Sweet Tooling issues 2.Introduction to Eclipse 3.Sweet Plugin at a glance 4.Implementation notes 5.Pitch and Caveats 6.Where next

Pitch Nice vision –“user as programmer” Nice Execution –Mature tool for Java and Plugin Development Growing market share –Research and Industry Active Developer Community In short: a viable tool to leverage now –

Caveats Steep Initial Learning Curve Lagging Documentation –but “system is the curriculum…” Designer Bias –“strong world view” –pervasively file-oriented

Plan 1.Sweet Tooling issues 2.Introduction to Eclipse 3.Sweet Plugin at a glance 4.Implementation notes 5.Pitch and Caveats 6.Where next

Where next Short Term –Plugin improvements Export metadata (introductions) to Ant More sophisticated Error Reporting Context visualization –Sweet Programming Guide Long Term –Multi-view support

Programming in the 21 st century Emphasis on“ilities” –Reusability, evolvability, etc. –What about the “archies?” (hier/heter) The rub: current SOC technologies (HyperJ, AspectJ, etc) depose the dominant decomposition only to replace it with their own! It remains to be seen if their decomposition is any better! Polyphonic Programming! The time for multi-view AOSD Tool-support is now!