SAD exam prep Flashcards
What is modularity in software design?
Modularity separates a program’s functionality into independent, interchangeable modules.
What does encapsulation mean in the context of modularity?
Encapsulation hides the internal workings of a component, showing only necessary parts through an interface.
What is strong cohesion in software design?
Strong cohesion groups related program constructs together, simplifying development and maintenance.
What does low coupling mean in modularity?
Low coupling minimizes dependencies between modules, making the system easier to understand and maintain.
How do encapsulation and cohesion aid in modularity?
They allow units to be read, understood, and changed independently, reducing complexity.
What are the benefits of modularity in software engineering?
Modularity reduces complexity, allows parallel work, and enhances system understandability and reusability.
What are the purposes of the Analysis discipline in software development?
Understanding user needs, building a system model, and setting a strong foundation for the design phase.
What is the difference between a model and a diagram in software design?
A model represents a system’s abstract view, while a diagram is a visual representation of a model.
How do models help in designing software systems?
Models clarify system functionality and serve as a blueprint for construction.
What is the concept of layering in software design?
Layering divides software into separate functional parts, enhancing flexibility and maintainability.
What is a bidirectional association?
A relationship where objects at both ends can send messages to the other.
What is a unidirectional association?
A relationship where an object at one end can send messages to the object at the other, but not vice versa.
What is the difference between aggregation and composition?
Aggregation implies a whole-part relationship without ownership, while composition implies ownership.
What is an enumeration in programming?
Enumeration is a special data type allowing a variable to have one of a predefined set of values (constants).
What are abstract classes and generalization in programming?
Abstract classes define a common interface. Generalization creates a hierarchical relationship between classes.
Why is modularity important in software design?
Modularity improves readability, hides complexity, enhances maintainability, promotes reusability, and supports variability.
How does modularity improve software readability?
Modularity uses divide and conquer, making the software easier to read and understand.
How does modularity hide complexity in software design?
Modularity hides complexity behind interfaces, a principle known as information hiding.
How does modularity improve maintainability of software?
Modularity confines changes locally, making the software easier to maintain.
How does modularity contribute to software reusability?
Parts of the software can be reused in different contexts, promoting reusability.
How does modularity support variability in software design?
Modules can be composed in different ways for new contexts, supporting variability.
What is a design pattern in software development?
Design patterns codify design decisions and best practices for solving recurring software problems. They are templates recognized and adapted for specific uses.
What principles do design patterns promote?
Design patterns promote principles such as modularity and abstraction.
What is a Creational design pattern? Give examples.
Creational patterns deal with the creation, composition, and representation of objects. Examples: Abstract Factory, Factory Method.
What is a Structural design pattern? Give examples.
Structural patterns organize objects to build a larger structure. Examples: Adapter, Composite.
What is a Behavioral design pattern? Give examples.
Behavioral patterns deal with communication and assignment of responsibilities between objects. Examples: Chain of Responsibility, Command.