sexta-feira, 13 de março de 2009

Introdução a Engenharia de Softwares - Parte 4

Pessoal, vamos falar um pouco mais sobre software!?

Os softwares tem características interessantes. Por isso acho que vale a pena escrever um pouco mais.

Definição de software

"Instruções (programas de computador) que, quando executadas, produzem a função e o desempenho desejados.

Estruturas de dados que possibilitam que os programas manipulem adequadamente a informação.

Documentos que descrevem a operação e o uso dos programas."

De acordo com os mais estudados no assunto, softwares não são apenas "programinhas de computador", e sim algo muito mais complexo. Os softwares são o conjunto dos elementos citados acima: Instruções (programa propriamente dito), Estruturas de dados (banco de dados, arquivos, hashmap, etc) e documentos (manuais, documentação de projeto, etc).

Características dos Softwares:


1. O software é desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico.

O gráfico abaixo conhecido como The Bathtub Curve (Curva da banheira), demonstra a curva de falhas por tempo dos hardwares. Ele mostra a vida dos produtos como peças e acessórios eletrônicos após a fabricação até a sua "morte".



1º Estágio - Infant Mortality (Mortalidade Infantil).

No primeiro estágio vemos que a taxa de falhas é muito alta, isto é devido a peças que já saem com problemas de fábrica. Após a troca dessas peças defeituosas, a taxa se estabiliza (segundo estágio).

2º Estágio - Useful Life (Vida Útil).

No segundo estágio, após a troca de peças defeituosas detectadas precocemente (Burn-in), a taxa de falhas cai se torna estável por um tempo (é a vida útil do produto). Como o produto é físico (ao contrário do software), com o tempo ele começa a sofrer desgastes (terceiro estágio).

3º Estágio - Wear-out (Desgaste).

No terceiro estágio a taxa de falhas sobe muito devido ao desgaste sofrido com o uso do equipamento, poeira, vibração, corrosão, etc. Isto é a "morte" do produto ocasionando a troca ou reparo do equipamento.


Lembrando pessoal que usei a Curva da Banheira para compararmos com a Curva do Software que é uma evolução da anterior.

2. Software não se “desgasta”.


Como sabemos os softwares não são componentes físicos como os hardwares, e sim componentes lógicos, logo a curva sofrerá uma alteração.

No início vemos a taxa de falhas muito alta. Isto se deve ao fato de implantação do software, que inicialmente possui muitos erros. A medida que os erros são reparados (Debug), a taxa vai ficando estável.

Quando o software caminha para índices baixos de erro, o software necessita de uma manutenção ou atualização, e novamente a taxa de erros sobe. Isso acontece porque quando ocorre uma alteração no código, a probabilidade de se fazer algo errado e criar um novo erro é muito alta. Isso acontece diversas vezes na construção, implantação de um software e faz com que a taxa de falhas comece a subir novamente, devido a essas alterações.

O que acontece é que o sotware não é como o hardware, não se desgasta e sim começa a ficar obsoleto (Obsolescence). Veja figura abaixo.



3. A maioria dos softwares é feita sob medida em vez de ser montada a partir de componentes existentes.

Ao contrário do hardware que se uma peça der defeito, logo podemos trocá-la e resolver o problema, no software não podemos simplesmente trocar alguma parte do programa por outra nova. Daí a dificuldade de se construir softwares.

Componentes dos Softwares:

Componentes executáveis: instruções de programas, estruturas de dados (bancos de dados), interfaces.

Componentes não executáveis: documentação de projeto e análise, manual de usuário e de produção.

OBS:
Para que um software seja considerado completo, ele deve possuir todos esses componentes.

Aplicações dos Softwares:

Software Básico: Uma coleção de programas escritos para servir a outros programas. Ex: compiladores, editores, sistemas operacionais, drivers etc.

Software de Tempo Real: Programas que monitoram, analisam e controlam eventos do mundo real. Um sistema de tempo real precisa responder dentro de restrições de tempo especificadas, requerendo um bom tempo de resposta. Ex: software de controle de metrô, de usina nuclear, de satélites etc.

Software Comercial: A maior área de desenvolvimento de software. Sistemas de Informação: controle escolar, controle de estoque, sistema de biblioteca, comércio eletrônico, pontos de venda etc.

Software Científico e de Engenharia: Software para apoio a cálculos matemáticos, físicos e atividades de engenharia. Ex: simulação de sistemas, ferramentas CASE (computer-aided software engineering), ferramentas CAD (computer-aided design) etc.

Software Embutido: Normalmente residem em memória não volátil (ROM) e são usados para controle de produtos e sistemas para o mercado consumidor industrial. Ex: programas em forno de microondas, celulares, computadores de bordo em automóveis etc.

Software de Computador Pessoal ou Aplicativo: Softwares de escritório, para computadores pessoais. Ex: editores de texto, planilhas eletrônicas, software de acesso a e-mails etc.

Software de Inteligência Artificial: Adquirem conhecimento com a entrada de dados e informações coletadas anteriormente. Ex: (reconhecimento de voz, de imagem, digital, retina), (jogos inteligentes, gerenciamento de informações imprecisas), notícias, mala direta, etc.

Essa classificação dos software foi baseada na classificação feita por PRESSMAN.

Nenhum comentário:

Postar um comentário

Obrigado pela participação. Continue visitando Dúvidas de Programação - Programming Doubts

Links

Related Posts with Thumbnails