SWE 3203
Software Architecture &
Design
By:
SANAH A. MUAZ
School of Computing
MAAUN University Kano
Design Principles
• There are core expectations placed on a software architect irrespective of
any given role, title, or job description
• Make architecture decisions
• Continually analyze the architecture
• Keep current with latest trends
• Ensure compliance with decisions
• Diverse exposure and experience
• Have business domain knowledge
• Possess interpersonal skills
• Understand and navigate politics
• The first key to effectiveness and success in the software architect role
depends on understanding and practicing each of these expectations.
Make Architecture Decisions
• An architect is expected to define the architecture
decisions and design principles used to guide technology
decisions within the team, the department, or across the
enterprise
• An architect should guide rather than specify technology
choices. For example, an architect might make a decision
to use [Link] for frontend development.
Continually Analyze the Architecture
• An architect is expected to continually analyze the architecture and
current technology environment and then recommend solutions for
improvement.
• This expectation of an architect refers to architecture vitality, which
assesses how viable the architecture that was defined three or more
years ago is today, given changes in both business and technology.
• In our experience, not enough architects focus their energies on
continually analyzing existing architectures
• As a result, most architectures experience elements of structural
falling-off, which occurs when developers make coding or design
changes that impact the required architectural characteristics, such
as performance, availability, and scalability
Keep Current with Latest Trends
• An architect is expected to keep current with the latest
technology and industry trends.
• Developers must keep up to date on the latest technologies
they use on a daily basis to remain relevant.
• An architect has a critical requirement to keep current on
the latest technical and industry trends. The decisions an
architect makes tend to be long-lasting and difficult to
change.
• Understanding and following key trends helps the architect
prepare for the future and make the correct decision.
Ensure Compliance with Decisions
• An architect is expected to ensure compliance with architecture
decisions and design principles.
• Ensuring compliance means that the architect is continually
verifying that development teams are following the architecture
decisions and design principles defined, documented, and
communicated by the architect.
• Consider the situation where an architect makes a decision to
restrict access to the database in a layered architecture to only
the business and services layers (and not the presentation layer).
• A user interface developer might disagree with this decision and
access the database (or the persistence layer) directly for
performance reasons.
Diverse Exposure and Experience
• An architect is expected to have exposure to multiple and diverse
technologies, frameworks, platforms, and environments.
• This expectation does not mean an architect must be an expert in
every framework, platform, and language, but rather that an
architect must at least be familiar with a variety of technologies.
• Most environments these days are heterogeneous, and at a
minimum an architect should know how to interface with multiple
systems and services, irrespective of the language, platform, and
technology those systems or services are written in.
Have Business Domain Knowledge
• An architect is expected to have a certain level of business
domain expertise.
• Effective software architects understand not only technology but
also the business domain of a problem space.
• Without business domain knowledge, it is difficult to understand
the business problem, goals, and requirements, making it
difficult to design an effective architecture to meet the
requirements of the business
• Imagine being an architect at a large financial institution and not
understanding common financial terms such as an average
directional index, aleatory contracts, rates
Possess Interpersonal Skills
• An architect is expected to possess exceptional
interpersonal skills, including teamwork, facilitation, and
leadership
• Having exceptional leadership and interpersonal skills is a
difficult expectation for most developers and architects.
• As technologists, developers and architects like to solve
technical problems, not people problems.
Understand and Navigate Politics
• An architect is expected to understand the political climate of
the enterprise and be able to navigate the politics.
• It might seem rather strange talk about negotiation and
navigating office politics in a book about software architecture
• To illustrate how important and necessary negotiation skills are,
consider the scenario where a developer makes the decision to
leverage the strategy pattern to reduce the overall cyclomatic
complexity of a particular piece of complex code.
Architectural Thinking
• An architect sees things differently from a developer’s point of
view, much in the same way a meteorologist might see clouds
differently from an artist’s point of view
• This is called architectural thinking. Unfortunately, too many
architects believe that architectural thinking is simply just
“thinking about the architecture.”
Architecture Versus Design
• The difference between architecture and design is often a
confusing one
• Where does architecture end and design begin?
• What responsibilities does an architect have versus those of a
developer?
• Thinking like an architect is knowing the difference between
architecture and design and seeing how the two integrate
closely to form solutions to business and technical problems.
The difference
The difference
• To make architecture work, both the physical and virtual
barriers that exist between architects and developers must
be broken down
• Thus forming a strong bidirectional relationship between
architects and development teams.
• The architect and developer must be on the same virtual
team to make this work, as depicted in preceding diagram