Custom software programming is the process of designing, creating, maintaining and deploying software for a specific set of users, purposes or organizations. It can be contrasted with off-the-shelf software which is made for a wide set of users and that provides generalized functions allowing it to be packaged and commercially marketed and distributed. Customized software aims at a narrowly defined set of requirements while generalized software targets a broad set of requirements.
Customer development of software is usually performed by an organization’s own development teams but may also be outsourced to third party providers. While the same processes and methods apply to custom and generalized software development, the main benefit of custom development is that it is specified and created to meet the specialized needs of an organization and can be further customized after it has been put into use making it ultimately flexible.