Joint work with Nasir Ali, Wei Wu, Giuliano Antoniol, Massimiliano Di Penta and Jane Huffman Hayes
Smart phones, gaming consoles, and wireless routers are ubiquitous; the increasing diffusion of such devices with limited resources, together with society's unsatiated appetite for new applications, pushes companies to miniaturize their programs.
Miniaturizing a program for a hand-held device is a time-consuming task often requiring complex decisions. Companies must accommodate conflicting constraints: customers' satisfaction with features may be in conflict with a device's limited storage, memory, or battery life. Also, the miniaturization process is doubly impacted by quality considerations.
First, the (poor) quality of the program to be miniaturized may impede the miniaturization process. Second, the expected quality of the miniaturized program constrains the process. In this talk, we describe a process, MoMS, for the multi-objective miniaturization of software to help developers miniaturize programs while satisfying multiple conflicting constraints. The process directs the elicitation of customer pre-requirements, their mapping to program features, and the selection of the features to port. We then present two case studies based on Pooka, an email client, and SIP Communicator, an instant messenger, to demonstrate that MoMS supports optimized miniaturization and helps reduce effort by 77%, on average, over a manual approach. Then, we discuss the use of the the process to support other software engineering problems, such as the reverse engineering of programs, the next release problem, and the porting of both software and product lines. Finally, we present challenges relating the miniaturization process with quality assessment models.