subexpert.com
1
Department of Computer Science
SOFTWARE DESIGN AND
ARCHITECTURE
Lecture 1 Introduction
By: Mukthiar Zamin
MS in CS (USA)
subexpert.com
ACKNOWLEDFMENT
• Lectures are prepared 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
subexpert.com
Topics
• Overview
• High Level Summary
• Course Objectives
• What is Software Architecture
• Career Path
• Importance
• Architecture Impacts
• Architectural Style
• Styling Features and Evolution
• Example
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.
subexpert.com
High Level Summary
1. Envisioning Architecture
2. Creating an Architecture
3. Analyzing Architectures
4. Moving From One System to Many
5
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
subexpert.com
2. Creating an Architecture
• 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
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
subexpert.com
4. Moving From One 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
subexpert.com
10
Course Objectives
• Through study 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
subexpert.com
What is Software Architecture?
• 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
subexpert.com
What is Software Architecture?
• 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
13
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
subexpert.com
Why is learning knowledge 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
subexpert.com
Structural Foundation
Software architecture provides 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?
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.
subexpert.com
Architectural Style
• For buildings, 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
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
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
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.
subexpert.com
Architecture
Example

01 Introduction to SDA 2.pdf software architecture

  • 1.
    subexpert.com 1 Department of ComputerScience SOFTWARE DESIGN AND ARCHITECTURE Lecture 1 Introduction By: Mukthiar Zamin MS in CS (USA)
  • 2.
    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
  • 13.
  • 14.
    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.
  • 21.
  • 22.
    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.
  • 23.