Re: Some observations on java reverse engineering

Tom Morris <[email protected]> Thu, 18 Dec 2014 13:38:15 -0500
Newsgroups gmane.comp.lang.uml.argouml.devel
Message-ID <CAE9vqEEVciRbQ+GMwTKXcGpsxTikkZ067vmA6NwWmxbBDjZVMQ@mail.gmail.com>
------=_Part_2491_1203735914.1418927900567
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

On Thu, Dec 18, 2014 at 5:29 AM, Bob Tarling <[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/ 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  Looking at
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

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=3092993

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_2491_1203735914.1418927900567
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On T=
hu, Dec 18, 2014 at 5:29 AM, Bob Tarling <span dir=3D"ltr">&lt;<a href=3D"m=
ailto:[email protected]" target=3D"_blank">[email protected]</a>&gt=
;</span> wrote:<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p=
x 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-lef=
t-style:solid;padding-left:1ex"><div dir=3D"ltr"><div><div><div><div><div><=
div><div><br></div>My end goal is actually to determine package dependencie=
s. I have a large application that I&#39;m sure has cyclic dependencies bet=
ween packages and I&#39;d like to demonstrate that problem to the team I wo=
rk with before we tackle how to resolve it and split the app to smaller jar=
s.<br></div></div></div></div></div></div></div></blockquote><div><br></div=
><div>The tool I used to do this analysis for ArgoUML itself (although we n=
ever tackled removing the package cycles) was Classycle:=C2=A0<a href=3D"ht=
tp://classycle.sourceforge.net/">http://classycle.sourceforge.net/</a> It i=
s available as an Eclipse plugin as well as standalone tool.=C2=A0 One nice=
 addition since the last time I used it is support for Dependency Definitio=
n Files.=C2=A0 This allows you to describe allowable dependencies (e.g. you=
r architectural layers) and it will check for violations.=C2=A0<a href=3D"h=
ttp://classycle.sourceforge.net/ddf.html">http://classycle.sourceforge.net/=
ddf.html</a> =C2=A0Looking at <a href=3D"http://argouml.tigris.org/source/b=
rowse/argouml/trunk/tools/classycle/">http://argouml.tigris.org/source/brow=
se/argouml/trunk/tools/classycle/</a> it looks like it&#39;s been 7-8 years=
 since I used it for ArgoUML.</div><div><br></div><div>IntelliJ&#39;s depen=
dency analysis looks pretty powerful too (although I haven&#39;t used it): =
<a href=3D"https://www.jetbrains.com/idea/features/dependency_analysis.html=
">https://www.jetbrains.com/idea/features/dependency_analysis.html</a></div=
><div><br></div><div>While adding dependencies to the Java reverse engineer=
ing may be useful for other stuff, it&#39;s not how I&#39;d recommend findi=
ng package cycles.=C2=A0 A tool designed for that purpose will do a better =
job.</div><div><br></div><div>Tom</div><div><br></div><div>=C2=A0</div></di=
v></div></div>

------=_Part_2491_1203735914.1418927900567--