Software Reality
Programming with
a dose of satire.

Site Map Search


Agile Development
 
Extreme Programming
 
Code Generation


Articles
Lifecycle
Design
Programming
Soapbox
Reviews
Cthulhu

Java Swing
Swing's greatest threat isn't SWT, it's Flash
Swing Survival Guide


 
Check out our ageing Reviews Section


Use Case Driven
Use Case Driven Object Modeling with UML: Theory and Practice
Get from use cases to working, maintainable source code. Examples use Spring Framework, JUnit and Enterprise Architect

Agile UML
Agile Development with ICONIX Process
A practical subset of agile development techniques, illustrated by example

Get Controversial!
Extreme Programming Refactored
Extreme Programming with a dose of satire
Available now:



Programming

Component Oriented Software (Page 5)

<< Introduction & Message Forum

<< Page 4 (Object-Oriented Java)


Component-Oriented Software

The component-oriented thesis is best expressed as making the distinctions:

Modules vs. Types

and

Methods vs. Messages

Modules refer to the static architecture in a system, whilst Types refer to the dynamic data in a system. Modules are then supported in a framework (or matrix). The best analogy is between a product and the production line, where the framework is the factory.

When designing a system using an Object-Oriented language, the developer has to be disciplined not to merge the two aspects. This discipline is similar to that required when treating a functional language as Object-Oriented: such as C and C++.

You'd think the separation of architecture from data was easily achieved, but it's surprising how often you see the mistake made. Once you spot the mistake once, you'll see it repeated. For example the EJB Object has a remove method. The data has wrongly become part of the architecture.

The distinction in Component Oriented Software that's harder to make is the separation of Methods vs. Messages. Simply put, a method is an implementation whilst a message defines a set of interfaces. The thesis here is that modules conform to a message interface and can be implemented differently.

The idea that modules such as a UI or a persistence API can be generalized seems difficult to achieve, but Swing/Swinglets and JGenerator show that it is possible. The separation is more easily achieved by keeping a clear separation between data and architecture. The Model, View, Control design is a less abstract form of the Module, Type, Framework thesis.


>> Page 6 (Component-Oriented Java)

<< Back to Programming

All trademarks and copyrights on this page are owned by their respective owners.
Stories and articles are owned by the original author.
All the rest Copyright © 1998-2008 Matt Stephens. ALL RIGHTS RESERVED.