The difference between the two is best summarized as follows: The goals of someone who will have to use a program (user-centered design approach) vs the observed behavior of the user that is built into the program without consideration for the user's stated goals.
A user-centered design approach is a feedback-oriented program that results in the user telling the developer what they want out of a program that will best suit what they believe their job will require. The advantage with this method is that the user knows what they do, whereas the developer doesn't do the user's job and may not understand it at all.
Conversely, the the activity-based approach allows the designer to examine how a user actually uses a program; regardless of whatever a user SAYS they will use it for, this allows the designer to actually implement features they know will be used.
Ultimately, I believe the user-centered approach is the best. Designers do not do the work of the users they are designing for; users know their jobs much better than designers. Furthermore, the user-based approach allows for collaboration on a vastly larger scale within an organization. Designing for only one person's activity ignores the very serious issue of interdepartmental cooperation that is necessary for all organizations.
Content will be erased after question is completed.