Archive for the ‘Modeling’ Category

What is the Reference Model for Open Distributed Processing (RM-ODP)?

Wednesday, May 9th, 2007

Hello!

Recently, there was an announcement on the Yahoo! Groups mda-discussion list for the 4th International Workshop on ODP for Enterprise Computing (WODPEC 2007). Since I have never heard of RM-ODP I took the opportunity to learn something new.

The RM-ODP is an ISO standard that is used to provide a framework for the documentation of distributed processing systems. This means it gives interested stakeholders of such systems well defined terms and concepts that they can use to describe a system (e.g. a software system). The concepts that are defined are, for example:

  • Class
  • Type
  • Component
  • Composition
  • Action

and some more.

Remarkably, they use UML to describe parts of this standard, e.g. UML profiles and metamodels for the “5 ODP viewpoints” (Magicdraw models). There is also an example available online (look in appendix B).

Interesting stuff, but not easy to grasp.

Best regards,
Andreas

Technorati Tags: ,

Precise models can help to improve distributed software development

Monday, May 7th, 2007

Hello!

In his paper 5 Practical Tips for Enterprise Architects Dan Massey states that one of the challenges of modern software development is the distribution of development teams across different geographical (and cultural, I’d like to amend) regions. This requires more efficient communication and one of the means to achieve this is to use formal methods which includes – among others – the usage of OCL.

The other recommendations are:

  • Establish, maintain and mandate architectural standards
  • Create a domain model and focus on becoming a business domain expert
  • Train teams on the architecture standards and domain model
  • Always consider your customer

Dan works for a tool vendor (Borland) so you have decide on your own how much you think his paper is inspired by the interests of the company he works for.

Best regards,
Andreas

Technorati Tags: ,

Model driven architecture (MDA) with Enterprise Architect

Monday, April 30th, 2007

Hello!

There is a nice white paper named EA4MDA_Features__WP.pdf on the Cephas website (sorry, they don’t use search engine friendly URLs – you must look in download/white papers/model driven architecture) about MDA with Enterprise Architect.

The paper is nicely written, concise and concret, which is not often the case with this subject. For example there is a list of criteria for creating a complete and precise model that is a better source for model transformation. The list contains recommendations like (excerpt)

  • Consistently set navigability for associations
  • Define multiplicity for both ends of associations
  • Define unique names for attributes and both roles in associations

All this helps to create more and better code.

The paper then states important capabilities of MDA enabled tools and gives an assessment of Enterprise Architects implementation.

Sparx Systems also has a similar paper on their website which I find a bit more shallow than the Cephas paper.

Best regards,
Andreas

Technorati Tags: , , ,

My experience with Eclipse and Octopus…

Tuesday, April 10th, 2007

was a sad one.

There is the Octopus tool for checking OCL expressions and since it comes from the creators of OCL – Anneke Kleppe and Jos Warmer – I thought it would be interesting to compare it against Oclarity. I have already tried this about 2 years ago and miserably failed. In the meantime Eclipse has matured and a new version of Octopus was released. So I decided to try it again.

Installing the newest Version of Eclipse (3.2) was easy. But the current Octopus page on Sourceforge just said it is an ‘Eclipse plugin’. So I had to figure out how to install an Eclipse plugin first (but all I wanted was to run Octopus).

Finally I was ready and eager to use Octopus. Again, no hint on the Sourceforge site, nor in the plugin file. Fortunately I found the required information on the Octopus page on klasse.nl. I had to create a new Octopus project. Here is the result:

Problem opening wizard

Please note the helpful error message in the details window. If somebody out there knows how to run Octopus 2.2.0 on Eclipse 3.2 I’d appreciate some hints.

And could some kind soul please donate 200 bucks to the Eclipse foundation to sign their software?

eclipse.exe not signed

Technorati Tags: , ,

NASA uses model driven development for new software project

Tuesday, April 3rd, 2007

Hello!

Daniel Crook has posted an interesting article about NASAs decision to create the software for the James Webb Space Telescope with a model driven approach using UML with IBM Rationals product line. The original article on CNET also has some interesting comments. It would be interesting to see how the project runs.

Best regards,
Andreas

Technorati Tags: ,

What think experts about UML and modeling?

Tuesday, April 3rd, 2007

Hello!

The software development magazine SD Times has published an interview about the ‘Future of UML’ with some well known experts. I’d like to summarize and comment the interview for your convenience.

The participants where

  • Richard Soley (OMG Chairman and CEO)
  • Bran Selic (IBM, has made significant contributions to the UML metamodel)
  • Jack Greenfield (Microsoft – tool vendor)
  • Cris Kobryn (PivotPoint – tool user)
  • Jan Popkin (Telelogic – UML tool vendor)

Question 1: “What is the future of UML?”

Bran Selic says that the UML will be continuously maintained (interestingly, he did not say “developed”. Does this mean the speed of extension of the UML will be slower in the future? I think that would be beneficial for the acceptance of the UML). He also expects more and more people to use the UML more comprehensively e.g. for code generation and model verification. He also expects the publication of more UML profiles and thinks this a way of defining Domain Specific Languages (DSLs). I agree with this point, I also think that people underestimate UMLs extensibility and versatile applicability.

Jack Greenfield (naturally, since this is Microsoft’s official position concerning modeling methodologies) says that DSLs will be used more and more instead of UML for modeling software. UML will be used to design the DSLs themselves (I don’t think that Microsoft’s DSL tools borrow anything from UML. As usual, Microsoft tries to define their own standard).

Jan Popkin says that modeling will be important to communicate designs but the degree of coupling between the model and the code widely varies from modeling business processes (no direct relation to code) to embedded systems (highly coupled models and code).

Cris Kobryn thinks that model driven software development will become more and more important because the software industry matures. In the short term he is concerned about some shortcomings in the UML mainly “language bloat” and lack of diagram exchange in XMI 2.0. I think Cris’ opinion is the most unbiased and exact assessment of the current state of the UML.

Question 2: “How can development teams take better advantage of UML-based tools to improve the software development process?”

Jack Greenfield thinks that more usage of UML profiles will add precision to the model. Of course, he also thinks that DSLs are even better.

Cris Kobryn thinks that it is important, that the development team chooses a suitable subset of UML they want to use for the particular project. Sounds a bit like tailoring a development process and probably makes sense.

Bran Selic says that the best usage of UML depends on the degree of model driven development. Most important is that the development team realizes the value of modeling. In the past too much was promised but not enough value delivered.

Jan Popkin says that teams should try to use the UML stricter and stricter, thus becoming more comfortable with the language and the tools.

Question 3: “What role does modeling play in enhancing software security and compliance?”

Chris Kobryn says that a model driven development approach can be used to enforce certain security and compliance rules (I assume he thinks of the possibility to add security and compliance related aspects to the software using appropriate model transformations).

Jack Greenfield points out that a UML model can be used to make the softwares behavior concerning security and compliance better visible than just embedding it in code or XML configuration files (but, after all this is a primary benefit of modeling independent of security and modeling).

(Since UML as it stands is not specific to any technical aspect or domain this question seems a bit pointless to me. The answers seem to reflect this and are quite general).

Question 4: What drives development teams that haven’t previously used UML tools to adopt them?

The key drivers seem to be

  • Increasing software complexity
  • Less tolerance for errors
  • Better IDE integration of UML tools
  • Successful model driven projects by competitors

Jack Greenfield points out, that teams that have begun to use UML have often been disappointed because they found that UML is not able to effectively capture all relevant information.

Technorati Tags: , ,

Announcement: AGTIVE 07 workshop on Graph & Model Transformation

Monday, March 12th, 2007

Hello!

From October 10 – October 12, 2007 the AGTIVE ‘07 will take place in Kassel, Germany.
In general the topic of graph transformation is not specifically related to software modeling but this years AGTIVE will “put a special emphasis on the role graph transformation technology plays for model-driven system engineering languages, tools, and methods“.
As a tool vendor, I’d be particular interested in a presentation of the state of the art of OMGs model transformation language QVT (Query, View, Transformation).

Best regards,
Andreas

Technorati Tags: , ,

Submission Deadline for MODELS 2007

Thursday, March 8th, 2007

Hello,

the deadline for the submission of abstracts for the ACM/IEEE 10th International Conference on Model-Driven Engineering Languages and Systems (MODELS 2007) ends in less than 2 weeks. Scientific papers and “Experience papers” are both welcome.

The MODELS 2007 will take place at the end of September in Nashville, Tennesee.

The conference will be 5 days full of panels, tutorials, workshops and an exhibition of commercial tools all dedicated to the topic of model driven software development. I’m sure there will be lot of interesting stuff.

Best regards,
Andreas

What is UML package merge?

Tuesday, February 27th, 2007

Hello!

Recently, someone posted this question concerning the UML metamodel (as Rational Rose model) from the OMG website to the precise UML (puml) mailing list:

"But when I browse the diagrams, I find some strange things such as many duplication of the same concept in the same diagram. …in any case, if you examine the classifiers hierarchy, you can find many instances of the same classes (Classifier, Class, Interface,…)"

And Earl Waldin – who is involved in the work on the UML specification within the OMG - responded:

 "…The specification heavily uses the concept of a merge increment. You can try reading the definition of PackageMerge in section 7.3.40 of the UML2 specification. However, it's not easy going. I don't know of any good description of this and a quick Google doesn't turn up any…"

So I thought I give it a try :-)

(Btw.  the document Earl referred to is the UML 2.0 superstructure specification).

To start, let me cite the introductory paragraph of chapter 7.3.40 of this document:

"A package merge is a directed relationship between two packages that indicates that the contents of the two packages are to be combined. It is very similar to Generalization in the sense that the source element conceptually adds the characteristics of the target element to its own characteristics resulting in an element that combines the characteristics of both. This mechanism should be used when elements defined in different packages have the same name and are intended to represent the same concept. Most often it is used to provide different definitions of a given concept for different purposes, starting from a common base definition. A given base concept is extended in increments, with each increment defined in a separate merged package. By selecting which increments to merge, it is possible to obtain a custom definition of a concept for a specific end. Package merge is particularly useful in meta-modeling and is extensively used in the definition of the UML metamodel."

The basic nature of a package merge is to define a single concept not only in one place as a single entity but to split the concept definition over several packages. Reasons could be:

  • The concept is complex and you don't want to handle all the complexity whenever you use the concept. In this case you could merge only those parts that are of concern to you into a target package and the use the concept from this target package. For example, in an editor with 'code completion' this could reduce the number of suggestions.
  • You want to partition your system along some logical boundaries/responsibilities and create packages in your model to reflect this partitioning. Then you can divide a concept along these logical boundaries and define the specific parts of the concept in the related package. E.g. if you could decide to create packages for domain specific parts of your classes and for technical aspects like security or persistency. Then you could define the domain specific part of a given class in package A, the security in package B and the persistency in package C. In discussion with your stakeholders you could now use only package A to discuss the business requirements whereas you could create a merge package that combines packages A, B and C for a code generator.

 Package merge example diagram

The UML specifications lists in detail the (conceptual) transformations that take place during the merge and the constraints that must be satisfied to allow the merge. 

Now is the package merge a useful concept?

Personally, I doubt it. It probably has helped the people that have defined the UML metamodel but introduced a new concept that does not fit very well to the other concepts in UML and that has only limited support in most UML tools.

The main problem is, that it is a hybrid between a structural feature and a transformation that takes place at a given point in time and that transforms the model from one state to another. Conceptually, the merge takes place when the merge relation is established and whenever one of the merged packages is modified.

In addition, if you are a tool vendor the idea of properly supporting  the package merge feature might give you a headache.

Best regards,
Andreas

Technorati Tags: , ,

 

Workshop announcement: UML and AADL

Friday, February 23rd, 2007

Hello!

Recently, an announcement for a workshop on UML and AADL was made on the precise UML mailing list. The workshop seems to emphasize the usage of AADL.

AADL is a new modeling standard for embedded systems. If you want a quick introduction to AADL I recommend this presentation. The AADL seems to implement the "model based" approach to a high degree and it seems to have a better defined and integrated textual specification than UML (but it also supports graphical representations). A UML profile exists so that current users of UML can make their first steps with AADL in the tools they are used to.

Best regards,
Andreas

Accurate specifications become more popular

Monday, February 12th, 2007

says Chris Rupp, a well known german requirements specialist.

The german information technology newspaper Computerzeitung cited Mrs. Rupp with interesting opinions (german) on trends in requirements engineering.

Chris thinks, that requirements specifications have become more accurate and complete in the past years. Reasons are

  • Outsourcing becomes more and more popular. This requires better description of the requirements since with growing distance (geographically and more important mentally) the contractor usually knows much less about the problem domain than the principal. And communication is harder and more expensive.
  • The principal usually demands formal qualification from the contractor, like CMMI and these qualifications imply formal requirements definitions.

Chris further says, it is hard to create good requirements specifications because there is a gap between domain experts and software development experts. Requirements engineering works best if a person that has relatively little domain knowledge speaks to a domain specialist and translates 'domain speak' into clear, efficient requirements. She has observed it is important that the domain specialist likes (on a personal level) to speak with the requirements engineer, otherwise the results will be poor.

Chris and her colleague Stefan Queins make these recommendations to improve your requirements engineering:

  • Strive for a good requirements specification but expect that there will be gaps in your specification and that you will have to (repeatedly) spend additional effort for communicating your requirements.
  • Make your contracts reflect this approach.
  • Have at least one person available that is capable to make the translation between domain experts and the software developments team.

I'd like to add this suggestion:
If you want to improve your requirements specification process and your are using the UML to model a software system or software components you should consider using the Object Constraint Language to improve the precision and quality of your model and to capture requirements directly on the model level. These requirements will be automatically checked for consistency with the model, if you use the right software.

Best regards,
Andreas

OCL support in Enterprise Architect

Monday, January 15th, 2007

Hello,

recently I  looked at Enterprise Architects support for OCL.
Enterprise Architect (EA) is a UML modeling tool from Sparx Systems.
EA offers the capability to define OCL expressions in the model which are verified by EA on user request. These constraints are evaluated if the user explicitly starts a 'model validation' by selecting the according menu entry. EA has a couple of built in checks also but I'd like to focus on the user defined OCL checks now.

OCL constraints can be attached to relationships or attributes. This implicitly defines the context of the expression. One thing to note is that the expressions are applied to the UML metamodel and not to the model itself in the traditional sense. This becomes pretty obvious when looking at the examples given in the help file:

inv: self.oclIsKindOf(DirectedRelationship) 

This is necessary if OCL is used to verify the model itself but this is a somewhat unusual purpose of using OCL. The main purpose of OCL is to add precision to a model and formally document information that cannot (appropriately) be expressed with diagrams. The usage of OCL for model checking is a valuable but different usage and I think that Sparx Systems should communicate better that OCL is used for model checking in their tool and not to enrich the model itself.

Another flaw of this approach is that it does not make sense to define an OCL expression that refers to the metamodel at a property in the actual model. The reason is that each and every attribute is modeled as a similar metamodel element and this is defined by EA itself, there is nothing the user of EA can do about it. In other words, an attribute is either always a kind of directed relationship or never but this cannot be defined by the user of the tool and in particular it cannot be defined on a per attribute basis.

Now as I have understood how EA utilizes OCL expressions I wanted to get a feeling for the quality of EAs OCL parser. I created a new class and added an attribute of type String. I then added this constraint (of type "OCL" – EA supports various types of constraints):

inv: size() > 0

This is a valid OCL expression if interpreted at the model level. Now since EA claims to evaluate OCL expressions at the metamodel level, the expression should be invalid because the context object (which should be 'class Attribute' and is implicitly defined by EA) does not have a method 'size()'. After clicking 'OK' in the dialog EA does not display an error message as I would have expected.

Next I tried an obviously invalid expression, which should result in a type mismatch error:

inv: 1 < 'a'

But again I got no error message although the manual says:

"It is important to note that in order to have a valid OCL constraint EA requires that the syntax be correctly formed, if the expression is not correct EA will inform the user that the OCL constraint is not valid."

Hoping that at least during model validation the incorrect OCL expression would be reported I started the model validation. The result was "Validation complete – 0 error(s), 0 warning(s)".

I could not believe that the OCL support was so much broken and searched the EA forums for OCL. I quickly found a couple of postings that confirmed that the OCL support in EA is indeed as bad as it seemed to me, for example in this post (btw., the original poster of this thread did not realize that OCL is used for the purpose of model validation and not in the usual sense).

Now, don't get me wrong, I think that Enterprise Architect is a great software and offers an outstanding price/value ratio. I would heartily recommend it for any modeling project and I have made only the best experiences with their support (yes, we use EA internally). It just seems as if OCL has a very low priority on their internal feature list which probably reflects the customer interest.

As always, comments and feedback are welcome. In particular, if you are interested in a version of Oclarity for Enterprise Architect please let us know.

Best regards,
Andreas