InfoQ

Interview

   Good News: We have re-worked our video infrastructure to provide more reliable service. Please email bugs at infoq.com with any problems.

Michael Stal on Architecture Refactoring

Interview with Michael Stal by Niclas Nilsson on Mar 25, 2008 07:01 PM

Community
Architecture
Topics
Enterprise Architecture,
Design
Tags
Refactoring,
Patterns
Summary
In this interview from OOPSLA 2007, Michael Stal talks about architecture refactoring. He describes what architecture refactoring is, its relationship to code refactoring and patterns, and he gives real world examples of how architecture refactorings have been done and when not to do it.

Bio
Michael Stal is a Principal Engineer at Siemens Corporate Research and Technology where he and his team are responsible for research and customer projects. His main research areas include Software Architecture and Distributed Systems. Michael is co-author of the Pattern-Oriented Software Architecture series. He is also a frequest speaker in various conferences and author of several articles.
We're going to talk to Michael Stal about software architectural refactoring. Michael you had a tutorial about software architectural refactoring - what it is about?
So did you think a lot before you chose the word "refactoring" or did you think it was hard since refactoring normally is like you said, not changing style behavior?
Can you give examples of some architecture refactoring so we understand what it's about?
Do you have any more examples?
How do you work with architecture refactoring?
Actually both.
Isn't it usually hard to do architecture refactorings?
What's the current state of the writing, the literature in this area?
When you created the next generation system how do you justify the cost of doing an architecture refactoring?
So what about architecture refactorings when some part of the system is not under your control?
What are your next steps with architecture refactoring? Are you going to improve the state of the writing?
show all  show all

4 comments

Reply

Architecture isn't in the code? by Jeremy Wales Posted Mar 25, 2008 11:40 PM
Architecture Refactor by Pete Haidinyak Posted Mar 27, 2008 10:41 AM
notes about Architecturing Refactoring by William Martinez Posted Mar 27, 2008 1:14 PM
DSM Methodology might help by Han van Roosmalen Posted Apr 3, 2008 10:31 AM
  1. Back to top

    Architecture isn't in the code?

    Mar 25, 2008 11:40 PM by Jeremy Wales

    I must confess, I don't understand his distinction between architecture refactoring and code refactoring. Does he just mean you need to keep your diagrams up-to-date as you refactor the code? Otherwise, his examples of architecture refactoring would appear, to me at least, to be classic examples of code refactoring: Got dependency cycles? You would probably refactor to a pattern that loosens the coupling; Got two hierarchies and then realize that in your domain there's only really one? Sounds like refactoring toward deeper insight.

    Have I missed something? I may well have as my XP leanings get me riled at any hint of separating architecture from code :-)

  2. Back to top

    Architecture Refactor

    Mar 27, 2008 10:41 AM by Pete Haidinyak

    I use Structure101 (www.headwaysoftware.com) and know in 'realtime' (intellij plugin) when I have caused an unwanted dependency in the application I am writing. It's a cool tool to help keep your architecture 'pure'.

  3. Back to top

    notes about Architecturing Refactoring

    Mar 27, 2008 1:14 PM by William Martinez

    Just to clarify some of the ideas.

    Refactoring is changing of code in order to improve design without changing functionality.

    To me, architecture and design are higher level coding. Code (micro-design) has to be the same solution, just more detailed, than the actual design (Tactical level) which is at the same time a more detailed description of the solution from the architecture design.

    Thus, a dependency is reflected in all three levels. There is no way a dependency may be in one level and not in another one. You may not have the best view to catch it, though. Maybe you have no detail in a higher level to see that dependency (a dependency is inside one class or between classes inside a functional unit), or looking at code you cannot detect a global dependency (usually three+ way dependency).

    A refactoring in any part may affect any of the other levels, so all should be maintained up-to-date. A refactoring made from strategic level will impact coding, 90% of the time. I code is actually well written, changing a communication way from WS to REST for instance, will require changing probably one class and all should work the same. If it is all tightly coupled, then changing that may require rewriting half the application.

    There are several more issues about this. It is interesting, so I may post something more related to this in my blog .

    William Martinez Pomares

  4. Back to top

    DSM Methodology might help

    Apr 3, 2008 10:31 AM by Han van Roosmalen

    Since a few years some tools based on Dependency Structure Matrix methodology exist. I use Lattix quite extensively. This tool lets you see the current state of the architecture as you have modelled it conceptually against the realised architecture. Before you want to refactor you can manually insert scenario's and see how those will work out and what will be affected. Lattix support an ever increasing number of platforms, like Java (incl Spring and Hibernate), .Net, SQL Server, Oracle, Delphi Pascal, C/C++. Buildtime it checks for dependency violations, so there is a great way to measure deviations to the intended architecture. The method proves to be very helpful to architects, and other less technical people. It opens discussions based on what you see in the matrix in stead of gut feeling.

Exclusive Content

Business Natural Languages Development in Ruby

Jay Fields presents his concept of Business Natural Languages - a type of Domain Specific Languages geared towards being readable by domain experts.

Distributed Version Control Systems: A Not-So-Quick Guide Through

Adoption and interest for Distributed Version Control Systems is constantly rising. We will introduce the concept of DVCS and have a look at 3 actors in the area: git, Mercurial and Bazaar.

Segundo Velasquez and Agile as Seen Through the Customer's Eyes

Deborah Hartmann interviewed Segundo Velasquez about his experience as customer with an Agile team during the initial phase of software design of a product.

Fine Grained Versioning with ClickOnce

David Cooksey shows how to fine grained versioning to a ClickOnce deployment using an HttpHandler written with ASP.NET, making partial rollouts to a test audience much easier.

Implementing Manual Activities in Windows Workflow

Windows workflow (WF) is an excellent framework for implementing business processes, but lacks support for human activities. This article describes a completely generic approach for changing this.

Markus Voelter about Software Architecture Documentation

In this interview taken during OOPSLA 2007, Markus Voelter talks about the importance of documenting the software architecture, and gives some good and also bad examples on how it could be done.

Voca, UK's largest payment processing engine running Spring

William Soo and Meeraj Kunnumpurath discuss the Voca transaction processing system, architectural challenges and requirements, Voca's Spring/J2EE architecture, and the future SEPA architecture.

Patterns for securing architectures

Security is about trade-offs. Only a few have the expertise to design good security. This talk focuses on Security Patterns, such as Role-based Access Control, Single Access Point, and Front Door.