Object Orientation & Related 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...
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 :
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.
on frameworks, one of the earliest sites to look into is Ralph Johnson's
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
Aspects can do 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.
A metasystem is a system that describes how to create a system.
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.
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"