Software Analyst is not a very common title, at least not in my experience. In some organisations it seems to be a synonym for Business Analyst. However, I've seen the two roles defined this way -
The Business Analyst (BA) prepares a Business Requirements Specification, which describes the business needs for a system in a language and format that is digestible to the system users.
The Software Analyst (SA) takes the Business Requirements Specification and prepares a Functional Requirements Specification, which breaks down each business requirement into logical components that might be more easily translated into a computer program. The Analyst might also prepare a Non-Functional Requirements Specification, which would specify system needs such as Performance and Security.
In the above delineation, the BA will spend most of their time liasing with the end-users and especially with the SMEs (Subject Matter Experts). The SA, by contrast, would spend most time talking to the BA and the programmers.
As I said at the start, it's rare to see Software Analyst as a stand-alone role. Much more common is to see this role combined with the programming role, and called an Analyst/Programmer (A/P). The typical A/P is expected to be able to create reasonable funcational specifications, and to have the ability to liaise with the BA, or even directly with the users, in order to come up with a workable system.
Programmer and Software Developer are very often used interchangeably. I've sometimes seen it suggested that a Programmer purely cuts the code, whereas as Software Developer delivers a whole solution, including all design aspects. But I don't believe there are hard and fast definitions for the roles.