Software development is the process of conceiving, specifying, designing, programming, documenting, testing and bug fixing involved in creating and maintaining applications, frameworks, or other software components. A software company develops and distributes computer software that may be used to learn, instruct, assess, calculate, entertain, or perform a multitude of other tasks. Software companies operate under a variety of business models, such as charging license fees, offering subscriptions.