Re: Some observations on java reverse engineering

Bob Tarling <[email protected]> Thu, 18 Dec 2014 21:50:20 +0000
Newsgroups gmane.comp.lang.uml.argouml.devel
Message-ID <CAKWB3RQqaU59-YFVsGqu82frhxXNnHXtqtr7ZsA1JZh6MD4P0w__11924.3700094104$1418939451$gmane$org@mail.gmail.com>
------=_Part_2556_1684141331.1418939437446
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

sorry, I accidentally sent that last email before finished.

I'll create an issue and attach a demo project.

We can carry on discussions from there.

Thanks

Bob


On 18 December 2014 at 21:44, Bob Tarling <[email protected]> wrote:
>
> Hi Thomas
>
> Looks good from within the same package.
>
> Can this be adapted to create the dependencies across package?
>
> I can't currently see what is preventing this.
>
> Bob
>
> On 18 December 2014 at 20:37, Thomas Neustupny <[email protected]> wrote:
>>
>> Hi Bob, hi Tom,
>>
>> thanks for sharing the knowledge about these tools, there're for sure
>> worth a look when cyclic dependencies need to be analyzed.
>>
>> To answer your question, Bob: The parser will only create a dependency if
>> there is still none for the given client/supplier combination, or, if a
>> stereotype name is provided, if there is no such dependency with that
>> stereotype name. See the implementation of the private buildDependency(...)
>> method in the Modeller class.
>>
>> Regards,
>> Thomas
>>
>>
>> Gesendet: Donnerstag, 18. Dezember 2014 um 20:25 Uhr
>> Von: "Bob Tarling" <[email protected]>
>> An: [email protected]
>> Betreff: Re: [argouml-dev] Some observations on java reverse engineering
>>
>> Cool, thanks Tom.
>>  IntelliJ may be the direction for us at work some time soon anyway, I'll
>> start of looking at classcycle for now though..
>>  I'd still like to tackle this for Argo as well, I'll go take a look at
>> Thomas's work as soon as I can.
>>
>> Cheers
>>
>> Bob
>>
>>
>> On 18 December 2014 at 18:38, Tom Morris <[email protected]> wrote:
>>
>> On Thu, Dec 18, 2014 at 5:29 AM, Bob Tarling <[email protected][
>> [email protected]]> wrote:
>>
>>  My end goal is actually to determine package dependencies. I have a
>> large application that I'm sure has cyclic dependencies between packages
>> and I'd like to demonstrate that problem to the team I work with before we
>> tackle how to resolve it and split the app to smaller jars.
>>
>> The tool I used to do this analysis for ArgoUML itself (although we never
>> tackled removing the package cycles) was Classycle:
>> http://classycle.sourceforge.net/[http://classycle.sourceforge.net/] It
>> is available as an Eclipse plugin as well as standalone tool.  One nice
>> addition since the last time I used it is support for Dependency Definition
>> Files.  This allows you to describe allowable dependencies (e.g. your
>> architectural layers) and it will check for violations.
>> http://classycle.sourceforge.net/ddf.html[http://classycle.sourceforge.net/ddf.html]
>>  Looking at
>> http://argouml.tigris.org/source/browse/argouml/trunk/tools/classycle/[http://argouml.tigris.org/source/browse/argouml/trunk/tools/classycle/]
>> it looks like it's been 7-8 years since I used it for ArgoUML.
>>
>> IntelliJ's dependency analysis looks pretty powerful too (although I
>> haven't used it):
>> https://www.jetbrains.com/idea/features/dependency_analysis.html[https://www.jetbrains.com/idea/features/dependency_analysis.html]
>>
>> While adding dependencies to the Java reverse engineering may be useful
>> for other stuff, it's not how I'd recommend finding package cycles.  A tool
>> designed for that purpose will do a better job.
>>
>> Tom
>>
>>
>>
>> ------------------------------------------------------
>>
>> http://argouml.tigris.org/ds/viewMessage.do?dsForumId=450&dsMessageId=3093000
>>
>> To unsubscribe from this discussion, e-mail: [
>> [email protected]].
>> To be allowed to post to the list contact the mailing list moderator,
>> email: [[email protected]]
>>
>

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=450&dsMessageId=3093004

To unsubscribe from this discussion, e-mail: [[email protected]].
To be allowed to post to the list contact the mailing list moderator, email: [[email protected]]
------=_Part_2556_1684141331.1418939437446
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><div><div><div>sorry, I accidentally sent that last e=
mail before finished.<br><br></div>I&#39;ll create an issue and attach a de=
mo project.<br><br></div>We can carry on discussions from there.<br><br></d=
iv>Thanks<br><br></div>Bob<div><div><br></div></div></div><div class=3D"gma=
il_extra"><br><div class=3D"gmail_quote">On 18 December 2014 at 21:44, Bob =
Tarling <span dir=3D"ltr">&lt;<a href=3D"mailto:[email protected]" targ=
et=3D"_blank">[email protected]</a>&gt;</span> wrote:<blockquote class=
=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padd=
ing-left:1ex"><div dir=3D"ltr"><div><div><div>Hi Thomas<br><br></div>Looks =
good from within the same package.<br><br>Can this be adapted to create the=
 dependencies across package?<br><br></div><div>I can&#39;t currently see w=
hat is preventing this.<span class=3D"HOEnZb"><font color=3D"#888888"><br><=
br></font></span></div><span class=3D"HOEnZb"><font color=3D"#888888"><div>=
Bob<br></div></font></span></div></div><div class=3D"HOEnZb"><div class=3D"=
h5"><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">On 18 Decembe=
r 2014 at 20:37, Thomas Neustupny <span dir=3D"ltr">&lt;<a href=3D"mailto:t=
[email protected]" target=3D"_blank">[email protected]</a>&gt;</span> wrote:<blockquot=
e class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc sol=
id;padding-left:1ex">Hi Bob, hi Tom,<br>
<br>
thanks for sharing the knowledge about these tools, there&#39;re for sure w=
orth a look when cyclic dependencies need to be analyzed.<br>
<br>
To answer your question, Bob: The parser will only create a dependency if t=
here is still none for the given client/supplier combination, or, if a ster=
eotype name is provided, if there is no such dependency with that stereotyp=
e name. See the implementation of the private buildDependency(...) method i=
n the Modeller class.<br>
<br>
Regards,<br>
Thomas=C2=A0<br>
=C2=A0<br>
<br>
Gesendet:=C2=A0Donnerstag, 18. Dezember 2014 um 20:25 Uhr<br>
Von:=C2=A0&quot;Bob Tarling&quot; &lt;<a href=3D"mailto:[email protected]=
om" target=3D"_blank">[email protected]</a>&gt;<br>
An:=C2=A0<a href=3D"mailto:[email protected]" target=3D"_blank">dev@ar=
gouml.tigris.org</a><br>
Betreff:=C2=A0Re: [argouml-dev] Some observations on java reverse engineeri=
ng<br>
<span><br>
Cool, thanks Tom.<br>
=C2=A0IntelliJ may be the direction for us at work some time soon anyway, I=
&#39;ll start of looking at classcycle for now though..<br>
=C2=A0I&#39;d still like to tackle this for Argo as well, I&#39;ll go take =
a look at Thomas&#39;s work as soon as I can.<br>
=C2=A0<br>
Cheers<br>
=C2=A0<br>
Bob<br>
=C2=A0<br>
=C2=A0<br>
On 18 December 2014 at 18:38, Tom Morris &lt;<a href=3D"mailto:tfmorris@gma=
il.com" target=3D"_blank">[email protected]</a>&gt; wrote:<br>
<br>
</span><span>On Thu, Dec 18, 2014 at 5:29 AM, Bob Tarling &lt;<a href=3D"ma=
ilto:[email protected]" target=3D"_blank">[email protected]</a>[<a =
href=3D"mailto:[email protected]" target=3D"_blank">[email protected]=
om</a>]&gt; wrote:<br>
<br>
=C2=A0My end goal is actually to determine package dependencies. I have a l=
arge application that I&#39;m sure has cyclic dependencies between packages=
 and I&#39;d like to demonstrate that problem to the team I work with befor=
e we tackle how to resolve it and split the app to smaller jars.<br>
=C2=A0<br>
</span>The tool I used to do this analysis for ArgoUML itself (although we =
never tackled removing the package cycles) was Classycle:=C2=A0<a href=3D"h=
ttp://classycle.sourceforge.net/%5Bhttp://classycle.sourceforge.net/%5D" ta=
rget=3D"_blank">http://classycle.sourceforge.net/[http://classycle.sourcefo=
rge.net/]</a> It is available as an Eclipse plugin as well as standalone to=
ol.=C2=A0 One nice addition since the last time I used it is support for De=
pendency Definition Files.=C2=A0 This allows you to describe allowable depe=
ndencies (e.g. your architectural layers) and it will check for violations.=
=C2=A0<a href=3D"http://classycle.sourceforge.net/ddf.html%5Bhttp://classyc=
le.sourceforge.net/ddf.html%5D" target=3D"_blank">http://classycle.sourcefo=
rge.net/ddf.html[http://classycle.sourceforge.net/ddf.html]</a> =C2=A0Looki=
ng at <a href=3D"http://argouml.tigris.org/source/browse/argouml/trunk/tool=
s/classycle/%5Bhttp://argouml.tigris.org/source/browse/argouml/trunk/tools/=
classycle/%5D" target=3D"_blank">http://argouml.tigris.org/source/browse/ar=
gouml/trunk/tools/classycle/[http://argouml.tigris.org/source/browse/argoum=
l/trunk/tools/classycle/]</a> it looks like it&#39;s been 7-8 years since I=
 used it for ArgoUML.<br>
=C2=A0<br>
IntelliJ&#39;s dependency analysis looks pretty powerful too (although I ha=
ven&#39;t used it): <a href=3D"https://www.jetbrains.com/idea/features/depe=
ndency_analysis.html%5Bhttps://www.jetbrains.com/idea/features/dependency_a=
nalysis.html%5D" target=3D"_blank">https://www.jetbrains.com/idea/features/=
dependency_analysis.html[https://www.jetbrains.com/idea/features/dependency=
_analysis.html]</a><br>
<span>=C2=A0<br>
While adding dependencies to the Java reverse engineering may be useful for=
 other stuff, it&#39;s not how I&#39;d recommend finding package cycles.=C2=
=A0 A tool designed for that purpose will do a better job.<br>
=C2=A0<br>
Tom<br>
=C2=A0<br>
=C2=A0<br>
<br>
</span>------------------------------------------------------<br>
<a href=3D"http://argouml.tigris.org/ds/viewMessage.do?dsForumId=3D450&amp;=
dsMessageId=3D3093000" target=3D"_blank">http://argouml.tigris.org/ds/viewM=
essage.do?dsForumId=3D450&amp;dsMessageId=3D3093000</a><br>
<div><div><br>
To unsubscribe from this discussion, e-mail: [<a href=3D"mailto:dev-unsubsc=
[email protected]" target=3D"_blank">[email protected]=
rg</a>].<br>
To be allowed to post to the list contact the mailing list moderator, email=
: [<a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</=
a>]<br>
</div></div></blockquote></div></div>
</div></div></blockquote></div></div>

------=_Part_2556_1684141331.1418939437446--