Lord of the Base Image - Things every Library Supervisor should know
|
|
- David Shields
- 6 years ago
- Views:
Transcription
1 Lord of the Base Image - Things every Library Supervisor should know Smalltalk Solutions Europe 1998 Joseph Pelrine Daedalos Consulting Group jpelrine@daedalos.de
2 About this Tutorial 16:30-18:00 PM Coffee break Beer afterwards Intermediate/Advanced Assumes you know Smalltalk and ENVY Not all answers are supplied You should want to (and be able to) figure out the implementation yourself 2
3 What We re Gonna Talk About Basic Principles Everyday Tasks Packaging and Delivery Tasks 3
4 You ll love it, it s a way of life - Frank Zappa 4
5 Basic Principles Library Architecture Image Management Tools Library Specs 5
6 Library Architecture App Views & Controllers Tools Domain Model Framework Base Support Kernel 6
7 Kernel What does it contain? The kernel contains all of the classes supplied by the vendor, together with all bug fixes and small enhancements. Who maintains it? The kernel is the responsibility of the Library Manager. This could be the mentor, local guru, or a senior smalltalker. 7
8 Base Support What does it contain? Base Support consists of all third-party base systems (run-time support, e.g. WindowBuilder runtime, add-ons for database access, etc), as well as internal system extensions and tools. Who maintains it? Either your toolsmith or your library supervisor. 8
9 Tools What does it contain? Tools consists of all internal and third-party tools which will not included in the run-time application (WindowBuilder, RDB mapping tools, etc). Who maintains it? Same as Base Support. If you have your own tools, you have someone writing them, and it's his responsibility. Otherwise the job ends up being done by the library manager. 9
10 Framework What does it contain? Internal application frameworks. Vendor-supplied or third-party frameworks (ApplicationModel or HotDraw, for example), belong in the Kernel or BaseSupport groupings. Who maintains it? If you have a large team, you probably already have a framework group. It's their responsibility. Otherwise, your best application developers, who have enough experience to keep abstracting, generalizing and refactoring these classes to make them really reuseable. 10
11 Domain Model What does it contain? Domain Objects contains all the business objects used in developing applications for a particular business.. Who maintains it? Same as Framework. Your best application developers, who have enough experience to keep abstracting, generalizing and refactoring these classes to make them really reuseable. 11
12 Application Views & Controllers What does it contain? This grouping contains all the logic necessary for a specific application, divided into smaller modules. These modules typically contain a controller and one or more views working with it. Other optional modules contains model objects needed only in the specific application, and model objects which have not yet been abstracted enough to end up in the Domain Model layer. Who maintains it? Your application developers. 12
13 Image Management Tools Make baselining easy Consistent development environment Useful in a multiple project/multiple developer environment Harmonize third-party tools Aid packaging and delivery 13
14 Image Management Tools Load All Maps Show Defined Configuration Check Defined Configuration Export Project Maps Open Editions Bad Prerequisites... 14
15 Loading ConfigMaps JPImageBuilder class>>#load: "Load an OrderedCollection of ConfigMaps" Transcript bringtofront. acollection isnil iftrue: [^false]. acollection do: [:each each notnil iftrue: [ Transcript cr; show: -> Loading ConfigurationMap: ; show: each signature; show:.... each beenloaded: false. each load. (self beenloaded: each) iffalse: [^false]. Transcript show: LOADED ]]. Transcript cr; show: DONE. ^true 15
16 Loading ConfigMaps The ConfigMaps for each layer are defined in a method Definitions could be stuffed into User Fields, but you have no version history Usable for multiple projects "Coffee Break" tool What do you save in the methods? 16
17 LibrarySpecs Thanks to Jan Steinmann ConfigMaps Applications/SubApplications Classes Methods 17
18 Library Spec #(rootname appname) #(rootname appname {timestamp classname}) #(rootname appname classname {timestamp selector}) #(rootname appname classname selector timestamp) 18
19 EmConfigurationMap class>>fromlibraryspec: alibraryspecarray "Return the ConfigMap edition described by this library spec, or nil. Note - this is not the complete implementation!" ^(self editionsdictionaryfor: (alibraryspecarray at: 2)) detect: [:shdw shdw timestamp = (alibraryspecarray at: 3)] ifnone: [^nil] EmConfigurationMap>>librarySpec ^Array with: self class name with: self name with: self timestamp libraryspec EmTimeStamp>>librarySpec "Answer my second count." ^seconds 19
20 I hated it until I loved it????? 20
21 Everyday Tasks Writing Scripts Changing defaults Customizing browsers Tools 21
22 Writing Scripts Useful for everyday tasks Can be easily packed into methods Require prompters knowledge of ENVY protocol 22
23 Prompter Utility #chooseauser #chooseanappandedition #chooseanconfigmapandedition #choosesomeapps #choosesomeappsandeditions #choosesomeconfigmapsandeditions 23
24 A Sample Script Adding a User Defining a new user is easy But then, you have to include him/her as a group member in all Applications the he/she will be working on A script takes away the grunt work 24
25 #chooseauser chooseauser "self chooseauser" ^EtTools promptforuser: Choose a User 25
26 #choosesomeapps choosesomeapps "self choosesomeapps" ^EtBrowser new prompt: Select some Apps choosemultiplefrom: (Application currentlyloaded assortedcollection: Class sortblock) initialselection: nil printblock: nil statusindicatorblock: nil 26
27 Script Example "Add a user to an bunch of apps" user apps user := JPPrompterUtility chooseauser. apps := JPPrompterUtility choosesomeapps. apps do: [ :app JPPrompterUtility changeuserto: app manager while: [app addgroupmember: user]] 27
28 #choosesomeconfigmapsandeditions choosesomeconfigmapsandeditions "self choosesomeconfigmapsandeditions" ^EtConfigurationMapsBrowser new prompt: Select the configuration map versions choosemultiplefrom: EmConfigurationMap configurationmapnames assortedcollection label: Names printblock: [:mapname mapname] dependentlistblock: [:mapname (EmConfigurationMap editionsfor: mapname) asarray select: [:edition edition isversion]] dependentlabel: Versions dependentprintblock: [:map map timestamp signature] selectedlabel: Selected Versions selectedprintblock: [:map map signature] statusindicatorblock: nil 28
29 Changing Defaults Error Reporter Manager Interface Browsers 29
30 Error Reporter Central interface for all error reporting EmImageSupport errorreporter: EmErrorReporter new initialize Interesting messages to override: #logerror:withparms:severity: #reporterror:withparms:severity: You could also substitute the log device and the report device in the current error reporter 30
31 Manager Interface Supplies version names EmInterface current 31
32 Manager Interface - 2 Application subclass: #JPManagerInterfaceApp instancevariablenames: classvariablenames: OldLibraryInterface pooldictionaries: EmInterface subclass: #JPManagerInterface instancevariablenames: classvariablenames: pooldictionaries: install "install the customized Manager Interface when loaded" self istoolinstalled iffalse: [ OldLibraryInterface := JPManagerInterface current. JPManagerInterface current: JPManagerInterface new] deinstall "reinstal the default (or previous) Manager Interface when removing" self istoolinstalled iftrue: [JPManagerInterface current: (OldLibraryInterface == nil iftrue: [JPManagerInterface superclass new] iffalse: [OldLibraryInterface])] istoolinstalled "answer true, if the new interface is installed" ^JPManagerInterface current class == JPManagerInterface 32
33 Version Name Protocol Use a different incrementing algorithm Enforce company standards Add User initials V [JP ] Do you really want initials? Version name templates (StS) 33
34 User Initials EmUser>>initials initials (initials := self record inheriteduserfieldat: #Initials) isempty iftrue: [self initials: self createinitials]. ^initials EmUser>>initials: astring self updaterecordwith: [:record record inheriteduserfieldat: #Initials put: astring]. ^astring EmUser>>createInitials ^self fullname select: [:c c isuppercase] 34
35 Browsers Image Application Manager Repository Application Configurations Configuration Maps 35
36 Browsers Default browser mappings are stored in EtTools browsermappings You can subclass existing browsers and install them as default mappings Each user can store custom changes either in extension Applications or in User Fields EtWindow class>>#defaultwindowsize: 36
37 EtToolsVendorExtensionApp Allows extensions to menus without changing existing code Simple Protocol #addtoapplicationsmenu:browser: #addtoclassesmenu:browser: #addtomethodsmenu:browser: #addtotextmenu:browser: Public domain Existing tools easily adaptable 37
38 Browsers -Extension or Subclass? Changes made through extensions are available to all normal browser subclasses, but are trickier to implement Changes made in subclasses can be more extreme, but must be reimplemented in all browsers wanting them Extend when possible 38
39 Stupid Mistakes I Have Made Not allowing compilation when Warning 49 occurs Forcing Application comments upon versioning Forcing Class versioning ("Junk") when reloading current Application and many others 39
40 Library Supervisor Is God Mode Saves a lot of time!! Shouldn't be available to all A lot of work to implement It's better to subclass EtApplicationManager for this than to extend it 40
41 Changing Users changeuserto: newuser while: ablock olduser (olduser := EmUser current) = newuser iftrue: [^ablock value]. (EmUser classpool declarevariable: CurrentUser ) value: newuser. ^ablock ensure: [ (EmUser classpool declarevariable: CurrentUser ) value: olduser] 41
42 Package early, package often 42
43 Packaging & Delivery Tasks Renaming Versions Sorting Out Prerequisites Refactoring Prerequisites Moving SubApps 43
44 Renaming Versions Thanks to Eric Clayberg Murphy's law of software versioning Especially useful for toolsmiths Kids, don't try this at home!! 44
45 Renaming Application Versions hods: EtApplicationManager>>renameApplicationVersions Rename the selected application versions newname newname := self prompt: 'Enter new version name' answer: self selectedapplication newname. (newname isnil or: [newname isempty]) iftrue: [^self]. self execshortoperation: [ self selectedapplications do: [:application application timestamp newname = newname iffalse: [ application updateedition: [:editionrecord editionrecord setnewname: newname; insert]]]. self redrawapplications] 45
46 Renaming Class Versions EtApplicationManager>>renameClassVersions application timestamp newname application := self selectedapplication. timestamp := self selectedclass timestampin: application. newname := self prompt: Enter new version name answer: timestamp newname. (newname isnil or: [newname isempty]) iftrue: [^self]. self execshortoperation: [ self selectedclasses do: [:class class ismetaclass iffalse: [ timestamp := class timestampin: application. timestamp newname = newname iffalse: [ timestamp newname: newname. class updatein: application with: [:editionsrecord entry oldlength entry := editionsrecord currententry. oldlength := entry newname size. entry replaceelement: 2 with: newname; length: entry length - oldlength + newname size; yourself]]]]. self redrawclasses] 46
47 Renaming Configuration Map Versions EtConfigurationMapBrowser>>renameConfigMapVersions edition versionname self changerequest iffalse: [^self]. edition := self selectededition. versionname := self prompt: Enter new version name for, edition signature answer: edition versionname. (versionname isnil or: [versionname isempty]) iftrue: [^nil]. self execshortoperation: [ self selectededition relocaterecordwith: [:editionrecord editionrecord replaceelement: 2 with: versionname; insert]. self updateeditions: self selectededitions restoretotop: true] 47
48 Run-time dependencies - just say no! 48
49 Sorting Out Prerequisites Don t ignore Warning 49 The method which has just been compiled references a class which it shouldn't. This is because the class referenced is not "visible" in the prerequisite chain of the application containing the method. This can be corrected in two ways: You can move the method to another application which has the class in its prerequisite chain. You can move the class to make it visible, by including the class's defining application into the prerequisite chain for the method's application First you have to find out where something's wrong 49
50 Prerequisites Browser Thanks to Glenn Jones 50
51 SubApplication class>>#badprerequisiteclasses Transcript bringtofront; cr; show: Looking for missing prerequisite classes in, self symbol. self badprerequisiteclassesdictionary associationsdo: [:each Transcript cr; show: each key printstring, ( ; show: each key methodclass controller name, ) references:. (each value assortedcollection: Class sortblock) do: [ :class Transcript cr; show:, class name, ( ; show: class controller name, ) ]]. Transcript cr; show: done ; cr. 51
52 SubApplication class>>#badprerequisiteclassesdictionary "Returns a dictionary of methods that reference classes not defined in prerequisite applications" nonprereq visibleclasses collection allapplications nonprereq := IdentityDictionary new. allapplications := self withallsubapplications. visibleclasses := app allvisibleclasses. allapplications do: [ :app app visiblepublicclasses do: [ :class (class methodsin: app) do: [ :method method do: [ :literal ((literal isassociation) and: [literal value isclass]) iftrue: [ (literal value = app) iffalse: [ (visibleclasses includes: literal value controller) iffalse: [ (nonprereq at: method ifabsentput: [OrderedCollection new]) add: literal value]]]]]]]. ^nonprereq 52
53 Refactoring Prerequisites Although it is not needed by a specific application, a prerequisite can not be removed if it is required by a dependent of the application 53
54 How to do it Version and release any open class editions You re going to reload the current (released) lineup Browse Application Editions Remove the prereq Add the prereq From the AppMan, choose both, then reload current 54
55 Moving SubApps on the fly Most times it's not possible to unload and reload Applications independently because of 'prerequisite gridlock' This is another manipulation which must be done in the repository and not in the image 55
56 How to do it Version and release any open class editions You re going to reload the current (released) lineup Browse Application Editions Remove the SubApp Add the SubApp From the AppMan, choose both, then reload current 56
57 Resources st- Smalltalk Report VisualAge Magazine comp.lang.smalltalk 57
58 Thanks OTI, for the tool Kent Beck, Stefan Bosshard, Eric Clayberg, Glenn Jones, Alan Knight, Jan Steinman, all the guys at Daedalos, Peter Misch and Renate Schirmer 58
Safely Extending the Environment Part 2 - being a good citizen Joseph Pelrine Daedalos Consulting
Safely Extending the Environment Part 2 - being a good citizen Joseph Pelrine Daedalos Consulting I just got back from Smalltalk Solutions (although that s the topic for another article - or a couple).
More informationGuru 101 Grokking the Smalltalk system. Smalltalk Solutions Europe 1998 Joseph Pelrine Daedalos Consulting Group
Guru 101 Grokking the Smalltalk system Smalltalk Solutions Europe 1998 Joseph Pelrine Daedalos Consulting Group jpelrine@daedalos.de About this talk 10:00-12:00 AM Coffee break Beer afterwards Intermediate
More informationBasic Objects, Conditionals and Loops
Basic Objects, Conditionals and Loops Booleans Basic Loops Overview of the Collection hierarchy more than 80 classes: (Bag, Array, OrderedCollection, SortedCollection, Set, Dictionary...) Loops and Iteration
More informationST Introduction. Birds-eye view
3. Standard Classes ST Introduction Birds-eye view Reify everything by reifying its entire implementation model, Smalltalk succeeds in being open, and extensible. New features can be added without changing
More informationThere are a few important ways that Smalltalk is different then other languages:
The Presenters Ginny Ghezzo: Project Manager for IBM VisualAge Smalltalk and Level 3 support for the Application Builder Craig Chaney: Technical Lead on the Virtual Machine, Communications and Linux development
More informationFrom Design to Implementation
From Design to Implementation The Presenters Rick Trotter, IBM Smalltalk Group Dave Maeda, IBM Smalltalk Group Coding the video-store application Today we will see how the video-store application Booch
More informationAbout Instance Initialization
Learning Object-Oriented Programming and Design with TDD About Instance Initialization Stéphane Ducasse http://stephane.ducasse.free.fr http://www.pharo.org W5S06 W5S06 2 / 26 How to ensure that an instance
More informationSmalltalk. Topics. History of Smalltalk. OOP and GUI. Steve Jobs, PARC, Dec Smalltalk 1. The best way to predict the future is to invent it.
Smalltalk The best way to predict the future is to invent it. Alan Kay, 1971 Topics History and significance of Smalltalk Object-oriented programming The Smalltalk language Smalltalk today Additional Examples
More informationIn this chapter we enhance the Los Boquitas application with a new component showing upcoming events in a table.
In this chapter we enhance the Los Boquitas application with a new component showing upcoming events in a table. 1. First, we need to have some events to display. a. We will start by defining an event
More informationUniversity of Berne Institute of Computer Science
University of Berne Institute of Computer Science http://www.iam.unibe.ch/~ducasse/ SUnit Explained Stéphane Ducasse (revised by Rick Zaccone) Directory Table of Contents Begin Article Copyright c 2003
More information3. A Simple Counter. Creating your own class
In this exercise, you will write your first complete program. The program is very simple, the goal of the exercise is to get used to the Pharo environment and the basics of the language. From the Pharo
More informationRefactorings. Refactoring. Refactoring Strategy. Demonstration: Refactoring and Reverse Engineering. Conclusion
Refactorings Refactoring What is it? Why is it necessary? Examples Tool support Refactoring Strategy Code Smells Examples of Cure Demonstration: Refactoring and Reverse Engineering Refactor to Understand
More informationPharo Syntax in a Nutshell
Pharo Syntax in a Nutshell Damien Cassou, Stéphane Ducasse and Luc Fabresse W1S06, 2015 W1S06 2 / 28 Getting a Feel About Syntax In this lecture we want to give you the general feel to get started: Overview
More informationObject. Accessing. Changing. Chapter
Chapter 10 Object Smalltalk is a rooted system, which means that there is a root superclass from which all other classes are descended. That root superclass is Object. (Actually, there other root classes,
More informationSmalltalk FOOP. Smalltalk
2015-03-20 Smalltalk Smalltalk 2015-03-20 Smalltalk 1 First Examples hello Transcript show: Hi World hello5 1 to: 5 do: [:i (Transcript show: Hi World ) cr] hello: times 1 to: times do: [:i (Transcript
More informationAn Overview of Essential Collections
An Overview of Essential Collections Damien Cassou, Stéphane Ducasse and Luc Fabresse W3S07 http://www.pharo.org W3S07 2 / 31 What You Will Learn Some basic collections Essential API to program collections
More information2. Smalltalk a reflective language. Oscar Nierstrasz
2. Smalltalk a reflective language Oscar Nierstrasz Birds-eye view Smalltalk is still today one of the few fully reflective, fully dynamic, objectoriented development environments. We will see how a simple,
More informationAdvanced VisualAge Development
Advanced VisualAge Development Eric Clayberg Sr. Vice President of Product Development Instantiations, Inc. April 24, 2002 clayberg@instantiations.com http://www.instantiations.com 978-750 750-3621 Eric
More informationAn Overview of Essential Collections
Learning Object-Oriented Programming and Design with TDD An Overview of Essential Collections Stéphane Ducasse http://stephane.ducasse.free.fr http://www.pharo.org W2S08 W2S08 2 / 32 What You Will Learn
More informationMetaprogramming and Reflection Refactoring
Metaprogramming and Reflection Refactoring Universität Bern Marcus Denker Hasso-Plattner-Institut Potsdam Software Architecture Group Prof. Dr. Robert Hirschfeld http://www.swa.hpi.uni-potsdam.de WS 2006/2007
More informationAbstract Interpretation for Dummies
Abstract Interpretation for Dummies Program Analysis without Tears Andrew P. Black OGI School of Science & Engineering at OHSU Portland, Oregon, USA What is Abstract Interpretation? An interpretation:
More informationXXXXXXXXXXXXXXXXXXXXXXX. Evolution of Software Languages
Section 8: Simula Smalltalk Evolution of Software Languages Theo D'Hondt Bachelor of Computer Science Faculty of Sciences and Bio-Engineering Sciences Vrije Universiteit Brussel Academic Year 2015-2016
More informationEliminating Procedural Code
Chapter 28 Eliminating Procedural Code In procedural programming, we write a lot of code that gets information then makes a decision based on the information. In C, we see a lot of if/else if/else blocks,
More informationGUI-Based Software Development. The Model/View/Controller Pattern
GUI-Based Software Development The Model/View/Controller Pattern Origins of Personal Computing The most important part of a computer system is the individual human user. - Alan Kay Origins of Personal
More informationCS 403/503 Exam 4 Spring 2015 Solution
CS 403/503 Exam 4 Spring 2015 Solution Each problem initially scored out of 10 points possible. CS 403 Best 5 answers doubled. (5*20 + 2*10 = 120 possible) CS 503 Best 4 answers doubled. (4*20 + 3*10 =
More informationSqueak Object Model. Technion - Israel Institute of Technology. Updated: Spring Object-Oriented Programming 1
Squeak Object Model Technion - Israel Institute of Technology Updated: Spring 2015 236703 - Object-Oriented Programming 1 Agenda Class exploring Class object, default / common behaviors Objects equality
More informationTutorial 02: Writing Source Code
Tutorial 02: Writing Source Code Contents: 1. Generating a constructor. 2. Generating getters and setters. 3. Renaming a method. 4. Extracting a superclass. 5. Using other refactor menu items. 6. Using
More information:3002 Wilf 2017
95.3002 Name one thing that finds bugs early Making sure that the run or execute method for all tables that search have an error message at the end if the search fails to find anything. Readahead and ScannerReadahead
More informationTo install Glamour on your Pharo image execute the following code:
Glamour Chapter 1 Glamour with the participation of: Tudor Girba (tudor@tudorgirba.com) Browsers are a crucial instrument in understanding complex systems or models. A browser is a tool to navigate and
More informationThis chapter describes some of the more common errors that Smalltalk programmers make and gives suggestions on how to prevent the errors.
Chapter 22 Common Errors This chapter describes some of the more common errors that Smalltalk programmers make and gives suggestions on how to prevent the errors. Notifier window messages As you test your
More informationST Introduction. Birds-eye view
6. Debugging ST Introduction Birds-eye view It can be easier to talk to objects than to read classes The system is alive. Talk to it. The debugger can be your best friend. Donʼt be afraid of it. 1.2 Roadmap
More informationesug.org (European Smalltalker Users Group) Javascript
Serge Amber Pharo ( ) esug.org (European Smalltalker Users Group) Amber Web Smalltalk Web Smtalltalk Javascript Javascript Web Transcript Workspace SUnit (JUnit Smalltalk ) System Browser halt JQuery UI
More informationSmalltalk Best Practice Patterns. Part I
Smalltalk Best Practice Patterns Part I 1 Based on the Book by Kent Beck 2 Based on the Book by Kent Beck Very little here is Smalltalk-specific 2 Why Patterns? 3 Why Patterns? There are only so many ways
More informationWhy using Smalltalk for Teaching Object- Oriented Design
Why using Smalltalk for Teaching Object- Oriented Design N. Bouraqadi - Ecole des Mines de Douai S. Ducasse - University of Berne S. Stinckwich - University of Caen R. Wuyts - Université Libres de Bruxelles
More informationTable of Contents Preface...1. VA Smalltalk Migration Guide Notices Trademarks...3. About this book...5. Who this book is for...
Table of Contents Table of Contents Preface...1 VA Smalltalk Migration Guide... 2 Notices... 3 Trademarks...3 About this book...5 Who this book is for... 5 What's new?...5 Conventions used in this book...5
More informationAn Introduction to Squeak
An Introduction to Squeak Hello! Squeak is a language largely derived from Smalltalk. Now imagine what a coincidence it is to be do an assignment that uses the Smalltalk language after having just finished
More information6. Exemplary Solutions: Seaside: Components
6. Exemplary Solutions: Seaside: Components Exercise 6.1 STBuyTicketTask class >> canberoot ˆtrue self inform: Hello World Exercise 6.2 WAComponent subclass: #STPlayChooser instancevariablenames: plays
More informationSyntax and Messages. Stéphane Ducasse S.Ducasse
Syntax and Messages Stéphane Ducasse Stephane.Ducasse@univ-savoie.fr http://www.listic.univ-savoie.fr/~ducasse/ 1 License: CC-Attribution-ShareAlike 2.0 http://creativecommons.org/licenses/by-sa/2.0/ 2
More informationIntroduction to Seaside
Introduction to Seaside Randal L. Schwartz, merlyn@stonehenge.com Version 2.01 on 20 July 2009 This document is copyright 2008, 2009 by Randal L. Schwartz, Stonehenge Consulting Services, Inc. This work
More informationAn Introduction to Smalltalk for Objective-C Programmers
An Introduction to Smalltalk for Objective-C Programmers O Reilly Mac OS X Conference October 25 28, 2004 Philippe Mougin - pmougin@acm.org http://www.fscript.org IT Management & Consulting What you will
More informationThe System Transcript, Class Point and Inspectors
Module 4 1 Module 4: The System Transcript, Class Point and Inspectors This module starts by introducing the System Transcript, illustrating how it can be used with a number of examples. The Transcript
More informationLATENT METHODS. Richard CS
LATENT METHODS Richard O'Keefe @ CS Outline Background The problem Some non-solutions My solution Does it apply elsewhere Background Alan Kay invented tablet computers (the Dynabook) His research group
More informationfeel free to poke around and change things. It's hard to break anything in a Moodle course, and even if you do it's usually easy to fix it.
Teacher s Manual Teacher Manual This page is a very quick guide to creating online courses with Moodle. It outlines the main functions that are available, as well as some of the main decisions you'll need
More informationOutline Smalltalk Overview Pragmatic Smalltalk Closing. Pragmatic Smalltalk. David Chisnall. February 7,
February 7, 2009 http://etoileos.com Outline Using The Smalltalk Family Smalltalk - first dynamic, object-oriented, language. Self - Smalltalk without classes. JavaScript - Self with Java syntax. A Quick
More informationThe Smalltalk Environment, SUnit, and Inheritance
Creating Objects in Smalltalk The Smalltalk Environment, SUnit, and Inheritance Object are created by sending a message to some other (exisiting!) object called a factory! Usually, the factory object is
More informationSelected Design Patterns
Selected Design Patterns Design Patterns are recurrent solutions to design problems They are pros and cons We already saw: Factory, Hook, Templates Singleton Composite «ChapterNr».1 Alert!!! Design Patterns
More informationSyntax and Messages. Stéphane Ducasse 8.1
Syntax and Messages The syntax of Smalltalk is simple and uniform, but it can look strange at first sight! Literals: numbers, strings, arrays... Variable names Pseudo-variables Assignments, returns Message
More informationfohgp siejt karbl mcqdn
CS 403/503 Exam 4 Spring 2017 Solution CS 403 Score is based on your best 8 out of 10 problems. CS 503 Score is based on your best 9 out of 10 problems. Extra credit will be awarded if you can solve additional
More informationObject-Oriented Thinking
Chapter 9 Object-Oriented Thinking Smalltalk is one of the pure Object-Oriented (OO) languages. Unlike C++, which makes it very easy to write procedural code (ie, use C++ as a better C), Smalltalk makes
More informationSyntax-Elements for Smalltalk
Syntax-Elements for Smalltalk Feb. 24. 2009 A Scratch-like GUI for Smalltalk-80 by Jens Mönig (jens@moenig.org) Elements is a new graphical user interface for the Smalltalk-80 programming language inspired
More informationCSE 70 Final Exam Fall 2009
Signature cs70f Name Student ID CSE 70 Final Exam Fall 2009 Page 1 (10 points) Page 2 (16 points) Page 3 (22 points) Page 4 (13 points) Page 5 (15 points) Page 6 (20 points) Page 7 (9 points) Page 8 (15
More informationCS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L
CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Introduction At this point, you are ready to beginning programming at a lower level How do you actually write your
More informationManaging Projects with Metacello
Managing Projects with Metacello Chapter 1 Managing Projects with Metacello with the participation of: Dale Henrichs (dale.henrichs@gemstone.com) Mariano Martinez Peck (marianopeck@gmail.com) Have you
More informationBuilding a Gopher from Sockets and Widgets
an article for The Smalltalk Report by Patrick Mueller Patrick Mueller is a member of the IBM Smalltalk Distributed team in IBM Cary. He coauthored the HP/IBM submission to OMG for Smalltalk mappings to
More informationThe DCI Paradigm Implemented in Squeak
The DCI Paradigm Implemented in Squeak Trygve Reenskaug, Dept. of Informatics, University of Oslo, Norway Home: http://folk.uio.no/trygver E-mail: The DCI paradigm separates a program into different perspectives
More informationCS 403/503 Exam 4 Spring 2017 Name
CS 403/503 Exam 4 Spring 2017 Name CS 403 Score is based on your best 8 out of 10 problems. CS 503 Score is based on your best 9 out of 10 problems. Extra credit will be awarded if you can solve additional
More information9. Understanding Classes and Metaclasses
9. Understanding Classes and Metaclasses ST Introduction Birds-eye view Reify your metamodel A fully reflective system models its own metamodel. 1.2 Roadmap > Metaclasses in 7 points > Indexed Classes
More informationAdriaan van Os ESUG Code Optimization
Introduction Working at Soops since 1995 Customers include Research (Economical) Exchanges (Power, Gas) Insurance Projects in VisualWorks GemStone VisualAge 2 Demanding projects Data-intensive Rule based
More informationCredit where Credit is Due. Lecture 25: Refactoring. Goals for this lecture. Last Lecture
Credit where Credit is Due Lecture 25: Refactoring Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2002 Some of the material for this lecture and lecture 26 is taken
More informationDraft User Manual OOram/SRE Static Reverse Engineering
Draft User Manual OOram/SRE Static Reverse Engineering Trygve 1 April 1996 Chapter 2 contains a short user manual, sufficient if you know the OOram/SRE method. The remaining chapters should be read before
More informationA Lazy List Implementation in Squeak
A Lazy List Implementation in Squeak Takashi Yamamiya This material is based upon work supported in part by the National Science Foundation under Grant No. 0639876. Any opinions, findings, and conclusions
More informationCOURSE 11 DESIGN PATTERNS
COURSE 11 DESIGN PATTERNS PREVIOUS COURSE J2EE Design Patterns CURRENT COURSE Refactoring Way refactoring Some refactoring examples SOFTWARE EVOLUTION Problem: You need to modify existing code extend/adapt/correct/
More informationstep is to see how C++ implements type polymorphism, and this Exploration starts you on that journey.
EXPLORATION 36 Virtual Functions Deriving classes is fun, but there s not a lot you can do with them at least, not yet. The next step is to see how C++ implements type polymorphism, and this Exploration
More informationThe Smalltalk class hierarchy
The Smalltalk class hierarchy As we have seen, classes in Smalltalk are arranged in the form of a tree. The class above a given class in the hierarchy is its superclass; classes below are its subclasses.
More informationSoftware Design COSC 4353/6353 D R. R A J S I N G H
Software Design COSC 4353/6353 D R. R A J S I N G H Week 5 Refactoring What is Refactoring? Code Smells Why Refactoring? Techniques IDEs What is Refactoring? Art of improving the design of existing code
More informationEnhancement Improved Database import and storage for DXF sources. Bug Update incorrect CR1000 gage types. Bug Update to MDT SmartLink Gage File
* italicized entries were included in an updated release (hot-fix) of the Service Pack. Number of asterisks corresponds to hot-fix number MultiLogger Suite Release Report: Version 2018.1 Issue Key Component(s)
More informationTemplate Method Structure. Template Method Example. Template Method Example. Template Method Example. Benefits of Template Method
Design Patterns in Smalltalk CSC591O April 9, 1997 Raleigh, NC Bobby Woolf Senior Member of Technical Staff Knowledge Systems Corp. 4001 Weston Parkway Cary, North Carolina 27513-2303 919-677-1116 bwoolf@ksccary.com
More informationPatterns in Software Engineering
Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 10 Refactoring Patterns Part 1 1 Refactoring: Definition Refactoring: A change made to the internal structure of software to make it easier
More informationOO Design with Smalltalk a Pure Object Oriented Language and Environment
OO Design with Smalltalk a Pure Object Oriented Language and Environment About the exercises The exercises developped in the following lessons have been originally written by Roel Wuyts and Koen De Hondt
More informationIntroduction to Eclipse
Introduction to Eclipse Ed Gehringer Using (with permission) slides developed by Dwight Deugo (dwight@espirity.com) Nesa Matic (nesa@espirity.com( nesa@espirity.com) Sreekanth Konireddygari (IBM Corp.)
More informationTeam-Based Collaboration in Simulink
Team-Based Collaboration in Simulink Sonia Bridge 2015 The MathWorks, Inc. 1 Create tools that make it easy for teams to manage the full lifecycle of their Model-Based Design projects Collaborate Integrate
More informationIntroduction to Smalltalk
Introduction to Smalltalk Randal L. Schwartz, merlyn@stonehenge.com Version 1.01 on 20 July 2009 This document is copyright 2009 by Randal L. Schwartz, Stonehenge Consulting Services, Inc. This work is
More informationADMINISTRATIVE USER GUIDE FOR THE APTI-LEARN LEARNING MANAGEMENT SYSTEM (LMS)
ADMINISTRATIVE USER GUIDE FOR THE APTI-LEARN LEARNING MANAGEMENT SYSTEM (LMS) Software Version 2.6 September 2012 Prepared by EM-Assist This page left intentionally blank. Software Version 2.6; Document
More informationType Checking in COOL (II) Lecture 10
Type Checking in COOL (II) Lecture 10 1 Lecture Outline Type systems and their expressiveness Type checking with SELF_TYPE in COOL Error recovery in semantic analysis 2 Expressiveness of Static Type Systems
More informationXcode Tricks. ios App Development Fall 2010 Lecture 13
Xcode Tricks ios App Development Fall 2010 Lecture 13 Questions? Announcements Reminder: Assignment #3 due Monday, October 18 th by 11:59pm Today s Topics Building & Running Code Troubleshooting Debugging
More informationConfiguring the Android Manifest File
Configuring the Android Manifest File Author : userone What You ll Learn in This Hour:. Exploring the Android manifest file. Configuring basic application settings. Defining activities. Managing application
More informationBuilding Windows in VisualAge Smalltalk
Building Windows in VisualAge Smalltalk The Presenters Ginny Ghezzo: Project Manager for IBM VisualAge Smalltalk and Level 3 support for the Application Builder John O Keefe: Technical Lead for IBM VisualAge
More informationWithout further ado, let s go over and have a look at what I ve come up with.
JIRA Integration Transcript VLL Hi, my name is Jonathan Wilson and I m the service management practitioner with NHS Digital based in the United Kingdom. NHS Digital is the provider of services to the National
More informationA few more things about Agile and SE. Could help in interviews, but don t try to bluff your way through
A few more things about Agile and SE Could help in interviews, but don t try to bluff your way through 1 Refactoring How to do it, where it fits in http://www.cse.ohio-state.edu/~crawfis/cse3902/index.htm
More informationMcCa!"s Triangle of Quality
McCa!"s Triangle of Quality Maintainability Portability Flexibility Reusability Testability Interoperability PRODUCT REVISION PRODUCT TRANSITION PRODUCT OPERATION Correctness Usability Reliability Efficiency
More informationBasic Object-Oriented Concepts. 5-Oct-17
Basic Object-Oriented Concepts 5-Oct-17 Concept: An object has behaviors In old style programming, you had: data, which was completely passive functions, which could manipulate any data An object contains
More informationPractical Objects: Test Driven Software Development using JUnit
1999 McBreen.Consulting Practical Objects Test Driven Software Development using JUnit Pete McBreen, McBreen.Consulting petemcbreen@acm.org Test Driven Software Development??? The Unified Process is Use
More informationProject Report Number Plate Recognition
Project Report Number Plate Recognition Ribemont Francois Supervisor: Nigel Whyte April 17, 2012 Contents 1 Introduction............................... 2 2 Description of Submitted Project...................
More informationSurveyToGo Scripting Best Practices
www.dooblo.com SurveyToGo Scripting Best Practices Authored by: Ofer Heijmans - Dooblo Revision 1.0, March 2016 Table of Content 1 OVERVIEW... 3 2 VARIABLE NAMES... 3 3 SHORT IDS DISPLAY... 4 4 ANSWER
More informationB. What strategy (order of refactorings) would you use to improve the code?
{ return title.gettext(); public boolean needssplit() { return costlabel.gettext().equals(" >3 "); public boolean needsestimate() { return costlabel.gettext().equals("? "); Challenges PG-1. Smells. A.
More informationIntroduction to Programming
CHAPTER 1 Introduction to Programming Begin at the beginning, and go on till you come to the end: then stop. This method of telling a story is as good today as it was when the King of Hearts prescribed
More informationWikipedia 101: Bryn Mawr Edit-a-thon. Mary Mark Ockerbloom, Wikipedian in Residence, Chemical Heritage Foundation
Wikipedia 101: Bryn Mawr Edit-a-thon Mary Mark Ockerbloom, Wikipedian in Residence, Chemical Heritage Foundation What is Wikipedia? Wikipedia s Goal: To present all of human knowledge from a neutral point
More informationSoftware Evolution from the Field: An Experience Report from the Squeak Maintainers
Software Evolution from the Field: An Experience Report from the Squeak Maintainers Marcus Denker SCG University of Berne Switzerland Stéphane Ducasse LISTIC Université de Savoie France Roadmap > A little
More informationCSE 413 Spring Introduction to Ruby. Credit: Dan Grossman, CSE341
CSE 413 Spring 2011 Introduction to Ruby Credit: Dan Grossman, CSE341 Why? Because: Pure object-oriented language Interesting, not entirely obvious implications Interesting design decisions Type system,
More informationZero Configuration Scripts and Command-Line Handlers
Zero Configuration Scripts and Command-Line Handlers Chapter 1 Zero Configuration Scripts and Command-Line Handlers with the participation of: Camillo Bruni (camillobruni@gmail.com) Weren t you fed up
More informationCS354 gdb Tutorial Written by Chris Feilbach
CS354 gdb Tutorial Written by Chris Feilbach Purpose This tutorial aims to show you the basics of using gdb to debug C programs. gdb is the GNU debugger, and is provided on systems that
More informationWorkbench and JFace Foundations. Part One, of a two part tutorial series
Workbench and JFace Foundations Part One, of a two part tutorial series 2005 by IBM; made available under the EPL v1.0 Date: February 28, 2005 About the Speakers Tod Creasey Senior Software Developer,
More informationClass 1: Homework. Intro to Computer Science CSCI-UA.0101 New York University Courant Institute of Mathematical Sciences Fall 2017
Intro to Computer Science CSCI-UA.0101 New York University Courant Institute of Mathematical Sciences Fall 2017 1 1. Please obtain a copy of Introduction to Java Programming, 11th (or 10th) Edition, Brief
More informationDevelopers and DBAs. Farmers and City Slickers have different mindsets
Developers and DBAs Farmers and City Slickers have different mindsets About ~ Øyvind Isene DBA Consultant working for Bicon in Oslo Optimization and helping developers with db OUGN and the Oracle community
More informationa. The following method would allow an object of the static type List<String> to be passed to it as an argument.
On the final exam you will be provided UML diagrams for design patterns (as in the midterm) and also JavaDoc description of methods in the Reflection API. 1. True/False (if false, explain why) a. The following
More information1 Assets Manager Pro exoa.fr
1 Assets Manager Pro exoa.fr Table of contents... 2 Tabs... 3 1. Packages Manager... 3 The search feature... 4 Show Content Popup... 4 Asset Store Details Popup... 5 Package renaming and sorting... 5 The
More informationClient Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module
Basic Class Design Goal of OOP: Reduce complexity of software development by keeping details, and especially changes to details, from spreading throughout the entire program. Actually, the same goal as
More informationBack to ObjectLand. Contents at: Chapter 5. Questions of Interest. encapsulation. polymorphism. inheritance overriding inheritance super
korienekch05.qxd 11/12/01 4:06 PM Page 105 5 Back to ObjectLand Contents at: Chapter 5 #( encapsulation polymorphism inheritance overriding inheritance super learning the class hierarchy finding classes
More informationxtreme Programming (summary of Kent Beck s XP book) Stefan Resmerita, WS2015
xtreme Programming (summary of Kent Beck s XP book) 1 Contents The software development problem The XP solution The JUnit testing framework 2 The Software Development Problem 3 Risk Examples delivery schedule
More informationGNU ccscript Scripting Guide IV
GNU ccscript Scripting Guide IV David Sugar GNU Telephony 2008-08-20 (The text was slightly edited in 2017.) Contents 1 Introduction 1 2 Script file layout 2 3 Statements and syntax 4 4 Loops and conditionals
More information