This document discusses the design of an ATM simulator software project. It describes the iterative development process, including initial requirements, use case modeling, class modeling, and state diagrams. The first iteration focuses on a basic ATM engine and console interface that supports withdrawal and balance inquiry transactions without a graphical user interface or bank integration. Subsequent iterations will expand functionality and improve the user interface.