Step 1: Define the Problem Goal: Clearly state what specific question the model needs to answer. For instance, is the goal to find the shortest path or the most scenic path?
Step 2: Identify Entities and Attributes: List all objects involved in the scenario. Determine which attributes of these objects directly impact the goal (e.g., in a flight model, weight matters, but the color of the seats does not).
Step 3: Establish Relationships: Define how entities interact. In a network model, this might be the connections between routers; in a physics model, it might be the force applied between objects.
Step 4: Iterative Refinement: Test the model by removing an element. If the solution remains unchanged, that element was unnecessary detail and should be permanently removed to simplify the model.
| Feature | Reality | Abstract Model |
|---|---|---|
| Complexity | Infinite variables and noise | Finite, selected variables |
| Focus | Physical existence | Functional logic |
| Detail Level | High (includes aesthetics) | Low (only functional data) |
| Usage | Direct interaction | Analysis and automation |
Abstraction vs. Simulation: While both represent reality, a simulation attempts to mimic reality as closely as possible (including noise like friction or wind), whereas an abstraction intentionally ignores those factors to focus on pure logic.
High-level vs. Low-level Abstraction: High-level models are closer to human language and concepts (e.g., a flowchart), while low-level models are closer to machine execution (e.g., assembly code).
The 'Impact' Test: When asked if a detail should be included in a model, ask: 'If I change or remove this detail, does the final output of my algorithm change?' If the answer is no, exclude it.
Identify the Model Type: Recognize common abstract models in exam questions, such as Graphs (for connections), State Machines (for behavior), or Data Structures (for organization).
Check for Over-Abstraction: Ensure the model hasn't removed a 'constraint.' For example, if a delivery model ignores 'one-way streets,' the resulting path might be impossible in reality.
Terminology Precision: Use terms like 'Information Hiding' and 'Generalization' correctly. Remember that abstraction is about removing detail, while decomposition is about breaking down tasks.
Confusing Abstraction with Decomposition: Students often think they are the same. Abstraction is about filtering (removing detail), while decomposition is about splitting (breaking a big problem into smaller sub-problems).
Including Implementation Details: A common mistake is including 'how' a variable is stored (e.g., 'it's a 32-bit integer') in a conceptual model where only the 'value' matters.
The 'Map' Fallacy: Thinking a model is a perfect copy of reality. A model is always a 'lie' that helps us see a specific 'truth' more clearly.