Abstract. Web Services environment provides capabilities for effective N-version programming as there exist different versions of software that provide the same functionality. N-version programming, however, faces the significant problem of co-relation of failures in different software versions. This paper presents a solution that attempts to reduce the risk of co-relation of failures by selecting for invocation services having relatively different non-functional features. We use an ontology-driven approach to identify and store information about software features related to differences in software versions, such as: software vendor, design technology or implementation language. We present an algorithm for selection of software versions using the designed ontology. The solution was verified in a prototypical implementation with the use of an existing OWL-S API library.