From 2001-2005 I edited a column on design forIEEE Software.As well as writing several columns myself, I was able to rope in a very distinguished group of contributors.
Enterprise Architecture groups often get separated from day to day development.This can lead to their knowledge of development work getting out of date and development teams not taking a broad company-wide perspective.Having seen this happen frequently my colleague (ThoughtWorks CTO) Rebecca argues that enterprise architects can be much more effective by joining development teams.
Table driven techniques to allow systems to change without major code changes.
Baristas don't do synchronous processing - their reasons may be reasons for you to go asynchronous too.
Clear code is good, but should you sacrifice clarity for testability?
If software's going to go south, Jim explains in this column why it should collapse as fast as possible.
Everyone has their own list of important design guidelines.Scott concentrates on interfaces and how to design them so they are easy to use correctly and hard to use incorrectly.
At OOPSLA 2003 Dave Thomas (the founder of OTI) gave a thoughtful and powerful critique of Model Driven Architecture.In this column he explains why he thinks a universal model-driven approach is likely to fail, and points out that the UML and Domain Specific Languages still have value.
The rising popularity of refactoring, tools such as JUnit, and agile methodologies such as Extreme Programming (XP) has brought a new style of design into view.Continuous design is the process of using refactoring to continuously improve a program's design.In this column Jim discusses his experiences with continuous design, in particular with design issues that seem tricky such as internationalization and transactions.
A common part of encapsulation, particularly with object-oriented systems, is hiding data structures.Yet it's also common to expose much of this data behind data access routines.In this column I cover some guidelines for writing data access routines.However don't forget that if you can leave the data hidden, that's usually better.
What is architecture, and who exactly is an architect?These are questions that seem to get everyone very heated.So in this IEEE Software column, I let Ralph Johnson explain about architecture: with a definition that matches all others in a way that nobody agrees with.I also talk about two sub-species of architect:Architectus的ReloadusandArchitectus的Oryzus.
When we think about software architecture, we usually think about its technical architecture.But there's also another important architecture - the one we use to communicate with the customers of the software: the marketing architecture.忽视这一点，“marketecture”，其与“tarchitecture”的关系，可以得到开发项目进入了很多麻烦。