Académique Documents
Professionnel Documents
Culture Documents
Software
Profª Joslaine Cristina Jeske de Freitas
Roteiro
Ementa
Objetivos
Agenda de aulas
Avaliações
Visão Geral da Engenharia de Software
Ementa
Plano de curso
2011-1
Ementa
Visão geral da engenharia de software, suas
subáreas, objetivos, desafios e propostas
correntes.
Dificuldades essenciais e acidentais da
Engenharia de Software.
Caracterização de software (produto).
Ementa
Processos do Ciclo de
Vida do software.
Gerência de projetos de software.
Ementa
Garantia da Qualidade de software.
Gerência de configuração de software.
Paradigmas de Desenvolvimento e
Manutenção de software.
Ementa
Teste de software.
Ferramentas de apoio à Engenharia de
Software (CASE).
Considerações práticas: métodos e técnicas
para Engenharia de Software.
Roteiro
Ementa
Objetivos
Agenda de aulas
Avaliações
Visão Geral da Engenharia de Software
Objetivos
Plano de curso
2011-1
Objetivos
Capacitar o aluno a lidar adequadamente
com os conceitos da Engenharia de
Software e da Análise de Sistemas.
Roteiro
Ementa
Objetivos
Agenda de aulas
Avaliações
Visão Geral da Engenharia de Software
Agenda de Aulas
Plano de curso
2011-1
Agenda de Aulas
Horário:
◦ Segunda-feira: 15:30 as 18:00 ( de 15 em 15
dias)
◦ Quarta-feira: 9:30 as 11:10
◦
ou
◦
◦ Segunda-feira: 15:30 as 18:00 ( de 15 em 15
dias)
◦ Quarta-feira: 9:30 as 11:10
◦ Quinta-feira: 15:30 as 17:10
◦
◦
Roteiro
Ementa
Objetivos
Agenda de aulas
Avaliações
Visão Geral da Engenharia de Software
Avaliações
Plano de curso
2011-1
Avaliações
3 provas e 1 seminário.
Sendo a média final obtida pela média
aritmética simples das 4 notas
Provas
Datas a serem discutidas
O conteúdo das provas não é cumulativo
Provas serão individuais e sem consulta
Seminário
Instruções
Roteiro
Ementa
Objetivos
Agenda de aulas
Avaliações
Visão Geral da Engenharia de Software
Roteiro
Ementa
Objetivos
Agenda de aulas
Avaliações
Seminários
Visão Geral da Engenharia de Software
Visão geral da
engenharia de
software
Pfleeger
cap. 1
Introdução
Software no dia a dia – facilita nossa tarefa.
Exemplos: - torradeira, microondas,
fornecimento de energia elétrica, bancos –
pagamento eletrônico.
O software está presente em todos os
aspectos de nossa vida.
Boas práticas de engenharia de software
devem assegurar que o software tenha
uma contribuição positiva em nossas
vidas.
Engenharia de Software 22
O que é engenharia de
software
Utilizar conhecimento sobre computadores e
computação par ajudar a resolver
problemas.
Engenharia de Software 23
Resolvendo problemas
A maioria dos problemas é grande e,
algumas vezes, difícil de se resolver. Sendo
assim, devemos começar a investigação
analisando o problema, isto é, dividindo-o
em partes que sejamos capazes de
entender e manipular.
Engenharia de Software 24
Processo de análise
Problema
Engenharia de Software 25
O processo de síntese
Solução 1 Solução 2 Solução 4
Solução 3
SOLUÇÃO
Engenharia de Software 26
Resolvendo problemas
Método ou técnica: é um procedimento
formal para produzir algum resultado.
Ferramenta: é um instrumento ou sistema
automatizado utilizado para realizar uma
tarefa da melhor maneira.
Procedimento: é como uma receita – a
combinação de ferramentas e técnicas que
em harmonia produzem um resultado
específico.
Paradigma: ele representa uma abordagem
ou filosofia em particular para a construção
de software.
Engenharia de Software 27
Qual o papel do
engenheiro de software?
Trata o computador como uma ferramenta
na solução de problemas.
Trabalha com as funções do computador
como parte de uma solução geral, não com
a estrutura ou a teoria da computação em
si.
Engenharia de Software 28
Qual tem sido nosso grau
de sucesso?
Produtos de software não estão isentos de
problemas. Freqüentemente os sistemas
funcionam, mas não exatamente como se
esperava.
Existe uma enorme diferença entre um erro em
um projeto feito para uma disciplina na
universidade do erro em um grande sistema de
software.
Alguns defeitos simplesmente causam
aborrecimentos, outros custam bastante tempo
e dinheiro. Outros podem ameaçar a vida de
pessoas.
Engenharia de Software 29
Terminologia para
descrever bugs
Defeito: ocorre quando uma pessoa comete um
engano, chamado de erro, na realização de
alguma atividade relacionada a um software.
Falha: é uma divergência entre o
comportamento requerido para o sistema e o
comportamento real.
Portanto, um defeito é uma visão interna do
sistema, observada pelo ponto de vista dos
desenvolvedores, enquanto uma falha é vista a
partir de um referencial externo ao sistema.
Nem todo defeito corresponde a uma falha.
Engenharia de Software 30
O que é um bom
software?
Perspectivas de Garvin sobre qualidade
Visão transcendental: algo que podemos
reconhecer, mas não definir.
Visão do usuário: conveniência para
propósito pretendido
Visão do fabricante: conformidade com
especificação
Visão do produto: relação com as
características inerentes ao produto
Visão do mercado: dependência de
quanto os consumidores estão dispostos a
pagar
Engenharia de Software 31
Qualidade do produto
Construção de modelos.
Exemplo do primeiro modelo de qualidade
( McCall)
Correção
Confiabilidade
Eficiência
Integridade
Usabildiade
Manutenibilidade
Testabilidade
Flexibilidade
Portabilidade
Reutilizabilidade
Interoperabilidade
Engenharia de Software 32
Qualidade do processo
Modelar o processo de desenvolvimento
permite examinar o processo e aprimorar o
produto.
◦ CMM
◦ ISO 9000
◦ SPICE
Engenharia de Software 33
Quem faz a engenharia de
software?
Cliente: é a empresa, organização ou
pessoa que está pagando para o sistema
de software ser desenvolvido.
Desenvolvedor é a empresa, organização
ou pessoa que está construindo o sistema
de software para o cliente.
Usuário é pessoa, ou pessoas que
realmente utilizarão o sistema.
Engenharia de Software 34
Uma abordagem de
sistemas
Elementos de um sistema
Atividades e objetos:
◦ Atividade: é algo que acontece em um
sistema. Geralmente descrita como um
evento iniciado por um gatilho.
◦ Objetos ou entidades: são os elementos
envolvidos nas atividades.
Relações e fronteiras do sistema.
Sistemas inter-relacionado
Engenharia de Software 35
Uma abordagem de
engenharia
Identificar e analisar os Análise e definição
requisitos
Produzir e documentar dos requisitos
todo o projeto Projeto do sistema
Detalhar as
especificações Projeto do
Identificar e projetar os programa
componentes Escrever os
Construir cada
componente programas
Testar cada componente Testes das unidades
Integrar os componentes
Fazer as modificações
Teste de integração
finais Teste do sistema
Manutenção contínua Entrega do sistema
Manutenção
Construindo uma casa
Construindo um sistema
Engenharia de Software 36
Fatores-chave que mudaram a prática
da engenharia de software
(Wasserman)
Aspecto crítico do tempo para entrega do
produto ao mercado, no caso de produtos
comerciais
Mudanças na economia da computação
(redução dos custos de hardware e aumento
nos custos de desenvolvimento e
manutenção)
Disponibilidade poderosa da computação em
desktops
Aumento das redes locais e remotas
Disponibilidade e adoção da tecnologia
orientada a objetos
Uso de interfaces gráficas
Imprevisibilidade do modelo de
desenvolvimento de software cascata
Engenharia de Software 37
Disciplina de engenharia
de software de Wasserman
Abstração
Métodos e notações de análise e projeto
Protótipo da interface com o usuário
Arquitetura de software
Processo de software
Reuso
Medição
Ferramentas e ambientes integrados
Engenharia de Software 38
Abstração
Engenharia de Software 39
Métodos e notações de
análise e projeto
Métodos e notações nos oferecem mais do
que um meio de comunicação. Eles nos
permitem construir modelos e avaliar a
completeza e a consistência.
Engenharia de Software 40
Protótipo da interface com
o usuário
A criação de um protótipo significa construir
uma pequena versão de um sistema,
geralmente com funcionalidade limitada
que pode ser utilizada para
◦ Ajudar o usuário ou cliente a definir os principais
requisitos de um sistema
◦ Demonstrar a viabilidade do projeto ou de uma
abordagem.
Engenharia de Software 41
Arquitetura de software
A arquitetura de sistemas descreve o
sistema em termos de um conjunto de
unidades arquitetônicas e um mapa de
como essas unidades se relacionam entre
si.
Modos de dividir o sistema em unidades:
◦ Decomposição modular
◦ Decomposição orientada a dados
◦ Decomposição orientada a eventos
◦ Projeto de fora para dentro
◦ Projeto orientado a objetos.
◦
Engenharia de Software 42
Processo de software
A organização e disciplina com que as
atividades são realizadas contribuem para
a qualidade do software e para a rapidez
de seu desenvolvimento.
Engenharia de Software 43
Reuso
As vezes é mais fácil construir um pequeno
componente do que procurar por um em um
repositório de compoennetes reutilizáveis
É necessário tempo extra para se construi um
componente geral o bastante para ser utilizado por
outros desenvolvedores no futuro
É difícil documentar o grau de segurança e teste de
qualidade que foi feito de modo que outro usuário
em potencial possa se sentir tranqüilo sobre a
qualidade do componente
Não fica muito claro quem é o responsável por sua
atualização ou no caso de um componente
reutilizável apresentar falha.
Muitas vezes existe um conflito entre generalidade e
especificidade
Engenharia de Software 44
Medição
A medição quantifica onde e o que podemos
aprimorar, descrevemos nossas ações e
suas conseqüências em uma linguagem
matemática, o que nos permite avaliar
nosso progresso.
Engenharia de Software 45
Ferramentas e ambientes
integrados
Integração da plataforma
Integração da apresentação
Integração do processo
Integração de dados
Integração de controle
Engenharia de Software 46
Falhas Famosas de
Software
Engenharia de Software 47
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 48
Denver International
Airport
Engenharia de Software 49
Denver International
Airport
Engenharia de Software 50
Ariane 5
Engenharia de Software 51
Ariane 5
Projeto da Agência
Espacial Européia
que custou:
◦ 10 anos.
◦ US$ 8 Bilhões.
Capacidade 6
toneladas.
Garantiria supremacia
européia no espaço.
Engenharia de Software 52
Vôo inaugural em
4/junho/1996
Engenharia de Software 53
Resultado
Explosão 40
segundos após a
decolagem.
Destruição do
foguete e carga
avaliada em US$
500 milhões.
Engenharia de Software 54
O que aconteceu? (I)
Fato: o veículo detonou suas cargas
explosivas de autodestruição e explodiu no
ar. Por quê?
Porque ele estava se quebrando devido às
forças aerodinâmicas. Mas por que?
O foguete tinha perdido o controle de
direção (altitude). Causa disso?
Os computadores principal e back-up deram
shut-down ao mesmo tempo.
Engenharia de Software 55
O que aconteceu? (II)
Por que o Shut-down? Ocorrera um run time
error (out of range, overflow , ou outro) e
ambos computadores se desligaram. De
onde veio este erro?
Um programa que convertia um valor em
ponto flutuante para um inteiro de 16 bits
recebeu como entrada um valor que
estava fora da faixa permitida.
Engenharia de Software 56
Ironia...
O resultado desta conversão não era mais
necessário após a decolagem...
Engenharia de Software 57
Exercícios
Descreva 2 casos de problemas causados
por erros em software que você conhece.
Descreva 2 produtos (que não seja um
computador) onde o software faz a
diferença.
Engenharia de Software 58
Atividades
Responder as questões do capítulo 1 do livro
Engenharia de Software – Shari Pfleeger.
Engenharia de Software 59