Software Engineering - Architectural Design
21 Questions
1 Views

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

What type of view in the 4 + 1 view model shows the key abstractions in the system as objects or object classes?

  • Physical view
  • Process view
  • Development view
  • Logical view (correct)

Which architectural pattern is characterized by allowing only one instance of a class?

  • Builder Pattern
  • Factory Pattern
  • Singleton Pattern (correct)
  • Observer Pattern

Which view of the 4 + 1 model illustrates the hardware system and the distribution of software components?

  • User view
  • Process view
  • Logical view
  • Physical view (correct)

What is the focus of structural design patterns?

<p>Establishing the composition of classes (C)</p> Signup and view all the answers

In software engineering, what do design patterns primarily facilitate?

<p>Knowledge sharing and reuse (B)</p> Signup and view all the answers

What is the primary output of the architectural design process?

<p>A description of the software architecture (D)</p> Signup and view all the answers

Which aspect does architectural design primarily link?

<p>Specification and design processes (A)</p> Signup and view all the answers

What distinguishes architecture in the large from architecture in the small?

<p>Complex enterprise systems versus individual programs (B)</p> Signup and view all the answers

What is one advantage of having an explicit software architecture?

<p>Improves stakeholder communication (B)</p> Signup and view all the answers

What is a common criticism of simple block diagrams used in architectural representations?

<p>They lack semantics and visible properties of entities. (D)</p> Signup and view all the answers

What is an important use of architectural models during the design process?

<p>For facilitating discussion about system design (B)</p> Signup and view all the answers

Which characteristic of architectural design increases the cost of changes?

<p>The non-incremental nature of changes (D)</p> Signup and view all the answers

What role does architectural design play in system analysis?

<p>It allows for meeting non-functional requirements assessment. (D)</p> Signup and view all the answers

What is the primary aim of producing a complete system model in architectural design?

<p>To show the different components and their connections in the system (C)</p> Signup and view all the answers

Which aspect of architectural design is not typically influenced by the architectural design decisions?

<p>User interface aesthetics (C)</p> Signup and view all the answers

What should be included in the architecture to enhance availability?

<p>Redundant components and fault tolerance mechanisms (A)</p> Signup and view all the answers

Which of the following architectural styles is typically recommended for enhancing security?

<p>Layered architecture with critical assets in inner layers (C)</p> Signup and view all the answers

Which approach aids in documenting a system's architecture effectively?

<p>Using various perspectives and notations (D)</p> Signup and view all the answers

What is a characteristic of architectural patterns or styles?

<p>They can be instantiated in unique ways (D)</p> Signup and view all the answers

How can maintainability be improved in a system architecture?

<p>By implementing fine-grain, replaceable components (D)</p> Signup and view all the answers

When structuring a system, which question is essential in the architectural design process?

<p>How will the system be decomposed into modules? (B)</p> Signup and view all the answers

Flashcards

4 + 1 View Model

A model for visualizing software architecture, showing different views of the system.

Singleton Pattern

A design pattern that ensures a class only has one instance and provides a global access point to it.

Prototype Pattern

A design pattern that creates objects by copying existing ones, avoiding direct object creation.

Factory Pattern

A design pattern that defines an interface for creating objects, but lets subclasses decide which class to instantiate.

Signup and view all the flashcards

Builder Pattern

A design pattern that separates the construction of a complex object from its representation, allowing for flexible and independent object creation.

Signup and view all the flashcards

Architectural Design

The process of designing a system's structure, defining subsystems and their communication methods.

Signup and view all the flashcards

Architectural Views

Representations of a software system's structure, showing key components and their relationships.

Signup and view all the flashcards

Architectural Patterns (Styles)

Reusable design patterns that define common structures and relationships for solving recurring architectural problems.

Signup and view all the flashcards

Architectural Decisions

The impact of design decisions on the overall system structure, especially in terms of communication and control.

Signup and view all the flashcards

Architecture in the Small

The architecture of individual programs and components within a system.

Signup and view all the flashcards

Architecture in the Large

The architecture of complex systems that span multiple programs, computers, and even organizations.

Signup and view all the flashcards

Advantages of Explicit Architecture

The benefits of having a clearly documented and agreed-upon architecture.

Signup and view all the flashcards

Use of Architectural Models

Architectural models visually represent the system's structure, aiding in planning and communication.

Signup and view all the flashcards

Architecture Documentation

A way of documenting an architecture that has been designed. It aims to produce a complete system model showing components, interfaces, and connections.

Signup and view all the flashcards

Architectural Patterns

A set of reusable, well-defined architectural patterns that capture common design solutions. They can be instantiated in different ways to create variations of an architecture.

Signup and view all the flashcards

Performance

The ability of a system to handle high volumes of traffic or requests without performance degradation.

Signup and view all the flashcards

Security

The level of security implemented to protect sensitive data and prevent unauthorized access.

Signup and view all the flashcards

Availability

The ability of a system to continue operating even when parts fail. It includes redundancy and fault tolerance mechanisms.

Signup and view all the flashcards

Maintainability

The ease with which a system can be modified or extended. It involves using modular components for easy replacement and updates.

Signup and view all the flashcards

Study Notes

Software Engineering - Architectural Design

  • The design process for identifying sub-systems, the framework for sub-system control and communication is architectural design
  • The output of this design process describes the software architecture
  • Architectural design is an early stage of system design
  • It links specification and design processes, often done in parallel with specification activities
  • Identifying major system components and their communications is part of architectural design
  • Changes in architectural design are not incremental; the cost of changing later is high, even in agile projects

Topics Covered in Architectural Design

  • Architectural design decisions
  • Architectural views
  • Architectural styles/patterns
  • Application architecture

Architecture of a Packing Robot Control System

  • A diagram depicts a packing robot system
  • Components include vision system, object identification system, arm controller, gripper controller, packaging selection system, and conveyor controller.

Architectural Abstraction

  • Architecture in the small focuses on individual program architecture
  • It concerns how an individual program is decomposed into components
  • Architecture in the large focuses on complex enterprise systems, including other systems, programs, and program components
  • These systems are often distributed over multiple computers owned by different companies.

Advantages of Explicit Architecture

  • Stakeholder communication: Architecture can be a focal point for discussions among stakeholders
  • System analysis: Helps analyze if the system meets its non-functional requirements
  • Large-scale reuse: Architecture can be reused in various systems, leading to product-line architectures

Architectural Representations

  • Simple block diagrams showing entities and relationships are frequently used to document software architecture
  • These diagrams lack semantics, don't show all relationships, and don't always depict all entity properties

Use of Architectural Models

  • Facilitating discussion on system design
  • High-level architectural views are helpful for communication and project planning
  • They avoid clutter with details
  • System stakeholders can understand the overall system without getting bogged down in the minutiae
  • Useful for documenting designs

Architectural Design Decisions

  • Design is a creative process, methods change with the type of system
  • Some common decisions impact non-functional characteristics

Further Architectural Design Decisions

  • Generic application architecture?
  • Distribution strategy?
  • Architectural design styles?
  • Structural approach for the system?
  • Decomposition into modules?
  • Control strategy to employ?
  • Architecture evaluation method?
  • Documentation strategy?

Architecture Reuse

  • Systems in the same domain often have similar architectures reflecting domain concepts
  • Application product lines are usually based on a core architecture with variants to meet specific customer needs
  • Architectural patterns capture the essence of an architecture that can be instantiated in different ways

Architecture and System Characteristics

  • Performance: Localize critical operations, minimize comms; use large components
  • Security: Layered architecture, inner layers for critical assets
  • Safety: Safety-critical features in a small number of sub-systems
  • Availability: Redundant components and fault tolerance
  • Maintainability: Fine-grained, replaceable components

Architectural Views

  • Which views/perspectives are useful in designing and documenting a system?
  • Suitable notations for describing architectural models?
  • Each model shows one perspective of the system
  • The model could show how the system is broken down into modules, interaction of runtime processes, different distribution approaches, etc

4+1 View Model of Software Architecture (Krutchén)

  • Logical view: system as objects (requirements)
  • Process view: interactions at run-time
  • Development view: software decomposition for development
  • Physical view: hardware and distribution
  • User view complements the other four views

Architectural Patterns

  • Patterns allow for knowledge representation, sharing, and reuse
  • They're formalized descriptions of tried-and-true design practices across several environments
  • Useful when/not useful information should be in the description
  • Represented via tabular and graphical descriptions

Design Patterns (Categorization)

  • Creational: Singleton, Factory, Builder, Prototype, Abstract Factory
  • Structural: Adapter, Decorator, Facade, Composite, Proxy, Bridge
  • Behavioral: Strategy, Template Method, Observer, Command, State, Visitor, Chain of Responsibility

UML: Basic Class

  • Conceptual UML diagrams are shown
  • Example includes the Car class with attributes (wheel count, running) and methods (startEngine, setSpeed)

UML: Directed Association

  • Conceptual and example UML diagrams for showing object relationships are shown (Person, Car)

UML: Class Extension/Inheritance

  • UML diagrams explain how a class extends or inherits from another (e.g., Fancy Car extending Car)

UML: Interface Implementation

  • UML explanation of a class implementing an interface (example: Car implementing ICar)

UML Aggregations

  • UML diagrams for aggregation relationships (e.g., Book in a Library)

UML Composition

  • UML diagrams for composition relationships (e.g., Wings in an Aeroplane)

Creational Design Patterns (Introduction)

Singleton Pattern

  • Singleton instance creation ensuring only one object exists
  • Client application interacts to use the instance.

Singleton Pattern - Use Case

  • Shows a leader board system where instances of the Leaderboard are shared across games

Prototype Pattern

  • Cloning of objects is a focus of this pattern

Prototype Pattern - Use Case

  • Shows how to clone records, especially when needed for reuse

Factory Pattern

  • Use of factory classes to create objects

Factory Pattern - Use Case

  • Shows chair creation using a ChairFactory

Builder Pattern

  • This pattern allows the creation of complex objects step-by-step.
  • Director class creates the builder and instructs it.

Builder Pattern - Use Case

  • A use case shows creation of houses using directors (e.g., house type) and builders to ensure construction elements are set properly

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Description

This quiz covers the key concepts of architectural design in software engineering, including the design process, architectural views, and styles. It also explores the architecture of a packing robot control system, focusing on system components and their interactions. Test your understanding of these foundational topics in software architecture.

More Like This

Use Quizgecko on...
Browser
Browser