1.1 Software: definições, contextos e história
“No mundo moderno, tudo é software.” (VALENTE, 2019)
“O mundo moderno não poderia existir sem o software.” (SOMMERVILLE, 2011)
Mas afinal, o que é software?
Muito se confunde software com programa de computador. “Softwares são programas de computador e documentação associada.” (SOMMERVILLE, 2011) Já um programa de computador é composto por linhas de código, dados e regras de negócio que permitem um computador resolver problemas ou executar tarefas.
“Muitas pessoas pensam que software é simplesmente outra palavra para programas de computador. No entanto, quando falamos de engenharia de software, não se trata apenas do programa em si, mas de toda a documentação associada e dados de configurações necessários para fazer esse programa operar corretamente.” (SOMMERVILLE, 2011)
“Um bom software deve prover a funcionalidade e o desempenho requeridos pelo usuário; além disso, deve ser confiável e fácil de manter e usar.” (SOMMERVILLE, 2011)
E, como surgiram os primeiros softwares?
A máquina analítica foi o primeiro computador mecânico de uso geral, idealizado pelo matemático inglês Charles Babbage em 1837 e foi concebida para realizar cálculos automáticos complexos via cartões perfurados. Em 1843, ao traduzir um artigo sobre a máquina analítica, Ada Lovelace adicionou notas detalhadas, incluindo um método para calcular números de Bernoulli, considerado o primeiro programa de computador da história.
Os primeiros softwares “executáveis" surgiram na metade do século XX como instruções manuais, em código de máquina, para programar computadores como o ENIAC (Electronic Numerical Integrator and Computer) criado entre 1943 a 1946, durante a Segunda Guerra Mundial, com o objetivo principal de acelerar cálculos balísticos complexos para o exército dos EUA.
As primeiras linguagens de programação evoluíram de códigos binários para linguagens de alto nível. O Plankalkül (1942-1945) é considerado a primeira linguagem de alto nível, enquanto Assembly (1947) simplificou o código de máquina. FORTRAN (1957) foi criada pela IBM e se tornou a primeira linguagem comercial de alto nível amplamente adotada.
Embora computadores de grande porte como o ENIAC ou o UNIVAC I, existissem desde a década de 1950, o mainframes revolucionaram o setor ao unificar arquitetura e software, tornando-se o padrão comercial da época. O primeiro mainframe moderno, o IBM System/360, foi lançado em 7 de abril de 1964. Mainframes eram computadores de grande porte, que ocupavam salas inteiras, focados no processamento de altíssimos volumes de dados, transações simultâneas, segurança extrema e alta disponibilidade (funcionamento ininterrupto). Eram usados por grandes corporações, governos, militares e bancos para missões críticas. As linguagens mais utilizadas em mainframes incluiam o COBOL e o Assembly.
O COBOL (COmmon Business Oriented Language) surgiu em 1959, criado pelo comitê CODASYL (Conference on Data Systems Languages) sob incentivo do Departamento de Defesa dos EUA. A necessidade era criar uma linguagem de programação padronizada e legível em inglês para processamento de dados comerciais em mainframes.
“Ao longo da década de 1980, avanços na microeletrônica resultaram em maior poder de computação a um custo cada vez mais baixo. (…) O poder de um computador mainframe da década de 1980 agora está à disposição sobre uma escrivaninha. As assombrosas capacidades de processamento e armazenagem do moderno hardware representam um grande potencial de computação. O software é o mecanismo que nos possibilita aproveitar e dar vazão a esse potencial.” (PRESSMAN, 1995)
Com o avanço das linguagens de programação, o ser humano passou a escrever instruções de forma mais fácil, e assim os softwares começaram a escalar. Começaram a surgir sistemas operacionais, aplicações empresariais, etc. Além disso, avanços em compiladores, sistemas operacionais e práticas de engenharia também foram fundamentais.
Para Valente (2019), empresas de qualquer tamanho dependem dos mais diversos sistemas de informação para automatizar seus processos. Governos também interagem com os cidadãos por meio de sistemas computacionais, por exemplo, para coletar impostos ou realizar eleições. Empresas vendem, por meio de sistemas de comércio eletrônico, uma gama imensa de produtos, diretamente para os consumidores. Software está também embarcado em diferentes dispositivos e produtos de engenharia, incluindo automóveis, aviões, satélites, robôs, etc. Sommerville (2011), acrescenta ainda que, a área de entretenimento, incluindo a indústria da música, jogos de computador, cinema e televisão, faz uso intensivo de software.
Para Sommerville (2011) há dois tipos de produtos de software:
- Produtos genéricos: sistemas stand-alone produzidos por uma empresa e vendidos no mercado para qualquer cliente interessado. Incluem também as chamadas aplicações verticais, projetadas para um nicho específico, como sistemas para bibliotecas, sistemas para contabilidade, sistemas para clínicas médicas, etc.
- Produtos sob encomenda: são sistemas encomendados por um cliente em particular. A empresa desenvolve o sistema com base nas especificações desse cliente.
Bibliografia:
Marco Tulio Valente. Engenharia de Software Moderna: Princípios e Práticas para Desenvolvimento de Software com Produtividade, Editora: Independente, 2020.
SOMMERVILLE, Ian. Engenharia de software. 9. ed. São Paulo: Pearson Prentice Hall, 2011.
PRESSMAN, Roger S. Engenharia de Software. 3. ed. São Paulo: Editora Makron Books, 1995.