Design

A collection of articles from the IEEE Software's 'Design' column, edited by Martin Fowler (2001-2005) and Rebecca Wirfs-Brock (2006-2009). Includes contributions from Robert Cecil Martin (Uncle Bob), Kent Beck, Rebecca Parsons, Dave Thomas, Gregor Hohpe, Michael Feathers, Jim Shore, Scott Meyers, Luke Hohmann, Craig Larman, John Daniels, James Newkirk and Alexei Vorontsov.

This collections includes 46 articles published between 2001 and 2009.

(stats / articles)
(stats / downloads)
(top articles)




2009 (6)

2009
The Responsible Designer
IEEE Software 2009 (6); by R. J. Wirfs-Brock

Successful software systems often live far longer than their original designers anticipated.

2009
Design for Test
IEEE Software 2009 (5); by R. J. Wirfs-Brock

As developers, we're expected to turn out implementations proven by tests that we or others have written.

2009
Principles in Practice
IEEE Software 2009 (4); by R. J. Wirfs-Brock

This paper deals with good software design principle.

2009
Creating Sustainable Designs
IEEE Software 2009 (3); by R. J. Wirfs-Brock

Christopher Alexander's concept of centers and properties of living structures can help developers create pleasing, sustainable software designs.

2009
Designing with an Agile Attitude
IEEE Software 2009 (2); by R. J. Wirfs-Brock

In this article, we investigate what does it take to be an effective software designer in an agile development environment.

2009
Designing in the Future
IEEE Software 2009 (1); by R. J. Wirfs-Brock

The consequences of poorly structured requirements obviously have enormous consequences on design.

2008 (6)

2008
Designing Then and Now
IEEE Software 2008 (6); by R. J. Wirfs-Brock

Over the past 25 years, we've made great advances in tooling, technologies, and techniques that make software design more concrete.

2008
Enabling Change
IEEE Software 2008 (5); by R. J. Wirfs-Brock

Enabling continued, steady change requires that we integrate design corrections and adjustments into the natural course of development.

2008
Up-front Design
IEEE Software 2008 (4); by R. J. Wirfs-Brock

There can be significant benefits in thinking through a design until you get it "right enough" before launching into a major development effort.

2008
Design Strategy
IEEE Software 2008 (3); by R. J. Wirfs-Brock

Software designers and managers can find it challenging to agree on the "sweet spots" of their system that warrant their best design efforts.

2008
Connecting Design with Code
IEEE Software 2008 (2); by R. J. Wirfs-Brock

Jon Bentley wrote his thesis on divide-and-conquer algorithms and came to greatly admire C.A.R.

2008
Valuing Design Repair
IEEE Software 2008 (1); by R. J. Wirfs-Brock

One of the favorite activities in any of the architecture or design courses is to discuss antipatterns - design ideas hatched with good…

2007 (6)

2007
Does Beautiful Code Imply Beautiful Design?
IEEE Software 2007 (6); by R. J. Wirfs-Brock

This article claims brevity can contribute to code beauty-clarity of purpose, expressive use of the programming language, and design elegance also play…

2007
Designing Extensible Classes
IEEE Software 2007 (5); by R. J. Wirfs-Brock

This paper discusses about the design of extensible classes.

2007
Giving Design Advice
IEEE Software 2007 (4); by R. J. Wirfs-Brock

In an ideal world, designers freely seek advice, ask for and offer constructive criticism, and openly discuss issues.

2007
Handling Design Criticism
IEEE Software 2007 (3); by R. J. Wirfs-Brock

Design reviews are an essential part of any design process.

2007
Toward Design Simplicity
IEEE Software 2007 (2); by R. J. Wirfs-brock

When designing I tend to go with the flow. I don't think deeply about why I'm making any particular decision.

2007
Driven to ... Discovering Your Design Values
IEEE Software 2007 (1); by R. J. Wirfs-brock

Software development approaches all emphasize a core set of values and principles around which practices, techniques, and tools have emerged.

2006 (6)

2006
Explaining Your Design
IEEE Software 2006 (6); by R. J. Wirfs-brock

Have you ever tried to explain some aspect of your design and not known where to start Perhaps you had to present how you solved a problem or…

2006
Toward Exception-Handling Best Practices and Patterns
IEEE Software 2006 (5); by R. J. Wirfs-Brock

An exception condition occurs when an object or component, for some reason, can't fulfil a responsibility.

2006
Designing for recovery
IEEE Software 2006 (4); by R. Wirls-Brock

How should you design your software to detect, react, and recover from exceptional conditions If you follow Jim Shore's advice and design with a fail fast…

2006
Refreshing patterns
IEEE Software 2006 (3); by R. J. Wirfs-Brock

Different authors make different design choices, and their descriptions of the same pattern will vary.

2006
Characterizing classes
IEEE Software 2006 (2); by R. J. Wirfs-Brock

Class characterization is a key step of object design.

2006
Looking for powerful abstractions
IEEE Software 2006 (1); by R. J. Wirfs-Brock

In this paper the author explores the ways that have helped him to become a better designer.

2005 (5)

2005
The state of design
IEEE Software 2005 (6); by M. Fowler

A useful way to talk about design is to identify principles that lead to well-designed systems.

2005
Enterprise architects join the team
IEEE Software 2005 (5); by R. I. Parsons

IT organizations are starting to recognize that having some level of enterprise standards can remove needless complexity from application portfolios…

2005
The test bus imperative: architectures that support automated acceptance testing
IEEE Software 2005 (4); by R. C. Martin

Agile methods more specifically, test-driven development practices have begun to raise the software industry's awareness of automated…

2005
Agile programming: design to accommodate change
IEEE Software 2005 (3); by D. Thomas

Agile development focuses on accommodating program evolution.

2005
Your coffee shop doesn't use two-phase commit
IEEE Software 2005 (2); by G. Hohpe

The real world is often asynchronous. Our daily lives consist of many coordinated but asynchronous interactions.

2004 (6)

2004
Before clarity
IEEE Software 2004 (6); by M. Feathers

Most software developers become preoccupied with the question of what makes good design at some point in their careers, usually after witnessing the effects…

2004
Fail fast
IEEE Software 2004 (5); by J. Shore

The most annoying aspect of software development is debugging.

2004
The most important design guideline?
IEEE Software 2004 (4); by S. Meyers

The activity of "design" includes many things, but certainly one of the most important aspects is interface specification.

2004
MDA: revenge of the modelers or UML utopia?
IEEE Software 2004 (3); by D. Thomas

Modeling is at the core of many disciplines, but it is especially important in engineering because it facilitates communication and constructs complex things…

2004
Module assembly
IEEE Software 2004 (2); by M. Fowler

How to modularize a program is one of the most general and important issues in software design.

2004
Continuous design
IEEE Software 2004 (1); by J. Shore

The rising popularity of refactoring, tools such as JUnit, and agile methodologies such as extreme programming XP has brought a new style of design…

2002 (5)

2002
Using metadata
IEEE Software 2002 (6); by M. Fowler

I occasionally come across people who describe their programming tasks as tedious, which is often the sign of a design problem.

2002
How .NET's custom attributes affect design
IEEE Software 2002 (5); by J. Newkirk, A. A. Vorontsov

In its first release of the .NET Framework, Microsoft has provided a defined method for adding declarative information metadata to runtime entities…

2002
Yet another optimisation article
IEEE Software 2002 (3); by M. Fowler

The author addresses the question: how do we achieve a fast program For many programmers, performance is something you pay continuous attention to as you…

2002
Public versus published interfaces
IEEE Software 2002 (2); by M. Fowler

One of the growing trends in software design is separating interface from implementation.

2002
Modeling with a sense of purpose
IEEE Software 2002 (1); by J. Daniels

These days, practically everyone involved in developing software draws pictures that represent some aspect of the software or its requirements.

2001 (6)

2001
To be explicit
IEEE Software 2001 (6); by M. Fowler

Software is an odd medium in which to construct something.

2001
Aim, fire
IEEE Software 2001 (5); by K. Beck

The author argues that test-first coding is not testing.

2001
Reducing coupling
IEEE Software 2001 (4); by M. Fowler

Thinking about how to visualize and reduce coupling.

2001
Protected variation: the importance of being closed
IEEE Software 2001 (3); by C. Larman

The Pattern Almanac 2000 Addison Wesley, 2000 lists around 500 software-related patterns, and given this reading list, the curious developer has no time to…

2001
Separating user interface code
IEEE Software 2001 (2); by M. Fowler

The first program I wrote on a salary was scientific calculation software in Fortran.

2001
Avoiding repetition
IEEE Software 2001 (1); by M. Fowler

Software design is not easy-not easy to do, teach, or evaluate.