I am a PhD student at UFMG, Brazil. I am working on a tool to
automatically detect architecutral violations, more specifically to
discover dependencies that should exist between two packages but that
in fact does not exist. Basically, to detect such "missing
dependencies" our tool first mines the source code repository to
figure out what we are calling "historical patterns of dependencies
between classes".
We are currently using TV-Browser as one of our case studies to validate
our approach.
After applying the tool to TV-Browser we have detected such "missing dependencies":
Code: Alles auswählen
Source Package Destination Package
-----------------------------------------------------------------------------------------------
tvbrowser.ui.finder.FinderListener javax.swing.JList
util.ui.view.ViewProperty util.ui.view.ViewProperty
tvbrowser.ui.pluginview.contextmenu.ContextMenu tvbrowser.ui.pluginview.PluginTree
tvbrowser.ui.pluginview.PluginTree java.util.ArrayList
tvbrowser.ui.mainframe.toolbar.ToolBarModel javax.swing.JPopupMenu
tvbrowser.ui.mainframe.toolbar.ToolBarModel util.ui.Localizer
tvbrowser.ui.mainframe.toolbar.ContextMenu javax.swing.Action
tvbrowser.core.filters.filtercomponents.MassFilterSettingsDialog java.lang.Override
tvbrowser.core.filters.filtercomponents.MassFilterSettingsDialog tvbrowser.core.filters.filtercomponents.AbstractFilterComponent
tvbrowser.core.tvdataservice.TvDataServiceProxyManager devplugin.ProgressMonitor
tvbrowser.extras.favoritesplugin.core.Favorite java.lang.Override
tvbrowser.extras.favoritesplugin.core.Exclusion tvbrowser.extras.favoritesplugin.FavoriteConfigurator
tvbrowser.extras.favoritesplugin.core.Exclusion java.lang.Override
tvbrowser.extras.favoritesplugin.core.ActorSearcher tvbrowser.extras.favoritesplugin.FavoriteConfigurator
tvbrowser.extras.favoritesplugin.wizards.AbstractWizardStep com.jgoodies.forms.layout.CellConstraints
tvbrowser.extras.favoritesplugin.wizards.WizardStep com.jgoodies.forms.layout.CellConstraints
tvbrowser.extras.favoritesplugin.wizards.WizardHandler com.jgoodies.forms.layout.CellConstraints
tvbrowser.core.filters.filtercomponents.AbstractFilterComponent util.ui.Localizer
tvbrowser.core.filters.filtercomponents.AbstractFilterComponent java.lang.Override
tvbrowser.core.filters.filtercomponents.AbstractFilterComponent tvbrowser.core.filters.filtercomponents.AbstractFilterComponent
Basically, according to our historical analysis, we should expect a
dependency from each of the listed "Source Package" to the listed
"Destination Package". However, such dependencies do not exist in the
current codebase.
To clarify, a dependency denotes any kind of relation between two
classes, including method calls, field access, inheritance, interface
implementation etc.
Therefore, if possible, we would like to confirm with TV-Browser's
developers whether such "missing dependencies" are really relevant,
i.e. if they suggest a design anomaly or a "bad smell".
Best regards,
Cristiano Maffort
PhD Student
CS Dept, UFMG, Brazil