>
I would consider a source code file to [be] a song.To be fair, a song basically stands on its own. It may be part of a larger work, like an album or symphony, but these things are collections more than structures. The album does not fall apart if a song is omitted.
Songs themselves however are structures with dependencies: melody, harmony, rhythm, phrases, riffs, etc. If you remove the melody or the rhythm, the song is harmed in a much more fundamental way than an album or symphony would be by the removal of a song.
In other words, albums are composed of songs, but they are not built on songs. Songs are built on melody, rhythm, etc.
Now, back to source files. Applications are built on source files. It is tough to say what source files are built on, but they are composed of lines of code.
The analogy of a source file to a song breaks down, because the source file is only useful because the application is built on it. If we are determined to use this metaphor, applications are more analogous to songs, and source files are more analagous to structural elements like melody and rhythm.