Cours 1
Cours 1
Clements,
● Software Architecture Patterns - Mark Richards
COURSE CONTENT
(1) Motivating Example and Basic Terminologies
(2) Why Software Architecture: An illustrative Example
(3) The Main Concepts in Software Architecture
(4) Architectural Design Principles
(5) Software Architectural Styles
(6) Event-driven Micro-service Architecture
● (7) Clean Architecture
● (7) Study of Frameworks and Deployment Architectures
● (8) Cloud-based Architectures
● (9) Deployment of Mircroservice Architecture
Today's Lecture
Problem Solving for the Big Picture (Software Development)
●
Architectural Drivers
●
What do you need to do during the trip to ensure that you stay on the right track?
●
Generally, there are two extreme options in planning for such a trip:
●
●(1) Take your car and start driving. Figure things out along the way without any
preconceived plan.
●(2) Make a very detail plan for your journey: Service your care, make a well structure plan
including - figure out the route, note down the directions at every junction, plan for
contingencies such as a flat tire, plan where you're going to stop, and so on.
●The first scenario allows you to execute fast. The problem is that, more likely than not, your
trip will be very adventurous. Most likely, your route will not be optimal. If you want to
update your friend in Bamenda on when you'll be reaching the destination, your estimates will
vary wildly based on your current situation.
Without a long-term plan, your trip will be devastating unlike a well planned trip.
An example of a
Client-Server architectural
Are the above architectures identical?
●Every system has its own architecture and they are not identical.
Discuss
●
●
In the beginning of Software Development
Versus
Today’s Software Development
.
Question: Software development has evolved drastically such that our society highly depends on software.
●
Despite this advancement, is there a single software that can be used in all sectors?
●In the beginning software, software was small both physically and in scope. e.g FORTRAN a language for
scientific computing, COBOL, BASIC, PASCAL
● As software started to grow up;
● Languages like C introduce file linking -Enables organization of code and reuse of code.
●SIMULA-67, Smalltalk introduce objects -Enables organization of code into focused units that work with other
objects to perform larger tasks.
● And Today – We have more object-oriented programming languages like Java, Python, etc
● Frameworks, Containers, etc
● All that above have different software architectures on which they were constructed
● Software architecture has equally evolved overtime.
- Our Society Highly Depends on Software
●Software development has been the fastest-growing technology in human history. Despite the
advancement, there is not single software that can be used in all sectors.
Why?
●
●Answer: Software requirements varies from one system to another, therefore, there is no architecture that
encompasses the entire spectrum of software design and development possibilities, hence no single
software that can function in all sectors for different purposes.
What is Software Architecture?
●The word “architecture” means many different things to many
different people, and there are many different definitions published
on the Internet.
●If you look at most software systems, they’re actually composed
of multiple deployable units (e.g. applications or datastores), each
of which might be built using different technologies.
What is Software Architecture?
Software architecture (SA) defines (describes):
● The components of the software system and how the components use each other’s functionality and data.
● I.e The major components of SUT and how well these components communicate
●A software architecture is a creative activity that describes the various software components and
their relationships based on customers’ requirements.
● An example: client-server Architecture
●Servers provide some kind of service; clients request and consume services applications are located
with clients
● E.g. running on PCs and workstations;
way?
● Is there a consistent level of quality across the codebase?
●Do team members share the same vision for how the software will
be
● built?
●Does everybody on the team have the necessary amount of
technical
What is Architectural-Based Development
and
how can the complexity of large software be managed?
Why Architectural-based development
Application architecture style help define the basic characteristics and behavior of an application at a glance.
For example, some architecture pattern naturally lend themselves toward highly scalable applications, whereas
other architecture naturally lend themselves toward applications that are highly agile.
Though systematic way, knowing the design principle, characteristics, strengths, and weaknesses of each
architecture style is necessary in order to choose the one that meets the specific business needs and goals.
Architecture styles are templates for concrete software architectures. They specific the system-wide structure
properties of an application, and have an impact on the architecture level of its sub system. To choose the right
architectural style, architect have to rely on business goals and quality attributes.
The selection of an architectural style is therefore a fundamental design decision when developing a software
system.
The easiest way to describe the methodology of your research, is through the used of a well structured
architecture.
Why Architectural-based development
system?
●It involves gathering and
requirements. phase):SRSD
System Analysis Vs System Design
Software Design
●Software design is a creative activity in which you identify
software components and their relationships, based on a
customer’s requirements.
problem
Architectural Design Concepts: Cohesion and
Coupling
●Coupling and cohesion are methods to measure the relationship
between and within modules. A software system is divided into
multiple modules, where each and every module are capable of
performing a function independently. This technique is known as
Modularization
Coupling is the degree of inter-dependencies between software
●
modules.
●Cohesion is the degree of intra-dependencies within the
functionalities in a software component.
Cohesion and Coupling
● Software Architecture seeks to establish the following:
● (1) Which kind of components and connectors are used?
● (2) How is data communicated through the system
Quality Attributes in Software Architecture
(Architectural Drivers)
●Interoperability: Ability of a system or different systems to
operate successfully by communicating and exchanging
information with other external systems written and run by
external parties. I.e The degree to which two or more systems
(components) can usefully exchange information
●Maintainability: Ability of the system to undergo changes with a
degree of ease
●Correctness: Accountability for satisfying all requirements of the
system.
● Scalability -----
Principles of Architectural Design Process
Benefits of ADD
Attribute-driven Design
Example:
Suppose you're designing an e-commerce platform. Key quality attributes might include:
By applying ADD, you'd prioritize design decisions based on these attributes, ensuring your system meets critical quality goals
Architectural Viewpoints
●When a software system needs to be developed, there are many
external components (people, other software systems, other
hardware systems, etc) that have to interface with the system under
study (SUT).
●Different stakeholders have different interests in the system, and
so their perspectives of viewing the same system are different.
●The stakeholders’ requirements may overlap or may be different
from each other.
●This “stakeholder” influence on architecture makes it clear that
there can be different perspectives of viewing the software
architecture of one system. These perspectives have been
traditionally called “architectural views”
The Software Architect has to balance all these different
Architectural Views
● Application View:
● Deployment View:
●This view describes the mapping(s) of the software onto the
hardware and reflects its distributed aspects. It looks into system
requirements like reliability and performance. It maps the various
elements identified in the above three views. These views,
combined with a 5th the view, which is “use cases or scenarios”,
represents the entire architecture.
Exercise/TD
What are those indicators that could show that your software
●
●Propose to the management of this firm five (5) advantages a Microservice architecture will bring to the
organization.
●Assuming your proposal of a Microservice architecture has been accepted by the management and you are
now faced with the task of building of a Microservice architecture. What are your expectations?
Hints:
●
●- Identify sub components and their corresponding communication gateways, explain the concept of
attribute driven-design, state architectural drivers for the system with concrete reasons, explain the
principles of good Architectural Design Process.
- State the technology to be used for deployment with concrete reasons
●
- With reference to the chosen system, attempt to deduce a mathematical description of your
Software Architecture Styles
●Layered/Hierarchical Architecture
●Client-Server Architecture
●Object-Oriented Architecture
●Broker Architecture
●N-Tier Architecture
●2-Tier Architecture
●Why will project owners wish to incorporate architectural design
in their projects?
What are the various Software Elements/Components/ or Design
●
● Less Scalability
● Less reusability
● Tight coupling between components
● Maintenance cost is high
● Slow deployment
Characteristics of a Microservice Architecture
different ways.
●As well as decentralizing decisions about conceptual models,
microservices also decentralize data storage decisions. While
monolithic applications prefer a single logical database for
persistant data, enterprises often prefer a single database across a
range of applications - many of these decisions driven through
vendor's commercial models around licensing. Microservices
prefer letting each service manage its own database, either
different instances of the same database technology, or entirely
different database systems Decentralized Data Management.
(3) Evolutionary Design
Advantages of Microservice Architecture
● Highly Scalable
● Highly maintainable
● Rapid deployment
● Reusability of services
●Fault tolerant in case one service goes down, the other service
keep working.
The Microservice Way
● Speed and safety are the two key aspect of the microservices.
●These two keys are affected with the every single decision made
about the software.
●The microservices way is about finding the balance between these
two key aspect at scale:
● In Harmony:
Designing Microservice Architecture and
Establishing Foundations
A microservice design model consist of five parts: Service,
●
process itself.
●Processes and Tools: The behaviour of the system depends on the
process and tools used to build the microservice system.
●Tools and processes are related to software development, code
deployment, maintenance, and product management in the
microservice system.
- Development using a container – Docker
Service-Oriented Architecture (SOA)
●A service-oriented architecture is an architectural style/approach
(framework) for building systems or applications that use a set of
services over a network. A service is an implementation of a well-
defined piece of business functionality.
●SOA is an architectural style that supports integration of business
processes as linked services that may be accessed when needed over a
network.
●SOA is a software architectural style or design paradigm that uses
services over a network as the main building component.
●This architectural style describes a collection of distributed
components that provide and/or consume services.
The choice to use an SOA approach in the development of an
architecture depends on several factors including the architecture’s
ultimate ability to meet functional and quality attribute
requirements. Usually, an architecture needs to satisfy many
quality attribute requirements in order to achieve the organization’s
business goals. In almost all cases, trade-offs have to be made
between these requirements. In some cases, satisfying these
requirements may be easier using an SOA; on others, it may be
more difficult. If an SOA is being considered, several questions
need to be asked; for example:
Management
(A) With respect to your the above TP projects: (In class)
●
- Service-Oriented Architecture
●
TD/Exercises
You have been asked to conduct a research on two projects given below:
●Project 1: Design and Implementation of a Microservice-oriented System for the
Identification and Retrieval of Missing Documents.
Project 2: Design and Implementation of a Microservice-oriented System for
●
Disaster Management
Project 3: Domain-Driven Microservice Architecture for Educational
●
Management System
(a) Identify your research problem for any of the above projects
●
view for the system and hence explain 4 software architectural design
DEPLOYMENT OF MICROSERVICE ARCHITECTURE
DEPLOYMENT OF MICROSERVICE ARCHITECTURE
Center.