Home » Archive

Articles in the Architecture Category

Architecture, Performance »

[13 Apr 2009 | 6 Comments | ]
Performance Hot Spots

From a software performance standpoint, “hot spots” are an area of intense activity. They’re hot spots because they’re frequently executed code paths with some sort of friction or bottleneck. They represent potential optimization paths for improving the performance of your code or design. You find the hot spots by measuring and analyzing the system.

Stepping back, we can use “Hot Spots” more loosely. We can use them to gather, organize, and share principles, patterns, and practices for performance.

Architecture, Security »

[9 Mar 2009 | 4 Comments | ]
Security Hot Spots

Security Hot Spots are a lens for security. If you know what you’re looking for, you can find it. When you don’t know what you’re looking for, you can waste a lot of time. The Hot Spots provide a way to find, organize and share software security knowledge. You can use hot spots to share principles, patterns, and practices. You can also use hot spots to share knowledge around threats, attacks, vulnerabilities, and countermeasures.

Rather than deal with a laundry list of information, use hot spots to focus your attention on key categories. The Hot Spots are actionable and they are high ROI. The Hot Spots helps you simplify, clarify and gain insight before you elaborate, maximize and optimize.

Architecture, Design, Requirements »

[2 Mar 2009 | 3 Comments | ]
Agile Architecture Method

The Agile Architecture Method is a way to bake quality into the life cycle. It’s also an iterative and incremental approach for architecture and design. In its simplest form, it’s a way to help you identify potential hot spots against your prioritized scenarios. The hot spots are key engineering decision. The main hot spots are cross-cutting concerns, such as data access, exception management, logging … etc. and quality attributes, such as security, performance, reliability … etc.

Architecture, Headline »

[9 Feb 2009 | 3 Comments | ]
Architectural Styles

You can think of architectural styles as a collection of principles that shape or govern the design of your application. Many of the styles overlap and can be used in combination. Architectural styles tend to be tied both to the application type as well as to the point in time in which the application was developed.  I think the Mind Map helps show how you can group architectural styles based on types of problems they solve.
What is an Architectural Style
An architectural style is a set of principles. You can think …

Architecture, Headline, Security »

[9 Jan 2009 | 7 Comments | ]
Security Approaches That Don’t Work

Photo by CarbonNYC
If it’s not broken, then don’t fix it …
The problem is, you may have an approach that isn’t working, or it’s not as efficient as it could be, but you may not even know it.  Let’s take a quick look at some broken approaches and get to the bottom of why they fail.  If you understand why they fail, you can then take a look at your own approach and see what, if anything, you need to change.  The more prevalent broken approaches include:
The Bolt on Approach

The Do …

Architecture »

[26 Oct 2008 | Comments Off | ]
What Is Application Architecture?

kevindooley
Software architecture is often defined as the structure or structures of a system.  There’s been a lot of attempts to define architecture from a software perspective and lots of debates over the years.  Rather than start from scratch, I thought it would be more helpful to highlight some of the more useful definitions that I’ve come across.

Kruchten, Booch, Bittner, and Reitman on ArchitecturePhilippe Kruchten, Grady Booch, Kurt Bittner, and Rich Reitman derived and refined a definition of architecture based on work by Mary Shaw and David Garlan (Shaw …

Architecture »

[5 Oct 2008 | 3 Comments | ]
What is Systems Architecture

Photo by Wolfgang Staudt
What is systems architecture and why do we care?  A systems architecture supports the highest layers of the enterprise architecture and it helps keep the enterprise architecture aligned to the business.  In A Practical Guide to Enterprise Architecture (Coad Series), James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, and Elias K. Jo write about systems architecture.

What is a SystemA system is the structure and constellation of machines, applications and network resources to support a particular function.  McGovern, Ambler, Stevens, Linn, Sharan, …

Architecture »

[5 Oct 2008 | 3 Comments | ]

How do you represent a software architecture?  You can use a set of viewpoints including a conceptual architecture view, module view, execution view, and code view.  This set of architectural viewpoints was originally proposed by Hofmeister, Nord, and Soni in their book Applied Software Architecture.  In A Practical Guide to Enterprise Architecture (Coad Series), James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, and Elias K. Jo write about the conceptual architecture view, the module view, the execution view, and the code view.
Conceptual Architecture ViewThe conceptual architecture …

Architecture »

[5 Oct 2008 | 2 Comments | ]

What is the 4+1 view model of software architecture?  It’s a way to show key viewpoints of an architecture.  In A Practical Guide to Enterprise Architecture (Coad Series), James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, and Elias K. Jo write about the 4+1 view model of software architecture.
Key Take AwaysHere’s my key take aways:

The four views are: logical, process, development, and physical.
The +1 is the scenarios.  The scenarios are at the center of the model.
The logical view is a view of the important classes and …

Architecture »

[1 Oct 2008 | Comments Off | ]

You can divide software architecture structures into 3 groups: 1) module structures, 2) component-and-connector structures, and 3) allocation structures.  These 3 groups map to 3 broad types of decisions for architectural design.  The 3 broad types of decisions are: 1) how to structure modules, 2) how to structure components and connectors, and 3) how does the system relate to non-software structures. In Software Architecture in Practice (2nd Edition) (SEI Series in Software Engineering), Len Bass, Paul Clements, and Rick Kazman write about 3 groups of architectural structures.
Structure and View Bass, …

Architecture »

[25 Sep 2008 | Comments Off | ]

As we work through the patterns & practices App Arch Guide 2.0 project, I find myself repeating an important mantra …
“You can’t evaluate an architecture in a vacuum …”
You need scenarios to evaluate it against scenarios.
Scenario-Based Evaluation MethodsHere’s a list of some scenario-based evaluation methods:

Software Architecture Analysis Method (SAAM) – evaluate quality attributes against actual usage.
Architecture Trade_off Analysis Method (ATAM ) – evaluate how well the architecture satisfies particular goals, especially around trade-offs between qualities.

These are mostly variations of SAAM and ATAM.

Cost-Benefit Analysis Method (CBAM) – evaluates the architecture …

Architecture »

[21 Sep 2008 | One Comment | ]

How do you group your products into product lines?  You first create a grid of your business segments and your architecture styles to help group related products.  Next, you analyze quality attribute requirements to understand the needs of the product line.  Finally, create a shared architecture, infrastructure, and process for the product line.  In A Practical Guide to Enterprise Architecture (Coad Series), James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, and Elias K. Jo write about how to create effective product lines.
Create a Grid of …

Architecture, Uncategorized »

[21 Sep 2008 | 3 Comments | ]

How do you structure a team around product lines?  Largely, it depends on the size and scope of your organization and product lines.  A small organization (30 people or less) can use a development department.  Larger organizations use business units to focus on the different functional and technical areas of the project.  Another option is a domain engineering unit, in which multiple business units share a central domain engineering unit.  In extremely large organizations, you might have multiple domain engineering units that specialize in their respective product lines, as …

Architecture »

[21 Sep 2008 | Comments Off | ]

What are your thoughts on code reuse?  Better yet, what are your experiences and lessons learned?  In A Practical Guide to Enterprise Architecture (Coad Series), James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, and Elias K. Jo write about source code reuse.
Reusing Code is Like Creating a Ransom Note from Newspaper ClippingsMcGovern, Ambler, Stevens, Linn, Sharan, and Jo write the following:
Software reuse is usually identified with the reuse of source code across software systems.  Source code is extremely difficult to reuse on a large scale.  …

Architecture »

[21 Sep 2008 | One Comment | ]

What is a software product line and why should you care?  A software product line is a family of products that share characteristics.  The idea is that a product line can help you reduce cost, while improving delivery time and quality, by sharing process, components, infrastructure and knowledge.  In A Practical Guide to Enterprise Architecture (Coad Series), James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, and Elias K. Jo write about software product lines.
What is a Software Product Line A product line is a family …

Architecture »

[2 Sep 2008 | Comments Off | ]

Do you practice the habits of highly successful software architects? Can you deliver a solution while acting as a technical mentor, empowering others, improving the process, and developing a focused, high-performance team along the way? In Software Architect Bootcamp, Raphael Malveau and Thomas J. Mowbray, Ph.D. write about the habits of successful software architects..
7 Habits of Highly Successful Software Architects According to Malveau and Mowbray, the seven successful habits are:

Keep it simple.
Let others defend the architecture.
Act don’t argue.
Keep an eye on the prize.
Be willing to change, but never too …

Architecture »

[18 Aug 2008 | Comments Off | ]

How do you create a candidate architecture in XP?  The solution is to pick a set of stories that force you to build a skeleton of the system as a whole in your first iteration.  If you can’t find the stories that force you to create the architecture you need, then you either put as much architecture in place as you need for now or you put the whole architecture in place on speculation.  In Extreme Programming Explained: Embrace Change (2nd Edition) (The XP Series), Kent Beck writes about building …

Architecture »

[17 Aug 2008 | Comments Off | ]

How do you know which path to take?  How do you find your glass ceilings?  Unless you’ve been there and done that, you need to test your path to avoid significant do-overs.  In Extreme Programming Explained: Embrace Change (2nd Edition) (The XP Series), Kent Beck writes about architectural exploration.
Architectural Exploration
Beck writes:
The programmers should also experiment with architectural ideas — how do you build a system for multiple levels of undo?  Implement it three different ways for a day and see which one feels best.  These little architectural explorations are most …

Architecture, Patterns »

[10 Aug 2008 | 2 Comments | ]

What’s the difference between an architectural style, an architectural pattern, and a system metaphor?   An architectural style is a central, organizing concept for a system.  An architectural pattern describes a coarse-grained solution at the level of subsystems or modules and their relationships.  A system metaphor is more conceptual and it relates more to a real-world concept over a software engineering concept.  In A Practical Guide to Enterprise Architecture (The Coad Series), James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, and Elias K. Jo write about the …

Architecture, Patterns »

[10 Aug 2008 | 2 Comments | ]

What’s the difference between an architectural pattern and a system metaphor?  An architectural pattern describes a coarse-grained solution at the level of subsystems or modules and their relationships.  A system metaphor is more conceptual and it relates more to a real-world concept over a software engineering concept.  In A Practical Guide to Enterprise Architecture (The Coad Series), James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, and Elias K. Jo write about the difference between architectural patterns vs. system metaphors.
Key Take Aways
Here’s my key take aways:

Metaphors are …