Designing Software Architecture

Design of software architecture occurs in an iterative manner with the most fundamental decisions being made early in the SDLC as the purpose and characteristics of a software system are elicited. The key business drivers define the quality attributes, or behavior requirements, that strongly influence architect’s design decisions. The first iteration of the architecture design produces a skeleton of a system that addresses some of the “hardest” questions about the system and provides the grounds for refining the requirements. The iterative process continues until the sub-components of a software system are defined and documented to a point where a detailed design can occur commence without architect’s direct involvement.

Reference Architectures

A software architect must have a comprehensive understanding of the technical environment in which a software solution will reside. Mature and usually large organizations usually have volumes of Enterprise Architecture (EA) that contain guidance and identification of the as-is state of the enterprise and the future evolution. The volumes of EA usually represent different levels of abstraction, but have a common theme centered on a business domain. Parts of the EA are meant to be used as reference architecture to guide a software architect in design of a solution so that it fits snuggly into the existing enterprise and so that a solution can evolve graciously.

Microsoft has developed a comprehensive reference architecture that for its Windows Server platform. It’s a “detailed reference architecture, tested and proven in labs, that yields valuable implementation guidance for meeting the requirements of an enterprise.” Even non-Windows enterprise architects will benefit from the recommendations in the Microsoft’s reference architecture documentation.

For each type of service reference architecture contains an introduction, a blueprint, a planning guide, a build guide, and an operations guide. Out of many services covered some notable are network devices, storage devices, firewall, certificate, backup, network, directory, file, data, web application, middleware, and messaging.

Microsoft’s reference architecture is well organized, easy to use, and very comprehensive for both Microsoft and non-Microsoft centric architects.