Both expressions are correct and the difference in meaning between them is minimal. They both inform us when the action, to work, began and that it is ongoing.
Work is a verb which we can use in the present and present progressive tense.
- "She works in this company" describes a habitual action.
- "She is working at the moment" describes an action in progress but its duration is temporary.
Thus the present perfect progressive can be seen as related to the progressive and present aspect.
She has been working here since 1995
This sentence is acceptable but because the duration of the action is quite extensive, (18 years), people tend not to consider an action lasting that long to be temporary in nature.
Moreover, this response could answer one of many questions but without any specific context I can only make suppositions. My view is that the simplest, most logical and common question asked would be:
How long has she worked there?
It is important to note that the action is NOT finished. The person is still working for the same company. If not, the question ought to be like this:
- How long did she work there?
the answer would look something like this,
- She worked here for 18 years.
The action is completed and we naturally give the total number of years she worked for the company i.e. "for 18 years".
Someone who still works in the same company for 18 years (and therefore, has NOT been fired from her job) is likely to continue working there tomorrow, next month, and the year after etc. The implication being she has a steady, regular job. Therefore, the longer and the more permanent the action is, the more speakers will prefer the present perfect usage.
She has worked here since 1995.
Addendum
In the case of someone travelling to a place, normally we imagine someone either taking a plane, or hiking to a far-away land. In the OP's example São Paulo is the man's destination.
He has been traveling to São Paulo since the beginning of the year.
The "to" implies that the man has not yet arrived at São Paulo. The act of travelling to a place is still ongoing. Perhaps he is hitch-hiking and prefers to stop at different locations along the way. Although grammatically correct, it sounds a bit odd; normally speakers would say of people traveling in their sabbatical leave:
He's still traveling, and visiting different places before he arrives
at São Paulo.
The use of "ing" adds an element of dynamism to the sentence and implies the situation is evolving and progressing. If the intention was to say that the man is already in São Paulo, then both perfect aspects are acceptable and correct.
He has been traveling in/around São Paulo since the beginning of the year
and
He has traveled in/around São Paulo since the beginning of the year.
In this case I would prefer the ing structure (present progressive) because presumably the man at some point will return home, wherever that may be. Hence, the focus is on the temporality and dynamic aspect of the action.
A is for aspect http://youtu.be/NfyZOr4Gg64?t=1m16s
Born in New Zealand, Scott Thornbury, is a well-known academic in the field of English language teaching and author of many books on teacher training. Thornbury discusses the uses of present aspect in this video.
Best Answer
You're right. After a modal, HAVE+pp does not have the sense of perfect, but of past.
"Must have slept" corresponds temporally to "slept" not to "has slept"
Similarly "must have been sleeping" corresponds in tense to "was sleeping", not to "has been sleeping".
Edit: after thinking about it, I think it would be more accurate to say that after a modal, the distinction between past and perfect is neutralised. "Must have slept" can correspond to "has slept" or to "slept". So:
has perfect force: it's equivalent to "I conclude that somebody has slept here".
has non-perfect past force: it's equivalent to "I conclude that he slept".
So "the baby must have been sleeping" could have the usual present-relevance (perfect continuous) but might not have (past continuous).