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.

Messages - Sunshine

Pages: 1 2 [3] 4 5 ... 35
Always good to get some fresh thoughts.
1. What do you think about adding a true crow's feet notation, where keys are underlined instead of having the key icon as stereotype
1.1 Also if it's not patented, how about adding automatic highlighting of the keys when you hover mouse over a relationship... this is something that Mysqlworkbench does and I find it useful to plan queries and joins
1 - I like the key icon can't say the underlining would get my vote.
1.1 - Yeah may be.

2. You can drag attributes (non-keys) from a table (or Class) to another in Project Explorer, but not in the diagram... it would be useful to be able to move attributes around in diagram as well
2.1 Editing attributes in the diagram by double clicking is buggy too... changes are not saved
2. - There is a feature where you can drag from project browser to element on diagram and it copies it. Not sure if I'd like that moving attributes on the diagram. Kind of feel the UI might become a little tricky to use when trying to select element vs attribute.
2.1 - I've not had this problem but may have just gotten used to the UI over the years.

3. EA (at least Professional) cannot reverse engineer SQL DDL code... I find it useful to move models around and update schemas.  MySQLWorkbench and ERWin can do this
3- Can reverse engineer DB already in corporate edition and above. I usually reverse engineer DB, edit in Sparx EA and generated DDL to create DB.
4. No CSV export for attributes is a major feature gap... I have read up on EA limitation to CSV export classifiers only and not their attributes, and I understand the difficulty in implementing this across all UML classifiers, but a table-attribute specific script should be made available by Sparx.  It's very valuable for quick editing-fine tuning-reporting when under time pressure (ERWin is excellent in this respect)
4 - MMh? I struggle to understanding this one. Do you want to make global changes to attributes or run a report? Here is a little trick on global changes; the  eap files are really ms access 97 and you can open it with MS Access and do global changes that way. Using DB skills to save time in changing the DB design - kind of poetic in some way isn't it :). BTW you can use the MS Access Jet 4 too for later versions of MS Access that don't support 97 anymore.  To run reports then look at doc generation. very comprehensive reporting built in already.

If you can't wait for that feature you can write some vbscript/jscript to create your cvs file.

Suggestions and Requests / Re: Model Search: More than one Search Term?
« on: October 03, 2017, 12:29:23 pm »
Maybe its because it is in the afternoon and I've just had a big lunch but I'm  missing something here as I thought the query builder provided multiple <search terms>.

Bugs and Issues / Re: Suppress Relationships still shows NoteLinks!
« on: October 02, 2017, 08:25:57 pm »
I've notice that too and agree.
The work around I did was to colour the relationship white so when I printed the diagram it didn't show.
The other thing I notice when disabling relationships was that certain shapes that provided the rectangle option which put the name label floating outside of the shape can't be moved when the show relationships box is unticked. For example the business actor in archimate 3 put the name underneath the shape and normally you can move it but when the relationships are not shown then can't move the name label anymore.

General Board / Re: What is Sparx and for what purposes it should be used
« on: October 01, 2017, 10:48:43 am »
I've used various tools like Sparx EA for the last 30 years in my profession. I've used Sparx EA for about 12 years now which I've used for the purposes of enterprise architecture, solution architecture, software architecture and engineering. Its probably the best value for money and feature rich tool on the market place today. The tool provides all the core features for enterprise architecture with the ability to draw diagrams, manage objects and relationships aided by matrices and lists all stored in database. The database can be from one of many mainstream vendors such as MS Access, MS SQL, Oracle etc. Sparx EA also has a very rich document generation ability too. It can be configured and customised and its use is only limited by your imagination. Yes it very feature rich and so the learning curve can be very steep and a bit overwhelming to the inexperienced.

So first of all if you want to use Sparx EA to store and manage Enterprise Architecture of a business you need two things. An expert in Enterprise Architecture and an expert in Sparx EA. They could be the same person or two individuals. If you are lacking these then start looking as trying to learn both is probably a learning curve most mortals would find hard to climb for the short duration of a project.

Second like any problem you need to break it down. Who needs to use the tool and for what purpose? A use case model can help. During this discovery phase you should ask what Enterprise Architecture Framework are you going to base your work upon?
 TOGAF, DODAF, ArchiMate and Zachman to name but a few. Other questions to ask are what viewpoints and elements will the stakeholders need and what data should those elements have to be useful to the stakeholders. Then prototype each use case in the tool to see how you would do it.

For enterprise architecture work I use a customised version of ArchiMate MDG (added extra features and attributes to the elements) and follow the Archimate V3.01 standard along with TOGAF V9.1. I also use various books like Enterprise Architecture At Work by Marc Lankhorst et al to guide me.

I have a meta model based on ArchiMate that describes all the elements and relationships along with a catalogue of viewpoints mapped to stakeholders. I based my catalogue of view points on the TOGAF and ArchiMate List.

These all allow me to cover everything in the enterprise from strategy, motivations for change, current states of business, data, application and infrastructure as well as future states and roadmaps to guide the organisation there.

So to re-iterate if you don't have the knowledge and experience in both methodology and tool then you need to find someone to help in one or both of these areas otherwise you will be doomed to fail.

Finally from the words of Mark Twain - Apologies for writing such a long response for I did not have time to write a shorter one.

Hope that helps and good luck with your endeavour.

General Board / Re: Roadmap legend filter
« on: September 22, 2017, 11:08:55 am »
Have you tried ticking the "use legend for phase colours" at the bottom of the roadmap options dialog?
Right click diagram background and from context menu select roadmap options to get that dialog.
Hope that helps

Automation Interface, Add-Ins and Tools / Re: Modification status of Package
« on: September 12, 2017, 10:08:06 am »
Unclear on what you mean as according to the user guide both element and package have modified field. If you look at the properties via the Sparx EA UI you'll also see the modified field. If you look at the tables t_object and t_package they have a field called modified too.

See the user guide for more info;

The only thing I can think of is that you are possibly using the the wrong object type in your code so perhaps give that another check.

Hope that helps. :)

General Board / Re: Automatic Color Elements based on Tagged Values
« on: August 23, 2017, 06:46:15 am »
Jepp. Thanks. That worked. Setting Auto Color on the Legend.
Next time RTFM  :D
We can forgive you for not RTFM as its a big manual. Sometimes its easier to ask than spend hours trawling through the pages. After all thats what forums like this are for aye?

Not familiar with the latest version of System Architect as not used it for about 16 years now. It used to support all sorts of notations. In Sparx EA there is a MDG called UPDM (Unified Profile for DoDAF and MODAF (UPDM) architectures) and its not clear if you are using that. Sounds like that might support the notation you need. If you need to convert your UML diagrams you can probably write a JScript to change diagrams, element types and relationships. There are some example JScripts in Sparx EA and Geert has provided even more in GIT. See the community page for more info.
If you are already using UPDM and its just that Sparx EA and System Architect are rendering the diagrams differently then refer to the standard. Its likely Sparx EA is rendering it correctly and SA isn't. If that assumption is correct then just inform your reviewers that its different because SA didn't follow the standard and they've just gotten used to a format that is non-standard and thus invalid. The new format is the correct one and you've just been working with an invalid format all those years. I've had this sort of this happen in the past to me. Sometimes its just easier to change the people's perspectives.

General Board / Re: Automatic Color Elements based on Tagged Values
« on: August 18, 2017, 06:21:30 am »
You can auto colour from tag values using the diagram legend. This feature was made available few version back around V12 if memory serves me correctly

Not found a way to set size as such. Sparx EA appears to fit the width of diagram to the page width until it hits the height limit on the page. You make the diagram width wider by making the left and right margins in the template smaller. You can rotate the diagram via the properties on the diagram too.
One final trick is to add section breaks before and after the diagram image and make the page size in the template A3 and landscape if the diagram is not legible on A4 size pages.
Hope that helps

General Board / Re: Figure numbers in captions in generate documents?
« on: July 20, 2017, 09:15:23 pm »
In template enable the diagram in the sections by ticking the box.
Within the two yellow tags for diagram, right click and from the context menu insert field>Figure gives you the figure number. You can add other text too
So it could look something like this;

Figure {Diagram.Figure}: {Diagram.Name}

There are several ways you can do bulk changes
a) use Import/Export CSV with search and replace or
b) JScript or
c) SQL.

To query the model for existing stereo types you could use some SQL in the search custom query tab.
For example
Code: [Select]
SELECT t_object.Stereotype, Count (*) as NumberOfStereotypes
FROM t_object
GROUP BY t_object.Stereotype
ORDER BY t_object.Stereotype

Search the forum for stereotype conversion code. Here is one example done in JScript,31109.msg225418.html#msg225418
Change the code to add conversion[] array elements you want to change
Code: [Select]
// Conversion Array parameters are sourceObject, sourceStereotype, targetObject, targetStereotype
//Add one or more Conversion mappings here
Conversions[0] = new TypeConversion("Requirement", "", "Requirement", "extendedRequirement");
Conversions[1] = ... etc

As Qwerty say's try it out on test model first.

Hope that helps

General Board / Re: MDG - Calculating a tagged value from other tags
« on: June 30, 2017, 05:20:33 pm »
I've had a similar problem. Tag values being used as inputs into calculation and the result captured in another tagged value. The only way I managed to get it to work was via a script.
So what I did was create the various tagged values including the result as a tagged value in my MDG. Then I created a jscript that navigated through the elements and filled in the calculated value for each element.
Store the script in a project script folder so it can be accessed via the UI via the context menu>Script>CalculateBusinessTechnicalRisk
for instance  the following attributes have values of 0 to 5
-Business criticality,
-Customer experience - business,
-Customer experience - technical,
-Efficiency and contribution,
-Future effectiveness,
The result is which totals the values for the above then finds the average and stores the value in Business Value tagged value. Similar calculations for technical condition and risk values in the script below.

Here is the JScript - hope it helps
Code: [Select]
!INC Local Scripts.EAConstants-JScript

 * Script Name:CalculateBusinessTechnicalRiskValues
 * Purpose: Used to scan through the work packages and calculate the totals business value,
 * technical condition and risk values to help prioritise work packages
 * Date: 17-09-2015

 * Project Browser Script main function
function OnProjectBrowserScript()
// Get the type of element selected in the Project Browser
var treeSelectedType = Repository.GetTreeSelectedItemType();

// Handling Code: Uncomment any types you wish this script to support
// NOTE: You can toggle comments on multiple lines that are currently
// selected with [CTRL]+[SHIFT]+[C].
switch ( treeSelectedType )
case otElement :
// Code for when an element is selected
var theElement as EA.Element;
theElement = Repository.GetTreeSelectedObject();
CalculateElementTotals("    ",theElement);
case otPackage :
// Code for when a package is selected
var thePackage as EA.Package;
thePackage = Repository.GetTreeSelectedObject();
NavigatePackage("    ",thePackage);
// Error message
Session.Prompt( "This script does not support items of this type.", promptOK );
Session.Prompt( "Application Portofolio Management Calculations Complete", promptOK );

// Navigates through the packages calling Calculate Element Totals in each package
// Parameters:
// - indent A string representing the current level of indentation
// - thePackage The package object to be processed
function NavigatePackage( indent, thePackage )
    // Cast thePackage to EA.Package so we get intellisense
    var currentPackage as EA.Package;
    currentPackage = thePackage;
    // Add the current package's name to the list
    Session.Output( indent + currentPackage.Name + " (PackageID=" +
        currentPackage.PackageID + ")" );
    // Convert the elements this package contains
    CalculateElementsTotalsInPackage( indent + "    ", currentPackage );
    // Recursively process any child packages
    var childPackageEnumerator = new Enumerator( currentPackage.Packages );
    while ( !childPackageEnumerator.atEnd() )
        var childPackage as EA.Package;
        childPackage = childPackageEnumerator.item();
        NavigatePackage( indent + "    ", childPackage );

// Calculates element totals in the package
// Parameters:
// - indent A string representing the current level of indentation
// - thePackage The package object to be processed
function CalculateElementsTotalsInPackage( indent, thePackage )
    // Cast thePackage to EA.Package so we get intellisense
    var currentPackage as EA.Package;
    currentPackage = thePackage;
    // Iterate through all elements and add them to the list
    var elementEnumerator = new Enumerator( currentPackage.Elements );
    while ( !elementEnumerator.atEnd() )
        var currentElement as EA.Element;
        currentElement = elementEnumerator.item();
        CalculateElementTotals(indent+"    ",currentElement );

// Calculates element totals for business and technical values along with risk
// Parameters:
// - indent A string representing the current level of indentation
// - thePackage The package object to be processed
function CalculateElementTotals( indent, theElement )
var businessValueTotal = "Business Value";
var businessValuetags = new Array ("Business criticality","Customer experience - business",
"Customer experience - technical","Efficiency and contribution",
"Future effectiveness","Utilisation");

var technicalValueTotal ="Technical Condition";
var technnicalValuetags = new Array ("Architecture","Database / Data Model","Development Language",
"Hardware Platform","Security Design","Operating System","Service Level Performance",
"Vendor Support");

var riskValueTotal ="Risk Value";
var riskValuetags = new Array ("Availability (DR)","Info Mgmt / Confidentiality",
"IT Staffing / Skills","Privacy","Security","Vendor Viability");

    // Cast theElement to EA.Element so we get intellisense
    var currentElement as EA.Element;
    currentElement = theElement;
    CalculateTotals(indent+"    ",currentElement,businessValueTotal,businessValuetags);
    CalculateTotals(indent+"    ",currentElement,technicalValueTotal,technnicalValuetags);
    CalculateTotals(indent+"    ",currentElement,riskValueTotal,riskValuetags);

    // Iterate through all embedded elements and add them to the list
    var elementEnumerator = new Enumerator( currentElement.Elements );
    while ( !elementEnumerator.atEnd() )
        var currentElement as EA.Element;
        currentElement = elementEnumerator.item();
        CalculateElementTotals(indent+"    ",currentElement );

//Calculate the total and store for tag values passed
// Parameters:
// - indent A string representing the current level of indentation
// - theElement The element object to be processed
function CalculateTotals( indent, theElement, theTotal, theValueTags )
// Debug Comment out when run for real
    Session.Output( indent + "CALLED: CalculateTotals with " + theElement.Name + " (" + theElement.Type + ", " + theElement.Stereotype + " )" );
    Session.Output( indent+"   " + "theTotal=" + theTotal );
    Session.Output( indent+"   " + "theValueTags=" + theValueTags );

var total = 0.0;
var tagEnumerator = new Enumerator( theValueTags );

while ( !tagEnumerator.atEnd() )
  var tagValue as EA.TaggedValue;
tagValue = theElement.TaggedValues.GetByName(tagEnumerator.item());
var totalTag  as EA.TaggedValue;

if ( (tagValue !=null) && (tagValue.Value !=""))
Session.Output( indent + "    " + "Tag:" + tagValue.Name + " = " + tagValue.Value );
total = total+parseFloat(tagValue.Value);

totalTag = theElement.TaggedValues.GetByName(theTotal);
if (totalTag != null)
  Session.Output( indent + "    " + "Subtotal =" + total );

Session.Output( indent + "    " + "length=" + theValueTags.length );
Session.Output( indent + "    " + theTotal +"= " + total/theValueTags.length );


Bugs and Issues / Re: Searching using a famous search engine
« on: June 29, 2017, 06:16:32 am »
You could just add the version to the search parameters  ;D

Pages: 1 2 [3] 4 5 ... 35