Pular para o conteúdo principal

O que é software?

Nesta aula você vai saber o que é software, conhecendo também uma perspectiva não convencional.

Um software é um conjunto de programas de computadores, em suas diversas formas (código fonte, objeto, executável, APIs, scripts, etc.) e toda a sua documentação associada.

Um programa é um conjunto de soluções algorítmicas, codificadas numa linguagem de programação, executado numa máquina real.

Os produtos de software podem ser desenvolvidos para um cliente em particular (Software personalizado, sob encomenda) ou para o mercado geral (Software genérico ou COTS – Commercial Off-The Shelf).

O software é um produto conceitual e lógico. Isto significa que o software não é um produto material, ele um produto ou artefato virtual. Ele apenas existe na mente das pessoas envolvidas com o seu desenvolvimento e utilização.

Exemplo

Para exemplificar esta perspectiva de software como artefato, vejamos o exemplo exemplo de um programa trivial que, com pequenas alterações no programa, mas sem alterar a essência do algoritmo, pode ser visto como aplicações de software de distintas.

Vejamos o seguinte trecho de interação entre o usuário (U) e o sistema (S).

S: Forneça um número:
U: 5.3
S: Você deve digitar apenas números inteiros:
U: 5
S: Forneça outro número:
U: 8
S: O resultado é -3

Observando a interação do usuário com o sistema podemos concluir que o software realizou uma subtração. Assim, a funcionalidade deste software é realizar subtrações de dois números inteiros. Vejamos, agora o algoritmo que está por trás deste software.

escreva("Forneça um Número:");
leia A;
enquanto A não for inteiro faça
escreva(Você deve digitar apenas números inteiros:)
leia A;
escreva("Forneça outro Número:");
leia B;
C = A - B;
escreva("O resultado é ", C);
Vejamos agora o que acontece se modificarmos as linhas 1, 6 e 9 deste algoritmo para
escreva("Forneça o valor de venda");
escreva("Forneça o valor de compra");
escreva("O lucro é",C);

Para o programador muito pouca coisa mudou, mas para o usuário deste sistema este software agora é visto como uma aplicação de cálculo de lucros de vendas. As alterações no programa foram bastante pequenas, mas produziu um efeito significativo. A perspectiva de software como artefato deve considerar como o usuário vê a aplicação. Os modelos conceituais da funcionalidade do software são distintos. Desta forma, temos software distintos com aplicações em domínios distintos. O programa nos fornece uma visão de funcionamento. O usuário possui apenas a visão de funcionalidade.

Podemos modificar as mesmas linhas do programa para:

escreva("Salário Bruto");
escreva("Descontos");
escreva("Salário líquido,C);

que produz um novo software.

Como este exemplo podemos entender melhor que embora o software seja um programa, ele precisa ser considerado como um artefato. Nestes exemplos, temos artefatos virtuais diferentes para programas com um mesmo algoritmo.

Para maiores informações, consulte o material de aula (em PDF).

Comentários

Unknown disse…
É uma ideia incomum considerar algo que utilizamos todos os dias como algo abstrato. Acredito que essa ideia demora um pouco para ser absorvida, mas também acredito que ela é mais correta.

Ótimo texto.

Postagens mais visitadas deste blog

O Modelo Espiral

O objetivo do modelo espiral é prover um metamodelo que pode acomodar diversos processos específicos. Isto significa que podemos encaixar nele as principais características dos modelos vistos anteriormente, adaptando-os a necessidades específicas de desenvolvedores ou às particularidades do software a ser desenvolvido. Este modelo prevê prototipação, desenvolvimento evolutivo e cíclico, e as principais atividades do modelo cascata. Sua principal inovação é guiar o processo de desenvolvimento gerado a partir deste metamodelo com base em análise de riscos e planejamento que é realizado durante toda a evolução do desenvolvimento. Riscos são circunstâncias adversas que podem surgir durante o desenvolvimento de software impedindo o processo ou diminuindo a qualidade do produto. São exemplos de riscos: pessoas que abandonam a equipe de desenvolvimento, ferramentas que não podem ser utilizadas, falha em equipamentos usados no desenvolvimento ou que serão utilizados no produto final, etc.

O Modelo Evolutivo

O modelo evolutivo descreve um processo na qual o software deve ser desenvolvido de forma a evoluir a partir de protótipos iniciais. Para entender melhor este modelo é importante entender o que é prototipação (ou prototipagem). Prototipação é uma abordagem baseada numa visão evolutiva do desenvolvimento de software, afetando o processo como um todo. Esta abordagem envolve a produção de versões iniciais - "protótipos" - de um sistema futuro com o qual pode-se realizar verificações e experimentações para se avaliar algumas de suas qualidades antes que o sistema venha realmente a ser construído. Objetivos da Prototipação Num projeto de software várias questões podem ser respondida com a construcão de protótipos. Nas situações típicas de desenvolvimento podemos distinguir entre diferentes objetivos na prototipação: Exploratória - é quando o protótipo é usado para ajudar a esclarecer requisitos dos usuários com respeito ao sistema futuro. Uma prototipação também é exploratória

Sistemas Computacionais

Um sistema computacional (ou baseado em computador) é aquele que automatiza ou apóia a realização de atividades humanas através do processamento de informações. Um sistema baseado em computador é caracterizado por alguns elementos fundamentais. Hardware Software Informações Usuários Procedimentos ou Tarefas Documentação O hardware corresponde às partes eletrônicas e mecânicas (rígidas) que possibilitam a existência do software, o armazenamento de informações e a interação com o usuário. A CPU, as memórias primária e secundária, os periféricos, os componentes de redes de computadores, são exemplos de elementos de hardware. Um único computador pode possibilitar a existência de diversos sistemas e um sistema pode requisitar diversos computadores. O software é a parte abstrata do sistema computacional que funciona num hardware a partir de instruções codificadas numa linguagem de programação. Estas instruções permitem o processamento e armazenamento de informações na for