Programação no grande e programação no pequeno - Programming in the large and programming in the small

Na engenharia de software , a programação em grande e a programação em pequeno referem-se a dois aspectos diferentes da escrita de software, a saber, projetar um sistema maior como uma composição de partes menores e criar essas partes menores escrevendo linhas de código em uma linguagem de programação, respectivamente. Os termos foram cunhados por Frank DeRemer e Hans Kron em seu artigo de 1975 "Programação grande versus programação pequena", em que argumentam que as duas são atividades essencialmente diferentes e que linguagens de programação típicas, e a prática de programação estruturada fornecem um bom suporte para o último, mas não para o primeiro.

Isso pode ser comparado à dicotomia de Ousterhout posterior , que distingue entre linguagens de programação de sistema (para componentes) e linguagens de script (para código de cola , componentes de conexão).

Descrição

Fred Brooks identifica que a maneira como um programa individual é criado é diferente de como um produto de sistemas de programação é criado. O primeiro provavelmente executa bem uma tarefa relativamente simples. Provavelmente é codificado por um único engenheiro, é completo em si mesmo e está pronto para ser executado no sistema no qual foi desenvolvido. A atividade de programação provavelmente teve vida curta, pois tarefas simples são rápidas e fáceis de concluir. Este é o esforço que DeRemer e Kron descrevem como programação no pequeno.

Compare com as atividades associadas a um projeto de sistemas de programação, novamente conforme identificado por Brooks. Tal projeto é tipificado por equipes industriais de médio ou grande porte que trabalham no projeto por muitos meses a vários anos. É provável que o projeto seja dividido em várias ou centenas de módulos separados, que individualmente são de complexidade semelhante aos programas individuais descritos acima. No entanto, cada módulo definirá uma interface para seus módulos adjacentes.

Brooks descreve como os projetos de sistemas de programação são normalmente executados como projetos formais que seguem as melhores práticas da indústria e incluirão testes, documentação e atividades de manutenção contínua, bem como atividades para garantir que o produto seja generalizado para funcionar em diferentes cenários, incluindo em sistemas diferentes do desenvolvimento sistemas nos quais foi criado.

Programação em grande

No desenvolvimento de software , a programação em geral pode envolver a programação por grupos maiores de pessoas ou por grupos menores durante períodos de tempo mais longos. Qualquer uma dessas condições resultará em programas grandes e, portanto, complicados que podem ser difíceis para os mantenedores entenderem.

Com a programação em geral, os gerentes de codificação enfatizam o particionamento do trabalho em módulos com interações precisamente especificadas. Isso requer um planejamento cuidadoso e documentação cuidadosa.

Com a programação em geral, as mudanças no programa podem se tornar difíceis. Se uma mudança opera além dos limites do módulo, o trabalho de muitas pessoas pode precisar ser refeito. Por causa disso, um objetivo da programação em grande escala envolve a configuração de módulos que não precisarão ser alterados no caso de mudanças prováveis. Isso é conseguido projetando módulos para que tenham alta coesão e acoplamento frouxo .

A programação em geral requer habilidades de criação de abstrações. Até que um módulo seja implementado, ele permanece uma abstração . Juntas, as abstrações devem criar uma arquitetura que provavelmente não precisará de mudanças. Eles devem definir as interações que têm precisão e correção demonstráveis.

A programação em geral requer habilidades de gerenciamento . O processo de construção de abstrações visa não apenas descrever algo que pode funcionar, mas também direcionar os esforços das pessoas que o farão funcionar.

O conceito foi apresentado por Frank DeRemer e Hans Kron em seu artigo de 1975 "Programação no Grande Versus Programação no Pequeno", IEEE Trans. no Soft. Eng. 2 (2).

Em termos de ciência da computação , a programação em geral pode se referir ao código de programação que representa a lógica de transição de estado de alto nível de um sistema . Esta lógica codifica informações como quando esperar por mensagens , quando enviar mensagens, quando compensar por transações não ACID com falha , etc.

Uma linguagem que foi projetada para suportar explicitamente a programação em geral é BPEL .

Programação no pequeno

No desenvolvimento de software , a programação em pequenos descreve a atividade de escrever um pequeno programa. Os programas pequenos são caracterizados por serem pequenos em termos de tamanho de código-fonte, são fáceis de especificar, rápidos de codificar e normalmente executam muito bem uma ou algumas tarefas intimamente relacionadas.

A programação em pequenos pode envolver a programação por indivíduos ou pequenos grupos em curtos períodos de tempo e pode envolver práticas menos formais (por exemplo, menos ênfase na documentação ou teste), ferramentas e linguagens de programação (por exemplo, a seleção de uma linguagem de script fracamente tipada em preferência a uma linguagem de programação estritamente tipada ). A programação em pequena escala também pode descrever uma abordagem para fazer um protótipo de software ou onde o desenvolvimento rápido de aplicativos é mais importante do que a estabilidade ou correção.

Em termos de ciência da computação, a programação nos pequenos lida com comportamento programático de curta duração, muitas vezes executado como uma única transação ACID e que permite o acesso à lógica local e recursos como arquivos, bancos de dados, etc.

Referências

Leitura adicional