Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Tools, Part 2 Fall, 2002. Overview Toolkits Toolkits Prototyping Languages Prototyping Languages Frameworks Frameworks Groupware Frameworks Groupware.

Similar presentations


Presentation on theme: "Software Tools, Part 2 Fall, 2002. Overview Toolkits Toolkits Prototyping Languages Prototyping Languages Frameworks Frameworks Groupware Frameworks Groupware."— Presentation transcript:

1 Software Tools, Part 2 Fall, 2002

2 Overview Toolkits Toolkits Prototyping Languages Prototyping Languages Frameworks Frameworks Groupware Frameworks Groupware Frameworks GroupKit GroupKit THYME THYME Wrap Up Wrap Up

3 Toolkits Ease development by providing fully- fleshed out UI widgets Ease development by providing fully- fleshed out UI widgets A UI component has two major parts A UI component has two major parts The UI presentation (a button) The UI presentation (a button) The outlet (how the program is informed when the button is pressed) The outlet (how the program is informed when the button is pressed)

4 Toolkits TCL/Tk TCL/Tk Motif Motif Mac Toolbox Mac Toolbox MFC MFC Java AWT Java AWT

5 Toolkits Disadvantages Disadvantages does not necessarily contain all the functionality you need does not necessarily contain all the functionality you need constrained by the programming model constrained by the programming model motif and pseudo-objects motif and pseudo-objects AWT and layout managers AWT and layout managers toolkits can be specific to a language toolkits can be specific to a language AWT and Java AWT and Java TCL/Tk and TCL TCL/Tk and TCL

6 Prototyping Languages By hiding programming details, a developer can build a functional prototype quicker By hiding programming details, a developer can build a functional prototype quicker Hidden details Hidden details memory allocation / garbage collection memory allocation / garbage collection UI UI flow control flow control

7 Prototyping Languages Java Java Application / Applet language Application / Applet language Cross platform. Intent is that all applications act the same on all platforms Cross platform. Intent is that all applications act the same on all platforms Hypercard Hypercard Movement between Cards (screens) Movement between Cards (screens) Tcl/Tk Tcl/Tk Scripting language Scripting language

8 Prototyping Languages The final prototype unsuitable for a released product The final prototype unsuitable for a released product speed speed memory footprint memory footprint Interface to external libraries can be difficult (but is usually possible) Interface to external libraries can be difficult (but is usually possible) JNI for interfacing to C libraries from Java JNI for interfacing to C libraries from Java SWIG for Perl SWIG for Perl

9 Toolkits and Languages The Message Toolkits provide UI widgets that can be used to develop the application Toolkits provide UI widgets that can be used to develop the application This lets the developer focus on building the application, instead of the widgets This lets the developer focus on building the application, instead of the widgets Prototyping languages allow the rapid development of prototype applications, but can entail trade-offs Prototyping languages allow the rapid development of prototype applications, but can entail trade-offs

10 Frameworks My definition: Frameworks provide structure for the developer to build an application around My definition: Frameworks provide structure for the developer to build an application around Other definitions: Other definitions: MacOSX frameworks (i.e., Cocoa, Carbon) as object oriented libraries MacOSX frameworks (i.e., Cocoa, Carbon) as object oriented libraries Often synonym for toolkit Often synonym for toolkit

11 Groupware Frameworks Provide the infrastructure for building groupware Provide the infrastructure for building groupware UI Toolkit UI Toolkit Messaging / Networking / etc Messaging / Networking / etc Discovery Discovery Other features Other features transcription transcription analysis analysis

12 GroupKit Roseman and Greenberg, 1995 Roseman and Greenberg, 1995 TCL/Tk framework for building distributed, synchronous groupware TCL/Tk framework for building distributed, synchronous groupware Room-based, called conferences, handled by the session manager Room-based, called conferences, handled by the session manager

13 GroupKit Features Features runtime infrastructure runtime infrastructure manage communication manage communication handle interconnections handle interconnections groupware programming abstractions groupware programming abstractions RPC RPC shared data structures shared data structures

14 GroupKit Features Features groupware widgets groupware widgets multi-user scrollbar multi-user scrollbar shared whiteboard shared whiteboard telepointers telepointers session management session management discovery of sessions discovery of sessions grouping of users grouping of users

15 THYME flexible flexible the developer should have access to the infrastructure, not be limited by it the developer should have access to the infrastructure, not be limited by it extensible extensible the developer should be able to add infrastructure the developer should be able to add infrastructure introspectable introspectable the developer should be able to extract contextual information the developer should be able to extract contextual information consistent consistent patterns and structure patterns and structure

16 THYME component model component model driven by communication between components driven by communication between components developer’s work involves writing new components which communicate to other developer written components and existing, infrastructure components developer’s work involves writing new components which communicate to other developer written components and existing, infrastructure components infrastructure follows this component model, no special cases infrastructure follows this component model, no special cases

17 What You Get my-project-base my-project-base contains thyme-core contains thyme-core chats - the THYME Chat Room chats - the THYME Chat Room swab - the THYME Shared Whiteboard swab - the THYME Shared Whiteboard abs - the THYME Build System abs - the THYME Build System my-project - your stuff goes here my-project - your stuff goes here building everything involves `make` or `ant` building everything involves `make` or `ant`

18

19 What You’ll Do add your components and message source code to my-project add your components and message source code to my-project the room the room the client the client add your component specifications to my- project add your component specifications to my- project run your application run your application collect data collect data

20 Anatomy of a Component a component is the functional piece of THYME application a component is the functional piece of THYME application uniquely identified uniquely identified sends and receives messages sends and receives messages lifecycle lifecycle on () methods on () methods infrastructure infrastructure taken care of for you taken care of for you functional functional your responsibility your responsibility

21 Reference Ids An Id uniquely points to a component An Id uniquely points to a component Contains a classid and an instanceid Contains a classid and an instanceid the classid is specified in the specification file the classid is specified in the specification file the instanceid is developer specified the instanceid is developer specified the combination of instanceid and classid is unique within a Node the combination of instanceid and classid is unique within a Node An Id is never constructed by the developer, it is obtained via the Id manager An Id is never constructed by the developer, it is obtained via the Id manager

22 Obtaining a Component A given Id always references the same component. There is no difference between obtaining and constructing a component A given Id always references the same component. There is no difference between obtaining and constructing a component No direct construction (i.e., you will never call new MyComponent()) No direct construction (i.e., you will never call new MyComponent()) You should pass around an Id, not a component You should pass around an Id, not a component How it works How it works 1. obtain an Id that represents the component 2. obtain the component manager 3. request a new component

23 Messaging THYME provides simple semantics for communicating between components, local or remote. THYME provides simple semantics for communicating between components, local or remote. No RMI / RPC (yet) No RMI / RPC (yet) A message object is constructed and sent to a specified component A message object is constructed and sent to a specified component A component is informed of a new message via the receive() method A component is informed of a new message via the receive() method

24 Lifecycle Lifecycle stages exist to provide a granular set of post- constructors Lifecycle stages exist to provide a granular set of post- constructors Extensible, but don’t bother here Extensible, but don’t bother here Cumulative and ordered Cumulative and ordered i.e., setReady() on a constructed component will call onInit() and onReady(), in order i.e., setReady() on a constructed component will call onInit() and onReady(), in order 3 methods 3 methods set () is called on the component and causes a transition is set () is called on the component and causes a transition is () is called on a component and returns a boolean () is called on a component and returns a boolean on () is implemented in the component and called appropriately on () is implemented in the component and called appropriately

25 Lifecycle Stages (in order) Stages (in order) constructed constructed initialized initialized ready ready shutdown shutdown Transitions Transitions constructed + init = initialized constructed + init = initialized initialized + ready = ready initialized + ready = ready * + reset = initialized * + reset = initialized * + shutdown = shutdown * + shutdown = shutdown

26 Transcription Transcription is performed by collecting messages that are sent between components Transcription is performed by collecting messages that are sent between components Transcript is optional, a message can be ignored by setting setTranscribe(false). Transcript is optional, a message can be ignored by setting setTranscribe(false). Transcribed messages are set the transcription service, which exists within a separate VM Transcribed messages are set the transcription service, which exists within a separate VM

27 Running Your Application Each component exists in exactly one container component, called a Node Each component exists in exactly one container component, called a Node The Node brokers the component for discovery and ensures that addressed messages get to it The Node brokers the component for discovery and ensures that addressed messages get to it Each Node exists on exactly one host, although one host can have multiple nodes Each Node exists on exactly one host, although one host can have multiple nodes

28

29 Running Your Application To run your application, you need to To run your application, you need to tell the node what components it might need to create and use tell the node what components it might need to create and use instantiate at least one component to start the application going instantiate at least one component to start the application going pass control to that component pass control to that component

30 Running Your Application Each application has a specification file, which provides these elements Each application has a specification file, which provides these elements<?xml?><system> <blocs> </blocs></system>

31 Discovery I start up a chat room client, how do I get a list of all chat rooms I might want to connect to? I start up a chat room client, how do I get a list of all chat rooms I might want to connect to? Explicit, specify the room on the command line Explicit, specify the room on the command line Implicit, talk to the registrar Implicit, talk to the registrar

32 Registrar The node registrar provides a list of all Nodes that have been registered with it The node registrar provides a list of all Nodes that have been registered with it Each node can be introspected to get a list of components that it contains Each node can be introspected to get a list of components that it contains The list can be searched for matching criteria The list can be searched for matching criteria All this is encapsulated by the THYME find manager component All this is encapsulated by the THYME find manager component

33 Wrap Up Specification Methods Specification Methods grammars, transition diagrams, state charts, UAN grammars, transition diagrams, state charts, UAN Interface Building Tools Interface Building Tools rapid prototyping rapid prototyping Evaluation Tools Evaluation Tools Toolkits Toolkits Frameworks Frameworks GroupKit, THYME GroupKit, THYME

34 THYME Resources Email Email thyme@cs.brandeis.edu thyme@cs.brandeis.edu thyme@cs.brandeis.edu IRC IRC irc://group.cs.brandeis.edu #thyme irc://group.cs.brandeis.edu #thyme Webpage Webpage http://group.cs.brandeis.edu/thyme http://group.cs.brandeis.edu/thyme http://group.cs.brandeis.edu/thyme JavaDocs JavaDocs http://group.cs.brandeis.edu/thyme/api http://group.cs.brandeis.edu/thyme/api http://group.cs.brandeis.edu/thyme/api Manual Manual http://group.cs.brandeis.edu/thyme/manual http://group.cs.brandeis.edu/thyme/manual http://group.cs.brandeis.edu/thyme/manual


Download ppt "Software Tools, Part 2 Fall, 2002. Overview Toolkits Toolkits Prototyping Languages Prototyping Languages Frameworks Frameworks Groupware Frameworks Groupware."

Similar presentations


Ads by Google