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.