My comments inline...

 

Bob Tarling wrote:

> I've always seen a subsystem as being either model or view. Never
both.

 

That is a whole other discussion. I won't go into that now.

 

> But nor do I see business functionality split in a one to one

> relationship between a xyz gui subsystem and xyz business logic

> subsystem which it looks like you're suggesting.

 

Many of our subsystems have a small GUI part.

 

Example 1. The Notation subsystem. It has its main parts in
org.argouml.notation. It has a small GUI part in
org.argouml.notation.ui.

 

Example 2. The (new) ModuleLoader. It has everything in
org.argouml.moduleloader. The class
org.argouml.moduleloader.SettingsTabModules imports a lot of java.awt
and java.swing classes.

 

Example 3. The internationalization subsystem. It has everything in a
single class org.argouml.i18n.Translator but the language can be set
from org.argouml.ui.SettingsTabAppearance.

 

Example 4. The reveng subsystem. It has all code in
org.argouml.uml.reveng. Most of what it does is not connected to any GUI
components but ConfigFilePanelExtension and FileImportSupport is.

 

Example 5. The reveng for each language (java, c++, php, csharp, ...)
could all have a settings panel that depends on come GUI components.

 

> As we only have one physically separated subsystem, the Model

> Interface that is the only example I can give. It contains no GUI.

 

Correct! The Model subsystem is not part of this discussion.

 

 

> So I'm not sure why you show a "GUI part of some subsystem". What

> would the equivelent be of the ModelInterface subsystem?

[...]

 

It has none. It has no GUI.

 

> My suggestions in separating out the Notation subsystem is to simply

> make all that business logic stand alone. That does not mean we now

> also need a NotationGui subsystem. Any part of the ArgoUML GUI should

> just be able to call that subsystem whenever it chooses.

 

There is a confusion that comes from the use of the term GUI here I
think. I will embrace that!

 

If any part of the ArgoUML GUI should be able to call the Notation
subsystem whenever it chooses and the Notation subsystem includes one
part that depends on GUI components you have cyclic dependencies built
into the architecture. Like this:

 

 

 

By separating them in two (as my second example) any part of the ArgoUML
GUI can call the Notation subsystem whenever it chooses. The NotationGui
subsystem, or whatever we should call it, can depend on GUI components
without destroying the layered architecture.

 

 

 

 

> If you try and keep some gui stuff in each subsystem then I think

> we'll have a hard time ever removing cyclic dependencies and providing

> a clean interface.

 

Yes. That is the problem we are trying to solve. It seems to be solved
on a package level for the Notation subsystem but not for other
subsystems. We also need to decide on the subsystem definition and how
it connects to the packages.

 

      /Linus

Attachment: image001.gif
Description: image001.gif

Attachment: image002.gif
Description: image002.gif

Reply via email to