Introdução¶
O trabalho profissional em software excede, em muito, as habilidades de disciplinas específicas de programação, arquiteturas de funcionamento, monitoramento, design de interfaces interativas, experiência de usuário, gestão de projetos, testagem, documentação, infraestrutura. Para ficar nas mais óbvias.
Frequentemente excede também as agendas e orçamentos de patrocinadores, a compreensão dos utilizadores e a nossa capacidade de descrever precisamente como cada "engrenagem" de um software deve funcionar.
Parte dessas dificuldades é magistralmente apresentada e discutida no artigo "Sem balas de prata: Complexidades essenciais e acidentais da Engenharia de Software" (em tradução livre) do professor Frederick P. Brooks Jr. Uma cópia desse artigo está incluída nos apêndices deste texto.
O trabalho profissional em software é permanentemente influenciado pelas pressões, limitações e interlocuções necessárias entre pessoas que estão dos dois lados da bancada: aquelas incumbidas dos trabalhos de produção - seja remediação, criação, correção, documentação - e as pessoas que utilizarão ou se beneficiarão de alguma forma do produto desse trabalho: o software.
Cada projeto de software é antes de mais nada uma oportunidade de facilitação e automação, seja de uma ou de centenas de tarefas anteriormente realizadas por outros humanos.
Apreender e calibrar o funcionamento adequado e satisfatório de software - resultado primeiro do trabalho em software - exige a interação com outras pessoas em seus diferentes lugares de saber e poder, com as suas agendas e disponibilidades. Exige crescente entendimento de termos e conceitos subjacentes às rotinas que o software automatizará, interlocução com o nosso próprio linguajar, apresentação de versões preliminares, diagramas, inúmeros e-mails, reiteradas explicações, rodadas de dúvidas, suporte, alguma decodificação de linguagem oral, verbal e visual.
As contribuições deste documento objetivam, mais do que explicitar detalhes dessa lida, sobretudo oferecer ao leitor alguns conceitos úteis para o técnico nas tarefas de programação e desenvolvimento de software. Está dividido em dois grupos temáticos:
Seções deste estudo¶
Discute alguns tópicos do trabalho em software, independente de linguagem de programação, disciplina de gestão ou mesmo plataforma de desenvolvimento.
Sistemas e Sistemas de Informação¶
Discute alguns tópicos do trabalho em software, independente de características como plataforma de desenvolvimento ou linguagem de programação.
Categorização de software¶
São apresentadas algumas classificações eventualmente úteis, sob a perspectiva do desenvolvedor, de softwares com os quais se lida no dia a dia. Introduz também, apenas como definição de trabalho, o termo "software em desenvolvimento".
Canteiro de Obras¶
A seção oferece algumas reflexões e questionários que podem servir como um roteiro de compreensão para um projeto ou canteiro de obras no qual o trabalhador esteja iniciando.
Regras de Negócio, jargões e outros acrônimos¶
Estão apresentados alguns acrônimos e jargões da área de desenvolvimento de software. Uma contextualização de sua aplicabilidade no código-fonte que é efetivamente escrito também é discutido.
Modularização Funcional¶
A seção apresenta um roteiro básico para estruturação ou reestruturação de softwares em módulos mais orientados às funcionalidade finais.