Chapter 5 (MT) Flashcards

(77 cards)

1
Q

_____ is the process of translating requirements into a blueprint for building a
software system.

A

Software design

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

It defines how the software will be structured, how components interact, and
how user needs will be met effectively

A

Software Design Concept

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Breaking down a software system into smaller, manageable parts

A

Modules

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Promotes reuse and maintainability.

A

Modules

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

____ in software design refers to dividing a software system into smaller, self-contained
units called modules

A

Modularity

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

A module is like a “_____” of software

A

building block

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Modularity design approach is based on the principle of “____”, making complex systems easier to understand and manage

A

Divide and conquer

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Characteristics of a Good Module

A
  1. Cohesion
  2. Low coupling
  3. Well-define Interfaces
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Each module should do one specific task well

A

Cohesion

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Modules should minimizer dependencies on other modules

A

Low coupling

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Clear input and output between modules

A

Well-defined interfaces

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Benefits of Modularity

A
  1. Reusability
  2. Maintainability
  3. Parallel Development
  4. Scalability
  5. Testing and debugging
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Modules can be reused across multiple applicationms

A

Reusability

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Error as easier to locate and fix within specific module

A

Maintainability

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Different teams can work on different modules at the same time

A

Parallel Development

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Modules can be tested independently before integration

A

Testing and Debuggin

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

New features can be aded by simply plugging in new modules

A

Scalability

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Modularity in Software Design Principles

A
  1. Structured Programming
  2. Object-Oriented Programming
  3. Componend-Based Design
  4. Microservices architecture
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Breaking programs into smaller procedures or functions

A

Structured programming

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Classes and objects represent modules with attributes and behaviors

A

Object Oriented Programming

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

_____ : Software built using interchangeable components (e.g.,
plugins).

A

Component-Based Design

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

_____ : Applications divided into independent services
communicating via APIs.

A

Microservices Architecture

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Hiding unnecessary details and showing only essential features.

A

Abstraction

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Helps developers focus on what a module does rather than how it does it.

A

Abstraction

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
In software design, _____ is the process of hiding the complex implementation details of a system and exposing only the essential features to the user.
abstraction
25
It helps developers focus on what a system does, not on how it does it.
Abstraction
26
____ reduces complexity and increases efficiency by breaking down large systems into manageable parts.
Abstraction
27
It is a fundamental principle of Object-Oriented Programming (OOP).
Abstraction
28
Levels of Abstration in Software Design
1. High-Level Abstraction 2. Low-Level Abstraction
29
* Focuses on what the system should do. * Involves designing with user needs in mind. * Example: In an ATM machine, a user only sees options like Withdraw, Deposit, Check Balance. The inner workings (network communication, database updates, security checks) are hidden.
High-Level Abstraciton
30
* Focuses on how the system actually works internally. * Example: Behind the ATM’s Withdraw button, the system checks balance, verifies PIN, updates the database, and dispenses cash.
Low-Level Abstraction
31
Importance of Abstraction in Software Design
1. Simplifies Complexity 2. Improves Maintainability 3. Enhances Resusability 4. Encourages Modularity 6. Provides Security
32
Breaks large systems into smaller, understandable modules.
Simplifies Complexity
33
Changing internal code does not affect the overall system if abstraction layers are properly defined.
Improves Maintainability
34
Abstract components (e.g., Payment) can be reused across different projects.
Enhances Reusability
35
Systems are divided into independent modules, each focusing on a single functionality.
Encourages Modularity
36
Hides sensitive details from the user (e.g., database queries, server logic).
Provides Security
37
Bundling data and methods that operate on that data into one unit while restricting access to internal details.
Encapsulation
38
Prevents accidental data modification and enhances security.
Encapslation
39
In software design, _____ is a fundamental concept that promotes information hiding. It allows developers to group related data and methods together while controlling access to the internal details.
encapsulation
40
_____ is one of the four pillars of Object-Oriented Programming (OOP), along with abstraction, inheritance, and polymorphism
Encapsulation
41
____ is the practice of wrapping data (attributes/properties) and methods (functions/behaviors) into a single unit (class), while restricting direct access to some components.
Encapsulation
42
This is why encapsulation is also called____ .
information hiding
43
Benefits of Encapsulation
1. Data Security 2. Reduced Complexity 3. Maintainabiliyt 4. Reusability 5. Flexibility
44
- Dividing the system so that each part addresses a specific concern without overlapping responsibilities. * Improves clarity and reduces complexity
Separation of Concerns
45
____ is a design principle that states a software system should be divided into distinct sections, where each section addresses a specific concern (responsibility, functionality, or aspect of the program).
Separation of Concerns
46
A ____ is anything a piece of software is responsible for, such as: * Data management * User interface * Security * Logging * Business logic
concern
47
Importance of Separation of Concern
1. Improves Maintanability 2. Enhances Reusability 3. Increases Testability 4. Supports Collaboration
48
The degree of dependency between modules.
Coupling
49
The degree to which elements inside a module belong together.
Cohesion
50
_____ refers to the degree to which elements inside a module (class, method, or component) belong together. A module should ideally do one thing well.
Cohesion
51
_____ → A module has a single, well-defined purpose.
High Cohesion
52
____ → A module performs multiple, unrelated tasks.
Low Cohesion
53
Types of Cohesion (Weakest to Strongest)
1. Coincidental Cohesion 2. Logical Cohesion 3. Temporal Cohesion 4. Procedural Cohesion 5. Communicational Cohesion 6. Sequential Cohesion 7. Functrional Cohesion (Best)
54
What type of Cohesion is this? parts are grouped arbitrarily.
Coincidental cohesion
55
What type of Cohesion is this? tasks of similar nature grouped together.
Logical Cohesion
56
What type of Cohesion is this? tasks executed at the same time grouped.
Temporal Cohesion
57
What type of Cohesion is this? tasks grouped because they always follow a sequence.
Procedural Cohesion
58
What type of Cohesion is this? tasks grouped because they operate on the same data.
Communicational Cohesion
59
What type of Cohesion is this? Output of one task is input to another
Sequential Cohesion
60
What type of Cohesion is this? everything in the module contributes to a single, well-defined task
Functional Cohesion(Best)
61
_____ refers to the degree of interdependence between modules. It measures how closely connected different modules/classes are.
Coupling
62
What type is the desired Coupling
Low-coupling
63
____(Desirable) → Modules interact through well-defined interfaces, with minimal knowledge of each other’s internals.
Low Coupling
64
_____ (Undesirable) → Modules heavily depend on each other, making changes risky.
High Coupling
65
What are the types of Coupling (weakest to strongest)?
1. Content Coupling 2. Common Coupling 3. Control Coupling 4. Stamp Coupling 5. Data Coupling (Best)
66
What type of Coupling is this? one module modifies data inside another.
Content Coupling (worst)
67
What type of coupling is this? multiple modules share global data.
Common coupling
68
What type of coupling is this? \ one module controls another by passing control flags.
Control Coupling
69
What type of coupling is this? modules share a composite data structure, but not all of it is used.
Stamp Coupling
70
What type of coupling is this? modules communicate only through required parameters.
Data COupling
71
* Definition: Standard, reusable solutions to common software design problems. * Helps ensure best practices and avoids reinventing the wheel.
Design Patterns
72
A _____ is a proven, reusable solution to a common software design problem within a given context. They are templates or best practices that developers can adapt, not pre-written code.
design pattern
73
Categories of Design Patterns
1. Creational Paterns 2. Structural Patterns 3. Behavioural Patterns
74
Examples of Design patterns
1. Singleton pattern 2. Oberver pattern 3. MVC Pattern (Model-view-controller)
75
Principles of User Interface Design
- Simplicity - Consistency - Feedback - Accessibility
76
The _____ is the point of interaction between a user and a software application. A well-designed UI makes a system easy to use, efficient, and enjoyable, while a poorly designed one can lead to confusion, errors, and frustration.
User Interface (UI)