Você está na página 1de 5

Notas de aula Engenharia de Software (Unidade I)

Roberto Vichinsky

Engenharia de Software Definio e Importncia


Software:
1. Aquilo que pode ser executado por um equipamento (o hardware), 2. Um produto comercializado que consiste em um sistema de programas. Dicionrio Aurlio da Lngua Portuguesa. O termo software foi criado para identificar todo e qualquer processo lgico de um sistema computacional (programas). Evidentemente esse termo no existia antes do advento do computador. A escolha da palavra soft (mole, suave) vem em contrapartida palavra hard (duro, pesado), prefixo de hardware (ferragens) palavra inserida no contexto da computao para identificar o equipamento (parte fsica). O termo ware significa artigo ou produto manufaturado.

Produto de Software:
Todos os artefatos que compem um sistema de software: - Cdigos (programas); - Estruturas de dados; - Documentao.

O que Engenharia de Software?


O estabelecimento e uso de slidos princpios de engenharia para que se possa obter economicamente um software que seja confivel e que funcione eficientemente em mquinas reais.
Fritz Bauer, 1969

Disciplina que integra processo, mtodos e ferramentas para o desenvolvimento de software


Roger Pressmam, 1995

Por que a engenharia de software se tornou to importante?


Contribuies do mercado de software economia americana (dados de 1996): maior supervit comercial 24 bilhes de dlares em softwares exportados, 4 bilhes importados, totalizando um saldo positivo de 20 bilhes de dlares comparao de supervits: agricultura 26 -14 =12, indstria aeroespacial 11-3 = 8, indstria qumica 26 - 19 = 7, indstria automotiva 21-43 = -22, bens manufaturados 200-265 = -64
(fonte Software Conspiracy, Mark Minasi, McGraw Hill, 2000).

Pg. 1

Notas de aula Engenharia de Software (Unidade I)

Roberto Vichinsky

Falhas no desenvolvimento
Pesquisa IBM, 1994 55% dos sistemas custam mais do que o esperado 68% ultrapassam o cronograma do projeto 88% tiveram que ser substancialmente reprojetados. Bureau of Labor Statistics (1997) para cada 6 novos sistemas colocados em operao, 2 so cancelados a probabilidade de cancelamento chega a 50% para os maiores sistemas na mdia, os projetos ultrapassam o cronograma em 50% do tempo os sistemas tm 3/4 de seu todo como falhas operacionais.

Aplicaes da Engenharia de Software (ES)


Ainda que muitas definies abrangentes tenham sido propostas para a ES (Engenharia de Software), todas elas reforam a exigncia da disciplina de engenharia no desenvolvimento de software, e abrangem um conjunto de trs elementos fundamentais: mtodos, ferramentas e procedimentos. Onde os mtodos detalham como fazer para se construir o software, as ferramentas proporcionam apoio automatizado ou semi-automatizado aos mtodos, e os procedimentos constituem o elo de ligao que mantm juntos os mtodos e as suas ferramentas, e possibilitam um processo de desenvolvimento claro, eficiente, visando garantir ao desenvolvedor e seus clientes, a produo de um software de qualidade.

Por que usar ES?


Nos ltimos 20 anos, o hardware deixou de ser o item mais caro na implementao de um sistema, enquanto que o custo relacionado ao software cresceu e ser tornou o principal item no oramento da computao. Isso se deve principalmente pela crescente complexidade dos problemas a serem resolvidos pelos softwares. Alguns sistemas chegam a possuir milhes de linhas de cdigo e envolvem vrios especialistas para o seu desenvolvimento. Aliado a isso, alguns problemas inerentes ao processo de desenvolvimento de um software comeam a surgir: as estimativas de prazo e de custo freqentemente so imprecisas, a produtividade das pessoas da rea de software no tem acompanhado a demanda por seus servios e, a qualidade de software s vezes menos que adequada, ocorrendo com muita freqncia a insatisfao do usurio. A chave para se vencer os problemas e dificuldades acima relatados a larga utilizao de uma abordagem de engenharia ao desenvolvimento de software, aliada a uma contnua melhoria das tcnicas e ferramentas, no intuito tambm de melhorar a produtividade do desenvolvedor ou equipe desenvolvedora.

Pg. 2

Notas de aula Engenharia de Software (Unidade I)

Roberto Vichinsky

Ciclo de Vida de um Software


A Engenharia de Software se preocupa com o software como produto. Esto fora de seu escopo programas que so feitos unicamente para diverso do programador. Esto fora tambm pequenos programas descartveis, feitos por algum exclusivamente para resolver um problema, e que no sero utilizados por outros. Como todo produto industrial, o software tem um ciclo de vida: Ele concebido a partir de uma necessidade; Desenvolvido, transformando-se em um conjunto de itens entregues a um cliente; Entra em operao, sendo usado dentro de algum processo de negcio; desativado ao final de sua vida til.

Erros

Tempo Desenvolvimento Operao Desativao

De acordo com o grfico acima, podemos verificar que os erros ou inconsistncias durante a fase de desenvolvimento do software, tendem a cair at um nvel prximo a zero. Durante o perodo de operao, existem alguns picos onde o nmero de inconsistncias grande (esses picos esto indicados com um crculo laranja). As inconsistncias ocorrem, normalmente, quando fatores externos ou internos exigem mudanas no software, como por exemplo: mudanas da legislao, novo posicionamento estratgico da empresa, novas necessidades do cliente, novas tecnologias, etc. Aes corretivas so aplicadas para corrigir ou atualizar o software, fazendo com que as inconsistncias cheguem outra vez a um nvel prximo de zero. No entanto, quando as aes corretivas se tornam inviveis, sejam pelo alto custo ou por ineficincia, o software entra na fase de desativao.

Pg. 3

Notas de aula Engenharia de Software (Unidade I)

Roberto Vichinsky

Anlise Estruturada X Anlise Orientada a Objetos

Estruturada (Funcional): Define-se primeiramente as funes para depois se definir as bases de dados e demais estruturas. Pergunta chave: Como funciona? / Para que serve? Orientada a Objeto (OO): Comea-se pela parte mais estvel (dados/ objetos). Pergunta chave: Como ? / O que tem?

Funcional (Estruturado) Funes

Orientado a Objeto Dados/Objetos (Estrutura)

Dados e outras estruturas

Comportamento (Funes)

Mitos de Software
(Tema para trabalho individual de pesquisa)

Diferente dos antigos mitos, os quais trazem farto material para a reflexo e so merecedores de ateno, os mitos de software trazem confuso e prejuzo para os gerentes e pessoal tcnico de desenvolvimento. Essa mitologia surgiu nos primrdios da histria do desenvolvimento de software e caracteriza-se por atitudes e hbitos enganosos divulgados por profissionais experientes que entendiam do assunto.
Referncia bibliogrfica: PRESSMAN, ROGER. Engenharia de Software. Rio de Janeiro: McGraw-Hill, 2002.

Processo de Software
Na elaborao de um produto ou sistema importante que tenhamos em mos um roteiro que nos guie atravs de uma srie de passos previsveis e nos ajude a desenvolver, dentro de um prazo e custo adequados, um produto de qualidade. A esse roteiro damos o nome de Processo de Software. O desenvolvedor (engenheiro de software) adapta o processo a suas necessidades, pois, um processo poderia ser apropriado para a criao de um software para um sistema eletrnico de uma aeronave enquanto um processo completamente diferente seria apropriado para o desenvolvimento de uma aplicao WEB. O importante que o processo de software fornece estabilidade, controle e organizao imprescindveis s atividades de desenvolvimento. Pg. 4

Notas de aula Engenharia de Software (Unidade I)

Roberto Vichinsky

Modelos de Processo de Software (Paradigmas de Engenharia de Software)


Todo o desenvolvimento de software pode ser caracterizado como um ciclo de soluo de problema, no qual so encontrados quatro estgios: situao atual, definio do problema, desenvolvimento tcnico e integrao da soluo.

Definio do problema Situao atual Integrao da soluo Desenvolvimento tcnico

Pg. 5