This document discusses methodologies for exploring object-oriented software design for embedded systems. It introduces a two-part methodology: 1) Method exploration optimizes method implementations by automatically selecting software/hardware components to match application requirements. 2) Object exploration explores object organization by transforming dynamic allocations to static to reduce overhead while maintaining low memory costs. Experimental results on an MP3 player show this design space exploration can provide solutions optimized for performance, energy use, and memory footprint.