Intuitively, a process is reversible if there is no dissipation. For example, Joule expansion is irreversible because initially the system is not uniform. Initially, there is part of the system with gas in it, and part of the system with no gas. For dissipation to occur, there needs to be such a non uniformity. This is just the same as if in a system one section of the gas was hot, and the other cold. Then dissipation would occur; the temperature distribution would become uniform with no work being done, and this would be irreversible because you couldn't add or remove heat or change the volume to return the system to its initial state. Thus, if the system is always uniform, then the process is reversible, meaning that you can return the system to its original state by either adding or removing heat, doing work on the system, or letting the system do work. As another example, to approximate the expansion in an internal combustion engine as reversible, we would be assuming that the temperature and pressure uniformly change throughout the volume after the spark. Obviously, this is not true and there is a flame front and sometimes even engine knocking. One of the reasons that Diesel engines are able to attain higher efficiency is that the combustion is much more uniform, so less energy is lost to dissipation and the process is closer to reversible.