Software Engineering Exam 2 Flashcards

(64 cards)

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
Dynamic Binding
Method calls are resolved at runtime, which can enhance flexibility but complicate maintenance.
25
Advantages of polymorphism and inheritance
Flexibility, code reuse, and adaptability of polymorphic objects.
26
Advantages of Object-Oriented Design
- Balances focus on data and actions, improving modularity. - Encapsulates object details, supporting high cohesion and low coupling.
26
Disadvantages of polymorphism and inheritance
Increases complexity and potential for maintenance difficulties due to intertwined dependencies.
27
Challenges of Object-Oriented Design
- 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
Reuse
Involves using parts of one product to assist in developing another product with different functionality.
29
Opportunistic Reuse
Reusable parts are added to a database after a product is built.
30
Systematic Reuse
Reusable components are created first, then used to build products.
31
Benefits of reuse
Accelerated product development. No need to redesign or retest reused components.
32
Common impediments of reuse
- 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
Libraries/Toolkits
Sets of reusable routines where control logic is managed by the user.
34
Application Frameworks
Structures that include control logic, allowing users to customize specific sections.
35
Design Patterns
Standard solutions to recurring design problems, often consisting of customizable classes.
36
Wrapper (Adapter Pattern)
Used to resolve interface mismatches between classes.
37
Bridge Pattern
- 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
Iterator Pattern
Enables traversal of elements in a collection without exposing the collection's structure.
39
Abstract Factory Pattern
Provides an interface to create families of related objects without specifying their conrete classes.
40
Architecture Reuse
Large-scale reuse through frameworks and toolkits.
41
Creational Patterns
Focus on object creation.
42
Structural Patterns
Deal with relationships between entities.
43
Behavioral Patterns
Address communication between objects.
44
Maintenance Impact
Reuse can reduce maintenance effort as code changes in one location propagate to reused instances.
45
Portability
Portability refers to a product's adaptability across different platforms.
46
Data and Actions
A product must consider both the data it manages and the actions performed on this data.
47
Operation-Oriented Design
Focuses on actions.
48
Data-Oriented Design
Emphasizes data structure.
49
Hybrid (Object-Oriented Design)
Combines data and actions within objects.
50
Architectural Design
- High-level design based on specifications. - Focuses on breaking down the system into modules.
51
Detailed Design
Elaborates on specific algorithms and data structures within each module.
52
Data Flow Analysis
Determines points of abstraction for input and output data and decomposes into modules.
53
Transaction Analysis
More suitable for transaction-heavy applications. Focuses on reusability by creating generic, reusable modules.
54
Data-Oriented Design Principle
The product structure should reflect the structure of its data.
55
Data-Oriented Design Popularity
Less common than operation-oriented design and has been largely replaced by object-oriented methods.
56
Object-Oriented Design's Aim
Design a system in terms of classes derived during Object-Oriented Analysis.
57
Two Main Steps of Object-Oriented Design
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
The Design Workflow
Transform analysis artifacts into usable blueprints for programmers. Split large workflows into smaller subsystems for parallel implementation.
59
Role of Software Architect
Balances functional and nonfunctional requirements. Makes tradeoffs within budget and time constraint.
60
Design Review
Checks that the design aligns with specifications and ensures its correctness.
61
Design Inspection
Verifies each aspect of the design, identifying potential faults before implementation.
62