When implementing, you are writing in a high level language that abstracts the physical machine. In requirements analysis and design, you are looking at abstracting the physical world and business practices that exist to seek a higher-level understanding. Here a couple of random thoughts that may help. Constraints Constraints Let's suppose you want to model a very simple transaction, for example, purchasing a hamburger at a fast food establishment. The customer has sufficient money in local currency to purchase a burger.
All burgers are flame-broiled.
All burgers weigh 0.08oz before cooking. You can't get a fried burger here. If you request a burger with ketchup the supplier is under no obligation to give it to you. If you request a cheese-burger and have the money, you are guaranteed to receive it. Everything can be described in terms of certain properties, some properties can vary among instances, some can not.