37 research outputs found

    NOOP: A mathematical model of object-oriented programming

    Get PDF
    Computer software is ubiquitous. More than 35 × 10 18 computer instructions are executed around the globe each second. As computers dominate more aspects of our lives, there is a growing need to reason more accurately about computer software. Most contemporary computer software is written using object-oriented (OO) programming languages, such as J AVA, C#, and C++. How should we mathematically characterize object-oriented software? This is the question this thesis addresses by presenting an accurate domain-theoretic model of mainstream object-oriented programming. Mainstream object-oriented languages are class-based. In such languages, the name of a class is part of the meaning of an object, a property often called "nominality". Most mainstream OO languages also conform to a static type discipline. Hence, the focus of this thesis is the construction of an accurate model of nominal, statically-typed OO languages. In statically-typed nominal OO languages, class names are also part of the meaning of corresponding class types, and class inheritance (subclassing) is explicitly declared; one class is a subclass of another only if it is declared as such. When static type systems are formulated to describe sets of objects, subtyping is defined so that subclassing is consistent with subtyping. Nevertheless, some programming languages (PL) theoreticians dismiss this identification as a design error because the only published models of OO languages exclude nominal information from objects and define subtyping in a way that ignores nominality. In nominal OO languages, program behavior depends on the nominal information embedded in objects. This thesis builds a model of OO languages called NOOP that includes nominal information and defines static types in accord with mainstream OO language designs. In NOOP , the meaning of every object includes its class name. Similarly, types are defined such that objects belong to a particular class type if and only if they are members of classes that inherit from the class corresponding to the class type. To demonstrate the utility of the model, we show that in NOOP inheritance and OO subtyping coincide. This work shows that mainstream OO languages are not technically defective in identifying inheritance and subtyping. In models that include nominal information and define types that respect nominal information, this identification is mathematically correct. The folklore among OO programming language researchers that "inheritance is not subtyping" is incorrect

    Evolutionary computing driven search based software testing and correction

    Get PDF
    For a given program, testing, locating the errors identified, and correcting those errors is a critical, yet expensive process. The field of Search Based Software Engineering (SBSE) addresses these phases by formulating them as search problems. This dissertation addresses these challenging problems through the use of two complimentary evolutionary computing based systems. The first one is the Fitness Guided Fault Localization (FGFL) system, which novelly uses a specification based fitness function to perform fault localization. The second is the Coevolutionary Automated Software Correction (CASC) system, which employs a variety of evolutionary computing techniques to perform testing, correction, and verification of software. In support of the real world application of these systems, a practitioner\u27s guide to fitness function design is provided. For the FGFL system, experimental results are presented that demonstrate the applicability of fitness guided fault localization to automate this important phase of software correction in general, and the potential of the FGFL system in particular. For the fitness function design guide, the performance of a guide generated fitness function is compared to that of an expert designed fitness function demonstrating the competitiveness of the guide generated fitness function. For the CASC system, results are presented that demonstrate the system\u27s abilities on a series of problems of both increasing size as well as number of bugs present. The system presented solutions more than 90% of the time for versions of the programs containing one or two bugs. Additionally, scalability results are presented for the CASC system that indicate that success rate linearly decreases with problem size and that the estimated convergence rate scales at worst linearly with problem size --Abstract, page ii

    JAMOOS - A Domain-Specific Language for Language Processing

    Get PDF
    JAMOOS is a cohesive suite for quick definition of attribute grammars and generation of compilers, interpreters and other language processing tools. As a programming language, JAMOOS brings a new tree computing metaphor which unifies the notions of object creation, procedure call and reduction of rules in an attribute context-free grammar. JAMOOS has a rich object oriented-type system, with features such as genericity, lists, union and unit types. This type system serves also as a language for specifying context-free grammars

    Inspecting Java Program States with Semantic Web Technologies

    Get PDF
    Semantic debugging, as introduced by Kamburjan et al., refers to the practice of applying technologies of the semantic web to query the run-time state of a program and combine it with external domain knowledge. This master thesis aims to take the first step toward making the benefits of semantic debugging available for real-world application development. For this purpose, we implement a semantic debugging tool for the Java programming language, called the Semantic Java Debugger or sjdb. The sjdb tool provides an interactive, command line-based user interface through which users can (1) run Java programs and suspend their execution at user-defined breakpoints, (2) automatically extract RDF knowledge bases with description logic semantics that describe the current state of the program, (3) optionally supplement the knowledge base with external domain knowledge formalized in OWL, (4) run (semantic) queries on this extended knowledge base, and resolve the query results back to Java objects. As part of this debugging tool, the development of an extraction mechanism for knowledge bases from the states of suspended Java programs is one of the main contributions of this thesis. For this purpose, we also devise an OWL formalization of Java runtime states to structure this extraction process and give meaning to the resulting knowledge base. Moreover, case studies are conducted to demonstrate the capabilities of sjdb, but also to identify its limitations, as well as its response times and memory requirements

    POLICY BASED THIRD PARTY WEB SERVICE MANAGEMENT

    Get PDF
    Service-oriented computing potentially can help businesses respond more quickly and more cost-effectively to changing market-conditions. Web services are the basic building elements of service-oriented architecture. There are often expectations expected from services that are related to non-functional aspects (i.e. response time, availability) of the web service. The non-functional requirements are referred to as Quality of Service (QoS) requirements. Service Level Agreements (SLAs) are contracts between service providers and service consumers by which the service providers are bound to maintain a certain level of the Quality of Service. SLAs specify conditions on metrics, that represent some aspect of run-time behaviour, that are to be satisfied at run-time. Monitoring of services is needed to determine when SLAs are vio­ lated. Adaptive recovery actions are taken to maintain the quality of the service promised on the SLAs. Policies are used to guide the decision making process to determine the appropriate action. In this work a new system architecture which uses policies to manage web services is pro­ posed and a prototype is implemented to validate the architecture. In this system policies could be added, modified or deleted at system run time. The management task is totally handled by the third party and so, management tasks on the client end are reduced. The results of the conducted experiments validates the functionality of our proposed archi­ tecture and proves that the overhead of using the architecture is less
    corecore