17.04.2013 Views

Engenharia de Softwa..

Engenharia de Softwa..

Engenharia de Softwa..

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

necessário fazer para evitar ou, pelo menos, minimizar esse<br />

aumento do número <strong>de</strong> falhas?<br />

Nesse momento, antes <strong>de</strong> respon<strong>de</strong>r, é importante lembrar que<br />

algo que o <strong>de</strong>senvolvimento <strong>de</strong> qualquer produto ou artefato requer<br />

é saber quais os passos necessários para alcançar o objetivo<br />

<strong>de</strong> ter o produto pronto (<strong>de</strong>senvolvido). E, o que seria isso?<br />

A resposta a esta questão é engenharia e, especificamente,<br />

neste caso, engenharia <strong>de</strong> software, tendo como premissa<br />

assegurar a confiabilida<strong>de</strong> <strong>de</strong>sejada do sistema. O leitor<br />

po<strong>de</strong> consultar o artigo sobre confiabilida<strong>de</strong> <strong>de</strong> software no<br />

quadro <strong>de</strong> links no final <strong>de</strong>ste artigo. Contudo, observe que<br />

o <strong>de</strong>senvolvimento <strong>de</strong> sistemas <strong>de</strong> software, similarmente a<br />

outros sistemas (como na analogia com a construção <strong>de</strong> uma<br />

casa), po<strong>de</strong> ser <strong>de</strong>composto em três fases genéricas – <strong>de</strong>finição,<br />

<strong>de</strong>senvolvimento e manutenção – conforme ilustrado na<br />

Figura 4.<br />

Figura 4. Fases genéricas no <strong>de</strong>senvolvimento <strong>de</strong> software<br />

A fase <strong>de</strong> <strong>de</strong>finição engloba a i<strong>de</strong>ntificação <strong>de</strong> informações<br />

que <strong>de</strong>veriam ser processadas, funções e <strong>de</strong>sempenho <strong>de</strong>sejados,<br />

tipo <strong>de</strong> interface a ser utilizada, tarefas que o sistema<br />

<strong>de</strong>veria prover suporte, perfil <strong>de</strong> usuários do sistema, <strong>de</strong>ntre<br />

outras.<br />

Já a fase <strong>de</strong> <strong>de</strong>senvolvimento concentra-se no projeto <strong>de</strong><br />

estruturas <strong>de</strong> dados e arquitetura <strong>de</strong> software do sistema<br />

(isto é, como ele está organizado), conversão do projeto para<br />

alguma linguagem <strong>de</strong> programação (ou seja, implementação),<br />

realização <strong>de</strong> testes e avaliação.<br />

Finalmente, a manutenção consi<strong>de</strong>ra modificações e/ou<br />

correções necessárias no sistema a fim <strong>de</strong> que este atenda<br />

aos requisitos do sistema. Perceba que o processo <strong>de</strong> <strong>de</strong>senvolvimento<br />

<strong>de</strong> um sistema <strong>de</strong> software tem duas gran<strong>de</strong>s<br />

ativida<strong>de</strong>s <strong>de</strong> interesse que envolve o <strong>de</strong>senvolvimento da<br />

porção <strong>de</strong> software que implementa as funcionalida<strong>de</strong>s do<br />

sistema, e a ativida<strong>de</strong> que a antece<strong>de</strong> e norteia o <strong>de</strong>senvolvimento,<br />

que é o projeto <strong>de</strong> software. Essa última ativida<strong>de</strong> é<br />

resultado do levantamento e análise <strong>de</strong> requisitos que provê<br />

informações para <strong>de</strong>cisões <strong>de</strong> projeto.<br />

De tudo o que foi discutido acima, você po<strong>de</strong>rá perceber<br />

que há um guia <strong>de</strong> <strong>de</strong>senvolvimento <strong>de</strong> software, o qual é<br />

encarregado <strong>de</strong>:<br />

• Definir a sequência <strong>de</strong> aplicação <strong>de</strong> métodos (em cada uma<br />

das etapas <strong>de</strong> <strong>de</strong>senvolvimento);<br />

• Definir os produtos (documentos ou outros artefatos) a<br />

serem entregues;<br />

• Estabelecer as datas <strong>de</strong> entrega (isto é, os milestones) dos<br />

produtos ou artefatos;<br />

• Assegura qualida<strong>de</strong> <strong>de</strong> <strong>de</strong>senvolvimento.<br />

8 <strong>Engenharia</strong> <strong>de</strong> <strong>Softwa</strong>re Magazine - Natureza do <strong>Softwa</strong>re e a Necessida<strong>de</strong> <strong>de</strong> Princípios e Processo<br />

Esse guia, que <strong>de</strong>fine quais ativida<strong>de</strong>s <strong>de</strong>vem ser realizadas,<br />

<strong>de</strong>termina a sequência na qual as ativida<strong>de</strong>s são realizadas e<br />

as relações entre elas, estabelece critérios para a transição entre<br />

tarefas, compreen<strong>de</strong>ndo o processo <strong>de</strong> <strong>de</strong>senvolvimento <strong>de</strong><br />

software. Em outras palavras, o processo guia o <strong>de</strong>senvolvimento<br />

<strong>de</strong>s<strong>de</strong> sua concepção quando os clientes (ou usuários)<br />

expressam quais funcionalida<strong>de</strong>s (ou requisitos do sistema)<br />

eles <strong>de</strong>sejam até a entrega do produto final (software). Isto é<br />

ilustrado na Figura 5.<br />

Figura 5. Papel do processo <strong>de</strong> <strong>de</strong>senvolvimento <strong>de</strong> software<br />

Note que o processo é parte da engenharia <strong>de</strong> software, cujo<br />

objetivo principal é fazer uso <strong>de</strong> princípios <strong>de</strong> engenharia a fim<br />

<strong>de</strong> produzir, a baixo custo, software que opere corretamente e<br />

com eficiência em equipamentos (como o computador), on<strong>de</strong><br />

o software é instalado.<br />

<strong>Engenharia</strong> <strong>de</strong> <strong>Softwa</strong>re<br />

Antigamente (isto é, cerca <strong>de</strong> quatro décadas atrás), o<br />

<strong>de</strong>senvolvimento <strong>de</strong> software era realizado sem qualquer<br />

planejamento, sem uso <strong>de</strong> técnicas, e po<strong>de</strong>mos até dizer que<br />

era <strong>de</strong>senvolvido por tentativa e erro. Em outras palavras, não<br />

havia qualquer disciplina <strong>de</strong> engenharia, faltavam métodos<br />

para o <strong>de</strong>senvolvimento e havia muitas questões que eram<br />

feitas décadas atrás para pequenos programas (software), que<br />

ainda po<strong>de</strong>m ser feitas hoje em dia para gran<strong>de</strong>s sistemas computacionais<br />

(on<strong>de</strong> software é parte essencial). Essas questões<br />

levantadas no livro Why <strong>Softwa</strong>re Cost so Much? (1975) <strong>de</strong> Tom<br />

DeMarco ainda são atuais:<br />

• “Por que <strong>de</strong>mora tanto tempo para que os programas sejam<br />

concluídos?”<br />

• “Por que os custos são tão elevados?”<br />

• “Por que não <strong>de</strong>scobrimos todos os erros antes <strong>de</strong> entregarmos<br />

o software ao nosso cliente?”<br />

• “Por que temos dificulda<strong>de</strong>s em medir o progresso enquanto<br />

o software está sendo <strong>de</strong>senvolvido?”<br />

Respon<strong>de</strong>r a essas questões tem sido uma das metas da engenharia<br />

<strong>de</strong> software a qual tem uma <strong>de</strong>finição clássica dada<br />

por Fritz Bauer em 1969, on<strong>de</strong> ele a <strong>de</strong>finiu como:<br />

“O estabelecimento e uso <strong>de</strong> sólidos princípios <strong>de</strong> engenharia para<br />

que se possa obter economicamente um software que seja confiável e<br />

que funcione eficientemente em máquinas reais.”<br />

Neste momento, você <strong>de</strong>ve perceber que a engenharia <strong>de</strong><br />

software consiste <strong>de</strong> um conjunto <strong>de</strong> técnicas que visam apoiar<br />

as ativida<strong>de</strong>s <strong>de</strong> levantamento <strong>de</strong> requisitos, mas também a

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!