Matthew Kehrt

Learn More
Abstract Transactional events (TE) are an extension of Concurrent ML (CML), a programming model for synchronous message-passing. Prior work has focused on TE’s formal semantics and its implementation. This paper considers programming idioms, particularly those that vary unexpectedly from the corresponding CML idioms. First, we solve a subtle problem with(More)
Recently, linearity has been proposed as a mechanism for memory management, alias control, and typestate tracking. While linear type systems have been extensively studied in functional programming, their use in object-oriented systems has been limited to useful but ad-hoc annotation systems that track unique pointers. In this paper, we study object-oriented(More)
Software architecture research has proposed using protocols for specifying the interactions between components through ports. Enforcing these protocols in an implementation is difficult. This paper proposes an approach to statically reason about protocol conformance of an implementation. It leverages the architectural guarantees of the ArchJava programming(More)
There is no software engineering crisis. In order to determine what is meant by the phrase “software engineering crisis,” it is informative to define both the term crisis and the term software engineering. We define crisis to mean a “crucial or decisive point or situation; a turning point.” [1] While not part of the definition, the usual connotation of a(More)
  • 1