[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Crippled Products and the IE Question
Making modules dependent on one another without purpose
is not a good practice. I realize I've opened Pandora's Box
of Ideas About What Constitutes Good Software Architecture...but
here goes...
Well crafted modules should be fairly easy to mix and match. It
should be possible to pull what you need out of a given collection of
them without taking the whole lot. Suppose your purpose is to
image HTML data on a computer screen. HTML is a tagged format;
it is not very complicated. To roll your own HTML-imager is not all that
difficult, as the Norwegian Opera team and the W3 browser efforts
demonstrate. (even I could write an HTML 3.2 validatorm and did)
Microsoft could have crafted similar components. Instead, they elected
to make their HTML viewing components so intertwined with the OS
that they can argue in court the two are inseparable. To image HTML 3.2
using their tools you must pick up a lot of their baggage.
There is a good description of what constitutes good modules in books
and articles by Grady Booch, one titled "Object Oriented Design". One design
principle he describes is "orthogonality". To paraphrase: One module should
not be capable of causing "side effects" that cause other modules to go
unstable. That principle
is violated all over the place in Microsoft architectures, such as OLE, COM,
and ActiveX. In my opinion, it is why there stuff has so many problems.
I watched an Oracle demonstrate software based on COM technologies at the
first, (well, one of the first) Microsoft Internet Developers conference. It
crashed repeatedly. It doesn't have to be this way.
Form your own opinion. For me, (Java) + (a free Unix) + (Apache) should do
quite
nicely.
Tod Landis
Scott K. McGrath wrote:
> Tod; Actually, it's a good idea and practiced rather widely. Why? Because
> you make a module take a certain input, expecting it to give you a certain
> result. This way it can be called by multiple apps without having to
> re-invent the wheel each time you need a similar function. It's like
> taking OOP to another level beyond where it currently is...
>
> Scott K. McGrath
> mcgrats@ix.netcom.com
>
> > Tod Landis <landis@cruzio.com> writes:
> > > Incidentally, making modules so dependent on one another, the way
> > > that Microsoft does, is a bad practice.