Software Architecture and Design

Home » Software Architecture and Design » Software Architecture and Design
Illustration of a software system architecture (cloud computing)

There are two main reasons why I created this blog. I wanted to pass on my experience, and also engage in conversation with other developers about:

  1. Software Architecture
  2. Software Design

What is Software Architecture?

By software architecture, I mean the format and layout of physical systems, e.g. Visual Studio Solutions consisting of individual projects, classes, methods and visual components. Higher level architecture, such as the relationship between different component parts of a system, are also covered.

What is Software Design?

By software design, I mean the process and results of this process that make us arrive at a particular architecture.

I do intend to cover detailed design or individual parts of systems, but less so than the above.

So to summarise:

  1. The software design process, leads to:
  2. High level architecture, leads to:
  3. More detailed design of individual components into layers and individual classes and methods
  4. Not forgetting tests, both of the unit kind and acceptance and regression tests

Upcoming blog posts

I have two series of blog posts planned which I will do this year:

  1. Layered Architecture Examples in .NET – taking the reader through the thought process and trade-offs involved in making a layered system design
  2. I have long been a fan of TDD, clean code, DDD (domain driven design) and having the code document itself and show intent as clearly as possible, to me, this results in the best quality software. However on some projects I have worked on, using tools like NCrunch, result in programming teams focussed on ensuring that every possible line of code is tested, and a suite of tests that effectively multiply the size of a system 5 times (needing 5 lines of code to test every line of code in the system) and a project that focusses inwardly on itself rather than outwardly to meeting user requirements. Tests should just be business level – these are the important items that need implementing properly and covered by tests, not every single line of code (in my view). I have recently read a book on BDD (see the section on Software Architecture and Design Books on this blog) that puts testing at the right level in the project, i.e. at the business level, and across all members of the team, not just the developers, from the very start of the project. I would like to review this book and these concepts in a series of blog posts later this year once I have some practical experience of it.

Hopefully this will just be the start. I hope to expand on these two subjects and make them the main core of this blog guided of course, by user feedback via the comments on this blog.

Regarding BDD, a good place to start for a .NET developer is the Spec Flow project. The subject of software design and architecture is clearly a big subject that will take time to cover properly, especially when I consider that there are many other areas that a developer comes across in day to day work, plus the fact I would like to help beginners with this blog and I have a full time job as well. Watch this space!

About Phil

I have been working as a software developer since 1983. This blog could have been called "From Fortran 77, C and Cobol to C# in 20 (not so) easy years", but it doesn't sound quite right somehow. Besides I'm talking about what's happened since 2003, not before!

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Top Posts & Pages


Recent Posts

Recent Comments



  • Mike Cohn's Blog
  • Scott Hanselman's Blog

I’ve been quite adamant lately that story points are about time, specifically effort. But that does

I've been getting more and more emails lately from people confused about the difference between

Transitioning to Scrum is worth it, but some aspects are challenging. 

Recapping our agile podcast’s initial launch series of topics

- Scott Hanselman

I am not a Home Assistant expert, but it's clearly a massive and powerful ecosystem. I've

- Scott Hanselman

I was reading Gabby's blog post about the new TypeScript/JavaScript project experience in Visua

- Scott Hanselman

I've talked about how I love a nice pretty prompt in my Windows Terminal and made videos showin

- Scott Hanselman

I wrote a Tiny Virtual Operating System for a 300-level OS class in C# for college back in 2001 (?)

- Scott Hanselman

If you're excited about Hot Reload like me AND you also want an "A" grade from Securi