Hi. All,
I appreciate your clear reply about the above subject in advance.

I've been engaged in IT outsourcing company and nowadays, I've performed a CMDB construction project.

We analysed the CI Hierarchy, that is, Service-System-Subsystem-program source(?).

We have many in-house developed programs.

Question!
In-house developed programs, like .java, .pbl, .jsp, are CIs?

Our company's main job is a program development and a modifying program. So, they think the program is a very important CI. Thus by definition, program is included in a CMDB.
The reason why the program is included in a CMDB, is that the program is the basic information we perform a duty.
the program id may be used in the change management, and release management. We talk to each other about program id ususally. Thus the program is a CI.

But
I think the program is not CI. It is a another object managed by developer(like me..)
I think the program is a different kind of object which is managed by development system.

no no no. the programs must not be managed by the developers. They are operational entities. They should no more managed by developers than your servers be managed by the manufacturers._________________"Method goes far to prevent trouble in business: for it makes the task easy, hinders confusion, saves abundance of time, and instructs those that have business depending, both what to do and what to hope."
William Penn 1644-1718

It's really up to your company whether they would gain any business benefit out of storing a program as a CI. If not, then don't bother.

My view is that deployed applications should be stored in the CMDB, where the CI is the lowest level of deployment you perform. So, for example, if you always bundle up all of your applications into one mamouth release, even if you just change one small part, then that would be your single CI.

Source code, however, should also be treated as a CI but stored in a source code management system (such as subversion), rather than referenced in the CMDB.