[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: (FC-Devel) repository



Hi, Chen! 

>>>>> "CO" == Chen Ofek writes:

 CO> Hi all As I promised Andrey V Khavryutchenko I will try to state my
 CO> view about our tool repository.  Please comment about it.

My references are to UML Semantics v1.0.  I yet have to catch up with 
UML 1.1.

 CO> We need a Concept repository.  A Concept is basically defined by its
 CO> connections.  
 CO> Every Concept has an ID and a list of Ports.

See UML Semantics v1.0, chapter 2,  ModelElement for the same class.

 CO> ID is simple. (something like name+namespace)

ibid, Element.Name

 CO> Port is some other Concept which is defined as a proto-type for
 CO> connecting to the concept.  for example : the Inheritance Concept has
 CO> two ports subClass and superClass (which are also concepts) another
 CO> example : the Model-View-Controller Concept has three ports: Model,
 CO> View and Controller.

ibid, chapter 3, Relationship, Dependency 
ibid, chapter 6, Generalization, Association

 CO> We also need a Diagram repository (Diagram is not the graphical
 CO> definition of the design it is the model) Diagrams will use Concepts
 CO> as their components.  The basic Diagram will be Conceptual Graph,
 CO> which is a directed graph with Concepts as its nodes.  

ibid, chapter 2, ViewElement and the whole chapter 12.

 CO> The basic interface to the Diagram repository is connect(Concept c1,
 CO> Concept c2, Concept port) : connect Concept c1 to Concept c2 through
 CO> port port.  On this basis we can define any diagram we want.  Every
 CO> Diagram as a whole is also definning a Concept.  For example: in out
 CO> tool we should have the Concept of CodeGenerationComponent,we
 CO> obviously need a Diagram to state what is the inner structure of this
 CO> Concept, but if we define it as Concept we can use it as a node in
 CO> another Diagram and we also can check (with argo's critics) if the
 CO> Ports of the Concept are consistent with its inner structure.

Sorry, didn't understand this.  Aren't you mixing Metamodel (our domain)
with our tool CodeGenerationComponent.

 CO> As a use case I want to show how we can generate a UML like diagrams:
 CO> We will have a Conceptual Graph Diagram for every concept in the UML.
 CO> Note that I am using Conceptual Graphs to define the ports of the
 CO> concept and also to connect other Concept to the ports.  If I don't
 CO> state (via port XX) it means I am definning the Port

 CO> The Diagram definning the Inheritance Concept is : subClass -->
 CO> Inheritance <-- superClass (we will use definePort interface) The
 CO> Diagram definning the Association Concept is : associate1 -->
 CO> Association <-- associate2 Now we can use this Concepts in another
 CO> Diagrams : Integer --> (via port subClass) Inheritance (via port
 CO> superClass) Number

What is the benefit with regards to UML way?

 CO> Now we can comlicate things and go to do detailed design with our
 CO> Diagrams. lets say that Association is a general term for using a
 CO> specific interface. (lets say calling the method doIt() ) So we will
 CO> define the CallingMethodDoIt Concept as : CallingMethodDoIt
 CO> --> concept1 (again use definePort)
 CO> define also : CallingMethodDoIt --> (via port subClass) Inheritance
 CO> (via port superClass) <-- Association 

This is not the inheritance.  This is the instantiation of the
association. 

 CO> And then describe our detailed design as : concept2 --> (via port
 CO> CallingMethodDoIt) concept1 From this we can automatically generate
 CO> the Diagram : concept2 --> (via port associate1) Association (via port
 CO> associate2) <-- concept1 Which is the generalization from Detailed
 CO> design and thus enabling the programmer to view its Diagrams in all
 CO> sort of ways.  (In my detailed design exmaple I have tryied to show
 CO> the advantages of my approach to go beyond UML)

 CO> I think this should be enough to start with. I can also think about
 CO> more repositories (e.g. Domain repository which will use Diagrams as
 CO> its components and Project repository which will use Domains as its
 CO> components, etc.)

Why so complex?  Just create one repository of Documents and let
ConceptGraph be just one of it.

-- 
SY, Andrey V Khavryutchenko	http://www.kbi.kiev.ua/~akhavr

Shick's Law:
	There is no problem a good miracle can't solve.