SAD exam prep Flashcards

1
Q

What is modularity in software design?

A

Modularity separates a program’s functionality into independent, interchangeable modules.

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

What does encapsulation mean in the context of modularity?

A

Encapsulation hides the internal workings of a component, showing only necessary parts through an interface.

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

What is strong cohesion in software design?

A

Strong cohesion groups related program constructs together, simplifying development and maintenance.

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

What does low coupling mean in modularity?

A

Low coupling minimizes dependencies between modules, making the system easier to understand and maintain.

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

How do encapsulation and cohesion aid in modularity?

A

They allow units to be read, understood, and changed independently, reducing complexity.

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

What are the benefits of modularity in software engineering?

A

Modularity reduces complexity, allows parallel work, and enhances system understandability and reusability.

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

What are the purposes of the Analysis discipline in software development?

A

Understanding user needs, building a system model, and setting a strong foundation for the design phase.

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

What is the difference between a model and a diagram in software design?

A

A model represents a system’s abstract view, while a diagram is a visual representation of a model.

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

How do models help in designing software systems?

A

Models clarify system functionality and serve as a blueprint for construction.

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

What is the concept of layering in software design?

A

Layering divides software into separate functional parts, enhancing flexibility and maintainability.

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

What is a bidirectional association?

A

A relationship where objects at both ends can send messages to the other.

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

What is a unidirectional association?

A

A relationship where an object at one end can send messages to the object at the other, but not vice versa.

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

What is the difference between aggregation and composition?

A

Aggregation implies a whole-part relationship without ownership, while composition implies ownership.

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

What is an enumeration in programming?

A

Enumeration is a special data type allowing a variable to have one of a predefined set of values (constants).

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

What are abstract classes and generalization in programming?

A

Abstract classes define a common interface. Generalization creates a hierarchical relationship between classes.

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

Why is modularity important in software design?

A

Modularity improves readability, hides complexity, enhances maintainability, promotes reusability, and supports variability.

17
Q

How does modularity improve software readability?

A

Modularity uses divide and conquer, making the software easier to read and understand.

18
Q

How does modularity hide complexity in software design?

A

Modularity hides complexity behind interfaces, a principle known as information hiding.

19
Q

How does modularity improve maintainability of software?

A

Modularity confines changes locally, making the software easier to maintain.

20
Q

How does modularity contribute to software reusability?

A

Parts of the software can be reused in different contexts, promoting reusability.

21
Q

How does modularity support variability in software design?

A

Modules can be composed in different ways for new contexts, supporting variability.

22
Q

What is a design pattern in software development?

A

Design patterns codify design decisions and best practices for solving recurring software problems. They are templates recognized and adapted for specific uses.

23
Q

What principles do design patterns promote?

A

Design patterns promote principles such as modularity and abstraction.

24
Q

What is a Creational design pattern? Give examples.

A

Creational patterns deal with the creation, composition, and representation of objects. Examples: Abstract Factory, Factory Method.

25
Q

What is a Structural design pattern? Give examples.

A

Structural patterns organize objects to build a larger structure. Examples: Adapter, Composite.

26
Q

What is a Behavioral design pattern? Give examples.

A

Behavioral patterns deal with communication and assignment of responsibilities between objects. Examples: Chain of Responsibility, Command.