{"id":4509,"date":"2015-03-08T00:41:04","date_gmt":"2015-03-08T00:41:04","guid":{"rendered":"https:\/\/modeling-languages.com\/?p=4509"},"modified":"2017-09-06T19:24:50","modified_gmt":"2017-09-06T19:24:50","slug":"can-model-requirements","status":"publish","type":"post","link":"https:\/\/modeling-languages.com\/can-model-requirements\/","title":{"rendered":"Can you model requirements?"},"content":{"rendered":"

As much as we all like modeling (why else would you read this blog?), requirements won’t go away any time soon, especially the kind written in prose: All stakeholders understand them (or can pretend to do so), and they can be jotted down quickly. SysML acknowledged the need for requirements by including them as a first-class citizen.<\/p>\n

But look at industry, especially where safety-critical systems are developed, like cars or trains.\u00a0 Requirements tools like IBM Rational DOORS or PTC Integrity are prevalent. Why? I think there are a few reasons.\u00a0 First, requirements are still reviewed in a linear fashion, especially for reviews. They like the document metaphor.\u00a0 They also like to include all kinds of information: Notes, pictures, etc, \u2013 some requirements, some not.\u00a0 It is also not unusual for a supplier in the car industry to receive tens of thousands requirements from the manufacturer.\u00a0 SysML requirements have not been designed for this scale.<\/p>\n

Taking this into account, it is not surprising that OMG, the body that standardized SysML, published another standards a few years back, theRequirements Interchange Format (ReqIF)<\/a>.\u00a0 While it was initially designed just for the lossless exchange of requirements, it has been recognized as a great way for modeling requirements as well.<\/p>\n

ReqIF is actually quite simple<\/a>: It consists of a hierarchical requirements structure.\u00a0 The requirements can have an arbitrary number of named attributes, using a simple type system that includes plain text, formatted text, enumerations and some more.\u00a0 And it supports traces between the requirements.\u00a0 The traces can also have an arbitrary number of attributes.<\/p>\n

Even though it is simple, it hits the sweet spot between completely unstructured requirements and pure requirements modeling.\u00a0 In fact, all serious requirements tools now support data import and export as ReqIF.\u00a0 This is a huge argument for organizations with an existing tool infrastructure: They can continue using their tools, but add new ones that previously had no interoperability.\u00a0 This opens the door for a tighter integration of requirements within system engineering environments.<\/p>\n

With the Eclipse Requirements Modelilng Framework (RMF)<\/a>, there is also an open source reference implementation of ReqIF available, which has been around for a few years now (please g+1 us on the top of that page!). As it is part of the Eclipse ecosystem, RMF has been used to demonstrate how seamless model integration can be realized with other Eclipse-based modeling tools like Papyrus<\/a> or Rodin<\/a>.\u00a0 The following screenshot shows the integration of an Event-B (Rodin) model, with color highlighting and tracing into the model.<\/p>\n

\"Integration<\/a><\/p>\n

I can already hear the objections: “What about OLSC<\/a>? Hasn’t it been designed for exactly this purpose?” Yes, it has, but based on a very different approach.\u00a0 OSLC assumes a loosely coupled environment, where data is made available through services.\u00a0 ReqIF works better in a file-based environment. There are organizations that like to put their artifacts in a repository like Subversion and git, and ReqIF is well-suited for this.\u00a0 Also, it allows asynchronous exchange across long distances, without a data connection.<\/p>\n

To sum it up: Yes, requirements can be modeled, and there is more than one modeling language to do so.\u00a0 ReqIF may not be the most sophisticated one, but it has industry acceptance, a solid open source reference implementation, and it provides interoperability with many commercial requirements tools.\u00a0 Please check it out!<\/p>\n<\/span>","protected":false},"excerpt":{"rendered":"

Discover the Requirements Interchange Format (ReqIF), an OMG standard commonly used to model requirements, and the tools that support it<\/p>\n","protected":false},"author":43,"featured_media":4511,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[39],"tags":[202,201],"hashtags":[],"_links":{"self":[{"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/posts\/4509"}],"collection":[{"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/users\/43"}],"replies":[{"embeddable":true,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/comments?post=4509"}],"version-history":[{"count":0,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/posts\/4509\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/media\/4511"}],"wp:attachment":[{"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/media?parent=4509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/categories?post=4509"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/tags?post=4509"},{"taxonomy":"hashtags","embeddable":true,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/hashtags?post=4509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}