software engineering service-oriented computing software reuse quality assurance java programming software development ontology software robotics web development embedded systems ontologies