Podcast
Questions and Answers
Which of the following is NOT an advantage of a data-centric architecture?
Which of the following is NOT an advantage of a data-centric architecture?
- Simplicity
- Security
- Performance (correct)
- Integrity management
What is the primary advantage of a service-oriented architecture (SOA)?
What is the primary advantage of a service-oriented architecture (SOA)?
- Improved user experience
- Ease of maintenance (correct)
- Reduced development time
- Enhanced flexibility
What does the term "event" represent in an event-driven architecture (EDA)?
What does the term "event" represent in an event-driven architecture (EDA)?
- A predefined workflow in the system
- An occurrence that triggers a state change (correct)
- A communication protocol between components
- A specific software component
Which of the following is a disadvantage of a component-based architecture?
Which of the following is a disadvantage of a component-based architecture?
What is the key distinction between a data-centric architecture and a client/server architecture?
What is the key distinction between a data-centric architecture and a client/server architecture?
What is a potential risk associated with event-driven architectures (EDA)?
What is a potential risk associated with event-driven architectures (EDA)?
Which of the following BEST describes the core principle of a distributed architecture?
Which of the following BEST describes the core principle of a distributed architecture?
What is a common characteristic of both component-based and service-oriented architectures?
What is a common characteristic of both component-based and service-oriented architectures?
What is the main advantage of a monolithic architecture?
What is the main advantage of a monolithic architecture?
Which of the following is NOT a model of architecture design?
Which of the following is NOT a model of architecture design?
What is a key characteristic of component-based architecture?
What is a key characteristic of component-based architecture?
Which architectural design model is characterized by a single program handling all functionalities?
Which architectural design model is characterized by a single program handling all functionalities?
Which of the following architectural models is often used for web applications?
Which of the following architectural models is often used for web applications?
What is a potential disadvantage of client/server architecture?
What is a potential disadvantage of client/server architecture?
Which of the following is NOT an example mentioned for monolithic architecture?
Which of the following is NOT an example mentioned for monolithic architecture?
What is the primary focus of architectural design in software engineering?
What is the primary focus of architectural design in software engineering?
Which of these is NOT a high-level design consideration mentioned in the provided text?
Which of these is NOT a high-level design consideration mentioned in the provided text?
What does the acronym FURPS stand for in software engineering?
What does the acronym FURPS stand for in software engineering?
Which of the following is NOT a requirement elicitation technique mentioned in the provided text?
Which of the following is NOT a requirement elicitation technique mentioned in the provided text?
Which of the following is NOT a commonly used software architecture design pattern?
Which of the following is NOT a commonly used software architecture design pattern?
What is the main aim of architecture design in software engineering?
What is the main aim of architecture design in software engineering?
What is the primary purpose of software security?
What is the primary purpose of software security?
According to the provided text, when should software security considerations be addressed?
According to the provided text, when should software security considerations be addressed?
Which of the following is NOT a type of software vulnerability mentioned in the provided text?
Which of the following is NOT a type of software vulnerability mentioned in the provided text?
Flashcards
High-Level Design (HLD)
High-Level Design (HLD)
An abstract view of a system showing major components and interactions.
Software Security
Software Security
Techniques to protect software from malicious attacks ensuring continued functionality.
User Interface (UI)
User Interface (UI)
Visual part of an app through which users interact with the system.
Architecture Design
Architecture Design
Signup and view all the flashcards
Monolithic Architecture
Monolithic Architecture
Signup and view all the flashcards
Client/Server Architecture
Client/Server Architecture
Signup and view all the flashcards
Requirements Elicitation
Requirements Elicitation
Signup and view all the flashcards
Software Vulnerability
Software Vulnerability
Signup and view all the flashcards
User Interfaces
User Interfaces
Signup and view all the flashcards
Component-based Architecture
Component-based Architecture
Signup and view all the flashcards
Advantages of Monolithic Architecture
Advantages of Monolithic Architecture
Signup and view all the flashcards
Disadvantages of Client/Server Architecture
Disadvantages of Client/Server Architecture
Signup and view all the flashcards
Component Interaction
Component Interaction
Signup and view all the flashcards
Component
Component
Signup and view all the flashcards
Service-oriented architecture
Service-oriented architecture
Signup and view all the flashcards
Advantage of service-oriented architecture
Advantage of service-oriented architecture
Signup and view all the flashcards
Disadvantage of service-oriented architecture
Disadvantage of service-oriented architecture
Signup and view all the flashcards
Data-centric architecture
Data-centric architecture
Signup and view all the flashcards
Advantage of data-centric architecture
Advantage of data-centric architecture
Signup and view all the flashcards
Event-driven architecture (EDA)
Event-driven architecture (EDA)
Signup and view all the flashcards
Distributed architecture
Distributed architecture
Signup and view all the flashcards
Study Notes
Software Engineering - CP317B
- Course: CP317B Software Engineering
- Instructor: Shaun Gao, Ph.D., P.Eng.
- Topic: Architecture Design (Week 3-1)
Agenda
- Review of Week 2
- Introduction to High-Level Design
- Software Security
- User Interface
- Architecture Design Models
- Monolithic
- Client/Server
- Component-based
- Service-oriented
- Data-centric
- Distributed
- Summary
Review of Week 2
- Requirement Elicitation Techniques: Communication, Task Analysis, Domain Analysis, Brainstorming, Prototyping, Observation
- MOSCOW Method (Prioritizing Requirements)
- FURPS and FURPS+ Methods (Functional and Non-Functional Requirements)
- Requirements Documentation
- Requirements Validation and Verification (Verification vs Validation)
- Alex F. Osborn's Four Rules for Brainstorming (For brainstorming)
Introduction
- Design: A problem-solving process to implement functional requirements while considering non-functional constraints (performance, security). Aims for high-quality design.
- High-Level Design (HLD): An abstract representation of the system. Shows how major software components interact. Used when developing a software product.
Architecture Design–Project
- Think-Pair-Share: Discuss architecture design from a software engineering perspective.
High-Level Design Considerations
- Reliability & Quality: Software continues to function properly even with input variations
- Software Security: Implementations and techniques to protect a software system from malicious attacks and hacker risks, ensuring it operates correctly. Should be considered at the system design level.
- Software Vulnerability: The main cause of cyber security issues. Examples include:
- Buffer overflow attacks
- SQL Injection
- Cross-site Scripting
User Interface
- Definition: The visual part of a computer application or operating system, allowing user interaction.
- Examples: Keyboard, mouse, touch screen, voice recognition, Windows login screen (graphical interface examples: KDE Plasma, Aqua, GNOME Shell; display server examples: X11, Wayland, Quartz; window manager examples: awesome, Compiz, Open Box; kernel examples: Linux kernel, FreeBSD kernel, XNU kernel)
Architectural Design
- Definition: High-level model of a software system's functionality. Process of defining the collection of hardware and software components and interfaces to develop the framework of the software system.
- Models:
- Monolithic
- Client/server
- Component-based
- Service-oriented
- Data-centric
- Distributed
Monolithic Architecture
- Description: All functions within a single program.
- Advantage: no need for cross-network communication
- Disadvantage: lack of flexibility and scalability.
- Examples: Current washing machines, home appliances
Client/Server Architecture
- Description: Server hosts and manages resources; client interacts.
- Advantage: Scalability & flexibility
- Disadvantage: Security vulnerabilities
Component-Based Architecture
- Definition: Software components interact with other components. Component encompasses certain functionality or their sets.
- Component-based Architecture Focus: Decomposition of the overall design into functional components; well-defined communication interfaces; providing better abstraction and sub-problem division.
- Example: ATM
Service-Oriented Architecture
- Description: Style of software design where services are available to other components.
- Advantage: Easy maintenance, reliability, availability, and scalability
- Disadvantage: Increased overhead (e.g., customer needs).
- Examples: Cloud computing and symmetric key management systems
Data-Centric Architecture
- Description: Data as the core asset; applications use and are built around this data.
- Advantage: Simplicity, security, and integrity management
- Disadvantage: Performance issues
- Example: Data Warehouse
Event-Driven Architecture
- Description: Software system behavior is driven by events, occurrences that trigger state transitions.
- Two types of events: Hardware vs. Software
- Advantage: Good performance
- Disadvantage: Complexity, potential race conditions
Distributed Architecture
- Description: Components on different platforms interacting via a network for a shared objective or goal.
- Advantage: Resource sharing, scalability
- Disadvantage: Complexity, security
- Examples: MongoDB, BlockChain
Think-Pair-Share Questions
- Question 2: Architecture design for a group project (read two text files and output formatted data to a new file) and identifying the best suitable architecture design.
Summary
- Software Security: Consider security in the system design phase.
- User Interface: Conceptual understanding.
- Architecture Design: Models (Monolithic, Client/Server, Component-based, Service-oriented, Data-centric, Distributed) discussed.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.