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 ... 34
16
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.
 :)

17
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

19
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;
http://sparxsystems.com/enterprise_architect_user_guide/13.5/automation/element2.html
http://sparxsystems.com/enterprise_architect_user_guide/13.5/automation/package_2.html

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. :)

20
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?

21
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.

22
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

23
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

24
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;

diagram>
{Diagram.DiagramImg}
Figure {Diagram.Figure}: {Diagram.Name}
<diagram

25
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
http://sparxsystems.com/forums/smf/index.php/topic,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
 :)

26
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,
-Utilisation
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);
break;
}
case otPackage :
{
// Code for when a package is selected
var thePackage as EA.Package;
thePackage = Repository.GetTreeSelectedObject();
NavigatePackage("    ",thePackage);
break;
}
default:
{
// 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 );
       
        childPackageEnumerator.moveNext();
    }
}

//
// 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 );
        elementEnumerator.moveNext();
    }
}

//
// 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 );
        elementEnumerator.moveNext();
    }
}

// 
//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)
{
totalTag.Value=total/theValueTags.length;
totalTag.Update();
}
  Session.Output( indent + "    " + "Subtotal =" + total );
tagEnumerator.moveNext();
    }

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

OnProjectBrowserScript();


27
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

28
General Board / Re: Autonumbering on stereotype level
« on: June 23, 2017, 08:24:35 am »
Looks like if you want something you will have to roll up you sleeves and do it your self via a script.
There are some examples of vbscript and jscript provided in the scripting window that should help you get started.
Put your new script into a project browser group so you and select it from the context menu of the browser so you easily invoke it from the UI.
If you can't write scripts then find someone in your organisation to do so. It would only take a day of less for someone will programming experience to pick it up and learn how to do create it and maintain it for you.

Good luck and if you think it might be useful to others once its been created then please share.

29
General Board / Re: Extending Archimate 3
« on: June 23, 2017, 07:59:29 am »
...
  • I would like to restrict which connectors each element can use based on the element it is being connected to (i.e. this new element can only "Realize" a requirement, it can't aggregate it). Is this possible?
...
Kind of via the quick links. You need to set that up in the custom MDG you'll need to create to extend ArchiMate. See help for more details. AFAIK I don't think there is anyway to restrict the connectors being used via the toolbox selection.

30
Suggestions and Requests / V12 to V13 UBitMenu
« on: June 23, 2017, 07:54:05 am »
Would it be possible to provide an extra tab in Sparx EA to show the old menus of V12 in a similar fashion to UBitMenu for Office
http://www.ubit.ch/software/ubitmenu-languages/

The reason why I ask why is that I'm getting it in the neck from all my users who've used V12 and earlier about the ribbon and not being able to find the menu items they've come to love.
I think this would great at helping those well established users of Sparx EA whilst providing the ribbon for the new users. Best of both worlds I think.

I'm sure it wouldn't take a developer too long to add that feature and would provide a means to alleviate the pain a number of users are experiencing. So please implement this idea soon as it was difficult enough to get these users off Visio, spreadsheets etc in the first place without them whinging on about the new user interface.

Pages: 1 [2] 3 4 ... 34