About MBSE4U
About Us
Foreword by Rick Hefner
Preface
- Artificial Intelligence
- Download Lunar Lander Module Model
- Acknowledgment
10% of the Practices Cause 90% of the Pain
- Pain Point: Forgetting that “The Perfect is the Enemy of the Good”
- Pain Point: Forgetting that “Everything Should Be as Simple as Possible, but No Simpler”
- Pain Point: Dogmatic Modeling – “My Karma Ran Over Your Dogma”
- Pain Point: Believing SysML Equals Object-Oriented Design
- Pain Point: Not Avoiding the Department of Redundancy Department
- Summary
- Glossary
Ignoring Software: A Guarantee of Systems Engineering Pain
- Pain Point: Misalignment Between Systems and Software
- Pain Point: Inconsistent Vocabulary
- Pain Point: Not Doing Domain-Driven Logical Architecture
- Pain Point: The Software Team Ignores the SysML Model (including Requirements)
- Pain Point: Treating Software as an Afterthought Creates Brittle Architectures
- Pain Point: Failure to Leverage Software’s Flexibility
- Summary
- Glossary
Subsystem (O-O) Decomposition Is Less Painful Than Functional Decomposition
- Pain Point: Confusing “Functional Architectures” with Solution-Space Architectures
- Pain Point: No Clear Guidance on When to Stop Decomposing Functions
- Pain Point: Deep Function Trees Are Not Resilient to Changing Requirements
- Pain Point: Functional Decomposition Slows Everything Down
- Pain Point: Black Box Architecture is Painfully Difficult
- Pain Point: Free-Floating Functions are Architecturally Ambiguous
- Summary
- Glossary
Swiss Cheese Requirements: Patching the Holes
- Pain Point: Believing You’ve Found All the Requirements
- Pain Point: Over-Specifying How Instead of What
- Pain Point: Requirements with Undefined or Ambiguous Terms
- Pain Point: Poorly Written Requirements
- Pain Point: Not Baselining Requirements or Using Version Control
- Pain Point: Not Exploring Requirements on a Subsystem-by-Subsystem Basis
- Pain Point: Requirements That Fail to Map to System Structure
- Pain Point: Not Exploring Requirements for Interfaces Between Subsystems
- Pain Point: Not Exploring Requirements on a Use Case-by-Use Case Basis
- Pain Point: Not Exploring Requirements for Alternate and Exception Scenarios
- Pain Point: Not Exploring Software Requirements
- Pain Point: Not Exploring Embedded Software Requirements
- Pain Point: Not Exploring User Interface Software Requirements
- Pain Point: Not Specifying Performance Requirements Properly
- Summary
- Glossary
Ending Use Case Abuse
- Pain Point: Skipping Use Cases Entirely
- Pain Point: Using Use Cases to Represent System Functions
- Pain Point: Skipping Use Case Narratives
- Pain Point: Failing to Link Use Cases to Behavior Models
- Pain Point: Excessive Detail in Use Case Templates
- Pain Point: Ignoring Alternate and Exception Behavior in Use Cases
- Pain Point: Not Tracing Use Cases to Requirements
- Pain Point: Failing to Wireframe the User Interface
- Pain Point: Doing Functional Decomposition on Use Case Diagrams
- Pain Point: Not Naming Use Cases as Verb Phrases
- Pain Point: Not Writing Use Cases in Active Voice from the User Perspective
- Pain Point: Obsessing Over Includes and Extends
- Summary
- Glossary
Activity Diagrams for Logic and Requirements Discovery
- Pain Point: Skipping Requirements Discovery
- Pain Point: Turning Logic Flow Diagrams into Data Flow Diagrams
- Pain Point: Using Object Flows on Activity Diagrams
- Pain Point: Allocating Behavior Too Early
- Pain Point: Doing Behavior Allocation and Dataflow Analysis at the Same Time
- Pain Point: Splitting Hairs Between Too Many Types of Actions
- Pain Point: Not Simulating the Activity Diagram
- Pain Point: Failing to Model Asynchronous Behavior
- Summary
- Glossary
Sequence Diagrams for Behavior Allocation
- Pain Point: Skipping Sequence Diagrams Entirely
- Pain Point: Moving to Sequence Diagrams Too Soon
- Pain Point: Not Scoping the Sequence Diagram to a Use Case
- Pain Point: Not Allocating Operations and Signal Receptions to Blocks
- Pain Point: Not Keeping the Focus on Allocating Behavior
- Pain Point: Overusing Fragments to Model Logic Instead of Allocating Behavior
- Pain Point: Not Understanding Object-Oriented Design
- Pain Point: Not Tracing Messages to Requirements
- Pain Point: Getting Confused by Activations
- Pain Point: Confusing Self-Messages with Recursive Operations
- Pain Point: Lifeline Titles from the Department of Redundancy Department
- Summary
- Glossary
Pain-Free State Modeling
- Pain Point: Not Understanding What State Machines Are For
- Pain Point: Not Understanding How Substates Work (and When to Use Them)
- Pain Point: Misunderstanding Entry, Exit, and Do Behaviors
- Pain Point: Misunderstanding Internal Transitions
- Pain Point: Not Understanding History Pseudostates
- Pain Point: Failing to Connect States and Transitions to Requirements
- Pain Point: Misunderstanding Transitions
- Pain Point: Not Understanding Available Event Types
- Pain Point: Not Understanding Transition Effects and Their Execution Flow
- Pain Point: Not Understanding Parallel Behavior in Orthogonal States
- Pain Point: Trying to Generate State Machine Code Before Simulating
- Summary
- Glossary
IBDs and Interface Definition
- Pain Point: Not Understanding What IBDs Are For
- Pain Point: Not Understanding What You Have to Do Before You Start an IBD
- Pain Point: Misunderstanding the Relationship Between Blocks and Part Properties
- Pain Point: Not Understanding Ports (including Port Types and Conjugation)
- Pain Point: Not Knowing How to Start an IBD
- Pain Point: Not Understanding Interface Blocks, Signals, and Flow Properties
- Pain Point: Flow Properties Are Powerful—But Heavy
- Pain Point: Trying to Show Too Much at Once
- Summary: Clarity Is King
- Glossary
Pain-Free Parametrics Part 1: Fundamentals
- Pain Point: Math and Physics Are Hard
- Pain Point: Terminology is Confusing
- Pain Point: Constraint Blocks Appear on Both BDDs and Parametric Diagrams
- Pain Point: Confusing Pins, Constraint Parameters, and Constraint Expressions
- Pain Point: Not Understanding the Simulation Context
- Pain Point: Not Understanding the Cameo Simulation Console
- Pain Point: Not Knowing how to Send Signals to Trigger Events
- Pain Point: I run the simulation and nothing really seems to happen.
- Pain Point: Not Understanding Opaque Behaviors on Activity Diagrams
- Pain Point: Not Knowing how to use Python in a Simulation
- Pain Point: Not Understanding Value Types, Quantity Kind, Units, and Symbols
- Pain Point: Unit Mismatches (not understanding the ISO 80000 Library)
- Pain Point: Not Knowing how to Evaluate Performance Requirements
- Summary
- Glossary
Pain-Free Parametrics Part 2: Advanced Parametrics
- Pain Point: Not Understanding How to Use Time Series Charts
- Pain Point: Not Understanding How to Use User Interface Modeling Diagrams
- Pain Point: Not Using Simulation Configuration Diagrams
- Pain Point: Not Understanding How to Use Instance Tables
- Pain Point: Not Understanding How to Use Instances to Create Configurations (for Trade Studies)
- Pain Point: Not Realizing That Image Switchers Even Exist
- Pain Point: Not Understanding How to Run Monte Carlo Simulations
- Pain Point: Not Using Sequence Diagrams to Specify Test Cases
- Pain Point: Not Understanding Rollup Patterns
- Pain Point: Not Understanding How to Interface to Simulink and Matlab
- Pain Point: Misunderstanding Connectors: Binding vs Delegation
- Pain Point: The Trouble with Past-Tense Signal Names
- Summary
- Glossary
Pain-Free Parametrics Part 3: Landing on the Moon
- Time-Based Simulation Loop
- Summary
Appendix A – Auto Lander
- A.1 Introduction to PI Control Loops
- A.2 Auto Lander Overview
- A.3 Constraint Functions
- A.4 PI Control Loop for Auto Land
- A.5 Integrated Behavior
- A.6 When to Perform Calculations in Activities vs. Parametrics
- A.7 Summary
Appendix B - Lunar Lander V2 Model
- Lunar Lander V2 Model
