Re: Let's put this to rest
- From: AndyW <foo_@xxxxxxxxxxxxxxxx>
- Date: Wed, 21 Jun 2006 14:40:47 +1200
On Tue, 20 Jun 2006 11:09:11 -0400, Robert Martin
<unclebob@xxxxxxxxxxxxxxxx> wrote:
On 2006-06-14 13:47:57 -0400, "Davor" <davorss@xxxxxxxxx> said:
OOA model should not be a "solution" for the system we are building.
The system we are building is already a solution of some problem.
Every solution is really a problem at the next level. So is an OOA a
statement of the problem we are solving, or a description of the system
that solves that problem? Or a description of the subsystems within
the system that solves that problem?
This recursive descent of problem-solution pairs is one of the reasons
that I think analysis, design, and implementation are inextricably
coupled. It is often useful to take a step back and try to describe
the problem; but it is also virtually impossible to do this in terms
that lack some assumptions about solution and implementation.
To me in a perfect world when a system is created so would the OO
Analysis model, when the system evolves with all its changes, so would
the analysis model. That model exists to be a snap-shot of the
current system at any given point in time.
OO Design is a mechanism to see how the snap-shot would work at some
point in the future 'with' the set of given changes having been made
to it.
I consider that OO Analysis is not a statement of a problem, not a
description of a system that solves a problem. It is simply a
description of a system for the purpose of understanding.
However, it is not a perfect world and OOA models do not always exist,
one needs to create them, and it is also possible that the system may
evolve after or even during the time that the model is created (hence
change control is important).
OOA to me is a model of the system that you are looking to change, not
the problem nor the solution. OOD is the model of the system with
the problem solved. Requirements analysis/management is the working
out of the problem.
Remember it is perfectly possible to build an analysis model of the
existing system and once it is at a point where the it can be
understood, to realise that the solution simply requires a change to
the people process/componant rather than to the software componant.
There have been a few projects I have seen that have ended during the
needs analysis phase of requirements gathering for this very reason.
Im not keen on coupling on coupling of
analysis/design/implmenentation, but thats becasue of quality process
concerns, rather than technical merits of either mechanism. Coupling
often works well in small software project, whereas separation could
be considered a requirement of large scale systems (with very good
change control).
I think if one tries to go from a platform specific analysis to a
platform specific design and implementation as often happens in small
project one is going to end up carrying legacy artifacts from one to
the other and will most likely end up viewing the target system in
terms of the source system (or the other way round).
Perhaps the benefit of MDA is that is forces the decoupling, that is,
one starts with a platform dependant analysis model, makes it
platform independant (and therefore drops off the legacy artifacts),
transposes it into a platform independant design, then applies new
platform dependancy for the new target platform(s).
In effect I think with MDA, one is really creating a software pattern
out of the problem and solution (to use a deisgn pattern metaphor) so
that when ones pattern library fills up, one con produce software
solutions in a more factory production line style process.
.
- References:
- Let's put this to rest
- From: H. S. Lahman
- Re: Let's put this to rest
- From: Davor
- Re: Let's put this to rest
- From: H. S. Lahman
- Re: Let's put this to rest
- From: Davor
- Re: Let's put this to rest
- From: Robert Martin
- Let's put this to rest
- Prev by Date: Re: OO versus RDB
- Next by Date: Re: OO versus RDB
- Previous by thread: Re: Let's put this to rest
- Next by thread: Re: Let's put this to rest
- Index(es):
Relevant Pages
|