As developers gear up for Microsoft Certified Application Developer (MCAD) and Microsoft Certified Solution Developer for .NET (MCSD.NET) certifications, they probably dread the thought of taking the Solution Architectures exam. This is one of those skill sets for which you can study like mad, repeat the courses and exam several times, and still not understand what it is about.
Some say the exam pushes Microsoft marketing and politics, and others say it's a sophomoric take on the greater idea of architecture as a science. Regardless of your opinion about the exam and its subject matter, it's a must for MCSD.NET certification. Although the exam isn't yet available, we can count on certain topics being covered on the exam, such as these six functions:
Are you interested in certification?
If so, check out these other certification articles:
- "Can certification aid your job search?"
- "New .NET certifications"
- "Certify your XML knowledge"
- "Becoming a Sun Certified Programmer for Java"
Passing the exam
As with the Open Systems Interconnection (OSI) model for MCSEs (which consists of seven layers: application, presentation, session, transport, network, data link, and physical), MCSDs can't know the following list of six functions too well. They apply to everything you do as a developer and will most certainly show up on the exam.
When judging the performance of a system, consider both expectations and actual performance. For performance purposes, everybody would like to have the best available, such as T1 bandwidth for their PDAs or a Web server to hook up to a tandem array of terrestrial and celestial DS1s. But, when you consider expectations, you may be able to save a nickel or two by going with a slightly lower, yet still acceptable, level of performance.
The same thing goes for availability. You have to weigh expectations against actual availability. You may want 24/7 uptime, but if you know that none of the 200 data entry clerks that use it will be using the system after dark, you might consider a lower but acceptable level of service.
All security breaks down to authentication, encryption, and auditing. When dealing with security, the OSI model is a big consideration. These three functions may be implemented in a variety of ways and at every level of the OSI model. When architecting a security model, you must find the appropriate mix and match of security functions to perform at each of those levels. You don't want to lock your users out of vital functions, but you also don't want to expose critical functions that users could use in ways that are harmful to the organization.
Intranets based on Microsoft products—be they NT, 2K, .NET, or DNA—all share one feature that makes them particularly well suited to corporate intranets: security. If you stick to the Microsoft security mechanisms, you're going to have a Department-of-Defense-quality security infrastructure. But in the past, that same feature has made these systems poorly suited for the Internet. After all, the idea is to get folks into your system, not keep them out. (How many users of Yahoo keep the same passwords for several years? How many folks on your corporate LAN do you want doing that?)
In my experience, scalability has been a major stumbling block in the development of intranet applications. Some products, which were supposed to be quick fixes, turned out to be mission-critical apps that were used for years beyond their planned life spans. Others, which were designed as mission-critical applications, couldn't live up to their promises because under load, they failed. The key to scalability is to routinely use good programming practices regarding object modeling, bandwidth throttling, and other factors of scale.
Maintainability means that a deliverable application is not a complete black box. Over time, user applications often require some sort of administrative functions to be performed. Also, behind-the-scenes functionality (e.g., sales and payroll tax calculations) change. These changes must be easily reflected in the application.
Extensibility means being able to add new features, perhaps from a user-submitted wish list. Often after users work with a new application, they come up with new features that would help make their jobs more efficient, etc. Having the ability to add such requested features is important to development and should be considered during the development process.
Functions integral to architecture
Whether you're building the next DiscountStock.com or managing mainframe data for the local refinery, good architectural practices are an absolute must. That means that your project managers must be highly skilled architects, and your developers must have faith that the products they're being told to build will hold up under load. That's where these functions are key.
Remember, for each of the six functions listed, you must perform a balancing act: How much of each do you need, how much do you want, and how much can you afford? Addressing such questions is essential in the early stages of network-based solution architectures. And, if you're a .NET developer, applying these considerations to every phase of development will help prepare you for the Solution Architectures exam.