if(trackingNum != null){ } Modeling Software with Finite State Machines: A Practical Approach