Build
# Build

Build (construção em português), no contexto do desenvolvimento de software, é o processo ou o resultado da conversão dos arquivos de código-fonte em um ou mais artefatos de software que podem ser executados em um computador.

## Funções

O building de software é um processo abrangente que envolve várias funções distintas. Algumas dessas funções são descritas abaixo.

### Controle de Versão

A função de controle de versão efetua atividades como a criação e atualização do espaço de trabalho, linha de base e relatórios. Cria um ambiente para o processo de build ser executado e captura metadados sobre as entradas e saída do processo de build para assegurar a reprodutibilidade e confiabilidade.
Ferramentas como o Git, AccuRev ou StarTeam ajudam com essas tarefas oferecendo, por exemplo, ferramentas para marcar pontos específicos do histórico como importantes.

### Qualidade de código

Também conhecido como análise estática de software/código, esta função é responsável por verificar que os desenvolvedores aderiram aos sete princípios da qualidade de código: comentários, testes de unidade, duplicação, complexidade, regras de codificação, possíveis erros e arquitetura & design.
Garantir que um projeto tenha código de alta qualidade resulta em menos erros e influencia requerimentos não funcionais como a sustentabilidade, extensibilidade e legibilidade; das quais há um impacto direto no ROI de uma empresa.

### Compilação

Esta é apenas uma pequena característica do gerenciamento do processo de build. A função de compilação transforma arquivos de código-fonte em objetos diretamente executáveis ou intermediários. Nem todo projeto requer esta função.
Embora que em programas simples o processo consista apenas em um arquivo sendo compilado, em programas complexos o código-fonte pode consistir em muitos arquivos e pode ser combinado em formas diferentes para produzir várias versões diferentes.

## Ferramentas de build

O processo de build de um programa de computador é normalmente gerenciado por uma ferramenta de build, um programa que coordena e controla outros programas. Exemplos de tal programa incluem make, Gradle, Meister da OpenMake Software, Ant, Maven, Rake, SCons e Phing. O utilitário de build normalmente precisa compilar os vários arquivos, na ordem correta. Se o código-fonte em um arquivo específico não foi alterado ele pode não precisar ser recompilado ("pode" pois é possível que ele dependa de outros arquivos que foram alterados). Utilitários de build sofisticados e ligadores tentam evitar recompilar código desnecessário na tentativa de diminuir o tempo requerido para completar a build. Um processo mais complexo pode envolver outros programas produzindo código ou dados como parte do software e processo de build.