3. EMPÍRICO
• Baseado na experiência comum e na
observação.
• Um fato que se apoia somente em
experiências vividas, na observação de coisas,
e não em não em teorias.
4. MÉTODO EMPÍRICO
• Feito por meio de tentativas e erros,
caracterizado pelo senso comum, e cada um
compreende à sua maneira.
• Conhecimento empírico é muitas vezes
superficial, sensitivo e subjetivo.
5. PESQUISA EMPÍRICA
• Busca de dados relevantes e convenientes
obtidos através da experiência, da vivência do
pesquisador.
• Tem como objetivo chegar a novas conclusões
a partir da maturidade experimental dos
outros.
6. Empirismo no Software
• Produto fora de padrões
• Dificuldade no controle e avaliação da
qualidade
• Alta carga de Manutenção
• O método empírico não é indicado para o
processo de produção de software
7. Método Científico
• É o conjunto das normas básicas que devem
ser seguidas para a produção de
conhecimentos que têm o rigor da ciência, ou
seja, é um método usado para a pesquisa e
comprovação de um determinado conteúdo.
8. Ciência no Software
• Se aplica totalmente
• Estuda trabalhos correlatos
• Produto dentro de normas, padrões e
especificações
• Planejamento é essencial
• Qualidade pode ser medida e avaliada
11. Camadas da Engenharia de Software
Qualidade
Processo
Métodos
Ferramentas
Processo contínuo de
aperfeiçoamento
12. Camadas da Engenharia de Software
Qualidade
Processo
Métodos
Ferramentas
Controle gerencial de
projetos de software
Aplicação dos
métodos
Modelos,
documentos, dados,
relatórios,
formulários, etc.
13. Camadas da Engenharia de Software
Qualidade
Processo
Métodos
Ferramentas
Como fazer?
Comunicação, análise
de requisitos,
modelagem de
projeto, construção
de programas, testes,
manutenção, etc.
14. Camadas da Engenharia de Software
Qualidade
Processo
Métodos
Ferramentas
Apoio automatizado
ou semi-
automatizado para
processos e métodos.
16. Processo
• Processo é uma palavra com origem no latim, que
significa método, sistema, maneira de agir ou
conjunto de medidas tomadas para atingir algum
objetivo.
• Define quem está fazendo o quê, quando e como
para alcançar um certo objetivo. (Jacobson)
17. Processo
• Processo civil, Processo penal, Processo
administrativo, Processo trabalhista, Processo
Industrial, Processo Organizacional, Processo
Evolutivo, Processo Produtivo, Processo de
Negócio, Processo de Software, etc.
18. Processo
• É uma sequencia de passos executados com
um determinado objetivo. (IEEE)
• É uma receita que é seguida por um projeto.
(Pádua, 2011)
19. Processo X Produto
• PROCESSO:
• Ingredientes e o
Modo de preparo
de um RISOTO de
camarão
• PRODUTO:
20. Elementos de um Processo
• O que é feito? – Produto
• Quando é feito? – Etapas
• Por quem é feito? – Papéis
• Quais coisas usa? – Insumos
• Quais coisas são produzidas? – Resultados
21. Processo de Software
• É uma série de passos previsíveis que ajuda a
criar a tempo um resultado de alta qualidade.
(Pressman, 2006)
• É um conjunto coerente de atividades para a
produção de software. (Sommerville, 2011)
23. Processo de software
• Desenvolver um sistema de software do zero
• Desenvolver um sistema de software a partir
de um existente: extensão, integração,
configuração, modificação, componentes.
24. Processo de Software
• Intelectual e criativo
• Pessoas tomam decisões e julgam
• Tirar melhor proveito das capacidades das pessoas
da organização
• Tirar melhor proveito das características
específicas do sistema
• Não existe modelo ideal
25. Categorias de Processos
• Processo dirigido a plano
• Todas as atividades são planejadas com
antecedência
• Progresso é avaliado por comparação com
o planejamento inicial
28. Modelo de Processo de Software
• É uma representação simplificada de um
processo de software. (SOMMERVILLE, 2011)
• Modelos genéricos: abstrações usadas para
explicar diferentes abordagens
• Exemplos: Cascata, incremental, reuso, etc.
29. Arcabouço de Processo
• Estabelece o alicerce para um processo de
software completo
• Identifica um número de atividades aplicáveis
a todos os projetos
• Independente de tamanho e complexidade
30. Atividades Genéricas do Arcabouço de
Processo
• Levantamento de
requisitos
• Comunicação com o
cliente
• Colaboração com o
cliente
Implantação
Construção
Modelagem
Planejamento
Comunicação
31. Atividades Genéricas do Arcabouço de
Processo
• Plano
• Tarefas técnicas
• Riscos
• Recursos
• Cronograma
Implantação
Construção
Modelagem
Planejamento
Comunicação
32. Atividades Genéricas do Arcabouço de
Processo
• Criação de modelos
para melhor
entendimento dos
requisitos.
• Ações: análise e
projeto
Implantação
Construção
Modelagem
Planejamento
Comunicação
33. Atividades Genéricas do Arcabouço de
Processo
• Geração de código
• Testes
• ErrosImplantação
Construção
Modelagem
Planejamento
Comunicação
34. Atividades Genéricas do Arcabouço de
Processo
• Entrega
• Avaliação
• FeedbackImplantação
Construção
Modelagem
Planejamento
Comunicação
35. Conjunto de Tarefas
• Define o trabalho real a ser feito para atingir os
objetivos de uma ação de engenharia de software.
• Diferentes projetos necessitam de diferentes
conjuntos de tarefas.
• O conjunto de tarefas é escolhido com base no
problema e características do projeto.
38. Atividades Fundamentais
• Especificação de software: funcionalidades e
restrições
• Projeto e implementação de software:
atender especificações
• Validação de software: garantia das demandas
do cliente
• Evolução de software: mudanças
39. Atividades Fundamentais
• As 4 atividades são ORGANIZADAS de acordo
com o processo de desenvolvimento adotado
• Dependem do tipo de software, das pessoas e
da estrutura organizacional
40. Especificação de Software
• É o processo de compreensão e definição dos
serviços requisitados do sistema e
identificação de restrições relativas a
operação e ao desenvolvimento do sistema de
software.
• Produz um documento de requisitos
42. Especificação de Software
• Estimativa
• Satisfazer necessidades do usuário
• Rentabilidade do sistema
• Restrições orçamentais
• Estudo barato e rápido
• Resultado: tomada de decisão (fazer ou não
o sistema?)
43. Especificação de Software
• Derivação dos requisitos
• Observação de sistemas
existentes
• Discussões com
potenciais usuários
• Análise de tarefas
• Desenvolvimento de
protótipos
44. Especificação de Software
• Produção de um
documento
• Requisitos do usuário
(visão cliente)
• Requisitos de sistema
(funcionalidades)
45. Especificação de Software
• Verificação dos requisitos
• Realismo
• Consistência
• Completude
• Descoberta de erros
• Modificação da
especificação
46. Projeto e Implementação de Software
• Um projeto de software é uma descrição:
• Da estrutura do software a ser implementado
• Dos modelos e estruturas de dados usados pelo
sistema
• Das interfaces entre os componentes do
sistema
• Dos algoritmos usados
47. Projeto e Implementação de Software
Entradas de projeto
Informação da
Plataforma
Especificação
de Requisitos
Descrição de
Dados
Atividades de Projeto
Projeto de
Arquitetura
Projeto de
Interface
Projeto de
Componentes
Projeto de
Banco de Dados
Saídas de Projeto
Arquitetura de
Sistema
Especificação de
Banco de Dados
Especificação de
Interfaces
Especificação de
Componentes
Modelo Abstrato
de Processo de
Projeto
As atividades são
intercaladas e não
sequenciais
48. ENTRADAS DE PROJETO
INFORMAÇÕES DA PLATAFORMA
• Plataforma de Software:
• Ambiente em que o software será executado
• Componentes da Plataforma de software:
• Sistema operacional
• Banco de dados
• Middleware
• Etc.
Interação entre os
componentes
Integração entre a
plataforma e o ambiente
49. ENTRADAS DE PROJETO
ESPECIFICAÇÃO DE REQUISITOS
• Especificação de requisitos
• Descrição da funcionalidade do software
• Requisitos de desempenho
• Requisitos de confiança
• As atividades no processo de software podem
variar, depende do tipo de sistema que será
desenvolvido
50. ENTRADAS DE PROJETO
DESCRIÇÃO DE DADOS
• Sistema para processamento de dados existentes:
• Podem ser inclusos na especificação da
plataforma
• Caso seja outro sistema:
• Deve ser uma entrada separada para o
processo de projeto
• Definição da organização dos dados do sistema
51. ATIVIDADES DE PROJETO
PROJETO DE ARQUITETURA
• Identificar a estrutura geral do sistema
• Identificar os componentes principais
• Identificar os relacionamentos entre os
componentes e como eles são distribuídos
52. ATIVIDADES DE PROJETO
PROJETO DE ARQUITETURA
• Definir interfaces entre os componentes do
sistema
• Interfaces devem ser precisas
• Os componentes não precisam saber como
outros componentes são implementados
53. ATIVIDADES DE PROJETO
PROJETO DE COMPONENTES
• Projeto do funcionamento do componente
• Declaração de funcionalidade que deve ser
implementada
• Lista de alterações para um componente
• Modelo de projeto detalhado
• Etc.
54. ATIVIDADES DE PROJETO
PROJETO DE BANCO DE DADOS
• Projeto das estruturas de dados do sistema
• Como devem ser representados em um B.D.
• Etc.
55. SAÍDAS DE PROJETO
• Podem variar conforme o tipo de sistema que se está
projetando
• Saída de um sistema crítico:
• Documentos detalhados
• Saída de um modelo:
• Diagramas
• Saída de um método ágil:
• Código de programa
56. Métodos Estruturados
• Déc. 70 e 80
• Produção de modelos
gráficos do sistema
• Geração automática de
código fonte
• Anos 90:
• Desenvolvimento
Dirigido a Modelos –
Model Driven
Development – MDD
• 2000:
• UML
• Projeto Orientado a
Objeto
57. Programação
• O desenvolvimento do programa é uma
consequência do projeto
• Geração de esqueleto do programa
• Detalhes de operação de cada componente
• É uma atividade PESSOAL: não existe um
processo geral definido
58. Validação de Software
• Mostra que um software:
• Se adequa às suas especificações
• Satisfaz as especificações do cliente
• Principal técnica de validação:
• Teste de programa:
• O sistema é executado com dados de testes
SIMULADOS
59. Validação de Software
• Processos de Verificação em todos os
estágios:
• Inspeções (Ação ou efeito de olhar, de examinar, de verificar)
• Revisões (Ato ou efeito de rever ou revisar; nova leitura, novo exame)
• Custos de validação:
• Durante e após a implementação
60. Validação de Software
Teste de
Componente
Teste de
Sistema
Teste de
Aceitação
Um processo de testes com três estágios.
Dados
do
cliente
Sistema
integrado
Defeitos de
componentes
Defeitos de Interfaces.
Erros de Programa.
Depuração.
Repetição de estágios já realizados
Realimentação
61. Processo de Teste
Teste de Desenvolvimento
• Cada componente é testado de forma
independente por quem o criou
• Ferramentas de automação de testes:
• Reexecutam testes quando novas versões
são criadas
• Exemplo: Junit
62. Processo de Teste
Teste de Sistema
• Integração dos componentes
• Erros das interações componentes e
interfaces
• Mostrar que o sistema satisfaz seus requisitos
• Teste de propriedades do sistema
• Subsistemas
63. Processo de Teste
Teste de Aceitação
• Dados fornecidos pelo cliente
• Erros/omissões na definição de requisitos
• Dados reais X dados simulados
• Desempenho indesejável
• Necessidades do usuário não alcançadas
64. Processo de Teste
• Processo de desenvolvimento INTERCALA com o
processo de teste
• Teste de código enquanto é desenvolvido
• Teste Beta:
• Entrega do sistema a um número de potenciais
clientes
• Teste Alfa:
• Teste de aceitação
65. Evolução de Software
• Custos altos
• Atividade maçante e desinteressante?
• Processos de manutenção:
• Menos desafiadores que o projeto inicial
• Desenvolvimento e manutenção são processos contínuos
• Processo evolutivo:
• O software é constantemente alterado durante o seu
período de vida em resposta às mudanças de requisitos
e às necessidades do cliente
66. Evolução de Software
Definir
Requisitos de
Sistema
Sistemas
Existentes
Propor Mudanças
de Sistema
Modificar
Sistemas
Avaliar Sistemas
Existentes
Novo Sistema