Você está na página 1de 12

1

Engenharia de Software

Introduo

Engenharia de Software

Introduo

prof. Gregorio Perez Peiro gregorio@uninove.br

Licena de Uso

Este material est disponvel sob a licena CreativeCommons 2.5 Brasil de Atribuio-uso No Comercial Compartilhamento pela mesma licena 2.5 Brasil
http://creativecommons.org/licenses/by-nc-sa/2.5/br/

Voc pode:

copiar, distribuir, exibir e executar a obra criar obras derivadas

Sob as seguintes condies:

Atribuio
Uso No-Comercial Compartilhamento pela mesma Licena

Voc deve dar crdito ao autor original, da forma especificada pelo autor ou licenciante
Voc no pode utilizar esta obra com finalidades comerciais Se voc alterar, transformar, ou criar outra obra com base nesta, voc somente poder distribuir a obra resultante sob uma licena idntica a esta

Para cada novo uso ou distribuio, voc deve deixar claro para outros os termos da licena desta obra. Qualquer uma destas condies podem ser renunciadas, desde que Voc obtenha permisso do autor. Nada nesta licena prejudica ou restringe os direitos morais do autor

prof. Gregorio Perez Peiro - Engenharia de Software

prof. Gregorio Perez Peiro

Engenharia de Software

Introduo

Roteiro

Escopo da Engenharia de Software

Software
Software x Hardware Evoluo

O primeiro passo para se trabalhar com Engenharia de Software compreender qual seu escopo. O texto a seguir tem a inteno de mostrar os conceitos iniciais da Engenharia de Software e seus objetivos.

Crise do Software Mitos do Software

prof. Gregorio Perez Peiro - Engenharia de Software

Introduo

Origem e Escopo

1967 Surge o termo Engenharia de Software

1968 Conferncia de Engenharia de Software


Software deve ser construdo como define a Engenharia

Objetivo: Resolver a Crise do Software Preocupao com o Software


Software entregue com Atraso

Ultrapassa o Oramento Estimado


Possui Falhas Residuais
4 prof. Gregorio Perez Peiro - Engenharia de Software

Em 1967 um grupo de estudos da OTAN criou o termo Engenharia de Software definindo que um software deveria ser construdo obedecendo s regras determinadas para qualquer outra tarefa da Engenharia. Este termo foi endossado pela Conferncia da OTAN sobre Engenharia de Software realizada em 1968 em Garmish na Alemanha. A concluso da conferncia foi que a Engenharia de Software deveria utilizar a filosofia e os paradigmas determinados pelas disciplinas da Engenharia para resolver a chamada Crise do Software, isto , o fato que a qualidade do software gerado geralmente inaceitavelmente baixa, alm de no conseguir obedecer aos prazos e custos estabelecidos [01].

A crise do software fica evidente ao longo da histria ao constatarmos a grande quantidade de acidentes causados por software e o prejuzo associado. Em 1962, um programador um erro de interpretao do programador de uma frmula matemtica escrita a mo levou uma trajetria defeituosa da nave Mariner I destinada ao planeta Vnus. Por questes de segurana, o sistema de autodestruio foi ativado cerca de 5 minutos aps o lanamento [02].

Escopo da Engenharia de Software

Acidentes Causados por Software


1962 Mariner I 1979 Comando Estratgico do Ar 1985 1987 Therac 25 1990 AT&T Telefones ficam mudos 1991 Msseis Patriot (Guerra do Golfo)

1996 Ariane 5
1998 USS Yorktown 1998 Satlite de Clima de Marte

1999 Y2K (Bug do Milnio)


2038 Bug do Ano 2038
prof. Gregorio Perez Peiro - Engenharia de Software

prof. Gregorio Perez Peiro

Engenharia de Software No dia 9 de Novembro de 1979, o Comando Estratgico do Ar (Departamento de Defesa dos EUA) recebeu um alerta da rede de computadores do sistema de monitoramento militar global que relatou um ataque de msseis soviticos contra os EUA. O que realmente aconteceu foi uma interpretao errada de um exerccio de simulao [01]. Um dos acidentes mais conhecidos causado por software ocorreu com o equipamento de radioterapia canadense Therac 25. Entre 1985 e 1987 pelo menos 6 pacientes receberam uma overdose de radiao de aproximadamente 100 vezes a dose normal. Destes, pelo menos dois morreram como conseqncia direta desta overdose. Causados pelo software do sistema de controle de dosagem (e por manuseio indevido dos operadores), este acidente se tornou um importante estudo de caso para sistemas de informtica ligada Medicina [02]. Um erro mecnico de chaveamento de um das centrais de retransmisso telefnica da AT&T (uma das maiores empresas de telefonia do mundo) nos EUA levou a central a desligar. Quando voltou a funcionar, enviou um sinal de desligamento para outra central que tambm desligou e enviou um sinal para a prxima central e assim por diante desativando toda rede e deixando os telefones mudos por 9 horas em 1990 impedindo 75 milhes de ligaes de serem completadas. Durante a guerra do golfo em 1991, um mssil Scud penetrou a barreira antimsseis Patriot e atingiu um campo na Arbia Saudita matando 28 pessoas e ferindo ouras 98. Um problema de sincronizao do sistema de lanamento dos msseis Patriot que no reiniciou os relgios de referncia. Este sistema havia sido projetado para trabalhar por algumas horas, mas durante a guerra funcionaram continuamente por mais de 100 horas. O software de correo foi levado ao sistema um dia depois do acidente [01]. Em setembro de 1997, durante uma manobra na costa dos EUA, um membro da tripulao do cruzador USS Yorktown inseriu um zero no sistema do navio causando uma diviso

Introduo por zero que derrubou a rede do navio deixando o cruzador deriva por 2 horas e 45 minutos. Em 4 de Junho de 1996 o foguete Ariane 5 foi lanado da Guiana Francesa pela Agncia Espacial Europia, aps um dcada de desenvolvimento que custou U$ 7 Bilhes. Carregando quatro satlites no valor de U$ 500 milhes em sua primeira viagem, o foguete explodiu cerca de 40 segundos aps o lanamento. O sistema de referncia inercial que determina a direo do foguete sofreu uma falha de software: um valor da velocidade horizontal em relao plataforma foi armazenado como um nmero de ponto flutuante de 64 bits e convertido em um nmero inteiro de 16 bits. O valor armazenado era maior que a capacidade convertida causando uma falha por exceo. Aparentemente, a agncia aeroespacial norte americana (NASA) tambm sofreu srios problemas com software. Em 30 de setembro de 1999, aps uma viagem de 286 dias da Terra para Marte, a sonda Mars Climate Orbiter acionou seus propulsores para executar a rbita de Marte, porm errou a entrada da atmosfera do planeta causando sua queda, destruio e um prejuzo de U$ 125 milhes. O problema foi causado porque um grupo de engenheiros utilizou uma unidade de medida (quilos), enquanto outra equipe utilizou outra unidade de medida (libras = 373,24 gramas). Nenhum problema causado por software ficou mais famoso que o Y2K ou bug do milnio. A representao do ano com apenas dois dgitos (98 ao invs de 1998, 99 ao invs de 1999 e assim por diante) falha em atualizar datas a partir do ano 2000, uma vez que estas datas precederiam as datas de 1999: Para o computador, o primeiro dia do ano de 2000 seria representado por 01/01/00 e, portanto, seria anterior ao ltimo dia do ano anterior representado por 31/12/99. Isto vlido para sistemas operacionais, banco de dados, ndices de pesquisa e muito mais. A soluo poderia ser simples: corrigir todos os programas executando na virada do ano . O pnico gerado pela possibilidade de pane em todos os sistemas informatizados do mundo levou muitas pessoas a acreditarem que este era o ltimo sinal do fim do prof. Gregorio Perez Peiro

Engenharia de Software mundo. Este problema gerou um custo acima U$ 300 bilhes! Este problema pode se repetir em 2038 (com menor custo, uma vez que no existe o estigma do fim do mundo). Os sistemas UNIX
Escopo de Engenharia de Software

Introduo armazenam datas em variveis de 32 bits que tero sua limitao de capacidade em 2038. A soluo trabalhada a converso dos sistemas para 64 bits [02]. A crise do software definida na conferncia da OTAN ainda est sobre ns depois de 40 anos. Isto significa que a idia da Engenharia de Software (pelo menos a idia original) deve conter alguma falha. Em um primeiro momento podemos considerar que esta idia significaria construir um software como, por exemplo, uma ponte ou um edifcio, porm este conceito j seria impossvel pela prpria natureza do produto e da atitude da comunidade que o utiliza.

Primeira Definio
O estabelecimento e uso dos princpios da

Engenharia a fim de obter software de baixo


custo que seja confivel e trabalhe com eficincia em mquinas reais
Fritz Bauer, 1969

Por que no construir um software como se fosse uma ponte ?

prof. Gregorio Perez Peiro - Engenharia de Software

Pontes caem raramente, mas quando caem, verifica-se o problema e, se a causa for de engenharia, algum responsabilizado. Tipicamente, a ponte redesenhada e reconstruda a partir do incio. Alm de ser alvo de um estudo que gera novas regras de segurana, outras pontes construdas da mesma forma so alvo de investigao e manuteno, quando necessrio. Ao contrrio, um software ter problemas considerado usual e pouco se faz para verificar o problema. Por exemplo, se um sistema operacional trava
Software

provvel que reiniciar o sistema resolva o problema (pelo menos temporriamente) e o custo tipicamente baixo: algumas horas de trabalho perdido e alguma informao que pode ser recuperada com uma simples poltica de backup. A manuteno outro fator que diferencia os dois. comum reescrever 50 % do cdigo durante o tempo de existncia deste, mas pouco provvel alterar 50% da estrutura de uma ponte enquanto ela est sendo usada ou girar a ponte 90 graus para melhorar seu desempenho. Em 1970, menos de 1 % da populao entendia o que significa um software de computador [03]. Atualmente, a maioria da populao entende seu significado, mesmo sem compreender o que realmente significa. Um software pode ser descrito formalmente como sendo um conjunto de Instrues que, quando executadas, produzem funo e desempenho desejados. Esta definio pode corresponder exatamente um programa de computador. Um software tambm pode ser considerado como uma Estrutura de Dados que possibilita que os programas manipulem adequadamente a informao ou pode ser relacionado aos Documentos que descrevem a operao e uso dos programas [03]. prof. Gregorio Perez Peiro

Caractersticas

O que um software ?

Instrues

Estrutura de Dados

Documentos

prof. Gregorio Perez Peiro - Engenharia de Software

Engenharia de Software Apesar das possveis similaridades no processo de obteno do software com relao ao hardware, estes dois elementos possuem diferenas marcantes que devem ser consideradas. Estas diferenas esto ligadas ao fato do software ser um componente lgico e, portanto, abstrato dentro do processo de desenvolvimento, enquanto o hardware um elemento concreto tendo um comportamento tangvel para as pessoas.
8

Introduo

Software x Hardware

Caractersticas

Software
Desenvolvido Se Deteriora Feito sob Medida

Hardware
Construdo Se Desgasta Feito com componentes existentes

Sistemas
Mais Especializado Maior

Menor Capacidade de Adaptao Mais Recursos para Manuteno


prof. Gregorio Perez Peiro - Engenharia de Software

Software x Hardware

Curva de Falhas
Hardware
Mortalidade Infantil Desgaste

As diferenas entre software e hardware se tornam especialmente visveis quando se compara as curvas de falhas de ambos que representa o comportamento esperado destes componentes ao longo de seu tempo de vida [03]. No incio da vida til de um hardware qualquer (carro, geladeira, etc...) espera-se uma grande quantidade de falhas associadas a defeitos de projeto ou manufatura e que podem ser corrigidas levando a uma estabilidade temporria, onde novas falhas no so encontradas e as falhas residuais so relativamente pequenas. reviso e garantia do produto. Naturalmente, o melhor momento de trocar o produto por um novo antecede imediatamente ao incio do aumento de falhas devidas ao desgaste. Ao contrrio de um hardware, um software no sofre com o meio ambiente e no se desgasta com seu uso de forma que a curva de falhas esperada deve apresentar o mesmo efeito de defeitos de projeto (defeitos iniciais no encontrados e que, espera-se, possam ser corrigidos), mas no um aumento de falhas no final de vida devido ao desgaste. Em outras palavras, espera-se que um software que possui poucas falhas residuais possa ser utilizado at se tornar obsoleto. Infelizmente, a curva ideal do software no uma representao do que realmente acontece. prof. Gregorio Perez Peiro

ndice de Falhas

Software Ideal
Mortalidade Infantil No h Desgaste

tempo
9 prof. Gregorio Perez Peiro - Engenharia de Software

Quando, em um projeto, verifica-se que estas falhas iniciais no podem ser corrigidas, o projeto abandonado levando a chamada mortalidade infantil. Aps um perodo de tempo em que o ndice de falhas estvel, novas falhas comeam a surgir devido ao desgaste das peas resultante de utilizao e exposio s intempries. Neste momento, uma manuteno das peas (troca de leo e vedaes, ajuste de parafusos, etc...) se torna necessria aumento o custo de utilizao do hardware em questo. Para um hardware adequadamente projetado conforme as normas de qualidade da Engenharia possvel estimar o tempo decorrido para a estabilizao e o aumento de falhas por desgaste permitindo s empresas estabelecer os tempos de

Engenharia de Software

Introduo

De fato, no incio de seu tempo de vida, podem ocorrer muitas falhas devidas ao projeto que podem ser corrigidas levando a um estado de estabilidade, porm, durante o seu tempo de vida, o software sofrer mudanas por inmeros motivos (novos sistemas operacionais, mudanas polticoeconmicas, atualizao de computadores, etc...). Cada vez que o software sofre uma mudana, novos defeitos so introduzidos levando a picos de falhas que devem ser corrigidos para atingir a estabilidade. Como estas mudanas no software so muito comuns, novos picos surgem antes que a estabilidade seja atingida e o resultado um incremento gradual do nvel mnimo de falhas existente [03].
Escopo da Engenharia de Software

Software x Hardware

Curva de Falhas
Software Real
Aumento de Falhas: Efeito das Mudanas

ndice de Falhas

Curva Real Mudanas Curva Ideal

tempo
10 prof. Gregorio Perez Peiro - Engenharia de Software

Nova Definio

A aplicao de uma abordagem sistemtica,

disciplinada e quantitativa para o


desenvolvimento, operao e manuteno do software

Concluso: Engenharia de Software

No Engenharia
11 prof. Gregorio Perez Peiro - Engenharia de Software

Considerando-se estas diferenas, chega-se a concluso que Engenharia de Software no Engenharia no senso usual dado a esta rea de estudos. Sem dvida esperada uma filosofia similar que defina uma abordagem que possa ser utilizada pelos desenvolvedores de software e que, portanto, seja sistemtica e disciplinada fornecendo uma orientao para as aes dos profissionais e que seja quantitativa para permitir contabilizar estas aes (custo, tempo e recursos).

Escopo da Engenharia de Software

reas Afins

Ento qual o papel do Engenheiro de Software dentro do Universo dos profissionais de informtica? Dentro do escopo do software, a Cincia da Computao estuda as diversas maneiras de se produzir um software. Algumas so boas, outras ms. Este profissional deve possuir grande conhecimento matemtico e mpeto por encontrar novas solues que um dia podero ser utilizadas em algum sistema. Assim, a Cincia da Computao se ocupa da teoria e dos fundamentos. prof. Gregorio Perez Peiro

Cincia da Computao Engenharia de Software

Sistemas de Informao
Tecnologia da Informao

12

prof. Gregorio Perez Peiro - Engenharia de Software

Engenharia de Software

Introduo

A Engenharia de Software estuda a tecnologia que engloba o processo, os mtodos e as ferramentas que sero utilizadas no desenvolvimento e fornecimento de software til. Mais do que orientar as pessoas a faz-lo correto, a Engenharia de Software est interessada apenas nas tcnicas que fazem sentido economicamente [01], dedicando-se aos problemas prticos da produo de software [04]. Simplificando, ela busca a melhor soluo tcnica economicamente vivel para a empresa interessada. A avaliao desta soluo no simples, uma vez que nem sempre o bvio melhor. Uma nova tecnologia pode permitir um maior desempenho do sistema, mas tambm ocasiona custos com Naturalmente, cada software tem caractersticas particulares que devem ser consideradas em seu projeto, assim como a tecnologia disponvel e a necessidade do usurio. Um software Bsico (de Sistema) so programas escritos para dar apoio a outros programas, como sistemas operacionais. Estes softwares devem possuir uma preocupao com a interface homem mquina e com o suporte ao desenvolvimento e operao de outros softwares.
13

treinamento e adaptao que podem acarreta prejuzos ou reduo de produtividade no sendo de interesse da empresa [01]. Novas tecnologias usualmente so inseridas de maneira incremental para reduzir tais custos. Tipicamente cabe ao profissional de Sistemas de Informao gerenciar a obteno de um sistema informatizado conforme as necessidades apresentadas pela empresa estruturando sua implantao e utilizao. Por ltimo, mas no menos importante, o profissional de Tecnologia da Informao ser o responsvel pela correta implantao, operao e manuteno das tecnologias definidas.
Software

Aplicaes

Bsico Tempo Real Comercial Cientfico ( e/ou de Engenharia) Inteligncia Artificial

Computador Pessoal
Embutido (Embarcado) Computao Distribuda

(Computao Ubqua e Computao em Nuvem)

prof. Gregorio Perez Peiro - Engenharia de Software

Software de Tempo Real tipicamente monitora, analisa e controla eventos do mundo real obedecendo a restries de tempo rgidas e, portanto, com a menor interveno humana possvel. So softwares de controle de sistemas crticos (como usinas) e sistemas multimdia. Enquanto Sistemas Comerciais tm um papel amplo na manipulao de dados para banco de dados e tomadas de decises administrativas, um software Cientfico (e Engenharia) caracterizado por algoritmos de processamento de nmeros e aplicaes de pesquisa que podem estar associadas pesquisa pura (Astronomia, Fsica, etc...) ou a cincia aplicada (como automao industrial).

Um dos ramos de mais destaque na informtica est associado ao uso da Inteligncia Artificial na construo de algoritmos no numricos para resolver problemas que no sejam favorveis computao ou anlise direta. Atualmente, grande interesse tem sido direcionado para facilitar o acesso dos recursos informatizados pelo usurio. O Computador Pessoal j possui uma importncia scioeconmica de destaque e est presente na vida da maioria das pessoas atravs de editores de texto, planilhas e software de entretenimento.

prof. Gregorio Perez Peiro

Engenharia de Software Para permitir o acesso em qualquer lugar, a computao mvel recebe ateno especial, atravs do estudo de softwares Embutidos (Embarcados) utilizados em equipamentos de recursos limitados, como celulares.

Introduo A garantia de acesso aos recursos tecnolgicos por qualquer dispositivo em qualquer lugar a qualquer momento a preocupao da Computao Ubqua (configurao do ambiente fsico) e da Computao em Nuvem (disponibilizao dos recursos), duas reas da Computao Distribuda e de pesquisa em Integrao de Sistemas.

Evoluo do Software

1950 a 1963

Hardware
Sem arquitetura definida

Em mudana contnua

Software
Arte secundria no sistemtica

Aplicaes Especficas
Distribuio Limitada Nenhuma Documentao

Voc escreve, voc roda e, se falhar, voc conserta

1950
14

1960

1970

1980

1990

2000

2010

prof. Gregorio Perez Peiro - Engenharia de Software

Evoluo do Software

1964 a 1980

Sistemas Comerciais
Multiprogramao e sistemas Multiusurio

Tcnicas Interativas
Tempo Real Banco de Dados Produto Software software houses

Manuteno quase impossvel

Crise do Software
1950
15

1960

1970

1980

1990

2000

2010

prof. Gregorio Perez Peiro - Engenharia de Software

Evoluo do Software

1980 a 1993

Arquitetura Cliente/Servidor e Usurio


Sistemas Distribudos

Redes Locais
Produtos Inteligentes (uso generalizado) Equipamento (Hardware) de baixo custo Interface Amigvel

Impacto do Consumidor

Computador Pessoal
1950
16

1960

1970

1980

1990

2000

2010

prof. Gregorio Perez Peiro - Engenharia de Software

prof. Gregorio Perez Peiro

Engenharia de Software

Introduo

Evoluo do Software

1993 a 2000

Alta Conectividade
Sistemas Desktop poderosos

Tecnologia Orientada a Objetos


Sistemas Especialistas Redes Neurais Artificiais Computao Paralela

Redes

Internet

1950
17

1960

1970

1980

1990

2000

2010

prof. Gregorio Perez Peiro - Engenharia de Software

Evoluo do Software

Atualmente

Mundo Virtual
Sistemas Desktop poderosos

Sistemas Integrados
ERP uma necessidade, no um luxo

Tecnologia Orientada a Servios Computao em Nuvem

Software
Livre Open Source

Web Services

Sem necessidade de arquitetura definida


1950
18

1960

1970

1980

1990

2000

2010

prof. Gregorio Perez Peiro - Engenharia de Software

Crise do Software

Uma Crise no Horizonte

Crise? Que Crise? A Engenharia de Software surgiu no final da dcada de 60 essencialmente para solucionar a chamada crise do software, porm aps quase 40 anos os problemas de desenvolvimento de software persistem e, apesar de todas as solues encontradas e sugeridas, no tem perspectiva de chegar ao fim. Esta crise se tornou evidente pelos resultados obtidos no desenvolvimento do software.

Prazo e Custo
Produtividade das Pessoas

Processos de Estimativa

Qualidade do Software
Confiabilidade, Desempenho e Segurana Qualidade de Conformidade

Software de Difcil Manuteno


Dependncia de Indivduos

19

prof. Gregorio Perez Peiro - Engenharia de Software

As estimativas de Prazo e Custo no conseguem ser obedecidas de modo que, em mdia, os projetos so entregues com 100 % de atraso e 100 % acima do oramento. Isto se deve ao fato de que a produtividade das pessoas no acompanha a

demanda pelos servios, alm de utilizarem processos de estimativa imprecisos. A Qualidade do software , por vezes, menos que adequada apresentando baixo desempenho, pouca confiabilidade e falhas de segurana. Alm prof. Gregorio Perez Peiro

10

Engenharia de Software desta baixa qualidade, grande parte dos softwares desenvolvidos ainda apresenta falta de conformidade com a especificao, no realizando as tarefas desejadas ou solicitadas. Finalmente, softwares existentes so de difcil Manuteno, tipicamente devido dependncia dos indivduos.

Introduo

A estes fatores conhecidos e estudados a fundo desde a dcada de 60 somam-se novos desafios como Usabilidade, Conectividade e Flexibilidade em uma era de Internet com acesso a todos.

Crise do Software

Quer dizer que a Engenharia de Software no obteve nenhum resultado? Esta impresso obtida uma vez que as falhas de software recebem mais publicidade do que as histrias de sucesso. Na verdade, a Engenharia de Software obteve grandes resultados, mas por si s no garantia de sucesso, necessitando comprometimento dos profissionais e empresas.
20

Causas

Carter do Software
Elemento lgico (no fsico) do sistema

Falhas dos Responsveis pelo Desenvolvimento


Resistncia a Mudanas

Mitos do Software
Propagao de desinformao e confuso

prof. Gregorio Perez Peiro - Engenharia de Software

Crise do Software

Mitos Administrativos Mito: Manual com todos os procedimentos disponveis suficiente. Realidade: Manuais raramente refletem a realidade do software e do usurio, so usualmente incompletos e, conseqentemente, raramente utilizados.

Mitos do Software

Causam da Propagao de Desinformao

Administrativos

Clientes
Desenvolvedor

21

prof. Gregorio Perez Peiro - Engenharia de Software

Mito: Possuir o estado da arte em ferramentas de desenvolvimento de software. Realidade: Apesar da importncia das ferramentas de desenvolvimento, a maioria das pessoas no tem domnio sobre elas, de forma que so utilizadas de maneira pobre. Alm disso, ter o melhor equipamento no garante atender a necessidade especfica da empresa.

Mito: Adicionar programadores para recuperar o atraso (Conceito da horda Mongol [02]). Realidade: Pessoas que so adicionadas a um projeto existente devem receber treinamento e instrues que s podem ser fornecidos pelos membros da equipe reduzindo o nmero de pessoas efetivamente trabalhando e, portanto, reduzindo a produtividade da equipe. Esta situao conhecida como Lei de Brook [05]:

prof. Gregorio Perez Peiro

11

Engenharia de Software Adicionar pessoal de programao a um projeto de software atrasado tem o efeito de atras-lo ainda mais Pessoas podem ser adicionadas a equipes, mas apenas de maneira coordenada e planejada. Mitos dos Clientes (O cliente nem sempre tem razo)
Mitos do Software

Introduo Mito: Declarao geral dos objetivos suficiente para comear. Realidade: Este o principal fator da falha do projeto de softwares. Cerca de 30 % dos projetos so cancelados antes da implantao por no terem as caractersticas desejadas pelos clientes. Estas caractersticas englobam desde interface at desempenho e devem ser definidas antes do incio do projeto. Mito: Requisitos do projeto mudam. Mudanas podem ser ajustadas, pois o software flexvel. Realidade: Os requisitos do sistema mudam, mas o impacto da mudana pode causar um custo muito alto. As mudanas realizadas em fases adiantadas do projeto podem ter um custo proibitivo.
60100 x

Impacto da Mudana

100 80 60 40 20 0

Definio Desenvolvimento Aps Lanamento

1x

1.5-6x

Fonte: Roger Pressman, Software Engineering; Fourth Edition, McGraw-Hill, 1997 [03]
22 prof. Gregorio Perez Peiro - Engenharia de Software

Mitos do Software

Mitos dos Desenvolvedores (O desenvolvedor tambm erra) Mito: Trabalho acaba quando o software entrar em funcionamento. Realidade: Entre 60% e 70% do trabalho de software realizado aps a primeira entrega do sistema para o cliente. Aps esta entrega, tipicamente comea o trabalho estipulado na fase de manuteno.
23

Custo de Cada Fase


Custo (%)
Requisitos 2% Anlise 5% Projeto 6% Codificao 5% Teste 7% Manuteno 67% Integrao 8%

Fonte: Stephen R. Schach; Object-Oriented and Classical Software Engineering; Fifth Edition, WCB/McGraw-Hill, 2002 [01]
prof. Gregorio Perez Peiro - Engenharia de Software

Mito: No h como avaliar a qualidade de um programa que no estiver em funcionamento. Realidade: As melhores tcnicas de garantia de qualidade so executadas na iniciao do projeto e podem ser utilizadas como filtro de qualidade e testes em componentes ainda no implementados.

Mito: A entrega de um projeto de sucesso a entrega de um programa funcionando Realidade: Um software em funcionamento apenas parte do sistema que deve incluir, alm dos dados, a documentao que servir de guia para a utilizao dos usurios e para manuteno do software. prof. Gregorio Perez Peiro

12

Engenharia de Software

Introduo

Algumas questes para auto-avaliao


1. O que Engenharia de Software e qual sua origem? 2. Engenharia de Software no Engenharia. Discuta. 3. Um fornecedor de ferramentas de 5. Atualmente, quais fatores levam a falha do desenvolvimento de um software? 6. Discuta 3 mitos do software. 7. Qual a diferena entre Engenharia de Software e Cincias da Computao? Em uma empresa, quem deve executar cada funo? 8. Considerando sua formao, qual ser o seu papel em sua empresa e quais sero suas possveis funes? 9. O custo da manuteno de um projeto relevante? Discuta.

produtividade est oferecendo um produto a baixo custo que permite desenvolver um software na metade do tempo que o produto que sua empresa est utilizando atualmente. Voc recomenda a compra do produto ? Justifique. 4. O que a Crise do Software? Comente.

Referncias
[01] Schach, S.R.; Classical and Object Oriented Software Engineering with UML and Java; 4th ed.; McGraw-Hill (1999) - http://www.mhhe.com/engcs/compsci/schach5/ [02] Acidentes de software (curiosidades da Internet) http://en.wikipedia.org/wiki/Mariner_1 http://en.wikipedia.org/wiki/USS_Yorktown_(CG-48) http://en.wikipedia.org/wiki/Mars_Climate_Orbiter www.cnn.com/TECH/space/9909/30/mars.metric/ http://en.wikipedia.org/wiki/Ariane_5 http://en.wikipedia.org/wiki/Y2k [03] R. Pressman; Software Engineering: A Practitioners Approach; 5a edio, Ed Mc Graw-Hill, 2000 (Traduo Engenharia de Software, 4a edio. Ed. Makron Books, 2002) [04] I. Sommerville; Engenharia de Software; 6 edio, Ed. Pearson (2003) www.aw.com/sommerville_br [05] F. Brooks; The Mythical Man-Month: Essays on Software Engineering; 2nd Edition; Ed. Addison-Wesley (1975, 1995)

prof. Gregorio Perez Peiro