Buscar

Engenharia de Software - Aula 2 - Introdução Engenharia de Software

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
Teoria de Engenharia de 
Software 
 
Aula 2 
Introdução à Engenharia de Software 
Prof. Rafael Targino 
rtargino@unicarioca.edu.br 
 
2 
O conteúdo desta aula foi parcialmente 
baseado nos slides disponíveis para os livros: 
Engenharia de Software 
Engenharia de Software – Uma Abordagem Profissional 
Roger S. Pressman, McGrawHill, 7a edição, 2011 
Engenharia de Software 
Ian Sommerville, Pearson, 9a edição, 2011 
 
2 
3 
Fazendo Um Programa Simples 
• Dada uma coleção de linhas de texto 
(“strings”) armazenadas em um arquivo, 
ordene-as alfabeticamente e escreva-as em 
outro arquivo. 
 
Engenharia de Software 
4 
Fazendo Um Programa Simples 
Madureira 
Tijuca 
Bangu 
Barra da Tijuca 
Copacabana 
Botafogo 
Ipanema 
Méier 
Rio Comprido 
Realengo 
Engenharia de Software 
Bangu 
Barra da Tijuca 
Botafogo 
Copacabana 
Ipanema 
Madureira 
Méier 
Realengo 
Rio Comprido 
Tijuca 
 
3 
5 
Os Softwares Comerciais e Corporativos 
estão muito além de programas como esse, 
seja em complexidade, seja no número de 
pessoas envolvidas 
Fazendo Um Programa Simples 
Madureira 
Tijuca 
Bangu 
Barra da Tijuca 
Copacabana 
Botafogo 
Ipanema 
Méier 
Rio Comprido 
Realengo 
Engenharia de Software 
Bangu 
Barra da Tijuca 
Botafogo 
Copacabana 
Ipanema 
Madureira 
Méier 
Realengo 
Rio Comprido 
Tijuca 
 
6 
O que é Software? 
• Software é: 
– Instruções (programas de computador) que, 
quando executadas, produzem a função e o 
desempenho desejados; 
– Estruturas de dados que permitem a manipulação 
das informações; 
– Documentos que descrevem a operação e uso dos 
programas. 
 
 
Engenharia de Software 
4 
7 
A Importância do Software 
• Durante as 3 primeiras décadas da era do 
computador, o principal desafio era 
desenvolver um HARDWARE de baixo custo 
e alto desempenho. 
• O hoje o desafio é melhorar a qualidade (e 
reduzir os custos) das soluções baseadas em 
SOFTWARE! 
Engenharia de Software 
Cliente 
Software Mobile 
O Software esta cada vez mais Pervasivo 
Internet das Coisas 
Banco de Dados 
Servidor 
Browser 
APIs dos Aplicativos 
BYOD 
Bring Your 
Own Device 
5 
9 
Exemplos de Softwares 
• Automação Bancária 
• Freqüência e Folha de Pagamento 
• Controle de Tráfego Urbano 
• Controle Acadêmico 
• Editoração de Jornais e Revistas 
• Controle de Elevadores 
• Automação de Biblioteca 
• Sistema de Alarme em Edificações 
 
Engenharia de Software 
10 
A Era da Informação 
Engenharia de Software 
Sociedade 
Industrial 
Sociedade da 
Informação 
1900 2000 
• Da Era Industrial para a Era da Informação 
6 
11 
Revolução Industrial: Primeira Onda 
• Ferro (Darby, 1709) 
• Máquina a vapor: 
– Inventada (Newcomen, 1712) 
– Aperfeiçoada (WATT, 1766 - ’69 -’82) 
• Mecanização da indústria têxtil: 
– Tear Mecânico (Kay, 1722) 
– Maquina de fiar (Hargreaves, 1764) 
• Aspectos sociais, políticos e econômicos 
– Têxteis, Carvão e Ferro 
 
Engenharia de Software 
12 
Revolução Industrial: Segunda Onda 
• Aço (Bessemel, 1856 e 1885 - Liga) 
• Locomotiva a Vapor (Rede de Transporte - 
1830) 
• Máquina de Costura (SINGER,1851) 
• Motor a combustão interna: 
– Primeiro eficiente (OTTO, 1876) 
– Produção automobilística em massa (Daimler e 
Benz, 1896) 
• Desemprego e fim da escravidão 
Engenharia de Software 
7 
13 
Revolução Industrial: Terceira Onda 
• Energia Nuclear (Fermi, 1942) 
• Uso Industrial/Comercial da Eletricidade 
• Computadores Eletrônicos (ENIAC 1946) 
• Transistor (Shockley, et al., 1948) 
 
Engenharia de Software 
14 
A Evolução do Software 
• Os primeiros anos (1950 a início dos 60) 
– Aplicações científicas e de engenharia 
• A segunda era (1960 a meados de 80) 
– Aplicações comerciais em grande-porte (sistemas de informação 
BD) 
• A terceira era (meados de 70 e década de 80) 
– Aplicativos pessoais em microcomputadores 
• A quarta era (meados de 80 a meados de 90) 
– Aplicativos com Interfaces Gráficas 
– Redes e Arquitetura Cliente-Servidor 
• A quinta era (de meados de 90 a ???) 
– Software Distribuídos, 
– Internet, Groupwares e Intranets 
• Sexta era?? 
– Computação Pervasiva, 
– Móvel e Ubíqua 
 Engenharia de Software 
8 
15 
Mudança de Paradigma 
• A mudança de uma sociedade industrial para 
uma baseada na informação é uma Radical 
Mudança Econômica: 
– Material tem menos valor e Informação tem mais 
valor 
 
• Antes: quanto menos pessoas possuísse algo, 
maior o valor. 
• Hoje: quanto mais pessoas possuem algo, maior o 
valor. 
 
 Engenharia de Software 
16 
Construindo Software 
• O software a ser construído pode ser de diversos 
tamanhos e complexidades... 
Engenharia de Software 
• Equipes Pequenas 
• Uma pessoa diz o que precisa 
• Duas pessoas entendem, 
programam e testam o 
software 
• Utilizado em trabalhos de 
faculdade e trabalhos free 
lancers para pequenos 
comércios 
9 
17 
Construindo Software 
• O software a ser construído pode ser de diversos 
tamanhos e complexidades... 
Engenharia de Software 
• Equipes Grandes 
• Diversas pessoas dizem o 
que querem 
– Nem sempre elas concordam 
entre si 
• Diversas pessoas 
entendem e documentam 
o seu entendimento 
– Nem sempre elas entendem 
de forma correta 
• Diversas pessoas programam e testam o software 
– Nem sempre elas programam o que realmente é o certo 
18 
Diferentes Níveis de Complexidade 
Engenharia de Software 
10 
19 
Outras Questões Importantes na 
construção de Softwares 
• Qual é o prazos para a construção? 
• Qual o tamanho da equipe? 
• Como as pessoas serão pagas? Como elas 
estão motivadas para este trabalho? 
• Como será o processo de implantação deste 
software, ou seja, o início da sua operação? 
• Quantos usuários irão utilizá-lo? 
• Como ocorrerá a manutenção do software? 
 
Engenharia de Software 
20 
Características do Software - 1 
• O Software é desenvolvido ou projetado por 
engenharia, não manufaturado no sentido 
clássico: 
– Custos são concentrados no trabalho de 
engenharia. 
– Projetos não podem ser geridos como projetos de 
manufatura. 
– “Fábrica de Software!” 
Engenharia de Software 
11 
21 
Características do Software - 2 
• Software não desgasta! 
– Software não é sensível aos problemas 
ambientais que fazem com que o hardware se 
desgaste. 
– Toda falha indica erro de projeto ou 
implementação 
• manutenção do SW é mais complicada que a do HW. 
Engenharia de Software 
22 
22 
Curva de Defeitos para o Hardware 
 
tempo 
“desgaste” “mortalidade 
infantil” 
 
índice 
de 
falhas 
Engenharia de Software 
12 
23 
23 
Curva de Defeitos para Software 
índice de 
falhas 
mudança 
curva real 
curva idealizada 
tempo 
Engenharia de Software 
24 
Características do Software - 3 
• A maioria dos softwares é feita sob medida e 
não montada a partir de componentes 
existentes. 
• Diferentemente do Hardware. 
• Situação esta mudando: 
– Orientação a objetos. 
– Reusabilidade é o “Santo Graal”(diminui custos e 
melhora projetos). 
Engenharia de Software 
13 
25 
Aplicações de Software 
Divisão sugerida por Pressman: 
• Software Básico 
• Software de Aplicação 
• Software de Tempo Real 
• Software Comercial 
• Software Científico ou de Engenharia 
• Software Embutido 
• Software de Computador Pessoal 
• Software de Inteligência Artificial• Aplicações para Web 
Engenharia de Software 
26 
Uma Crise no horizonte 
• A industria de Software tem tido uma “crise” 
que a acompanha há quase 30 anos: 
• Problemas não se limitam ao software que 
não funciona adequadamente, mas abrange: 
– desenvolvimento, testes, manutenção, 
suprimento, etc. 
Engenharia de Software 
14 
27 
Dificuldades na Construção de 
Software 
• Estimativas de prazo e de custo 
• Produtividade das pessoas 
• Qualidade de software 
• Software difícil de manter 
 
Engenharia de Software 
28 
Therac-25 
• Equipamento de Radioterapia. 
• Entre 1985 e 1987 se envolveu em 6 
acidentes, causando mortes por overdoses 
de radiação. 
• Software foi adaptado de uma antecessora, 
Therac-6: 
– falhas por falta de testes integrados 
– falta de documentação 
Engenharia de Software 
15 
29 
Denver International Airport 
• Custo do projeto: US$ 4.9 bilhões 
– 100 mil passageiros por dia 
– 1,200 vôos 
– 53 milhas quadradas 
– 94 portões de embarque e desembarque 
– 6 pistas de pouso / decolagem 
 
Engenharia de Software 
30 
Denver International Airport 
• Erros no sistema automático de transporte 
de bagagens 
– Atraso na abertura do aeroporto com custo total 
estimado em US$360 Milhões 
• 86 milhões para 
 consertar o sistema 
 
Engenharia de Software 
16 
31 
Ariane 5 
• Projeto da Agência 
Espacial Européia que 
custou: 
– 10 anos. 
– US$ 8 Bilhões. 
• Capacidade 6 toneladas. 
• Garante supremacia 
européia no espaço. 
 
Engenharia de Software 
32 
Vôo inaugural em 4/junho/1996 
Engenharia de Software 
• Explosão 40 segundos após a decolagem. 
• Destruição do foguete e carga avaliada em 
US$ 500 milhões. 
17 
33 
O que aconteceu? 
• O veículo detonou suas cargas explosivas de 
autodestruição e explodiu no ar. Por que? 
• Porque ele estava se quebrando devido às 
forças aerodinâmicas. Mas por que? 
• O foguete tinha perdido o controle de 
direção (atitude). Causa disso? 
• Os computadores principal e back-up deram 
shut-down ao mesmo tempo. 
• Ocorrera um run time error (out of range, 
overflow , ou outro) e ambos computadores 
se desligaram. 
 Engenharia de Software 
34 
Quais são os problemas? 
• A sofisticação do software ultrapassou nossa 
capacidade de construção. 
• Nossa capacidade de construir programas 
não acompanha a demanda por novos 
programas. 
• Nossa capacidade de manter programas é 
ameaçada por projetos ruins. 
Engenharia de Software 
18 
35 
Mitos do Software… …da Gerência 
 Manuais de Regras 
e Procedimentos 
resolvem os problemas 
 
 Ferramentas modernas 
de software e hardware 
são suficientes 
 Estamos atrasados… 
Vamos alocar 
mais gente ao projeto! 
Desatualizados, obsoletos 
O uso eficiente de 
ferramental exige 
conhecimento 
Custos de 
treinamento, 
gerência e 
entendimento do 
processo de trabalho 
Engenharia de Software 
36 
 Programa escrito 
e testado! 
Acabei! 
 Até que o programa 
esteja “rodando” não 
há como medir 
sua qualidade 
O único produto de um 
 projeto de software é o 
conjunto de programas 
Quanto mais cedo voce 
escrever o código, mais tempo 
irá demorar para completá-lo 
 
De 50 a 70 % do custo de 
produção de um software vai 
ser gasto para operacionalizá-
lo para o usuário 
Revisões anteriores à 
codificação 
Especificação, 
projeto, plano de 
trabalho 
Mitos do Software… …do Programador 
Engenharia de Software 
19 
37 
Uma lista de intenções (boas) 
é suficiente para começar 
a produzir o software 
Minhas necessidades vão mudar… 
Mas mudanças são fáceis de introduzir 
porque software é bastante flexível 
Custo de mudanças é 
muito alto A Especificação do 
Software é a fase mais 
crítica do processo 
 
Erros na fase inicial têm 
um custo muito alto de 
correção 
Mitos do Software… …do Cliente 
Engenharia de Software 
38 
Custo de Mudanças 
Custo 
1x 
1,5 
a 
5X 
60 
a 
100 
X 
Definição Projeto Manutenção 
Fase 
Crítica 
Engenharia de Software 
20 
Engenharia de Software 
40 
A Crise de Software 
• Causas 
– Introdução de erros no processo 
• Má especificação 
• Mau projeto 
• Má implementação 
• Testes incompletos ou mal feitos 
– Problemas na comunicação homem-máquina 
– Problemas na gerência 
• Falta de treinamento em novas técnicas de 
desenvolvimento 
• O processo está evoluindo muito rapidamente em 
função do aprendizado. É necessário reciclar 
Engenharia de Software 
21 
41 
Problemas 
• Complexidade 
– Especificar sistemas é uma atividade bastante complexa. Não se 
trata apenas de fazer uns “programinhas”. 
• Insatisfação dos usuários 
– usuários sentem-se frustrados com sistemas difíceis de serem 
operados e/ou cujo desenvolvimento se prolonga por vários anos. 
– usuário precisa de sistemas funcionando de acordo com suas 
necessidades 
 
“O valor de um sistema está em atender com 
precisão as necessidades de seus usuários.” 
Engenharia de Software 
42 
Problemas 
• Produtividade 
– Costuma estar quase sempre aquém do desejado. 
– Freqüentemente, a alocação de recursos e 
atividades são desbalanceadas. 
– Algumas questões recebem consideração 
demasiada, enquanto outras são 
insuficientemente consideradas. 
– Custos, tempo e recursos geralmente são 
subestimados 
 
Engenharia de Software 
22 
43 
Problemas 
• Confiabilidade do Sistema 
– Há diversas estatísticas que provam a pouca 
confiabilidade de boa parte dos sistemas. 
– depende do uso de métodos que possam garantir 
uma boa qualidade do produto construído 
– Não basta que o sistema produza resultados 
solicitados pelo usuário. Mas que também tenha o 
desempenho adequado. 
 
“Não é suficiente que o sistema seja eficiente. É 
necessário ainda que ele seja eficaz” 
 
 
 
Engenharia de Software 
44 
Problemas 
• Manutenibilidade 
– Facilidade de se modificar um sistema para 
adaptar-se a circunstâncias novas, inexistentes à 
época da implantação. 
– Sistemas recentemente implantados são 
substituídos por novos, devido ao alto custo para 
sua manutenção 
 
 
Engenharia de Software 
23 
45 
Problemas 
• Porque leva tanto tempo para terminar 
programas e sistemas? 
• Porque os custos são tão altos? 
• Porque temos dificuldade de medir o 
progresso do desenvolvimento do 
software? 
• Porque não conseguimos detectar todos 
os erros antes de entregar o software 
aos nossos clientes? 
• Porque os usuários estão sempre 
insatisfeitos com o software entregue? 
Engenharia de Software 
46 
Precisamos de uma Discipl ina que 
auxil ie na construção e manutenção 
de software 
Engenharia de Software 
24 
47 
O que é Engenharia de Software 
• “Engenharia de Software é a aplicação de 
uma abordagem sistemática, disciplinada e 
quantificável ao desenvolvimento, 
operação e manutenção de software” 
 IEEE Std 610.12 (1990) 
 
Engenharia de Software 
Desenvolvimento Manutenção 
Ciclo de Vida de Projeto de Software 
Operação 
48 
O que é Engenharia de Software 
Engenharia de Software 
• Trata do desenvolvimento no sentido mais 
amplo, que é do processo de 
desenvolvimento de software 
Análise de 
Requisitos 
Projeto de 
Sistemas 
Codificação Testes 
Processo de Desenvolvimento de Software 
Gerência de Projeto de Software 
25 
49 
Processos de Desenvolvimento de 
Software sempre devem buscar o 
equilíbrio entre a eficiência e a 
culturada organização 
Engenharia de Software 
50 
Resumindo até Aqui 
Engenharia de Software 
• Uma organização precisa de um Software 
também chamado de Sistema de Informação 
para automatizar suas operações 
26 
51 
Resumindo até Aqui 
• A empresa decide comprar ou construir este 
Sistema de Informação 
– Difícil de especificar 
– Difícil de prever o prazo e o custo com precisão 
– Alto grau de risco 
Engenharia de Software 
52 
Questões de Concurso 
• Sobre a engenharia de software, considere: 
I. Atualmente todos os problemas na construção de software 
de alta qualidade no prazo e dentro do orçamento foram 
solucionados. 
II. Ao longo dos últimos 50 anos, o software evoluiu de um 
produto de indústria para um ferramental especializado em 
solução de problemas e análise de informações específicas. 
III. Todo projeto de software é iniciado por alguma 
necessidade do negócio. 
IV. O intuito da engenharia de software é fornecer uma 
estrutura para a construção de software com alta qualidade. 
Está correto o que consta em 
 a) III e IV, somente. 
 b) II e III, somente. 
 c) I, II e IV, somente. 
 d) II, III e IV, somente. 
 e) I, II, III e IV. 
 Engenharia de Software 
27 
53 
Questões de Concurso 
• Sobre a engenharia de software, considere: 
I. Atualmente todos os problemas na construção de software 
de alta qualidade no prazo e dentro do orçamento foram 
solucionados. 
II. Ao longo dos últimos 50 anos, o software evoluiu de um 
produto de indústria para um ferramental especializado em 
solução de problemas e análise de informações específicas. 
III. Todo projeto de software é iniciado por alguma 
necessidade do negócio. 
IV. O intuito da engenharia de software é fornecer uma 
estrutura para a construção de software com alta qualidade. 
Está correto o que consta em 
 a) III e IV, somente. 
 b) II e III, somente. 
 c) I, II e IV, somente. 
 d) II, III e IV, somente. 
 e) I, II, III e IV. 
 Engenharia de Software 
54 
Engenharia de Software ainda é uma 
área muito nova 
• Tema relativamente novo no sentido do 
termo Engenharia de Software, causando 
muitas discordâncias de conceitos 
consensualmente aceitos, necessitando 
ainda de efetivas normas norteadoras do 
assunto. Nesse sentido, a sociedade ainda 
demanda de profissionais capacitados para 
elevar o software em termos de sistemas 
organizacionais, contribuindo de fato com as 
organizações modernas, sejam privadas ou 
públicas. 
 
Engenharia de Software 
28 
55 
Avanços na Engenharia de Software 
 
• Aparecimento da UML como padrão para a 
descrição de sistemas orientados a objetos. 
• Desenvolvimento de métodos ágeis, como o 
Extreme Programming e Scrum 
– Desenvolvimento rápido de sistemas. 
– Envolvimento dos usuários na equipe. 
– Redução de documentos e burocracia no processo 
de software. 
 
Engenharia de Software 
56 
Engenharia de Software X Engenharia Civil 
• Porque pontes são geralmente construídas a tempo 
e a um custo conhecido... 
 e softwares raramente os são? 
• 3000 anos de experiência a mais 
• Engenharia Civil: Clara separação entre 
especificação e execução 
• Especificação detalhada antes de “colocar a mão na 
massa” 
• Uma vez que a especificação é aceita, pouco se 
pode fazer para alterar 
• Terrenos não estão constantemente mudando 
Engenharia de Software 
29 
57 
Engenharia de Software X Engenharia Civil 
• Engenharia de Software: a especificação faz parte 
da execução 
• Códigos fontes são também especificações 
• Tendência a clientes solicitar mudanças 
constantemente 
• Em negócios, mudança é uma necessidade 
• Conclusão: Projetos de software possuem maiores 
riscos e devem ser gerenciados com atenção voltada 
às mudanças 
 
Engenharia de Software 
58 
Perguntas que Engenharia de 
Software quer responder: 
• Porque demora tanto para concluir um 
projeto (não cumprimos prazos)? 
• Porque custa tanto (uma ordem de 
magnitude a mais)? 
• Porque não descobrimos os erros antes de 
entregar o software ao cliente? 
• Porque temos dificuldade de medir o 
progresso enquanto o software está sendo 
desenvolvido? 
Engenharia de Software 
30 
59 
Causas Óbvias 
• Não dedicamos tempo para coletar dados 
sobre o desenvolvimento do software - 
resulta em estimativas “a olho”. 
• Comunicação entre o cliente e o 
desenvolvedor é muito fraca. 
• Falta de testes sistemáticos e completos. 
Engenharia de Software 
60 
Causas menos Óbvias 
• O Software é desenvolvido ou projetado por 
engenharia, não manufaturado no sentido 
clássico (característica 1) 
• Gerentes sem background em 
desenvolvimento de software 
• Profissionais recebem pouco treinamento 
formal 
• Falta investimento (em Engenharia de 
Software) 
• Falta métodos e automação 
Engenharia de Software 
31 
61 
Elementos da Engenharia de Software 
Engenharia de Software 
62 
Papéis Envolvidos na Construção de 
Software 
Usuário 
Cliente 
Analista de 
Negócio 
Gerente de 
Produto 
Engenharia de Software 
Testador 
Analista de 
Sistema Programador 
Desenvolvedor 
32 
63 
O Negócio – Sistema para Chamar Táxi 
Engenharia de Software 
64 
O Negócio – Sistema para Chamar Táxi 
Engenharia de Software 
Pessoas querendo 
pegar um Táxi 
Eles fazem o 
download do 
aplicativo 
Chamam o Táxi 
usando a 
localização do GPS 
Passageiro 
acompanha o 
deslocamento do 
Táxi 
O taxista aceita a 
corrida e a 
localização do 
cliente é enviada 
Taxistas são 
avisados sobre os 
passageiro 
33 
65 
Requisitos de Negócio 
• Uma condição ou capacidade necessária que 
o software deve possuir para que o usuário 
possa resolver um problema ou atingir um 
objetivo 
 
• Expressam as características e restrições do 
produto de software do ponto de vista de 
satisfação das necessidades do usuário 
Engenharia de Software 
66 
Exemplos de Requisitos 
• O sistema deve calcular o salário do 
funcionário considerando as suas faltas e 
todos os impostos devidos 
• O sistema deve permitir que o usuário emita 
seus pedido de compra diretamente 
• O sistema deve possuir a possibilidade de 
aprovação de pedidos de empréstimo por 
parte do analista de crédito 
• O sistema deve permitir que os fornecedores 
incluam os preços dos seus produtos por 
uma interface via Internet 
Engenharia de Software 
34 
67 
Exemplos de Requisitos 
• O sistema deve fornecer informações sobre 
todas as ações executadas por seus usuários 
em qualquer período de tempo 
• O sistema deve estar integrado com o 
sistema do Banco Central 
• O sistema deve oferecer ao clinte a compra 
menos custosa segundo as suas 
configurações 
• O sistema deve gerar relatórios sobre 
vendas por período, evidenciando os 
parâmetros de avaliação dos envolvidos 
Engenharia de Software 
68 
Requisitos 
Engenharia de Software 
Usuário queria uma 
escada assim 
Usuário recebeu uma 
escada assim 
35 
69 
Requisitos 
Engenharia de Software 
Poderia ser pior... 
70 
 
36 
71 
Para escolha de um Ciclo de Vida de 
software: 
• Natureza do projeto e da aplicação 
• Métodos e ferramentas a serem usados 
• Controles e produtos que precisam ser 
entregues 
 
Engenharia de Software 
Foco em Qualidade 
Processo 
Métodos 
Ferramentas 
72 
Processos 
• Processos: constituem o elo de ligação entre 
os métodos e ferramentas 
– Sequencia em que os métodos serão aplicados 
– Produtos que se exige que sejam entregues 
– Controles que ajudam assegurar a qualidade e 
coordenar as alterações 
– Marcos de referência quepossibilitam administrar 
o progresso do software. 
 
Engenharia de Software 
37 
73 
Métodos 
• Métodos: proporcionam os detalhes de 
como fazer para construir o software 
– Planejamento e estimativa de projeto 
– Análise de requisitos de software e de sistemas 
– Projeto da estrutura de dados 
– Algoritmo de processamento 
– Codificação 
– Teste 
– Manutenção 
 
Engenharia de Software 
74 
Ferramentas 
• Ferramentas: dão suporte automatizado aos 
métodos 
– Existem atualmente ferramentas para sustentar 
cada um dos métodos 
– Ferramentas integradas estabelecem um sistema 
de suporte ao desenvolvimento de software 
chamado CASE - Computer Aided Software 
Engineering 
 
Engenharia de Software 
38 
75 
Elementos da Engenharia de Software 
1. Coloque em uma panela funda o 
leite condensado, a margarina e 
o chocolate em pó. 
2. Cozinhe [no fogão] em fogo 
médio e mexa sem parar com 
uma colher de pau. 
3. Cozinhe até que o brigadeiro 
comece a desgrudar da panela. 
4. Deixe esfriar bem, então unte as 
mãos com margarina, faça as 
bolinhas e envolva-as em 
chocolate granulado 
 
Engenharia de Software 
Fonte: material de aula do Prof. Leonardo Murta 
O que é 
método, 
processo e 
ferramenta? 
76 
Elementos da Engenharia de Software 
1. Coloque em uma panela funda o 
leite condensado, a margarina e 
o chocolate em pó. 
2. Cozinhe [no fogão] em fogo 
médio e mexa sem parar com 
uma colher de pau. 
3. Cozinhe até que o brigadeiro 
comece a desgrudar da panela. 
4. Deixe esfriar bem, então unte as 
mãos com margarina, faça as 
bolinhas e envolva-as em 
chocolate granulado 
 
Engenharia de Software 
Fonte: material de aula do Prof. Leonardo Murta 
Ferramenta 
Método 
Processo 
39 
77 
Processo de Desenvolvimento de 
Software 
Engenharia de Software 
Análise de 
Requisitos 
Projeto de 
Sistemas 
Codificação Testes 
Processo de Desenvolvimento de Software 
78 
Análise de Requisitos 
• Identificar 
– desejos, intenções, 
procedimentos atuais e dados; 
 
• Organizá-los de forma coerente 
 
• Definir de uma forma geral 
– o que será tratado pelo software 
– interface com o que fica de fora 
do software 
 
• Entendimento e Representação 
– Domínio do problema 
– Conceitos 
– Funcionalidades 
– Casos de uso 
 
 
Desejos 
Intenções 
Procedimentos 
Dados 
Requisitos 
do 
Software 
Engenharia de Software 
40 
79 
Projeto de Software 
Requisitos 
do 
Software 
Arquitetura Interfaces 
Estrutura 
de 
Dados 
Detalhes 
dos 
Procedimentos 
Projeto 
do 
Software 
• Projetar o Software 
– Arquitetura 
– Interfaces 
– Estrutura de Dados 
– Procedimentos 
 
• Independente da Tecnologia 
onde será “encarnado” o 
software 
Engenharia de Software 
80 
Construção do Código 
• Implementação 
 
– Programação do código 
• Tecnologia 
– linguagem 
– ambiente 
– etc 
Arquitetura Interfaces 
Estrutura 
de 
Dados 
Detalhes 
dos 
Procedimentos 
Projeto 
do 
Software 
Código 
Software 
Engenharia de Software 
41 
81 
Testes 
• Estou construindo um sistema correto? 
• Estou construindo o sistema certo? 
 
• Teste de código 
• Teste de sistema 
• Testes com usuários 
 
Engenharia de Software 
82 
Relembrando a definição geral da 
Engenharia de Software 
• “Engenharia de Software é a aplicação de 
uma abordagem sistemática, disciplinada e 
quantificável ao desenvolvimento, 
operação e manutenção de software” 
 IEEE Std 610.12 (1990) 
 
Engenharia de Software 
Desenvolvimento Manutenção 
Ciclo de Vida de Projeto de Software 
Operação 
42 
83 
Implantação do Software 
• Pôr o Software em operação 
 
– Entrada de dados 
– Conversões de dados 
– Treinamento de operadores 
– Disponibilização de Manuais 
– Suporte à operação 
• Help Desk 
– Acompanhar 
 
• Também chamado de 
Ambiente de Produção 
Software 
Software 
Dados Conversões 
Pronto para operar 
Engenharia de Software 
84 
Manutenção do Software 
• Manutenção 
– Tipos 
• Corretiva 
• Novos Requisitos 
• Novas Tecnologias 
 
– Alto Custo 
• Podem requerer 
mudanças nas 
fases iniciais do 
desenvolvimento 
 
Software 
Em Operação 
Erros 
Software 
Nova Versão 
Requisitos 
Engenharia de Software 
43 
Engenharia de Software 
86 
Questões de Concurso 
• A Engenharia de Software é uma disciplina da engenharia que 
se ocupa de todos os aspectos da produção de software, desde 
os estágios iniciais de especificação do sistema até a 
manutenção do mesmo. A Engenharia de Software adota 
métodos de engenharia de software que 
a) são um conjunto de atividades, cuja meta é o desenvolvimento ou 
a evolução do software. 
b) são uma representação simplificada de um processo de software, 
apresentada a partir de uma perspectiva específica. 
c) são abordagens estruturadas para o desenvolvimento de software, 
que incluem modelos de sistemas, notações, regras, recomendações 
de projetos e diretrizes de processos. 
d) se ocupam da teoria e dos fundamentos de desenvolvimento de 
software. 
e) se ocupam de todos os aspectos relacionados ao desenvolvimento 
de sistemas com base em computadores, incluindo hardware, 
software e engenharia de processos. 
 Engenharia de Software 
44 
87 
Questões de Concurso 
• A Engenharia de Software é uma disciplina da engenharia que 
se ocupa de todos os aspectos da produção de software, desde 
os estágios iniciais de especificação do sistema até a 
manutenção do mesmo. A Engenharia de Software adota 
métodos de engenharia de software que 
a) são um conjunto de atividades, cuja meta é o desenvolvimento ou 
a evolução do software. 
b) são uma representação simplificada de um processo de software, 
apresentada a partir de uma perspectiva específica. 
c) são abordagens estruturadas para o desenvolvimento de software, 
que incluem modelos de sistemas, notações, regras, recomendações 
de projetos e diretrizes de processos. 
d) se ocupam da teoria e dos fundamentos de desenvolvimento de 
software. 
e) se ocupam de todos os aspectos relacionados ao desenvolvimento 
de sistemas com base em computadores, incluindo hardware, 
software e engenharia de processos. 
 Engenharia de Software

Continue navegando