0% found this document useful (0 votes)
30 views28 pages

CH12 Lecture - Sware Archi 0 Fwork 1-2

Uploaded by

Marwah Al-Helali
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views28 pages

CH12 Lecture - Sware Archi 0 Fwork 1-2

Uploaded by

Marwah Al-Helali
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 28

CHAPTER 12: SOFTWARE

ARCHITECTURE
Software architecture Framework
CSE 6234
SOFTWARE DESIGN
Learning Outcomes
• In this chapter student will learn:
• Understanding Software Design vs Architecture
• Software Architecture Definition
• Software Architecture Patterns
• Software Architecture Framework
AGENDA

• Good Software Architecture


• Software Architecture Patterns
• Software Architecture Framework
• "There are no right or wrong answers in architecture — only trade-
offs."
- Neal Ford
Old Traditional View of Architecture Vs Design
Current View Architecture Vs Design
Software Architecture Definition
• A software architecture pattern defines the high-level structure
and organization of a software system.
• It outlines the fundamental components, their interactions, and
the overall layout of the system. Architectural patterns guide
decisions about the system’s scalability, performance, and
maintainability.
• They focus on the system’s macro-level aspects and establish a
framework for the design and implementation of the entire
application.
• Your architecture should be based on your organization’s needs, not just
what you think is best. For example, if you’re working in an IT department and
want to make sure that all of your applications are running smoothly, then it’s
likely that a BizTalk infrastructure will be best for you.
• However, if you work at a small company with only one or two employees who
don’t have time to learn how to use SQL Server or other specialized software
tools, then it wouldn’t make sense for them to have access to those types of
resources unless they’re willing learners who can pick up new skills quickly
enough without causing too much disruption during business hours.
• Having a good architecture design is essential for software development
success
It’s like building the foundation of a house, and if it’s not strong enough, then
everything else will fall apart
Definition
• Frameworks: Frameworks are larger, more comprehensive sets of tools,
libraries, and conventions that provide a foundation for building software
applications. They have pre-made parts and rules to follow, making it easier
to create something without starting from scratch. For example, Django
and Ruby on Rails are frameworks that help build websites by providing
ready-to-use structures and tools.
• Architecture: Architecture is like the blueprint or plan for our software. It's
the big picture view that shows how all the different pieces of our
application fit together. Just like how a house needs a solid foundation and
a layout that makes sense, software architecture ensures that our
application is structured in a way that meets its requirements and can be
easily maintained and expanded upon in the futu
Factors Affecting Your Software Architecture
Decisions
Build a prototype early

• A prototype is the best way to get your thoughts and ideas down,
but it’s also a fast way to iron out any kinks. And you can use
existing code that someone else has already written for you;
whether it’s from GitHub or Google Docs, plenty of examples can
help get your prototype off the ground quickly.
Don’t get bogged down with requirements.
• In the early stages of software architecture, it’s best to focus on concepts
rather than final requirements. The best time to start thinking about software
architecture is before any requirements are even given. It’s best to focus on
concepts rather than final requirements. This will help you create a strong
foundation for your design and avoid getting bogged down by overly complex
conditions that can cause problems later in the process.
• To start this process, consider three broad categories:
• business goals,
• technical capabilities and strategies (including data structures), and
• organizational structures/roles/responsibilities.
• These three categories are often called “needs,” but they do not just need;
they’re also things you want to accomplish with your software system — and
these things needn’t be limited only by what you think they should be!
Interesting Software is Complex

Many aspects to the design of its


architecture
Architectural Design

Manage technical complexity.


Question

How do you describe a complex


architecture, without making it too difficult
to understand?

How do you describe a complex


architecture, without making it too difficult
to understand?
Architectural Views
Logical view Implementation view

Physical view
Context view

Process view

Deployment view
16
Architectural Views
• C4 Model[Brown, 2023]
• context, structure, behaviour, infrastructure
• 4+1 Views[Kruchten, 1995]
• logical, process, development, physical, scenario
• Software Architecture in Practice[Bass et al., 2021]
• module, component-and-connector, allocation
• NATO Architecture Framework[Team, 2020]
• concepts, service, logical, physical resource, architecture foundation
• The Open Group Architecture Framework (TOGAF) [Forum, 2018]
• ISO/IEC/IEEE 42010:2011[iso, 2011
Representing Architecture Views
Logical Implementation
Logical View View View
Functional Functional requirements
Requirements – Analysts/
Designers End-user Programmers
Deals with design, Structure Functionality Software management
packages, sub-
Use-Case
systems, and View
classes, layers, …
Process Deployment
Implementation View View
View – deals mostly System Integrators System Engineering
with programming Performance System topology
and organization of Scalability, Concurrency, Delivery, installation
the static software Throughput, Parallelism… Communication
modules & unit test

A View is a complete description (an abstraction) of a system from a particular view-


point or perspective – covering particular concerns and omitting others not
relevant to this perspective.
Different ‘views’ from different ‘stakeholders; different concerns.
A Model is a complete representation.
Architectural Styles
• An architecture style (also known as an “architecture pattern”) abstracts the common properties of a
family of similar designs. An architecture style contains a set of rules, constraints, and patterns of how
to structure a system into a set of elements and connectors. It governs the overall structure design
pattern of constituent element types and their runtime interaction of flow control and data transfer.
The key components of an architecture style are:
• elements that perform functions required by a system
• connectors that enable communication, coordination, and cooperation among element
• constraints that define how elements can be integrated to form the system
• attributes that describe the advantages and disadvantages of the chosen structure
Layered Style
• It is one of the most common types of architecture in software engineering. Organizes
software into horizontal layers, each responsible for distinct functionalities like presentation,
business logic, and data storage. Enables modular development and maintenance,
commonly used in web applications.
Use cases:E-commerce Platform: Separates user interface, business logic, and data storage
for efficient management and updates.
• Banking Application: Ensures clear separation between customer interactions, transaction
processing, and data storage.
• Content Management System: Segregates content presentation, management, and storage
for easier content updates.
Drawbacks:
• Communication overhead between layers can impact performance.
• Tight coupling risks if layer boundaries aren’t well-defined.
• May become overly complex with numerous layers.
Client Server Style
Event Driven Style Reference: https://www.linkedin.com/pulse/anti-patterns-event-driven-architecture-
arpit-jain/
Microkernel Architecture Style

https://www.oreilly.com/library/view/software-architecture-patterns/9781098134280/ch04.html
Microservice Style

https://microservices.io/patterns/microservices.html
Software Architecture Frameworks
• Frameworks (architectural patterns) provide an extensible template for applications within
a domain
• Shaw/Garlan patterns
• Dataflow systems – Virtual machines
• Batch sequential • Interpreters
• Pipes and filters • Rule-based systems
• Call-and-return systems – Data-centered systems
• Main program and subroutine • Databases
• OO systems • Hypertext systems
• Hierarchical layers • Blackboards
• Independent components
• Communicating processes
• Event systems

28

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy