[Edit: belatedly, I realize that Todd has already mentioned the Risch algorithm in his own answer. Cutting this own down to the appropriate essentials.]
I do take exception to your statement that integration is not automated or implemented in CAS software. The Risch Algorithm allows you to decide if an elementary function admits an elementary primitive, and calculates it if it exists. It is true that the algorithm is a lot more complicated than derivation (which used to be a routine project to assign to computer science students); I don't know that any CAS fully implements the algorithm, though all of them implement it at least partially.
And of course, as this has already been pointed out, ; and this is about as good as it gets since there are elementary functions such as $\exp(-x^2)$ that can be proved do not to admit elementary primitives.
On another note, I've heard integration referred to as an inverse problem by analysts; unfortunately, I couldn't find a good reference. But the idea was that direct problems and inverse problems are fundamentally different animals with different features. Direct problems (derivation, checking that a function satisfies an DE, multiplication of integers) have unique solutions that have simple algorithms. Inverse problems (integration, solving ODEs, factorization of integers) usually arise when you take a direct problem backwards, and this almost dooms them to being more complicated. Usually, even proving that a solution exists is an achievement, the solutions may be harder to get to, and usually are not unique.