Freeze (software engineering)
Encyclopedia
In software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

, a freeze is a point in time in the development process after which the rules for making changes to the source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

 or related resources become more strict, or the period during which those rules are applied. A freeze helps move the project forward towards a release or the end of an iteration
Iterative and incremental development
Iterative and Incremental development is at the liver of a cyclic software development process developed in response to the weaknesses of the waterfall model...

 by reducing the scale or frequency of changes, and may be used to help meet a roadmap
Technology roadmap
A technology roadmap is a plan that matches short-term and long-term goals with specific technology solutions to help meet those goals. It is a plan that applies to a new product or process, or to an emerging technology. Developing a roadmap has three major uses...

. The exact rules depend on the type of freeze and the particular development process in use; for example, they may include only allowing changes which fix bugs, or allowing changes only after thorough review by other members of the development team. They may also specify what happens if a change contrary to the rules is required, such as restarting the freeze period.

Two common types of freezes are:
  • A feature freeze, in which all work on adding new features is suspended, shifting the effort towards fixing bug
    Software bug
    A software bug is the common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or causes it to behave in unintended ways. Most bugs arise from mistakes and errors made by people in either a program's...

    s and improving the user experience. The addition of new features may have a disruptive effect on other parts of the program, due both to the introduction of new, untested
    Software testing
    Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software...

     source code or resources and to interactions with other features; thus, a feature freeze helps improve the program's stability.

  • A code freeze, in which no changes whatsoever are permitted to a portion or the entirety of the program's source code. Particularly in large software systems, any change to the source code may have unintended consequence
    Unintended consequence
    In the social sciences, unintended consequences are outcomes that are not the outcomes intended by a purposeful action. The concept has long existed but was named and popularised in the 20th century by American sociologist Robert K. Merton...

    s, potentially introducing new bugs; thus, a code freeze helps ensure that a portion of the program that is known to work correctly will continue to do so. Code freezes are often employed in the final stages of development, when a particular release or iteration is being tested, but may also be used to prevent changes to one portion of a program while another is undergoing development.


In development environments using revision control
Revision control
Revision control, also known as version control and source control , is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may change the same files...

, the use of branching
Branching (software)
Branching, in revision control and software configuration management, is the duplication of an object under revision control so that modifications can happen in parallel along both branches....

 can alleviate delays in development caused by freezes. For example, a project may have a "stable" branch from which new versions of the software are released, and a separate "development" branch in which the developers add new code. The effect of a freeze is then to prevent promotion of some or all changes from the development branch to the stable branch. In other words, the freeze applies only to the stable branch, and developers can continue their work on the development branch.

See also

  • Software release life cycle
  • Feature complete
    Feature complete
    A feature complete version of a software is not yet final, but contains all intended functionality of the final version.Usually a feature complete software still has to undergo testing and bug fixing as well performance or stability enhancing before it can go to release candidate and finally gold...

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK