Thursday, October 18, 2012

End-user Architecting

Instead of Intro

Software is eating the world. It's everywhere these days: all those computing devices around us are not trivial electronics anymore. They provide computational platforms for the more malleable and complex substance of software. On the one hand, we just got ourselves a new pain. On the other hand, we can now achieve much more with little cost.

Many companies, who stayed far away from the traditional computer business, are now in the business of writing software. Banks, casinos, hospitals, supermarkets,  car manufacturers, and many others. Moreover, their competitive advantage now depends on how well they handle software development. Outsourcing, being a tricky thing on its own, helps fewer companies than we would expect. Who wants to give away their critical IP (making it a potential lawsuit subject) and completely rely on third parties in very sensitive and specific tasks that span the whole business?

The described tendency results in plenty of non-professional programmers (end users) writing code. A vast majority of scientists and engineers write lots of low-level code. People who handle data face the challenges of spreadsheets and SQL. All that without really knowing the pitfalls of software engineering, which are internalized by students in software-related classes. In 2005 Chris Scaffidi (an alumnus of my current program) estimated an order-of-magnitude difference between the numbers of professional programmers (3 mln) and end user programmers (90 mln) in American workplaces.

As a response to the huge numbers of end-user programmers, the research field of end-user software engineering has been opened. It is concerned with providing useful and usable abstractions and tools for end-user software engineers, which might not have much training and expertise, but still have to do their job. The field encompasses not only the programming activity (which undoubtedly was the "founding father), but also such things as end-user requirements engineering and end-user testing.

End-User Architecting

The idea originated in our ABLE Group was to extend the above consideration to the counterparts of software architects in the end-user world -- end-user architects. Such users compose systems from components at relatively high levels of abstraction. They have to consider quality attributes, tradeoffs, different configurations and prototypes, just as software architects do. These activities are often more challenging than programming because they involve making uncertain decisions in the face of numerous concerns. We termed this activity end-user architecting.

Despite these challenges, there is little to no tool support for end-user architects. They often have to tamper with low-level scripts and tools in order to assemble a system they want. This is a tedious and error-prone process, which has much to be optimized. 

Recently we wrote a paper about our case studies of end-user architecting. We took several existing platforms for end-user architects (one for social analysis, one for brain imaging, and one for intelligence analysis) and tried formal architectural modeling as a means of helping end-user architects achieve their goals. We also described our perspective on what kinds of things end-users may need in the future. I think the abstract summarizes the paper well: 

Within an increasing number of domains an important emerging need is the ability for technically naive users to compose computational elements into novel configurations. Examples include astronomers who create new analysis pipelines to process telescopic data, intelligence analysts who must process diverse sources of unstructured text to discover socio-technical trends, and medical researchers who have to process brain image data in new ways to understand disease pathways. Creating such compositions today typically requires low-level technical expertise, limiting the use of computational methods and increasing the cost of using them. In this paper we describe an approach, which we term end-user architecting, that exploits the similarity between such compositional activities and those of software architects. Drawing on the rich heritage of software architecture languages, methods, and tools, we show how those techniques can be adapted to support end users in composing rich computational systems through domain-specific compositional paradigms and component repositories, without requiring that they have knowledge of the low-level implementation details of the components or the compositional infrastructure. Further, we outline a set of open research challenges that the area of end-user architecting raises.
Vishal is currently working on something amazing for end-users. If it's not amazing, he's not getting his PhD any soon. I bet he would've written all this text much more elegantly. He would've reached for your souls and started the fire of end-user compassion there.

No comments:

Post a Comment