So, let's look at these three characteristics one by
one. Scalability for software architecture is its ability to handle
the growth of the software system. For example, for a
web based system, scalability could be the ability to handle
a larger workload by adding new servers to the system.
Scalability is therefore an important characteristic of a software architecture,
especially for the kinds of systems that can grow over
time. So, we're going to mark it as an ideal characteristic.
Cohesion is a measure of how strongly related are
the elements of a module. Clearly, we should shoot
for high and not low cohesion when developing a
system. We want to develop modules whose elements cooperate to
provide the specific piece of functionality rather than modules
consisting of a bunch of elements that provide different
unrelated pieces of functionality. Therefor, low cohesion is definitely
not something that we want. We want high cohesion instead.
As for coupling, coupling is a concept related to cohesion
and is also a measure. In this case though, it
is a measure of how strongly related are the different
modules in a system. Low coupling, which is often correlated with
high cohesion, is an important and ideal characteristic of a
software architecture as it indicates that the different modules in
the system are independent from one another. Each module provides
a specific piece of functionality and it can provide it without
relying too much on other modules.
Basically, systems characterized by low coupling
and high cohesion, are systems that are easier to understand, and to maintain.