Tim Murphy's .NET Software Architecture Blog

Design

Frankentechtures

Monsters are an exciting thing to see in a movie. They are not so thrilling in your application architecture. I recently came up with (or at least I think I came up with) a term for architectures that are put together with mismatching parts and in ways the software gods never intended: Frankenstein Architectures. A co-worker then evolved that to Frankentechture. Of course the designer of a framework or an application platform can’t envision every possible use of their creation. How do you know then ......

Everything Isn’t Fixed With Another Layer Of Abstraction

Many developers say with a sarcastic tone “You can fix any problem with another layer of abstraction”. The question is if there is any truth to this. While abstraction can increase reuse, flexibility and testability it comes with a cost of complexity in readability and maintainability. If a developer has to spend a week learning how all the pieces of an application are put together there better be a payoff. Always ask yourself “what do we gain” when adding a new factory or dependency injection? Is ......

Getting Requirements Right

I had a meeting with a stakeholder who stated “I bet you wish I wasn’t in these meetings”. She said this because she kept changing what we thought the end product should look like. My reply was that it would be much worse if she came in at the end of the project and told us we had just built the wrong solution. You have to take the time to get the requirements right. Be honest with all involved parties as to the amount of time it is taking to refine the requirements. The only thing worse than wrong ......

Yet Another “Why Waterfall Doesn’t Work” Post

Lately I have been plunged back into an extreme waterfall project and it is eating away at my soul. Don’t get me wrong. I don’t really believe in a soul and I have never done a text book agile project, but the longer I’m on this project the more I feel like I’m in an infinite loop. Document. Review. Document. Review. At some point we may do some coding. The biggest problem with waterfall projects is that you can always add more detail to design documents. I have actually seen some documentation which ......

Why You Shouldn’t Build An App In 1 Page

I have seen a number of people boast that they have a 1 page web application design. Congratulations. Now ask yourself why you did that and what the impact that design has. There are reasons that we modularize applications. One reason is to give the user logical separation of functionality. The fact that the application transition from one screen to another give the user a visual queue that something significant has changed and they should take notice. From a development standpoint all-in-on design ......

Creating Corporate Windows Phone Applications

Most developers write Windows Phone applications for their own gratification and their own wallets. While most of the time I would put myself in the same camp, I am also a consultant. This means that I have corporate clients who want corporate solutions. I recently got a request for a system rebuild that includes a Windows Phone component. This brought up the questions of what are the important aspects to consider when building for this situation. Let’s break it down in to the points that are important ......

New Windows Phone 7 Stencil For Cacoo

I have created a stencil for wire framing Windows Phone 7 application in Cacoo. This is definitely a work in progress, but until it is complete I would suggest combining this stencil with the Android stencil that is available by default in Cacoo. Below are a couple of screen shots of the stencil so far. First here is what the stencil window looks like currently. Taking a closer look the main device frame is illustrated below Lastly is the button pallet which contains the icons from the Windows Phone ......

Wire Framing WP7 Apps With Cacoo

While looking for a free alternative to Sketchflow I landed on the Cacoo web site. Any developer who decides to use the free Visual Studio tools may find themselves doing the same search. The base functionality of Cacoo is free although there are certain features that have fees attached to them such as extended stencils and templates. Cacoo doesn’t seem to have a template for WP7. It does have templates for iOS and Android development so I started with the Android template and started modidfying ......

Discovering Your Project

The discovery phase of any project is both exciting and critical to the project’s success. There are several key points that you need to keep in mind as you navigate this process. The first thing you need to understand is who the players in the project are and what their motivations are for the project. Leaving out a key stakeholder in the resulting product is one of the easiest ways to doom your project to fail. The better the quality of the input you have at this early phase the better chance you ......

Why We Need UX Designers

Ok, so maybe this is really why I need UX designers. While I have always had an interest in photography and can appreciate a well designed user interface putting one together is an entirely different endeavor. Being color blind doesn’t help, but coming up with ideas is probably the biggest portion of the issue. I can spot things that just don’t look like they work right, but what will? UX designers is an area that most companies do not spend much if any resources. As they say, you only get one chance ......

Styling Windows Phone Silverlight Applications

If you have not developed with styles in Silverlight/XAML then it can be challenging and resources can be sparse depending on how deep you get. One thing that you need to understand is what level you can apply styles and how much they can cascade. What I am finding is that this doesn’t go to the level that we are used to in HTML and CSS. While styles can be defined at a page level if you want to share styles throughout your application they should be defined in the App.xaml file. This is of course ......

Alternate OOXML Document Generation Approach

Eric White has put out a document generation example which uses XPath and Word Content Controls. I applaud Eric for the amount of work he has done with his exploration of different ways to perform template base generation. This is a subject that is challenging and we need as many ideas as we can get. There are a couple of areas that I see room for improvement in this XPath design that I would like to bring up. The first is that Eric has chosen to put his document generation in the document itself. ......

What Is INET_ATON And Why Is It In A Database

While converting some MySql databases to SQL Server I ran across this function. Confused by the lack of hints to its purpose in the name I did what any red-blooded IT person would do… look it up. It turns out that this function turns the string representation of an IP address into a long integer. What good that does I am still not sure, but here is the jist of the operation. (octet1 * 256^3) + (octet2 * 256^2) + (octet3 * 256) + octet4 Simple enough, right? Now for the real question. What the heck ......

October 2010 Chicago Information Technology Architects Group Wrap Up

Earlier this week Mike Vogt and I presented an introduction to design patterns. While I think that all developers should understand design patterns I don’t believe you can be a good architect unless you a firm grasp of patterns at at the application, system and enterprise levels. We had some fun with the subject by alternating between .NET and Java examples. I think if we had hidden certain parts of the IDE we could have challenged the attendees to tell us which example was in C# and which was in ......

Review: Head First Design Patterns

Design patterns are an important part of understanding the best practices of software development. Head First Design Patterns is another great book in the Head First series which takes a more story based teaching approach. As you get past the format of the book there are specific things that I like about the subject matter coverage. Rather than just laying out the name, problem and solution for each of the original patterns, they compare and contrast them. In some cases they even pull in patterns ......

New User Group Name and October Presentation

For reasons that I will not discuss here the Chicago Architects Group has changed its name to the Chicago Information Technology Architects Group. It is the same great group of people discussing topics that are of interest to IT architects of all flavors. Whether your responsibilities are at an enterprise, solution or application level there is something here for you. For October the topic will be design patterns presented by Mike Vogt and myself. Mike has a Java background so we will be alternating ......

nPlus1.org ArcSummit Wrap-up

On December 7th I presented at the nPlus1.org ArcSummit. My talk was on Dependency Injection and Inversion of Control containers. Thank you to all those who attended. When we were done Chris Woodruff and I were asked to record an episode of The Thirsty Developer. It was a great experience seeing how these shows are put together and being able to just sit down and talk with Dave Bost, Clark Sell and Chris Woodruff. I’ll post again when the episode comes out. The slides for the presentation are available ......

Assumptions Kill Projects

Most people have heard the old saying about assumptions. Something about making something out of you and me. Well it is true. I recently got into a crunch situation with a client and experienced this first hand. It doesn't matter if it is requirement or team responsibilities. Anything that is not recorded or communicated is a risk. I know that different methodologies have differing opinions on documentation, but in the end all of them seem to agree that communication is the key. It should be well ......

Photography Can Teach Different Ways To See Design

This is becoming a trend for me taking different hobbies in my life and applying them to my job (which also happens to be my hobby). One way that you can learn to take better images is to work through assignments. These can be challenges from a group, a paid project or self assignments. This is the way I learned .NET 2.0 and how I will approach learning VS2008. With 2.0 I rewrote my wife's web site. The other things that these assignments teach is looking at things from different perspectives. Take ......

Rocky On Polymorphic Podcast

Craig has scored again. While he may have had some technical difficulties on this episode the content was right on. He put a number of tough questions to Rocky including what his toughest project situation was and his approach to object modeling. I found it interesting the way he mixes use cases with CRC cards. It goes to show that we should not be too rigid with the way we approach designing solutions. You do not have to follow a methodology to every minute step. Take what works for the particular ......

Team Foundation Server Frustration

Did someone set the way-back machine for 2001. I am trying to setup up a virtual server with TFS and it feels like I am installing Sharepoint Portal Server 2001. It is so unforgiving that if you miss a step it is hosed and it leaves you little or no way to fix the problem. It expects things the way it wants them and that is that. Of course some will say "just follow the instructions silly", and they would be right to a point. Still, I think application setup tools should be forgiving and make as ......

Gathering Requirements From A User Perspective

My wife asked me some questions out of frustration the other day which got me thinking. She wanted to know why I would ask here if she had plugged in the camera when she called me at work asking how to download her pictures? Why would I ask one of our friends what that friend wanted to do with the computer she was going to purchase when what she asked was what I thought was a good computer? This woman is a mother with three small children, what would I think she was going to do with it? Looking back ......