Difference Between Software Architecture and Software Design | Scott Duffy

Difference Between Software Architecture and Software Design | Scott Duffy

Hi there! This is Scott from SoftwareArchitect.ca. In this video we’re going to talk about the difference between
software architecture and software design. First let’s talk about software
architecture. Software architecture is the big picture. It is the what and where
of the software design process. This is where you decide what it is that you’re
going to be doing, how you’re going to be implementing the business requirements
at that high level. The way that servers are arranged, OK, the where of it.
Where’s data going to get stored? Which components are we going to be needing? We’re
talking boxes and lines. We’re talking about the big picture. There are
architectural patterns. So architectural patterns are going to be whether it’s an
n-Tier Architecture, MVC, cloud-based. All of the way that software can be
designed, you’re making these decisions at this stage. You’re also making certain tradeoffs. When we’re
dealing with the non-functional requirements, the way that the system has
to perform, the availability requirements. We’re starting to see that we’re going
to need to have more servers. We’re going to need to have backups. The database is
going to have to be running in a cluster. Examples like that. We’re making
decisions based on non-functional requirements as well as business
requirements. It’s important to note that the software
architect does almost all of this work before the coding begins. So you’re
not going to be making decisions about whether to run MVC, or cloud, or other
model in the middle of the development process. Those decisions have to be made
well up front because they impact software design. Software design is the how of the
software development process. Now you’ve got the business requirements. They’ve gone
through the architecture step. And now it’s up to the software designer to
think about classes, functions, ok? This is that level of detail below the
high-level view of how we’re going to be doing certain things. So this is fairly low level stuff. If
you’re going to need to create an API… Let’s say you go for a services model of
the implementation. Well if you’re going to have to create back-end API’s, the design level
is where you write the API specs. This is the contract, the interface, between the
front and the back end. And so this is done during the design phase. Therefore
when they get into the coding phase, the front end developers can work to that
spec and the backend developers can work to that spec. And just like the
chunnel, they meet in the middle. So that is the fundamental difference between
architecture and design. Architecture concerns itself with the big picture.
It’s the what we’re doing and where that’s going to live. And the design
phase has got to do with the how of what you’re doing. So now you have the
requirements that come to you and you have to figure out now exactly how we
going to do this? How does A talk to B? Where’s the data being stored? All the table names,
things like that. So that’s the difference between architecture and design. I hope that’s clear. If it’s not leave a comment! I’m always open to respond to you. Talk to you guys again. Thank you very much!

27 thoughts to “Difference Between Software Architecture and Software Design | Scott Duffy”

  1. Wow… this is exactly the oposite of how I would explain it. From my point of view the architecture is how you build something and the design is what you build. This further supports that the same architecture can support different software systems and the same software system can be implementet using different architectures. There is no black/white line between architecture and design so I guess you could argue for both opinions.

  2. Description was good.Can you please take one requirement as example and explain software design of that for more clear picture?

  3. Where would you place the decisions about i18n? Let's say we have a requirement to implement multilingual support and need to choose which way to implement it, whether we roll our own or we use existing framework capabilities, or perhaps a third party library. Does this fall under architecture, design or something else?

  4. Plz you look so experienced but what the hell you are doing. Your video target is to make difference b/w Software Architecture and Software Design. But in the explanation of Architecture you are using the term 'design'
    making circular definition.

  5. architect defines the components and interfaces and leaves implementation out. api will be declared / defined by architect as part of architecture. designer will decide exact language, framework, libraries, protocols and actual code artifacts that implement those interfaces. architect does not just say its client, server block and connects it. api interfaces need to be allocated to those blocks.

  6. I know architecture. I'm a Master of Architecture! It is about buildings, not software. Pick another fancy word. Like "Evangelist"!

  7. I think that there is some ambiguity with terms. In my understanding the term "Solution Architecture" is exactly what author describes as "Software Architecture". And "Software design" is exactly what I name the "Software architecture". So it becomes that: Solution is what are going to do. And Software is exactly how we are going to implement these requirements.

  8. As you're talking that software architecture is a big picture but I've studied that
    "Software Architecture is a subset of Software Design"
    so how it could be a big picture? Please elaborate this if i'm wrong.Thanks

  9. You did unforgettable big pictures those are what, where and how.
    guys take architecture as blueprint and design as a construction of the building.

Leave a Reply

Your email address will not be published. Required fields are marked *