Towards an Ontology of Software: a Requirements Engineering Perspective