Can you divide your logical layers into separate deployable units without changing a single line of code? You should be able to!
This is the challenge from Kirk Knoernschild.
Everyone says that they want a layered architecture but how many do you see in the wild?
One nice way in which we often try to enforce architecture decisions is via an AOP policy to capture it. You have a nice set of pointcuts which play the cop, making sure that Mr. Layer A didn’t make a call to Mrs. C directly.
With this in place, you don’t find yourself saying “ah screw it….”
February 4th, 2005 at 2:12 pm
I’ll be responding to Kirk’s article shortly. My basic answer to this is HiveMind … it is an essential part of HiveMind that you can define your services at one layer, and provide the implementations at another. It is very reasonable to divide into layers and let HiveMind to the late binding to connect your choice of backend to your choice of presentation … it just involves adding another layer of lasagne, I mean architecture, to abstract the relationship between the other layers.
February 4th, 2005 at 2:12 pm
I’ll be responding to Kirk’s article shortly. My basic answer to this is HiveMind … it is an essential part of HiveMind that you can define your services at one layer, and provide the implementations at another. It is very reasonable to divide into layers and let HiveMind to the late binding to connect your choice of backend to your choice of presentation … it just involves adding another layer of lasagne, I mean architecture, to abstract the relationship between the other layers.
February 5th, 2005 at 8:04 am
I find that physical seperation (not having things avaliable to you) in the pysical layout of the code base helps to promote logical seperation (at the layer and component level). As much as it has gotten better, the Eclipse workspace doesn’t support this type of thinking all that well.
Bit off topic but the Eclipse workspace is a holdover from Smalltalk, one of the few concepts that should have not been transfered into the Java space ;)
February 5th, 2005 at 8:04 am
I find that physical seperation (not having things avaliable to you) in the pysical layout of the code base helps to promote logical seperation (at the layer and component level). As much as it has gotten better, the Eclipse workspace doesn’t support this type of thinking all that well.
Bit off topic but the Eclipse workspace is a holdover from Smalltalk, one of the few concepts that should have not been transfered into the Java space ;)