  Successful programs are written to be maintained. One aspect to this is that
programmers order the components in the code files in a particular way. This is
part of programming style. While the conventions for ordering are sometimes
given as part of a style guideline, such guidelines are often incomplete and
programmers tend to have their own more comprehensive orderings in mind. This
paper defines a model for ordering program components and shows how this model
can be learned from sample code. Such a model is a useful tool for a
programming environment in that it can be used to find the proper location for
inserting new components or for reordering files to better meet the needs of
the programmer. The model is designed so that it can be fine- tuned by the
programmer. The learning framework is evaluated both by looking at code with
known style guidelines and by testing whether it inserts existing components
into a file correctly.
