Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Kevin J. Hoffman

dblp:78/4507 · DBLP profile ↗
← Back
6ranked-venue papers
5as first author
0since 2021 · last 2016
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 5 · 5 first-authorSecurity and privacy · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
5 papers
Operating systems · 34% Software maintenance and evolution · 33% Requirements engineering and software design · 25%
Network and information security
2 papers
Systems and software security · 52% Authentication and access control · 48%

Topics — the 16 heaviest of 18, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Authentication and access control
access control
0.212016
Enforcing Least Privilege Memory Views for Multithreaded Applications · CCS 2016
Authentication and access control › access control
least privilege
0.212016
Enforcing Least Privilege Memory Views for Multithreaded Applications · CCS 2016
Systems and software security › memory safety
memory isolation
0.212016
Enforcing Least Privilege Memory Views for Multithreaded Applications · CCS 2016
Systems and software security
memory safety
0.212016
Enforcing Least Privilege Memory Views for Multithreaded Applications · CCS 2016
Software maintenance and evolution › refactoring
aspect-oriented refactoring
0.212013
Trading obliviousness for modularity with cooperative aspect-oriented programming · ACM Trans. Softw. Eng. Methodol. 2013
Requirements engineering and software design › separation of concerns
crosscutting concerns
0.212013
Trading obliviousness for modularity with cooperative aspect-oriented programming · ACM Trans. Softw. Eng. Methodol. 2013
Requirements engineering and software design
modularity
0.212013
Trading obliviousness for modularity with cooperative aspect-oriented programming · ACM Trans. Softw. Eng. Methodol. 2013
Software maintenance and evolution
refactoring
0.212013
Trading obliviousness for modularity with cooperative aspect-oriented programming · ACM Trans. Softw. Eng. Methodol. 2013
Operating systems › system security › operating system security › protection mechanism › isolation
memory isolation
0.112011
Ribbons: a partially shared memory programming model · OOPSLA 2011
Operating systems › resource management › memory management
memory protection
0.112011
Ribbons: a partially shared memory programming model · OOPSLA 2011
Operating systems › system security › operating system security › protection mechanism
protection domains
0.112011
Ribbons: a partially shared memory programming model · OOPSLA 2011
Program analysis › dynamic analysis
trace analysis
0.112009
Semantics-aware trace analysis · PLDI 2009
Software maintenance and evolution
software reuse
0.112008
Towards reusable components with aspects: an empirical study on modularity and obliviousness · ICSE 2008
Operating systems › system security › operating system security
kernel security
0.112016
Enforcing Least Privilege Memory Views for Multithreaded Applications · CCS 2016
Systems and software security › operating system security
privilege separation
0.012011
Ribbons: a partially shared memory programming model · OOPSLA 2011
Programming languages and type systems
aspect-oriented programming
0.012008
Towards reusable components with aspects: an empirical study on modularity and obliviousness · ICSE 2008

Methods — techniques the papers use, named apart from their topics

secure memory views · 0.5privilege separation · 0.5memory protection mechanisms · 0.2empirical study · 0.2design structure matrix · 0.2code metrics · 0.2source-level analysis · 0.1
YearPublicationVenuePosition
2016 Enforcing Least Privilege Memory Views for Multithreaded Applications
abstract
Failing to properly isolate components in the same address space has resulted in a substantial amount of vulnerabilities. Enforcing the least privilege principle for memory accesses can selectively isolate software components to restrict attack surface and prevent unintended cross-component memory corruption. However, the boundaries and interactions between software components are hard to reason about and existing approaches have failed to stop attackers from exploiting vulnerabilities caused by poor isolation. We present the secure memory views (SMV) model: a practical and efficient model for secure and selective memory isolation in monolithic multithreaded applications. SMV is a third generation privilege separation technique that offers explicit access control of memory and allows concurrent threads within the same process to partially share or fully isolate their memory space in a controlled and parallel manner following application requirements. An evaluation of our prototype in the Linux kernel (TCB < 1,800 LOC) shows negligible runtime performance overhead in real-world applications including Cherokee web server (< 0.69%), Apache httpd web server (< 0.93%), and Mozilla Firefox web browser (< 1.89%) with at most 12 LOC changes.
Terry Ching-Hsiang Hsu, Kevin J. Hoffman, Patrick Eugster, Mathias Payer
CCS2
2013 Trading obliviousness for modularity with cooperative aspect-oriented programming
abstract
The potential of aspect-oriented programming to adequately capture crosscutting concerns has yet to be fully realized. For example, authors have detailed significant challenges in creating reusable aspect component libraries. One proposed solution is to introduce Explicit Join Points (EJPs) to increase modularity by reducing obliviousness, enabling a Cooperative Aspect-Oriented Programming (Co-AOP) methodology where base code and aspects synergistically collaborate. This article explores the trade-offs between obliviousness and modularity. We briefly introduce EJPs and Co-AOP, and hypothesize how to balance obliviousness and modularity using Co-AOP. We build upon a prior empirical study to refactor three real-life Java applications to implement the exception handling concern using three distinct strategies: (1) using fully oblivious aspects in AspectJ, (2) using EJPs in a fully explicit fashion, and (3) using EJPs while following the Co-AOP methodology. We study other crosscutting concerns by refactoring a fourth application, JHotDraw. The differences in terms of common code metrics are analyzed, and the impact on modularity is assessed using design structure matrices. Results indicate that the Co-AOP methodology can in many cases significantly improve code quality attributes versus fully oblivious or fully explicit approaches. We conclude with guiding principles on the proper use of EJPs within the Co-AOP methodology.
Kevin J. Hoffman, Patrick Eugster
ACM Trans. Softw. Eng. Methodol.1
2011 Ribbons: a partially shared memory programming model
abstract
The need for programs to execute subcomponents in isolation from each other or with lower privileges is prevalent among today's systems. We introduce ribbons: a shared memory programming model that allows for more implicit sharing of memory than processes but is more restrictive than threads. Ribbons structure the heap into protection domains. Privileges between these protection domains are carefully controlled in order to confine computation. We propose RibbonJ, a backwards-compatible extension of Java, to easily create or port programs to use the ribbons model. We study the progress and isolation properties of a subset of the language. Building on JikesRVM we implement ribbons by leveraging existing memory protection mechanisms in modern hardware and operating systems, avoiding the overhead of inline security checks and read or write barriers. We evaluate efficiency via microbenchmarks and the DaCapo suite, observing minor overhead. Additionally, we refactor Apache Tomcat to use ribbons for application isolation, discuss the refactoring's design and complexity, and evaluate performance using the SPECweb2009 benchmark.
Kevin J. Hoffman, Harrison Metzger, Patrick Eugster
OOPSLA1
2009 Semantics-aware trace analysis
abstract
As computer systems continue to become more powerful and complex, so do programs. High-level abstractions introduced to deal with complexity in large programs, while simplifying human reasoning, can often obfuscate salient program properties gleaned from automated source-level analysis through subtle (often non-local) interactions. Consequently, understanding the effects of program changes and whether these changes violate intended protocols become difficult to infer. Refactorings, and feature additions, modifications, or removals can introduce hard-to-catch bugs that often go undetected until many revisions later.
Kevin J. Hoffman, Patrick Eugster, Suresh Jagannathan
PLDI1
2009 Cooperative aspect-oriented programming
Kevin J. Hoffman, Patrick Eugster
Sci. Comput. Program.1
2008 Towards reusable components with aspects: an empirical study on modularity and obliviousness
abstract
The potential of aspect-oriented programming to represent cross-cutting concerns as reusable components has yet to be fully realized. Indeed, authors have detailed significant challenges in creating reusable aspect component libraries. Proposed solutions include restricting the power of aspects upfront, inferring concern interaction, and shaping base code to conform to abstract design rules. Another proposed strategy is to reduce obliviousness in return for increased modularity by extending AspectJ with explicit join points (EJPs).
Kevin J. Hoffman, Patrick Eugster
ICSE1