My other sites |
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...
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 ?
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.
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
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.
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
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.
|
|
|
