Tuesday, 28 October
This talk will sketch the boundaries of protection that intellectual property law should set, but argue that extremism has now defeated these limits. The consequence is an environment within which modular creativity is increasingly constrained.
Lawrence Lessig is a Professor of Law at Stanford Law School and founder of the school's Center for Internet and Society. He is one of the country's leading commentators on legal aspects of new communications technologies and cyberspace. He is Professor of Law and founder and executive director of the Center for Internet and Society at Stanford Law School. Professor Lessig teaches and writes in the areas of constitutional law, law and high technology, Internet regulation, comparative constitutional law, and the law of cyberspace.
He is the author of many influential publications about cyberlaw and cyberspace, including two books: The Future of Ideas: The Fate of the Commons in a Connected World (2001) and Code and Other Laws of Cyberspace (1999).
Software engineering education for working professionals remains a challenge from the perspective of determining relevant content; identifying effective methods for delivery; and maintaining the focus and motivation of students. This panel brings together academic and industry professionals to share their perspectives and experiences. Anticipated points for discussion include: education/training delivery strategies, curriculum definition, marketing issues, collaboration strategies to engage industry sponsorship, value assessments for students and sponsoring organizations, and program success stories. This will be a highly interactive panel and the audience should come prepared to both ask and answer questions.
These papers explore simplifying programming by examining some of our underlying assumptions about references and constructing programs.
This demo shows Smart Play-Out, a new method for executing and analyzing scenario based behavior, which is part of the Play-In/Play-Out methodology and the Play-Engine tool. Behavior is "played in" directly from the system's GUI, and as this is being done the play-engine continuously constructs Live Sequence Charts (LSCs), a powerful extension of sequence diagrams. Later behavior can be "played out" freely from the GUI, and the tool executes the LSCs directly, thus driving the system's behavior.
Smart Play-Out, a recent strengthening of the play-out mechanism, uses verification methods, mainly model-checking, to execute and analyze the LSCs, helping the execution to avoid deadlocks and violations. Thus, Smart Play-Out utilizes verification techniques to run programs, rather than to verify them.
Our approach is especially useful for specifying reactive object-oriented systems, and the LSC language we use has been extended to distinguish between objects and classes and to allow specifying of symbolic scenarios that hold for all object instances of a certain class.
In the demo we will show and explain the tool, illustrating the approach on several applications we have studied, including a phone network, a machine for manufacturing smart-cards and a model of a biological system.
As a long-term goal, for certain kinds of systems the play-out methodology, enhanced by formal verification techniques, could serve as the final implementation too, with the play-out being all that is needed for running the system itself.
The norwegian ministry of education and research is currently establishing an education portal as part of the national learning net for the education sector. One major goal of this initiative is to enable better reuse and sharing of learning objects on the internet. The portal is developed by BEKK, a Norwegian consultancy.
The demonstration will show:
The LOM (Learning Object Metadata) standard; IEEE 1484.12.1 (http://ltsc.ieee.org/wg12/) standard was approved December 10, 2002 and defines a meta-model to categorize and describe learning objects. Although well received, and internationally recognized, adoption is still in its early stages, which again required the project to define the actual use of the standard in collaboration with local standardization bodies.
The following technologies and products developed the portal and search interface:
F-Script is a new scripting language based on Smalltalk and specifically designed for the Mac OS X object system (i.e. Cocoa). F-Script provides scripting and interactive access to Mac OS X frameworks. It aims to be a useful and fun tool for both beginners and experts, allowing interactively exploring, testing and using Cocoa-based objects and frameworks. As a Smalltalk dialect, F-Script provides a pure object-oriented environment that leverage Mac OS X technologies. It introduces significant innovations including a high-level model for object manipulation and a graphical object browser.
This demonstration will cover:
F-Script is an open-source project sponsored by the European Smalltalk User Group and SQLI.
Keywords: Smalltalk, Array programming, F-Script, OOPAL, APL, Scripting Language, Mac OS X, Cocoa.
AspectJ™ is a seamless aspect-oriented programming extension to Java™. It can be used to cleanly modularize the crosscutting structure of concerns such as exception handling, multi-object protocols, synchronization, performance optimizations, and resource sharing. When implemented in a non-aspect-oriented fashion, the code for these concerns typically becomes spread out across entire programs. AspectJ controls such code-tangling and makes the underlying concerns more apparent, making programs easier to develop and maintain.
The updated AspectJ development tools suite and Eclipse plug-in will be used to demonstrate new tool features including incremental building, bytecode weaving, crosscutting structure views, and debugger support. Some common crosscutting concerns of an existing object-oriented system will be mined and refactored into a modular aspect-oriented implementation. The integration of AspectJ into existing development processes will also be reviewed along with JBuilder®, NetBeans, Emacs, and command-line tool support. Installation of the tools and project setup will demonstrate how easily AspectJ can be applied to existing Java systems.
Comparative Impact Analysis (CIA) and Predictive Impact Analysis (PIA) are two methods of determining change/modification impact analysis on object-oriented software systems. JFlex, an object- oriented software tool, implements CIA and PIA for Java systems. With JFlex, software maintainers gain immediate knowledge of complex relationships in Java systems such as inheritance and aggregation by using the Extended Low-Level Software Architecture (ELLSA) model. The ELLSA model is built by examining the Java systems source code. The demonstration will show how JFlex allows maintainers to create the ELLSA of a Java system, perform maintenance activities on the system, and then create a second ELLSA of the system and compare this to the first in order to determine changed components and ripple effect impacts resulting from the maintenance activities (CIA). The demonstration will also show how JFlex can be used to predict ripple effect impacts on an unmodified Java system by creating the ELLSA for the system and allowing the maintainer to ask what if questions pertaining to possible changes to the Java system. The resulting analysis helps maintainers to determine testing requirements and which other components must be changed as a result of the proposed modifications. JFlex is implemented in C++ under Microsoft Windows using MFC to construct the GUI. Keywords Object-Oriented Impact Analysis Object-Oriented Maintenance Object-Oriented Software Architecture
The processors normally used for low cost or embedded applications are not well suited for running Smalltalk, so we created our own using programmable circuits (FPGAs). By creating the software and hardware specifically to work with each other it was possible to simplify both to such a degree that the resulting system is competitive in terms of price/performance compared to solutions with traditional processors, despite the inefficiency of FPGAs relative to custom designs. Both a 16 bit and a 32 bit hardware implementation of Neo Smalltalk will be shown in order to illustrate the cost and performance tradeoffs possible in this kind of development. The hardware is defined in terms of objects exchanging messages down to the lowest level, which is an interesting contrast to the traditional bytecoded virtual machines used for Smalltalk, Java and similar languages. Since the programming environment was designed to graphically show all implementation details, the audience will be able to see the issues mentioned above during a demonstration of the normal operation of the two Neo Smalltalk machines.
We demonstrate QuickUML, a freely available tool which supports iterative design and code development by providing facilities to draw UML class diagrams, to generate Java code from such diagrams, and also to automatically generate a UML class diagram from a collection of Java source code files.
We developed the tool for use by students in our introductory object-oriented courses. We found existing tools inappropriate due to slow graphics and complex user interfaces. QuickUML is now used in several courses from freshman to senior level.
The demonstration will show QuickUML's various features, including how to draw diagrams, how to generate code from diagrams and how to generate a diagram Java source code. The ability to move between source code and diagrams facilitates the use of an iterative design-and-code software development process.
Our experience is that when students have a tool which allows them to easily express their designs at a high level and frees them from the tedium of repeatedly coding fundamental relationships they begin to think of coding in terms of the higher-level constructs. This in turn allows us to focus more on issues of object-oriented design and less on issues of syntax.
Educators or trainers teaching or using object-orientation in their courses can use QuickUML to support iterative design-and-code development.
The Generic Modeling Environment (GME) is a metaprogrammable, domain specific, graphical editor supporting the design, analysis and synthesis of complex, software-intensive systems. It is closely related to metaCASE tools such as MetaEdit+ or Dome. Over a decade of research in model integrated computing has led to the development of GME. The toolset has been applied to modeling and synthesizing several real world applications for both government and industry organizations.
GME has an architecture based on MS COM technology and is implemented in C++. The Core component exposes the domain-specific language specification through a set of COM interfaces. It has another set of interfaces for model access. All the other components, (GUI, browser, OCL constraint manager, software generators, etc.) are built independently around the Core. Model persistence is supported via standard database technology and XML persistence. The technologies applied throughout GME (UML, OCL, COM, XML) make it easily applicable and extensible.
The demonstration will focus on using GME to develop an integrated simulation framework for embedded systems. The UML and OCL based metamodels specifying the domain-specific visual modeling language will be examined. We'll demonstrate how the domain-specific environment is automatically generated from these metamodels. We'll emphasize how the target visual language supports such OO concepts as type inheritance and multiple aspects. The automatic extension of the model access interface will be shown. This interface makes extensive use of OO techniques such as inheritance. We'll show an example application, including its complex models and the automatically synthesized simulation and C code.
Feature-Oriented Programming (FOP) is both a design methodology and supporting tools for program synthesis. The goal is to specify a target program in terms of the features that it offers, and to synthesize an efficient program that meets these specifications. FOP has been used successfully to develop product lines in widely varying real-world domains, including compilers for extensible Java dialects, fire support simulators for the U.S. Army, network protocols, and program verification tools.
AHEAD is a simple mathematical model of FOP that is based on step-wise refinement, a methodology for building programs by adding one feature at a time. The incremental units of implementation/design are refinements that encapsulate the implementation of an individual feature. AHEAD models of product lines treat base programs as constants and program refinements as functions (that add a specified feature to the input program). Application designs are thus equations--compositions of functions and constants--that are amenable to optimization and analysis.
This tutorial reviews basic results on FOP, including general models and tools for synthesizing a consistent set of code and non-code artifacts by composing refinements (cross-cuts), automatic algorithms for validating refinement compositions, synthesizing product-lines of product-families (e.g., tool suites), and automatic algorithms for optimizing application designs (equations).
Prerequisites: Participants should understand basic concepts of object orientation, but no other special background is necessary.
Don Batory holds the David Bruton Centennial Professorship at The University of Texas at Austin. He received a B.S. (1975) and M.Sc. (1977) degrees from Case Institute of Technology, and a Ph.D. (1980) from the University of Toronto. He was a faculty member at the University of Florida in 1981 before he joined the Department of Computer Sciences at the University of Texas in 1983.
He was an Associate Editor of IEEE Transactions on Software Engineering (1999-2002), Associate Editor of ACM Transactions on Database Systems (1986-1992), a member of the ACM Software Systems Award Committee (1989-1993; Committee Chairman in 1992), Program Co-Chair for the 2002 Generative Programming and Component Engineering Conference, the Program Chair for the 1995 International Conference on Software Reuse, and the 1999 Workshop on Software Reuse. He has given numerous lectures and tutorials on product-line architectures, generators, and reuse, and is an industry consultant on product lines.
"Dungeons and Patterns!" is a hands-on tutorial for exploring and learning about design patterns. You can become a more powerful object-oriented developer by learning about these things called "design patterns." The "Design Patterns" book (by Gamma, Helm, Johnson, and Vlissides) explains what patterns are and introduces many of the most useful patterns, but many people find it difficult to learn by reading, and almost everyone improves through practice. The "Dungeons and Patterns!" tutorial lets you research, discover, learn, and explain patterns all at once, in a playful setting that is energizing and motivating while at the same time relaxed and fun.
In "Dungeons and Patterns!" you will encounter dungeon devices, creatures, and settings that serve as metaphors for design patterns. Your mission with your table-mates is to discover these metaphors, determine which pattern is at play, and explain the pattern to an Ahobbit that will accompany your party. The amazing thing about Ahobbits is that whenever they gain enlightenment about patterns (and utter "Ah Ha!"), their epiphanies magically cause further doorways and passages to open, letting you delve deeper and deeper into the patterns dungeon.
In a few hours of play you will become familiar with many patterns -- familiar enough to explain them to someone else!
Prerequisites: Attendees should have at least a little knowledge of design patterns, specifically those in the book "Design Patterns." Experience with role-playing games is a plus, but not necessary.
Steve Metsker is a researcher and author who explores and writes about ways to expand the abilities of developers. Steve is the author of "Building Parsers in Java," the "Design Patterns Java Workbook," and the forthcoming "Design Patterns C# Workbook."
William Wake is an independent consultant and coach. He's the inventor of the XP Programmer's Cube, and the author of "Extreme Programming Explored" and the "Refactoring Workbook."
The Principles Behind the Agile Manifesto state that, "At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly." How should that be done? This tutorial will present techniques for project retrospectives that allow teams to discover what they're doing well so that successful practices can be repeated and identify what should be done differently so that teams can improve. Retrospectives are not "finger pointing" sessions, but rather a highly effective series of activities in which teams can reflect on the past in order to become more effective in the future. Participants will be introduced to the retrospective process, learn techniques for leading retrospectives, hear the experiences of the tutorial leaders who have led retrospectives in various kinds of projects, and participate in a retrospective simulation.
Prerequisites: Participants should have been part of at least one development experience.
Introductory lecture and simulated retrospective
Linda Rising has a Ph.D. from Arizona State University in the area of object-based design metrics. Her background includes university teaching experience as well as work in industry in the areas of telecommunications, avionics, and strategic weapons systems. She has been working with object technologies since 1983. She is the editor of "A Patterns Handbook," "The Pattern Almanac 2000," and "Design Patterns in Communication Systems." She has experience leading retrospectives in a number of companies and academic settings around the world, as well as giving presentations on the benefits of retrospectives. She has over 20 years of academic teaching experience and over 15 years of industrial training experience.
Mary Lynn Manns has a Ph.D. from DeMontfort University in England in the area of software patterns. She is on the faculty at the University of North Carolina at Asheville. She has taught seminars on project retrospectives and has led numerous retrospectives in both industry and academia.
This tutorial teaches participants how to apply AspectJ to enterprise application development using J2EE. It demonstrates some of the more advanced capabilities of AspectJ and how they can be used to address concerns such as security, caching, logging with Jakarta Commons, testing with JUnit, and more. The tutorial is based on a J2EE setting working with servlets, JSPs, EJBs and Web Services. It also compares AspectJ to AspectWerkz and JBoss AOP.
Prerequisites: Attendees should have experience doing object-oriented design and implementation for IT applications. Attendees should have already experimented with AspectJ.
Lectures and hands-on exercises
Ron Bodkin is the founder of New Aspects of Security, which extends AspectJ to provide security and privacy management for enterprise applications, and provides consulting on AOP and architecture. Previously, Ron worked for Xerox PARC, where he led the first AspectJ training and implementation projects for customers. Prior to that, Ron was a founder and the CTO of C-bridge, a consultancy that built and customized enterprise applications using Java, XML, and other Internet technologies.
Adrian Colyer is an IBM UK Technical Staff Member with over 10 years of experience in developing enterprise middleware. He leads the open source AspectJ Development Tools for Eclipse project, and is also a committer on the core AspectJ compiler project.
This tutorial covers the salient aspects of the first major revision of the Unified Modeling Language, UML 2.0. It includes background information on what drove the requirements and the design rationale--from the point of view of one of its primary designers. The overall structure of UML 2.0 is described followed by a more detailed description of the most prominent new modeling features illustrated with many examples. The capacity of UML 2.0 to cover the needs of model-driven development methods is also described.
Prerequisites: Attendees must have practical experience in applying object-oriented technologies in general, and the Unified Modeling Language in particular.
Bran Selic works for the Rational Software Group of IBM. He is also an adjunct professor of computer science at Carleton University. He has over 30 years of experience in industry in the design and development of large real-time systems. He is the principal author of a book that pioneered the application of object technology and model-driven development methods in real-time applications. From 1996 onwards, he has participated in the definition of the UML standard and its standard real-time UML profile. He is co-chair of a submission team that defined the first major revision of UML, UML 2.0.
A lot has been written about multithreading, C++, and multithreading in C++. A number of different higher-level threading APIs have been proposed. Some are influenced by object models that are not necessarily appropriate to C++'s own idioms, and some suffer from looking too obviously like C API wrappers, in spite of their specific goal of API independence. In many cases, the resulting object model is less expressive, although far simpler and safer to use, than the underlying API.
This tutorial presents a refined model for threading in C++. The model is simple, idiomatic, and generic, and its thinking is more obviously unchained from the view of thread objects as C API wrappers. It entails a generic-programming approach that is more than simply using templates: it is orthogonal and open. Elements of the resulting thread programming model can also be realized in other programming languages.
Prerequisites: Attendees should be experienced with C++ programming and should have some experience using templates, preferably based on the STL. At least basic familiarity with concurrency concepts is also required.
Kevlin Henney is an independent consultant and trainer. The focus of his work is in programming languages, OO, CBD, UML, patterns, and software architecture. He is a regular columnist for C/C++ Users Journal (online), Application Development Advisor (UK), and JavaSpektrum (Germany), and previously wrote columns in Java Report and C++ Report. He is also a member of the advisory board for Hillside Europe, the program chair for EuroPLoP 2003, and a popular speaker at conferences in the US and Europe.
Program generation has been used for a long time to facilitate the development of enterprise and embedded systems. More recently, its potential for improving object-oriented software development in general has been realized through the use of program generation techniques such as generative programming, product line engineering, and model-driven architectures (MDA).
This tutorial introduces the most important kinds of code generation, such as model transformations, source code generation, source code transformation, byte code rewriting and reflection. We will introduce different code generation technologies, such as template-based generators, frame technology, aspect weaving and AST-based approaches; illustrate when to use them; discuss benefits and drawbacks of each approach; and look at representative tools that support each kind of program generation. Some of these tools will also be demonstrated.
Prerequisites: Attendees should be experienced OO developers or architects and must understand an OO programming language, such as Java, C++ or C#. Familiarity with UML is also required. Previous experience with code generation is not necessary.
Lecture and live demonstrations
Markus works as an independent consultant in software technology and engineering. He focuses on the architecture of large, distributed systems. Markus is the author of several magazine articles and patterns, a regular speaker at conferences, and co-author of Wiley's "Server Component Patterns." Over the last couple of years, Markus has architected and implemented several large enterprise systems in banking, diagnostics and automotive, on various scales. He has used code generation in the context of enterprise and embedded systems. Markus can be reached at firstname.lastname@example.org or via http://www.voelter.de.
This invited talk will describe how emerging distributed computing systems could mutate into the communications systems of the future. Armed with high speed interconnect, and software elements that assign, track and charge for geographically distributed computing resources, these systems could just as easily compute and deliver an image to a remote location (for human communications) as perform an internal streaming file transfer. With this kind of capability not tied to the user's premises, customer equipment could be very asset light and still deliver very high end services like realtime processed video. Using as an example MIRAGE II, a data mining system with a geographically distributed, remotely computed Augmented Reality interface, a prototype built by Motorola in association with NCSA, Labedz will discuss the main hurdles along the way to communications systems dependent on real-time remote computing and high speed networks.
Gerry Labedz has worked at Motorola for 28 years in the areas of mobile and cellular radio hardware and software. He worked on the first microprocessor controlled radio in the '70s, the first digital cellular system in the '80s, and the world's most accurate parallel-computed cellular system simulation tool in the '90s. He holds 23 patents in the areas of radio signaling, system design and visualization, and large-scale real-time simulation for cellular system control. During the 1990s, he and his group were the largest industrial users of the supercomputer facilities at the National Center for Supercomputing Applications (NCSA). He holds the title of Dan Noble Fellow, Motorola's highest technical honor. Most recently he has led a project centering on Hyperfast Computational Communications, or HyperComputiCations
JPie is a tightly integrated development environment supporting live object-oriented software construction in Java. JPie embodies the notion of a dynamic class whose signature and implementation can be modified at run time, with changes taking effect immediately upon existing instances of the class. The result is complete elimination of the edit-compile-test cycle. Dynamic classes are precompiled and then execute in a semi-interpreted manner using an internal representation of the dynamic portions of the class definition. Dynamic classes fully interoperate with compiled classes. Consequently, JPie users have access to the entire Java API, may create dynamic classes that extend compiled classes, and can override their methods on the fly. Instances of compiled classes may hold type-safe references to instances of dynamic classes, and may call methods on them polymorphically. All of these capabilities are achieved without modification of the language or virtual machine. JPie users create and modify class definitions through direct manipulation of visual representations of program abstractions. The visual representations expose the Java execution model, while removing the possibility of syntax errors and enabling immediate type-checking feedback. In this demonstration, we will illustrate the central features of JPie in the course of constructing an example application. These will include dynamic declaration of instance variables and methods, dynamic modification of method bodies and threads, dynamic user interface construction and event handling, and on-the-fly exception handling in JPie's integrated thread-oriented debugger.
Velare Technologies, Inc. will demonstrate ATCT (Asynchronous Transfer of Control Threading) a Java framework for asynchronous method invocation. ATCT facilitates development of asynchronous long-running processes in Java, using well-known OOP techniques and design patterns. Traditionally when an application interacts asynchronously with an external environment, event-driven programming is used. However, this approach makes it difficult to develop processes with complex flow logic. Moreover, programming of sophisticated workflow patterns becomes almost impossible. ATCT allows transforming the event-driven programming style into a well-known sequential programming style, enabling the use of OOP for asynchronous process development. In addition, it is possible to develop a variety of new types of applications that require manipulation of execution context. ATCT introduces a new approach for execution context reification in Virtual Machine based runtime environments. ATCT uses a secondary bytecode interpreter to execute specially marked methods in a special mode, which allows to access execution context as first class object. The secondary interpreter is written in the Java programming language allowing use of ATCT on any JVM. ATCTs functionality and capabilities will be presented by using slides and code samples. After introducing the concept using simple examples, we will show the possibilities for complex distributed architectures by showing prototypes of frameworks for messaging and web applications. Our demonstration is targeted to people who are interested in the use of VM-oriented mainstream OO languages such as Java or C#, for new types of applications. The demonstration should also be interesting for designers of Virtual Machines and new languages.
The Generative Model Transformer (GMT) project is an Open Source initiative to build a Model Driven Architecture™ tool that allows fully customisable Platform Independent Models, Platform Description Models, Mappings, and Refinement Transformations. The project should result in:
GMT resides as a technology project on Eclipse.org.
The demo intends to show the state of the tool at the time of OOPSLA.
The software is designed using UML modeling and implemented using generative techniques. It will be implemented mainly in Java. Links will be provided to other existing tools that can fill in some of the functionality required.
GMT will provide a related set of components that can be used by other MDA tool components, and will consist of four main components:
During the nineties, object orientation of software source code made possible component orientation of applications. Recently, novel component oriented runtime environments have paved the way for service oriented infrastructures. Since there may be a considerable number of service providers, which offer very similar functionality, it tends to be difficult to choose the most appropriate service and to guess the appropriate operations by interpreting syntactic operation names as provided by state of the art Web service interface descriptions. We used semantic Web technologies like DAML and OWL for constructing ontologies, which present the meaning of processed data and provided functionality. These ontologies were used to annotate both syntactic Web service descriptions as well as object oriented C# source code. This demonstration introduces the set of tools that was developed in order to implement the idea of semantic software engineering. Web Services Description Language documents are annotated with semantic information using a WSDL Annotator. A Microsoft Visual Studio add-in was developed in order to annotate C# source code and to facilitate declarative service requests that may be embedded with common C# source code. A programmer may even dictate such requests using natural language input. The Microsoft SOAP toolkit was extended to preserve semantic annotations when C# proxy classes are automatically generated from WSDL files as well as when annotated Web service descriptions are automatically generated from annotated C# source code. Our set of integrated tools increases efficiency and productivity when developing and incorporating Web services using any object oriented programming language.
This panel brings together coaches to discuss all aspects of the practice: how to become a coach, choosing a coach, and describing what is to be an (in) effective coach. A coach watches, provides feedback, and suggests subtle direction. The coach may be more—for example—an architect or team lead—but that is a matter for debate. This session will be run as a panel with two open "fish bowl" seats, only one of which may be occupied by audience members at any one time. The panelists will defend their positions and offer feedback. Panelists were asked to offer their observations on three questions: How did YOU become a coach? What's the toughest thing you've had to do as a coach? What's your advice for teams looking for a coach?
MetaEdit+ is an environment that allows building modeling tools and generators fitting to application domains, without having to write a single line of code. The capability to define modeling tools and generators is relevant as it provides the ability to raise the abstraction of design work from code to domain concepts, and a raise in abstraction leads to an imminent raise in productivity, as illustrated by the past years' experiences.
In domain-specific modeling and MetaEdit+, one expert defines a domain-specific language as a metamodel containing the domain concepts and rules, and specifies the mapping from that to code in a domain-specific code generator. For the method implementation, MetaEdit+ provides a metamodeling language and tool suite for defining the method concepts, their properties, associated rules, symbols, checking reports, and generators.
Once the expert defines a modeling method, or even a partial prototype, the rest of the team can start to use it in MetaEdit+ to make models with the modeling language and the required code is automatically generated from those models. Based on the metamodel, MetaEdit+ automatically provides CASE tool functionality: diagramming editors, browsers, generators, multi-user/project/platform support, etc. MetaEdit+ is implemented in Smalltalk.
The MetaEdit+ demo will focus on showing how the domain-specific languages and generators are made; complete with several examples of domain-specific methods and related code generators.
Keywords: metamodel; domain-specific modeling languages; code generators
With the rapid increase in complexity of software systems and applications, it becomes necessary to develop tools to simplify the incorporation of self-managing features into applications. The use of object and component technologies, together with a policy system which externalizes business logic from an application, plays an important role in enabling systems with greater manageability and variability.
Current policy systems are mainly domain specific, and there is a need for an execution system which is flexible and usable across a variety of domains. Our policy execution system provides a framework which utilizes object and component technologies to separate the process of executing a policy into various components and processes. Each component and sub-process can be developed independently, configured and reused.
In our programming system, an episode of policy execution can be viewed as a composition of the following components: high level policy language definition and authoring, translation to executable code for the choice of execution mechanism, input and output, mappings of application objects and the underlying execution mechanism (rule engines, execution algorithms or strategies). Furthermore, we separate a high level policy into its various logic components: operation logic, priority logic, conflict resolution logic and each of these components can be developed and reused independently.
Our policy framework completely hides the programming details and exposes the interfaces only. In the demo, we will show how to build an application using the policy framework in various contexts with a single policy and modify the policy subsequently to illustrate the various operation of each of the components and features, and how an application uses the policy system to enhance its self-managing features. (The prototype of this system will be available for free download in 3Q of 2003.)
An "Omniscient Debugger" works by recording all state changes in the run of a program, and then allowing the programmer to explore the history of that program— effectively going "backwards in time." Event analysis debuggers work by observing events as they occur, and allowing the programmer to write queries which will pause the program when matched.
Recently we have integrated the two techniques to produce an omniscient debugger which can use event queries to search the history of a program interactively. The query mechanism is designed along the lines of an EMACS incremental search.
The implementation of the system is in Java and records two types of events: method calls (and returns) and assignments. To our best knowledge, this is the first event model for Java.
A typical scenario is a quick sort program which neglects to sort one entry. An event search for the method call which should have sorted the entry ("Find a call to sort() whose start is less than the entry and whose end is greater") allows the programmer to get close to the bug, and the normal mechanisms of the omniscient debugger ("step forwards", "step backwards", etc.) allow the programmer to verify the exact cause of the bug.
In addition to the above (which the Prolog-based Coca system of Ducasse is capable of), it is possible to include both objects and the instance variables of those objects in the query (e.g., "Find a call to OBJ.sort() where OBJ.type is 'Integer'").
In most business software systems the time dimension of business objects plays a significant role. Time is a crosscutting concern that is hard to separate from other business logic. We have developed a toolkit that allows existing business application systems to be extended with "time-conscious" behavior in a non-intrusive way by factoring out all aspects of time-related behavior into a framework and a set of classes that is distinct from the existing code base. The Time Conscious Objects™ (TCO) toolkit is currently implemented in Java™, but through the use of generation technology the toolkit can easily be made available in any language that supports polymorphism.
The TCO toolkit has been explicitly designed to allow non-intrusive and incremental integration into existing systems. Time-conscious objects can have a major impact on the quality and maintainability of applications by eliminating the complexity of dealing with the time dimension. This is the case for example in time-based billing systems, in the insurance industry, and in the modeling of "parts" in ERP and manufacturing systems.
The demonstration provides an overview of the architecture and the APIs that TCO uses to integrate with existing application system environments. Beyond that, the demonstration shows on the basis of one or more small example applications, how TCO can be used to raise the level of abstraction in platform independent models and in business application code.
TCO product development is work-in-progress and the demonstration is intended to be highly interactive, giving the audience opportunity to raise and discuss their specific time-dimension-related requirements.
The Java Community Process℠ (JCP℠) program is where the future of Java™ technology is defined. It is an open organization of Java developers who collaborate to develop Java technology. The best minds in the industry and academic worlds come together to ensure compatibility and interoperability of Java technology.Come to the JCP meeting on Tuesday evening to find out about proposed Java specifications and language changes being developed now through the JCP, including generics, concurrency utilities, autoboxing, metadata, new I/O APIs, management extensions and more. This will be an opportunity to meet with and hear first hand from the JCP spec leads and experts involved with these specification proposals. Food and drink will be provided.
The eclipse community invites you to a special plug-in and coding reception on Tuesday October 28th.We'd like to especially invite members of the contributing eclipse community - that is, plug-in writers and eclipse users who have contributed to the eclipse project's success! We'd like you to meet each other and some members of the eclipse development team, to interact and share ideas about your project and the exciting things in store for eclipse! We'll give a brief overview of what's new in the eclipse project and then open the evening for an informal get-together. Bring your laptop and get plugged-in! In cooperation with the IBM Eclipse Technology Network, we'll have a space set aside where you can check out Code Rally - a programming road race - so bring your network adaptor too!