| Package | TC | CC | AC | Ca | Ce | A | I | D | V |
|---|---|---|---|---|---|---|---|---|---|
| org.ajmm.obsearch | 11 | 3 | 8 | 5 | 6 | 73.0% | 55.0% | 27.000002% | 1 |
| org.ajmm.obsearch.asserts | 1 | 1 | 0 | 2 | 3 | 0.0% | 60.000004% | 40.0% | 1 |
| org.ajmm.obsearch.example | 11 | 10 | 1 | 0 | 16 | 9.0% | 100.0% | 9.0% | 1 |
| org.ajmm.obsearch.exception | 13 | 13 | 0 | 6 | 1 | 0.0% | 14.0% | 86.0% | 1 |
| org.ajmm.obsearch.index | 42 | 27 | 15 | 2 | 38 | 36.0% | 95.0% | 31.0% | 1 |
| org.ajmm.obsearch.index.pivotselection | 9 | 7 | 2 | 1 | 10 | 22.0% | 91.0% | 13.0% | 1 |
| org.ajmm.obsearch.index.pptree | 4 | 2 | 2 | 1 | 2 | 50.0% | 67.0% | 17.0% | 1 |
| org.ajmm.obsearch.index.sync | 1 | 1 | 0 | 0 | 4 | 0.0% | 100.0% | 0.0% | 1 |
| org.ajmm.obsearch.index.utils | 4 | 4 | 0 | 3 | 7 | 0.0% | 70.0% | 30.000002% | 1 |
| org.ajmm.obsearch.ob | 6 | 0 | 6 | 5 | 3 | 100.0% | 38.0% | 38.0% | 1 |
| org.ajmm.obsearch.query | 6 | 6 | 0 | 1 | 2 | 0.0% | 67.0% | 33.0% | 1 |
| org.ajmm.obsearch.result | 12 | 12 | 0 | 3 | 4 | 0.0% | 57.0% | 43.0% | 1 |
| org.ajmm.obsearch.util | 6 | 6 | 0 | 1 | 3 | 0.0% | 75.0% | 25.0% | 1 |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 5 | 6 | 73.0% | 55.0% | 27.000002% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.ajmm.obsearch.AbstractOBPriorityQueue org.ajmm.obsearch.AbstractOBResult org.ajmm.obsearch.AsynchronousIndex org.ajmm.obsearch.Index org.ajmm.obsearch.OB org.ajmm.obsearch.ParallelIndex org.ajmm.obsearch.Storable org.ajmm.obsearch.SynchronizableIndex | org.ajmm.obsearch.Result org.ajmm.obsearch.Result$Status org.ajmm.obsearch.TimeStampResult | org.ajmm.obsearch.example org.ajmm.obsearch.index org.ajmm.obsearch.index.pivotselection org.ajmm.obsearch.ob org.ajmm.obsearch.result | com.sleepycat.bind.tuple com.sleepycat.je java.io java.lang java.util org.ajmm.obsearch.exception |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 2 | 3 | 0.0% | 60.000004% | 40.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| None | org.ajmm.obsearch.asserts.OBAsserts | org.ajmm.obsearch.example org.ajmm.obsearch.index | java.io java.lang org.ajmm.obsearch.exception |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 0 | 16 | 9.0% | 100.0% | 9.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.ajmm.obsearch.example.SliceParserTokenTypes | org.ajmm.obsearch.example.HelpException org.ajmm.obsearch.example.OBExampleTrees org.ajmm.obsearch.example.OBSearchExample org.ajmm.obsearch.example.OBSlice org.ajmm.obsearch.example.OBVectorExample org.ajmm.obsearch.example.SliceAST org.ajmm.obsearch.example.SliceLexer org.ajmm.obsearch.example.SliceParseException org.ajmm.obsearch.example.SliceParser org.ajmm.obsearch.example.TreePivotable | None | antlr antlr.collections antlr.collections.impl com.sleepycat.bind.tuple java.io java.lang java.util org.ajmm.obsearch org.ajmm.obsearch.asserts org.ajmm.obsearch.exception org.ajmm.obsearch.index org.ajmm.obsearch.index.pivotselection org.ajmm.obsearch.ob org.ajmm.obsearch.result org.apache.commons.cli org.apache.log4j |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 6 | 1 | 0.0% | 14.0% | 86.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| None | org.ajmm.obsearch.exception.AlreadyFrozenException org.ajmm.obsearch.exception.BoxNotAvailableException org.ajmm.obsearch.exception.ClusteringFailedException org.ajmm.obsearch.exception.IllegalIdException org.ajmm.obsearch.exception.IllegalKException org.ajmm.obsearch.exception.IndexAlreadyFrozenException org.ajmm.obsearch.exception.KMeansException org.ajmm.obsearch.exception.KMeansHungUpException org.ajmm.obsearch.exception.NotFrozenException org.ajmm.obsearch.exception.OBException org.ajmm.obsearch.exception.OutOfRangeException org.ajmm.obsearch.exception.PivotsUnavailableException org.ajmm.obsearch.exception.UndefinedPivotsException | org.ajmm.obsearch org.ajmm.obsearch.asserts org.ajmm.obsearch.example org.ajmm.obsearch.index org.ajmm.obsearch.index.pivotselection org.ajmm.obsearch.ob | java.lang |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 2 | 38 | 36.0% | 95.0% | 31.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.ajmm.obsearch.index.AbstractExtendedPyramidIndex org.ajmm.obsearch.index.AbstractP2PIndex org.ajmm.obsearch.index.AbstractP2PIndex$QueryProcessing org.ajmm.obsearch.index.AbstractPPTree org.ajmm.obsearch.index.AbstractParallelIndex org.ajmm.obsearch.index.AbstractPivotIndex org.ajmm.obsearch.index.AbstractSynchronizableIndex org.ajmm.obsearch.index.IndexByte org.ajmm.obsearch.index.IndexDouble org.ajmm.obsearch.index.IndexFloat org.ajmm.obsearch.index.IndexInt org.ajmm.obsearch.index.IndexLong org.ajmm.obsearch.index.IndexShort org.ajmm.obsearch.index.OBCacheLoader org.ajmm.obsearch.index.PivotSelector | org.ajmm.obsearch.index.AbstractP2PIndex$1 org.ajmm.obsearch.index.AbstractP2PIndex$HeartBeat org.ajmm.obsearch.index.AbstractP2PIndex$IncomingConnectionHandler org.ajmm.obsearch.index.AbstractP2PIndex$MessageElementType org.ajmm.obsearch.index.AbstractP2PIndex$MessageType org.ajmm.obsearch.index.AbstractP2PIndex$PipeHandler org.ajmm.obsearch.index.AbstractPivotIndex$1 org.ajmm.obsearch.index.AbstractPivotIndex$ALoader org.ajmm.obsearch.index.AbstractSynchronizableIndex$TimeStampIterator org.ajmm.obsearch.index.ExtendedPyramidIndexShort org.ajmm.obsearch.index.IndexFactory org.ajmm.obsearch.index.OBCache org.ajmm.obsearch.index.P2PIndexShort org.ajmm.obsearch.index.P2PIndexShort$QueryProcessingShort org.ajmm.obsearch.index.PPTreeShort org.ajmm.obsearch.index.PPTreeShort$1 org.ajmm.obsearch.index.PPTreeShort$BLoader org.ajmm.obsearch.index.ParallelIndexShort org.ajmm.obsearch.index.ParallelIndexShort$1 org.ajmm.obsearch.index.ParallelIndexShort$Matcher org.ajmm.obsearch.index.SynchronizableIndexShort org.ajmm.obsearch.index.UnsafeNCorePPTreeShort org.ajmm.obsearch.index.UnsafeNCorePPTreeShort$1 org.ajmm.obsearch.index.UnsafeNCorePPTreeShort$DistanceCalculation org.ajmm.obsearch.index.UnsafeNCorePPTreeShort$DistanceEvaluation org.ajmm.obsearch.index.UnsafeNCorePPTreeShort$PivotTupleCalculation org.ajmm.obsearch.index.UnsafePPTreeShort | org.ajmm.obsearch.example org.ajmm.obsearch.index.pivotselection | cern.colt.list cern.colt.map cern.jet.random.engine com.sleepycat.bind.tuple com.sleepycat.je com.thoughtworks.xstream gnu.trove hep.aida.bin java.io java.lang java.lang.ref java.lang.reflect java.net java.util java.util.concurrent java.util.concurrent.atomic net.jxta.discovery net.jxta.document net.jxta.endpoint net.jxta.exception net.jxta.id net.jxta.peer net.jxta.peergroup net.jxta.pipe net.jxta.platform net.jxta.protocol net.jxta.util org.ajmm.obsearch org.ajmm.obsearch.asserts org.ajmm.obsearch.exception org.ajmm.obsearch.index.pptree org.ajmm.obsearch.index.utils org.ajmm.obsearch.ob org.ajmm.obsearch.query org.ajmm.obsearch.result org.ajmm.obsearch.util org.apache.log4j sun.misc |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 1 | 10 | 22.0% | 91.0% | 13.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.ajmm.obsearch.index.pivotselection.AbstractTentaclePivotSelector org.ajmm.obsearch.index.pivotselection.Pivotable | org.ajmm.obsearch.index.pivotselection.AcceptAll org.ajmm.obsearch.index.pivotselection.DummyPivotSelector org.ajmm.obsearch.index.pivotselection.FixedPivotSelector org.ajmm.obsearch.index.pivotselection.KMeansPPPivotSelector org.ajmm.obsearch.index.pivotselection.RandomPivotSelector org.ajmm.obsearch.index.pivotselection.TentaclePivotSelectorShort org.ajmm.obsearch.index.pivotselection.TentaclePivotSelectorShort$DResult | org.ajmm.obsearch.example | com.sleepycat.je hep.aida.bin java.lang java.util org.ajmm.obsearch org.ajmm.obsearch.exception org.ajmm.obsearch.index org.ajmm.obsearch.index.utils org.ajmm.obsearch.ob org.apache.log4j |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 1 | 2 | 50.0% | 67.0% | 17.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.ajmm.obsearch.index.pptree.AbstractSpaceTreeNode org.ajmm.obsearch.index.pptree.SpaceTree | org.ajmm.obsearch.index.pptree.SpaceTreeLeaf org.ajmm.obsearch.index.pptree.SpaceTreeNode | org.ajmm.obsearch.index | java.lang java.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 0 | 4 | 0.0% | 100.0% | 0.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| None | org.ajmm.obsearch.index.sync.IntLongComparator | None | com.sleepycat.bind.tuple java.io java.lang java.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 3 | 7 | 0.0% | 70.0% | 30.000002% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| None | org.ajmm.obsearch.index.utils.AbstractUnsafeArrayHandler org.ajmm.obsearch.index.utils.Directory org.ajmm.obsearch.index.utils.MyTupleInput org.ajmm.obsearch.index.utils.OBRandom | org.ajmm.obsearch.index org.ajmm.obsearch.index.pivotselection org.ajmm.obsearch.util | cern.jet.random.engine com.sleepycat.bind.tuple java.io java.lang java.lang.reflect java.util sun.misc |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 5 | 3 | 100.0% | 38.0% | 38.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.ajmm.obsearch.ob.OBByte org.ajmm.obsearch.ob.OBDouble org.ajmm.obsearch.ob.OBFloat org.ajmm.obsearch.ob.OBInt org.ajmm.obsearch.ob.OBLong org.ajmm.obsearch.ob.OBShort | None | org.ajmm.obsearch.example org.ajmm.obsearch.index org.ajmm.obsearch.index.pivotselection org.ajmm.obsearch.query org.ajmm.obsearch.result | java.lang org.ajmm.obsearch org.ajmm.obsearch.exception |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 1 | 2 | 0.0% | 67.0% | 33.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| None | org.ajmm.obsearch.query.OBQueryByte org.ajmm.obsearch.query.OBQueryDouble org.ajmm.obsearch.query.OBQueryFloat org.ajmm.obsearch.query.OBQueryInt org.ajmm.obsearch.query.OBQueryLong org.ajmm.obsearch.query.OBQueryShort | org.ajmm.obsearch.index | org.ajmm.obsearch.ob org.ajmm.obsearch.result |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 3 | 4 | 0.0% | 57.0% | 43.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| None | org.ajmm.obsearch.result.OBPriorityQueueByte org.ajmm.obsearch.result.OBPriorityQueueDouble org.ajmm.obsearch.result.OBPriorityQueueFloat org.ajmm.obsearch.result.OBPriorityQueueInt org.ajmm.obsearch.result.OBPriorityQueueLong org.ajmm.obsearch.result.OBPriorityQueueShort org.ajmm.obsearch.result.OBResultByte org.ajmm.obsearch.result.OBResultDouble org.ajmm.obsearch.result.OBResultFloat org.ajmm.obsearch.result.OBResultInt org.ajmm.obsearch.result.OBResultLong org.ajmm.obsearch.result.OBResultShort | org.ajmm.obsearch.example org.ajmm.obsearch.index org.ajmm.obsearch.query | java.lang java.util org.ajmm.obsearch org.ajmm.obsearch.ob |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 1 | 3 | 0.0% | 75.0% | 25.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| None | org.ajmm.obsearch.util.UnsafeArrayHandlerByte org.ajmm.obsearch.util.UnsafeArrayHandlerDouble org.ajmm.obsearch.util.UnsafeArrayHandlerFloat org.ajmm.obsearch.util.UnsafeArrayHandlerInt org.ajmm.obsearch.util.UnsafeArrayHandlerLong org.ajmm.obsearch.util.UnsafeArrayHandlerShort | org.ajmm.obsearch.index | java.lang org.ajmm.obsearch.index.utils sun.misc |
| Term | Description |
|---|---|
| Number of Classes | The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package. |
| Afferent Couplings | The number of other packages that depend upon classes within the package is an indicator of the package's responsibility. |
| Efferent Couplings | The number of other packages that the classes in the package depend upon is an indicator of the package's independence. |
| Abstractness | The ratio of the number of abstract classes (and interfaces) in the analyzed package to the total number of classes in the analyzed package. The range for this metric is 0 to 1, with A=0 indicating a completely concrete package and A=1 indicating a completely abstract package. |
| Instability | The ratio of efferent coupling (Ce) to total coupling (Ce / (Ce + Ca)). This metric is an indicator of the package's resilience to change. The range for this metric is 0 to 1, with I=0 indicating a completely stable package and I=1 indicating a completely instable package. |
| Distance | The perpendicular distance of a package from the idealized line A + I = 1. This metric is an indicator of the package's balance between abstractness and stability. A package squarely on the main sequence is optimally balanced with respect to its abstractness and stability. Ideal packages are either completely abstract and stable (x=0, y=1) or completely concrete and instable (x=1, y=0). The range for this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence and D=1 indicating a package that is as far from the main sequence as possible. |
| Cycles | Packages participating in a package dependency cycle are in a deadly embrace with respect to reusability and their release cycle. Package dependency cycles can be easily identified by reviewing the textual reports of dependency cycles. Once these dependency cycles have been identified with JDepend, they can be broken by employing various object-oriented techniques. |