Eventually Consistent HTTP with Statebox and Riak
Bob Ippolito explains how to solve concurrent update conflicts with Statebox, an open source library for automatic conflict resolution, running on top of Riak.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.

Posted by Srini Penchikala on Dec 13, 2011
Evaluating software architectures is a critical part of the software architecture lifecycle processes. The book Evaluating Software Architectures: Methods and Case Studies covers the software architecture evaluation topic in detail focusing on evaluation frameworks like Architecture Tradeoff Analysis Method (ATAM), Software Architecture Analysis Method (SAAM), and Active Reviews for Intermediate Designs (ARID). The authors also discuss in the book some case studies in applying these frameworks as well as comparison of the software architecture evaluation methods.
In today’s hyper-competitive world, later may be too late to adopt Agile development and this Roadmap for Success will help you get started. Download "Agile Development: A Manager's Roadmap for Success" now!
InfoQ spoke with Rick Kazman, Visiting Scientist at Carnegie Mellon University’s Software Engineering Institute (SEI) and a co-author of the book, about the significance of evaluating software architectures and how to perform the architecture evaluations in Agile and Lean software development organizations. We also talked to him about the emerging trends in this space.
Rick Kazman: We felt that there was a need for a book that just focused on architecture evaluation. We had written lots of articles, published method descriptions, and other people were starting to create architecture-based methods. We felt like there was a need for a more comprehensive book on architecture evaluation. Also we felt that this book should include some substantial case studies because very few of these have been published over the years.
Rick: Practicing software architects, aspiring software architects, and project managers would benefit from knowing how this process works.
Rick: There aren’t many process changes needed. Since originally writing this book, we’ve written reports on how to include architecture-centric methods into the unified process and into agile processes, and they really fit quite naturally as quality assurance techniques that you would do as part of any mature software development methodology. Basically, once you’ve got an architectural design concept you should evaluate it before you move on to putting resources into implementation. There’s always that transition from design to realization. The book encourages you to do a little testing of your design first before you start committing major resources to it.
Rick: There are two answers to this question. The first is agile or lean processes still need architecture. If you look at Kent Beck or Jeff Sutherland, thought leaders in agile processes, they all say the same thing.
On one hand nothing is different. On the other hand, in the spirit of agile and lean it’s certainly possible to scale down the evaluation techniques so that they can be done internally and with a relatively small group. You don’t need to make them a huge interruption to your development process.
Rick: To borrow a line from John Zachman, the enterprise architecture guru, “architecture is architecture is architecture.” This means the same principles apply from enterprise architecture, the biggest possible scale, all the way down to an individual system or a component of a system. The SEI architecture work over the last 15 years has shown that the domain and the scale simply do not matter – architecture is architecture.
Rick: There are two things architecture teams can do to make evaluation efforts visible to senior management. One part involves marketing. You have to keep senior management informed of what you’re doing, why you’re doing it, and the benefits of doing it. The other part is more technical. If you are measuring what you are doing then you can show hard data. You can show how many problems were found and how much money was saved by finding certain problems.
For example, AT&T kept track of the results of their architecture evaluations for about 20 years and they were able to provide a ROI estimate to their managers by asking each project what was the savings from having found these architecture problems early as compared with finding them later in the life cycle and they came up with a number of about $1 million per project on average [1].
Rick: One main and obvious benefit of architecture evaluation is that it, of course, uncovers problems that, if left undiscovered, would be very expensive to correct later. Evaluation also produces better architectures. Even if the evaluation uncovers no problems, everyone can feel confident in the architecture.
There are a number of other benefits of software architecture evaluations. Some are more difficult to measure, but they all contribute to a successful project and more mature organization.
Rick: You need to have the architecture documented before you can evaluate it.
There are also requirements for an architecture evaluation. For example, you need to have the right stakeholders in the meeting. It’s also important to have a trained facilitator in the meeting to make good use of time and keep everyone focused. Most of all, you need a commitment to improving the quality of the architecture, from all stakeholders.
Rick: Validating security or compliance requirements is no different than any other architectural issue. If indeed the problem can be addressed by an architectural solution, then you need to capture the problem as a scenario, with an explicit stimulus and response and use this scenario to guide the investigation and analysis of the architecture.
Rick: I am definitely seeing a trend towards more edge development. If you think about application platforms, like iPhone or Android, then the architecture is actually bifurcated. You’ve got the architecture of the platform itself and then you’ve got the architecture of the app that is written on top of that infrastructure. It really splits the evaluation activities and when in the lifecycle you would do an evaluation.
We’re also starting to see a little bit more tool support. In recent years there have been a lot of reverse engineering and analysis tools popping up. That’s something we didn’t see nine years ago when the book was written.
Architecture is also starting to find its way into more university curriculums, so there are more people who are versed in the language of architecture than there were 10 years ago.
Rick Kazman is a Professor at the University of Hawaii and a Visiting Scientist (and former Senior Member of the Technical Staff) at the Software Engineering Institute of Carnegie Mellon University. His primary research interests are software architecture, design and analysis tools, software visualization, and software engineering economics. He also has interests in human-computer interaction and information retrieval. Kazman has created several highly influential methods and tools for architecture analysis, including the SAAM (Software Architecture Analysis Method), the ATAM (Architecture Tradeoff Analysis Method) and the Dali architecture reverse engineering tool. He is the author of over 100 papers, and co-author of several books, including Software Architecture in Practice, and Evaluating Software Architectures: Methods and Case Studies.
[1] Architecture Reviews: Practice and Experience IEEE Software, March/April 2005 (vol. 22 no. 2) pp. 34-43 Joseph F. Maranzano, Millennium Services Sandra A. Rozsypal, Lucent Technologies Gus H. Zimmerman, Lucent Technologies Guy W. Warnken, AT&T Labs Patricia E. Wirth, AT&T Labs David M. Weiss, Avaya Labs
Bob Ippolito explains how to solve concurrent update conflicts with Statebox, an open source library for automatic conflict resolution, running on top of Riak.
Erik Onnen attempts to demonstrate that Java is still the best programming language for the JVM if simplified idioms are used along with proper tooling.
Approaches to integrating data are changing with emergence of cloud computing.
Michele Ide-Smith presents the lessons learned in the process of introducing UX principles and techniques into a large organization through a series of small steps.
Dave Farley and Martin Thompson discuss solutions for doing low-latency high throughput transactions based on the Disruptor concurrency pattern.
Rajneesh Namta shares his thoughts, experiences, and some of the critical lessons learned while implementing software test automation on a recent Agile project.
Dale Schumacher presents several patterns of actor interaction that can be used in collaborative programs written in any language.
Rúnar Bjarnason discusses Scalaz, a Scala library of pure data structures, type classes, highly generalized functions, and concurrency abstractions to perform functional programming in Scala.
1 comment
Watch Thread Reply