Hi,
In general, a relationship requires your knowledge about both ends.
If you have only half of the information, the model will be in an
incomplete state, and analyses typically suppose the model is complete.
But, in particular, you are asking if a class having no children
shouldn't appear in Inheritance Relationships. Well, in this case, it
is not that you do not know the other half of the information, but
you certainly know there is no relationship. To state this, the
simplest thing is to not have the relationship in the model :).
Perhaps the confusion comes from not knowing what is required and
what is not. But, the problem of required is only valid for
properties of entities, not for entities. Thus, the properties
"superclass" and "subclass" are required for an
InheritanceDefinition, but we do not require an InheritanceDefinition
for each Class.
And please ask as many questions as you need, and do not be stressed
about our time too much (at least not until we said so) :).
Cheers,
Doru
On May 18, 2007, at 6:07 PM, Muhammad Bhatti wrote:
> Thanx Tudor, the response was quick and it worked!!
> I would like some more precision regarding my question about
> absence of child
> classes: what do we do for the relationships whose one entity
> doesn't exist, do
> we not consider them? For example, a class having no children
> shouldn't appear
> in Inheritance Relationship? If no, how do we represent them? I am
> working on a
> system where inheritance is very rarely used and thus these
> relationships will
> not appear in MOOSE.
>
> thanx once more for your time,
>
> usman
>
> Selon Tudor Girba <girba(a)iam.unibe.ch>:
>
>> Hi Usman,
>>
>>> 1. What I understood from the earlier discussion: we do generate
>>> Inheritance
>>> definitions for framework classes/system classes that are
>>> referenced by user
>>> defined classes. My questions is that what does their inheritance
>>> definition
>>> look like. In the simplest case, the inheritance definition for a
>>> system class
>>> may look like this (my assumption: we discard the belongsTo
>>> attribute):
>>>
>>> FAMIX.Class
>>> {
>>> id: 121
>>> name: 'FrameworkClass'
>>> stub: true
>>> }
>>
>> I do not understand this question.
>>
>>> 2. What about the inheritance definition of user definied classes
>>> that do not
>>> have any children. How do we assign their subclass attribute. I
>>> have tried the
>>> following by putting stub: true
>>>
>>> (FAMIX.InheritanceDefinition
>>> (id: 18)
>>> (stub true)
>>> (subclass 0)
>>> (superclass 5)
>>> )
>>> But it didn't work.
>>
>> There are several reasons why it did not work.
>>
>> First, the inheritance definition is between 2 ***existent***
>> classes, not between a class and its non existent children. So, in
>> this case, because an entity with id = 0 does not exist you would get
>> an error when loading the file.
>>
>> Second, it also would not work because whenever you make a reference
>> to an entity via an id, you have to use (idref: xxx). Thus, an
>> inheritance definition would look like:
>> (FAMIX.InheritanceDefinition
>> (id: ZZZ)
>> (subclass (idref: XXX))
>> (superclass (idref: YYY))
>> )
>>
>> Furthermore, we usually do not mark stub the relationships, but we
>> mark as stub only the structural entities. Thus, if the superclass is
>> stub, we know the inheritance points to an outside class.
>>
>> I attached here the corrected file.
>>
>> For a more detailed example of a valid MSE file, please take a
>> look at:
>> http://smallwiki.unibe.ch/moose/lansamplemodel/?action=MimeView
>>
>> --
>> Ce message a ete verifie par MailScanner
>> pour des virus ou des polluriels et rien de
>> suspect n'a ete trouve.
>>
>>
>
>
> --
> Muhammad Bhatti
>
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
>
> --
> Ce message a ete verifie par MailScanner
> pour des virus ou des polluriels et rien de
> suspect n'a ete trouve.
>
--
Tudor Girba
www.iam.unibe.ch/~girbawww.iam.unibe.ch/~girba/blog/
"No matter how many recipes we'll know, we'll still value a chef."
Hi,
I am trying to see what it is possible to do with Hismo. After
building a ModelHistory, I tried to inspect different entities here.
The first problem that I bumped into is with NamespaceHistory. If I
try to call allClassHistories on a NamespaceHistory instance, it
tries to call
#computeSubHistories:computedForEachVersionAs:withDescription:, which
does not seem to be implemented anywhere.
Any clues on how to make this work? The purpose of this is to be able
to build package histories from namespace histories of Java systems
(for instance, org.bla.foo namespace will produce three nested
packages).
I am working with the more-or-less-latest version of Moose, in VW7.5.
Thanks,
Ricky
Hi pipole,
I would like to ask two novice questions.
1. What I understood from the earlier discussion: we do generate Inheritance
definitions for framework classes/system classes that are referenced by user
defined classes. My questions is that what does their inheritance definition
look like. In the simplest case, the inheritance definition for a system class
may look like this (my assumption: we discard the belongsTo attribute):
FAMIX.Class
{
id: 121
name: 'FrameworkClass'
stub: true
}
2. What about the inheritance definition of user definied classes that do not
have any children. How do we assign their subclass attribute. I have tried the
following by putting stub: true
(FAMIX.InheritanceDefinition
(id: 18)
(stub true)
(subclass 0)
(superclass 5)
)
But it didn't work.
I generate a file keeping the above defined hypotheses: minimal root definition
and subclass=0 definition for classes having no children but the file fails to
load in MOOSE. I am attached the file with this mail, just in case. The program
defines a simple inheritance hierarchy with only one method. The inheritance
hierarchy looks like this:
shape <- rectangle,circle,trapezoid
rectangle <- square,rectangle1
Circle <- Eclipse
For this problem, I would greatly appreciate your help coz IMHO the
documentation found on the Web provides several interpretations and can be a
misleading.
thanx in advance,
Usman
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
--
Ce message a ete verifie par MailScanner
pour des virus ou des polluriels et rien de
suspect n'a ete trouve.
Hi,
Doru introduced me to the SetUp package. I just thought I would share
with you one of my favorite prerequisites from the Cincom store, one
which I have just realized can't live without:
RBCodeModelWithVariables - shows a panel with the instance variables
for the current class
Hope you find it useful,
Mircea.
Hi moosers,
This is not directly related to moose, but still...
Does anybody know any article which does a survey of the questions
that the users ask themselves when faced with the task of
understanding a new software system?
Thanks,
Mircea.
Thanx for the earlier responses. I think I got my answer. One more thing if
you people can elaborate.
How do we represent system classes.... Do we create Famix.Class entries for
System classes?
thanx once more,
usman
Hi guys
Just that you know with mathieu and hani we are working on an
extension of the smalltalk importer
that merges class and metaclass so it may introduce some problems and
we will fix them.
We are writing new tests, cleaning and deprecated methods around the
importing context, uzw.
Stef
Hello all,
while extracting the inheritance definition of a class, this question poped up
in my mind: how do we specify multiple child classes for a class? Do we create
a new InheritanceDefinition for each one of them, which seems to be the case
with existing MSE files? For example
X <- Y <- A,Z (X is the base class, Y inherits from X, A,Z inherit from Y)
In this case, inheritancedefinition parameter for Y will be (format *Class* for
elaboration)
(FAMIX.InheritanceDefinition
(id: 6)
(superclass (idref: 1 *X*))
(subclass (idref: 3 *A*))
)
(FAMIX.InheritanceDefinition
(id: 7)
(superclass (idref: 1 *X*))
(subclass (idref: 4 *Z*))
)
thanx
Usman
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
--
Ce message a ete verifie par MailScanner
pour des virus ou des polluriels et rien de
suspect n'a ete trouve.
Hi,
when I look at the OMG EMOF spec, I can see Enumeration as a subclass of
DataType.
But it is not implemented in the Meta-EMOF-Model package.hank
Unfortunately, Enums also exits in Ecore model, so I will certainly need
it (as well as EnumLiterals) for my ecore importer.
Do you want I to implement them or do you prefer I assimilate them to
Emof.Type ?
thanks,
BOUAZZA Pierrick
Hi,
I'm facing a dilemma while importing the ecore files : I'm not sure how to
convert the Ecore EDataType.
on the one hand, it can be seen as a classic smalltalk class and converted
in a EMOF.Class but it should creates problem when treating "classic"
class
on the other it can be assimilate to PrimitiveType, but I wonder if
DataType are really "Primitive"
which solution do you think is the best ?
thanks
BOUAZZA Pierrick
New submission from lanza <michele.lanza(a)unisi.ch>:
the name says it all
----------
messages: 94
nosy: lanza
priority: Wish
status: unread
title: Saving histories to mse
________________________________________________
Moose Bugs <moose-dev(a)iam.unibe.ch>
<http://macamis.unibe.ch/trackers/moose/issue70>
________________________________________________
New submission from lanza <michele.lanza(a)unisi.ch>:
i'd like to have the possibility to take an arbitrary group of entities and
transform them into a "model" that I can also export to mse
----------
messages: 92
nosy: lanza
priority: Wish
status: unread
title: transforming groups into models
________________________________________________
Moose Bugs <moose-dev(a)iam.unibe.ch>
<http://macamis.unibe.ch/trackers/moose/issue69>
________________________________________________
New submission from lanza <michele.lanza(a)unisi.ch>:
when the list of models in the moose ui is empty (all models removed) the context
menu does not show up anymore
----------
component: Moose UI
messages: 91
nosy: lanza
priority: Bug
status: unread
title: context menu disappears
________________________________________________
Moose Bugs <moose-dev(a)iam.unibe.ch>
<http://macamis.unibe.ch/trackers/moose/issue68>
________________________________________________
New submission from lanza <michele.lanza(a)unisi.ch>:
It would be good to have a menu item which allows me to select a set of models and
"strip them", i.e., only the model entities should remain without stubs
----------
component: Moose
messages: 90
nosy: lanza
priority: Wish
status: unread
title: Stripping Models
________________________________________________
Moose Bugs <moose-dev(a)iam.unibe.ch>
<http://macamis.unibe.ch/trackers/moose/issue67>
________________________________________________
What is the best way to export the source code of a modeled entity
within an mse file? I.e., suppose we extract a function and do not
want to rely on the sourceAnchor to be able to access its few lines
of source code in Moose. Is using a dedicated property the right way
or is there a better one?
Cheers
M
Hi;
I'd greatly appreciate any help/advice on how to best view MSE files
describing functional programs. I've uploaded one such file to
http://atelier.inf.unisi.ch/~baroneak/yuv.mse
Information I'm modeling includes global variable and function
definitions, and information about functions, such as which file they
are in, whether or not they are predicates (heuristically determined,
always false in the example file attached), and how many parentheses
they have (as a heuristic for function size/complexity, similar to
lines of code.)
The current mondrian script I'm using to visualize it looks like this:
------------
view := ViewRenderer new.
view interaction popupText: [:entity | 'Name: ', entity name].
view nodes: mooseModel allFiles using: RectangleShape withBorder forEach:
[:file | |fInCurFile edges | fInCurFile := mooseModel
allFunctions select:
[:curFunc | ((file name asByteString) =
(curFunc sourceAnchor copyFrom: 6 to:
curFunc sourceAnchor size))].
fInCurFile sortWith: [:f | f propertyNamed: #DIF].
view nodes: fInCurFile
using: (RectangleShape orange
width: [:entity | (entity propertyNamed: #NPAR) / 8]
height: [:entity | (entity propertyNamed: #NPAR) / 8]).
view circleLayout.
edges := Core.OrderedCollection new.
fInCurFile do: [:e | e incomingInvocations do:
[:eInv | edges add: e->(eInv invokedBy)]].
view edges: edges
from: #key
to: #value
using: (LineShape color: Color blue)].
view open.
---------
At a minimum, I'd like to be able to mouse over or click on the orange
squares representing functions and see the associated function name;
right now, the popupText only shows the filenames.
Any other advice on new visualizations, improvements to the mse
exported (I only partially understand the format), etc, would be
great.
Thanks;
Katerina Barone-Adesi
hi
when trying to access the upper and lower bounds of a TypedElement return
the element itself because there is no return sign in the methods
TypedElement>>lower, TypedElement>>upper.
Pierrick
NamedOccurrences raise an error when you want to apply it on a class.
do: DNU on sorter
in addition
Duplication view on a group of class crashes the system I get a
primitive failed on ZoomGraphicsContext.
Stef
New submission from Tudor Girba <girba(a)iam.unibe.ch>:
NamedOccurrences raise an error when you want to apply it on a class.
do: DNU on sorter (submitted by Stef)
----------
assignedto: girba
component: Mondrian
messages: 88
nosy: girba
priority: Bug
status: unread
title: NamedOccurrences raises DNU due to sort:
________________________________________________
Moose Bugs <moose-dev(a)iam.unibe.ch>
<http://macamis.unibe.ch/trackers/moose/issue66>
________________________________________________
Hello ! I had a look at the BasicCodeGenerator. I analysed the example and
then, I tried it with my own EMOF models. Of course, I got some surprising
results :)
For example, when you visit a Package, you apply the visitor ( the
BasicCodeGenerator) on its nesting package. In your example, with the EMOF
model, there is no problems because there is only one package. But in a
model with subpackages, it results in an infiny loop. So, I don't
understand why it is necessary to visit the nesting package. Any idea ?
Thank you
Sara
Due to several requests, we have extended the sub mission deadline
for FAMOOSr 2007 to May 15, 2007. Please find the revised Call for
Papers both below and attached (we apologize for multiple copies).
==========================================================
FAMOOSR 2007 - EXTENDED DEADLINE
==========================================================
Call for Contributions
Workshop on FAMIX and Moose in Reengineering
http://smallwiki.unibe.ch/moose/famoosr2007
June 25, 2007 in Zurich, Switzerland
==========================================================
Collocated with TOOLS 2007
Objects, Models, Components, Patterns
ETH Zurich, Switzerland 24-28 June 2007
Conference site: http://tools.ethz.ch
Important Dates
---------------
Submission: May 15, 2007
Notification: May 29, 2007
Camera ready: June 15, 2007
Workshop: June 25, 2007
Description
-----------
The increasing amount of data available about software systems poses
new challenges for re- and reverse engineering research, as the
proposed approaches need to scale. In this context, concerns about
meta-modeling and analysis techniques need to be augmented by
technical concerns about how to reuse and how to build upon the
efforts of previous research.
The goal of this one-day workshop is to strengthen the community of
researchers and practitioners who are working in re- and reverse
engineering, by providing a forum for building future research using
Moose and Famix as shared infrastructure. We are interested in
collecting and synchronizing the different FAMIX extensions, which
are currently in use, to facilitate better cooperation between
research groups.
We solicit experience reports (4 pages of text, IEEE format) and
position papers (2 pages, IEEE format). Experience reports will be
expected to discuss meta-modeling and software analysis using, but
not limited to, FAMIX or Moose. Position papers will be expected to
describe new directions and challenges for FAMIX or Moose. Papers may
address issues along general themes, including but not limited to:
- Analysis specific FAMIX extensions for evolution data, dynamic
traces, bugzilla entries, etc...
- Meta-modeling in reengineering tools
- Visualization techniques.
- Analysis techniques: clustering, data mining, machine learning,
pattern matching, probabilistic approaches, etc...
- Mechanisms for tool composition and rapid tool prototyping.
- Reusability of research: issues related to reusing tools written by
other researchers, mechanisms for making research results and tools
available to the community.
- Persistency and manipulation of models and meta-models.
Submissions are not limited to FAMIX and Moose or active users of
either. We welcome any idea you feel is relevant.
Please send your submissions by email to girba(a)iam.unibe.ch and
akuhn(a)iam.unibe.ch.
Organizers
----------
Tudor Girba, University of Bern, Switzerland
Adrian Kuhn, University of Bern, Switzerland
Program committee
-----------------
Juan-Carlos Cruz, UBS, Switzerland
Serge Demeyer, University of Antwerp, Belgium
Orla Greevy, University of Bern, Switzerland
Michele Lanza, University of Lugano, Switzerland
Radu Marinescu, Politehnica University of Timisoara, Romania
Kim Mens, Catholic University of Louvain, Belgium
Tom Mens, University of Mons-Hainaut, Belgium
Oscar Nierstrasz, University of Bern, Switzerland
Martin Pinzger, University of Zurich, Switzerland
Sander Tichelaar, Credit Suisse, Switzerland
Roel Wuyts, University Libre of Bruxelles, Belgium
Hello,
I 've worked on the Importer class and I 've understood how you create a
model from MSE specifications (I had a look on the method called
importMSE)
But now, I want to know how you manage to load this model in Moose. I
didn't find the class and the method that do this.
Thank you for your help,
Sara