A maior rede de estudos do Brasil

Grátis
72 pág.
Apostila Eng Software

Pré-visualização | Página 3 de 28

de requisitos até a sua 
manutenção, que ocorre após a entrega do produto 
e o início de sua operação. Seu principal objetivo 
é fornecer uma estrutura metodológica para a 
construção de um software com alta qualidade. 
Podemos defi nir engenharia de software como 
um processo que envolve a criação e a utilização 
de sólidos princípios de engenharia, a fi m de obter 
softwares que sejam:
• de alta qualidade;
• produzidos de maneira econômica;
• confi áveis;
• de trabalho efi ciente em máquinas reais;
• entregues no prazo;
• feitos gerando satisfação ao cliente.
De acordo com Pressman (2010), a engenharia 
de software é uma tecnologia em camadas, 
apoiada fundamentalmente em um compromisso 
organizacional com a qualidade, como mostra a 
Figura 2. Nesta abordagem, podemos observar que 
o alicerce da engenharia de software é a camada 
de processo, que funciona como um adesivo que 
mantém unidas as camadas ligadas à tecnologia.
Figura 2. Engenharia de software: uma tecnologia em camadas.
Fonte: baseado em Pressman (2010).
Engenharia de Software
8
O processo forma uma base que mantém 
unidas as camadas de tecnologia, permitindo o 
desenvolvimento de software com qualidade. Além 
disso, ele defi ne o arcabouço que garante a efetiva 
utilização das técnicas de Engenharia de Software. 
Os métodos fornecem as técnicas de “como 
fazer” a construção de software. Abrangem um amplo 
conjunto de tarefas que incluem comunicação, análise 
de requisitos, modelagem de projeto, construção de 
programas, testes e manutenção.
As ferramentas fornecem apoio automatizado ou 
semiautomatizado para o processo e seus métodos 
(PRESSMAN, 2010).
Em função de sua indiscutível importância, as 
técnicas e métodos da engenharia de software são 
atualmente muito usadas, mas ainda não o são 
utilizadas por todos e nem da maneira correta.
Não podemos prosseguir falando da engenharia 
de software sem antes entendermos o software e 
seus fundamentos. Assim, os conceitos de software 
são apresentados aqui como uma referência inicial 
para o estudo do software, propriamente dito, e de 
seus processos de desenvolvimento.
Pressman (2006, p. 4) conceitua o software como:
(1) Instruções (programas de 
computador) que, quando executadas, 
produzem a função e o desempenho 
desejados; (2) Estruturas de dados que 
possibilitam que os programas manipulem 
adequadamente a informação; (3) 
Documentos que descrevem a operação e 
o uso dos programas.
As normas de gestão de qualidade e garantia 
da qualidade apresentam defi nições de software e 
seus componentes e processos. A norma NBR ISO 
9000-3 – que é uma interpretação da norma de 
garantia de qualidade ISO 9001 para aplicação aos 
produtos de software – traz as seguintes defi nições:
• Software: criação intelectual compreendendo 
os programas, procedimentos, regras e qualquer 
documentação correlata à operação de um sistema de 
processamento de dados.
• Produto de software: conjunto completo de programas 
de computador, procedimentos e documentação 
correlata, assim como dados designados para entrega 
a um usuário.
• Item de software: qualquer parte identifi cável de 
um produto de software em etapa intermediária ou na 
etapa fi nal de desenvolvimento.
• Desenvolvimento: todas as atividades a serem 
realizadas para a criação de um produto de software.
• Fase: segmento defi nido do trabalho.
Como podemos observar, o conjunto de conceitos 
apresentados deixa claro que o software é um 
produto complexo que exige cuidados constantes. 
Dessa forma, o controle da qualidade não pode ser 
uma atividade secundária, mas deve estar presente 
desde o início de seu desenvolvimento até a análise 
fi nal de entrega.
2.2 Software x hardware
De acordo com Pressman (2010), comparar 
o software com produtos de hardware auxilia na 
compreensão das diferenças existentes entre 
eles e enfatiza as características inerentes a um 
software. Ainda segundo o autor, o processo de 
desenvolvimento do software apresenta diferenças 
fundamentais em relação ao hardware:
• O processo criativo do hardware gera algo físico (por 
exemplo, placas de circuitos). O desenvolvimento de 
software resulta em um elemento pertencente a um 
sistema lógico, intangível;
• O software geralmente é desenvolvido sob medida, 
ao contrário do hardware, no qual o projetista tem 
acesso a componentes existentes que executam tarefas 
defi nidas. O projetista do software nem sempre terá 
acesso a módulos prontos para utilização. Quando o 
faz, pode elevar o risco do produto devido a questões 
de segurança;
• Os custos do software estão concentrados no 
desenvolvimento e não no processo de manufatura. 
Isso signifi ca que não pode ser gerido como projeto de 
manufatura;
• Ao longo do tempo, o produto de software não se 
desgasta, mas se deteriora em função da introdução 
de erros oriundos de atividades de manutenção ou 
evoluções implícitas no processo, que devem ser 
reconsideradas no modelo original.
Engenharia de Software
9
Dessa forma, o software sofre deterioração 
ocasionada por diversos fatores, sendo uma 
característica peculiar do produto. Pressman 
(2010) relata que, no caso do hardware, temos um 
alto índice de falhas no início do seu ciclo de vida, 
ocasionadas por defeitos de fabricação e projeto. 
Posteriormente os defeitos são corrigidos, dando 
estabilidade nas falhas ou mantendo-a em um nível 
muito baixo e suportável para a estrutura. 
No fi nal do ciclo de vida do produto podem 
surgir problemas relacionados ao envelhecimento, 
acúmulo de poeira, vibração, abuso, temperaturas 
extremas, entre outros. Este processo pode ser 
visto no Gráfi co 1.
Gráfi co 1. Curva de falhas do hardware. 
Fonte: Pressman (2010).
Gráfi co 2. Curva de falhas do software. 
Fonte: Pressman (2010).
Diferentemente da curva teórica de falhas do 
hardware, a de software leva em conta que este 
não sofre processos de envelhecimento como 
o hardware, pois o software não é algo físico. 
No início do ciclo de vida do software teremos 
problemas (bugs) que serão ajustados no decorrer 
do desenvolvimento e se estabilizarão, gerando 
uma tendência de achatamento da curva, conforme 
pode ser visto no Gráfi co 2. 
Notemos que esta é apenas uma teoria, já que 
a curva real do índice de falhas de um software 
considera o processo de manutenção e mudanças.
Durante o processo de refi namento do produto 
ou nas mudanças aumenta-se, consideravelmente, 
a probabilidade de inserção de novos erros, gerando 
picos na curva de falhas. As sucessivas alterações 
do software tendem a introduzir mais erros antes 
da estabilização de erros de alterações anteriores, 
ocasionando a tendência crescente do índice de 
falhas.
Isso nos remete a uma realidade bastante 
complicada em relação ao software: ele é um 
produto que quanto mais se conserta, pior fi ca. Um 
software em constante manutenção pode se tornar 
uma espécie de “colcha de retalhos”, gerando pontos 
de falha diversos, difíceis de serem identifi cados e 
ajustados. O melhor modelo é o desenvolvimento 
de um novo produto após o tempo de vida útil do 
mesmo, considerando-se as novas necessidades e 
tecnologias disponíveis. 
Quando o hardware é projetado e construído, os 
componentes digitais são inseridos em catálogos. A 
cada circuito integrado ao componente é assinalado 
um código, uma função defi nida e validada, uma 
interface especifi cada e um conjunto padrão 
de integração. Uma vez escolhido no catálogo, 
o componente desejado pode ser adquirido e 
utilizado em diferentes projetos de hardware, com 
alta confi abilidade.
 No mundo do software, isso é algo que está 
apenas começando a ser utilizado numa escala mais 
ampla, apesar de existirem alguns casos antigos de 
reuso, como as bibliotecas de sub-rotinas científi cas. 
Engenharia de Software
10
Atualmente, a visão de reuso foi ampliada