Hello,
When I want to view the moose menu by right-clicking on a mondrian element,
I have to add this to the script:
view interaction menuMorphBlock: [ :element | element
mooseMenuMorph ].
But, when I also want to have my own specific action:
view item: 'browse code' action: [:element | UIManager
default edit: element sourceCode].
this last one does not appear in the menu.
Is there any way to do that (to have both the moose menu and my own actions
in a same frame)?
Hi Lukas,
The question should be: How many packages are contained in the software you want to analyze ?
I change it and commit a new version.
Thank you Lukas.
Cheers,
Jannik
On Jul 19, 2010, at 11:22 , Lukas Renggli wrote:
> Hi Jannik,
>
> I can't parse:
>
> "How much do you think the number of packages of the software?"
>
> How much what? What is the question?
>
> Lukas
>
> On 19 July 2010 08:36, Laval Jannik <jannik.laval(a)gmail.com> wrote:
>> Hi Pharoers, and Smalltalkers in general,
>>
>> Have you seen waited to assess the cycles in your software? Now you can :)
>>
>> We request some of you to perform an experiment using DSM to see your software package structure and to fix cycles between packages. Our tool shows dependencies between packages and highlight some bad dependencies generating structure cycles. It also helps to understand dependencies.
>>
>> Your goal is to fill a survey using our tool.
>> I prepared a mini-tutorial about DSM and eDSM. It can help you to understand the visualization tool.
>>
>> To ease the use of our tool, I loaded it in a PharoCore1.2. And there are two archives available:
>> - the first contains an image with our tool with a model of Pharo loaded in it, so you can play with our tool on pharo itself. It can be downloaded here: http://dl.dropbox.com/u/7739334/dsmWithPharo.zip. Pay attention, the image is slow.
>> - the second contains the same thing without the model of Pharo. Here, you have to load your code, then populate a moose model and use the tool. It can be downloaded here: http://dl.dropbox.com/u/7739334/dsmWithoutPharo.zip
>> The two archives contain the tutorial and the survey. If you are a pharo integrator, we suggest you to take the one with Pharo model loaded, else the other.
>>
>> To use our tool, load your tool in Pharo. Then do "MoosePanel open", and import your software in Moose by "import from Smalltalk image". When it is imported, select your project in the list on the left of MoosePanel, and select "all model packages" on the list on center.
>>
>> Then, you have two choices:
>> - you can scan all your project: right click on "all model packages" and do DSM.
>> - or select "all model packages" then select some packages in the next list and right click, do DSM.
>>
>> After that, you can perform the survey (with reading of the tutorial). We need your answers for the end of August. So, you have two months to do it.
>>
>> If you have any question, just let me know.
>>
>> Best regards,
>> Jannik.
>>
>> ---
>> Jannik Laval
>> PhD Student - Rmod Team - INRIA
>> Certified Project Management Associate (IPMA)
>> http://www.jannik-laval.eu
>> http://rmod.lille.inria.fr
>> ---
>>
>>
>
>
>
> --
> Lukas Renggli
> www.lukas-renggli.ch
---
Jannik Laval
Hi!
Jannik, I took into account all your changes. According to what DSM says, there shouldn't be any cycle in Mondrian left. However, when I import Mondrian in Moose, it looks like method categories are not taken into account when imported. Is there a chance to fix this?
DSM is really cool. Amazing how easy it is to remove cycles...
Cheers,
Alexandre
On 13 Jul 2010, at 17:05, Laval Jannik wrote:
>> extend method>> Smalltalk::MOShapeSelector.a:withNameOnLeft:(Object,Object) in Mondrian-ComplexShape.
>> extend method>> Smalltalk::MOShapeSelector.a:withNameOnTop:(Object,Object) in Mondrian-ComplexShape.
>> extend method>> Smalltalk::MOShapeSelector.umlClass() in Mondrian-ComplexShape.
>> extend method>> Smalltalk::MOShapeSelector.form:(Object) in Mondrian-ComplexShape.
>> extend method>> Smalltalk::MOViewRenderer.browserClass() in Mondrian-Morphic.
>> extend method>> Smalltalk::MOViewRenderer.canvas() in Mondrian-Morphic.
>> extend method>> Smalltalk::MOViewRenderer.asMorph() in Mondrian-Morphic.
>> extend method>> Smalltalk::MOViewRenderer.open() in Mondrian-Morphic.
>> extend method>> Smalltalk::MOViewRenderer.open:(Object) in Mondrian-Morphic.
>> extend method>> Smalltalk::MOViewRenderer.framedNode:using:forEach:(Object,Object,Object) in Mondrian-Animation.
>> extend method>> Smalltalk::MOViewRenderer.framedNode:forEach:(Object,Object) in Mondrian-Animation.
>> extend method>> Smalltalk::MOViewRenderer.framedNode:using:(Object,Object) in Mondrian-Animation.
>> extend method>> Smalltalk::MOViewRenderer.framedNode:(Object) in Mondrian-Animation.
>> extend method>> Smalltalk::MOAnnouncer.popupView:delay:zoomedInBy:(Object,Object,Object) in Mondrian-Morphic.
>> extend method>> Smalltalk::MOAnnouncer.popupView:delay:(Object,Object) in Mondrian-Morphic.
>> extend method>> Smalltalk::MOAnnouncer.popupText:delay:(Object,Object) in Mondrian-Morphic.
>> extend method>> Smalltalk::MOAnnouncer.popupView:(Object) in Mondrian-Morphic.
>> extend method>> Smalltalk::MOAnnouncer.popupText() in Mondrian-Morphic.
>> extend method>> Smalltalk::MOAnnouncer.popupText:(Object) in Mondrian-Morphic.
>> extend method>> Smalltalk::MOAnnouncer.popupView:zoomedInBy:(Object,Object) in Mondrian-Morphic.
>
>
> ---
> Jannik Laval
>
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi,
I noticed that there are several ways in which people talk about
Moose. For example, I still see the Moose reengineering framework.
This might have been Ok 5 years ago, but now it does not reflect what
Moose is.
If you want to refer to Moose in your paper or in a talk, please use:
- short tag: the Moose analysis platform
- sentence: Moose is a platform for software and data analysis
Cheers,
Doru
--
www.tudorgirba.com
"To lead is not to demand things, it is to make them happen."
Hi Doru,
I would like to display the size of a list (GMListPresentation) in its title.
I have one constraint: it should be updated with the update of the list.
Is it possible ? If not, I will do something else :).
Cheers,
---
Jannik Laval
Hi guys,
In Avispa[1] and Adore/S[2] we created small meta models that reason on software processes (task, role and artifact) and business processes.
This is done without extending Famix then. So, if you're looking for some arguments for using Moose for other things than analyzing source code, then you have some examples.
Cheers,
Alexandre
[1] http://www.moosetechnology.org/tools/ProcessModel
[2] http://www.moosetechnology.org/tools/Adore
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
I have a narrow question and a broader one.
The narrow question is how to get SmaCC into the prepackaged moose
image.
I tried to file in SmaCCDev-lr.23.mcz from squeak source (version 24 is
for Pharo 1.1, which I don't think the moose image is using). It failed
because it needed SmaCCParser and SmaCCScanner classes.
http://www.squeaksource.com/SmaccDevelopment.html says the run time is
already in the image; perhaps it's been stripped out?
The broader question is whether anyone has any advice on approaching my
problem of parsing SAS files. Advice could be pointers to other
lexer/scanners or the news that PEG (i.e., PetitParser) works OK for my
purposes (I may want to use it for the parsing, but this is about
dealing with the macro language).
To give a taste of the detailed issues: a macro variable reference, &V,
can occur almost anywhere in a SAS program (but not inside of some
comments and some quotes). It is immediately expanded; this may occur
in the middle of what looks like a token, e.g.
(1) data run&V;
becomes
(2) data run04 (start=5);
In perverse cases one could even have
(3) da&v
become (2), including the semicolon.
Macro variables obey scoping rules.
There are also macro invocations like %mymacro(3, abc) which expand at
the closing parenthesis. %INCLUDE brings a whole file into the source.
And the macro language itself has conditional and looping constructs.
As an added bonus, SAS macros are not simple preprocessors, since their
expansion can depend on information obtained in the main language at
runtime (in fact, macros can be written at run time). It's unlikely
I'll ever attempt to handle that case, however.
Essentially, there are 2 or 3 different syntaxes operating in the same
program (the main syntax, the macro language, and the expansion of macro
variables via &). This was the setup for the initial Conway paper on
coroutines. I don't currently see any gain from using coroutines.
Hi all,
I play with Moose in Pharo1.2. It seems that a removed model is always in memory.
I explain:
- I loaded Pharo in moose, my image grows and its size is 320Mo.
- I removed the model, then my image size should be 100Mo, but it is still 320Mo.
Can anyone reproduce it ?
How can I debug it ? Is there a pointerFinder in Pharo ?
Cheers,
---
Jannik Laval
I guess it can be interested for you also.
ESUG will be happy if you help to do some buzz about the conference.
Forwarding emails to other mailing lists, post in your blogs, twitter,
facebook, etc, always help. It would be great to expand the community and
forward this email to other communities like ruby, python, linux, etc....
For more details: http://www.esug.org/Conferences/2010
Cheers
Mariano
---------- Forwarded message ----------
From: stephane ducasse <stephane.ducasse(a)free.fr>
Date: Mon, Jul 12, 2010 at 10:40 AM
Subject: [Seaside] Looking for smart and good programmers? Attend the
premium conference on Smalltalk!
To: Seaside - general discussion <seaside(a)lists.squeakfoundation.org>
We are all looking for smart and good people...
Now the best to get in touch with them is to go where they go and have a
nice beer with them.
Did you think about coming to ESUG the key world conference on Smalltalk to
meet talented people?
Did you think about sponsoring ESUG so that programmers get aware of your
business?
Regularly we pass job interview at ESUG. Why not you?
Each year ESUG offers the possibility to young guys to participate to ESUG
as student volunteers you
can also come and talk to them.
Some data:
Amsterdam 170 participants
Brest 154
Barcelona
The dead-line for registration at early bird fees is approaching (one month
to go).
So, hurry up and register on our new seaside-based server.
http://registration.esug.org/
This server comes with new features.
You can now do a group registration and make a single payment.
Also, we have reduction tickets (typically for Golden and Platinum
sponsors).
The ESUG 2010 conference program is about to be ready, and it is as
promising as was for the previous editions of the conference.
Checkout the preliminary schedule is already on the web,
http://www.esug.org/Conferences/2010
See you in Barcelona,
ESUG board.
_______________________________________________
seaside mailing list
seaside(a)lists.squeakfoundation.org
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Hi,
I just run the mondrian benchmarks. For archive.
Thanks to your bug reports, I fixed a number of problems when displaying edges. We are now significantly faster when displaying edges.
We had " 300 edges => 134138 ms" on April 6, 2010.
Report produced on 2010-07-09T11:27:57+02:00
Benchmark ManyNode (simple rendering of nodes) :
100 nodes => 7 ms
200 nodes => 12 ms
300 nodes => 17 ms
400 nodes => 24 ms
500 nodes => 29 ms
600 nodes => 35 ms
700 nodes => 40 ms
800 nodes => 47 ms
900 nodes => 53 ms
1000 nodes => 58 ms
1600 nodes => 93 ms
3200 nodes => 187 ms
6400 nodes => 371 ms
Benchmark ManyEdges (simple rendering of edges) :
10 edges => 2 ms
20 edges => 9 ms
30 edges => 22 ms
40 edges => 41 ms
50 edges => 70 ms
60 edges => 110 ms
70 edges => 164 ms
80 edges => 235 ms
90 edges => 324 ms
100 edges => 435 ms
200 edges => 5151 ms
300 edges => 37560 ms
Benchmark ManyInnerNodes :
5 nodes => 176 ms
10 nodes => 2267 ms
15 nodes => 11122 ms
Benchmark Displaying ManyInnerNodes :
5 nodes => 172 ms
10 nodes => 937 ms
15 nodes => 7937 ms
Benchmark Displaying ManyInnerNodesAndEdges :
1 nodes => 11 ms
2 nodes => 240 ms
3 nodes => 3241 ms
4 nodes => 31246 ms
Benchmark Displaying elementAt :
100 nodes => 3 ms
500 nodes => 5 ms
1000 nodes => 8 ms
1500 nodes => 10 ms
2000 nodes => 14 ms
2500 nodes => 16 ms
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Dear developers.
I'm trying to execute Moose Tool with Distribution Map, but I can't. I didn't find a tutorial or example emphasizing the use of this tool.
I would like to test Distribution Map with other applications. Would you can give me more informations about how to install and execute the Moose tool with Distribution Map?
Thanks a lot.
Best regards.
Paulo Junior
_________________________________________________________________
Hotmail: Free, trusted and rich email service.
https://signup.live.com/signup.aspx?id=60969
Hi Doru, all,
I have 2 quick Glamour questions:
- how can I have a text (GLMTextPresentation) that is read-only, preferably with a grey background, so that it looks like a label or status line ?
- how do I programatically close the browser, e.g. from within a button in the browser itself?
Thanks in advance!
--
Johan Fabry
jfabry(a)dcc.uchile.cl - http://dcc.uchile.cl/~jfabry
PLEIAD Lab - Computer Science Department (DCC) - University of Chile
Is there a way to ask Mondrian to redraw itself when the structure of nodes has changed.
I have a view with some options. When an option is activated, it actually adds new nodes to the view, hence the layout needs to be computed again.
I tried 'view updateWindow' but it does not work.
--
Simon
Due to multiple requests, the submission deadline has been extended to July 16.
CALL FOR CONTRIBUTIONS
FAMOOSr 2010 - 4th Workshop on FAMIX and Moose in Reengineering
http://www.moosetechnology.org/events/famoosr2010
Co-located with ICSM 2010, Timisoara, Romania
http://icsm2010.upt.ro/
We solicit experience reports and position papers (2-4 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 software analysis infrastructures, like FAMIX or Moose.
Papers may address issues along general themes, including but not limited to:
- Analysis specific meta-models for evolution data, dynamic traces, bug 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: making research results and tools available to and reusable by the community.
- Persistency and manipulation of models and meta-models.
Submissions are not limited to FAMIX and Moose or to their active users. We welcome any related ideas.
During the workshop, authors are expected to present their ideas using a short format, lasting 3 to 7 minutes, in order to spawn vivid discussions between participants. Presentations with demos are also warmly welcomed (and may be given 10 minutes). More information about this format can be found at:http://moose.unibe.ch/events/famoosr2008/presenterskit
Submissions should be made via Easychair at
http://www.easychair.org/conferences/?conf=famoosr2010
Important dates
- submission: July 16 (extended)
- notification: July 23
- workshop: September 17
Organizers:
- Simon Denier, INRIA Lille, France
- Mircea Lungu, University of Lugano, Switzerland
--
Mircea
I just noticed that the semantic of Collection>>ifNotEmpty: has changed in subtle ways between Pharo 1.0 and 1.1
In 1.0
Collection>>ifNotEmpty: aBlock
"Evaluate the given block unless the receiver is empty.
If the block has an argument, eval with the receiver as its argument,
but it might be better to use ifNotEmptyDo: to make the code easier to
understand"
^self isEmpty ifFalse: [aBlock valueWithPossibleArgument: self].
-----> it returns nil if collection is empty
in 1.1
Collection>>ifNotEmpty: aBlock
"Evaluate the given block unless the receiver is empty.
If the block has an argument, eval with the receiver as its argument,
but it might be better to use ifNotEmptyDo: to make the code easier to
understand"
self isEmpty ifFalse: [^ aBlock valueWithPossibleArgument: self].
----> the return is inside the block, now it returns the collection if collection is empty
Apparently all similar code (#ifEmpty:....) has been adapted in the same way.
Of course I would not have stumbled upon this change if it didn't break some of my code which rely on the previous assumption.
Now I would like to understand before making some change in my code. Is it considered bad practice to return nil in such cases? What is the rationale to return yourself instead of nil?
--
Simon
OK, I believe the problem is complex and I can't tell which one is responsible.
I will just try to explain very shortly to see if it rings a bell.
I have a browser with:
- a mondrian presentation
- some text widgets which react to the selection in the mondrian presentation
I also have a menu with actions which reconfigure the mondrian view (like showing labels or not)
Activating a menu item does update the presentation, however it seems like interactions from within the presentation are lost. More specifically:
- it seems like interactions are changed in the mondrian view
- external glamour panes are not updated anymore
--
Simon
Hi all,
In a RectangleShape, it is possible to add text and to specify the alignment with #left, #right, #center.
Is there a way to specify the vertical alignment ?
I would like to have a text on the bottom of a shape.
Thanks.
---
Jannik Laval
Hi all,
i just spotted that in the Moose Panel "all famixclass" appear 2 times (check the attachment)
I loaded Moose evaluating:
Gofer new
squeaksource: 'Moose';
package: 'ConfiguationOfMoose';
load.
(Smalltalk at: #ConfigurationOfMoose) perform: #loadDefault
into a Pharo-1.1-11400-rc2.
Then i imported an MSE file generated with inFusion 7.2.10.
It happen also installing the sample models.
Should i open an issue?
Mariano
We want to use Moose to get information about Pharo. We plan to define a set of views, queries...
to help us drive the quality of Pharo releases.
Now what I would love to have is a distribution map showing the unused classes,
the classes having a lot of instances....
Would it be possible for you do package the logic of the analysis you did so that we can use it in Moose?
We can talk about that friday.
Stef
Hello,
I implemented a tool that enable to make a kind of demo of Moose: you launch
it on a mooseModel, then select some moose-tools you want to apply on this
model, and all those tools are then group in a report.
Concretly, it's an Arki report configurable with a Wizard.
This MooseDemoReport is available at: www.squeaksource.com/MooseDemoReport.
To test it, have a look at: MooseDemoWizard class >> on:
If you want to use it, feel free to implement your own 'Concerns' in the
MooseDemoReport package and save it in the squeaksource repository, so that
everyone can then use them.
Call for Submissions
ICSM 2010 Tool Demonstrations Track
26th IEEE International Conference on Software Maintenance
September 12-18, 2010, Timisoara, Romania
http://icsm2010.upt.ro/calls/tool-demos
--------------------
Important dates:
- Submission: July 5, 2010
- Notification: July 27, 2010
- Camera-ready: August 2, 2010
--------------------
The goal of this track is to provide tool demonstrations on topics
related to software maintenance and evolution:
- Experience reports
- Techniques, methods and processes:
- to facilitate and support software maintenance
- to analyze and comprehend software systems
- to specify, design, implement and test evolvable systems
- Maintenance and evolution of multi‐language, multi‐platform and,
network-centric systems
- Model driven software maintenance and evolution
More information about the call for submissions can be found at:
http://icsm2010.upt.ro/calls/tool-demos
Tool Demonstrations Co-Chairs
Tudor Gîrba and Yann-Gaël Guéhéneuc
--
www.tudorgirba.com
"When people care, great things can happen."
Before posting this issue on pharo, I would like to check that I'm not the only one affected.
On my computer, some tests of Moose-Algos-Graph are failing since we went to Pharo 1.1. Same things for our internal test server (they do not appear on hudson though, maybe because hudson does not test moose-algos?)
This was really strange until I noticed that some data structures used by MooseAlgos were missing their trait declaration.
I have something like that in monticello:
MOGraphNode subclass: #MABfsNode
uses: MATEdgeNode - {#previousEdges. #from:edge:}
instanceVariableNames: 'nextEdges firstDepth'
classVariableNames: ''
poolDictionaries: ''
category: 'Moose-Algos-Graph'
But when loading the package, the definition becomes:
MOGraphNode subclass: #MABfsNode
instanceVariableNames: 'nextEdges firstDepth'
classVariableNames: ''
poolDictionaries: ''
category: 'Moose-Algos-Graph'
Notice that the trait declaration is missing, but it seems to only happen when the declaration contains an operation like #-
A declaration without operator loads fine:
MOGraphNode subclass: #MADijkstraNode
uses: MATEdgeNode
instanceVariableNames: 'pathWeight previousEdges nextEdges previousNodes'
classVariableNames: ''
poolDictionaries: ''
category: 'Moose-Algos-Graph'
Can anyone confirm? Because it seems like a strong bug and I'm surprised nobody noticed it before.
--
Simon
Reminder: deadline for submission is 5th of July.
CALL FOR CONTRIBUTIONS
FAMOOSr 2010 - 4th Workshop on FAMIX and Moose in Reengineering
http://www.moosetechnology.org/events/famoosr2010
Co-located with ICSM 2010, Timisoara, Romania
http://icsm2010.upt.ro/
We solicit experience reports and position papers (2-4 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 software analysis infrastructures, like FAMIX or Moose.
Papers may address issues along general themes, including but not limited to:
- Analysis specific meta-models for evolution data, dynamic traces, bug 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: making research results and tools available to and reusable by the community.
- Persistency and manipulation of models and meta-models.
Submissions are not limited to FAMIX and Moose or to their active users. We welcome any related ideas.
During the workshop, authors are expected to present their ideas using a short format, lasting 3 to 7 minutes, in order to spawn vivid discussions between participants. Presentations with demos are also warmly welcomed (and may be given 10 minutes). More information about this format can be found at: http://moose.unibe.ch/events/famoosr2008/presenterskit
Submissions should be made via Easychair at
http://www.easychair.org/conferences/?conf=famoosr2010
Important dates
- submission: July 5
- notification: July 19
- workshop: September 17
Organizers:
- Simon Denier, INRIA Lille, France
- Mircea Lungu, University of Lugano, Switzerland