My other sites

 







 










 

Object Oriented Technologies

I have always been interested in adopting new technologies that promess to help me ending up with a better system (and a better feeling!). After having some years of experience in procedural programming I got introduced to OO in 92 and converted fully in 95'. In 96' I've studied the Design Patterns book and started appreciating fully OO. In 97' I got introduced to aspect orientation which I've found very intriguing. In 98' I've started been interested in metasystems in an effort to understand how to build dynamic, adaptable and evolvable systems. Towards that I've found the following links useful...

Object Orientation

Although simple conceptually object orientation needs a serious amount of experience to be fully appreciated. It represents a major paradigm change from procedural programming. The following links can help you to get started :

Have a look at this year's OOPSLA tutorials.

Make sure to check the Cetus links. A good place to spend some time reading interesting OO concepts is the Taligent Online Books.

Check Brad Appleton's OO Page and Cetus for various OO resources.

Have you read the Cathedral and the Bazaar ?

Design Patterns

I've started realising the power of patterns in 96 after studying the excellent book "Design Patterns" by E.Gamma, J.Vlissides, R. Helm and R. Jhonson. Highly recommended! At the moment there are many books, papers and bibliography on patterns worth reading. For the very enthusiastic there is a range of annual pattern related conferences throughout the world.

Frameworks

An OO framework can be seen as a component library encapsulating the implementation and design of a family of applications in a domain. Frameworks can be specific to a domain or generic.

For information on frameworks, one of the earliest sites to look into is Ralph Johnson's Frameworks Page.

For an exceptionally good introduction to OO frameworks read Taligent's White Paper

Aspect Orientation

Aspects help in improving the modularisation of a system by encapsulating cross cutting concerns such as distribution, exception handling, debugging, tracing/logging/auditing/timing/testing, design patterns, idioms, etc. The implementation of such concerns usually is spread through the classes and objects of a system. This makes code harder to understand and less maintainable/evolvable. Aspects can put a) fields and methods to any targetted instance or class and b) code to the beginning and end of any method call. Aspects use designators to attach code. Designators are described using regular expressions. So it is extremely easy, for example to catch all the methods of classes and introduce code that prints the method name as it got called. That makes a simple tracer that can be written in an aspect without touching the application code.

public aspect Trace {
static advice public new(..) & com.ltr.daidalos..* {
before { System.out.println("Name:"+thisJoinPoint.className);
}
}
}

Aspects can do much more. Current research in aspect orientation suggests that aspects can contain parts of the interraction between classes/instances and meta-level information. A good collection for AOP papers is ECOOP99's AOP workshop page. More information on AOP you can get from SDA's publication page.

To use aspect orientation you need AspectJ for Java.
Check AOP's faq or examine AspectJ's language specification. Currently the aspectj 0.7beta2 has been released and is available for download.

MetaSystems

A metasystem is a system that describes how to create a system.

An interesting site on computational reflection and meta-level architectures is set by the Yonezawa Laboratory of the University of Tokyo. There you can find links on the Theoretical Aspects of Reflection, publications on reflection, and related links.
One past conference with info on reflection is Reflection'96

For a more philosofical view on metasystems check the theory behind a metasystem transition, the concept of evolution, and an introduction to complexity. An interesting site to bookmark is the Prinicipia Cybernetica Web.

Interested in architecture? J.Hamer and A. Cesta survey the current approaches and propose a new technique entitled "code incorporation'' in their paper "Dynamic Architectures". Check also the work from the Product-Line Architecture Research Group



UML

Unified Modelling Language (UML) allows us to describe and document elements of knowledge that map well into the object oriented paradigm.

In UML v1.0 nine types of diagrams are described:

UML Use Case Diagram UML Activity Diagram
UML Object Diagram UML Class Diagram
UML Sequence Diagram  
UML Collaboration Diagram UML StateChart Diagram
UML Component Diagram UML Deployment Diagram

 

In v2.0 several aspects of UML got changed. Some of the 9 UML diagram types got significantly updated and four new diagram types were added.

I am currently preparing a visual uml guide that describes the updates/changes/additions from UML 1.xx to v2.0, so bookmark this page and come back.

OOA/OOD Related Links

Confernces
OOPSLA
TOOLS
ECOOP
ObjectExpo
OT
Resources
Taligent Books
ObjectNews
Cetus
Brad Appleton
Focus On UML
SDA'a page
AOP
AspectJ
AOP papers

Meta Level
Reflection'96
Prinicipia Cybernetica
MS transition
University of Tokyo
Patterns
WikiWikiWeb
Patterns Page
Cetus Patterns
SCG Resources
Demeter's Home
Case Tools
TogetherJ
Micrografx Catalog
ObjectTeam White Paper
Modelling Tools Report
Cayenne Software, Inc.
Rational Software