Patterns and Practices Summit – Day 2: Patterns

This is the Day 2 notes.  My co-worker David Boss is also blogging about the conference, but his updates are happening in real-time with posts after each session. 

Keynote: Architecture for Next Generation Web Applications – Scott Isaacs
Discussion of Web 2.0 and Mash-ups in the context of the architecture of Windows Live properties.  This is one of the first times I’ve come across the term “mash-up”, so here’s the definition given by Scott:

“Web Applications that consume (remixes) content and experience from different sources and aggregates them to create a new experience.”

Scott also discussed enabling technologies, such as RSS, SSE and Microformats.  A quick demo of Live Clipboard was given.

Here are some of the links given:

Microformats: http://www.microformats.org
Microsoft Gadgets: http://www.microsoftgadgets.com
ASP.Net AJAX (Atlas): http://atlas.asp.net
Live Clipboard: http://spaces.live.com/editorial/rayozzie/demo/liv…

 

Session 1: Evolving to Patterns –  Jim Newkirk
Jim gave an excellent discussion on Evolutionary Design and evolving your code to patterns.  I’m lucky enough to work in a company that has a commitment to pattern-based development, so there was nothing new to me in this discussion.  With that said, it is important to realize the by definition, Patterns are not new, but rather solutions to commonly encountered problems that can now be discussed and described by a common vocabulary.

Here are some of the points that Jim made that resonated with me:

A New Metaphor

Let’s forget the building architecture metaphor

Code is more malleable

Much more akin to Landscape Architecture

 

Patterns

When to apply

  • Apply during design
  • Apply when you see bad code

Simple rule of thumb

  • Second person pays
  • Introduce the pattern the second time you need the functionality.

 

Technical Debt

Occurs

  • Whenever you do something to reduce flexibility, you incur technical debt. (Hacks, compromises)
  • When debt is too high you rewrite (bankruptcy)

To fix

  • Remove duplication
  • Simplify code
  • Clarify your code’s content

It is your responsibility to “clean as you go.” You should always be cleaning the code.

 

Test Isolation

  • Make one change to cause a single test failure and see which other tests fail.
  • Shows good/bad test isolation
  • Shows objects that have dependencies that may need refactoring
  • Solve by using Stubs / Mocks

 

Session 2: Agile Presentation Layer Design – Andrew Flick (Product Manager, Infragistics) 
I haven’t been involved in UI design and development for many years now, so it was nice to hear more about this topic.  With that said, I don’t think an audience of developers and architects is necessarily the correect one for this talk.  He threw out a quote that I think backs up my assertion:

“Do engineers build bridges?  No, steelworkers build bridges.”

Another good quote is:

“The design isn’t complete when everything that is needed is in, but rather when everything that is not needed is removed.”

 

Session 3: Contractual Zen – Scott Hanselman, Patrick Cauldwell
Scott and Patrick tag-teamed through this presentation, handing off easily from one to the other, sometimes in mid-sentence.  It was a lot of information, so some of the items passed by me pretty quiclky, but luckily, my company is doing similar things. 

The gist of the discussion was that you can make your life easier and make your customers happier byt providing them with a contract-based API that they can program against while offering you the ability to make refactorings against the underlying legacy code.

Here is the synopsis:

Contraxploitation

Think:

  • About your service description
  • About multiple transports

Do:

  • Exploit your Contracts
  • Extend your reach to other systems
  • Put a stake in the ground

Feel:

  • Enabled to generate more code
  • Comforted by your layers of abstraction

 

Session 4: Security Patterns for Services –  Jason Hogg
A very smart guy talking about security stuff.  Here’s my notes: “Blah blah blah web service blah blah blah WCF blah blah blah blah security blah blah encryption blah blah blah patterns.”  Sorry if you aren’t getting anything out of this one, but that’s all I got out of it.  Looks like I might have to brush up on my WS security and encryption.  There was a bit about the Web Service Factory, but I was working on office stuff during that part.  I can’t multitask, period.  I’ve been told that it was very interesting. 

 

Session 5: Versioning Web Services 2.0 – Don Smith
Don was more putting forth ideas around some versioning guidance possibly due out in December.  His contention on versioning is that your contract’s members should all be optional and the validation of the data in the request message should occur on the receiving end.  I worked on an integration project last year that used this pattern to allow for integration between two disparate systems in my organization while leaving the two component systems decoupled from each other.  It worked very well.

 

Session 6: Reengineering to support workflow – Billy Hollis
Billy gave a great talk on workflow and workflow foundation.  Workflow foundation is going to be very helpful to any enterprise that needs to model and implement their business processes, like mine.  Here are some notes I took:

Types of workflow

Sequential workflow

  • flowchart-like workflow
  • Prescriptive, static

State machine workflow

  • Graph metaphor
  • Reactive, event-driven
  • Skip steps, go back, rework, handle exceptional cases

Elements of workflow

  • Work items – items to be worked on, documents, orders, prescriptions, etc
  • Rules/process (flow) – rules and logic that tell how items are to be worked upon

WF Tech Basics

  • Workflow is all composed of “activities”
    • Basic activity – individual step
    • Composite activity – contains other activities
    • Base activity library – OOB activity set
    • Expected third -party ecosystem
  • Workflow engine manages the activities and manages communications to outside processes
  • Workflow is hosted in some external host process (Windows Service, Windows Forms exe, console app, etc.)

WF Limitations

  • Does not address distributed workflows
    • You need your own architecture /design
  • Rules engine has no front-end
  • Limited connectors at first

Just like yesterday, itlate and time for bed.  Tomorrow is devoted to Development.  Should be a lot of great stuff.  If you haven’t already guessed, I highly recommend attending this conference if you can.

Just as an FYI, Don Smith offered a tour of the new PnP workspace on campus.  I’ll be going tomorrow with a small group of attendees.  I’ll bring my camera and post some pics tomorrow.

– Steve