ENGENHARIA DE
SOFTWARE I
Introdução à Engenharia de Software: Motivação, Histórico, Conceitos, Elementos de ES e Mitos do Software
AULA 1
Profª MSc. MICHELLE DE OLIVEIRA PARREIRA [email protected]
Roteiro
Software X Hardware Manutenção de software Elementos da ES Mitos do software Princípios de HookerEscopo do Curso
Por que preciso de
Engenharia de Software?
Já sei programar! Programação é apenas
uma parte do processo de Engenharia de Software (ES). Precisamos também saber: O que programar Como programar Se o que foi programado é o que o cliente realmente quer...
Programas das empresas
Se o desenvolvedor de software errar, o
Programas das empresas
Fatores críticos: ◦ Custo
◦ Prazo
Histórico (Era pré ES)
1968: Crise do software
Os projetos de software dos anos iniciais
tinham os seguintes problemas:
◦ Altos investimentos
◦ Excesso de bugs
◦ Requisitos mal compreendidos
ES hoje
Economia de todas as nações desenvolvidas
são dependentes de software
Cada vez mais os sistemas são controlados
por software
ES dedica-se às teorias, métodos e
ferramentas para desenvolvimento de software profissional
◦ Sistemas não triviais
O que é software?
São programas de computador e artefatos
associados
Um programa é um conjunto de soluções
algorítmicas, codificadas numa linguagem de programação, executado numa máquina real.
Software é um produto conceitual e lógico Produtos de software podem ser:
◦ Genéricos
O que é software?
Um software novo pode ser criado através
de:
◦ Desenvolvimento de novos programas
◦ Configuração de sistemas de software genéricos
◦ Reutilização de um software existente
Tipos de sistemas de software ◦ Sistemas legados
◦ Sistemas de tempo real
◦ Sistemas embarcados
O que é ES?
É uma disciplina relacionada com todos os
aspectos da produção de software
Propõe ferramentas, técnicas e processos para:
◦ Entender com precisão qual é o problema – as necessidades associadas ao sistema que deve ser construído/modificado
◦ Produzir uma solução adequada para esse problema – um sistema pronto para usar, levando-se em
consideração as necessidades das partes interessadas
Levar em conta restrições de desenvolvimento e
Qual a diferença entre ES e
Ciência da Computação?
A Ciência da Computação está
relacionada com teorias e fundamentos
A Engenharia de Software está
relacionada com a prática e o desenvolvimento de SW
O que é um processo de
software?
“Um conjunto estruturado de atividades
que leva à produção de um sistema de software” (Fonte: Sommerville)
◦ Especificação
◦ Desenvolvimento
◦ Validação
O que é um modelo de
processo de software?
Uma representação simplificada de um
processo de software, apresentado sob uma perspectiva específica:
◦ Incluindo algumas atividades e sua organização de alto nível
Modelos gerais de processo
◦ Cascata
◦ Desenvolvimento Iterativo ◦ Baseado em componentes
Quais são os custos da
ES?
O que é CASE
(Computer Aided Software Engineering)?
Sistemas de software que se destinam a
fornecer apoio automatizado para as
atividades de desenvolvimento de software
Sistemas CASE são usados frequentemente
para apoiar um método específico
UpperCase – ferramentas para apoiar as
atividades iniciais de processo de requisitos e de projetos
LowerCase – ferramentas para apoiar as
atividades finais, tais como programação,
Quais são os atributos de
um bom software?
O software deve fornecer a funcionalidade
e o desempenho requeridos para o usuário e deve apresentar as seguintes
características:
◦ Facilidade de manutenção – deve ser fácil e
barato fazer com que o sistema, depois de
implantado, evolua para atender às necessidades dos clientes
Quais são os atributos de
um bom software?
◦ Confiabilidade – o software deve funcionar
de maneira que o usuário possa depender dele. No caso de falha, não acarreta danos físicos ou econômicos
◦ Eficiência – o software deve usar o mínimo
de recursos e prover máxima funcionalidade
◦ Usabilidade – o software deve ser
Quais são os desafios chave
enfrentados pela ES?
Heterogeneidade – sistemas de software devem
ser capaz de lidar com diferentes plataformas de hardware e ambientes em execução
Entrega – o sistema deve ser entregue ao cliente
no menor tempo possível, com o menor custo possível
Confiança – o usuário deve poder
justificadamente depositar sua confiança no sistema
Escala – o sistema deve funcionar adequadamente
mesmo quando um grande número de usuários o está usando
Responsabilidade
profissional e ética
A ES envolve responsabilidades mais
amplas do que simplesmente a aplicação de habilidades técnicas
Os engenheiros de software devem se
comportar de modo honesto e
eticamente responsável para serem respeitados como profissionais
O comportamento ético é mais do que
Software
Instruções: quando executadas,
produzem a função com desempenho desejados
Estruturas de dados: possibilitam que
os programas manipulem a informação de maneira adequada e segura
Documentos: descrevem a operação e
Software X Hardware
Software é desenvolvido
◦ Alto custo de criação
◦ Baixo custo de reprodução
◦ Não enguiça, mas deteriora
◦ Defeitos no produto usualmente são consequências de problemas no processo de desenvolvimento
Hardware é manufaturado
◦ Alto custo de reprodução
◦ Pode enguiçar
◦ Defeitos podem vir tanto na concepção quanto na produção
Software X Hardware
Software X Hardware
Software X Hardware
Por que fazer bem feito?
Porque é mais barato!
◦ Historicamente, 60% a 80% do esforço total ocorre na manutenção
Porque é mais rápido!
◦ Não ter tempo para fazer bem feito agora significa ter tempo para refazer depois
Porque é mais fácil!
◦ Desenvolvimento ocorre uma única vez
O que é manutenção?
O processo de modificar um sistema de software ou componente, depois da entrega, para corrigir falhas, melhorar
desempenho ou outros atributos, ou adaptar a mudanças no ambiente.
Quando inicia a
manutenção?
Quais são os tipos de
manutenção?
Quais são os tipos de
manutenção?
Manutenção corretiva ◦ Reativa
◦ Corrige problemas reportados
◦ Faz o software voltar a atender aos requisitos
Manutenção emergencial ◦ Não programada
◦ Mantém temporariamente o sistema funcionando
◦ Necessita uma manutenção corretiva posterior
Quais são os tipos de
manutenção?
Manutenção preventiva ◦ Pró-ativa
◦ Corrige problemas latentes
Manutenção adaptativa
◦ Mantém o software usável após mudanças no ambiente
Manutenção perfectiva
◦ Provê melhorias para o usuário
Exercício
1) Quais são os quatro principais atributos que todos os produtos
de software devem ter? Sugira dois outros atributos que também considera importantes em um produto de software.
2) Os métodos de engenharia de software tornaram-se
amplamente usados somente quando a tecnologia CASE tornou-se disponível para apoiá-los. Sugira três tipos de apoio a métodos que podem ser fornecidos pelas ferramentas CASE.
3) Para ajudar a conter o terrorismo, vários países estão planejando
o desenvolvimento de sistemas de computador que monitorem 24 horas populações em grandes centros urbanos. Essa medida tem, obviamente, implicações quanto à privacidade. Discuta as questões éticas envolvidas no desenvolvimento desse tipo de sistema.
Elementos da ES
Processo
◦ Define os passos gerais para o
desenvolvimento e manutenção do software
◦ Serve como uma estrutura de encadeamento de métodos e ferramentas
Métodos
◦ São os “how to's” de como fazer um passo específico do processo
Ferramentas
Elementos da ES
Cuidado com o “desenvolvimento guiado
por ferramentas”
◦ É importante usar a ferramenta certa para o problema
◦ O problema não deve ser adaptado para a ferramenta disponível
“Para quem tem um martelo, tudo parece prego”
Elementos da ES
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
Elementos da ES
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
Processo Método
O supermercado de ES
ES fornece um conjunto demétodos para produzir software de qualidade
Pense como em um
supermercado: em função do problema, se escolhe o processo, os métodos e as ferramentas
Cuidado
◦ Menos do que o necessário pode levar à desordem
◦ Mais do que o necessário pode emperrar o projeto
Engenharia de Software
Um dos objetivos básicos da Engenharia de Software é transformar a criação de
sistemas de software, realizada de
maneira artística, indisciplinada e pouco
entendível para uma forma devidamente
Crise do software
Refere-se a um conjunto de problemas
encontrados no desenvolvimento de software. Problemas concretos:
◦ Péssimas estimativas de prazo e custos
◦ Produtividade não tem aumentado tanto quanto a demanda
Crise do software
Dificuldades:
◦ Pouca coleta de dados
◦ Insatisfação do cliente
◦ Falta de garantia
Causas
Características próprias
do software
◦ Produto “lógico”
Falhas dos responsáveis
pelo desenvolvimento de software
◦ Gerentes sem background
◦ Pouco treinamento
Mitos do software
Mitos do software ◦ Gerenciais
Mitos gerenciais
Basta um bom livro de ES para fazer um
bom software
◦ Um bom livro com certeza ajuda, mas precisa refletir as técnicas mais eficientes e ser lido!
Meu pessoal tem ótimas ferramentas de
desenvolvimento, afinal compramos equipamento sofisticado
◦ É necessário mais do que as melhores
Mitos gerenciais
Se estivermos com o cronograma
atrasado, basta adicionar mais gente ao projeto
◦ Adicionar gente a um projeto atrasado faz o projeto atrasar mais!
Se o projeto for terceirizado, todos meus
problemas estão resolvidos
Mitos do cliente
No início, basta dar uma ideia geral do que é
necessário
◦ Requisitos ambíguos normalmente são uma receita para desastre!
◦ Comunicação contínua com o cliente é fundamental!
Modificações podem ser facilmente acomodadas,
porque software é flexível
◦ O impacto de modificações no software varia em função da modificação e do momento em que ela é
Mitos do desenvolvedor
Assim que o código for escrito, o trabalho
termina
◦ 60% a 80% do esforço será gasto depois que o código for escrito!
◦ Vale a pena esforçar para chegar a um bom código (boa documentação, bom projeto, etc.)
Só é possível verificar a qualidade de um
software quando um executável existir
◦ Revisões usualmente são mais eficazes que testes, e podem ser utilizadas antes do software estar
O único produto a ser entregue em um
projeto é o código
◦ Além do código, documentações tanto para a
manutenção quanto para o uso são fundamentais
ES gera documentação desnecessária
◦ ES foca em criar qualidade, e não criar documentos
◦ Algum grau de documentação é necessário para evitar retrabalho
◦ Questione sempre que encontrar um documento
Mitos do desenvolvedor
Princípios de Hooker
1) Tem que existir uma razão para se fazer
software
2) KISS
3) Mantenha o estilo
4) O que é produzido por você é
consumido por outros
5) Esteja pronto para o futuro 6) Planeje para reutilização
Resposta à crise do
software
Engenharia de Software:
Modelos de ciclo de vida
Existem alguns processos pré-fabricados ◦ Esses processos são conhecidos como
modelos de ciclo de vida
◦ Esses processos apresentam características pré-definidas
Devem ser adaptados para o contexto
real de uso
◦ Características do projeto
◦ Características da equipe
Exercício
1) Problema
◦ Definir o procedimento de implantação para os dois cenários a seguir
Cenário 1: urna eletrônica
◦ O software da urna eletrônica acabou de ser
implementado, e precisa ser instalado em 480 mil urnas
Cenário 2: padaria
◦ O software de controle de venda de pão da padaria do seu Manuel acabou de ser
Exercício
2) Assuma as atividades básicas de todo
processo como sendo
◦ Comunicação ◦ Planejamento ◦ Modelagem ◦ Construção ◦ Implantação
Projete um processo que determina a
ordem com que cada uma dessas atividades é executada
Quais as características positivas ou
BIBLIOGRAFIA
BÁSICA
Engenharia de Software (Capítulo 1) Roger Pressman 6ª edição. McGrawHillAGUARDEM
PRÓXIMO
CONTEÚDO !!!
“Aprender é a única coisa de que a mente nunca se cansa, nunca tem medo e nunca se arrepende”