funcionamento de hardware, ficando esse para uma pessoa especializada.
No início dos anos 60, os sistemas com características de multiprogramação surgiram e a eficiência e utilidade dos sistemas computacionais tiveram um grande avanço, contribuindo de forma significativa para as constantes quedas de preço do Hardware. Esse avanço se deu pela necessidade cada vez maior de desenvolver sistemas de software de grande porte para substituir os pequenos programas aplicativos utilizados até então. Desta necessidade, surgiu um grande problema, decorrente da falta de experiência e à não adequação dos métodos de desenvolvimento existente para pequenos programas, a “crise do software”, dando início ao processo de nascimento do termo “Engenharia de Software”.
O que é Software?
Quando se pensa em
software, vem logo o pensamento de que
é um programa de computador. No entanto, software
envolve além do programa, toda documentação e configuração para que o software funcione corretamente.
O software consiste de vários programas separados
como:
Arquivos de configurações
de programas;
A descrição da estrutura
do sistema em uma documentação clara;
A descrição que explica a utilização do sistema ao usuário.
Os produtos de Software
se dividem em dois:
Produtos Genéricos: São sistemas do tipo Stand-Alone onde os programas não precisam de interpretador e uma
vez compilado gera um executável. São produzidos por uma empresa especializada
em softwares e vendidos no mercado. Muitos
desses produtos podem ser chamados de Pacote de Software e temos como exemplo as Planilhas Eletrônicas, os processadores
de texto, ferramenta de gerenciamento de projeto, entre outras.
Produtos sob encomenda ou personalizados: Na visão de Sommerville (2009), os produtos sob encomenda são sistemas encomendados pelo cliente e desenvolvido por uma empresa especialmente para aquele cliente.
Uma das diferenças
entre os produtos genéricos e sob encomenda é que nos genéricos quem define a especificação
do software é a própria empresa que desenvolve.
O software sob encomenda e a especificação
do produto é definido por quem está comprando o software. Segundo Pressman (2006), existem sete categorias de software de computadores que apresentam desafios
para os Engenheiros
de Software:
Software de Sistemas: Conjunto de programas feito para servir
a outros programas. Alguns exemplos são os editores, compiladores, entre outros.
Software de Aplicação: São programas isolados, voltados para
uma tarefa específica do negócio. É
utilizado para processar
dados comerciais ou técnicos e também para controlar funções de tempo real.
Software científico e de Engenharia: Antes esses eram caracterizados por Algoritmos “Number Crunching” onde processam números.
Vão da Astronomia à Vulcanologia, da Biologia Molecular à Manufatura Automatizada.
Software Embutido: Encontra-se dentro de um sistema feito para
implementar e controlar características e funções para o usuário final e para o
próprio sistema. Este tipo de software pode
ser utilizado para realizar funções limitadas, como por exemplo, o controle do
teclado de uma geladeira, ou fornecer uma função significativa, como por exemplo
as funções digitais em um automóvel (controle de combustível).
Software para linhas de produtos: Software específico, utilizado por diversos clientes, podendo ser utilizado
num mercado limitado, como o controle de estoque, ou direcionado para os
usuários em massa, como planilhas, processadores de textos, gestão de banco de dados,
entre outros.
Aplicações Web: Cobrem várias aplicações. Um exemplo são as aplicações de comércio eletrônico. Podem
ou não ser interligados a banco de dados de empresas e às aplicações de negócios.
Software para Inteligência Artificial: Usa-se algoritmos não-numéricos
para resolver problemas complexos. Alguns exemplos são a robótica, reconhecimento
de padrões (de voz e imagem), jogos e provas de teoremas.
Mitos e Realidade
Um mito é uma construção
de algo que foi idealizado anteriormente e que não tenha nenhuma comprovação prática.
Diversos mitos serão citados, tanto para gerência responsável, dos clientes que
encomendam e compram o software, como
também dos desenvolvedores dos softwares.
Os mitos são crenças
sobre os softwares e sobre o processo
usado para construí-los. Essas crenças são uma construção mental de algo que
foi idealizado, porém não se tem comprovação prática. Hoje a maioria dos profissionais
especializados em Engenharia de Software reconhece
os mitos pelo que eles são, atitudes enganosas que causam sérios problemas tanto
para os gerentes quanto para o pessoal técnico.
Os gerentes
responsáveis pelos softwares, como
também de outras áreas, trabalham diariamente sobre pressão para seguir orçamentos,
manter cronogramas dentro do prazo e melhorar a qualidade.
Para diminuir
a pressão, esses gerentes se agarram a mitos existentes que são descritos por Pressman
(2006). São eles:
Mito
Já temos um livro
que está cheio de padrões e procedimentos para elaborar o software, isso não fornece ao meu pessoal tudo o que ele precisa
saber?
Realidade
Os livros com os padrões
pode até existir, mas ele é utilizado pelos profissionais? Eles sabem da existência
dessa documentação? Estão incluídas as práticas modernas da Engenharia de Software? É adaptável?
Completo? É
desenvolvido para melhorar o prazo de entrega, mantendo a qualidade do software? Na maioria das vezes a resposta
é não.
Mito
Caso atrase a entrega,
pode-se adicionar mais programadores e ficar em dia com o projeto?
Realidade
Caso isso ocorra o
projeto atrasará ainda mais, sobretudo devido a necessidade de haver um treinamento
especializado e com isso tendo que parar o seu desenvolvimento.
Um cliente pode
ser uma empresa ou então uma pessoa que encomendou o software sob um contrato definido. Normalmente, alguns mitos são levados
em consideração pelo cliente, pois há falta de informações mais claras sobre o
desenvolvimento do software por parte
do gerente ou dos profissionais de software.
Esses mitos levam o cliente a ter expectativas falsas quanto ao desenvolvimento
gerando insatisfação. Dentre os mitos e realidade do cliente conheça alguns:
Mito
Definir um objetivo
geral para a criação de um software é
o suficiente. Os detalhes poderão ser mostrados
posteriormente.
Realidade
A definição inicial do projeto quando não é bem definida, acaba levando o projeto ao fracasso. É de grande importância que a descrição do projeto seja elaborada e bem definida logo no início. Suas funcionalidades, o comportamento, as restrições do projeto os critérios de validação são de extrema importância para o desenvolvimento.
Já dentre os mitos
e realidade dos profissionais, alguns são citados a seguir:
Mito
Depois de toda a edição
do programa e o início de seu funcionamento, o trabalho está concluído.
Realidade
De 50% a 70% do
esforço de desenvolvimento de um software
é realizado após a sua entrega ao cliente, onde é conhecido como manutenção
do mesmo.
Mito
Não é possível ter
uma avaliação sobre o software antes de
seu funcionamento.
Realidade
A preocupação com
a garantia do software está ligada a
todas as fases do desenvolvimento. Antes do produto chegar ao seu estado
funcional, os testes já podem ser iniciados com o planejamento dos casos de teste.
Mito
Ao final do projeto
o produto a ser entregue é o programa funcionando.
Realidade
Um dos
componentes de software é o programa
em funcionamento. Um bom projeto é realizado pela produção de um conjunto de importantes
documentos. Um software sem uma boa documentação
pode ser tão ruim quanto um que não seja não funcional.
Fonte: Bellaguarda, Marcelo Figueiredo. Princípios de engenharia de software / Marcelo Belaguarda. – Mossoró : EdUFERSA, 2015.