Architecture

This section is dedicated to Solutions Architecture and Software Development. The general description of a Solutions Architect role is available here.

"Architecting is the specification of a system that, when constructed, will exhibit required properties. In other words, architecting is the creation of descriptions of a system that are suitable for evaluation and serve as plans for implementation. The description of a system must include the specification of quality attributes and the description of the design in terms of software structures that will implement those properties.", Albin, Stephen T. (2003). The Art of Software Architecture: Design Methods and Techniques. Indianapolis, IN: Wiley Publishing, Inc.

"From an enterprise point of view, there are four types of architecture:

    • Business architecture
    • Information technology (IT) architecture
    • Information architecture
    • Application (software) architecture

Collectively, these architectures are referred to as enterprise architecture."

Albin, Stephen T. (2003). The Art of Software Architecture: Design Methods and Techniques. Indianapolis, IN: Wiley Publishing, Inc.

Suggested reading:

Architecting Microsoft .NET Solutions for the Enterprise,

Microsoft Application Architecture Guide, 2nd Edition 2009 (link) on MSDN,

Design Guidelines for Developing Class Libraries (link) on MSDN.

Object-Oriented Principles

Code should adhere to principles of good Object-Oriented design. Read more on OO Design page.

Versioning

See page about Branching and Feature Management.

Domain-Driven Design

For a quick introduction to Domain-Driven Design, read "Domain-Driven Design Quickly" from InfoQ (link).

    • Introduction to Domain-Driven Design, MSDN Magazine (link)

Components and Services

In the text about Dependency Injection and Inversion of Control (link), Martin Fowler gives definitions of Components and Services.

Links and References

    • InfoQ community (link)
    • A Practical Guide to Software Architecture blog (link)