Software Architecture Challenges in the 21st Century
A wonderful workshop, titled Software Architecture Challenges in the 21st Century, took place at the University of Southern California on June 8th. The workshop was co-sponsored by IEEE Software, USC's Center for Systems and Software Engineering, and UC Irvine's Institute for Software Research (ISR). Here is my personal summary of the talks; the presentation slides are available online.
The workshop started with a fascinating talk by Philippe Kruchten discussing the inherent tensions between Software Architecture and Agile Software Development. Philippe described what happens to a large project developed using agile processes without an underlying architecture using an appt metaphor: hitting the wall. This is what happens in marathon runs when depletion of glycogen stores in the liver and muscles, manifests itself by precipitous fatigue and loss of energy. In a software project lacking architectural guidance increasing complexity brings the project to a halt. Philippe presented a real-life case where the agile developers showed in the weekly meetings more code but not new features. Philippe suggested that big agile projects require two types of architects: a maker and keeper of big decisions, whom Fowler describes as architectus reloadus, and a mentor, troubleshooter, and prototyper, whom Fowler describes as architectus aryzus. As the project progresses, the reloadus architects can be moved away from the architecture team to another project, while the aryzus architects can be moved from the prototyping team to become team leads of the feature teams.
In the next talk Richard Taylor from UCI discussed architectural styles that favor dynamic software adaptation. He presented four key properties that are associated with dynamic adaptation: Behavior, Asynchrony, State, and Execution context. He then provided some examples of reconfigurable architectures.
- Pipes and filters (can work with some additional plumbing)
- On the web: REST (works by not storing state)
- Peer to peer architectures (works due to massive paranoia)
- Service-oriented architectures (work by decoupling RPC)
Pekka Abrahamsson, a member of the IEEE Software editorial board, presented agile transitioning cases from a number of companies.
- Nokia Siemens Networks connect over 1 billion people through their switches. The are burdened by significant bureaucracy and long lead times.
- F-Secure requires a two hour response for producing a virus update.
After the lunch break Grady Booch addressed the workshop through Second Life. His topic was the defenestration of superfluous architectural accoutrements (French for unusual clothes, as I was told). According to Grady, architecture affects not only how we design the solution, but also how we design the organization. Here are some sound bytes from his talk.
- The IRS is still maintaining a 1960s system written in assembly language.
- The Patriot missile system code, initially written in Ada, is now rewritten in C/C++. The original code is being reharvested to extract its stored knowledge.
- Productive enterprise architecture lifecycle: incremental iterative release of testable executables.
- All architecture is design, all design is not architecture.
- Factory-like production of software is by definition unsuitable for developing innovative software, which requires artistry.
- UML was never intended as a programming language. Models can be executed only in very narrow domains, mainly expressible by state charts. Those who think otherwise are fools.
- eBay's software has gone through five architectural cycles. The first two were in PHP, the next was in C/C++ and Java, and then some middleware was thrown in.
- Cisco's IOS was 30k lines of C in its first version; now it's 5M lines long and Cisco can't afford to replace it. Therefore, they blow it up little pieces at a time.
- Capitalism helps revitalizing applications. Businesses with a creaky architecture fail and get replaced by others with a more modern architecture.
Neno Medvidovic's talk was on the anatomy and physiology of the grid. Neno and his colleagues used architectural recovery techniques to examine the actual implementation of 16 grid implementations looking for the standard architectural layers of a grid: fabric, connectivity, resource, collective, and application. They were surprised to find empty layers, skipped layers, up-calls, and multi-layer components that didn't fit in the architecture. In total they found 250 architectural discrepancies.
The final technical talk was by André van der Hoek, and was titled Architecture? Architecting! André started with the question, "If an architecture is components, connectors, configurations, what are architects doing?" To study software designers in action he gave them a project and followed them in action. Through his studies he realized that not every experienced designer is a good designer and that good designers know when to stop drilling down. He then presented a neat demo of Calico, an electronic whiteboard. This allows drawing, but also moving, undoing, regrouping, check pointing, dealing with scraps, and working with multiple drawings on a grid.
The workshop ended with a panel discussion between five researchers.
- Michael Gorlick, Aerospace Corporation
- Gregor Hohpe, Google
- Neno Medvidovic, USC
- Diomidis Spinellis, Athens University of Economics and Business
- Dick Taylor, UCI
- David Woollard, NASA's Jet Propulsion Laboratory