* Q: The PADL meta-model is qualified of semi-language independent. Why "semi"?
* A: Because it is only for typed object-oriented programming languages. In any case, don't fall for people who would like to sell you "truly" language-independent meta-models, this is a dream!
* Q: Which model has the most detailed data about a software system?
* A: The IIdiomLevelModel. Actually, it is the IDesignLevelModel, which includes micro-architectures that are occurrences of some design motifs. However, occurrences are costly to identify so far...
* Q: What is IWalker?
* A: The PADL meta-model supports the Visitor design pattern by providing two interfaces: IWalker and IGenerator depending of the conceptual type of data returned by the visit.
* Q: What are "actors" and "ghosts?
* A: Actor can be any entity or element of a model, such as a Class, an Interface, a Method, a Field, and so on. It is a legacy name from PDL! A "ghost" is any entity known to exist but not currently analysed, such as classes and interfaces provided by the Java class libraries.
* Q: What is the difference between AACRelationshipsAnalysis and ModelAnnotatorInstructions?
* A: AACRelationshipsAnalysis does not provide any data about the inside of methods, such the lines of code, while ModelAnnotatorInstructions does.
* Q: Are the metrics calculated automatically during PADL analysis?
* A: No, separate calls must be performed to do it, cf. POM.
* Q: What is "design motif" ?
* A: A design motif represents the solution of a design pattern and can be described using the constituent of the PADL meta-model.
* Q: Does a PADL model include the fields of other classes used by a method?
* A: Yes... somewhat... through IMethodInvocation, which is kind of a hack... see PADL
* Q: What the difference between a member class/interface and member ghost?
* A: Membre classes/interfaces were added to the Java language after the definition of its first version and of the JVM going with it. Therefore, Java developers added membre classes/interfaces using a "hack": if A defines a membre class MembreOfA, two classfiles are produced: one called A.class, another called A$MemberOfA.class. Thus, if you want to analyse membre classes/interfaces, you must also include in the CompleteClassFileCreator the X$Y.class files, else their corresponding membre classes/interfaces will show up as membre ghosts.
* Q: What is CPL?
* A: CPL, also known as "Common Ptidej Library", is a project that contains all kind of utility code and useful libraries that can be used in any projects build as part of Ptidej.
* Q: When creating a model by hand, I receive the following warning in the Console, why, what does it mean, and what should I do?
## util.lang.ConcreteReceiverGuard reports a runtime deprecation: calling method "padl.kernel.impl.CodeLevelModel.create()" from class "sad.helper.SmellDetectionCaller"
## Please use the methods in "padl.generator.helper.ModelGenerator" to obtain code-level models.
* A: The code to create model is now factored out into the class ''ModelGenerator'' to make them consistent across uses. The run-time "deprecation" warning just to let users know that they should better use ''ModelGenerator'' rather than their own model creation procedures.
* Q: When creating a model using the creator from class-files, I received some exceptions as follows, should I be worried?
Caused by: padl.kernel.exception.ModelDeclarationException:
padl.kernel.impl.GenericContainerOfNaturallyOrderedConstituents
reports a duplicate constituent
"org.eclipse.emf.ecore.resource.Resource$Factory$Registry"
(padl.kernel.impl.MemberGhost) in
"/argoUML026|org|eclipse|emf|ecore|resource|org.eclipse.emf.ecore.resource..Resource"
(padl.kernel.impl.Ghost)
* A: No need to worry, such exceptions only means that, somehow, the same constituent is being created more than once from different sources so only one such constituent is kept and the other are discarded. This can only be a worry if different sources provide different constituents with the same path.