Replacement usually has the purpose of resolving defects found in the previous component, improving performance or adding new features. An example of a hardware upgrade is the addition of RAM in a personal computer or the addition of nodes in a computing cluster. An example of a software updates is the installation of a new version of a program.
In the case of software updates, a new installation of the entire program is often not required, but rather a patch containing only the differences from the previous version. This expedient allows to contain the size in bytes of the update, facilitating the transfer / transmission through the Internet with less bandwidth.
Software updates may concern device drivers, an application or even an entire operating system, but they are all extremely important, because due to the considerable complexity of the software currently in circulation, it is practically impossible to develop versions without various errors or problems (bugs), which must then be corrected later, when the program has already been distributed.
The update can be distributed on physical storage media such as CD-ROMs or via the Internet. Many programs and all modern operating systems have systems or programs that automatically inform the user of the possible availability of new updates, and possibly the same programs can provide for the installation of the aforementioned updates.
The software life cycle
in computer science, and in particular in software engineering, refers to the way in which a development methodology breaks down the activity of creating software products into coordinated sub-activities, whose final result is the product itself and all the documentation associated with it: typical phases include the study or analysis, design, implementation, testing, tuning, maintenance and extension , all by one or more software developers.
Software development is a very complex and vast thing in all its phases, sometimes requiring many software developers to complete in a reasonable or fixed time. Sometimes a software project is carried out by a community of users distributed in an active network through newsgroups, as happens for example for different GNU / Linux distributions; when then from a software project another one is developed starting from the same type of program, but carried on by another community we talk about fork.