quinta-feira, 12 de fevereiro de 2015

0.0.0.0 - Contextualização da apresentação do conteúdo

Os elementos essenciais para que uma linguagem de programação permita usar todo o poder de computação do computador são poucos:
  1. variáveis e operações sobre elas;
  2. sub-programas (também chamados blocos de código, funções, procedimentos, métodos);
  3. comandos de seleção (if - then - else);
  4. comandos de repetição (while, do...while, for)
Desde a criação dos computadores, os programas foram ficando mais longos e complicados de forma que desenvolvê-los e mantê-los tornou-se desafiador, inclusive assunto de pesquisa acadêmica.

A disciplina que estuda técnicas de gerenciamento de projetos de software é a de Engenharia de Software. Nela estudam-se os aspectos gerenciais de casos de desenvolvimento de software, como fases do desenvolvimento do projeto (às vezes chamado ciclo de vida do projeto - veja post a respeito), trabalho em grupo, organização das pessoas (hierárquica ou não), fluxo de informação e de trabalho. Mostrando casos de sucesso e categorizando-os em "modelos de ciclo de vida"[SCHACH, 2006]. Na maioria dos modelos há etapas de especificação, projeto, implementação, manutenção (atualização, inclusão de funcionalidades) e término da vida. A organização dos programas (a forma como o código fonte é escrito) influencia (facilita/dificulta, barateia/encarece) cada uma dessas etapas.

Uma estratégia considerada efetiva para grandes tarefas é decompô-las em tarefas menores com pouca ou nenhuma dependência entre elas. Até onde pesquisei, a origem desta idéia está no Taylorismo/Fordismo (gerenciamento de sistemas).

Em programação, decompor programas grandes em sub-programas menores e independentes recebeu o nome de programação modular. As vantagens apontadas são:
  1. a compreensão do programa como um todo;
  2. a delegação de tarefas;
  3. a substituição de quem executa a tarefa;
  4. a depuração do programa;
  5. a atualização ou substituição de partes do programa;
  6. ...
a etapa acrescentada é a montagem dos resultados das tarefas menores no programa final.

Linguagens de programação contém elementos que dão suporte a essa decomposição:
  1. Permitir a quebra do programa em vários arquivos;
  2. Permitir que o programador crie tipos de dados / objetos;
  3. Garantir que a independência  entre tarefas é respeitada;
Esses recursos não fazem uma linguagem de programação mais poderosa que outra*. Eles existem para permitir que programadores escrevam código organizado, o que é útil no desenvolvimento de grandes programas.

* poderosa no sentido de permitir usar toda a capacidade do computador.

Nenhum comentário:

Postar um comentário