Overview ========== This chapter describes the process used by Partner to develop its software. The process is executed on some defined "release" of the code. This may involve all products and platforms (a general release), or a single product (a product release). Portions of the process are also executed for smaller units of the software - a single feature, etc. For now, this documentation primarily addresses the large-scale processes involved in a release. There are two major divisions of this process: * development - designing, building, testing, and packaging the release; and * production - installing, supporting and maintaining the release. These correspond to the departments responsible, and are divided by the highly formal release event. Development Stage ----------------- The development stage is responsible for building the software product. It consists of the following phases: * :ref:`design` - requirements, architecture, design, and prototypes; * :ref:`implementation` - code, resources, and packaging; and * :ref:`testing` - unit, regression, internal and external testing. It is not a strict pipeline; generally different portions of a release may be in different stages at different times, and may indeed move back and forth between those phases. However, all portions will "pile up" at the end of testing, awaiting final integration and regression testing of the release as a whole. Production Stage ---------------- The production stage is responsible for deploying and maintaining the software products to non-beta-test customers. It consists of the following phases: * :ref:`deployment` * :ref:`maintenance` Since deployment is done by customer or group of customers, both phases will likely be active for a release for some long period of time, and the production stage for a release will generally extend past the next release.