Highlights from ESEC/FSE 2018 – Day 3 (final)

Image above: a reminder from the keynote that SE is 50 years old this year! And I just realized that, contrary to what many believe, SE achieved its goals, the Soviet Union was defeated.

This is the last day of ESEC/FSE 2018. To finish my coverage, here are my highlights for today:

  • Another bold statement in the keynote: software is about similarity. Well, their software certainly is. They have a tool for similar (multi-language) code detection, called Deckard, which is actually quite mature and freely available. All this is actually more general than it seems, for instance because by finding similar programs (in relation to some form of specification) one can perhaps synthesize new programs that solve similar problems without actually programming. (See “Ten Years of Hunting for Similar Code for Fun and Profit” and https://github.com/skyhover/Deckard)
  • Reed Milewicz, from Sandia National Laboratories, told me a disturbing tale about physicists writing software. You’d imagine that natural scientists would develop software in an experimental way, but you’d be wrong. It turns out they love waterfall-like methodologies, which are very inappropriate, since tools are always evolving and adapting to the new realities of science and infrastructure.
  • It is possible to automatically implement mobile (Android) apps GUI from sketches. Thanks to Machine Learning, the implementations are actually quite good, since they are based in actual software. The objective is both to make designers more independent and to free developers from boilerplate work. They are now working in how to synthesize dynamic behavior too, which is a harder problem. (See “Machine Learning-Based Prototyping of Graphical User Interfaces for Mobile Apps” and https://www.android-dev-tools.com/redraw/)
  • It is possible to automatically fix GUIs tests that break owing to unimportant changes, such as when element ids are altered. As you can imagine, this is achieved by computer vision techniques. I can think of customers that would benefit a lot from this. (See “Visual Web Test Repair” and https://github.com/saltlab/vista)
  • More evidence that simple models, if properly crafted, can outperform more complex state-of-the-art solutions. (See “Applications of Psychological Science for Actionable Analytics”)
  • Datalog is a language similar to Prolog, but used mostly to query databases. I like one approach of query generation that was shown, in which Active Learning (i.e., users are asked things by the algorithm) is employed, thus combining machine and human intelligence in a single workflow. (See “Syntax-Guided Synthesis of Datalog Programs ”)
  • When analyzing probabilistic model, it may be the case that some transitions are more “vulnerable” than others, meaning that small perturbations in the probabilities many lead to big changes in the final outcomes. It is possible to apply probabilistic model checking to find this. In the example given, a model of user behavior in a news website is learned from real user behavior, and it is shown that some of the least visited pages could be among the most visited pages if only a few of the probabilities involved could be tilted in a certain direction.  (See “Verifying the Long-Run Behavior of Probabilistic System Models in the Presence of Uncertainty Yamilet”)
  • What is the smallest piece of software that one can delegate for someone else to implement and maintain? How easily can this be done? Amazingly, a single small function works. One can then recruit almost any programmer for very short time spans (a few minutes or hours) to handle these pieces, called microtasks. With the right coordination mechanisms, the result is that entire software products can be built with little difficulty by a crowd in their spare time! It is amazing that this actually works. It remains to be seen how the approach scales, and I can see important implications not only for Open Source software, but also for commercial outsourcing.  (See “Microtask Programming”)

I’m not sure anymore I’m at a Software Engineering conference, it could as well be an Artificial Intelligence one! So maybe Erik Meijer and Tim Menzies are right, maybe software development and AI are permanently entangled. It makes sense: we are building tools to help us think. What could be more interesting to Homo sapiens? I certainly had a great time here!

The proceedings are in the (payed) ACM DL, but you can probably find pre-prints of some of these papers in the authors’ sites.

Share your thoughts