08 March 2013

Concerning concerns

Lately, I have been thinking about the role of concerns in architecting (software, systems and enterprises). The term was used by Dijkstra in 1974, in an often cited quote:
Let me try to explain to you, what to my taste is characteristic for all intelligent thinking. It is, that one is willing to study in depth an aspect of one's subject matter in isolation for the sake of its own consistency, all the time knowing that one is occupying oneself only with one of the aspects. We know that a program must be correct and we can study it from that viewpoint only; we also know that it should be efficient and we can study its efficiency on another day, so to speak. In another mood we may ask ourselves whether, and if so: why, the program is desirable. But nothing is gained —on the contrary!— by tackling these various aspects simultaneously. It is what I sometimes have called "the separation of concerns", which, even if not perfectly possible, is yet the only available technique for effective ordering of one's thoughts, that I know of. This is what I mean by "focusing one's attention upon some aspect": it does not mean ignoring the other aspects, it is just doing justice to the fact that from this aspect's point of view, the other is irrelevant. It is being one- and multiple-track minded simultaneously.
This led to frequent usage of the phrase, "separation of concerns" in software engineering up to the present. Some of those uses have been lip service; in other cases, folks have tried to take concerns seriously.

In IEEE 1471:2000, concerns were first-class entities. That standard, and its current edition, ISO/IEC/IEEE 42010:2011 provides best practices for architecture description.

Architecture descriptions use multiple views. In the Standard, each view of an architecture is expected to explicitly identify the concerns it addresses. This helps to determine whether the right notations are being chosen: e.g., if response time is your current concern, being shown a static class diagram probably won't tell you very much! More generally, associating concerns with viewpoints establishes a 'contract' between the architect and the stakeholders for where to look to get the answers to particular kinds of questions about the architecture.
Concerns subsume other familiar notions such as system characteristics, software qualities, 'non-functional requirements' [a term I dislike].

 Concerns are what we care about in software.

  — Sutton and Rouvellou (OOPSLA 2001)

Concerns are taken somewhat seriously also in the world of aspect oriented programming and its successors in the areas of Early Aspects. This is nicely surveyed by Stanley M. Sutton Jr. and Isabelle Rouvellou, "Concern Modeling for Aspect-Oriented Software Development," a chapter in Aspect-Oriented Software Development (edited by Robert E. Filman, Tzilla Elrad, Siobhán Clarke, and Mehmet Akşit, Addison-Wesley, 2004).

My hypothesis is: 1) that concerns are a missing dimension when thinking about software; 2)  even while taken for granted (without that name) in mature engineering fields; and 3) that treating them as explicit during architecting and engineering has potential to improve what we do. Concerns are useful, not just for selecting suitable representations (as in the ISO standard above), but for defining and carrying out methods and processes, and organizing the bodies of engineering and architecting knowledge among other things.

Concerns are largely ignored in the process and method models that occupy much of current theorizing about software (and systems) engineering. They are not to be found in process models like:

  • Software & Systems Process Engineering Metamodel (SPEM)
  • ISO 24744, Software Engineering Metamodel for Development Methodologies (SEMDM)
  • ISO/IEC TR 24774, Software and systems engineering — Lifecycle management — Guidelines for process description

Recently OMG issued an RFP, Foundation for the Agile Creation and Enactment of Software Engineering Methods, that at least mentions concerns in its requirements:  Specification of practices
The Language shall have features for specifying practices in terms of Kernel elements, including:
a. Description of the particular cross-cutting concern addressed by the practice and the goal of the application of the practice. ...  Composition of practices
The Language shall have features for the composition of practices, to describe existing and new methods, including:
a. Identifying the overall set of concerns addressed by composing the practices. ...
d. Modifying an existing method by replacing a practice within that method by another practice addressing a similar cross-cutting concern. 
There is much more to say about this topic. Watch this space for a paper on these ideas. In the meantime: "In search of the Higgs, or What's wrong with SEMAT?" Work-in-progress, comments appreciated!

24 February 2011

Meditation on metamodels

This blog has been quiet for ahile.
Here is a little meditation on the use of metamodels in architecture frameworks.
It names names and quotes quotes.
If you are a fan of DoDAF, MoDAF or NATO AF, you probably won't like it.

Comments appreciated.

On metamodels (pdf)

02 April 2010

For Free

British Library Direct sells for £16.00 copyright fee + service charge (from £8.10) + VAT access to a paper of mine, that you can have for free!

Assuming you are interested in "Using aspects for architectural description", here's the link:

Using aspects ...

03 October 2009

Oh the Irony

Back in 1999, I wrote a paper for the First IFIP Working Conference on Software Architecture, entitled "Views and viewpoints in software systems architecture". If you are interested in that sort of thing, you can find it here

It had a nice history of the idea of "views" in software architecture, surveyed precursors to that notion from software engineering, and examined the ideas in (then-current) use. It's a bit polemical in places (there was an on-going debate at the time about software architectures described with multiple views vs. a single dominant structural organization of components and connectors).

Today we know a lot more about views and viewpoints, and it could use a refresh or update, but that is not the point of this story.

The paper is rarely referenced, so I was surprised to find it cited by a US patent examiner: US 7,043,695 in a 2006 patent on "Object positioning and display in virtual environments"! Nothing to do with software architecture views and models!

The morale, if there is one? Our patent system is out of control.

Please join the League for Programming Freedom, and help fight software patents.

24 March 2009

Ada Lovelace Day: Role Roll Call

If you've been under a rock for the last few months, perhaps you don't know about Ada Lovelace Day, 24 March (see http://findingada.com/ ). On that day 1678 (at last count) pledged to blog about a woman who is a role model in technology.

Today is the day and this is my blog contribution. For the past two months I've been making lists, trying to pick from the women I know of, have worked with and been inspired by just one to blog about. But it has been too hard to pick just one person, so I have made a list. Call it my "role roll call". I'll be micro-blogging the roll call throughout the day (on identica and twitter) and then capture it here at the end of the day.

You can follow the day's proceedings here (nice mashup).

Here's the Role Roll Call, as it unfolded on 24 March:

#ald09 Let the role roll call begin with: Augusta Ada King, Countess of Lovelace, programmer of the analytical engine.
6:21 AM Mar 24th from Identica

#ald09 Christine M Anderson, Ada 95 Project Manager.
6:46 AM Mar 24th from Identica

#ald09 Nancy Leveson, pioneer in software safety, great work which I've used often.
7:05 AM Mar 24th from Identica

#ald09 Judy Goldsmith dancer, computational complexity (which I mostly got) now Bayesian stuff (on which I've no clue!).
7:54 AM Mar 24th from Identica

#ald09 Jean E. Sammet, IBM, ACM president. we met on IEEE Ada as Design Language committee.
8:16 AM Mar 24th from Identica

#ald09 Judy Clapp, my first manager at MITRE.
9:04 AM Mar 24th from Identica

#ald09 Tanya Reinhart, linguist, Israeli peace activist, classmate. dearly missed.
9:36 AM Mar 24th from Identica

#ald09 Carolyn L Talcott, formal reasoning, distributed systems, program transformation and reflection.
10:51 AM Mar 24th from Identica

#ald09 Wendy Carlos, I wish I could play my Moog like that!
11:26 AM Mar 24th from Identica

#ald09 Christine Hofmeister, chair IFIP WG 2.10 Software Architecture, colleague.
11:46 AM Mar 24th from Identica

#ald09 Myra Jean Prelle | concurrent | parallel | distributed | computing
12:31 PM Mar 24th from Identica

#ald09 Mary Shaw (CMU), colleague, pioneer in software architecture, software engineering education.
12:54 PM Mar 24th from Identica

#ald09 Chloe O'Brian, that tough, smart intelligence analyst on 24 (played by Mary Lynn Rajskub)
1:29 PM Mar 24th from Identica

#ald09 Karen Lease, XML sorceress.
1:48 PM Mar 24th from Identica

#ald09 Nancy Lynch, distributed computing.
4:40 PM Mar 24th from Identica

#ald09 Janet Baker, entrepreneur, Dragon Systems founder, Balkan folk-dancer.
4:42 PM Mar 24th from Identica

#ald09 Maretta Holden, software engineering lab manager and researcher at Boeing for many years.
5:19 PM Mar 24th from Identica

#ald09 Patricia Lago, architectural knowledge and its representation.
5:54 PM Mar 24th from Identica

#ald09 Adele Goldberg, Smalltalk-80, ParcPlace Systems.
6:27 PM Mar 24th from Identica

#ald09 Kathy Land, president IEEE Computer Society.
6:39 PM Mar 24th from Identica

#ald09 Judy Stafford (Tufts), software architecture, software testing.
6:51 PM Mar 24th from Identica

#ald09 Margaret Minsky,
7:18 PM Mar 24th from Identica

#ald09 Valérie Issarny (INRIA), coordination, multi-policy security, trust management...
7:34 PM Mar 24th from Identica

#ald09 Barbara Liskov (MIT) 2008 Turing Award, data abstraction, subtyping, distributed computing.
7:47 PM Mar 24th from Identica

08 January 2009

Watch this space: Ada Lovelace Day

Here's a worthy cause for which to dust off this idle blog.

"I will publish a blog post on Tuesday 24th March about a woman in technology whom I admire but only if 1,000 other people will do the same."

— Suw Charman-Anderson

Ah, Ada. My first long-term technical love affair (well, there was that thing with Lisp, but that is a story for another time). Ada is such a cool language — fine-grained, object-oriented concurrency — There, I said it out loud!
If we were using Ada, would the industry rags be talking about a "multi-core crisis"? I don't think so...

Take the pledge here
Read more here

25 July 2007

Impressions of Facebook

In between consulting gigs and standards meetings, I've gotten interested in social networking, web 2.0, and other recent buzz. I started using del.icio.us to share my bookmarks, and Twitter, and got busy with my LinkedIn account (which had been idling around 8 contacts for a long time).

The biggest buzz lately is around Facebook. Some kind of tipping point has been reached on this very recently. There are impressive growth numbers for Facebook, articles about Facebook elbowing out LinkedIn, and Facebook announced new platform APIs a few weeks ago. I figured I'd better join Facebook if I wanted to understand what the APIs can do. So, I'm a Facebook user for the last week (and I already have 4 friends; I guess I haven't tried very hard :-)

These are some initial impressions on using Facebook.

Profile. So I joined and I am presented with some forms to fill out for my profile. The basic profile questions are definitely left over from Facebook's days as a college dating service: Interested in: Men? Women? Relationship status: (my favorite choice was, "It's complicated". I could answer most questions people ask me with that). Then there's Looking for: Friendship, A Relationship, Whatever I can get, Dating, Random Play. Contrast this with the LinkedIn choices: consulting offers, new ventures, expertise requests, business deals, reference requests, getting back in touch. In either case, the choices are pretty limiting; predefined fields don't do much for me, and I don't enjoy filling them out. Especially the personal ones: Interests, Activities (and what's the difference between those two?), ... I would love to see a tagging interface, where I can pick tags or create my own, both for the categories and my answers.

Persona. Filling out the profile, I don't know what persona others will see. It's hard to tell what is visible to whom. And I don't yet know who "whom" is -- I'm just starting out: what's a network? what's a group? Which ones might interest me? What will they see about me?

Finding friends. The means for finding contacts (address books and selected email providers) does not give me a warm fuzzy. Maybe I'll upload an exported version of my AddressBook, so Facebook can search through it. Yawn.
I manage to find exactly 2 people thanks to my google mail address book, and AIM buddy list. So I invite them...
I ask myself, well what else can I do? I can post a picture of myself, but still don't know what my "page" looks like. I can write stuff on "The Wall". What's that? Who sees it? Everyone? My (then zero) friends? And what's a Poke?
Until you can participate in the community, it's hard to see what kinds of things you can do ....

User Interface. I haven't figured out how to rearrange the layout of my page. (Do they call them pages?) It would be nice if I could apply my own CSS stylesheet. On searches, and stuff, I really dislike the 10 items at-a-time view limitation. Maybe it's settable somewhere.

There's a hard limit on number of networks you can be a member of (5) and on how many groups you can participate in (200). I guess that's no big deal; at least not for me.

Enough for now. I'll add to this as I keep playing.

[For another time: Is Facebook the new Lotus Notes? (Anyone out there who wants to tackle this?)]

Next post: Facebook and NING APIs compared and contrasted.

18 April 2007

Survivalism: Remixed

Do you like Nine Inch Nails?
Do you like dub?
Well, then you probably won't like my dub remix of NIN's "Survivalism" with Mad Professor's "Vikings Dub".
Trent Reznor was nice enough to release the Survivalism tracks in GarageBand. Mad Professor posted Vikings Dub to the Reason site back in the day. All I did was combine them ...

Now available on The Official NIN Remixes site:
Survivalism (Vikings Dub mix)

Vote early and vote often; and tell your friends!

07 April 2007

Three Signs Easter is Near

First, it snowed 12+ inches on (Maundy | Holy | Great) Thursday. So it was a good day to stay indoors, fight a cold or something like it, work on websites that needed working on, and create a large pot of black bean soup for supper (hoping it is not the Last).

Second, as recently communicated to me, there is increased recent interest in research on Peeps.

Third, of course, it is time for the Pop Culture Association National Conference, which always seems to fall on Easter weekend. PCA is a treasure trove of quickly tossed-off papers on curious topics, looked at from an academic perspective. Here's this year's monstrous program, which I analyze below.

Where else can you study vampires; republican sex scandals; romance, mystery and detective fictions; Harry Potter and Robert Heinlein (yes, I know one's a character and the other's a sci-fi author; one is dead and the other isn't—yet); South Park and The Colbert Report (I suppose Comedy Channel could have a whole track of its own. "HBO Drama" did get its own session with papers on Deadwood, Big Love, 6 Feet Under and Sex and the City.); pirates; conspiracy theories, renaissance fairs, whew! They even turn reflective, with several sessions on "Academic Culture".

Somehow Borat some slipped under the radar at PCA; but there was at least one paper on Ali G.

There wasn't as much sex on the program as I would have hoped for, and what there was was filed under "Eros". But it's often "bad sex": "Pornifying Little Girls: Contemporary Fashion for Elementary School Girls" (Mardia Bishop, Shorter College), or sex I wouldn't want to partake in, e.g.: "Bushwacking: Porn and Politics" (Susan Cocklan, Virginia Commonwealth University) or "A Pornographic Version of Car Talk: Howard Stern and Conservative America" (Ann C. Hall, Ohio Dominican University). Thank goodness for "Super Sexy Selene and Her Kick-Ass Ways: Underworld and the Evolution of the Cinematic Vampire" (Mary Findley, Vermont Technical College).

An attendee pointed out to me there seemed to be more sessions on Fat Studies than Womens, Gay, or Post-colonial Studies. I guess they have their own conferences these days.

Adaptation seems to be a big theme. What's up with that? Perhaps it's subconsciously observing the category-theoretic dictum: Follow the Functors.

Some favorite titles:

  • “Sailor Moon Made Me a Third Wave Feminist!”: How a Group of Magical Girls Were in the Right Place at the Right Time for the Start of a New Feminist Identity (Stacy Rue, Independent Scholar)
  • Cheese in 18th-Century Massachusetts: Methods, Techniques, and the Challenges of Researching Popular Culture (Kristina Nies, Boston University) [In fact, Boston University cornered the market on Food as Pop cultural topic with a whole panel.]
  • Issues of Spectatorship in Stalker/Slasher Films (Yang Lin, National Taiwan Normal University)
  • “Liquor Bags and Lawn Chair Strapping”: The Aesthetics of Poverty in Trailer Park Boys (Dean DeFino, Iona College)

How about a panel on "popular rhetorical technologies"? Oh my, we're talking about Facebook and Myspace and I guess blogging .... No papers yet on twitter, or alternate reality games (wrong! see the Digital Games track...)

Some papers I wish I had heard:

  • The Wife of Bath and the Man from Mars: An Overview of Classic Literary Allusions in Select Heinlein Novels (Lisa N. D’Amico, Wichita State University)
  • DIY Snark: The Rhetoric of “Bad Craft” Blogging (Priscilla Perkins, Roosevelt University)
  • What Archetype is Your Avatar? (Dona Bailey, University of Arkansas at Little Rock)
  • There was a whole panel, Embedded Culture: Instructional Media in Fishing, Hunting, and Golf; with papers on, yes, trout fishing, bass fishing, hunting and golf.

I wish humanities were like computer science, and I could get those papers via google...

Did you ever notice how many papers in certain fields frequently have titles of the form: A B C: X Y Z? i.e., they are colonized (see several examples above). Where did that pattern come from anyway? Anyone know?

I'll be sketching and circulating a paper, working title: Trendy Topics and Troubling Tools: themes and methods from PCA, for your commentary, Real Soon Now — not!

19 March 2007

Aspects and Architecture

Finding myself with free time between consulting gigs, I've been thinking about aspects. Aspects are a very active research topic in computer science and software engineering for addressing crosscutting concerns.
Here's a non-computing analogy: imagine you are writing an outline about something that interests you. You've got 5 or 6 top-level categories, and you've refined each of them to several levels. Inevitably you find some things that either: (A) don't fit in any of those categories, or (B) rightfully belong under more than one! So maybe you add some categories, rearrange things, and guess what? You run into A and B again, and again! This happens perhaps because most things that are interesting at all can't be easily described in a single way.

Aspect-Oriented Programming. Well, maybe this is no big deal when making outlines, but it can have a big impact on software development. The impact comes from the same situations: the same code needs to be replicated in numerous places and gets tangled with other code, making it hard to maintain. Gregor Kiczales and colleagues developed the ideas of aspect-oriented programming (AOP) to address these problems back in the 1990s at Xerox PARC.

Aspects in Architecture. My particular interest is whether the insights of AOP have any use in clarifying the descriptions of software systems architectures. To that end, we organized a workshop First Workshop on Aspects in Architectural Description at the AOSD 2007 conference, and gave a paper trying to cast aspects into the conceptual framework of IEEE 1471, at the Early Aspects workshop.

AOSD 2007. I really enjoyed the AOSD (Aspect-Oriented Software Development) 2007 conference. It was held in Vancouver, BC—always a nice place to visit (more on this below).
Monday we held our workshop on aspects in architectural description. My co-organizers were Paul Clements, David Emery and Philippe Kruchten—all smart, fun people to work with. It was a small, very interactive workshop of 15 people. The papers and discussions were very thought-provoking. A summary will appear on the workshop website.

Tuesday was the "Early Aspects" workshop. Again, a very thought-provoking collection of talks and discussions, with a wider focus than just architecture, to include requirements and design. Anthony Finkelstein gave the keynote (and participated in our workshop on monday). His ideas are very compatible with the multiple views approach taken in software architecture and he has tools to support that approach. In fact, he coined one widely used notion of "viewpoint" back in the 1990s which was an important insight we used in IEEE 1471. (More about views and viewpoint some other time.)

AOSD has largely a research focus, with some industrial participation; it was very nice to talk with young researchers and see what they are up to. It was fun to be an ancient industry guy and make pronouncements like:

It's nice you are studying ADLs (architecture description languages) and inventing new ones, but remember almost no one in industry uses ADLs: most architectures, if captured at all, are written down with Powerpoint or maybe UML.

It reminded me of the spirit of early OOPSLAs. There is a lot of work on using aspects in requirements engineering, including a number of tool demos. Two of my favorites were from Lancaster University: MRAT (Multidimensional Requirements Analysis Tool) and EA-Miner. Thomas Cottenier presented some very impressive work on model weaving for a (real) software project at Motorola.

The thing I did not hear at AOSD were any new conceptual insights into aspects. The community seems to be in a consolidation phase, extending the aspects metaphor to design and requirements activities. Also, there is still some conceptual fuzziness: one that particularly confuses me is the blurring of concerns (which I think of as naming problems to be solved) with aspects (which I think of as packaging the solutions to those problems).

Sundries. Vancouver is a great town for restaurants. I did not get to as many as I might have, because AOSD provided breakfasts and lunches, and two evening receptions which included plenty of good food. The Early Aspects workshop had a group dinner at a nice Greek restaurant nearby, Kalypso. One of my favorite cafes is in Vancouver: Caffe Artigiano.

My return to the east coast was somewhat disrupted by a winter storm—which gave me chance for a stop over in San Francisco: long enough to visit friends in Mountain View and have a very nice super at a new Chinese-Indian fusion restaurant, temptations.