Evolution Flashcards
refactor
One of the most common ways of managing change. helps developers modify the architecture of a program while keeping its behavior the same, enabling them to implement or modify functionality more easily.
version control
help developers track changes to code, allowing them to revert, merge, fork, and clone projects in a way that is traceable and reliable.
centralized version control
representing one single ground truth of a project’s code, usually stored on a server. Commits to centralized repositories become immediately available to everyone else on a project.
distributed version control (aka git)
allowing one copy of a repository on every local machine. Commits to these local copies don’t automatically go to everyone else; rather, they are pushed to some central copy, from which others can pull updates.
build
compiling source, data, and other resources into an executable format suitable for testing (and possibly release).
- Build systems can be as simple as nothing and as complex is hundreds and thousands of lines of build script code, compiling, linking, and managing files in a manner that prepares a system for testing
continuous integration
completely automating not only builds, but also the running of a collection of tests, every time a bundle of changes is pushed to a central version control repository.
benefit of continuous integration
every major change is quickly built, tested, and ready for deployment, shortening the time between a change and the discovery of failures. This only works if builds are fast.
continuous delivery systems
ensure that complete builds are readily available for release (potentially multiple times per day for software on the web).
Good release management should
archive new versions of software, automatically post the version online, make the version accessible to users, keep a history of who accesses the new version, and provide clear release notes describing changes from the previous version