Patents by Inventor Wolfram Schulte

Wolfram Schulte has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Patent number: 7587636
    Abstract: A computer system provides a test program and one or more unit tests, such as a traditional unit test and or a parameterized unit test. The system also includes a constraint solver, a theorem prover, an implementation under test, a symbolic executor, a generalizor, and generated test cases. The generalizor receives a traditional unit tests as input, and modifies the traditional unit test into a parameterized unit test. The modification includes replacing plural concrete values in the traditional unit test with symbols, and exporting the symbols into a signature of the parameterized unit test. A symbolic executor identifies constraints while symbolically executing the created parameterized unit test of the implementation under test. A constraint solver and or theorem prover generates a set of test cases by solving for values that satisfy the series of constraints. The test program executes the automatically generated test cases.
    Type: Grant
    Filed: December 30, 2005
    Date of Patent: September 8, 2009
    Assignee: Microsoft Corporation
    Inventors: Nikolai Tillmann, Wolfgang Grieskamp, Wolfram Schulte
  • Patent number: 7584463
    Abstract: A state component saves a present state of a program or model. This state component can be invoked by the program or model itself, thereby making state a first-class citizen. As the state of the program evolves from the saved state, the saved state remains for reflection and recall, for example, for testing, verification, transaction processing, etc. Using a state reference token, the saved state of the program or model can be accessed by the program or model. For example, the program or model by utilizing a state component, can return itself to the saved state. After returning to the saved state, a second execution path can be introduced without requiring re-execution of the actions leading to the saved state. In another example, the state space of an executing model is saved in order to generate inputs required to exercise a program or model.
    Type: Grant
    Filed: August 27, 2003
    Date of Patent: September 1, 2009
    Assignee: Microsoft Corporation
    Inventors: Wolfgang Grieskamp, Yuri Gurevich, Wolfram Schulte, Nikolai Tillmann
  • Publication number: 20090164973
    Abstract: In one embodiment, a computer system provides an application programming interface (API) for augmenting an application API. A computer system receives software code written in a second programming language indicating a user's intention to augment an application API with contracts from a contract API written in a first programming language. The software code includes a reference to the contract API. The contracts include assertions indicating appropriate use of the application API. The computer system accesses portions of the contract API according to the reference in the software code and compiles the received software code and the referenced portions of the contract API into an intermediate language (IL) version of the software code. The IL version is in an intermediate language common to both the first programming language and the second programming language. The IL version includes the assertions indicating appropriate use of the application API.
    Type: Application
    Filed: December 21, 2007
    Publication date: June 25, 2009
    Applicant: Microsoft Corporation
    Inventors: Michael Barnett, Manuel A. Fahndrich, Brian M. Grunkemeyer, Wolfram Schulte
  • Patent number: 7530080
    Abstract: A system and method for employing a programming language based on structural types on top of a nominal type runtime environment is disclosed. The system utilizes adapters and coercive subtyping to achieve precise typing while preserving aliasing. Furthermore, the system employs a universal value representation to achieve cross-assembly type equivalence.
    Type: Grant
    Filed: March 25, 2003
    Date of Patent: May 5, 2009
    Assignee: Microsoft Corporation
    Inventors: Wolfram Schulte, Barend H. Venter, Chia-Hsun Chen, Erik Meijer, Christopher J. Lovett, Matthew J. Warren
  • Patent number: 7500226
    Abstract: Constraints are defined in view of a program implementation. Constraints check program state or variables to maintain data consistency. A constraint component determines a constraint's scope and variables upon which a constraint depends. Program flow is altered so constraints are checked whenever a variable upon which a constraint depends is updated. Optionally, program flow is altered dynamically to re-establish constraints whenever a variable upon which a constraint depends is updated. Re-establishing constraints provides efficiency, since a program flow is altered for a minimum cost based on a present evolving minimum set of active constraint-variable relationships.
    Type: Grant
    Filed: March 2, 2004
    Date of Patent: March 3, 2009
    Assignee: Microsoft Corporation
    Inventors: Nikolai Tillmann, Wolfgang Grieskamp, Wolfram Schulte
  • Patent number: 7500149
    Abstract: Techniques and tools for generating finite state machines (“FSMs”) for a software system with asynchronous callbacks are described. For example, method invocations in a model of the software system are partitioned into observable and controlled method invocations. The controlled method invocations are those which can be run from a test harness while the observed method invocations are those which are observed asynchronously as they are invoked in the system. An FSM is created with observation and control nodes such that observable transitions are found from observation nodes and controlled transitions are found from control nodes. If a state of the model contains both controlled and observable invocations, a timeout transition is added to the FSM to give an implementation time to come up with an observed method invocation before continuing to controlled invocations.
    Type: Grant
    Filed: March 31, 2005
    Date of Patent: March 3, 2009
    Assignee: Microsoft Corporation
    Inventors: Wolfgang Grieskamp, Colin L. Campbell, Lev Borisovich Nachmanson, Margus Veanes, Michael Barnett, Nikolai Tillmann, Wolfram Schulte
  • Patent number: 7496791
    Abstract: A system for testing programs using a digital processor and programs in computer memory. A mock behavior generator identifies an interface indicated for mock behavior. The interface is identified as an input parameter of a parameterized unit test. The mock behavior generator creates a symbolic object with stubs to receive calls and mock behavior that returns symbolic values upon receiving a call to the stub. A symbolic executor, symbolically executes the parameterized unit test to obtain path constraints for an implementation under test, and at least one path constraint includes the symbol returned in response to the call to the stub. A constraint solver provides solutions for the paths including concrete values assigned to returned symbols. The mock behavior generator creates mock objects that return the concrete values when the implementation under test is executed.
    Type: Grant
    Filed: December 30, 2005
    Date of Patent: February 24, 2009
    Assignee: Microsoft Corporation
    Inventors: Nikolai Tillmann, Wolfgang Grieskamp, Wolfram Schulte
  • Patent number: 7493544
    Abstract: State spaces are traversed to produce test cases, or test coverage. Test coverage is a test suite of sequences. Accepting states are defined. Expected costs are assigned to the test graph states. Strategies are created providing transitions to states with lower expected costs. Linear programs and other approximations are discussed for providing expected costs. Strategies are more likely to provide access to an accepting state, based on expected costs. Strategies are used to append transitions to test segments such that the new test segment ends in an accepting state.
    Type: Grant
    Filed: January 21, 2005
    Date of Patent: February 17, 2009
    Assignee: Microsoft Corporation
    Inventors: Andreas Blass, Colin L. Campbell, Lev Borisovich Nachmanson, Margus Veanes, Michael Barnett, Nikolai Tillmann, Wolfgang Grieskamp, Wolfram Schulte, Yuri Gurevich
  • Publication number: 20090043560
    Abstract: Modeling protocols. A method includes accessing a number of model programs. Each model program includes computer-executable instructions. The computer-executable instructions describe the behavior of at least one of another program, system, or component. Model programs may be disjointed in that they have independent meaning or dependent in that they include at least one of a state variable, action, or precondition that is dependent on another model program to impart meaning to the model program. An output model program is composed by unification including substituting state variables into another of the model programs without executing the model programs. Traces are generated from the output model program. Each of the traces includes a path of labels. The labels describe actions of the output model program from an initial state to an accepting state where a run is allowed to stop. The traces are output to a user.
    Type: Application
    Filed: August 8, 2007
    Publication date: February 12, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Margus Veanes, Colin Campbell, Wolfram Schulte
  • Publication number: 20080313609
    Abstract: A type system employing structural subtyping is disclosed herein. A core type system supports several structural types, such as stream, choice, intersection and sequence. Also part of the core type system is a new invariant type, which denotes values whose dynamic type is the same as its static type, and type restrictions for limiting a range of a base type. Furthermore, a streamlined structural version of delegates, called structural delegates and a validation method thereof are introduce into the type system. To further facilitate type safety, strict statically checked interface casts are introduced.
    Type: Application
    Filed: June 16, 2008
    Publication date: December 18, 2008
    Applicant: MICROSOFT CORPORATION
    Inventors: Erik Meijer, Wolfram Schulte, Barend H. Venter, Chia-Hsun Chen, Christopher J. Lovett, Matthew J. Wararen
  • Publication number: 20080313602
    Abstract: In one embodiment, a computer system determines that a previously run test scenario configured to test a software program has failed to produce an expected result due to one or more semantic errors, generates error trace code configured to monitor the called component, processes the test scenario using the error trace code, and analyzes error trace information to determine the point at which the semantic error occurs in the called component. In an alternative embodiment, a computer system detects a semantic error in a software component of a software program, constructs an error condition that may include source code representing a minimum condition under which the error occurs, generates an object invariant based on the error condition that represents an opposite condition to that represented by the error condition, and automatically generates source code change recommendations using the object invariant that prevent the semantic error from reoccurring in subsequent test scenarios.
    Type: Application
    Filed: June 14, 2007
    Publication date: December 18, 2008
    Applicant: Microsoft Corporation
    Inventors: Nikolai Tillmann, Jonathan Paul de Halleux, Wolfram Schulte
  • Publication number: 20080306617
    Abstract: A type system employing structural subtyping is disclosed herein. A core type system supports several structural types, such as stream, choice, intersection and sequence. Also part of the core type system is a new invariant type, which denotes values whose dynamic type is the same as its static type, and type restrictions for limiting a range of a base type. Furthermore, a streamlined structural version of delegates, called structural delegates and a validation method thereof are introduce into the type system. To further facilitate type safety, strict statically checked interface casts are introduced.
    Type: Application
    Filed: June 16, 2008
    Publication date: December 11, 2008
    Applicant: MICROSOFT CORPORATION
    Inventors: Erik Meijer, Wolfram Schulte, Barend H. Venter, Chia-Hsun Chen, Christopher J. Lovett, Matthew J. Wararen
  • Publication number: 20080307264
    Abstract: In one embodiment a computer system automatically generates unit tests. The computer system accesses a parameterized unit test that provides a base outline from which one or more unit tests are automatically generated, generates input parameter values for a unit of software code, automatically generates a unit test configured to assess the functionality of the unit of software code, and receives test results from a software testing program and provides feedback to a user. In other embodiments, a computer system automatically maintains a unit test database. The computer system receives a unit test at a unit test database, assigns a test identity to the received unit test, determines that the test identity assigned to the received unit test is unique when compared to other unit tests, determines that the received unit test has different functionality coverage characteristics, and adds the received unit test to the unit test database.
    Type: Application
    Filed: June 6, 2007
    Publication date: December 11, 2008
    Applicant: Microsoft Corporation
    Inventors: Jonathan Paul de Halleux, Nikolai Tillmann, Wolfram Schulte
  • Patent number: 7444622
    Abstract: A test domain configuration module generates graphical user interfaces for identifying information about desired tests such as data types and domain configurations, and collects information used by other modules to generate tests. The identified information may include, for example, an abstract syntax, a static semantic, max counts on instances of data types, or costs of field accesses or data types for max path costs or max expression costs. A test input generator, generates test input for the identified and configured data types. In one case, the generated test inputs are generated as tree data structures. A predicate determines whether a generated test input follows semantic conditions. A test input evaluator counts instances of data types in, sums paths through, or sums total costs of, the generated test inputs. A test acceptance module saves test inputs acceptable to the predicate and the test input evaluator.
    Type: Grant
    Filed: August 27, 2003
    Date of Patent: October 28, 2008
    Assignee: Microsoft Corporation
    Inventors: Wolfgang Grieskamp, Wolfram Schulte, Nikolai Tillmann
  • Patent number: 7441237
    Abstract: A system and method for interfacing additional translation logic via composer(s) to a compiler to extend the capabilities of the compiler is provided. Generally, composer(s) can be software libraries that provide employment of componentization and polymorphism to compiler add-ons in order to extend compiler capabilities. One or more composers can be accessible to the compilation process by reference(s) made in a source code file. For example, additional translation logic for data types and/or expressions (e.g., markup language) created after compiler design can be made accessible to a compiler via composer(s), thus extending the existing compiler. The present invention mitigates problems associated with conventional compiler extending schemes and affords for compile code optimization without having to consider substantially all of the operations of a single query.
    Type: Grant
    Filed: March 25, 2003
    Date of Patent: October 21, 2008
    Assignee: Microsoft Corporation
    Inventors: Matthew J. Warren, Barend H. Venter, Wolfram Schulte, Erik Meijer, Christopher J. Lovett, Chia-Hsun Chen
  • Patent number: 7389498
    Abstract: A type system employing structural subtyping is disclosed herein. A core type system supports several structural types, such as stream, choice, intersection and sequence. Also part of the core type system is a new invariant type, which denotes values whose dynamic type is the same as its static type, and type restrictions for limiting a range of a base type. Furthermore, a streamlined structural version of delegates, called structural delegates and a validation method thereof are introduce into the type system. To further facilitate type safety, strict statically checked interface casts are introduced.
    Type: Grant
    Filed: March 25, 2003
    Date of Patent: June 17, 2008
    Assignee: Microsoft Corporation
    Inventors: Erik Meijer, Wolfram Schulte, Barend H. Venter, Chia-Hsun Chen, Christopher J. Lovett, Matthew J. Wararen
  • Patent number: 7363202
    Abstract: Exploration algorithms are relevant to the industrial practice of generating test cases from an abstract state machine whose runs define the predicted behavior of the software system under test. Here, a new exploration algorithm allows multiple state groupings to simultaneously guide the search for states that are interesting or relevant for testing. In some cases, the algorithm allows exploration to be optimized from exponential to linear complexity. An extended example is included that illustrates the use of the algorithm.
    Type: Grant
    Filed: January 20, 2005
    Date of Patent: April 22, 2008
    Assignee: Microsoft Corporation
    Inventors: Colin L. Campbell, Lev Borisovich Nachmanson, Margus Veanes, Wolfgang Grieskamp, Wolfram Schulte, Nikolai Tillmann
  • Publication number: 20080065941
    Abstract: Generation of test data for systems having functionality subject to a grammar or other sort of meta-data is automated by a controlled combinatorial approximation of naïve combinatorial coverage. A suite of control mechanisms are applied to an algorithm that generates test data to provide well-defined and understandable approximations of full combinatorial coverage.
    Type: Application
    Filed: August 21, 2006
    Publication date: March 13, 2008
    Applicant: Microsoft Corporation
    Inventors: Ralf Lammel, Wolfram Schulte
  • Publication number: 20070168927
    Abstract: A model composition environment can allow for description of fill or partial symbolic system behavior, as well as the combination of models of specific features into compound models. Compositional operators can include intersection, concatenation, substitution, alternating refinement, as well as a set of regular expression-like operators. Models called “action machines” can represent object-oriented, reactive programs, and an action machine may be composed with another action machine using a compositional operator. This can allow for testing of particular scenarios or behaviors.
    Type: Application
    Filed: December 30, 2005
    Publication date: July 19, 2007
    Applicant: Microsoft Corporation
    Inventors: Colin Campbell, Margus Veanes, Nicolas Kicillof, Nikolai Tillmann, Wolfgang Grieskamp, Wolfram Schulte
  • Publication number: 20070157180
    Abstract: A finite domain approximation for symbolic terms of a symbolic state is derived, given some finite domains for basic terms of the symbolic state. A method is executed recursively for symbolic sub-terms of a symbolic term, providing a domain over-approximation that can then be provided to a solver for determining a more accurate domain. The method can be applied to a wide array of system terms, including, for example, object states, arrays, and runtime types.
    Type: Application
    Filed: December 30, 2005
    Publication date: July 5, 2007
    Applicant: Microsoft Corporation
    Inventors: Nikolai Tillmann, Wolfgang Grieskamp, Wolfram Schulte