The problem space of symbolic computation on definite integrals is currently fairly open. The Risch algorithm answers the question if there is a closed form solution to a indefinite integral (assuming it doesn't get stuck on the constant problem) in elementary functions, but it doesn't address solutions with special functions. So if there is an antiderivitive for f(x), Risch algorithm will find it and it will tell you if there isn't one.
If there isn't an antiderivitive expressible in elementary functions, we need to resort to heuristics to try to match patterns; We try to search for special functions that match, especially the incomplete gamma function. While we have rules of thumb to search for symbolic solutions to definite integrals, we can't always say for sure whether a symbolic solution exists or what it is.
This is an active area of research for developers of computer algebra systems, and these are hard problems. Even the Risch algorithm, which is fairly mature in academic terms, is difficult to understand and fully implement, and to date the only CAS that fully implements it is Axiom.
Techniques for symbolic integration on definite integrals for humans often start with look up tables. For machines, you want to start with Risch, then go from there. There are pattern matching techniques for special functions, then there are techniques that employ some of the search space techniques of automated theorem provers.
The Wolfram article covers some of the reasons why definite integration is still so difficult; Concise techniques for providing closed form solutions or answers to if there is no closed form solutions would solve a number of open problems in transcendence theory. If we find an algorithmic technique for definite integrals, even if its only semi-decidable as Risch is, it will be a major step in a number of areas of mathematics.