PlugFest Tools Changelog
This page describes changes that affect the behavior of the PlugFest tools
(Validator, Class Browser, Model Diff). Changes to the MEXICO software and
to the PlugFest test cases will be described elsewhere. The date shown
is the date the change was implemented in the development code, but since you are
reading about it here, it is in the version you are using.
UML/SysML Validator Changes
- 2009-07-27:
- 2009-05-12:
- 2009-03-22:
- Corrected a problem reported by Ralph Hains where validation details were not being shown.
- Allow reference to http://schema.omg.org/spec/UML/2.1.2/uml.xml in XMI.
- Corrected OCL errors in Stereotype.generalize, Extension.non_owned_end,
Pseudostate.outgoing_from_initial and ExecutionSpecification.same_lifeline,
and corrected a problem with packagin interning (found on 'context').
- Removed 'members only' capbilities; these are handled by MIWG.
- Against my principles, I allowed properties that are declared derived but
also have a default value(!) to use that default value when the derivation
is not provided. There are two of these: ExtensionEnd.lower, Message.messageKind.
- I am not sure whether this is a bug in UML, or whether I should have been
able to infer it from metamodel, but: Extension.ownedEnd redefines Association.ownedEnd
and Association.ownedEnd has opposite Property.owningAssociation.
I made Extension.ownedEnd have opposite ExtensionEnd.owningAssociation, and defined
the type of Extension.ownedEnd to be an ExtensionEnd.
- Implemented a prototype object diff capability.
- Corrected a bug in OCL::UnlimitedNatural arithmetic relations.
- Added run-time diagnostic capabilities.
- Added 'instance n of m' in title of instance error reports.
- 2008-08-18:
- Corrected a bug in OCL of derived attribute Classifier.inheritedMember. Execution
was getting stuck in non-progressing recursion among hasVisiblityOf and inheritableMember
(calling each other with no change in arguments).
- Corrected a bug where OCL validation was occurring on every reference to an
object rather than just every object.
- Corrected a bug where operation pre/post condition code was confused with its body.
- Switched to using compiled OCL operations and derivations.
- 2008-08-16:
- Corrected a bug where many opposites were not being
recognized. The bug would have caused spurious 'Missing mandatory value' reports
in some files. Regression testing suggests, however, that this does not occur as often
as I had initially thought.
- Corrected a bug where complete OCL operations that were evaluated to a
string constant (e.g. NamedElement.separator()) were returning nil, not the constant.
- Corrected a bug where 'result' was considered an OCL reserved word, causing some parsing errors.
- 2008-08-01:Added Jonathan Burket's Object Inventory capability.
- 2008-06-18:
- Allow stream type Windows-1252 in XMI, made synonymous with ISO 8859-1.
- Allow http://schema.omg.org/spec/UML/2.1(.1)?/uml.(xml|xmi) as a reference to
the entire UML profile.
- Fixed bug in reporting error 'Cannot infer class of object.'
- 2008-04-04:
- Fixed a problem where Profile objects were not themselves being dereferenced
(content was being dereferenced correctly, however).
- Created a UML Standard Profile (by hand). It currently only contains
the stereotype 'Trace,' used by SysML.
- 2008-03-08:Fixed a problem where stereotypes that could extend two or more metaclasses resulted in
an extended metaclass that inherited from all of them.
- 2008-02-18:
- Updated code to use the SysML Profile 20070901 found at
http://www.omg.org/technology/documents/formal/sysml.htm
- Fixed a problem where errors printing several UML Literal types caused problems
in the reporting of example XMI.
- Fixed a problem where (typically stereotyped) objects defined outside of XML scope
of Model were not being collected for reference.
- Fixed a problem where '_0' was not recognized as 'the profile itself' in
references such as 'http://schema.omg.org/spec/UML/2.1.1/StandardProfileL2.xmi#_0'
The current workaround is to create an object of type uml:Profile for each
such reference. Whether this will be sufficient remains to be seen.
- Created report details for warning 'No proxy for stereotyping' (N.B. This
warning still needs to be described better, the explantion is not accurate.)
- Created report details for warning 'Referent not found.'
- 2008-01-09: Corrected bugs introduced 2008-01-02 in viewing error report XMI.
- 2008-01-02: Added reporting for two new types of errors arising from faulty OCL: errors calculating derived attributes and errors due to missing derivations. Typical validation results will report many of these, but they should not be
much concern to the Plugfest participants. They are tyically due to bugs in the
UML and SysML specs. Their presence makes analysis of the OCL constraints involved impossible.
We aren't providing detailed reporting on these because they probably aren't interesting
to Plugfest participants.
- 2007-06-29: OCL correction: Classifier.inheritedMember (derivation)
Was: self.inherit(self.parents()->collect(p | p.inheritableMembers(self)))
Now: self.inherit(self.parents()->select (p | p.inheritableMembers(self)))
Bug reported against UML 2.1.1. - 2007-05-13: The modification of 2007-03-21 appears to be ill-advised; subsetted properties
should be copied downward regardless of whether the target is a derived union. (More specifically, nothing
in the Infrastructure spec contradicts this). There still may be some loose ends here though. For example,
Class.ownedAttribute is ordered, and not a derived union, but subsetted by ownedPort. Where in the ordered
set are the subsetted properties positioned?
- 2007-05-12: Corrected a problem where knowledge of derived union sources was not
copied to stereotyped (programmatically created) metaclasses.
- 2007-05-12: Changed UML metamodel EncapsulatedClass.ownedPort to non-derived. (No derivation
is provided in the metamodel). Report to UML RTF.
- 2007-05-12: Added a link in the 'Summary of Model Contents' section directly to the model.
- 2007-05-06: Corrected upper-bound multiplicity (generation and declaration)
in the SysML Profile.
- 2007-04-27: Created a members-only area for the plugfest.
- 2007-04-26: Corrected a problem where 'Property not found' errors were not reported.
- 2007-04-07: Corrected 23 errors in the OCL of UML around the use of MultiplicityElement.
- 2007-04-06: Upgraded to UML 2.1.1. Fixed a problem with ocl:implies.
(It was evaluating its second argument regardless of value of its first argument.)
- 2007-03-27: Pretty print (indent) XMI showing error instance.
- 2007-03-25: Corrected a problem where sources of derived unions
were not being collected if those sources were derived.
- 2007-03-21: Don't push values downward to 'subsetted-by' properties unless
that 'subsetted-by' property is a derived union.
- 2007-03-16: Improved processing time by ...um, a factor of 100. Moved
error reports for unresolved URI earlier in the reporting sequence.
- 2007-03-14: Provided a solution to the Validator's limitation in referencing
objects in external models/files through XMI href. However, the real problem here is that, in most instances,
there should be normative reference files (e.g. UML StandardLibrary).
To demonstrate a solution (and make some headway with the UPDM Profile) I used
Infrastructure.uml and Superstructure.uml from Eclipse and the Eclipse-specific indexing into those files.
- 2007-03-13: Modified behavior when 'Cannot infer class of object (XMI rule 2g)'
is apparent so that it defaults to the choose the base class for the property. It still warns, though,
as it should.
- 2007-01-27: Removed duplicate OCL violations from reporting.
- 2006-12-10: Added a link from Object Browser pages to the Class Browser page
of the type of object shown.
- 2006-12-10: Use anchored text on OCL constraint names in Validator report
(OCL constraint violation reporting).
It links to the Class Browser position where the OCL constraint is displayed.
- 2006-12-10: Corrected the implementation of oclType().
BTW
oclType() is apparently an OCL Library function (used in MMs such as L3) but not defined
in OCL Version 2! - 2006-12-09: When the spec does not provide a function to compute a
derived property, it is so noted in the 'Missing mandatory value' error report.
There are currently 20 such properties. They are:
Action.context, Activity.structuredNode, Behavior.context, Class.extension, Class.superClass, ConnectorEnd.definingEnd, ExtensionEnd.lower, Message.messageKind, Message.signature, OpaqueExpression.result, Package.nestedPackage, Package.ownedType, Parameter.default, Port.provided, Port.required, Profile.ownedStereotype, Property.default, ProtocolTransition.referred, RedefinableTemplateSignature.inheritedParameter, StructuredClassifier.part. - 2006-12-09: Added links to the error explanations from the 'summary of warnings' section
of the validation report page
- 2006-12-09: Corrected problem where default values (from MM definitions) were not
being set
- 2006-11-18: Implemented derived properties. In the past, certain 'Missing Mandatory
Value Violation' errors were in fact due to the Validator not being able to compute the property from
the OCL. Unfortunately, the UML spec does not provide OCL for all of the properties that are
declared derived. A future fix will report when a Multiplicity Violation was the spurious
result of the absence of the OCL definition that would provide the value. Another fix will
define that OCL ;^)
- 2006-11-13: Corrected a problem where the type given to stereotyped objects was
in some cases wrong.
- 2006-11-10: Corrected a problem finding SysML objects in XMI.
- 2006-11-09: Validation is now performed on all objects, not just those with an xmi:id.
- 2006-11-09: Reporting now includes statistics on how many of the 39 SysML
stereotypes were applied. (called 'SysML classes instantiated')
- 2006-06-06: Begin development.
UML/SysML Class Browser Changes
- 2008-08-17 Class Browser now tracks OCL modifications and editor notes. See
the section of this page, Current Status of OCL
- 2008-03-08:
- Specialized Class Browser pages that concerned stereotypes so that
they didn't contain heading for content inappropriate for stereotypes.
- Fixed a problem where asking for property detail in the Object Browser
resulted in a server error.
- Added a list of 'example objects' to the Class Browser pages.
The examples are presented in cases where you have uploaded an XMI file containing objects of
the class being presented.
- 2008-03-08 Fixed problem where 'red triangle' link not showing in IE.
- 2007-04-28: Fixed problem where 'red triangle' link not showing in IE.
- 2007-04-11: Fixed new problem where URLs to SysML stereotypes were wrong. Added Expresso page.
- 2007-04-06: Upgraded to UML 2.1.1.
- 2007-03-25: Provide the same slot details in the object browser as is presented in
the class browser.
- 2007-03-23: List the sources of a derived union in the details of the property.
- 2006-12-10: Show default values in property details.
- 2006-12-09: When the spec does not provide a function to compute a
derived property, it is so noted in the property details. (See the Validator changelog entry
of this date for a list of these properties.)
- 2006-11-10: Fixed parentage of UML Standard Profile Stereotype uml:Trace.
- 2006-11-06: Class description pages that describe classes from the
SysML Profile now have titles that read 'SysML Stereotype foo' etc.
- 2006-11-06: The Class Browser now appends a '*' after the name of
every class listed on the Class Browser main page that names a SysML object
(all others are part of UML).
- 2006-06-06: Begin development.
Current Status of the Validator's OCL
The Validator uses the UML's metamodel OCL constraints and operations wherever possible, of course.
However, there are bugs in that OCL. In order to make the OCL evaluation
performed by the Validator more meaningful, and also to suggest
improvements to the OCL to the UML standard writers, this tool uses
modified OCL in some places. In other places, where it isn't clear what the solution should be,
I haven't attempted to write a solution. Finally, there is OCL in UML and SysML I probably could write,
but haven't yet.
Rewritten OCL
The following are constraints and operations that were rewritten to fix a bug. The page at the link
describes the changes made.
'Ignored' OCL
The following are constraints and operations that are 'ignored.' An 'ignored' constraint
returns ocl:true always. An 'ignored' operation typically returns Set{}.
The page at the link describes the changes made.
AP233 Validator Changes
- 2006-04-05: Initial release of the AP233 Validator
AP233 Entity Type Browser
- 2007-04-28: Fixed problem where 'red triangle' link not showing in IE.
- 2006-04-05: Initial release of the Entity Type Browser
Send questions or comments to
se-interop@nist.gov.
Date Created: April 24, 2006
Last Modified: July 27, 2009