Welcome!

Blog Feed Post

UML Profiles in Visual Studio 2010

UML Profiles are supported in Visual Studio 2010 (VS2010). Here I examine how they work and whether our CBDI-SAE UML Profile for SOA (SAE Profile) can be used in VS2010


Creating a UML Profile in VS2010

See MSDN for instructions on how to define a profile to extend UML in VS2010 and then add the profile to a model.

Here’s a simple profile I created in VS2010 covering two stereotypes from the SAE Profile - “Automation Unit” and “AU Dependency”. (an Automation Unit is the collection of software artifacts that provide a Service)

Unlike Sparx Systems’ Enterprise Architect (EA) that we have used to develop the SAE Profile, the Stereotypes don’t appear in the toolbox so they cannot be added directly to the diagram. Instead you add a Class or Dependency to the diagram, and then chose a Stereotype for it. The figure below shows the Stereotypes for Dependency, and the properties and values that can be set.

Use of UML Profile in VS2010
And here is the schema,




<?xml version="1.0" encoding="utf-8"?>
<profile dslVersion="1.0.0.0"
   name="SAEProfile" displayName="SAE Profile"
   xmlns="http://schemas.microsoft.com/UML2.1.2/ProfileDefinition">
      <stereotypes>
            <stereotype name="AUDependency" displayName="AU Dependency">
                <metaclasses>
                      <metaclassMoniker name="/SAEProfile/Microsoft.VisualStudio.Uml.Classes.IDependency" />
                </metaclasses>
                <properties>
                      <property name="AUDsource" displayName="AUD source" default="">
                            <propertyType>
                                <enumerationTypeMoniker name="/SAEProfile/AUDsource"/>
                            </propertyType>
                      </property>
                      <property name="AUDtype" displayName="AUD type" default="">
                            <propertyType>
                                <enumerationTypeMoniker name="/SAEProfile/AUDtype"/>
                            </propertyType>
                      </property>
                </properties>
            </stereotype>
            <stereotype name="AutomationUnit" displayName="Automation Unit">
                <metaclasses>
                      <metaclassMoniker name="/SAEProfile/Microsoft.VisualStudio.Uml.Classes.IClass" />
                </metaclasses>
                <properties>
                      <property name="AUhasEmbeddedDataStore" displayName="AUhasEmbeddedDataStore" default="">
                            <propertyType>
                                <externalType name="/SAEProfile/System.Boolean" />
                            </propertyType>
                      </property>
                      <property name="AUisDistributedPart" displayName="AUisDistributedPart" default="">
                            <propertyType>
                                <externalType name="/SAEProfile/System.Boolean" />
                            </propertyType>
                      </property>
                      <property name="AUname" displayName="AUnam" default="">
                            <propertyType>
                                <externalType name="/SAEProfile/System.String" />
                            </propertyType>
                      </property>
                      <property name="AUrequirement" displayName="AUrequirement" default="">
                            <propertyType>
                                <externalType name="/SAEProfile/System.String" />
                            </propertyType>
                      </property>
                      <property name="AUtype" displayName="AUtype" default="">
                            <propertyType>
                                <enumerationTypeMoniker name="/SAEProfile/AUtype" />
                            </propertyType>
                      </property>
                </properties>
            </stereotype>
      </stereotypes>
      <metaclasses>
            <metaclass name="Microsoft.VisualStudio.Uml.Classes.IDependency" />
            <metaclass name="Microsoft.VisualStudio.Uml.Classes.IClass" />
      </metaclasses>
      <propertyTypes>
            <externalType name="System.String" />
            <externalType name="System.Boolean" />
            <enumerationType name="AUtype">
            <enumerationLiterals>
                <enumerationLiteral name="component" displayName="component"/>
                <enumerationLiteral name="quasiComponent" displayName="quasiComponent"/>
                <enumerationLiteral name="wrapper" displayName="wrapper"/>
                <enumerationLiteral name="script" displayName="script"/>
                <enumerationLiteral name="BPEL" displayName="BPEL"/>
            </enumerationLiterals>
            </enumerationType>
            <enumerationType name="AUDsource">
            <enumerationLiterals>
                <enumerationLiteral name="fromServiceSpec" displayName="fromServiceSpec"/>
                <enumerationLiteral name="designChoice" displayName="designChoice"/>
                <enumerationLiteral name="fromAUSpec" displayName="fromAUSpec"/>
            </enumerationLiterals>
            </enumerationType>
            <enumerationType name="AUDtype">
                <enumerationLiterals>
                      <enumerationLiteral name="requiredType" displayName="requiredType"/>
                      <enumerationLiteral name="requiredIntegrity" displayName="requiredIntegrity"/>
                      <enumerationLiteral name="create" displayName="create"/>
                      <enumerationLiteral name="implementationOnly" displayName="implementationOnly"/>
                      <enumerationLiteral name="exclusiveService" displayName="exclusiveService"/>
                      <enumerationLiteral name="exclusiveDeployment" displayName="exclusiveDeployment"/>
                      <enumerationLiteral name="exclusiveInstance" displayName="exclusiveInstance"/>
                      <enumerationLiteral name="nonServiceDependency" displayName="nonServiceDependency"/>
                </enumerationLiterals>
            </enumerationType>
      </propertyTypes>
</profile>




Importing the SAE Profile

In VS2010 you can either create the UML Profile as a Visual Studio Extension as I did above or import an existing UML Profile in an XMI format. As the SAE Profile is available XMI format I tried importing it but unfortunately came up against some limitations.

The first major one is that we use generalization heavily in the SAE Profile. However, this is not supported in VS2010 and consequently generates the following warning,


Message              :               The following element was not imported: SAE Profile::Automation Unit Specification::Generalization. This element has the following type: Generalization. Line 30, position 4.

As a consequence this means many of the key elements of the SAE Profile are not imported.  In the SAE Profile Automation Unit for example is a type of Participant (which is used for mapping to SoaML).

Next it seems that a bug in the import means that enumerations are not imported. Enumerations are used to define the permitted values for properties. We have thousands of enumerations in our profile...

Hopefully Microsoft will improve this in subsequent releases. I am grateful to Steve Cook at Microsoft for helping me to try and import the SAE Profile.

In turn we are also migrating the UML model of the SAE Profile from EA over to No Magic’s Magic Draw. We need to do this in order to get support for XMI 2.2, whereas EA only supports 2.1. XMI 2.2 is required by IBM Rational tools, which has been popular in the past amongst our SAE Profile users, but the requirement for XMI 2.2 means that it cannot currently be imported.  We will look to see if Magic Draw can also export a format that imports better to VS2010. With thousands of elements in the SAE Profile, trying to convert it to VS2010’s own proprietary profile format would take a fair bit of effort.

Read the original blog entry...

More Stories By Lawrence Wilkes

Lawrence Wilkes is a consultant, author and researcher developing best practices in Service Oriented Architecture (SOA), Enterprise Architecture (EA), Application Modernization (AM), and Cloud Computing. As well as consulting to clients, Lawrence has developed education and certification programmes used by organizations and individuals the world over, as well as a knowledgebase of best practices licenced by major corporations. See the education and products pages on http://www.everware-cbdi.com

Latest Stories
Cloud promises the agility required by today’s digital businesses. As organizations adopt cloud based infrastructures and services, their IT resources become increasingly dynamic and hybrid in nature. Managing these require modern IT operations and tools. In his session at 20th Cloud Expo, Raj Sundaram, Senior Principal Product Manager at CA Technologies, will discuss how to modernize your IT operations in order to proactively manage your hybrid cloud and IT environments. He will be sharing bes...
After more than five years of DevOps, definitions are evolving, boundaries are expanding, ‘unicorns’ are no longer rare, enterprises are on board, and pundits are moving on. Can we now look at an evolution of DevOps? Should we? Is the foundation of DevOps ‘done’, or is there still too much left to do? What is mature, and what is still missing? What does the next 5 years of DevOps look like? In this Power Panel at DevOps Summit, moderated by DevOps Summit Conference Chair Andi Mann, panelists loo...
Cloud applications are seeing a deluge of requests to support the exploding advanced analytics market. “Open analytics” is the emerging strategy to deliver that data through an open data access layer, in the cloud, to be directly consumed by external analytics tools and popular programming languages. An increasing number of data engineers and data scientists use a variety of platforms and advanced analytics languages such as SAS, R, Python and Java, as well as frameworks such as Hadoop and Spark...
Automation is enabling enterprises to design, deploy, and manage more complex, hybrid cloud environments. Yet the people who manage these environments must be trained in and understanding these environments better than ever before. A new era of analytics and cognitive computing is adding intelligence, but also more complexity, to these cloud environments. How smart is your cloud? How smart should it be? In this power panel at 20th Cloud Expo, moderated by Conference Chair Roger Strukhoff, paneli...
"Loom is applying artificial intelligence and machine learning into the entire log analysis process, from start to finish and at the end you will get a human touch,” explained Sabo Taylor Diab, Vice President, Marketing at Loom Systems, in this SYS-CON.tv interview at 20th Cloud Expo, held June 6-8, 2017, at the Javits Center in New York City, NY.
The current age of digital transformation means that IT organizations must adapt their toolset to cover all digital experiences, beyond just the end users’. Today’s businesses can no longer focus solely on the digital interactions they manage with employees or customers; they must now contend with non-traditional factors. Whether it's the power of brand to make or break a company, the need to monitor across all locations 24/7, or the ability to proactively resolve issues, companies must adapt to...
A look across the tech landscape at the disruptive technologies that are increasing in prominence and speculate as to which will be most impactful for communications – namely, AI and Cloud Computing. In his session at 20th Cloud Expo, Curtis Peterson, VP of Operations at RingCentral, highlighted the current challenges of these transformative technologies and shared strategies for preparing your organization for these changes. This “view from the top” outlined the latest trends and developments i...
With major technology companies and startups seriously embracing Cloud strategies, now is the perfect time to attend 21st Cloud Expo October 31 - November 2, 2017, at the Santa Clara Convention Center, CA, and June 12-14, 2018, at the Javits Center in New York City, NY, and learn what is going on, contribute to the discussions, and ensure that your enterprise is on the right path to Digital Transformation.
@DevOpsSummit at Cloud Expo taking place Oct 31 - Nov 2, 2017, at the Santa Clara Convention Center, Santa Clara, CA, is co-located with the 21st International Cloud Expo and will feature technical sessions from a rock star conference faculty and the leading industry players in the world. The widespread success of cloud computing is driving the DevOps revolution in enterprise IT. Now as never before, development teams must communicate and collaborate in a dynamic, 24/7/365 environment. There is ...
"We are a monitoring company. We work with Salesforce, BBC, and quite a few other big logos. We basically provide monitoring for them, structure for their cloud services and we fit into the DevOps world" explained David Gildeh, Co-founder and CEO of Outlyer, in this SYS-CON.tv interview at DevOps Summit at 20th Cloud Expo, held June 6-8, 2017, at the Javits Center in New York City, NY.
Join us at Cloud Expo June 6-8 to find out how to securely connect your cloud app to any cloud or on-premises data source – without complex firewall changes. More users are demanding access to on-premises data from their cloud applications. It’s no longer a “nice-to-have” but an important differentiator that drives competitive advantages. It’s the new “must have” in the hybrid era. Users want capabilities that give them a unified view of the data to get closer to customers and grow business. The...
For organizations that have amassed large sums of software complexity, taking a microservices approach is the first step toward DevOps and continuous improvement / development. Integrating system-level analysis with microservices makes it easier to change and add functionality to applications at any time without the increase of risk. Before you start big transformation projects or a cloud migration, make sure these changes won’t take down your entire organization.
Artificial intelligence, machine learning, neural networks. We’re in the midst of a wave of excitement around AI such as hasn’t been seen for a few decades. But those previous periods of inflated expectations led to troughs of disappointment. Will this time be different? Most likely. Applications of AI such as predictive analytics are already decreasing costs and improving reliability of industrial machinery. Furthermore, the funding and research going into AI now comes from a wide range of com...
"When we talk about cloud without compromise what we're talking about is that when people think about 'I need the flexibility of the cloud' - it's the ability to create applications and run them in a cloud environment that's far more flexible,” explained Matthew Finnie, CTO of Interoute, in this SYS-CON.tv interview at 20th Cloud Expo, held June 6-8, 2017, at the Javits Center in New York City, NY.
Internet of @ThingsExpo, taking place October 31 - November 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA, is co-located with 21st Cloud Expo and will feature technical sessions from a rock star conference faculty and the leading industry players in the world. The Internet of Things (IoT) is the most profound change in personal and enterprise IT since the creation of the Worldwide Web more than 20 years ago. All major researchers estimate there will be tens of billions devic...