Most Read Latest News Blog Resources

Best Architecture Practices




May 15, 2003 — 
The defining characteristic of the .NET Framework is a unified programming model wiping away the barriers between programming languages and application types. There are no black boxes preventing a person with a Visual Basic background from using VB.NET to write a grid computing application; there are no tool limitations to prevent a C++ programmer from dragging and dropping 200 widgets on a form and pressing "Go!" That's one of the best things to happen for programmers in a long time-every .NET programmer is free (at least at a technical level) to explore that niche of the software development world that is most rewarding for them, creatively and financially. There is, however, considerable risk associated with this model.

While it's nice not to have arbitrary barriers between application types, different types of applications do require different approaches. One rarely thinks about conversational state between objects in a local application; one obsesses over it when designing an enterprise-scale system. Resource starvation is not on the radar screen of most Web programmers, but someone developing for a smart phone would be foolish not to address it from day one.

More accurately, these are not issues of design, but issues of architecture.

"Architecture" is one of the most overused words in the technical field, but when I say "software architecture," I mean "the unifying technical principles by which a program or system is organized." Something more than design, but still concrete enough to guide decisions at the code level.

Bill Gates is "chief software architect," proof enough that Microsoft has traditionally taken a higher-level view of architecture. I don't know what Bill Gates' workday is like, but I'm fairly sure it doesn't involve riding shotgun on the component structures in Office.

In contrast, you can't spill a latte at a Santa Clara Starbucks without scalding a "Java architect" (of course, the latte was poured by someone still carrying his "VP of business development" business cards).

Microsoft's view is changing though, with the realization that .NET gives everyone enough rope to hang themselves, and those who do may very well mistake domain constraints with faults in the .NET implementation. To battle this, Microsoft has created two new excellent resources onhttp://msdn.microsoft.com: /architectureand/practices.

These sites contain literally thousands of pages on best practices and patterns for .NET software architecture. There are reference architectures, operational practices and "reference building blocks" that I think are particularly useful. The writing is occasionally too tactical; the operational practices in particular often mistake best practices for "best practices possible with Microsoft's current version of the tool." Although documenting current tools is important, the value of best practices lies, I think, in creating a universal base of understanding and communication that will extend over years.

This is not to say that architectural best practices don't evolve, of course, but one of the things that's most noticeable in the best books on software architecture, such as Martin Fowler's recent "Patterns of Enterprise Application Architecture" (Addison-Wesley, 2003) or the classic "Pattern-Oriented Software Architecture" by Buschmann et al. (Wiley & Son, 1996), is that they can help one analyze legacy systems or applications that can't yet be built.

So far, Microsoft's patterns and practices don't cover all the gaps between tactical-design decisions, computer-science theory and hard-won experience, but it's a very good start.

While all of Microsoft's patterns and practices are available online, a subset is available in print. Ironically, it appears to be the relatively short-lived operations guides that are most available in book form. Given that some of the other documents are book-length (the reference on building secure ASP.NET applications, for instance, runs 608 pages), one wishes that Microsoft made them available in a form amenable to printing.

With the .NET Framework breaking down the artificial fiefdoms between application types, attention to software architecture is going to become one of the critical success factors. Despite Microsoft's traditional focus on education at the more tactical level of APIs, the new MSDN sections and outreach programs show that Redmond is trying to get ahead of this shift.

Development managers should equally recognize and embrace this changing emphasis by supporting their best developers in educating themselves in architectural best practices and applying them. Be wary about gratuitous title inflation, though, as it can lead to nasty salary demands-according to Software Development Magazine's latest salary survey, the median "software architect" makes US$96,000-$11,000 more than "project leader" and a solid $16,000 more than those whose title was "software developer" or "software engineer." I wonder if Bill Gates participated in that survey?


Share this link: http://www.sdtimes.com/link/27196
 

Add comment


Name*
Email*  
Country     


  • Comment
  • Preview
Loading



 
 
 
 
News on Monday
more>>
SharePoint Tech Report
more>>


   

 
 
Download Current Issue
ISSUE 3/15/2010 PDF

Need Back Issues?
DOWNLOAD HERE

Receive the print Edition?


 
blogs tab
Google Code turns 5
Google Code Turns 5, and adds a Paxos Algorithm to make the system more stable and reliable.
03/17/2010 11:16 AM EST

Test your Visual Studio 2010 know-how
Microsoft is offering free beta certification exams for Visual Studio 2010.
03/17/2010 11:08 AM EST

Microsoft lifts the hood on IE9
Microsoft is previewing IE9.
03/16/2010 01:10 PM EST

 

Events calendar tab
3/22/2010 to 3/25/2010
Santa Clara, Calif.
The Eclipse Foundation

4/12/2010 to 4/14/2010
Las Vegas
Penton Media

4/12/2010 to 4/15/2010
Santa Clara, Calif.
O'Reilly Media

4/19/2010
New York City
Flagg Management

4/25/2010 to 4/28/2010
Overland Park, Kans.
IIUG