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!
