Monday, 20 August Tuesday, 21 August
8:00am Registration opens Registration opens
9:00am S. Brown:
Effective Architecture Sketches

Room: Baltica

R. Nord and I. Ozkaya:
Economic Reasoning for Architecture Decision Making

Room: Meeting Room K4

10:00am Coffee break Coffee break
10:30am Tutorial continues Tutorial continues
12:00pm Lunch Lunch
1:30pm Tutorial continues A. Liu and L. Bass:
Architecting Highly Dependable Cloud Applications

Room: Meeting Room K4

3:30pm Coffee break Coffee break
4:00pm Tutorial continues Tutorial continues

S. Brown: Effective Architecture Sketches

Date and time: Monday, Aug 20, special full-day tutorial

Room: Baltica

Chair: Philippe Kruchten, UBC, Canada

Presenter: Simon Brown, independent consultant

Collaboration and “moving fast” aren’t terms that many people associate with the software architecture role, yet they’re both essential. Why? Because collaborating on the software design process provides a basis for coming up with a better solution and paves the way for collective code ownership. And moving fast requires “just enough” up front design to avoid costly rework, which sits conveniently in that vague area between ivory towers and foolishly hoping for the best. Costly rework can be caused by a number of things ranging from not mitigating the key technical risks through to the team not understanding the high-level structure and therefore being able to work towards the same vision. This, as with agile in general, requires good communication skills and not being able to effectively communicate your software architecture will slow you down at best.

Most people don’t get to practice the software design process all that often and fewer get to hone their communication skills. Join us if you want to practice collaborative software design and learn about how to communicate it through a collection of simple effective architecture sketches.

R. Nord and I. Ozkaya: Economic Reasoning for Architecture Decision Making

Date and time: Tuesday, Aug 21, morning

Room: Meeting Room K4

Presenters: Robert L. Nord, Ipek Ozkaya, Software Engineering Institute

Architecture-centric incremental development is an effective strategy for developing software-intensive products iteratively to support more rapid lifecycle development and increased flow of value to the customer. Increment planning (whether for short-term iterations or longer-term releases) is a fundamental practice that provides the context for a number of decisions that are made by architects and managers using an iterative and incremental strategy. When architects and managers make these architectural design decisions, they are typically unable to evaluate their economic impact. Since software engineering artifacts exist to serve the business goals of an enterprise, optimizing the value of software systems is a central concern of software engineering.

Economic Reasoning for Architecture Decision Making is a half-day tutorial providing coverage of how to bring economic considerations into software architecting. The objectives of the tutorial are to:

  • familiarize participants with essential considerations in economics-informed software design and analysis
  • introduce the concept of increment planning that supports the estimation of the costs and benefits for making economic-based software architecting decisions
  • introduce utility as one technique for valuing quality attribute requirements and the architectural strategies that support them
  • provide participants with a better understanding of the techniques through a hands-on exercise

A. Liu and L. Bass: Architecting Highly Dependable Cloud Applications

Date and time: Tuesday, Aug 21, afternoon

Room: Meeting Room K4

Presenters: Dr. Anna Liu and Dr. Len Bass, National ICT Australia

Cloud can fail. Outages can cause significant data loss, and loss of business. Architects who are designing systems to run in the cloud should know how to achieve dependable systems that enables business continuity. Some cloud providers provide base services in a local data center to support dependability but the application architect must understand how to take advantage of these services in order to achieve high dependability, particularly in achieving cross region business continuity.

In this tutorial, we firstly provide an overview of cloud computing platforms in terms of the typical technical platform architecture. Then we discuss various aspects of dependability – performance, availability, and security. We discuss what can go wrong from a failure in the machine hosting a virtual machine to a disaster affecting an entire cloud data center.

With this introduction, we discuss various techniques for enabling applications to continue to be available in spite of the occurrence of these problems. These techniques vary from replication of computation to particular patterns to maintain the integrity and confidentiality of messages.

Lastly, we present a set of techniques used by major companies that host their offerings in the cloud. In particular, Netflix has a collection of techniques they call the “Simian Army” that we will describe. We will include examples from other companies whose business depends on having highly dependable systems, and uninterrupted business continuity.