Showing posts with label Software Development. Show all posts
Showing posts with label Software Development. Show all posts

Tuesday, December 16, 2008

Application Architecture Guide is Available

After many months of work, we've released the patterns & practices Application Architecture Guide - http://www.codeplex.com/AppArchGuide.  You can download the pdf or you can view it all on the web, whichever is easier for you.

This is a 381 page playbook to designing well architected applications on the Microsoft .NET platform. It covers web applications, mobile applications, rich client applications, services and rich internet applications (like Silverlight). The guide is a distillation of many lessons learned from architecture experts both internal and external to Microsoft.  It’s principle-based and pattern-oriented to provide a durable, evolvable backdrop for application architecture that you can use for many years to come. 

Some key features of the guide:

  • Canonical app frame - Describes at a meta-level, the tiers and layers that an architect should consider. Each tier and layer is described in terms of its focus, function, capabilities, common design patterns and technologies.
  • App Types - Canonical application archetypes (such as web application or rich client application) are used to illustrate common application types.  Each archetype is described in terms of the target scenarios, technologies, patterns and infrastructure it contains.
  • Arch Frame - A common set of categories for hot spots for key engineering decisions. These include categories such as authentication and authorization, caching, state management, composition, configuration, transactions, validation, workflow and more.
  • Quality Attributes - A set of quality attributes that shape your application architecture, such as performance, security, scalability, manageability, reliability and more.
  • Principles, patterns and practices - Using the frames as backdrops, the guide overlays relevant principles, patterns, and practices, such as model view controller pattern, data transfer objects, service gateway, facade and more.
  • Technologies and capabilities - A description of the Microsoft platform and all the relevant technologies. For instance we provide guidance about which data access technologies to use, which UI and presentation layer technologies are best suited for your scenario, and when to use WCF vs. ASMX.

If you are an architect or a developer on the .NET platform, I highly recommend you pick it up. Its free, so you have nothing to lose!

Wednesday, July 30, 2008

Improving Web Services Security Guide is Available

In an earlier post I wrote about the experience of working with Microsoft on a guide to help teams use Visual Studio Team System more effectively.

I'm happy to announce that we recently completed a new guide - Improving Web Services Security. The goal for this guide was to collect best practices and guidance to help architects and developers create more secure Windows Communication Foundation (WCF) applications. Much of the guidance is also generally applicable to any Web Service development project, so if you are focused in that area its worth checking out.

You can download the guide here:
http://www.codeplex.com/WCFSecurityGuide

Wednesday, May 23, 2007

Visual Studio Team Foundation Guide is Available

For the past couple of months I've been working with Microsoft on a guide to help development teams use Visual Studio Team System more effectively. Today we released an early version of the guide, a 360 page book, in PDF form to the CodePlex site.

This project has allowed me to combine two of my passions: team software development and personal effectiveness. I've learned a lot about how to write a book; how to avoid getting too lost in the details or too intimidated by the big picture. Writing many hundreds of pages can be daunting if its looked at all at once! I've always enjoyed writing, but remarkably this is only my second contribution to a real book. My first was a chapter in a rock climbing guide to Montana, which is still available here on Amazon.com. I imagine there will be many more to come.

If you are interested in team development with Visual Studio, you can download the guide here: http://www.codeplex.com/TFSGuide.

Lessons Learned
I learned the following lessons on writing which I intend to apply to future projects:
  • Passion. Pick a topic that you are passionate about, something you can sustain energy and focus on for months at a time.
  • Outline. Create an outline of what the book should cover so you know how each day's work contributes to the larger picture.
  • Iteratively Render. Don't try to write each chapter from start to finish. Instead, start by writing rough drafts that cover each chapter of the book. This process helps you maintain cohesion through the book and keeps you from getting bogged down in any one place. Once you have the rough chapters in place you can iterate over time to improve and flesh them out. Its like building a skeleton first, then building up the layers of flesh over time.
  • Get Help. Its hard to write a high quality book on your own. At the very least you need people to review your work, bounce ideas off of, tell you when you are writing crap, and edit out your mistakes. Don't try to do it all yourself.
  • Consistency. Spend time writing every day until you are done, don't let up.
  • Quality. Don't get stuck on perfectionism, know when your writing is good enough. Sometimes I spend so much time revising my writing that it ends up worse than what I started with.