You are on page 1of 16

INF 462

Software
Architecture:
Architecture drivers
Course objectives

Understand and know what to


think about when building a
software system.
II - Architecture-Drivers
The easiest way to understand the
term “architectural drivers” is to think
about it in a literal sense. Architectural
drivers are a number of early made
decisions driving the design process
and leveling the path to the resulting
software architecture. You can also
think of them as guidelines that should
be carefully considered by every
software architect while pondering all
the possible design alternatives

www.regisatemengue.com
II - Architecture-Drivers

Functionnals Requirements
In order to design software, you need to know
something about the goals that it needs to satisfy.
To some extent, requirements drive architecture. If
you ever find yourself at a whiteboard, designing
software from a technical perspective, without
really understanding who is going to be using your
software and what they might want to do, stop. If
this sounds obvious, it’s because it is
II - Architecture-Drivers
2. Quality Attributes (non-functional requirements)
Performance is about how fast something is, usually in terms of response time or latency.
PERFORMANCE

Scalability is basically about the ability for your software to deal with more users, requests, data, messages, etc. Scalability is
inherently about concurrency, and therefore dealing with more of something in the same period of time (e.g. requests per
SCALABILITY
second).

Availability is about the degree to which your software is operational and, for example, available to service requests.
AVAILABILITY

Security covers everything from authentication and authorisation, through to the confiden- tiality of data in transit and storage.
As with performance, there’s a high probability that security is important to you at some level. Security should be considered
SECURITY for even the most basic of web applications that are deployed onto the Internet. The Open Web Application Security Project
(OWASP) is a great starting point for learning about security.
II - Architecture-Drivers
2. Quality Attributes (non-functional requirements)
Related to security is privacy, and it’s worth being aware of new regulations such as GDPR if you’re handling data from
PRIVACY users who reside in the European Union.

What would happen if you lost a hard disk, a server or a data centre that your software was running on? This is what
DISASTER RECOVERY disaster recovery is all about.

Accessibility usually refers to things like the W3C accessibility standards, which talk about how your software is
ACCESSIBILITY accessible to people with disabilities such as visual impairments.
II - Architecture-Drivers
2. Quality Attributes (non-functional requirements)
Monitoring typically provides a read-only view of a software system, and sometimes there will be runtime management
requirements too. For example, it might be necessary to expose functionality that will allow operational staff to modify
MANAGEMENT
the runtime topology of a system, modify configuration elements, refresh read-only caches, toggle features on/off, etc.

Flexibility is a somewhat overused and vague term referring to the “flexibility” of your software to perform more than a
FLEXIBILITY single task, or to do that single task in a number of different ways.

Extensibility is also overused and vague, but it relates to the ability to extend the software to do something it doesn’t
do now, perhaps using plugins and APIs. Some off-the-shelf products (e.g. Microsoft Dynamics CRM) allow non-
EXTENSIBILITY
technical end-users to extend the data stored and change how other users interact with that data.
II - Architecture-Drivers
2. Quality Attributes (non-functional requirements)
Many software systems, particularly those deployed on the Internet to a global audience, are no longer delivered in a
single language. Internationalization refers to the ability to have user-facing elements of the software delivered in
INTERNATIONALISATION (I18N)
multiple languages.

Related to internationalisation is localisation, which is about presenting information such as numbers, currencies, dates,
etc in the conventions that make sense to the culture of the end-user. Sometimes internationalisation and localisation
LOCALISATION (L10N)
are bundled up together under the heading of “globalisation”.
II - Architecture-Drivers
3.Constraints
Everything that we create as software developers lives
in the real world, and the real world has constraints. Like
quality attributes, constraints can drive, shape and
influence the architecture of a software system.
Constraints are typically imposed upon you, either by
the organization that you work for or the environment
that you work within. Constraints come in many
different shapes and sizes.
II - Architecture-Drivers
3.Constraints

Time and budget constraints


Technology constraints
Approved technology lists
Existingsystemsandinteroperability
Target deployment platform:
Technology maturity etc ...
People constraints
How large is your development team?
What skills do they have?
How quickly can you scale your development team if needed?
Organisational constraints
II - Architecture-Drivers
4. Principles

Development principles
Coding standards and conventions:
Automated unit testing:
Static analysis tools:
etc.
Architecture principles
Layering strategy:
Placementofbusinesslogic
High cohesion, low coupling, SOLID,
etc:
Stateless components:
Stored procedures:
Domain model - rich vs anaemic:
III - Architects
The software architecture role
III - Architects
Technical Leadership
Whatever software architecture you create needs to be taken care of.
Somebody needs to look after it, evolving it throughout the delivery in the
face of changing requirements and feedback from the team. If a software
architect has created an architecture, they should own and evolve that
architecture throughout the rest of the delivery too. This is about
continuous technical leadership rather than simply being involved at the
start of the life cycle and hoping for the best.

@regis_ate www.regisatemengue.com
III - Architects

Consider Figure which illustrates the traditional responsibilities an architect has, as compared to those of a develope

@regis_ate www.regisatemengue.com
III - Architects
Software architects and coding
the question is Should software architects write code?
The Wikipedia page for “Architect” says the same thing:

Throughout ancient and medieval history, most architectural design


and construction was carried out by artisans—such as stone masons
and carpenters, rising to the role of master builder.

@regis_ate www.regisatemengue.com
III - Architects
the skills and knowledge of a software architect
Technology skills
Soft skills
Collaborate or fail
Domain knowledge

@regis_ate www.regisatemengue.com

You might also like