I like Cal's definition of app in the modern sense, it is simple and to the point, but it is open to pedantry. So if it is going to get picked apart maybe it needs to be more specific?
Would it be fair to say that an app is a program (or software) that a user consciously interacts with in real time, via a user interface?
For example the software that I work on has a batch process that automatically kicks off around midnight. People set parameters and create inputs for the batch process and then they go home at the end of the working day. And then in the morning people come into work and look at reports and queues and stuff. Those reports and queues are interfaces of a sort, but they are not real time. That batch process isn't an app.
A heart monitor isn't an app because the user doesn't consciously interact with it in real time.