ILF stands for "Internal Logical File". In my words, ILFs represent data that is stored and maintained within the boundary of the application you are counting. When counting ILFs you are basically counting the data functions that your application is being built to maintain.
The more precise IFPUG definition of an ILF is:
"An ILF is a user-identifiable group of logically related data or control information maintained within the boundary of the application. The primary intent of an ILF is to hold data maintained through one or more elementary processes of the application being counted."
Furthermore, for data or control information to be counted as an ILF, both of the following IFPUG counting rules must also apply:
Samples of things that *can* be ILFs include:
This isn't to say that all these things are ILFs, just that they can be. Function point counts resulting from ILFs
When you're counting ILFs you will constantly be referring to the two tables that follow. The purpose of the first table is to help you determine whether the ILF you're currently looking at has a complexity level of Low (L), Average (A), or High (H). You do this by going into the table knowing the number of DETs and number of RETs you have counted in the ILF, and then finding the resulting Low, Average, or High value.
For instance, suppose I counted 5 DETs and 1 RET; that would be a Low complexity table. Conversely, if I had a table with 21 DETs and 2 RETs, that would be an Average complexity table.