Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

use of UML vs ExampleScenario #4

Closed
JohnMoehrke opened this issue Apr 8, 2020 · 9 comments
Closed

use of UML vs ExampleScenario #4

JohnMoehrke opened this issue Apr 8, 2020 · 9 comments
Assignees

Comments

@JohnMoehrke
Copy link
Contributor

It is agreed that using UML diagrams is sufficient today, where it might be possible that a future design might leverage or enable use of ExampleScenario. Today ExampleScenario is too immature and too difficult for the typical IHE author to use effectively.
Please comment

@costateixeira
Copy link
Contributor

ExampleScenario is not a replacement for UML diagrams, but a way to get those diagrams.
We could make our own model, but I don't see why we'd make our own model (which would be by definition less mature than ExampleScenario?)

@ElliotSilver
Copy link

Although I agree that ExampleScenario and UML are not equivalent, I also agree that ExampleScenario is too immature at the moment. I would suggest going forward using UML supplemented by various other "pieces" rather than wait until ExampleScenario is complete and mature enough to encapsulate all our needs.

@costateixeira
Copy link
Contributor

There are 2 different things:

  1. Using diagrams
  2. Using ExampleScenario.
    These are not the same. ExampleScenario can be used to generate pages and diagrams for examples, but there are other pages and diagrams needed - transaction diagrams, actor diagrams..

Assuming the point is about examples, there are currently at least 4 ways to generate diagrams:

  1. Using any tool Powerpoint, visio, plantUML... and copy-pate the image into the source.
    http://build.fhir.org/ig/hl7-be/be-core/branches/master/logical-models.html

  2. Somehow embedding the PlantUML source so that the IG generator can render those as diagrams. Like what github does, here is one example: https://github.com/costateixeira/ig_templates (check the readme)

  3. Use FHIR resources (ExampleScenario, etc) and let the publisher generate the diagrams (ideally using the IG template, not additional tools)
    example here:
    http://build.fhir.org/ig/hl7-be/be-core/branches/master/scenario-allergy.html

  4. Define a custom XML format for the examples (like Keith did for now) and use our own tools to render the diagrams.

Options 1 and 2 are never excluded - we can do that now and keep doing that later.

Option 3. uses the standard mechanism and adds the FHIR built-in verification. I have the transformation tools, and I could use them in this template, but we always go back to not requiring people to use additional java tools.

Option 4 is a custom format that requires tools, which I'd say is not mature.

In any case, I don't see which of our needs are missing in ExampleScenario... Which ones?

@keithboone
Copy link
Member

A UML Diagram is but a part of wider documentation. If you just generate UML but no text to go with it, you've communicated poorly and only about 1/3 of the audience will get any of what the diagram is trying to convey. There needs to be text to go along with what the diagram communicates, and parts of that text are associated with different parts of the diagram. Thus, a larger structure can be used to represent the content. Such a structure can be used to generate both the diagram and the accompanying content.

I spend about a week coming up with a model that can work and be used to generate sequence diagrams (one type of UML) for use cases in Volume 1. I spent another week working on a structure for Transactions in Volume 2, which includes the UML, and a lot of the volume 2 content.

These were purpose-build XML structures not informed by ExampleScenario, built iteratively to document IHE profile content for use cases in volume 1, and transactions in volume 2.

I can (and did in about 15 minutes) map the element of that custom XML in SANER projects to ExampleScenario with a one-to-one, and onto mapping (in other words, a reversible mapping) meeting the syntax and semantics of ExampleScenario.

I cannot do quite the same with ExampleScenario for volume 2 content, as ExampleScenario is missing content to support some of the details we use to describe content with sufficient detail to generate things like CapabilityStatements (which I've managed to automate). ExampleScenario however, is close to what is needed, but there's a lot more detail in a transaction than there is in a use case.

I'd go with option 3 for a long term approach, and I wouldn't limit it to using ig-publisher based tools, because those require working with things like Jekyll which right now still have inconsistent results (e.g., bugs) when applied to things with any complexity.

As for the immaturity of ExampleScenario, I don't find that to be a handicap. It perfectly fits use cases as we use them, it's pretty close to what we need for a lot of transaction, and we should be able to INFORM what happens to it as it matures, AND help establish the maturity desired.

@JohnMoehrke
Copy link
Contributor Author

I understand the desire to have one artifact (keith magic xml, Jose ExampleScenario) that produces many narrative, graphics, and artifacts... This has a nice benefit of write once, and limits the synchronization of changes. However it has a huge drawback of being a single purpose mechanism. That is to say that Keith understands his xml and his xslt really well, but no one else does. Jose understands ExampleScenario, but no one else does. Yes others can learn, as evidence by Keith last message in this thread. But that doesn't increase the population of people that understand the mechanism by much.

Where as editing in MarkDown, graphics in UML, even test scripts in Cucumber, are all mechanisms that are used in the wider engineering community. Thus there is much more likelihood that someone can come in and use them; or do corrections upon them.

I am for #2. Surely for the short-term, but likely for the medium term too

Long-Term - I am more for identifying that we (IHE) have a need, we have a solution, and working with HL7 on a consensus solution that both HL7 and IHE use for this challenge. I recognize that HL7 might choose the ExampleScenario solution, but if they do then they have addressed my first concern as at that point more than Jose will understand ExampleScenario.

A concern I have with ExampleScenario is that it is not useful only for the abstract example scenario used to drive the profile definitions of actors, transactions, and interactions. I believe it is also useful for expressing alternative flows, edge cases, failure-modes, etc... as such using it does mean that one needs to express to the IG build which instance is for the abstract (logical) model; and which are for abstract (logical) options or optional flows; and which are simply there for testing support.

@costateixeira
Copy link
Contributor

costateixeira commented Jun 12, 2020 via email

@JohnMoehrke
Copy link
Contributor Author

do we need to choose? Can we support/recommend use of UML and ExampleScenario? Might we only need to differentiate between the two?
Are either of these supported in the build tools? I have not been able to figure out how to get UML code to render, so have been saving the image-source and doing my own rendering with plantuml.

@costateixeira
Copy link
Contributor

costateixeira commented Jul 8, 2020 via email

@JohnMoehrke
Copy link
Contributor Author

ihe-fhir wg discussed this and concluded that UML diagrams should be sourced in PlantUML code syntax or ExampleScenario.
The IG Build tool is integrating PlantUML rendering engine to support both of these. (TBD how to use it)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants