Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - fwoolz

Pages: [1] 2 3 ... 7
Suggestions and Requests / Ports and interface "lollipops"
« on: March 12, 2011, 06:49:18 am »
It would be very useful to be able to show provided and required interfaces owned by ports at an angle to avoid graphical interference with each other and with connectors.

Suggestions and Requests / C Code Engineering
« on: March 07, 2011, 11:06:27 am »
A few requests regarding reverse engineering of less-than-well-crafted C code:

1. An option should be provided to allow imported .c and .h files to be treated as entirely independent entities, even if the file names are the same. Not all real-world C modules consist of neat .h-.c file pairs. At present, it seems that EA assumes it needs to import all entities in identically named .h-.c file pairs; this doesn't always work for all code. Function prototypes for a given .c file may at times be found in the same .c file or may be in a completely unrelated (by name, at least) .h file. I've also seen .c files used as #include files. Whether or not this is good practice isn't the issue - it is the practice in some cases, good or not.

2. EA assumes that variables and functions defined only in a .c file are private, and that all such definitions in a .h file are public. Again, this isn't a valid assumption in all cases. An option should be provided to treat only external (i.e. not in a function definition) static variables and functions as private.

Fred W

At the moment, there are two distinct ways to define tagged values (aside from ad hoc definitions): profiles and tagged value types (structured tags). It seems that the two methods can be made to cooperate, as follows:

1. Create the desired tagged values as untyped attributes of stereotype elements in a profile (it seems you can use built-in types as well, but using untyped attributed avoids possible type collisions).
2. In parallel, define the same tagged values using "Settings > UML > Tagged Value Types" and define the types of the tagged values there.
3. When applying a stereotype from your profile, the tagged values will pick up their type definitions from the structured tagged value type definitions created in 2.

While this appears to work, it is clunky and error-prone. Furthermore, the two methods of type definition work in different ways: enumerated values from a profile, for example, store the list of values in the tagged values Notes field every time the tag is used (which is not the best way to do things), whereas structured tagged value enumerated types leave the Notes field free (values list is stored in t_propertytypes).

Sparx should seriously consider unifying these two methods somehow or at least documenting how the two methods can be made to work and play nicely together.

Suggestions and Requests / EA and "forbidden features"
« on: June 12, 2010, 01:07:42 pm »
Well, "forbidden" is a bit too dramatic - shall we say "non-compliant" instead? What I'm on about here is the fact that the EA user interface, in many cases, happily lets the user add features to elements that are not specified (or specified as not allowed!) for the element by the OMG specifications. For example, I can add an operation to a flow specification by clicking on the purple cube on the "Elements" toolbar, yet the SysML 1.1 spec clearly says, "[1] Flow specifications cannot own operations or receptions (they can only own FlowProperties)", and "[2] Every “ownedAttribute” of a FlowSpecification must be a FlowProperty" (I can also add arbitrary attributes that are not flow properties in the same manner).

What does the community think? Is EA's "libertine" attitude toward what is and isn't permitted for a given element a good thing (it lets the user extend UML beyond what the specs define) or a bad thing? I lean toward "bad," but YMMV.

Fred W

Suggestions and Requests / SysML and compartments
« on: June 12, 2010, 12:55:45 pm »
One shortcoming in the EA implementation of SysML is its lack of support for compartment-based representations of SysML features. For example, the SysML specification (e.g. Figure 9.7 in section 9.4.3) shows a "flow properties" compartment with flow properties represented as attributes with "in", "out", or "inout" prefixes. EA, on the other hand, only provides* the composite diagram + Flow Property "part" as a "built-in" method of realizing a flow specification. Likewise, Block properties (parts) can only be displayed by showing the composite diagram contents, not by means of compartments (as shown in Table 8.1 of the SysML 1.1 spec).

Ideally, both representations should be available for a given set of model elements. In other words, it should be possible to represent properties on a SysML internal block diagram in a "properties" or "parts" compartment on the parent block definition diagram, or as elements in a diagram frame on the parent block definition diagram, depending on the "display features" options for the block. As it is, the need to use "show composite diagram contents" in order to display a block's owned features is clumsy and gets in the way of a compact, neat representation of SysML system models.

* It's possible to "fake in" compartment-based SysML features by judicious choice of attribute stereotypes, but this isn't directly supported by the SysML stereotypes provided by EA and is in any case just that - "faking it in".

Is it possible to get a list of the various commands (class, method, and parameters) supported by the (undocumented) CustomCommand() method?


Does anyone know if there is a way to set the background of a composite diagram (i.e. a composite element with "show composite diagram" selected) to something other than transparent? I have some interface diagrams (hybrid SysML + UML) where the element with the "focus" is shown as a verrrrry tall composite diagram (in order to show all its interfaces to other model elements while also providing a "white box" view) on a diagram with a matrix background, and it's all too easy to lose track of what's an element border and what's a row divider, even with the element border width increased for emphasis. And, it's all too easy to craft run-on sentences in order to describe this particular conundrum!

Fred W

Suggestions and Requests / SQL in RTF templates?
« on: June 04, 2010, 11:37:09 am »
When working with the RTF report generator, I have often found myself wishing that I could plunk an SQL query between template tags to get just the elements and fields I want given the context set by the tag, in the order I want them, and then feed them into, say, a table with RTF merge fields acting as placeholders for the results of the query. My only recourse to date has been either to a) get as close as I can with the RTF generator and "settle;" or b) go outside of EA and access the underlying RDBMS directly.

Does anyone second this?

Fred W

Visual Studio 2010 provides the ability to filter which attributes and operations are shown on .cd class diagrams. This would, IMHO, be much more useful than simply turning groups of them them on and off by access specifier as EA does at present. I'll be posting a feature request to that effect.

Any thoughts?

Suggestions and Requests / AI features related to profiles
« on: February 05, 2010, 06:49:32 am »
The following feature request was submitted:

Hi all,

There seems to be no way to access profile items from the automation interface, so I would like to request that the following features be added to the AI as methods of EA.Repository:

object NewObjectFromProfile(string profileName, string stereotypeName) – Creates and returns an instance of an object (Package, Element, etc.) based on «stereotypeName» defined in profile “profileName”. Object type can be determined by ObjectType and can be cast to the appropriate EA object. Error if profile or stereotype is not defined.

object NewLinkFromProfile(string profileName, string stereotypeName) – Creates and returns an instance of a link (connector) based on «stereotypeName» defined in profile “profileName”. Object type can be determined by ObjectType and can be cast to the appropriate EA object. Error if profile or stereotype is not defined.

int SyncStereotype(string profileName, string stereotypeName) – Synchronizes all associated model objects having stereotype «[profileName::]stereotypeName» with the features defined for that stereotype in profile “profileName”. Returns the count of objects updated. Identically named stereotypes from a different namespace (Profile) should not be affected. Error if profile or stereotype is not defined.

bool IsProfileLoaded(string profileName) – Checks whether the specified profile is loaded.

bool IsStereotypeDefined(string profileName, string stereotypeName) – Checks whether the specified stereotype is defined in the specified profile. False if not defined or profile not loaded.

bool LoadProfile(string filename), bool SaveProfile(string profileName, string FileName) – Load and save profile .xml files, respectively.


Fred Woolsey


The methods may require some tweaking (for example, what if the same stereotypeName applies to more than one MetaClass?)...

Suggestions and Requests / EA table t_document and unused fields
« on: January 27, 2010, 09:27:17 am »
The table t_document in the EA database has two fields for document content, StrContent (a Memo field in Access) and BinContent (an OleObject field in Access). From what I can tell, EA uses the BinContent field exclusively to store linked documents but ignores the StrContent field completely. There is also a 255 character text field for document notes (t_document.Notes) that doesn't seem to be used. In addition to this, several fields in t_object, particularly Header1, Header2, GenOption and GenLinks (all memo fields) would seem to be available for Requirement elements since these all relate to code generation, something that doesn't apply to Requirement objects.

I'm also looking for a simple way to store an XML file (containing customized requirement revision history records) in either a document element linked to a requirements element or in the requirements element itself without having EA turn all '<' and '>' characters into '&lt;' and '&gt;' (as would be the case with the element Notes field) or adding an RTF header and control codes to it (as would be the case with a linked document). Yes, there are ways to get back the original XML, but this seems like a clunky, inelegant solution. So my questions are:

1. Do Sparx have plans for the StrContent field in the foreseeable future, or would they be willing to allow this field to be used for application-specific plain text objects?

2. Would Sparx consider allowing custom row entries in t_document provided that the rules regarding EA's use of the table were followed? This would allow arbitrary BLOB content (such as images, Autocad DXF or DWG files, PDF files, etc.) to be stored as element attachments WITHIN the database rather than as linked files. This encapsulation is important for cases where a distributed team is working on a project but not everyone necessarily has access to the linked files.

Note that I've tinkered with custom row entries (along with multiple linked document entries) in t_document and EA seems to get along quite nicely with them (it does, however, seem to ignore all but the first linked document for a given element).

3. Are there any reasons why the listed fields in t_object shouldn't be used for custom plain text data in Requirement elements?

4. Would Sparx consider adding improved Automation Interface support for the listed fields in t_document (and for the more obscure fields in t_object while they're at it)? For starters, it would be good to be able to load linked document RTF directly from a string rather than only from a file.

5. As an alternative (or additionally - even better) would Sparx consider adding an option (checkbox in the UI) to treat the element Notes field as plain rather than Rich Text? This would allow the field to be used for XML, HTML, and other markup without it being mangled by the HTML-lite parser used by EA. This probably means another database hack (maybe to StyleEx or something similar?), but it seems eminently do-able.

6. As a side issue, what format does EA use to store RTF files? Is it compressed (e.g. Zipped)?

Fred Woolsey

Hi all,

It would be great if things like the Issues and Changes lists provided in the Maintenance view gave you the ability to create persistently linked Issue and Change objects in the model, with full round-tripping between the lists and their corresponding objects. It is possible, for example, to create an Issue object from an Issue in the Issues list, but the link between the list and the newly created object disappears once the object is created and placed on the diagram. (A side note - it would be much better if the newly created object was placed somewhere in the current diagram view rather than at the upper left corner!)

Fred Woolsey

Suggestions and Requests / Model search and multiple stereotypes
« on: October 27, 2009, 01:10:16 pm »
The Model View and Model Search features are powerful tools for organizing... well, model views, but one feature that seems to be lacking is the ability to search on stereotypes beyond the first one on the list in cases where multiple stereotypes have been assigned. This appears to be the case for SQL query searches as well; the "Stereotype" property can be accessed, but not "StereotypeEx". Since I often use stereotypes with SysML <<valueType>> elements to organize data elements (and thus have at least 2 stereotypes for each element), the ability to search on any or all stereotypes would be a big plus.

Fred Woolsey

Suggestions and Requests / Run scripts from context menu
« on: May 27, 2009, 04:53:41 am »
I have recently written several scripts in EA that work with the current context object (via the GetContextObject, GetTreeSelectedPackage methods), and it struck me that EA doesn't seem to have an option in its context menus to run a script. Such an option would be ideal for scripts working with the current context item; simply right click the item and run the appropriate script from the context menu. Would Sparx consider adding this feature?

Fred Woolsey

Suggestions and Requests / Another script request
« on: May 27, 2009, 10:48:49 am »
How about making it possible to launch a script from a hyperlink? (EA Command: RunScript ?)

Pages: [1] 2 3 ... 7