Nos últimos 4 anos, tenho programado com o Eclipse (para Java) e o Visual Studio Express (para C #). Os IDEs mencionados sempre pareciam fornecer todas as instalações que um programador poderia solicitar (relacionadas à programação, é claro).
Ultimamente, tenho ouvido falar sobre algo chamado "ferramentas de construção". Ouvi dizer que eles são usados quase em todo o tipo de desenvolvimento do mundo real. O que eles são exatamente? Quais problemas eles foram projetados para resolver? Como é que eu nunca precisei deles nos últimos quatro anos? Eles são tipo de linha de comando despojada de IDEs?
As ferramentas de construção geralmente transformam o código fonte em binários - organizam o código fonte, definem sinalizadores de compilação, gerenciam dependências ... algumas delas também se integram ao teste de unidade em execução, fazendo análise estática, gerando documentação.
Eclipse ou Visual Studio também são sistemas de compilação (mas mais do que um IDE) e, para o visual studio, é o msbuild subjacente analisar os arquivos de projeto do visual studio sob o capô.
A origem de todos os sistemas de compilação parece o famoso 'make'.
Existem sistemas de construção para diferentes idiomas:
Geralmente, construa sistemas usando uma linguagem específica de domínio de propriedade (make, cmake) ou xml (ant, maven, msbuild) para especificar uma construção. A tendência atual é usar uma linguagem de script real para escrever scripts de construção, como lua para pré-criação e groovy para gradle, a vantagem de usar um script é que é muito mais flexível e também permite que você crie um conjunto de padrões APIs (como DSL de compilação).
fonte
Processo de compilação é um processo de compilação do código-fonte para erros, usando algumas ferramentas de compilação e criando compilações (que são versões executáveis do projeto). Nós (principalmente desenvolvedores) fazemos algumas modificações no código fonte e registramos esse código para que o processo de compilação ocorra. Após o processo de compilação, ele fornece dois resultados: 1. Compile PASSES e você obterá uma versão executável do seu projeto (a compilação está pronta). 2. Ele falha e você obtém certos erros e a compilação não é criada.
Existem diferentes tipos de processos de compilação, como: 1. Compilação noturna 2. Compilação fechada 3. Compilação contínua de integração etc.
As ferramentas de construção ajudam e automatizam o processo de criação de construções.
* O So in Short Build é uma versão do software em formato de pré-lançamento usado pela equipe de desenvolvedor ou desenvolvimento para ganhar confiança no resultado final do produto, monitorando continuamente o produto e resolvendo problemas logo no início do processo de desenvolvimento. *
fonte
Esses são tipos diferentes de processos pelos quais você pode fazer suas compilações.
1. Construção de integração contínua:Nesse processo, principalmente os desenvolvedores fazem check-in de seu código e logo após o check-in, uma compilação é iniciada para compilar as alterações recentes, portanto, devemos saber se as alterações feitas pelo desenvolvedor funcionaram ou não logo após o check-in. Isso é preferido para projetos menores ou componentes dos projetos. Caso várias equipes estejam associadas ao projeto ou exista um grande número não. dos desenvolvedores que trabalham no mesmo projeto, esse cenário se torna difícil de lidar como se houvesse 'n' não. de check-in e a compilação falhar em determinados pontos, torna-se altamente difícil rastrear se toda a quebra ocorreu por causa de um problema ou com vários problemas; portanto, se os problemas mais antigos não forem resolvidos adequadamente, será muito difícil rastrear os posteriores defeitos que ocorreram após essa alteração.
2. Compilações de check-in fechado: nesse tipo de check-in, uma compilação é iniciada logo após o check-in, mantendo as alterações em um conjunto de prateleiras. Nesse caso, se a compilação for bem-sucedida, o check-in com conjunto de prateleiras será confirmado, caso contrário, não será confirmado no Team Foundation Server. Isso fornece uma imagem um pouco melhor da criação da integração contínua, pois apenas os check-in bem-sucedidos podem ser confirmados.
3. Compilações noturnas: também são conhecidas como compilações agendadas. Nesse caso, agendamos as compilações para serem executadas por um tempo específico, a fim de compilar as alterações. Todas as alterações não confirmadas anteriores da última compilação são criadas durante esse processo de compilação. Isso é praticado quando queremos fazer check-in várias vezes, mas não queremos uma compilação toda vez que fazemos check-in de nosso código, para que possamos ter um tempo ou período fixo no qual podemos iniciar a compilação para criar o código de check-in.
Os detalhes sobre essas compilações podem ser encontrados no local abaixo.
Check-Gated em compilações
Construções de integração contínua
Construções noturnas
fonte
Você os utiliza - o IDE é uma ferramenta de construção. Para a linha de comando, você pode usar coisas como
make
.As pessoas usam ferramentas de linha de comando para coisas como uma compilação noturna - assim, de manhã com uma ressaca, o programador percebeu que o código com o qual ele estava mexendo com as versões mais recentes das bibliotecas não funciona!
fonte
"... é muito difícil acompanhar o que precisa ser construído" - As ferramentas de construção não ajudam com tudo isso. Você precisa saber o que deseja construir. (Citado na resposta de Ritesh Gun)
"Ouvi dizer que eles são usados quase em todo o tipo de desenvolvimento do mundo real" - Por alguma razão, os desenvolvedores de software gostam de trabalhar em grandes empresas. Eles parecem ter diretrizes de trabalho mais claras para cada indivíduo que trabalha lá.
"Como é que eu nunca precisei deles nos últimos quatro anos". Provavelmente porque você é um programador qualificado.
Pseudo, meta. Eu acho que as ferramentas de construção não oferecem nenhum benefício realmente real. Ele serve apenas para adicionar uma sensação de segurança decorrente de práticas inadequadas da empresa, falta de direção - liderança de arquitetura de software ruim que leva a um conhecimento real ruim do projeto. Você nunca deve usar ferramentas de construção (para teste) em seu projeto. Fazer testes aleatórios sem conhecimento do projeto de software não ajuda em nada.
Você nunca deve adicionar algo a um projeto sem saber seu objetivo e como ele funcionará com os outros componentes. Os componentes podem ser funcionais separados, mas não funcionam juntos. (Essa é a responsabilidade do arquiteto de software que assumo).
E se 4-5 componentes forem adicionados ao projeto. Você adiciona um sexto componente. Juntamente com o primeiro componente adicionado, pode estragar tudo. Nenhum automático ajudaria a detectar isso.
Não há outro atalho além de pensar, pensar, pensar.
Depois, há o download automático dos repositórios. Por que você iria querer fazer isso? Você precisa saber o que você baixa, o que você adiciona ao projeto. Como você detecta alterações nas versões dos repositórios? Você precisa saber. Você não pode "auto" nada.
E se testássemos bicicletas e transporte de bebê com os olhos vendados com um graveto e apenas batesse nele aleatoriamente. Essa parece ser a ideia do teste da ferramenta de construção.
Sinto muito, não há atalho https://en.wikipedia.org/wiki/Scientific_method e https://en.wikipedia.org/wiki/Analysis
fonte