Software Engineering Exam 2 Flashcards

1
Q

Module

A

A lexically continguous sequence of program statements, bounded by elements and identified as an aggregate.

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

Cohesion

A

The degree of interaction within a module.

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

Coupling

A

The degree of interaction between modules.

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

Data Encapsulation

A

Integrating data and operations on the data within the same module helps isolate changes and improve maintainability.

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

Abstract Data Types

A

Types of data with associated operations but without public data attributes.

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

Information Hiding

A

Concealing details that might change within a module to ensure modularity.

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

Object-Oriented Paradigm

A

Emphasis on objects, inheritance, polymoprhism, and encapsulation to improve software structure and reusability.

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

Modules should be designed for?

A

High cohesion and low coupling .

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

Coincidental Cohesion

A

Performs unrelated tasks, leading to poor maintainability and reuse.

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

Logical Cohesion

A

Performs related tasks chosen by the caller, like all input/output functions grouped together.

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

Temporal Cohesion

A

Groups actions related by time. These actions are weakly related functionally.

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

Procedural Cohesion

A

Actions are related by the sequence in which they occur.

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

Communicational Cohesion

A

Actions use the same data set.

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

Functional Cohesion

A

The highest level, where each module performs exactly one taks.

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

Informational Cohesion

A

Actions operate on a shared data structure, each action independent with its entry point.

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

Which cohesion is ideal and why?

A

Functional cohesion. Highly reusable, easily maintainable, and easier to debug since it performs a single task.

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

Content Coupling

A

One module directly uses or modifies another’s content, leading to high interdependency.

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

Common Coupling

A

Multiple modules share access to global data, reducing readability and maintainability.

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

Control Coupling

A

Modules control each other’s flow by passing control information.

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

Stamp Coupling

A

Modules share complex data structures but only use parts of them, reducing reusability.

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

Data Coupling

A

Modules interact via simple data parameters, which is ideal as it minimizes dependencies.

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

Objects and Classes

A

An object is an instantiation of a class, which is an abstract data type that supports inheritance.

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

Inheritance

A

A mechanism where a subclass inherits properties and behaviors from a parent class, promoting code reuse.

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

Polymorphism

A

A key concept in OOP that allows objects of different classes to be treated as objects of a common superclass. It enables s single interface to represent different underlying forms (data types).

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

Dynamic Binding

A

Method calls are resolved at runtime, which can enhance flexibility but complicate maintenance.

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

Advantages of polymorphism and inheritance

A

Flexibility, code reuse, and adaptability of polymorphic objects.

26
Q

Advantages of Object-Oriented Design

A
  • Balances focus on data and actions, improving modularity.
  • Encapsulates object details, supporting high cohesion and low coupling.
26
Q

Disadvantages of polymorphism and inheritance

A

Increases complexity and potential for maintenance difficulties due to intertwined dependencies.

27
Q

Challenges of Object-Oriented Design

A
  • Requires careful design to avoid complexity, especially with inheritance and dynamic binding.
  • First projects often take more effort due to the learning curve and petentially larger project scopes.
28
Q

Reuse

A

Involves using parts of one product to assist in developing another product with different functionality.

29
Q

Opportunistic Reuse

A

Reusable parts are added to a database after a product is built.

30
Q

Systematic Reuse

A

Reusable components are created first, then used to build products.

31
Q

Benefits of reuse

A

Accelerated product development. No need to redesign or retest reused components.

32
Q

Common impediments of reuse

A
  • Not-Invented-Here Syndrome: Hesitation to use external code.
  • Fault concerns: Worries about bugs in reused code.
  • Storage and retrieval issues: Challenges in organizing reusable components.
  • Cost: Expenses related to making items reusable and creating reuse process.
33
Q

Libraries/Toolkits

A

Sets of reusable routines where control logic is managed by the user.

34
Q

Application Frameworks

A

Structures that include control logic, allowing users to customize specific sections.

35
Q

Design Patterns

A

Standard solutions to recurring design problems, often consisting of customizable classes.

36
Q

Wrapper (Adapter Pattern)

A

Used to resolve interface mismatches between classes.

37
Q

Bridge Pattern

A
  • Decouples abstraction from implementation to allow independent modification.
  • Commonly used in hardware-dependent systems, such as printer drivers, to isolate changes to a single side.
38
Q

Iterator Pattern

A

Enables traversal of elements in a collection without exposing the collection’s structure.

39
Q

Abstract Factory Pattern

A

Provides an interface to create families of related objects without specifying their conrete classes.

40
Q

Architecture Reuse

A

Large-scale reuse through frameworks and toolkits.

41
Q

Creational Patterns

A

Focus on object creation.

42
Q

Structural Patterns

A

Deal with relationships between entities.

43
Q

Behavioral Patterns

A

Address communication between objects.

44
Q

Maintenance Impact

A

Reuse can reduce maintenance effort as code changes in one location propagate to reused instances.

45
Q

Portability

A

Portability refers to a product’s adaptability across different platforms.

46
Q

Data and Actions

A

A product must consider both the data it manages and the actions performed on this data.

47
Q

Operation-Oriented Design

A

Focuses on actions.

48
Q

Data-Oriented Design

A

Emphasizes data structure.

49
Q

Hybrid (Object-Oriented Design)

A

Combines data and actions within objects.

50
Q

Architectural Design

A
  • High-level design based on specifications.
  • Focuses on breaking down the system into modules.
51
Q

Detailed Design

A

Elaborates on specific algorithms and data structures within each module.

52
Q

Data Flow Analysis

A

Determines points of abstraction for input and output data and decomposes into modules.

53
Q

Transaction Analysis

A

More suitable for transaction-heavy applications. Focuses on reusability by creating generic, reusable modules.

54
Q

Data-Oriented Design Principle

A

The product structure should reflect the structure of its data.

55
Q

Data-Oriented Design Popularity

A

Less common than operation-oriented design and has been largely replaced by object-oriented methods.

56
Q

Object-Oriented Design’s Aim

A

Design a system in terms of classes derived during Object-Oriented Analysis.

57
Q

Two Main Steps of Object-Oriented Design

A
  1. Complete the Class Diagram: Define attribute formats and assign methods to either a class or a client.
  2. Detailed design: Refine the class and sequence of operations for each method.
58
Q

The Design Workflow

A

Transform analysis artifacts into usable blueprints for programmers. Split large workflows into smaller subsystems for parallel implementation.

59
Q

Role of Software Architect

A

Balances functional and nonfunctional requirements. Makes tradeoffs within budget and time constraint.

60
Q

Design Review

A

Checks that the design aligns with specifications and ensures its correctness.

61
Q

Design Inspection

A

Verifies each aspect of the design, identifying potential faults before implementation.

62
Q
A