System Architecture is the most important aspect of any software project. Architecture is much bigger than implementation, languages, specific patterns or techniques, or even choice of specific technologies. Is the database you have chosen not quite up to the task after all? Well, as long as your architecture is right, you should be able to switch. Need to support mobile devices in addition to Windows and Web versions of your app? The right architecture will enable you to do so quickly! Architecture is longer lived than anything else in software, and architectural mistakes are among the most costly to make and one of the main reasons that software projects fail.