Object-Oriented Program Animation using JAN
|
|
|
- Ambrose Bryan
- 10 years ago
- Views:
Transcription
1 Object-Oriented Program Animation using JAN Klaus-Peter Löhr André Vratislavsky Institut für Informatik Freie Universität Berlin ABSTRACT Concept and design of the program animation system JAN are described. JAN visualizes the execution of a Java program by dynamically unfolding an object diagram and an interaction diagram. Several features distinguish JAN from existing program visualization systems and visual debuggers. Annotations in the program code can be used to control the animation by selecting the relevant events and customizing the visual appearance. In addition, the user can interactively steer the animation in various ways. JAN is an integrated visualization system which includes an elaborate graphical user interface, a preprocessor for annotated Java source code and a visualization engine that runs in a separate Java virtual machine. The design of the system is described in detail. Categories and Subject Descriptors D.2.5 [Testing and Debugging]: Debugging Aids; D.3.4 [Processors]:Debuggers; H.5.1 [Multimedia Information Systems]: Animations; General Terms Design, Experimentation, Human Factors, Languages. Keywords Program animation, Java animation, object-oriented animation. 1. INTRODUCTION Visualizing the static structure of a program is a valuable technique for program understanding and documentation. Program animation, i.e., visualization of dynamic program behaviour, promises additional insight and can be used as a powerful debugging aid. Visual debuggers are already included in several program development systems (e.g., JBuilder [3]); they can be viewed as a rudimentary kind of program animation system. But program animation systems can go far beyond traditional visual debuggers. In the past, program animation has focused on text-based rather than graphical approaches. Typical techniques are statement highlighting and textual data display. Graphical representation of data structures as supported, e.g., in DDD [12] have been around for a few years. More recently, animation systems for objectoriented programs (mainly Java) have been developed. Typical examples are JaVis [7], VisiVue [11] and JAVAVIS [10]. This paper presents JAN, a system similar to VisiVue and JAVAVIS in that it supports object-oriented animation of Java programs. The term object-oriented animation is to convey the essence of the approach: objects rather than statements and algorithmic details are the focus of the animation. When an animated program executes, its objects are displayed in an object diagram that unfolds on the screen. This diagram is similar, but not identical, to a UML collaboration diagram [2]. Various mechanisms exist for customizing the appearance of that diagram. In addition, a history diagram similar to the UML sequence diagram is unfolded. If the program is multi-threaded, the different threads can be identified in that diagram. While the program is executing, constructor and method invocations as well as assignments are the pivotal events for the animation system. The animation proceeds stepwise, where a step corresponds to an invocation or an assignment. Various possibilities for customizing the visual effects exist, from static annotations in the program text to interactive steering of the animation. JAN s source text annotations have some similarity to textual extensions in programs for algorithm animation, as e.g. Leonardo [5], but are kept extremely simple. They distinguish JAN from the program visualization systems mentioned above. A preprocessor is responsible for generating an instrumented version of the program that is based on the annotations. Sections 2 and 3 introduce the concepts of JAN s object diagrams and sequence diagrams, respectively. Section 4 presents the facilities offered at the user interface. The design of the system is described in section 5, and section 6 discusses related work. A summary of the annotations is given in the appendix.
2 2. DYNAMIC OBJECT DIAGRAMS A naïve visualization of the state of an object-oriented program would show an object graph representing the objects and their references. Such a graph would rather resemble a heap of spaghetti than convey an understanding of structural properties of the program. References are a low-level technical concept; they do not reflect design decisions. A good visualization system should strive to present structural design information to the user. 2.1 Object composition When using JAN, the programmer can express object composition the part-of relation or aggregation between objects by means of annotations in the source text. This causes objects to be displayed in a nested fashion wherever possible, considerably reducing the amount of directed edges between objects, in contrast to UML diagrams. A special comment, the tag /**@component*/ can be inserted in front of a field declaration, turning it into a component declaration 1. The component tag is recognized by a preprocessor and signals that the object referred to by the field is to be considered part of the enclosing object. Fields of primitive types are components by default, and so are strings. Note that the component tag makes up for a language deficiency: other languages do support component declaration and thus would not require tagging; Eiffel s expanded feature is a prominent example [8]. The natural way to visualize composition is by containment. So an object of type Book might be displayed in a window as shown in Figure 1. When a component object is visualized for the first time, it is displayed in opaque mode: only type and component name are shown, and if applicable textual hints are given that the object itself contains components and/or references to other objects. Clicking on an opaque object opens the object, making it transparent. Another click re-establishes opaque mode. Deep nesting leads to information overloading, unrecognizable graphics and exhaustion of screen resources. Resizing and scrolling is supported, but it is often more convenient to display a component in a separate window. This is achieved by an explosion mechanism; its effect is shown in Figure 2. Refinement and abstraction of objects are thus supported in a natural way. The usual actions can be applied to windows: iconizing/deiconizing, resizing, opening/closing, moving. Any explosion lines connected to a window are moved along with that window. Note that the component tag just controls the visualization. Nothing prevents two fields declared as components from referring to the same object. If this happens, the tags are of course inconsistent with the actual behaviour of the program. The error will result in two copies of the object being displayed as different components. Dynamic detection of this error is possible, but is not done in the present version of JAN. An even more attractive solution, static detection, would require an effort along the lines of Object Ownership and Containment [4]. 1 These components should not be confused with the more heavy-weight components as known from compositional software development. class Book { String author; String title; int year; /**@component*/ Publisher publisher; } Figure 1. Book object before and after opening the Publisher component Figure 2. Explosion of component publisher It is quite alright to refer to a component from elsewhere. For instance, a component of an object may refer to another component of that object. Or an object may refer to a component of another object if the program chooses to weaken data encapsulation. 2.2 Inter-object references A reference in a field that does not refer to a component is visualized by an arrow as shown in Figure 3. The arrow carries the field name as a label. If the target is presently not visible, just an arrowhead protruding from the referring object is depicted. Clicking on the arrowhead makes the arrow grow towards a new window showing the target. 2.3 Arrays and Collections An array is a hybrid entity: it can be viewed either as an indexed variable or as an object. Java, like many object-oriented languages, treats arrays as objects. An array is commonly used, however, not as a shared object but as an indexed component of a composite object. This is why JAN always views an array declaration as a component declaration and its elements as its components. There is no way to overrule this default strategy. This has the consequence that shared objects cannot be referred to from array elements. Or more precisely: if a program makes two array elements refer to the same object (no matter whether of 2
3 different arrays or of the same array), this object will falsely occur as two copies in the visualization. The diagram can be manipulated by the user while it is unfolding. It is possible to display only objects of interest. Hidden objects can again be made visible as required. Objects, together with their lifelines can be dragged across the screen; the arrows are redrawn accordingly. Figure 3. No component tag: inter-object references (bottom: target is invisible) We take the view that the experienced programmer will rarely use the low-level arrays but will prefer collection classes from Java s class library. Collections are recognized by JAN and are always considered components like arrays. Their elements, however, can be declared either components or references: a component tag preceding a collection declaration refers to the collection s elements, not to the collection itself. The visualization of a collection ignores the collection s actual representation as it does not know about it and displays an intuitive view of an abstract model of the collection. Figure 4 shows a HashMap object containing several User objects, keyed by Integer objects. 3. SEQUENCE DIAGRAMS UML sequence diagrams are graphical traces of program runs. They are useful for describing typical usage scenarios during the modelling and design phases of software development. Being traces rather than algorithms, they are an ideal graphical technique for program animation, in particular for object-oriented animation. On the one hand, they abstract from algorithmic details and concentrate on object interaction. On the other hand, they are a welcome supplement to the object diagrams because they visualize history which is not recognizable in those diagrams. And last but not least, they give an accurate account of what is going on in a multi-threaded program. 3.1 Single-threaded diagrams We assume that the reader is familiar with sequence diagrams. The diagrams generated by JAN reflect the life of objects as well as classes (for static interactions). Invocations and returns are visualized by arrows, as usual; labels identify the methods involved. A local invocation causes just an arrowhead to be displayed. Unlike UML, JAN does not practise sidewise stacking of activity lines on callbacks, in order not to overload the diagrams. Figure 4. Visualization of a HashMap 3.2 Multi-threaded diagrams If multiple threads are present, the sequence diagram is even more informative. A newly created thread pops up as a new object and develops its lifeline according to the run method. Each thread is given a separate colour. So if a thread invokes an object, its activity line on that object is coloured accordingly. Overlapping activities of several threads on one object are readily recognized as stacked activity lines, as shown in Figure 5. It should be kept in mind, of course, that the Heisenberg principle for instrumented code applies: animation changes the timing characteristics of the program. Figure 5. Concurrent program with three threads 3
4 4. THE USER INTERFACE JAN supports both the development and the interactive steering of animated programs. The user interface has two modes, development and execution. In a typical scenario, the programmer will develop a program, with or without tags, using his or her preferred development system. After importing the source code into JAN, further editing is possible in JAN s development mode, typically for inserting tags (a list of available tags is given in the appendix). Then an instrumented version of the code is generated and compiled. Finally, the user will switch to execution mode and steer or just watch the animation in that mode. individual objects is then achieved using the /**@hide*/ tag. Or, if only a few special objects are to be visualized, hiding would be chosen as the default and these special objects would be tagged using /**@show*/. See the appendix for more details. In many cases, no tags at all are required. For instance, the diagrams in Figure 3 were generated from an untagged source. 4.2 Execution mode Buttons are provided for stepping (or running) through an animated program which is chosen in the text fields right under the buttons (Figure 7). The history of the animation is saved, so Figure 6. JAN s user interface in development mode 4.1 Development mode The system presents a tiled window to the user, as shown in Figure 6. There are buttons for opening and saving source code files (each containing one class) and buttons for generating and compiling the instrumented code. The names of opened classes appear in the left-hand tile. Their source code is displayed and modified in the right-hand tile; tagging would be a typical modification. Several tags are offered below the buttons and can be dragged-and-dropped into the code. Several defaults exist (and can be set and reset) that make some or all of the tags dispensable. For instance, the user may choose that objects should be visualized by default. Suppressing this for stepping back and forward is supported. The animation is shown in the two large tiles on the right-hand side. In the lower tile, the user can switch between the object diagram and the sequence diagram. The upper tile serves for displaying source code, if required. Source code fragments are highlighted as the animation proceeds. The top-left tile contains clickable textual information about threads, their histories and their invocation stacks. Clicking on a method call recorded in the history makes the class code pop up in the top-right window. The bottom-left tiles contain the class names of components, organized according to the containment hierarchy. 4
5 5. SYSTEM DESIGN Given the tagged (or untagged) source code of a program, three steps are required for viewing an animated execution: 1. generating the instrumented source code, 2. compiling, 3. execution. Step 1 is performed by the JAN generator, step 2 by a regular Java compiler, step 3 by the JAN visualizer, in cooperation with the instrumented program. The program and the visualizer run in different Java Virtual Machines (JVMs), communicating via RMI, as explained below. Distribution abstraction allows us to view the design of the visualization system as the 4-tiered structure shown in Figure 8. animation. The gui tier, invoked via TraceConsumer, is the ultimate sink of the visualization information. 5.1 Analysis and instrumentation of the source code The Jan generator analyzes the tagged source code and generates an instrumented version of the code. Tracing calls are inserted and small modifications to the source code are made (without changing the semantics). A tool named named Barat [1] is used for analyzing the tags and generating modified code. Barat generates a syntax tree and has a Visitor [6] which can emit source code. Subclassing the visitor Figure 7. Execution mode The instrumented application sends event data to the tracing tier by issuing invocations of static methods of class Trace. These data are passed to the communication tier which generates event objects (packages traceevent and attributedescriptions) which are in turn passed to the representation tier. The representation tier stores and updates representations of the diagrams and keeps the history of the animation. It is invoked from the communication tier by calls to a TraceEventHandler. It is also accessed from the gui tier, by calls to a TraceHistory, e.g., for starting and stopping the makes it possible to generate modified source code by overwriting inherited methods, e.g., at assignments or at method calls. Note that a tracing call can only be inserted after a statement. Therefore, nested statements must be transformed into syntactically identical code, which consists of several statements. For instance, the statement if(condition()) {...} is transformed into boolean b = condition(); if(b) {...} 5
6 Figure 8. The 4 tiers of the visualization system 5.2 Interface to the tracing system Our design sees to it that no trace-related state is introduced into the instrumented program. Communication between the application and the visualization only uses static methods (class Trace). These methods create appropriate objects containing event data and pass these to the representation layer. When tracing method calls of concurrent threads, caller and callee must be associated correctly (Figure 9). This requires that the call is reported by the caller, not the callee, because only the caller knows both its own identity and that of the callee. This solution also has the advantage that method calls of library classes can be reported; their source code is not available for tagging. Figure 9. A sequence diagram of two concurrent threads. An invocation statement that is to be visualized is enclosed by calls of the static methods beginofcall and endofcall in class Trace. These methods will report the call to and the return from the method. Exceptional returns are taken care of properly. Here is an example: Worker free; /*generated*/try { /*generated*/trace.beginofcall( Thread.currentThread(), this, free, "free", "putwork",...); /**@showcall*/free.putwork(...); /*generated*/} /*generated*/finally { /*generated*/trace.endofcall( Thread.currentThread(), this, free, "free", "putwork",...); /*generated*/} Information about the calling object (this), the called object (free) and its variable name ("free") as well as the method name ("putwork") and the thread (Thread.currentThread()) will be transferred. 5.3 Decoupling the application from its visualization The instrumented application and the visualizer run in separate JVMs which communicate via RMI. Why is this? It should be possible to restart a visualization without restarting the GUI. The application may have created threads. These threads must be completely destroyed before the program is restarted. But safe destruction of threads is only possible by shutting down the JVM. Communication between the JVM of the visualization system (here called server) and the JVM of the application (here called client) uses RMI. The client includes the instrumented application and the Trace class because static methods cannot be used in an RMI interface. The RMI interface is thus situated between Trace and the visualizer: the event data are passed to a TraceEventHandler by remote invocation. Communication in the opposite direction is by remote invocation of a TraceControl provided by Trace. 5.4 Visual representation in the graphical user interface Composed objects and primitive attributes are represented by appropriate visualization data. The primitive attributes have the Java types short, int, long, float, double, byte, char, boolean and String. Objects can also be contained in static variables; in this case they belong to all instances of a class, and a class representation is used. A composed component can contain many composed components and primitive components. Additionally, it can have many references to other composed components. The same applies to classes. Components are therefore organized in a tree structure. Components of primitive types are the leaves in a component tree. An object can have named, nameless and assigned components, depending on whether the enclosing component is a Map, a Collection, or another kind of object. A named component 6
7 carries its field name. This naming is not possible for elements of collections; using the key objects as name tags is the natural solution for maps. The elements of a set do not carry names. Named and nameless references are distinguished in the same way. The Graphical User Interface (GUI) is the interface between the visualization system and the user. It displays the visualization and receives user input. Storing and processing data do not take place in the GUI but in the representation layer. The GUI uses graphic elements from Java Swing. The basic structure of the visible surface was laid out using the Java development environment NetBeans [9]. According to the MVC paradigm, models are the internal representation of graphical elements. Swing requires models for elements such as lists and trees. Our models just refer to the data in the representation layer. The Swing concept of internal frames (Swing class JInternalFrame) is used for the surfaces on which the object and sequence diagrams as well as the code windows are to appear. Internal frames are windows within a special area (Swing class JDesktopPane). They are not full-fledged windows, but have the functionalities of a window. They can be dragged, minimized and closed. Internal windows have the advantage that they are graphically bound to the application and nevertheless give the impression of a independent topic. Therefore, they are particularly suitable for components and source code, and they are used for the object diagrams and for source code windows. The representation of a component in a component window consists of nested instances which extend the Swing class JPanel. A panel can contain as many panels as desired. Each panel represents a sub-component. 6. RELATED WORK Of all existing Java visualization systems, JAVAVIS [10] probably comes closest to JAN. JAVAVIS animations show both object diagrams and sequence diagrams. Compared to JAN, there are two main differences. First, there is no steering of the animation, neither by static nor by dynamic means: the Java code is processed as is, without annotations, and a standard layout is produced which cannot be manipulated interactively. Secondly, as a consequence of non-annotated code, there is no selective visualization and no way to avoid spaghetti diagrams by identifying object composition. A faithful picture of the program with all its variables is given. The applicability of JAVAVIS is thus restricted to introductory programming education using small programs. A plus of JAVAVIS is its ability to display smooth transitions from step to step. Stepping back, however, is not supported. JaVis [7] is a visualization system for understanding concurrent programs, in particular for deadlock detection. This is achieved by displaying a sequence diagram with different colours, much like JAN does. The diagram cannot be manipulated, though, Object diagrams are not supported. Two systems featuring an impressive wealth of functionality, RetroVue and VisiVue, are available commercially [11]. RetroVue is a production-strength visual debugger while VisiVue is meant to support program understanding. The focus of both systems is on object diagrams; in addition, RetroVue features a thread view diagram. Both kinds of diagrams come in a proprietary style. The spaghetti problem is alleviated by a careful layout. The zoom and pan features are very helpful for analyzing large programs. The systems operate on byte code; this has the advantage that no source code is touched and the disadvantage that it cannot be touched: static customization of the visual appearance is not possible. Similar to JAN, RetroVue allows the user to retrace the execution history using a stepback mechanism. 7. CONCLUSION AND PERSPECTIVE JAN is an acronym for Java animation. We see JAN as a program animation system that sits somewhere between visual debuggers and full-fledged animation systems. The user creates an animation by inserting tags into the source code. These tags, together with default settings, determine the general visual appearance. Technically speaking, defaults and tags control the generator in producing the instrumented version of the program. Note that an instrumented version is generated even from completely untagged source code, so JAN can be readily applied to existing code. In this respect, it is similar to a debugger. If program understanding is the objective, carefully planned tagging is required in order to produce a highly informative animation. The granularity of detail can be chosen, irrelevant objects can be hidden, object types can be associated with intuitive pictures, ranges can be set, etc. When the program is executing in run mode, the object structure is unfolded in a movie-like fashion. The speed can be tuned, and the user can stop and start the movie. Single step mode works forwards and backwards as desired; so if the user gets lost, stopping and retracing the execution will hopefully clarify the situation. Whether used as a debugger or as a program understanding aid, JAN gives the user ample choices for interactive manipulation of both object diagrams and sequence diagrams. This can be considered both boon and bane. On the one hand, the user can always modify the layout and the level of detail chosen by the system. On the other hand, the user has to manually intervene most of the time because the system does not spend much effort on producing a clever layout. This is an area where improvement is definitely possible. We would never trade, however, the interaction features for an intelligent layout procedure; an improved system should incorporate both. Other items on the wish list are smooth changes as known from algorithm animation and custom pictures for the different object types (not just rectangles with a small picture in the corner). These features are not easily added. For the time being, development work for JAN concentrates on a range of minor to medium, and more or less obvious, visual improvements and on streamlining the interaction of the user with the system. The reader may want to visit JAN s website at 8. REFERENCES [1] [BARAT] Boris Bokowski, Barat, [2] G. Booch, J. Rumbaugh, I. Jacobson: The Unified Modeling Language User Guide. Addison-Wesley
8 [3] Borland Software Corp.: JBuilder. [4] D. Clarke, J. Noble, J. Potter: Simple ownership types for object containment. Proc. ECOOP [5] [Crescenzi et al. 00] P. Crescenzi, C. Demetrescu, I. Finocchi, and R. Petreschi: Reversible execution and visualization of programs with Leonardo. Journal of Visual Languages and Computing 11(2), April 2000, pp See also [6] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns, 1994 [7] K. Mehner: JaVis: A UML-based visualization and debugging environment for concurrent Java programs. In: S. Diehl (ed.): Software Visualization. Springer [8] B. Meyer: Object-Oriented Software Construction. Prentice-Hall 1997 [9] netbeans, NetBeans development homepage, [10] R. Oechsle, Th. Schmitt: Javavis: Automatic program visualization with object and sequence diagrams using the Java Debug Interface. In: S. Diehl (ed.): Software Visualization. Springer [11] VisiComp Corp.: RetroVue and VisiVue. [12] A. Zeller: Datenstrukturen visualisieren und animieren mit DDD. Informatik - Forschung und Entwicklung 16(2), June 2001, pp See also 9. APPENDIX: SUMMARY OF TAGS Special comments, so-called tags can be inserted into the source code; they are processed by the animation generator. Tags can be attached to class, field and (local) variable declarations, as well as to statements; they have the form of JavaDoc comments: /** <value1> <value2> */ Two orthogonal groups of tags are distinguished: semantic tags and selection tags. Table 1. Semantic tags tag tagged item position in code /**@range <min>..<max>*/ /**@component*/ object /**@group <group>*/ primitive number attribute class, object field declaration field declaration class, field/variable declaration A semantic tag determines how the tagged item will be visualized. A range defines the upper and lower limit for the values of a number attribute. This specification is used for the representation in a bar chart. The component tag has been explained in section 2. Classes and individual objects can be assigned to groups which can be bound to certain pictures or icons for their representation. Table 2. Use and meaning of the tag /**@component*/ tagged item with tag without tag attribute of primitive type, string array collection object attribute is component array and elements are components collection and elements are components attribute is component array and elements are components collection is component, elements are references object is component object is reference Show and hide tags determine if the tagged item is to visualized at all. They are applied to fields, variables, loops or method invocations. Depending upon defaults, only one of both tags has to be used. Tags at statements overwrite those at field declarations. tag Table 3. Selection tags /**@show*/, /**@showobject*/ object, reference /**@show*/, /**@showcall*/ /**@show*/, /**@showloop*/ tagged item position in code method call statement loop, if Field declaration, referencing statement loop or if statement If several tags are attached to a statement, the extended tags /**@hidexxx*/ or /**@showxxx*/ should be used, in order to avoid ambiguities. Example: An object and the producing method call are to be visualized. /** */ obj = object.method(); 8
Java (12 Weeks) Introduction to Java Programming Language
Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Fundamentals of Java Programming
Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors
3D Animation of Java Program Execution for Teaching Object Oriented Concepts
3D Animation of Java Program Execution for Teaching Object Oriented Concepts Tim Storer September 23, 2006 Abstract The successful teaching of the object oriented programming paradigm has been identified
VisuSniff: A Tool For The Visualization Of Network Traffic
VisuSniff: A Tool For The Visualization Of Network Traffic Rainer Oechsle University of Applied Sciences, Trier Postbox 1826 D-54208 Trier +49/651/8103-508 [email protected] Oliver Gronz University
DataPA OpenAnalytics End User Training
DataPA OpenAnalytics End User Training DataPA End User Training Lesson 1 Course Overview DataPA Chapter 1 Course Overview Introduction This course covers the skills required to use DataPA OpenAnalytics
UML Class Diagrams (1.8.7) 9/2/2009
8 UML Class Diagrams Java programs usually involve multiple classes, and there can be many dependencies among these classes. To fully understand a multiple class program, it is necessary to understand
Going Interactive: Combining Ad-Hoc and Regression Testing
Going Interactive: Combining Ad-Hoc and Regression Testing Michael Kölling 1, Andrew Patterson 2 1 Mærsk Mc-Kinney Møller Institute, University of Southern Denmark, Denmark [email protected] 2 Deakin University,
Modeling the User Interface of Web Applications with UML
Modeling the User Interface of Web Applications with UML Rolf Hennicker,Nora Koch,2 Institute of Computer Science Ludwig-Maximilians-University Munich Oettingenstr. 67 80538 München, Germany {kochn,hennicke}@informatik.uni-muenchen.de
Generating Aspect Code from UML Models
Generating Aspect Code from UML Models Iris Groher Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich, Germany [email protected] Stefan Schulze Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich,
Computing Concepts with Java Essentials
2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann
Chapter 1. Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages
Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming
core. Volume I - Fundamentals Seventh Edition Sun Microsystems Press A Prentice Hall Title ULB Darmstadt
core. 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Volume I - Fundamentals Seventh Edition CAY S. HORSTMANN GARY
Understanding Software Static and Dynamic Aspects
Understanding Software Static and Dynamic Aspects Welf Löwe IPD, Universität Karlsruhe PF 6980, 76128 Karlsruhe Germany [email protected] Andreas Ludwig IPD, Universität Karlsruhe PF 6980, 76128 Karlsruhe
Java the UML Way: Integrating Object-Oriented Design and Programming
Java the UML Way: Integrating Object-Oriented Design and Programming by Else Lervik and Vegard B. Havdal ISBN 0-470-84386-1 John Wiley & Sons, Ltd. Table of Contents Preface xi 1 Introduction 1 1.1 Preliminaries
Sequence Diagrams. Massimo Felici. Massimo Felici Sequence Diagrams c 2004 2011
Sequence Diagrams Massimo Felici What are Sequence Diagrams? Sequence Diagrams are interaction diagrams that detail how operations are carried out Interaction diagrams model important runtime interactions
MA-WA1920: Enterprise iphone and ipad Programming
MA-WA1920: Enterprise iphone and ipad Programming Description This 5 day iphone training course teaches application development for the ios platform. It covers iphone, ipad and ipod Touch devices. This
Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition
Java 6 'th edition Concepts INTERNATIONAL STUDENT VERSION CONTENTS PREFACE vii SPECIAL FEATURES xxviii chapter i INTRODUCTION 1 1.1 What Is Programming? 2 J.2 The Anatomy of a Computer 3 1.3 Translating
University of Twente. A simulation of the Java Virtual Machine using graph grammars
University of Twente Department of Computer Science A simulation of the Java Virtual Machine using graph grammars Master of Science thesis M. R. Arends, November 2003 A simulation of the Java Virtual Machine
Desktop, Web and Mobile Testing Tutorials
Desktop, Web and Mobile Testing Tutorials * Windows and the Windows logo are trademarks of the Microsoft group of companies. 2 About the Tutorial With TestComplete, you can test applications of three major
Gadget: A Tool for Extracting the Dynamic Structure of Java Programs
Gadget: A Tool for Extracting the Dynamic Structure of Java Programs Juan Gargiulo and Spiros Mancoridis Department of Mathematics & Computer Science Drexel University Philadelphia, PA, USA e-mail: gjgargiu,smancori
Lumousoft Visual Programming Language and its IDE
Lumousoft Visual Programming Language and its IDE Xianliang Lu Lumousoft Inc. Waterloo Ontario Canada Abstract - This paper presents a new high-level graphical programming language and its IDE (Integration
Before you can use the Duke Ambient environment to start working on your projects or
Using Ambient by Duke Curious 2004 preparing the environment Before you can use the Duke Ambient environment to start working on your projects or labs, you need to make sure that all configuration settings
Syllabus for CS 134 Java Programming
- Java Programming Syllabus Page 1 Syllabus for CS 134 Java Programming Computer Science Course Catalog 2000-2001: This course is an introduction to objectoriented programming using the Java language.
For Introduction to Java Programming, 5E By Y. Daniel Liang
Supplement H: NetBeans Tutorial For Introduction to Java Programming, 5E By Y. Daniel Liang This supplement covers the following topics: Getting Started with NetBeans Creating a Project Creating, Mounting,
Aspect Oriented Strategy to model the Examination Management Systems
Aspect Oriented Strategy to model the Examination Management Systems P.Durga 1, S.Jeevitha 2, A.Poomalai 3, Prof.M.Sowmiya 4 and Prof.S.Balamurugan 5 Department of IT, Kalaignar Karunanidhi Institute of
Flash Tutorial Part I
Flash Tutorial Part I This tutorial is intended to give you a basic overview of how you can use Flash for web-based projects; it doesn t contain extensive step-by-step instructions and is therefore not
IRA 423/08. Designing the SRT control software: Notes to the UML schemes. Andrea Orlati 1 Simona Righini 2
Designing the SRT control software: Notes to the UML schemes Andrea Orlati 1 Simona Righini 2 1 - I.N.A.F. Istituto di Radioastronomia. 2 Dip. Astronomia - Università degli Studi di Bologna. Dicembre 2008
Evaluating OO-CASE tools: OO research meets practice
Evaluating OO-CASE tools: OO research meets practice Danny Greefhorst, Matthijs Maat, Rob Maijers {greefhorst, maat, maijers}@serc.nl Software Engineering Research Centre - SERC PO Box 424 3500 AK Utrecht
Object Oriented Software Design II
Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February
Frog VLE Update. Latest Features and Enhancements. September 2014
1 Frog VLE Update Latest Features and Enhancements September 2014 2 Frog VLE Update: September 2014 Contents New Features Overview... 1 Enhancements Overview... 2 New Features... 3 Site Backgrounds...
Source Code Translation
Source Code Translation Everyone who writes computer software eventually faces the requirement of converting a large code base from one programming language to another. That requirement is sometimes driven
AP Computer Science Java Subset
APPENDIX A AP Computer Science Java Subset The AP Java subset is intended to outline the features of Java that may appear on the AP Computer Science A Exam. The AP Java subset is NOT intended as an overall
A Thread Monitoring System for Multithreaded Java Programs
A Thread Monitoring System for Multithreaded Java Programs Sewon Moon and Byeong-Mo Chang Department of Computer Science Sookmyung Women s University, Seoul 140-742, Korea [email protected], [email protected]
Component visualization methods for large legacy software in C/C++
Annales Mathematicae et Informaticae 44 (2015) pp. 23 33 http://ami.ektf.hu Component visualization methods for large legacy software in C/C++ Máté Cserép a, Dániel Krupp b a Eötvös Loránd University [email protected]
1 The Java Virtual Machine
1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This
The C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
Crash Course in Java
Crash Course in Java Based on notes from D. Hollinger Based in part on notes from J.J. Johns also: Java in a Nutshell Java Network Programming and Distributed Computing Netprog 2002 Java Intro 1 What is
How To Design An Information System
Information system for production and mounting of plastic windows MARCEL, MELIŠ Slovak University of Technology - Faculty of Material Sciences and Technology in Trnava, Paulínska 16 street, Trnava, 917
Design by Contract beyond class modelling
Design by Contract beyond class modelling Introduction Design by Contract (DbC) or Programming by Contract is an approach to designing software. It says that designers should define precise and verifiable
Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages
ICOM 4036 Programming Languages Preliminaries Dr. Amirhossein Chinaei Dept. of Electrical & Computer Engineering UPRM Spring 2010 Language Evaluation Criteria Readability: the ease with which programs
Debugging Java Applications
Debugging Java Applications Table of Contents Starting a Debugging Session...2 Debugger Windows...4 Attaching the Debugger to a Running Application...5 Starting the Debugger Outside of the Project's Main
Software Development Kit
Open EMS Suite by Nokia Software Development Kit Functional Overview Version 1.3 Nokia Siemens Networks 1 (21) Software Development Kit The information in this document is subject to change without notice
KITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php [email protected] [email protected] Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
Object Oriented Design
Object Oriented Design Kenneth M. Anderson Lecture 20 CSCI 5828: Foundations of Software Engineering OO Design 1 Object-Oriented Design Traditional procedural systems separate data and procedures, and
Software Visualization Tools for Component Reuse
Software Visualization Tools for Component Reuse Craig Anslow Stuart Marshall James Noble Robert Biddle 1 School of Mathematics, Statistics and Computer Science, Victoria University of Wellington, New
Tips and Tricks SAGE ACCPAC INTELLIGENCE
Tips and Tricks SAGE ACCPAC INTELLIGENCE 1 Table of Contents Auto e-mailing reports... 4 Automatically Running Macros... 7 Creating new Macros from Excel... 8 Compact Metadata Functionality... 9 Copying,
Lab Experience 17. Programming Language Translation
Lab Experience 17 Programming Language Translation Objectives Gain insight into the translation process for converting one virtual machine to another See the process by which an assembler translates assembly
PHP Code Design. The data structure of a relational database can be represented with a Data Model diagram, also called an Entity-Relation diagram.
PHP Code Design PHP is a server-side, open-source, HTML-embedded scripting language used to drive many of the world s most popular web sites. All major web servers support PHP enabling normal HMTL pages
Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.
Handout 1 CS603 Object-Oriented Programming Fall 15 Page 1 of 11 Handout 1 Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Java
CATIA Drafting TABLE OF CONTENTS
TABLE OF CONTENTS Introduction...1 Drafting...2 Drawing Screen...3 Pull-down Menus...4 File...4 Edit...5 View...6 Insert...7 Tools...8 Drafting Workbench...9 Views and Sheets...9 Dimensions and Annotations...10
1 First Steps. 1.1 Introduction
1.1 Introduction Because you are reading this book, we assume you are interested in object-oriented application development in general and the Caché postrelational database from InterSystems in particular.
Hypercosm. Studio. www.hypercosm.com
Hypercosm Studio www.hypercosm.com Hypercosm Studio Guide 3 Revision: November 2005 Copyright 2005 Hypercosm LLC All rights reserved. Hypercosm, OMAR, Hypercosm 3D Player, and Hypercosm Studio are trademarks
KaleidaGraph Quick Start Guide
KaleidaGraph Quick Start Guide This document is a hands-on guide that walks you through the use of KaleidaGraph. You will probably want to print this guide and then start your exploration of the product.
SOFT 437. Software Performance Analysis. Ch 5:Web Applications and Other Distributed Systems
SOFT 437 Software Performance Analysis Ch 5:Web Applications and Other Distributed Systems Outline Overview of Web applications, distributed object technologies, and the important considerations for SPE
Randy Hyde s Win32 Assembly Language Tutorials (Featuring HOWL) #4: Radio Buttons
Randy Hyde s Win32 Assembly Language Tutorials Featuring HOWL #4: Radio Buttons In this fourth tutorial of this series, we ll take a look at implementing radio buttons on HOWL forms. Specifically, we ll
VisCG: Creating an Eclipse Call Graph Visualization Plug-in. Kenta Hasui, Undergraduate Student at Vassar College Class of 2015
VisCG: Creating an Eclipse Call Graph Visualization Plug-in Kenta Hasui, Undergraduate Student at Vassar College Class of 2015 Abstract Call graphs are a useful tool for understanding software; however,
MiniDraw Introducing a framework... and a few patterns
MiniDraw Introducing a framework... and a few patterns What is it? [Demo] 2 1 What do I get? MiniDraw helps you building apps that have 2D image based graphics GIF files Optimized repainting Direct manipulation
A generic framework for game development
A generic framework for game development Michael Haller FH Hagenberg (MTD) AUSTRIA [email protected] Werner Hartmann FAW, University of Linz AUSTRIA [email protected] Jürgen Zauner FH
Guide To Creating Academic Posters Using Microsoft PowerPoint 2010
Guide To Creating Academic Posters Using Microsoft PowerPoint 2010 INFORMATION SERVICES Version 3.0 July 2011 Table of Contents Section 1 - Introduction... 1 Section 2 - Initial Preparation... 2 2.1 Overall
A Direct Manipulation User Interface for the Control of Communication Processes - Making Call Handling Manageable -
A Direct Manipulation User Interface for the Control of Communication Processes - Making Call Handling Manageable - Christoph Grundel and Matthias Schneider-Hufschmidt Siemens AG, ICP CD TI 3, Hofmannstr.
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
CREATING EXCEL PIVOT TABLES AND PIVOT CHARTS FOR LIBRARY QUESTIONNAIRE RESULTS
CREATING EXCEL PIVOT TABLES AND PIVOT CHARTS FOR LIBRARY QUESTIONNAIRE RESULTS An Excel Pivot Table is an interactive table that summarizes large amounts of data. It allows the user to view and manipulate
Network Probe User Guide
Network Probe User Guide Network Probe User Guide Table of Contents 1. Introduction...1 2. Installation...2 Windows installation...2 Linux installation...3 Mac installation...4 License key...5 Deployment...5
INTRODUCTION TO COMPUTER PROGRAMMING. Richard Pierse. Class 7: Object-Oriented Programming. Introduction
INTRODUCTION TO COMPUTER PROGRAMMING Richard Pierse Class 7: Object-Oriented Programming Introduction One of the key issues in programming is the reusability of code. Suppose that you have written a program
A Meeting Room Scheduling Problem
A Scheduling Problem Objective Engineering, Inc. 699 Windsong Trail Austin, Texas 78746 512-328-9658 FAX: 512-328-9661 [email protected] http://www.oeng.com Objective Engineering, Inc., 1999-2007. Photocopying,
TYLER JUNIOR COLLEGE School of Continuing Studies 1530 SSW Loop 323 Tyler, TX 75701 1.800.298.5226 www.tjc.edu/continuingstudies/mycaa
TYLER JUNIOR COLLEGE School of Continuing Studies 1530 SSW Loop 323 Tyler, TX 75701 1.800.298.5226 www.tjc.edu/continuingstudies/mycaa Education & Training Plan Java Programming Specialist Program Student
Chapter 1 Java Program Design and Development
presentation slides for JAVA, JAVA, JAVA Object-Oriented Problem Solving Third Edition Ralph Morelli Ralph Walde Trinity College Hartford, CT published by Prentice Hall Java, Java, Java Object Oriented
Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering
Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 2 GoF Design Patterns Creational 1 GoF Design Patterns Principles Emphasis on flexibility and reuse through decoupling of classes. The underlying
Lifting the Hood of the Computer: * Program Animation with the Teaching Machine
Lifting the Hood of the Computer: * Program Animation with the Teaching Machine Michael P. Bruce-Lockhart and Theodore S. Norvell Electrical and Computer Engineering Faculty of Engineering and Applied
C Compiler Targeting the Java Virtual Machine
C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the
Bitrix Site Manager 4.1. User Guide
Bitrix Site Manager 4.1 User Guide 2 Contents REGISTRATION AND AUTHORISATION...3 SITE SECTIONS...5 Creating a section...6 Changing the section properties...8 SITE PAGES...9 Creating a page...10 Editing
LabVIEW Advanced Programming Techniques
LabVIEW Advanced Programming Techniques SECOND EDITION Rick Bitter Motorola, Schaumburg, Illinois Taqi Mohiuddin MindspeedTechnologies, Lisle, Illinois Matt Nawrocki Motorola, Schaumburg, Illinois @ CRC
Types of UML Diagram. UML Diagrams 140703-OOAD. Computer Engineering Sem -IV
140703-OOAD Computer Engineering Sem -IV Introduction to UML - UML Unified Modeling Language diagram is designed to let developers and customers view a software system from a different perspective and
13-1. This chapter explains how to use different objects.
13-1 13.Objects This chapter explains how to use different objects. 13.1. Bit Lamp... 13-3 13.2. Word Lamp... 13-5 13.3. Set Bit... 13-9 13.4. Set Word... 13-11 13.5. Function Key... 13-18 13.6. Toggle
An Overview of Java. overview-1
An Overview of Java overview-1 Contents What is Java Major Java features Java virtual machine Java programming language Java class libraries (API) GUI Support in Java Networking and Threads in Java overview-2
Using UML Part Two Behavioral Modeling Diagrams
UML Tutorials Using UML Part Two Behavioral Modeling Diagrams by Sparx Systems All material Sparx Systems 2007 Sparx Systems 2007 Page 1 Trademarks Object Management Group, OMG, Unified Modeling Language,
Instructions for Use. CyAn ADP. High-speed Analyzer. Summit 4.3. 0000050G June 2008. Beckman Coulter, Inc. 4300 N. Harbor Blvd. Fullerton, CA 92835
Instructions for Use CyAn ADP High-speed Analyzer Summit 4.3 0000050G June 2008 Beckman Coulter, Inc. 4300 N. Harbor Blvd. Fullerton, CA 92835 Overview Summit software is a Windows based application that
Java Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
Event processing in Java: what happens when you click?
Event processing in Java: what happens when you click? Alan Dix In the HCI book chapter 8 (fig 8.5, p. 298), notification-based user interface programming is described. Java uses this paradigm and you
Schema Classes. Polyhedra Ltd
Schema Classes Polyhedra Ltd Copyright notice This document is copyright 1994-2006 by Polyhedra Ltd. All Rights Reserved. This document contains information proprietary to Polyhedra Ltd. It is supplied
Building and Using Web Services With JDeveloper 11g
Building and Using Web Services With JDeveloper 11g Purpose In this tutorial, you create a series of simple web service scenarios in JDeveloper. This is intended as a light introduction to some of the
Basic Programming and PC Skills: Basic Programming and PC Skills:
Texas University Interscholastic League Contest Event: Computer Science The contest challenges high school students to gain an understanding of the significance of computation as well as the details of
Implementação. Interfaces Pessoa Máquina 2010/11. 2009-11 Salvador Abreu baseado em material Alan Dix. Thursday, June 2, 2011
Implementação Interfaces Pessoa Máquina 2010/11 2009-11 baseado em material Alan Dix 1 Windowing systems Architecture Layers Higher level Tool UI Toolkit (Widgets) Window System OS Application Hardware
The structured application of advanced logging techniques for SystemVerilog testbench debug and analysis. By Bindesh Patel and Amanda Hsiao.
Logging makes sense for testbench debug The structured application of advanced logging techniques for SystemVerilog testbench debug and analysis. By Bindesh Patel and Amanda Hsiao. SystemVerilog provides
To Java SE 8, and Beyond (Plan B)
11-12-13 To Java SE 8, and Beyond (Plan B) Francisco Morero Peyrona EMEA Java Community Leader 8 9...2012 2020? Priorities for the Java Platforms Grow Developer Base Grow Adoption
Aspect-Oriented Programming
Aspect-Oriented Programming An Introduction to Aspect-Oriented Programming and AspectJ Niklas Påhlsson Department of Technology University of Kalmar S 391 82 Kalmar SWEDEN Topic Report for Software Engineering
How To Draw A Cell Phone Into A Cellphone In Unminimal Diagram (Uml)
UML Tutorial: Collaboration Diagrams Robert C. Martin Engineering Notebook Column Nov/Dec, 97 In this column we will explore UML collaboration diagrams. We will investigate how they are drawn, how they
DATA MINING TOOL FOR INTEGRATED COMPLAINT MANAGEMENT SYSTEM WEKA 3.6.7
DATA MINING TOOL FOR INTEGRATED COMPLAINT MANAGEMENT SYSTEM WEKA 3.6.7 UNDER THE GUIDANCE Dr. N.P. DHAVALE, DGM, INFINET Department SUBMITTED TO INSTITUTE FOR DEVELOPMENT AND RESEARCH IN BANKING TECHNOLOGY
Making Visio Diagrams Come Alive with Data
Making Visio Diagrams Come Alive with Data An Information Commons Workshop Making Visio Diagrams Come Alive with Data Page Workshop Why Add Data to A Diagram? Here are comparisons of a flow chart with
The Mjølner BETA system
FakePart I FakePartTitle Software development environments CHAPTER 2 The Mjølner BETA system Peter Andersen, Lars Bak, Søren Brandt, Jørgen Lindskov Knudsen, Ole Lehrmann Madsen, Kim Jensen Møller, Claus
Meta Model Based Integration of Role-Based and Discretionary Access Control Using Path Expressions
Meta Model Based Integration of Role-Based and Discretionary Access Control Using Path Expressions Kathrin Lehmann, Florian Matthes Chair for Software Engineering for Business Information Systems Technische
How to use PGS: Basic Services Provision Map App
How to use PGS: Basic Services Provision Map App The PGS: Basic Services Provision Map App The main features of the PGP Basic Services web application includes: Navigation Tools Map Tools Main Map Links
A Comparative Analysis of Structured and Object-Oriented Programming Methods ASAGBA, PRINCE OGHENEKARO; OGHENEOVO, EDWARD E. CPN, MNCS.
JASEM ISSN 1119-8362 All rights reserved Full-text Available Online at www.bioline.org.br/ja J. Appl. Sci. Environ. Manage. December, 2008 Vol. 12(4) 41-46 A Comparative Analysis of Structured and Object-Oriented
