Software Engineering Seminar Series in Computer Systems Technology presents
“Software at Scale”
by Michael Barnathan
Tuesday, November 25, 2014 1-2pm
Light refreshments will be served!
Abstract: Can your app handle an appearance on the front page of TechCrunch? In this talk, we’ll compare common design patterns and strategies for building software that can scale to millions of users and beyond, such as concurrency, caching, CDNs, compression, immutability, sharding, partial ordering, and read optimization. We’ll discuss why the REST paradigm has become such a natural fit for building web and app backend services, as well as how to test your app for scalability so you can be confident that it will survive an unexpected spike in traffic.
Bio: Michael Barnathan is a Director of Engineering at Amplify Access, which deploys educational tablets to K-12 schools across the country. Prior to joining Amplify, Michael founded Clipless, the first contextual deals startup, which survived two appearances on the front page of TechCrunch and was acquired 8 months from founding. Michael’s prior experience also includes a Senior Software Engineer position at Google. He holds a Ph. D. in machine learning from Temple University, with a particular emphasis on using computer vision techniques to automatically diagnose medical scans.
More info can be found at the CST Colloquium web site.
I will be presenting on some of my ongoing, joint work on the assisted evolution of Aspect-Oriented Programs next Thursday in Namm room 921 from 1-2pm. Please find more information about the talk below. I hope to see you there!
Title: Fraglight: Shedding Light on Broken Pointcuts in Evolving Aspect-Oriented Software
Abstract: Aspect-Oriented Programming can help modularize software by localizing code that would otherwise be scattered and tangled with many other modules. We say that such code implements crosscutting concerns, i.e., factors that the software must deal with across a variety of heterogeneous modules. While providing benefits in this area, however, Aspect-Oriented programs can experience other complications as the software evolves. For example, pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base-code can lead to join points incorrectly falling in or out of the scope of pointcuts. Deciding which pointcuts have broken because of changes made to the base-code is a daunting venture, especially in large and complex systems.
In this talk, I first introduce the basic concepts of Aspect-Oriented Programming, and, in particular, how those concepts are manifested in AspectJ, an Aspect-Oriented extension of Java. I review essential AspectJ constructs, such as advice, join points, pointcuts, and aspects, as well as several weaving models, i.e., how aspect code is woven with the underlying system (the base-code) to produce the final program. I then go on to discuss the pros and cons of Aspect-Orientation, particularly in the context of software evolution. Finally, I present ongoing, joint work on an automated approach that recommends a set of pointcuts that are likely to require modification due to a certain base code change. Our hypothesis is that join points captured by a pointcut exhibit common structural characteristics. We use patterns describing such commonality to recommend pointcuts that have potentially broken to the developer, as well as point the developer in a direction in which the pointcut should be altered. We implemented our approach as an extension to the popular Mylyn Eclipse Integrated Development Environment plugin, which maintains focused contexts of entities relevant to the task at hand.
Fraglight Flyer for NYCCT