Welcome

  • This is the blog for Intentional Software Corporation. We keep it open for comments as we seek a dialog with the community. Each participant will be trusted to participate with integrity, decency and respect for others.
  • Visit Intentional Software Corporation

« Hungarian notation | Main | Appropriate Levels of Abstraction »

August 09, 2005

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/services/trackback/6a00d83451741069e200d834520bd153ef

Listed below are links to weblogs that reference Getting the experts involved:

Comments

Petr Pan.

In brief (if I understand it well enough), there is a wide gap between the user's/customer's/domain expert's/non-programmer's informal specification and the programmer's formal solution. One way to bridge this gap could be to give the user a tool (domain editor) by which she can express her requirements (use-cases) and thus she can directly participate on the development process that in turn saves programmer's expensive time.

BTW, the same idea was already published, eiher on http://osl.iu.edu/~tveldhui/papers/dagstuhl1998/
or on http://radio.weblogs.com/0114989/2003/03/09.html
and personally, the best it was summarized in this great Sergey's article - http://www.onboard.jetbrains.com/is1/articles/04/10/lop/

I'm sure, you know all these articles. However, what none of them answers and what is the most crucial part, is the WAY to enable this - non-programmers are not usually used to write or speak in formal way.
I'm eager to see what JetBrains and you are up to ;-)

Magnus Christerson

Hi Petr,
We have two things going on here:

First, the subject matter experts are usually perfectly capable of expressing their domain knowledge with fine precision as long as it's expressed in ways they are comfortable with, in their comfort zone. They have very detailed domain knowledge, and they are usually happy to express it in fine detail. For example, in the insurance system I mentioned above, the subject matter experts could define the various insurance policies, their commission structures, and the relevant legislations all in extraordinary detail. However, once we ask the subject matter experts to express themselves in ways that is more programmer friendly, or computable, they shy away; this is not their comfort zone, and this is a barrier. Use cases are bridging this gap by having a structure that is both friendly to the subject matter experts as well as directly usable by the programmer. Use case editors have been around for 15 years - I was involved in building the first one in the Objectory tool, and it was very succesful. Subject Matter experts are very comfortable working in semi structured text, complemented with simple graphics. However, the result of these use case editors are not processable in a general way as they rely on text, or simple node-arch type diagrams. So the content needs to be derived by the programmers through a conversation with the subject matter expert. This works, but there is a manual, subjective and non-processable step involved here.

Secondly, the demand for domain specific languages and language oriented programming are coming from the other direction; from the programming side of things. They typically support a computable language or at least processable language. Domain specific languages are already used by programmers, and will be even more so with the emerging language workbenches, to express suitable abstractions for the software to be built.

It is in the intersection of these two trends we see an oppurtunity. By staying in the comfort zone of the subject matter experts, but doing it in a way that is also directly usable by the programmer using generative programming techniques.

Fidelio

I think I understand your goals like having domain specific editors, getting in the experts and (my favorite) machine processable domain code:. Last one is the top and #1! Kicking our sales guys from Word and Excel to a well defined representation would be awesome...

Actually, the path and the tools are vague for me, so let me raise some questions:

What is the value of a monolithic intentional editor? What is the difference between the intentional editor and having a separate domain specific editors that outputs (standard?) domain code?

What do you mean on configuring your editor? Having a set of 'mini' editors that is put together for a specific domain or completely separate domain editors within intentional editor? For the latter case I guess you have a meta editor for editing domain editors, which is uhh.. edited by itself:)

Anyway, I can't imagine the intersection of all domain editors. Is there anything more than the operating system features?

thanks, fid

Magnus Christerson

Hello Fidelio,

The key to the puzzle is the common underlying representation for all domains - domains are distinguished mainly by the projections in which they are displayed.

"Monolithic" is not the impression that we create to the user, but it is technically correct - once the projections are different, the operations on the underlying representation can be identical in most cases. This makes it possible that a new domain can start with its "own" editor very rapidly, and benefit from undo, change history, names, integration etc.

When we talk about "configuration" we mean mainly the schema definition for the domain including the definition of the projections, the notations, although other aspects of the editor can be made domain specific as well.

Zoltan "Hypo" Radanyi

I think Magnus Christerson’s August 9th entry (“Getting the experts involved”) was the best explanation of intentional programming for laypeople so far. It made me wonder, however, whether the design of your web site itself couldn’t be used to clarify and reinforce the intentional software message. Given that design elements themselves are a kind of symbol system, clarity and consistency here might be helpful not just from a usability point of view, but in exemplifying the benefits of non-arbitrary codes and nomenclature. I was also thinking that some interactive illustrations of use cases, perhaps based in part on the graphical models of Alistair Cockburn (whose work I’ve only just found on the Internet) might help give visitors a better idea of the goals of intentional programming. As it stands now, the site doesn’t really generate the excitement you would associate with a programming revolution; it seems directed more at generative and aspect-oriented programmers (the already converted) than at the subject matter experts it’s designed to benefit, and the look and feel is a bit more like the past than the future. There’s got to be a better way to show “what you know but cannot prove” — that there’s a revolution going on in software development.

The site underwent some changes several months ago, and I think they were all for the better. The division of the pages into three parts (with the menu on the left), was one improvement, as was placing introductory excerpts of the most recent news articles on the home page. From a design point of view, I really like the logo, but I think it could be used more, and in more creative ways. For example, the first letter of the title of each page (e.g. “N” for “News” or “T” for “Technology) could reprise the logo by being inverted, boxed or highlighted in the same color as the original. This allusion would help keep the message of visible intentions alive beyond the home page.

Web sites do a better job of capturing and holding the visitor’s attention when the user sees the entire homepage at a glance and scrolling is neither possible nor necessary, the page itself providing the user’s focus. This could be accomplished by optimizing the resolution for the average user, but your home page lacks a central element, the kind of thing you would want users to focus on. (Generally, links to news articles, blogs and the like are not centerpieces, but, as supplemental information, are placed elsewhere.) The visual center could be provided by an image which suggests the values you’re striving for — for example, if Intentional Software is committed to facilitating the free flow of ideas in recognizable form from the minds of experts to programmers’ code and back again, an image could be chosen that would represent fluidity and unimpeded communication — at the simplest level, maybe a picture of a programmer and an architect looking together at a single screen shot, the proverbial “same page” for both parties to “be on”. (It wouldn’t have to be so literal, of course.)

A lot could be done with this site, both in the way the site provides information to the user (i.e., its plot or narrative, which could be adapted so users go through the site in a more determined order, creating both a bit of suspense and some insights into the possibilities of intentional programming), and with regard to the details. Design details often seem like nitpicks, but they’re important: for example, there needs to be consistency concerning font colors and sizes on the one hand, and information type and heading level, on the other. If links are in dark blue throughout the site, then this color shouldn’t be used for blog excerpts. If the home page introduces a color scheme where gray is dominant, the rest of the pages shouldn’t be predominantly black text against a white background. There is no logic here in the variation in font formats, colors and sizes, rendering these variations meaningless and clashing conceptually with the Intentional Software message of meaning made manifest in code (as I implied at the outset). I should add that, from a usability point of view, the light blue text is hard to read against the gray background.

As for the “big picture”, this might better be done by showing rather than telling. A semi-ordered progression through the site with interactive demos and explanation along the way is one possibility. But if an interactive feature involving some kind of intentional or use case editor isn’t feasible, then how about an animated simulation showing subject matter experts how intentional programming streamlines workflow, how collaboration is facilitated when the code needed to execute it isn’t a foreign language? (I’m imagining something like this: a comparative diagram showing two animated use-case flowcharts, one depicting traditional workflow and one depicting “intentional” workflow.)

As a designer without much of a background in programming, I’m all for comprehensible code and helping laypeople work more efficiently. When a friend showed me the “World Question” article eight or nine months ago, I found it interesting, but then when I got on your web site I was a little disappointed. When I went to the site again a few months later, I noticed some improvements and began thinking of ways it could be improved further. I know it’s a lot easier to tear down a house than it is to build one, but I’d imagine anyone who can challenge the whole programming industry can take a little respectful criticism.

Hypo

Michael Clagett

One of the questions that keeps surfacing in my mind as I read through your blog and also as I read through Martin Fowler's series of articles and his example of creating a domain-specific language with MPS is this:

It is true that in a great number of domains (perhaps every domain) there is a domain language that practitioners and subject matter experts use to characterize what it is that they do. It is not always so clear, however, what it is that end users want from their software. My experience is that many times they don't even know themselves or that at the very least there is an elaborate dance involved in integrating the visions of multiple parties who are often operating themselves at different levels of abstraction and with different and conflicting vocabularies. And in reality the process of domain engineering is only part of what we do when we capture requirements and drive forward to a picture of an intended piece of software. So not only is it a matter of capturing the language and vocabulary that can be used to express intentions, but also of helping business people refine and elaborate the intentions themselves.

Given this, sometimes the picture that y'all are painting strikes me as a bit of a chicken and an egg thing. Is the idea to work with business people first in a domain engineering capacity to come up with the language and editors that will then permit them and us software engineers to explore their requirements? Or does the work on domain-specific languages and the appropriate editors happen in the course of a larger "problem engineering" effort, hand-in-hand, say with a requirements capturing and elaboration toolset. And if this is the case, wouldn't you need the type of product you are describing to be integrated with good requirements capture and refinement tools, along the lines of what is articulated in the UML standard?

A related question is, if what you are doing is capturing the abstract syntax tree of a problem/solution description and projecting various views of it to your product's users, how can you along the way capture the abstractions and refinements that lead you to that problem/solution description? These will almost by definition not be expressed so cleanly in the language of the domain but will include all sorts of confusions and imperfections that ultimately hopefully will help lead to a precise domain language, but certainly cannot be expected to be at that point from the start?

In a response to one of the comments above, you note that "the subject matter experts are usually perfectly capable of expressing their domain knowledge with fine precision as long as it's expressed in ways they are comfortable with, in their comfort zone." Even if that is true for domain knowledge (which I'm not so sure it always is), the question of hammering out the vision of a software solution is a somewhat separate matter.

So in the end, I guess one of my questions is how you see your products and tools integrating with other tools that might be being used to help model a problem domain and a solution space?

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment