Agility and Architecture

Guest Editor's Introduction • Maurizio Morisio • April 2010

Theme Articles


This month's theme includes the following featured articles:

Agility and Architecture: Can They Coexist?
Software architecture is getting a bad rap with many agile proponents, but certain classes of systems that ignore architectural issues for too long hit a wall and collapse. More »

Architects as Service Providers
By providing architecture as a service to application developers, architects participate in coding activities and sustain the architecture's effectiveness throughout a project's lifetime. More »

Agile-Architecture Interactions
Intradisk parallelism can significantly reduce server storage systems’ power consumption, making it possible to match (and even surpass) a storage array’s performance using a single, high-capacity disk drive. More »

Agile Architecture IS Possible—You First Have to Believe!
A distributed storage service lets clients abstract a single reliable shared storage device using a collection of possibly unreliable computing units. More »

Peaceful Coexistence: Agile Developer Perspectives on Software Architecture
A survey of 72 IBM software developers suggests theoretical compatibilities between agile values and software architecture that bode well for future integration in practice. More »

 

What else is new? »

 

Agility and Architecture Do you think "agile architecture" is a contradiction in terms? Well, perhaps not. Architecture should be seen not as immutable but as an asset to reevaluate at each iteration, in close collaboration between architects and developers. But in practice, how do you really use agile methods at the level of architecture?

For instance, in the IEEE Software article "Agility and Architecture: Can They Coexist?", Pekka Abrahamsson, Muhammad Ali Babar, and Philippe Kruchten explain the role of architects, the importance of architecture as a function of project context, and the need for architecture documentation in agile processes. In the IEEE Software article "Architects as Service Providers," Roland Faber says that the architect role is to champion system qualities and stability, while the developer role is to champion the system functions and change. At the start of each scrum, they meet and negotiate the prioritization of tasks relevant for functionality or system properties. The "agile architect" keeps documentation about architecture at a minimum and interacts frequently (and flexibly) with the developers, building a trust relationship with them. The agile architect creates the rules but also helps break them, because "keeping the rules is not the goal; the goal is the overall system's qualities."

James Madison, in the IEEE Software article "Agile-Architecture Interactions," describes architecture-related activities at each step of a scrum iteration (up-front planning, storyboarding, sprint, working software). The key point in this case is also the communication and collaboration between architects and developers, with the goal of adapting and improving the architecture at each iteration and learning lessons from the working software.

On an application-oriented note, the authors of the IT 2008 conference paper "Presenting a Framework for Agile Enterprise Architecture" apply agile methods to define an enterprise architecture (IEEE Xplore login is required for this article). Mark Isham's Agile 2008 conference paper "Agile Architecture IS Possible—You First Have to Believe!" reports on how a real project went awry, what the product team learned, and how an agile process not only created a scalable, reliable architecture but also improved the team's ongoing productivity and morale.

Finally, the IEEE Software article "Peaceful Coexistence: Agile Developer Perspectives on Software Architecture" reports on a survey of 72 IBM software developers. The authors found a supportive, rather than neutral or contrastive, relationship. This bodes well for future efforts to integrate agile and architecture practices. Take our poll and compare your experiences to those of the developers and architects in this article! And be sure to check out these related links as well.

So, to answer my original question, agile architecture is not immutable, imposed architecture. It's the result of interaction between developers and, as Faber says, the "humble architect."

Enjoy your reading!

 

Maurizio MorisioMaurizio Morisio is an associate professor in the Department of Automation and Computer Science, Politecnico di Torino. He's IEEE Software's associate editor in chief for online initiatives. Please visit him at http://softeng.polito.it/morisio.

 

 

Article Comments

Please login to post comments.

What's New

Viewpoint: The Future of Computing Practice and Education
Modeling, analytics, and design jobs across all areas of business and society will be open to computer science graduates of the future as engineers, managers, and scientists. More »

The Near-Me Area Network
The mobile Internet and location-enabled mobile devices have become increasingly popular. The near-me area network (NAN) focuses on communication among wireless devices in close proximity, creating a new kind of application domain. More »

Google Android: A Comprehensive Security Assessment
A security assessment of the Android framework—Google's software stack for mobile devices—reveals high-risk threats to the framework and suggests several security solutions for mitigating them. More »

Linking Digital Media to Physical Documents: Comparing Content- and Marker-Based Tags
Tags can bridge the gap between paper and digital devices. We explore the trade-offs between tagging technologies and issues to consider when developing systems that transition between the two media. More »

Layout Proximity Effects and Modeling Alternatives for IC Designs
A novel approach to overcoming CMOS layout-dependent process fluctuations incorporates appropriate layout instance parameters into a compact device model. More »

Making Address-Correlated Prefetching Practical
A practical prefetcher with main-memory metadata achieves 90 percent of the performance potential of an idealized design. More »

Open Cirrus: A Global Cloud Computing Testbed
Open Cirrus is a cloud computing testbed that federates distributed data centers and aims to catalyze development of an open source service stack for the cloud. More »

From Proteins to Fairytales: Directions in Semantic Publishing
If computers are to help us process mountains of scientific information, we must build platforms for richer semantic technologies to represent scientific knowledge. More »

Web 2.0 for Practitioners
What are the most promising technologies for applying Web 2.0 in your IT? What tools go beyond gimmicks to help developers? More »

Add to the Real
Already popular, augmented-reality browsers for smart phones could eventually generate "geo-tagged media tweets," a source for experience data that could be translated across application communities. More »

Textbooks 101: A Primer on Writing Your First Textbook
An understanding of the overall process—along with tips from experienced textbook writers—can make the time-consuming task of textbook writing a little easier. More »

Integrating COTS Software: Lessons from a Large Healthcare Organization
A major healthcare organization's three-year integration of large COTS applications into a traditionally custom IT environment had varying degrees of success—and many lessons learned. More »

i3Drive, a 3D Interactive Driving Simulator
i3Drive, a wheeled-vehicle simulator, can accurately simulate vehicles of various configurations with up to eight wheels in real time on a desktop PC. More »