Software Engineering CP317B: Architecture Design

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

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)?

  • Improved user experience
  • Ease of maintenance (correct)
  • Reduced development time
  • Enhanced flexibility

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?

<p>Limited scalability and flexibility (A)</p> Signup and view all the answers

What is the key distinction between a data-centric architecture and a client/server architecture?

<p>Data-centric architecture focuses on data as the primary asset, while client/server architecture emphasizes communication between clients and servers. (C)</p> Signup and view all the answers

What is a potential risk associated with event-driven architectures (EDA)?

<p>Race conditions (D)</p> Signup and view all the answers

Which of the following BEST describes the core principle of a distributed architecture?

<p>Components residing on different platforms cooperate over a network to achieve a common goal. (D)</p> Signup and view all the answers

What is a common characteristic of both component-based and service-oriented architectures?

<p>Modularization of software components (B)</p> Signup and view all the answers

What is the main advantage of a monolithic architecture?

<p>Simplified communication (C)</p> Signup and view all the answers

Which of the following is NOT a model of architecture design?

<p>Object-oriented (D)</p> Signup and view all the answers

What is a key characteristic of component-based architecture?

<p>It emphasizes the decomposition of the design into individual components with well-defined interfaces. (D)</p> Signup and view all the answers

Which architectural design model is characterized by a single program handling all functionalities?

<p>Monolithic (C)</p> Signup and view all the answers

Which of the following architectural models is often used for web applications?

<p>Client/server (A)</p> Signup and view all the answers

What is a potential disadvantage of client/server architecture?

<p>Security vulnerabilities (B)</p> Signup and view all the answers

Which of the following is NOT an example mentioned for monolithic architecture?

<p>REST API (A)</p> Signup and view all the answers

What is the primary focus of architectural design in software engineering?

<p>Establishing the structure and organization of the system (A)</p> Signup and view all the answers

Which of these is NOT a high-level design consideration mentioned in the provided text?

<p>Data Structures (A)</p> Signup and view all the answers

What does the acronym FURPS stand for in software engineering?

<p>Functionality, Usability, Reliability, Performance, Security (A)</p> Signup and view all the answers

Which of the following is NOT a requirement elicitation technique mentioned in the provided text?

<p>User Stories (D)</p> Signup and view all the answers

Which of the following is NOT a commonly used software architecture design pattern?

<p>Object-Oriented (B)</p> Signup and view all the answers

What is the main aim of architecture design in software engineering?

<p>To define the high-level structure and organization of the software system (A)</p> Signup and view all the answers

What is the primary purpose of software security?

<p>To protect the software system from malicious attacks and vulnerabilities (A)</p> Signup and view all the answers

According to the provided text, when should software security considerations be addressed?

<p>At the system design level (B)</p> Signup and view all the answers

Which of the following is NOT a type of software vulnerability mentioned in the provided text?

<p>Code Injection (B)</p> Signup and view all the answers

Flashcards

High-Level Design (HLD)

An abstract view of a system showing major components and interactions.

Software Security

Techniques to protect software from malicious attacks ensuring continued functionality.

User Interface (UI)

Visual part of an app through which users interact with the system.

Architecture Design

The blueprint that describes the structure of a software system and its components.

Signup and view all the flashcards

Monolithic Architecture

A single unified software structure where all components are interconnected.

Signup and view all the flashcards

Client/Server Architecture

A model where client requests data or services from a centralized server.

Signup and view all the flashcards

Requirements Elicitation

The process of gathering and defining the needs and expectations of stakeholders.

Signup and view all the flashcards

Software Vulnerability

Weakness in a software system that can be exploited by attackers.

Signup and view all the flashcards

User Interfaces

Tools for interaction between users and systems.

Signup and view all the flashcards

Component-based Architecture

Design decomposed into individual functional components.

Signup and view all the flashcards

Advantages of Monolithic Architecture

No need for network communication; easier to deploy.

Signup and view all the flashcards

Disadvantages of Client/Server Architecture

Increased security risks and dependencies.

Signup and view all the flashcards

Component Interaction

Components interact through well-defined communication interfaces.

Signup and view all the flashcards

Component

A functional element or module of software products.

Signup and view all the flashcards

Service-oriented architecture

A software design style where services interact over a network through protocols.

Signup and view all the flashcards

Advantage of service-oriented architecture

Easily maintained services with high reliability, availability, and scalability.

Signup and view all the flashcards

Disadvantage of service-oriented architecture

Increased overhead due to service management.

Signup and view all the flashcards

Data-centric architecture

A design model where data is the primary asset, with changing applications.

Signup and view all the flashcards

Advantage of data-centric architecture

Offers simplicity, security, and integrity management.

Signup and view all the flashcards

Event-driven architecture (EDA)

A design pattern where software behavior is driven by events.

Signup and view all the flashcards

Distributed architecture

Components exist on different platforms working together over a network.

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.

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser