subexpert.com
ACKNOWLEDFMENT
• Lectures areprepared from:
• Software Design: Creating Solutions for ill Structured Problems
• Budgen, D., CRC Press
• AI Generated contents using Co-Pilot, ChatGPT and Bard
• In addition, there are other examples and code snippets from other sources which are mentioned on
respective slides
2
3.
subexpert.com
Topics
• Overview
• HighLevel Summary
• Course Objectives
• What is Software Architecture
• Career Path
• Importance
• Architecture Impacts
• Architectural Style
• Styling Features and Evolution
• Example
4.
subexpert.com
Overview
• Designing, developing,and evolving complex software systems
requires a mastery of analytical and technical skills, as well as a
knowledge of appropriate processes, architectures and design
patterns.
• Software architects building complex systems must create the
illusion of simplicity through decomposition, abstraction, and
encapsulation of functionality.
5.
subexpert.com
High Level Summary
1.Envisioning Architecture
2. Creating an Architecture
3. Analyzing Architectures
4. Moving From One System to Many
5
6.
subexpert.com
1. Envisioning Architecture
•Basic Concepts
• Pre-requisites
• What Is Software Architecture?
• The Architecture Business Cycle
• A-7E Avionics System: A Case Study in Utilizing
Architectural Structures
2025/3/13 6
7.
subexpert.com
2. Creating anArchitecture
• Understanding Quality Attributes
• Achieving Qualities
• Air Traffic Control: A Case Study in Designing for High Availability
• Designing the Architecture
• Flight Simulation: A Case Study in an Architecture for Integrability
• Documenting Software Architectures
• Reconstructing Software Architectures
2025/3/13 7
8.
subexpert.com
3. Analyzing Architectures
•The ATAM: A Comprehensive Method for Architecture Evaluation
• The CBAM: A Quantitative Approach to Architecture Design Decision
Making
• The World Wide Web
A Case Study in Interoperability
2025/3/13 Software Architecture: Module 1 8
9.
subexpert.com
4. Moving FromOne System to Many
• Software Product Lines: Re-using Architectural Assets
• CelsiusTech: A Case Study in Product Line Development
• J2EE/EJB: A Case Study of an Industry-Standard Computing
Infrastructure
• Software Architecture in the Future
2025/3/13 Software Architecture: Module 1 9
10.
subexpert.com
10
Course Objectives
• Throughstudy of this course, the students will be able to understand, design and
analyze systems from an architectural viewpoint.
• They will be able to:
1. Discuss software design principles and its processes
2. Demonstrate various software architecture styles and patterns using modelling tools.
3. Compare different software architectures and their processes.
4. Select an appropriate design pattern for an application.
5. Create an application using an appropriate design pattern in a team environment.
6. Capture quality requirements with quality scenarios and achieve them by applying
architecture tactics
7. Document architectural decisions
11.
subexpert.com
What is SoftwareArchitecture?
• Focus on how applications are composed, and how their
operations are organized
• Architecture captures the way something is constructed and
how it functions
• Architecture can describe an application
• Make the major parts of application as independent of one
another as possible
• Keeping coupling to a minimum
12.
subexpert.com
What is SoftwareArchitecture?
• An architecture is
• the set of significant decisions about the organization of a software system,
• the selection of the structural elements and their interfaces by which the system is
composed, together with their behavior as specified in the collaborations among
those elements,
• the composition of these structural and behavioral elements into progressively
larger subsystems, and
• the architectural style that guides this organization these elements and their
interfaces, their collaborations, and their composition.
• [BRJ99]
• The common theme is that it has to do with the large scale ,the Big
Ideas in the motivations, constraints, organization, patterns,
responsibilities, and connections of a system (or a system of
systems). 12
subexpert.com
2025/3/13 14
Career Path
•Set your sights on becoming an expert in software
engineering
• gather broad experience
• develop technical, leadership,
communication and people skills
Individual
Contributor
Software
Engineer
Senior
Software
Engineer
Team
Leader
Architect
Increasing responsibility, scope and challenge
15.
subexpert.com
Why is learningknowledge about
architecture important?
• Software architecture is not emphasized in software engineering
course;
• The development of a large software system is far beyond design
and programming;
• A software architecture is the development product that gives
the highest return on investment with respect to quality,
schedule, and cost.
2025/3/13 15
16.
subexpert.com
Structural Foundation
Software architectureprovides a blueprint for the system and ensures that the software meets its
functional and non-functional requirements.
Quality Attributes
A well-designed architecture ensures that the system possesses important quality attributes such as
performance, scalability, reliability, security, and maintainability.
Risk Mitigation
Architectural planning helps identify and address potential risks early in the development process.
Communication and Coordination
Architecture serves as a common language that facilitates communication among stakeholders, including
developers, designers, project managers, and clients.
Cost Management
Good architectural decisions can significantly reduce development and maintenance costs.
Future-Proofing
Learning software architecture enables you to design systems that can adapt to future requirements and
technologies.
Why is learning knowledge about
architecture important?
17.
subexpert.com
Architecture Impacts
• Understanding.Provide a vocabulary that can aid our understanding of an
application’s high-level design (model).
• Reuse. Encourages the reuse of existing code (and designs) wherever possible
• Evolution. Consider how it might evolve, and facilitate future changes by
allocating the elements that we think most likely to change into distinct sub-
systems
• Analysis. Help with checking for consistency across different characteristics of a
design.
• Management. Anticipating how an application may evolve is (or should be) a
factor in determining its architectural form.
18.
subexpert.com
Architectural Style
• Forbuildings, descriptions of their style relate to the materials used in their construction.
• Modern Style Home, Old Style, Italian Style etc.
• The use of a label gives us an idea of the characteristics that a particular building
• For software, the concept of architectural style can similarly be viewed as providing a very
abstract description of a set of general characteristics related to the form of an application.
• Client Server
• Pipeline
• In Perry & Wolf (1992), the authors proposed a classification scheme based on the following
characteristics:
software architecture {elements, form, rationale}
• Elements concerned with processing, data or connections,
• form as a ‘set of weighted properties and relationships’,
• while rationale recorded the motivation for particular choices
19.
subexpert.com
Architecture Styling Features
•Kinds of components and connectors used in the style (for example,
objects and method calls);
• Ways in which control (of execution) is shared, allocated and transferred
among the components
• how data is communicated through the system
• how data and control interact
• the type of (design) reasoning that is compatible with the style
software architectural style {components, connectors, context}
• Context in which an application will execute
20.
subexpert.com
Architecture Styles Evolution
•Applications created in the 1970s and 1980s were usually organized in a self-
contained ‘monolithic’ form, with all of the elements residing on the same
computer, and having a form such as call-and-return or data-centered-repository
• With the advent of the internet in the 1990s new forms evolved (such as client-
server), exploiting the ability to distribute the elements of an application.
• The later evolution of the cloud, and related ideas about services has added
further to the choices available to the designer.
• SPA Needs
• Applications are not necessarily ‘pure’ in terms of their style and may possess
the characteristics of more than one style.
subexpert.com
Architecture Styles Evolution
•Rather than categorizing styles in terms of their elements and the connections
between them, Bass, Clements & Kazman (2013) argue that architecture should
be viewed in terms of three different structures:
• Module structures consist of the blocks of code or data that will form the application, and
relate to design decisions about how responsibility is allocated, the ways that the modules
depend upon each other (the forms of coupling), and the use of external modules.
• Component-and-connector structures are more concerned with how the application will
behave when it executes and how the different elements will interact during execution.
• Allocation structures are concerned with where different modules will reside, and from
where external resources will be sourced.