Lesson 9
Lesson 9
1. Architectural Design
Definition: Architectural design is the process of defining a structured solution that meets all
technical and operational requirements while optimizing quality attributes such as performance,
security, and manageability.
• Core Elements:
• Architectural Patterns:
o Layered Architecture: Separates concerns by defining layers (e.g., presentation,
business logic, data).
o Client-Server Architecture: Splits functionality between service providers
(servers) and requesters (clients).
o Microservices Architecture: Decomposes applications into small, independently
deployable services.
Benefits:
• Facilitates scalability and flexibility.
• Characteristics:
o Decentralization: No single point of control; components operate independently.
o Scalability: Supports expansion by adding new nodes or services.
• Common Architectures:
Challenges:
• Security: Ensuring data integrity, confidentiality, and access control across distributed
components.
• Core Concepts:
o Classes and Objects: A class defines the structure and behaviors; objects are
instances of classes.
• Design Principles:
o SOLID Principles: Guide good OO design (Single Responsibility, Open-Closed,
Liskov Substitution, Interface Segregation, Dependency Inversion).
o Design Patterns: Reusable solutions for common problems (e.g., Factory,
Singleton, Observer).
Benefits:
Definition: Real-time software design is focused on systems that must operate within strict
timing constraints, where correctness depends on timely execution.
• Key Concepts:
o Scheduling Algorithms: Ensure that tasks meet timing constraints (e.g., Rate
Monotonic, Earliest Deadline First).
Challenges:
Definition: Design with re-use emphasizes using existing components, frameworks, or modules
to build new systems, reducing development time and cost.
o APIs and Services: Third-party services that can be integrated (e.g., payment
gateways, data analytics services).
Approaches:
Definition: User interface (UI) design involves creating the visual and interactive elements of
software that allow users to engage with the system.
• Core Principles:
o Consistency: Similar elements should look and behave similarly across the
application.
o Affordance: Design cues that suggest how elements should be used (e.g.,
clickable buttons).
• UI Design Process:
o Wireframing and Prototyping: Create low- and high-fidelity sketches of the UI.
o Testing and Iteration: Refine the design based on user feedback.
Common Patterns:
• Navigation Bars and Menus: Provide easy access to different parts of the application.
• Icons and Buttons: Offer recognizable and actionable elements for users.
Benefits: