Download presentation
Presentation is loading. Please wait.
Published byEdwina Martin Modified over 8 years ago
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`
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
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
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.