This is what is what is called "genitive".
Sofware program = programa de software = "program of software".
Also called "complemento del nombre" or "complemento nominal".
Obviously, it is a "noun"
modifying another "noun". So, "function-wise" you could say that
it works like an adjective, but it is not.
Hablante de español = Spanish speaker = Speaker of Spanish.
(Spanish = noun)
Hispanohablante = Spanish speaker (Spanish = Adjective)
I hope this helps, in addition to Rusty's and Irma's comments.
[Espero que esto ayude, además de los comentarios de Rusty y de Irma.]
(Comentarios de Rusty y de Irma = Rusty's and Irma's comments = comments of Rusty and [of] Irma = Comments made by Rusty and by Irma)