Send a link to your students to track their progress
48 Terms
1
New cards
Single Responsibility Principle (SRP)
A class should have a single overriding responsibility; it should have only one reason to change[cite: 1, 3].
2
New cards
Open/Closed Principle (OCP)
Software entities should be open for extension but closed for modification; extend behavior by adding new code, not changing old code[cite: 1, 3].
3
New cards
Liskov Substitution Principle (LSP)
Subclasses should be substitutable for their base classes without altering the correctness of the program[cite: 1, 3].
4
New cards
Interface Segregation Principle (ISP)
Don't make large multipurpose interfaces; clients should not be forced to depend on interfaces they don't use[cite: 1, 3].
5
New cards
Dependency Inversion Principle (DIP)
Depend on abstractions, not concretions; high
6
New cards
Preconditions (LSP)
According to Design by Contract, these cannot be strengthened in the subclass[cite: 1, 3].
7
New cards
Postconditions (LSP)
According to Design by Contract, these cannot be weakened in the subclass[cite: 1, 3].
8
New cards
Creator (GRASP)
Assign class B the responsibility to create class A if B contains, aggregates, records, or closely uses A[cite: 2].
9
New cards
Information Expert (GRASP)
Assign a responsibility to the class that has the information necessary to fulfill it[cite: 2].
10
New cards
Controller (GRASP)
The first object past the UI that receives and coordinates a system operation; delegates work but doesn't do it itself[cite: 2].
11
New cards
Low Coupling (GRASP)
Assign responsibilities so that dependencies between classes remain as low as possible to reduce the impact of change[cite: 2].
12
New cards
High Cohesion (GRASP)
Assign responsibilities so that objects remain manageable, focused, understandable, and do not do many unrelated things[cite: 2].
13
New cards
Content Coupling
The worst type of coupling; occurs when one class modifies another's internal data or branches into the middle of a routine[cite: 2].
14
New cards
Common Coupling
A bad form of coupling where classes share common (global) data[cite: 2].
15
New cards
Control Coupling
A bad form of coupling that uses a return code to control a different method's execution flow[cite: 2].
16
New cards
Stamp/Data Coupling
An acceptable form of coupling that involves passing complex data or structures between modules[cite: 2].
17
New cards
Coincidental Cohesion
The worst type of cohesion; completely unrelated functions are grouped in a single module[cite: 2].
18
New cards
Logical Cohesion
A bad form of cohesion where multiple logic sections are grouped together, usually executed based on a flag[cite: 2].
19
New cards
Functional Cohesion
The best type of cohesion; all essential elements for a single function are in the same module[cite: 2].
20
New cards
Novice Developer
Creates brittle designs that are easy to code but hard to maintain[cite: 2].
21
New cards
Intermediate Developer
Creates overly fancy, flexible, generalized designs that are easy to maintain but hard to code[cite: 2].
22
New cards
Expert Developer
Creates designs chosen with insight, balancing brittle with generalized implementations[cite: 2].
23
New cards
Software Architecture
The structure(s) of a system, comprising elements, externally visible properties, and the relationships among them[cite: 5].
24
New cards
Architectural Style
Determines the vocabulary of components, connectors, and constraints on how they can be combined[cite: 4, 5].
25
New cards
Logical View (4+1 Model)
Focuses on the object model of the design to address end
26
New cards
Process View (4+1 Model)
Captures concurrency, synchronization, and distribution aspects, addressing performance and scalability[cite: 6].
27
New cards
Development View (4+1 Model)
Describes the static organization of software modules in the development environment[cite: 6].
28
New cards
Physical View (4+1 Model)
Describes the mapping of the software onto the hardware network, addressing system topology and communications[cite: 6].
29
New cards
Scenarios (4+1 Model)
Uses instances of use cases to illustrate and validate the architectural views working seamlessly together[cite: 6].
30
New cards
Pipes and Filters Style
Components (filters) apply local transformations to input streams and produce output streams via connectors (pipes)[cite: 4].
31
New cards
Batch Sequential System
A degenerate case of a pipeline architecture where each filter completely processes all its input data before passing it on[cite: 4].
32
New cards
Data Abstraction / Object
Oriented Style
33
New cards
Event
based / Implicit Invocation Style
34
New cards
Layered System Style
Organized hierarchically, where each level provides service to the one above and serves as a client to the one below[cite: 4].
35
New cards
Repository Style
A central data structure represents the current state, and independent components operate on it (e.g., Databases, Blackboards)[cite: 4].
36
New cards
Table Driven Interpreter Style
A virtual machine produced in software containing an interpretation engine, memory, control state, and current program state[cite: 4].
37
New cards
KWIC (Key Word in Context)
A classic problem used to contrast the adaptability of different architectural styles like Shared Data, ADT, Implicit Invocation, and Pipes & Filters[cite: 4].
38
New cards
Design Pattern
A reusable micro
39
New cards
Class Jurisdiction
Patterns dealing with static semantic relationships between base classes and their subclasses using inheritance[cite: 8].
40
New cards
Object Jurisdiction
Patterns dealing with dynamic relationships between peer objects, relying heavily on object composition[cite: 8].
41
New cards
Compound Jurisdiction
Patterns that deal with behaviors and structures in recursive object structures[cite: 8].
42
New cards
Creational Patterns
Patterns that abstract how objects are instantiated, deferring the specifics of object creation[cite: 8].
43
New cards
Structural Patterns
Patterns that deal with the composition of classes or objects to form larger, more complex structures[cite: 8].
44
New cards
Behavioral Patterns
Patterns that characterize the ways in which classes or objects interact and distribute responsibility[cite: 8].
45
New cards
Abstract Factory Pattern
A creational object pattern providing an interface for creating families of generic product objects without specifying their concrete classes[cite: 8].
46
New cards
Strategy Pattern
A behavioral object pattern that objectifies an algorithm, allowing it to be selected and replaced at run
47
New cards
Wrapper / Decorator Pattern
A structural compound pattern that attaches additional services or properties to individual objects dynamically and transparently[cite: 8].
48
New cards
SimUDuck
A case study showing the Strategy pattern by extracting varying flying and quacking behaviors into interchangeable interfaces (FlyBehavior, QuackBehavior)[cite: 7].