This page is a glimpse into the future. I hope to evolve this site into a meaningful tool to focus my thoughts and collaborate with others.
Learn more about my research below, or browse the projects I'm involved in and the software libraries that I maintain on the right.
Programs break as software evolves, often without someone noticing. Once someone finally notices, it may have been months or even years since the regression was introduced. Precisely identifying the cause out of thousands of source changes is often time tedious and time consuming. We propose the following strategy (a) collect full execution traces over the non-regression and regression versions for both regressing and non-regressing test cases, (b) analyze these traces via semantic differencing to identify probable regression causes. To tractably comparing full execution traces, we formulated a new algorithm that breaks a trace into a web of semantic views, which then allows us to efficiently and accurately approximate the longest common subsequence between traces in O(n) time and space. These techniques are implemented in our tool, RPrism. Our case studies show that RPrism accurately and automatically identifies the root cause of regressions out of hundreds of semantic differences.
I'm working with my advisor Patrick Eugster on extending AspectJ with Explicit Join Points to enhance modular aspect-oriented software development for complex cross-cutting concerns.
We propose language extensions to AspectJ to mitigate the fragile pointcut problem and to address the state--point separation problem.
We demonstrate in our papers how to use our extensions to implement truly reusable aspect libraries that have robust pointcuts,
even for complex concerns such as transactions or exception handling.
[Abstract,
Tech Report ejp-200712-1,
PPPJ 2007 Paper (was tech report ejp-200705-1),
Tech Report ejp-200703-1,
Tech Report ejp-200703-2,
Source Code] Look for our paper at ICSE 2008!
The problem of building and maintaining trust within online communities also commands my interest.
To this end, I have studied reputation systems in collaboration with David Zage and Cristina Nita-Rotaru.
We have proposed an analysis model for understanding reputation systems, providing for common ground
upon which different systems can be compared and understood. We have also analyzed known and possible
attack vectors within reputation systems, highlighting which parts of a reputation system are made
vulnerable by which classes of attacks and why. We also classify and analyze defense mechanisms.
Six representative reputation systems are analyzed in detail, and an analysis of the other important
reputation systems to date is presented.
[Abstract,
Tech Report CSD TR #07-013]
Towards Reusable Components with Aspects (ICSE'08) [download]
Introduction to AOP, AspectJ, and Explicit Join Points (590V'08 Seminar) [download]
Bridging Java and AspectJ through Explicit Join Points (PPPJ'07) [download]
Aspect-based Introspection And Change Analysis For Evolving Programs (RAMSE @ ECOOP'07) [download]
Aspects Made Explicit for Safe Transactional Semantics (DSN'06) [download]
Aspect-oriented Transactions via Explicit Join Points (590E'06 Seminar) [download]
Kevin Hoffman and Patrick Eugster, "Towards Reusable Components with Aspects: An Empirical Study on Modularity and Obliviousness", ICSE 2008.
Kevin Hoffman and Patrick Eugster, "Cooperative Aspect-Oriented Programming", (to appear, Elsevier's Science of Computer Programming).
Kevin Hoffman and Patrick Eugster, "Bridging Java and AspectJ through Explicit Join Points", PPPJ 2007.
Kevin Hoffman, David Zage, and Cristina Nita-Rotaru, "A Survey of Attack and Defense Techniques for Reputation Systems", CSD TR #07-013, (accepted for journal publication, check back soon).
Kevin Hoffman, Murali Krishna Ramanathan, Patrick Eugster, and Suresh Jagannathan, "Aspect-based Introspection and Change Analysis for Evolving Programs", RAM-SE workshop, ECOOP 2007.
Kevin Hoffman and Patrick Eugster, "Aspects Made Explicit for Safe Transactional Semantics", DSN 2006, Extended Abstract.
I enjoy taking classes. Soon I'll be posting a comprehensive list, along with links to my projects and what I learned.
My resume is always out of date. (I suppose that's a good thing.) I'll post it soon.
In my past I've had fun leading the development efforts of two startup companies (2005, 1999-2000),
collaborating with simulation scientists at Lawrence Livermore National Laboratories (Summer 2004),
working on the Windows Media Center at Microsoft (Summer 2003),
and performing consulting work in the computer telephony industry.
In my youth I engaged in the art of game development, back in the days when VESA was the coolest new technology for hi-res graphics and Michael Abrash's "Zen of Code Optimization" was the prize of my nerdy book collection.
