3rd UNIT-Topic-4 - Software Architecture Creating An Architecture Design
3rd UNIT-Topic-4 - Software Architecture Creating An Architecture Design
Prepared By
1. Communication Tool: It allows everyone involved (developers, stakeholders, clients) to understand and discuss the structure
and purpose of the system
Example: Example: Just like a blueprint helps the architect, builders, and owner talk about a building's design, software
architecture helps different stakeholders discuss a software project effectively.
2. Sets the Foundation for Future Work: Architecture includes important early decisions that impact everything that follows in
the software’s development.
Example: choosing the right software architecture can save a lot of time and money.
3. Simplifies Understanding of the System: Architecture offers a simplified, high-level view of the system.
Example: Imagine a car’s design. Understanding how the engine, transmission, and wheels work together is simpler when you
can look at a model showing all their connections.
Department of Computer Science and Engineering (AIML)
Software architecture models the structure of a system and how its components interact. It consists of:
a) Software Components: These are the building blocks of the system (like modules or classes).
b) External Properties: Characteristics that define how these components behave when interacting with each other.
c) Relationships: How components connect and communicate, ranging from simple function calls to complex data protocols.
There are many different types of software components:
d) Application Programming Interfaces (APIs) b) Libraries c) Frameworks d) Services e) Modules
f) Plugins g) Widgets h) Controls i) Connectors
Example
Imagine designing a library system. The architecture includes components like a database (for storing books), user interface (for
interactions), and server (for processing requests).
The Types of Software Components refer to digital entities like libraries, frameworks, and APIs that enable the functioning of software
applications.
Software components are the counterparts of hardware components — physical parts of a computer system. It includes the processor,
Department of Computer Science and Engineering (AIML)
What Are the Types of Software Components?
• Software components refer to digital entities like libraries, frameworks, and APIs that enable the functioning
of software applications.
• Software components are the counterparts of hardware components — physical parts of a computer
system. It includes the processor, memory, storage devices, and peripherals like keyboards and monitors.
There are many different types of software components:
1.Application Programming Interfaces (APIs)
2.Libraries
3.Frameworks
4.Services
5.Modules
6.Plugins
7.Widgets
8.Controls
9.Connectors
Department of Computer Science and Engineering (AIML)
•Google Maps API: Integrate maps and location services into applications.
•Facebook API: Access social media data and features.
•Twitter API: Interact with Twitter data and functionalities.
•Payment gateways like Stripe and PayPal: Process payments within applications.
•Weather APIs: Retrieve weather data for specific locations.
Common Types of APIs
•REST APIs: The most common type, often using JSON format for data exchange.
•SOAP APIs: Older but still widely used, often in enterprise applications.
•Web APIs: APIs specifically designed for web applications, often accessed through HTTP
requests.
•Internal APIs: Used within an organization to connect different systems and services.
•Public APIs: Made available to the public for use by third-party developers.
Department of Computer Science and Engineering (AIML)
What Is Architecture?
Software architecture models the structure of a system and how its components interact. It consists of:
Software Components: These are the building blocks of the system (like modules or classes).
External Properties: Characteristics that define how these components behave when interacting with each other.
Relationships: How components connect and communicate, ranging from simple function calls to complex data protocols.
Example
Imagine designing a library system. The architecture includes components like a database (for storing books), user interface (for
interactions), and server (for processing requests).
Department of Computer Science and Engineering (AIML)
Libraries:
• Libraries are repositories of reusable code. NumPy (Numerical Python) is an example of a
common library. It's a powerful library for numerical computing in Python. NumPy provides
efficient arrays, mathematical functions, linear algebra operations, and more.
Common Types of Libraries
•Standard libraries: Built-in libraries that come with programming
languages.
•Third-party libraries: External libraries developed and shared by
independent developers or organizations, often addressing specific domains
or needs.
•Open-source libraries: Libraries with publicly available source code.
Department of Computer Science and Engineering (AIML)
Frameworks
Frameworks provide a pre-built structure, tools, and guidelines for building specific types of applications.
React is often used as a framework for creating single-page web applications.
Common Types of Frameworks
Web frameworks: Frameworks for building web applications, handling aspects like routing, request handling,
templating, and database interactions.
Examples: Django, Ruby on Rails, and React, Angular.
Mobile app frameworks: Frameworks for developing mobile applications for iOS, Android, or cross-platform
development.
Examples: React Native and Flutter.
Game development frameworks: Frameworks for creating video games, providing tools for graphics, physics,
audio, and game logic.
Examples: Unity and Unreal Engine.
Machine learning frameworks: Frameworks for building and training machine learning models, offering algorithms,
data structures, and optimization tools.
Department of Computer Science and Engineering (AIML)
Services
• Services are independent, modular programs that provide specific functionalities over a network.
• Services expose well-defined interfaces (think entrances and displays) through which other applications
can interact and access their functionality.
• Docker is an example of a common service. It's a containerization platform that allows packaging
services into isolated containers, simplifying deployment, portability, and scalability.
Common Types of Services
•Web services: Services accessed through the web using protocols like HTTP and SOAP. Often integrated with web
applications and APIs.
•Microservices: Smaller, focused services that collaborate to build larger applications.
•Background services: Services that run continuously in the background, performing tasks like data processing,
system monitoring, or scheduled jobs.
•Enterprise services: Services deployed within organizations to support common business functions like
Department of Computer Science and Engineering (AIML)
Modules
• Modules are self-contained units of code that encapsulate a specific set of functionalities
within a larger program.
• Python's math module is an example of a common module. It's a built-in module providing
mathematical functions like trigonometry, logarithms, constants, and more, easily accessible
through import math.
Common Types of Modules
•Source code modules: Individual files or groups of files containing code, often representing
cohesive units of functionality.
•Library modules: Pre-written code modules that can be imported and used in other programs.
•Run-time modules: Modules that are loaded and executed at run-time. Sometimes, they are
dynamically based on user actions or program needs.
•Plug-in modules: Modules that can be added to a program to extend its functionality.
Department of Computer Science and Engineering (AIML)
Plugins
Plugins are software pieces that can be added to an existing program to extend its functionality or
customize its behavior.
Grammarly plugin is an example of a common plugin. It's a browser plugin that checks grammar,
spelling, and style in real time, offering suggestions for improvement within websites and text editors.
•Browser plugins: Add features to web browsers (e.g., ad blockers, password managers, video
players).
•Game plugins: Modify gameplay, graphics, or add new content (e.g., custom maps, character skins).
•Image editing plugins: Expand filters, tools, or file formats (e.g., noise reduction, RAW image
support).
•Text editor plugins: Add syntax highlighting, code completion, or formatting features.
•Content management system (CMS) plugins: Integrate new functionalities or content types (e.g.,
e-commerce, social media integration, SEO tools).
Department of Computer Science and Engineering (AIML)
Widgets
Widgets are compact, interactive software components. They bring specific functionalities or
information displays to different environments.
Apple Watch weather widget is an example of a common widget. It's a compact display on
the Apple Watch showing the current temperature, forecast, and weather conditions. It offers you
convenient access to relevant information without reaching for your phone.
Common Types of Widgets
•Desktop widgets: Small applications placed on the computer desktop, displaying weather,
news, calendars, to-do lists, etc.
•Website widgets: Used to embed social media feeds, video players, currency converters, or
other interactive elements within web pages.
•Mobile app widgets: Similar to desktop widgets, but for smartphones and tablets.
•Operating system widgets: Built-in functionalities within an operating system, like search
Department of Computer Science and Engineering (AIML)
Controls
Controls are graphical elements that enable you to interact with software applications or systems.
Submit buttons are a good example of control. You can easily find them on forms and dialog boxes. Submit buttons initiate actions like
sending data, completing transactions, or applying changes.
Common Types of Controls
•Buttons: Clickable elements that trigger actions or events (e.g., submit buttons, menu buttons, toggle buttons).
•Text fields: Allow you to input text or numbers (e.g., single-line fields, multi-line text areas).
•Labels: Display text information to guide you or provide context.
•Checkboxes: Allow users to select or deselect multiple options from a list.
•Radio buttons: Offer a set of mutually exclusive options for you to choose from.
•Dropdown lists: Present a list of options for you to select from a compact space.
•Sliders: Allow you to adjust numerical values along a continuous range.
•Progress bars: Indicate the progress of a task or operation.
•Date pickers: Facilitate selection of dates from a calendar interface.
•Image viewers: Display images and may allow zooming or panning.
•Menus: Offer hierarchical lists of options for you to navigate.
•Toolbars: Group frequently used commands or actions together for easy access.
Department of Computer Science and Engineering (AIML)
Integration Connectors
These are versatile tools that act as bridges between software ecosystems.
Integration connectors allow applications to talk to each other and share data
seamlessly.
Amazon Web Services Connectors are a good example of integration
connectors.
Types and Examples
•Cloud platform connectors: Google Cloud Platform Connectors, Amazon
Web Services Connectors, and Microsoft Azure Connectors.
•API connectors: Salesforce Connector, Zendesk Connector, and Stripe Connector.
•Data integration connectors: MuleSoft Anypoint Connector and Informatica
Cloud Connect.
Department of Computer Science and Engineering (AIML)
UI Framework Connectors
These are specialized components within UI frameworks that handle
communication and interaction between different UI elements and the
underlying application logic. UI framework connectors play a crucial role in
building responsive and dynamic user interfaces. Example: React Context.
Examples
•React Context: Provides a way to share the state between components across
the tree.
•Redux in React: A state management library with predictable state changes
and simplified debugging.
•Angular Routing: Handles navigation between different views and
Department of Computer Science and Engineering (AIML)
Roles in Software Architecture:
Software Engineers: Handle data and architecture across various projects.
Specialists: Large systems may require roles like database designers and system architects.
Example: In an online retail system, a database designer structures product data, while a system architect decides between a microservices or monolithic
architecture.
Importance of Software Architecture:
Communication: Provides clear understanding among stakeholders.
Design Decisions: Early decisions greatly impact project success.
Clarity: Ensures a manageable model of system operations.
Example: A clear architecture allows quick addition of new features, like payment processing.
Stakeholder-Specific Architectural Views:
Developers: Need guidance for implementation.
Customers: Want assurance that the system meets their business requirements.
Department of Computer Science and Engineering (AIML)
Architectural Description (AD):
Defined by IEEE as a collection of documents capturing architecture through multiple viewpoints for specific stakeholder concerns.
Each viewpoint addresses particular concerns, helping architects make decisions that align with project goals.
Example: An architect may choose cloud storage for a mobile app due to scalability and cost.
Genres of Software Architecture:
AI Systems: Applications like chatbots that mimic human intelligence.
Commercial Systems: Business-critical applications, such as ERP systems.
Medical Systems: Applications for health diagnostics, like patient management.
Example: A healthcare application recording patient data falls under the medical genre.
Software Architecture for Immersipresence (SAI):
A model designed for distributed, parallel data processing.
Aims to manage complex, high-load systems efficiently.
Example: A video streaming service uses SAI to handle multiple user requests simultaneously, ensuring smooth performance.
Benefits of Mastering Software Architecture:
Enables teams to create well-structured, adaptable systems that meet user needs and can scale for future demands.