
research books papers talks weblog events politics university Internet Security Distributed Systems +Design patterns What We Do Frameworks Design Pattern Catalog Solution Catalog Schedule Document Construction Operating Systems Development Mobile Technology Generative Computing Media Embedded Systems Internet technology Cybernetics Social Systems About kriha.org Walter Kriha
Loading | | Introduction to Design Patterns
- Political Patterns, more
-
Looks like the "soft" sciences are getting more and more important in computer science. Usability needs a lot of psychology. Security needs a lot of psychology as well. As IT is becoming truly ubiquitous knowledge of the patterns of political manipulation is becoming more and more important.
I have got a lot of ideas for this term: Spring and its new style of handling context through dependency
injection and inversion of control needs to be investigated. We will be more critical of patterns as well: show
that behind many iterator/visitor patterns is simply the need for higher-order function support which is still
missing in many OO languages. Prototype concepts need to be known better. We will discuss "Emancipating Instances from the Tyranny
of Classes in Information Modeling by JEFFREY PARSONS and YAIR WAND in the context of data access patterns.
The observer pattern can be used to show the evolution of a simple (and not really
implementable pattern) into high-speed event mechanisms and enterprise message bus technology. Java NIO is
still not mainstream knowledge of many developers and we need to show the differences compared to the old mechanism.
Can design patterns form an executable language? see the discussion at Design Patterns as Higher-Order Datatype-Generic Programs. Jeremy Gibbons (2006).
The huge number of participants again forced a change in style and content. The hopes for fewer participants have not come true as we are right now in
the middle of the diplom/bachelor/master change. This cannot be helped and we will try our best. This is what I would like to do:
For a first participants which pick a pattern for presentation will have to show its use in some software project - preferably from Sourceforge. This way students will learn how to deal with source code AND concentrate on the architectural solution that is provided through the specific pattern..
A next step would be to focus primarily on the problem aspect and let the students decide which patterns they would use to solve a problem. This would mean we need not a list of patterns but a list of specific problems, e.g. when and how to use "context" or when and how to achieve decoupling between objects, components etc. At the end we would get another catalog. This time not on patterns but on complete architectural solutions for standard problems. One could perhaps call this a catalog of applied pattern systems.
Another idea is to focus on eclipse only and uncover all the patterns used in its architecture.
And finally a list of patterns I would like to see explored better:
-
System Patterns (concurrency etc.) from operating system and server designs. Especially the New I/O patterns in Java (Unix select etc.) are important.
-
Patterns used in enterprise application design (e.g. based on Ted Newards new book on enterprise java architectures).
-
Social patterns and patterns form other areas (like game design, movie making, animation, story telling). This could fit nicely together with topics from our sister faculty audiovisual media.
-
Performance Patterns. What makes software fast? Java performance myths.
-
Architectural Meta-pattern (like the system design guidelines from Butler Lampson). Not to confuse with architectural patterns
-
Complex architectural patterns like bureaucracy. The patterns behind application servers. Resource Management patterns.
-
Lifecycle patterns and everything to do with managing the lifecycle of software or objects.
-
Generational Patterns from Bettin/Voelter. How to model and generate. With process instructions.
-
Special security patterns: isolation, closure, inversion of control. What could we do to make browsers safer?
-
Event based patterns: active objects (Symbian OS) vs. threads.
-
Data access patterns from the book with the same name. Something new in O/R mapping world?
-
Extension Patterns: how to extend software (interceptors, virtual adapters, plug-ins, hot configuration)
-
high-end business patterns (mandantenfähigkeit, bi-temporal storage, stellvertreter)
-
Communication patterns (transport, format, communication)
-
Context pattern(directories, parameter, environmental acquisition, inversion of control, closures)
I guess I am going to change the seminar slightly. After the usual first phase of introducing a number of basic patterns I'd like to dig into eclipse source to show the patterns in action. How is extensibility realized? How does observer work in eclipse? etc. Base will be the new book by Erich Gamma et.al. on Eclipse. It does not provide much more than the web information on eclipse but it structures and brings order to the whole. The section on patterns is especially nice.
I also like the "rule" approach in this book and would like to discuss it with the students.
Other things I'd like to touch this term:
-
Environmental acquisition - concept and implementation
-
Generative patterns
-
Architectural patterns like the Java Connector architecture
-
A glance at prototype based languages to break the C++/Java mold.
-
Perhaps some bits from the book "data model/access patterns" which I got for the library last term.
I don't want to promise too much at that time but I will try to get Claus Gittinger, on of the worlds leading smalltalk experts who happens to be an old friend of mine to join us for a session on patterns and architectures in other languages
Design and Architecture Issues
A discussion of architecture problems and how they can be solved.
- How to design an API, more ...
-
Some tips if you need to design a new API e.g. for bluetooth wands.
- Why software doesn't adapt, more...
-
Sometimes a student comes back with a thesis and the result is a real surprise. Or what would you say if the result is that none of over a hundred standard software packages for project management would be fit for his company?. I started a small article series on the reasons why software doesn't adapt. It will also cover the open source project www.eclipse.org as an example of adaptive software.
- Evolving Java-based APIs by Jim des Rivieres, OTI.
-
Learn which changes break compatibility and how to avoid this. What is the advantage behind abstract base classes as default implementations and not letting customers derive from interfaces directly? If you don't know - read the article.
- Examining the Validity of Inversion of control by Sony Mathew.
-
Learn which changes break compatibility and how to avoid this. What is the advantage behind abstract base classes as default implementations and not letting customers derive from interfaces directly? If you don't know - read the article.
- Erich Gamma, Kent Beck: Contributing to Eclipse, more...?
-
If you thought that OO and Java must be slow - learn to apply design patterns for performance and still produce extensible software.
- Examining the Validity of Inversion of control by Sony Mathew.
-
Mirrors: Design Principles for Meta-level Facilities of Object-Oriented Programming Languages
Gilad Bracha,
David Ungar
Sun Microsystems
- Patterns in Software by Richard Gabriel
-
The term is almost over and you are desperately looking for some computer science book to read at the beach - if they weren't so darn expensive. Get this classic from Richard Gabriel for free.
- Computer System Design
-
Hints for Computer System Design Butler W. Lampson Computer Science Laboratory
Xerox Palo Alto Research Center Palo Alto, CA 94304
- DIP and MANY other OO design principles from objectmentor.com
-
Dependendy Inversion Principle by Robert Martin (C++ Report)
- The many faces of publish/subscribe
-
On observer and message patterns
- Event Systems
-
Event Systems How to Have Your Cake and Eat It Too
P. Th. Eugster1, P. Felber2, R. Guerraoui1, S. B. Handurukande1,
1 Distributed Programming Laboratory,
Swiss Federal Institute of Technology in Lausanne.
2 Bell Labs, Lucent Technologies, 600 Mountain Ave,
- Event Delivery
-
Java Event Delivery Patterns, Paul Monday
| | |