A person who specializes in writing RequirementsDocuments.
The SystemAnalyst serves as a liaison between the programmers and the customer--that is, between the people with expertise in the MachineDomain? and the people with expertise in the ProblemDomain. The SystemAnalyst's purpose is to produce a specification that gives the programmers enough information to implement, and that when implemented provides business value to the customer.
In the real world corporations exercise considerable flexibility over both the title of employees performing Systems Analysis, and the roles and responsibilities of a Systems Analyst. In many situations a Systems Analyst performs the role of a BusinessSystemsAnalyst, providing strategic guidance to operations or ProcessReengineering? (hey, a word with two double e's!). Many times employees with a title of Programmer Analyst often work directly with clients and develop their own specifications; later they work from these specifications to code software.
What are the traits that make for a good Systems Analyst? Foresight certainly helps (see OnlyForesightMatters). A solid background in ProjectManagement is useful, although often this function is provided by a different employee. Certainly it is valuable to posses PoliticalSavvy. More than anything, the ability to organize. There's also a certain mindset, an ability to view things from differing perspectives, to deconstruct and rebuild.
See also: SoftwareRequirementsAndSpecifications, JobTitles