Mark Hills 0001

dblp:85/3777-1 · DBLP profile ↗
← Back
19ranked-venue papers
12as first author
3since 2021 · last 2023
0000-0003-0996-9275ORCID · verified

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

Software engineering, systems software and programming languages · 14 · 9 first-author · 2 since 2021Human-computer interaction and ubiquitous computing · 3 · 1 first-author · 1 since 2021Theory of computation · 2 · 2 first-author
YearPublicationVenuePosition
2023 Enabling Go Program Analysis in Rascal
abstract
In this paper, we present early work on the foundation of a program analysis framework for the Go programming language. This framework, named Go AiR (Analysis in Rascal), currently provides support for extracting abstract syntax trees from Go source code, working with multiple Go projects and multiple versions of a single Go project (based on Git version history), and code exploration through the use of Rascal features for working with representations of source code. We discuss the structure of the framework, describe the mapping from Go to Rascal and how this was tested, present sample code showing how the framework can be used to explore Go source code, and discuss future extensions to the framework to support program analysis and verification.
Luke Swearngan, Mark Hills 0001
SCAM2
2021 Planning a Conceptual Framework Approach for Teaching Cloud Fundamentals
abstract
Three previous Working Groups (WG) have met at ITiCSE conferences to explore ways of incorporating cloud computing into courses and curricula by mapping industry job skills to knowledge areas (KAs) and KAs to student learning objectives (LOs) and using these as the framework for a repository of learning materials and course exemplars \citefoster2018, foster2019, adams2020. The ongoing value of the work of these WGs will be enhanced by validating the KAs and LOs and their mapping to current job skills and continuing to build a community of educators who will contribute to and benefit from the repository.
James H. Paterson, Joshua Adams, Laurie White, Andrew Csizmadia, Deger Cenk Erdil, Derek Foster, Mark Hills 0001, Zain Kazmi, Karthik Kuber, Sajid Nazir, Majd F. Sakr, Lee Stott
ITiCSE (2)7
2021 Introduction to the Special Issue on Source Code Analysis and Manipulation 2018
Neil A. Ernst, Mark Hills 0001, Árpád Beszédes
J. Syst. Softw.2
2020 Introducing DevOps Techniques in a Software Construction Class
abstract
As more companies adopt techniques related to DevOps and continuous deployment, it is critical for students in software engineering courses to gain hands-on experience with these techniques. In this paper, we describe a collection of assignments given in a graduate software construction class that guides students through the process of creating Docker containers, configuring continuous integration services, constructing a build pipeline, and automating deployment of new versions of a software system when changes are committed to the code repository. We also briefly analyze the performance of students on these hands-on exercises, identifying areas where additional support is needed to ensure student success.
Mark Hills 0001
CSEE&T1
2020 Cloud Computing Curriculum: Developing Exemplar Modules for General Course Inclusion
abstract
The accelerating evolution and adoption of cloud computing services is generating increased demand for job skills in this domain. To address this growth, higher education has identified the importance of cloud computing courses that are practical and compatible with this rapidly changing field. This is especially relevant as cloud services are becoming common computing resources for many new computational approaches and advanced subjects such as machine learning and data science. The ability to incorporate specific components of cloud computing teaching content into a variety of courses has become important. However, the lack of availability of high-quality teaching material that is easy to integrate, when teaching rapidly evolving cloud-related concepts continues to be a challenge for instructors. This working group will try to address this challenge.
Joshua Adams, Brian Hainey, Laurie White, Derek Foster, Narine Hall, Mark Hills 0001, Sara Hooshangi, Karthik Kuber, Sajid Nazir, Majd F. Sakr, Lee Stott, Carmen Taglienti
ITiCSE6
2017 Supporting Analysis of SQL Queries in PHP AiR
abstract
The code behind dynamic webpages often includes calls to database libraries, with queries formed using a combination of static text and values computed at runtime. In this paper, we describe our work on a program analysis for extracting models of database queries that can compactly represent all queries that could be used in a specific database library call. We also describe our work on parsing partial queries, with holes representing parts of the query that are computed dynamically. Implemented in Rascal as part of the PHP AiR framework, the goal of this work is to enable empirical research on database usage in PHP scripts, to support developer tools for understanding existing queries, and to support program transformation tools to evolve existing systems and to improve the security of existing code.
Mark Hills 0001
SCAM2
2017 Query Construction Patterns in PHP
abstract
Most PHP applications use databases, with developers including both static queries, given directly in the code, and dynamic queries, which are based on a mixture of static text, computed values, and user input. In this paper, we focus specifically on how developers create queries that are then used with the original MySQL API library. Based on a collection of open-source PHP applications, our initial results show that many of these queries are created according to a small collection of query construction patterns. We believe that identifying these patterns provides a solid base for program analysis, comprehension, and transformation tools that need to reason about database queries, including tools to support renovating existing PHP code to support safer, more modern database access APIs.
Mark Hills 0001
SANER2
2017 Enabling PHP software engineering research in Rascal
Mark Hills 0001, Paul Klint, Jurgen J. Vinju
Sci. Comput. Program.1
2016 Navigating the WordPress plugin landscape
abstract
WordPress includes a plugin mechanism that allows user-provided code to be executed in response to specific system events and input/output requests. The large number of extension points provided by WordPress makes it challenging for new plugin developers to understand which extension points they should use, while the thousands of existing plugins make it hard to find existing extension point handler implementations for use as examples when creating a new plugin. In this paper, we present a lightweight analysis, supplemented with information mined from source comments and the Web pages hosted by WordPress for each plugin, that guides developers to the right extension points and to existing implementations of handlers for these extension points. We also present empirical information about how plugins are used in practice, providing guidance to both tool and prospective plugin developers.
Mark Hills 0001
ICPC1
2015 Variable Feature Usage Patterns in PHP (T)
abstract
PHP allows the names of variables, classes, functions, methods, and properties to be given dynamically, as expressions that, when evaluated, return an identifier as a string. While this provides greater flexibility for programmers, it also makes PHP programs harder to precisely analyze and understand. In this paper we present a number of patterns designed to recognize idiomatic uses of these features that can be statically resolved to a precise set of possible names. We then evaluate these patterns across a corpus of 20 open-source systems totaling more than 3.7 million lines of PHP, showing how often these patterns occur in actual PHP code, demonstrating their effectiveness at statically determining the names that can be used at runtime, and exploring anti-patterns that indicate when the identifier computation is truly dynamic.
Mark Hills 0001
ASE1
2015 Evolution of dynamic feature usage in PHP
abstract
PHP includes a number of dynamic features that, if used, make it challenging for both programmers and tools to reason about programs. In this paper we examine how usage of these features has changed over time, looking at usage trends for three categories of dynamic features across the release histories of two popular open-source PHP systems, WordPress and MediaWiki. Our initial results suggest that, while features such as eval are being removed over time, more constrained dynamic features such as variable properties are becoming more common. We believe the results of this analysis provide useful insights for researchers and tool developers into the evolving use of dynamic features in real PHP programs.
Mark Hills 0001
SANER1
2015 Modular language implementation in Rascal - experience report
Bas Basten, Jeroen van den Bos, Mark Hills 0001, Paul Klint, Arnold Lankamp, Bert Lisser, Atze van der Ploeg, Tijs van der Storm, Jurgen J. Vinju
Sci. Comput. Program.3
2014 Static, lightweight includes resolution for PHP
abstract
Dynamic languages include a number of features that are challenging to model properly in static analysis tools. In PHP, one of these features is the include expression, where an arbitrary expression provides the path of the file to include at runtime. In this paper we present two complementary analyses for statically resolving PHP includes, one that works at the level of individual PHP files, and one targeting PHP programs possibly consisting of multiple scripts. To evaluate the effectiveness of these analyses we have applied the first to a corpus of 20 open-source systems, totaling more than 4.5 million lines of PHP, and the second to a number of programs from a subset of these systems. Our results show that, in many cases, includes can be resolved to a specific file or a small subset of possible files, enabling better IDE features and more advanced program analysis tools for PHP.
Mark Hills 0001, Paul Klint, Jurgen J. Vinju
ASE1
2014 Streamlining Control Flow Graph Construction with DCFlow
Mark Hills 0001
SLE1
2013 An empirical study of PHP feature usage: a static analysis perspective
abstract
PHP is one of the most popular languages for server-side application development. The language is highly dynamic, providing programmers with a large amount of flexibility. However, these dynamic features also have a cost, making it difficult to apply traditional static analysis techniques used in standard code analysis and transformation tools. As part of our work on creating analysis tools for PHP, we have conducted a study over a significant corpus of open-source PHP systems, looking at the sizes of actual PHP programs, which features of PHP are actually used, how often dynamic features appear, and how distributed these features are across the files that make up a PHP website. We have also looked at whether uses of these dynamic features are truly dynamic or are, in some cases, statically understandable, allowing us to identify specific patterns of use which can then be taken into account to build more precise tools. We believe this work will be of interest to creators of analysis tools for PHP, and that the methodology we present can be leveraged for other dynamic languages with similar features.
Mark Hills 0001, Paul Klint, Jurgen J. Vinju
ISSTA1
2012 Meta-language Support for Type-Safe Access to External Resources
Mark Hills 0001, Paul Klint, Jurgen J. Vinju
SLE1
2011 RLSRunner: Linking Rascal with K for Program Analysis
Mark Hills 0001, Paul Klint, Jurgen J. Vinju
SLE1
2010 A Rewriting Logic Semantics Approach to Modular Program Analysis
abstract
The K framework, based on rewriting logic semantics, provides a powerful logic for defining the semantics of programming languages. While most work in this area has focused on defining an evaluation semantics for a language, it is also possible to define an abstract semantics that can be used for program analysis. Using the SILF language (Hills, Serbanuta and Rosu, 2007), this paper describes one technique for defining such a semantics: policy frameworks. In policy frameworks, an analysis-generic, modular framework is first defined for a language. Individual analyses, called policies, are then defined as extensions of this framework, with each policy defining analysis-specific semantic rules and an annotation language which, in combination with support in the language front-end, allows users to annotate program types and functions with information used during program analysis. Standard term rewriting techniques are used to analyze programs by evaluating them in the policy semantics.
Mark Hills 0001, Grigore Rosu
RTA1
2007 KOOL: An Application of Rewriting Logic to Language Prototyping and Analysis
Mark Hills 0001, Grigore Rosu
RTA1