JavaPulse

a finger on the pulse of the freelance Java™ market in the Netherlands

Lean Architecture: approach to architectural improvements

Posted on | 18 June 2010 | 1 Comment

Yesterday, I attended a lean architecture seminar given by Xebia. Gerard Janssen, Gero Vermaas, Sander van den Berg, and Denis Koelewijn did a good job in putting together the seminar and taking us through an introduction of Lean Principles and then applied to architecture to become Lean Architecture Prinicples. During the seminar, we discussed architectural challenges and also learned how architecture was done at Bol.com as presented by Serge Beaumont. I left the session re-inspired on how to approach architecture improvements at my current place of work.

Architecture
The 3 C’s of Architecture was introduced: Connection, Cohesion, and Changeability.
You can read about the 3 C’s of Architecture here: http://blog.xebia.com/2010/04/23/the-three-cs-of-architecture/
But here’s my spin:
On first glance, it is not really obvious what is meant by connection. What is meant is: connection to organizational goals. Architecture should be aligned to organizational and business goals and add value by facilitating the achievement of these goals.
Another word for Cohesion is Consistency. I often look for consistency in architecture, software, documents, etc. Consistency is standardization that pays off because it reduces the effort in understanding the architecture, software, documents, thereby reducing time and costs when implementing further changes.
Modern wisdom says that we should architect for change, because “change is the only constant”. For me, the raison d’etre of architecture is to manage complexity thereby ensuring changeability and minimizing the cost of future changes. This is because by definition, software is complex, but the complexity can be managed.

Lean Principles
The Lean Principles that were introduced are:
1) Base management decisions on long term philosophy, even at the expense of short term financial goals
2) Create a continuous process flow to bring problems to the surface
3) Use “pull” systems to avoid overproduction
4) Build a culture of stopping to fix problems to get quality right the first time
5) Use visual control so no problems are hidden
6) Grow leaders who thoroughly understand the work, live the philosophy, and teach it to others
7) Go and see for yourself to thoroughly understand the situation
8) Make decisions slowly by consensus thoroughly considering all options, and implement decisions rapidly
9) Become a learning organization through relentless reflection and continuous improvement

The above principles can be further distilled into 3 quick-win actions:
1) Make work visible
2) Limit work in progress
3) Make work flow
#1 is a quick-win that I have employed and continue to employ. For example, it’s amazing how a continuous integration tool can do to focus the team, and give a pulse on progress.
#2 and #3 are closely related. What we know is that flow is more important than resource optimization. Ensuring the flow by making sure that intermediate products do not pile up often result in faster delivery than if all resources continue to produce at 100% capacity despite the fact that the next person/team in line is not ready. This is counter-intuitive for traditional project management, which is still very prevalent in most large organizations, and it is up to us to teach the concept of flow and other lean principles.

Other resources on lean principles that I have found useful are:
- http://agilesoftwaredevelopment.com/leanprinciples
- http://www.leansoftwareinstitute.com/art_ilsd.php

Principles distill best practices into simple concepts that help us focus on what we need to do. Often, we all know the concepts, but the hard part is the implementation. By putting “abstract” lean principles into the context of architecture, it helps to visualize what needs to be done and brings us one step closer to applying the principles in our specific situations.

Lean Architecture Principles
“Lean Architecture enforces value creation by balancing business and technical values/priorities and converging focus of all stakeholders to required actions at the right time and at the right level of details.”

The Lean Architecture Principles that were introduced are:
1) Architecture initiated by business goals
2) Architecture emerging from projects
3) Incremental development of architecture
4) Focus on (business) value stream
5) Travel light
6) Just in time, just enough
7) Think big, act small
8) All hands on deck early on
9) Always involved
10) Comprehensible over comprehensiveness
11) Freedom where possible, standard where needed

Each principle is further elaborated in the Xebia blog here: http://blog.xebia.com/category/lean-architecture/

Architectural Challenges
Later, we broke into groups to discuss which Lean Architecture Principles can be applied to solve one of the architectural challenges that we came up with. We chose to discuss the challenge of determining how far we should look for architecture. 3 years? 5 years? 10 years?

My first comment is that it’s not about time. It’s about creating a vision and then creating a roadmap (Think big, act small) towards that vision. The time is only an estimate of how long it would take us to get to the vision, which is not really that relevant since architectural improvement should be a continuous process (Incremental development of architecture) and each step is measured for business value. Many of us work in organizations where there is a fair amount of legacy system. When designing from scratch, we know that we should design loosely coupled, flexible systems, but what do we do with systems that are already there? One solution is to create a backlog of architecture changes/refactorings and wait for the chance to include them into project backlogs when the time comes. The architecture backlog should be communicated widely so there will be no surprise.
An insight from Theo Maas of KLM is: “Architecture must mirror your business processes. Even when the organizational structure changes, the business processes often stay the same.”
I would go one step further to say that lean principles can be applied to the business processes themselves to eliminate waste.Companies that dare to improve their processes can benefit from reduced costs and increased productivity in their day-to-day operations. When this is done with business and IT in close collaboration, IT can add value by supporting the new (more efficient) processes.

Bol.com: Service Discovery Workshop
Serge Beaumont shared with us his experience at Bol.com, where he started to run Service Discovery Workshops with full participation from +/- 20 people from all departments and functions who got together to discuss architecture and initiate architectural changes (All hands on deck early on). The goal was to create an architecture that would keep them in business until 2013. I think it is brilliant that people at Bol.com have the foresight to make the effort early on and collaborate on architecture. A simple model was followed to structure the workshop:
1) Domain Objects – Identify and validate (throw out invalid/obsolete ones) domain objects. Identify partitions and cluster closely related stuff. Domain objects can be in one domain only – that helps to remove duplication.
2) Processes – Identify and validate processes.
3) Services – Identify the services needed to execute the processes.
4) Messages – Identify what the services require to do their work

Conclusion
This seminar has inspired me to refocus my efforts on initiating architectural improvements at my current place of work. I’m glad to have had the opportunity to discuss with fellow architects the common challenges and solutions for initiating architectural changes in organizations. This has confirmed for me what I have known all along and have been doing for awhile, which is that architecture includes both content knowledge as well as process knowledge, and where success is contingent on the ability to initiate and lead changes in both. As with many good ideas, the concepts are simple, but the implementation is hard. I hope that doing my part to spread the word on what we know as a community will help others to improve architecture in their companies.

Itay Talgam: Lead like the great conductors

Posted on | 24 October 2009 | No Comments

Great analogy for leading organizations.

Study Tips for Sun Certified Enterprise Architect (SCEA) Exam

Posted on | 23 June 2009 | No Comments
Tags: | | |

It’s been a year since I attended a bootcamp for Sun Certified Enterprise Architect and I noticed that I never published these study tips. The course went from fundamental architectural concepts to using current Java technology to design software.

I really liked learning the SunTone Architecture Methodology – specifically the SunTone cube, which helped me visualize and make connections to infrastructure. What I liked less is the focus on Java design patterns, some of which are outdated, and a focus on (although a little understandably) Sun technology. The problem is these days – knowing the Sun way of doing things (EJB3, JSF, etc) is not the only choice. There is definitely a gap there for a more comprehensive Java Architecture course that comprises of all mainstream Java technology and help make the choices between them. Overall, I found that it was a good opportunity to focus and learn for a week on architecture and design. I’m glad to find that UML is still relevant in the face of agile development, although people haven’t talked about it much in more than 10 years.

SunTone Architecture Methodology
To aid in the development of enterprise applications, Sun Java Center formulated the SunTone Architecture Methodology (SunTone AM) in the late 90’s. Enhancing RUP with the SunTone cube, it has now evolved to have more agile influences. SunTone AM introduced the SunTone cube to describe primary concerns in enterprise applications. The three faces on the cube represented layers, tiers, and systemic qualities.

Layers
Layers are usually in the domain of infrastructure architects, where the application sits on top of infrastructure components.

  • Application – software
  • Virtual Platform – interfaces to the middleware for decoupling
  • Application Infrastructure – middleware
  • Enterprise Services – OS
  • Compute & Storage – hardware
  • Network Infrastructure – network

Tiers
Tiers are well-known to application architects. They describe how an application is decomposed into modules to reduce coupling and enhance system flexibility. Annoyingly, tiers are sometimes called layers, when not in the context of SunTone.

  • Client Tier – browsers, standalone clients
  • Web Presentation Tier – HTTP requests
  • Business Tier
  • Integration Tier – interfaces with resources
  • Resource Tier – DBMS, mainframe, EIS

Systemic Qualities
Systemic qualities help establish the quality of service that a system can deliver. Different systemic qualities impose different constraints on the design of a system. This list correlates to Non-Functional Requirements (NFR) that when prioritized help make choices in system design that take quality, time, and costs into consideration.

  • Manifest Qualities
    • Performance
    • Reliability
    • Availability
    • Usability
  • Operational Qualities
    • Throughput
    • Manageability
    • Security
    • Serviceability
    • Testability
  • Developmental Qualities
    • Realizability
    • Planability
  • Evolutionary Qualities
    • Scability
    • Maintainability
    • Extensibility
    • Flexibility

The Multiple Choice Exam
A lot of passing the exam has to do with learning the terminology.
The multiple choice exam tests knowledge from roughly 8 areas:

  1. Application Design Concepts + Principles
    • encapsulation, inheritance, separation of concerns
  2. Common Architectures
    • 2-tier, 3-tier, multi-tier, rich clients vs. browser/thin clients, web services
  3. Integration + Messaging
    • communication w/ external systems, WS+XML over HTTP, JCA, JMS
  4. Business Tier Technology
    • Enterprise Beans, Enterprise Classes, Stateful/Stateless Session Beans, Message Driven Beans
    • CMP/BMP, JDO, JPA, ORM, DAO, JDBC, JAX WS, EJB 3.0
  5. Web Tier
    • Web Framework, JSPs, Servlets , JSF
  6. Applicability of J2EE Technology
    • Designing modular solutions, SOA, measuring NFR, refactoring
  7. Design Patterns
    • GoF Design Patterns
    • Core J2EE Design Patterns
  8. Security
    • Client-side security: WebStart, applet deployment
    • potential threats
    • encryption, hash, SHA, asymmetric vs symmetric
    • JAAS

Resources

keep looking »