aula 00 - introdução a engenharia de software.pdf
TRANSCRIPT
![Page 1: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/1.jpg)
MSc, Adler Diniz de Souza, PMP
Processo de desenvolvimento e Ciclo de vida de software
![Page 2: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/2.jpg)
Introdução
Processo de software
Métodos, Ferramentas e Procedimentos
Benefícios com a adoção de processos de software
Modelos de ciclo de vida
Cascata
Prototipagem
Programação exploratória
Descartável
Transformação formal
Modelos Evolutivos
Modelo Incremental
Modelo Espiral
2
![Page 3: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/3.jpg)
Acúmulo
de trabalho
Abandono de
planos e
procedimentos
Sucesso depende muito do
esforço heróico das pessoasPouca
repetibilidade
Produto funciona, mas
com defeitos; prazo e
custo maiores; e menos
funcionalidade
Clientes e
funcionários
insatisfeitos
adaptado do ESI, 1998
Situação atual da maioria das empresas
Demanda por Melhor Qualidade!melhor qualidade inclui:
menor prazos, custos, defeitos, insatisfações,
mais qualidade dos produtos, previsibilidade,
produtividade, competitividade,
e melhores resultados de negócio (ROI)
3
![Page 4: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/4.jpg)
O que é um processo?
Solicitações para
construção de
produto ou
realização de
serviços de software
Produto ou serviço
de software
realizado e entregue
ao cliente
Empresa
Processos
AD
B CE
4
![Page 5: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/5.jpg)
É o que as pessoas fazem,utilizando procedimentos, métodos e ferramentas,
para adquirir, desenvolver, manter e melhorarsoftware e produtos associados
Objetivos
Recursos e Infraestrutura
Entradas Saídasatividades
Processo:
Processo de Software
Uma notação de processo comumente
representa:
Quais atividades são executadas no processo e suas
interdependências?
Quem realiza as atividades?
Por que as atividades são feitas?
Quando as atividades são feitas?
Como as atividades são feitas?
Quais as entradas que as atividades devem ter?
Quais saídas elas produzem?
Como é possível medir o desempenho?
Critérios de entrada e saída
Informações narrativas
É desejável que uma notação de processo
seja:
Flexível
Simples
Fácil de entender e treinar
Possuir ferramentais para suporte
5
![Page 6: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/6.jpg)
6
O Processo de Software
MÉTODOS:
Abordagens estruturadas para desenvolvimento de software que incluem modelos de sistema, notações, regras, recomendações de projeto e orientações de uso
Os métodos mostram os detalhes de como
construir o software
![Page 7: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/7.jpg)
7
O Processo de Software
FERRAMENTAS: dão suporte
automatizado aos métodos.
Existem atualmente ferramentas para sustentar cada um dos métodos
Quando as ferramentas são integradas, é estabelecido um sistema de suporte ao desenvolvimento de software chamado CASE -Computer Aided Software Engineering
![Page 8: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/8.jpg)
8
O Processo de Software
PROCEDIMENTOS: constituem o elo de
ligação entre os métodos e ferramentas
Seqüência 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 que possibilitam administrar o progresso do software.
![Page 9: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/9.jpg)
Visão Macro do Processo
Cada caixa representa uma FASE do Ciclo de vida do projeto
9
![Page 10: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/10.jpg)
Processo de uma Fábrica de SoftwareIdentificação dos papéis relacionados as atividades
Identificação das atividades, dos artefatos de entrada e saídaDescrição da atividade
10
![Page 11: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/11.jpg)
Desvantagens da adoção de Processos...Existem ??
Problemas com Adoção de ProcessosBurocraciaResistência
Aumento da carga de trabalhoA empresa tem que sobreviver..
Resultados imediatos(resultados – confiança – comprometimento)
...
11
![Page 12: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/12.jpg)
Maior
previsibilidade
dos resultados
Melhor ambiente de
trabalho e satisfação
das pessoas
Melhor habilidade para
gerenciar complexidade
Maior visibilidade da
execução dos
projetos
Maior
produtividade
Melhor qualidade
do produto
adaptado do ESI, 1998
Benefícios com a adoção de processos
12
![Page 13: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/13.jpg)
Introdução
Processo de software
Métodos, Ferramentas e Procedimentos
Benefícios com a adoção de processos de software
Modelos de ciclo de vida
Cascata
Prototipagem
Programação exploratória
Descartável
Transformação formal
Modelos Evolutivos
Modelo Incremental
Modelo Espiral
13
![Page 14: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/14.jpg)
14
Modelos de Ciclo de Vida
Existem vários modelos de processo de software(ou paradigmas de engenharia de software)
Cada um representa uma tentativa de colocar ordem no processo de desenvolvimento de software
Pode-se citar os seguintes modelos de processo de software
![Page 15: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/15.jpg)
15
Modelos de Ciclo de Vida
Modelos de ciclo de vida
Cascata
Prototipagem
Programação exploratória
Descartável
Transformação formal
Modelos Evolutivos
Modelo Incremental
Modelo Espiral
![Page 16: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/16.jpg)
O Modelo Cascata
16
![Page 17: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/17.jpg)
Derivado de modelos existentes de outras engenharias (1970)
Sua estrutura é composta de várias fases que são executadas de forma sistemática e seqüencial
Análise e definição de requisitos
Projeto de sistema e software
Implementação e teste de unidade
Integração e teste de sistema
Operação e manutenção
Na prática, existe uma interação entre as fases e cada fase pode levar a modificações nas fases anteriores
Modelo Cascata
1717
![Page 18: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/18.jpg)
Modelo Cascata
Implementação
Manutenção
Teste
Projeto
Análise
18
![Page 19: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/19.jpg)
Modelo Cascata
Implementação
Manutenção
Teste
Projeto
Análise
19
![Page 20: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/20.jpg)
Análise de Requisitos de Software
O principal objetivo desta fase é identificar,
coletar e detalhar os requisitos de software
Principais atividades:
Identificação e aprovação do fornecedor de requisitos;
Identificação e detalhamento dos requisitos do cliente,
requisitos funcionais e não funcionais;
Manter comunicação contínua com o cliente;
Validação interna e externa (com o cliente) dos
requisitos
Saídas:
Documento de requisitos ou Documento de Visão ou
Documentos de Caso de Uso;
![Page 21: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/21.jpg)
Requisitos de Software
[2]
[Courage & Baxter]
![Page 22: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/22.jpg)
Requisito de Software: Definição
Um requisito descreve uma condição oucapacidade que o sistema deve estar emconformidade [Unified Process]
Pode ser derivado das necessidades dos usuários,ou estabelecido em um contrato, padrão,especificação ou outro documento impostoformalmente [IEEE]
Pode estar explícito ou implícito
![Page 23: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/23.jpg)
O que o software deve fazer??O que o cliente deseja??Quais as restrições??Quais os componentes??Quem vai utilizar o software??
Descrição e especificação de um software ou sistema
Requisitos de Software
![Page 24: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/24.jpg)
Funcionais e não-funcionaisRequisitos e não-requisitosEssencial, importante, desejável, ...Usuário, sistema, dadoSistema, software,...Interno, externoComplexo, simples, ...Volátil, estável, ..Alocado .....Produto, processo .....
Requisitos de Software: Classificação
![Page 25: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/25.jpg)
Descrevem a funcionalidade do produto ou serviço do software/sistema
Requisitos funcionaisRequisitos Funcionais
![Page 26: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/26.jpg)
Requisitos funcionais do usuário podem ser sentenças de alto nível sobre o que o sistema deve fazer
Propostas Técnicas e Comerciais, Manuais de procedimentos, etc.
Requisitos funcionais do sistema devem descrever os serviços do sistema em detalhes
Documento de requisitos refinado, arquitetura do software, etc.
Requisitos Funcionais
![Page 27: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/27.jpg)
Restringem os requisitos funcionais
Requisitos de produto
Requisitos organizacionais
Requisitos externos
Requisitos Não-funcionais
Requisitos de Produto
Requisitos que especificam que o produto entregue tem que se comportar de um modo particular
Ex: Velocidade de execução, confiabilidade, usabilidade, etc.
Requisitos Organizacionais
Requisitos que são uma consequência de políticas e procedimentos organizacionais.
Ex: Padrões de processos usados, requisitos de implementação etc.
Requisitos Externos
Requisitos que surgem de fatores que são externos ao sistema e ao processo de desenvolvimento.
Ex:Requisitos legislativos, exigência de interoperabilidade etc.
![Page 28: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/28.jpg)
Somerville 2003
Requisitos Não-Funcionais: Classificação
Requisitos não
funcionais
Requisitos do
produto
Requisitos
organizacionais
Requisitos
organizacionais
Requisitos de
eficiênciaRequisitos de
confiança
Requisitos de
portabilidade
Requisitos
éticosRequisitos
Legislativos
Requisitos de
interoperabilida
de
Requisitos de
usabilidade
Requisitos de
desempenhoRequisitos de
espaçoRequisitos de
privacidade
Requisitos de
segurança
Requisitos de
entregaRequisitos de
implementação
Requisitos de
padrões
![Page 29: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/29.jpg)
O QUE
FuncionalidadeRestrições
Confiabilidade
Usabilidade
Eficiência
Manutenibilidade
Portabilidade
ISO/IEC 9126 / NBR 1359
Requisitos de Software
![Page 30: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/30.jpg)
FUNCIONALIDADE - Satisfaz as necessidades?
SUBCARACTERÍSTICA PERGUNTA CHAVE
• Adequação Propõe-se a fazer o que é apropriado?
• Acurácia Faz o que foi proposto de forma correta?
• Interoperabilidade É capaz de interagir com os sistemas
especificados?
• Conformidade Está de acordo com as normas, leis, etc.?
• Segurança de Acesso Evita acesso não autorizado a programas
e dados?
ISO/IEC 9126 / NBR 1359
Requisitos de Software
![Page 31: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/31.jpg)
CONFIABILIDADE - É imune a falhas?
SUBCARACTERÍSTICA PERGUNTA CHAVE
• Maturidade Com que freqüência apresenta falhas por
defeitos no software?
• Tolerância a Falhas Ocorrendo falhas, como ele reage?
• Recuperação É capaz de recuperar dados em caso de falhas?
ISO/IEC 9126 / NBR 1359
Requisitos de Software
![Page 32: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/32.jpg)
Software para Controle de Estoque
Funcionalidade
Confiabilidade
Usabilidade
Eficiência
Manutenibilidade
Portabilidade
Características Selecionadas
Software Embutido em Satélite
Requisitos de Software
![Page 33: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/33.jpg)
Requisitos de Software
Atributos de um requisito:Capacidade de verificação – Pode ser verificado se o software atende aquele requisito ou não;
Prioridade – Utilizado para negociação no caso de recursos limitados;
Identificador único – Possibilita a sua inclusão no controle da gerência de configuração e gerenciado através do ciclo de vida do software;
![Page 34: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/34.jpg)
Exercício: (Identificar os requisitos do sistema desta clínica médica através de uma breve descrição do cliente)
Eu possuo uma clínica médica e atendo meus pacientes a mais de 15 anos..Poxa, eu tenho atendido tanta gente que atualmente tenho esta sala aquisomente para guardar as fichas de meus pacientes..
As coisas que quero controlar me parecem bastante simples.. Não querodiminuir o trabalho de minha secretária quanto ao agendamento dasconsultas, ela deve apenas cadastrar os novos pacientes.... Quero com estesistema poder controlar as consultas de tal forma que o paciente entre nomeu consultório e eu já possa ter lido todo o seu histórico.. Isto é, outrasvezes que ele esteve na clínica, qual a doença que ele tinha, os sintomas, osmedicamentos que foram ministrados, etc.. Aliás não me interessa omedicamento, eu quero saber é o seu princípio ativo.. É que existem hojetantas opções de remédios ...
Ah, as crianças!!... eu tenho atendido muitas delas.!!. quero tratá-las comoum paciente normal, mas preciso saber quem é o responsável por ela etambém quero acompanhar sua taxa de crescimento e peso....
Acho que fazer isso tudo funcionar melhor vai ser bastante simples.. Antesque eu me esqueça, também preciso manter os endereços de meuspacientes, para poder enviar um cartão de natal, ou um "feliz aniversário" ...
![Page 35: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/35.jpg)
Declaração deve ser precisa
Requisitos ambíguos podem ser interpretados de forma diferente por pessoas diferentes (exemplo: desenvolvedores e clientes)
EXEMPLO: O software deve ter visualizadores apropriados para leitura dos documentos
Considere o termo ‘visualizadores apropriados’
Intenção do usuário - visualizadores de propósito especial para cada tipo de documento diferente
Interpretação do desenvolvedor - um visualizador textual que mostra o conteúdo do documento
Problemas: Imprecisão dos Requisitos
![Page 36: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/36.jpg)
Problemas: Imprecisão dos Requisitos
![Page 37: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/37.jpg)
Modelo Cascata
Implementação
Manutenção
Teste
Projeto
Análise
37
![Page 38: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/38.jpg)
Projeto
Nesta fase faz-se a tradução dos requisitos do
software para um conjunto de representações
gráficas que podem ser avaliadas quanto à
qualidade, antes que a codificação se inicie
Se concentra em 4 atributos do programa:– Estrutura de Dados,
– Arquitetura de Software,
– Detalhes Procedimentais e
– Caracterização de Interfaces
Exemplos de Diagramas...
![Page 39: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/39.jpg)
Diagrama de Caso de Uso
39
ud Use Case Model
Vendedor
Manter produtos
Manter Clientes
Manter Produtos
Genéricos
Efefuar venda
Efetuar pagamento
cartão de dédito
Efetuar pagamento
Cartão de Crédito
Efetuar pagamento
Cheque
Manter Produtos
Controlados
«extend»
«extend»
«extend»
«include»
«include»
![Page 40: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/40.jpg)
Diagrama de Classe
40
![Page 41: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/41.jpg)
Modelo Cascata
Implementação
Manutenção
Teste
Projeto
Análise
41
![Page 42: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/42.jpg)
Implementação
Esta fase faz a tradução das representações
gráficas do projeto para uma linguagem
“artificial” resultando em instruções executáveis
pelo computador
É normalmente a fase onde concentra-se o maior
percentual de trabalho
Saídas:
Código fonte, Scripts de banco de dados, documentos de
testes, manuais
![Page 43: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/43.jpg)
Modelo Cascata
Implementação
Manutenção
Teste
Projeto
Análise
43
![Page 44: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/44.jpg)
Testes
Essa fase concentra-se:
nos aspectos lógicos internos do software,
garantindo que todas as instruções tenham sido
testadas
nos aspectos funcionais externos, para descobrir
erros e garantir que a entrada definida produza
resultados que concordem com os esperados.
![Page 45: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/45.jpg)
Modelo Cascata
Implementação
Manutenção
Teste
Projeto
Análise
45
![Page 46: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/46.jpg)
Manutenção
Provavelmente o software deverá sofrer mudanças
depois que for entregue ao cliente
Causas das mudanças:
erros, adaptação do software para acomodar mudanças
em seu ambiente externo e exigência do cliente para
acréscimos funcionais e de desempenho
Todo bom software evoluí!!
![Page 47: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/47.jpg)
VantagensOferece uma maneira de tornar o processo mais visível, fixando pontos específicos para a escrita de relatórios.
Problemas Boa parte do sistema não estará disponível até um ponto adiantado no cronograma do projeto:
é geralmente difícil convencer o usuário de que é preciso paciência
Dificuldade de acomodação das mudanças depois que o projeto está em andamento
Portanto, esse modelo é apenas apropriado quando os requisitos são bem entendidos
Modelo Cascata
47
![Page 48: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/48.jpg)
O Modelo de Desenvolvimento Prototipagem
48
![Page 49: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/49.jpg)
Introdução
Processo de software
Métodos, Ferramentas e Procedimentos
Benefícios com a adoção de processos de software
Modelos de ciclo de vida
Cascata
Prototipagem
Programação exploratória
Descartável
Transformação formal
Modelos Evolutivos
Modelo Incremental
Modelo Espiral
49
![Page 50: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/50.jpg)
Desenvolvimento da primeira versão do sistema o mais rápido possível;
O escopo não é claramente definido: a especificação é feita de forma intercalada ao desenvolvimento;
Após o desenvolvimento de cada uma das versões do sistema ele é mostrado aos usuários para comentários;
Modificações sucessivas até que o sistema seja considerado adequado;
Principal diferença dos outros modelos é a ausência da noção de programa correto;
Usado com sucesso para o desenvolvimento de sistemas de IA.
Programação exploratória
50
![Page 51: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/51.jpg)
Objetivo é entender os requisitos do sistema. Ele deve iniciar com os requisitos vagamente entendidos;
Como na programação exploratória, a primeira fase prevê o desenvolvimento de um programa (protótipo) para o usuário experimentar;
O protótipo então é descartado e o software deve ser reimplementado na fase seguinte usando algum outro modelo de ciclo de vida (ex: cascata);
Usado com sucesso para prototipagem de partes do sistema (ex: Interface Gráfica e Aspectos de arquitetura).
Prototipagem descartável
51
![Page 52: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/52.jpg)
Prototipagem descartável
Vantagens:
Pode ser utilizada para identificação dos requisitosdos projetos
Desvantagens:
Expectativas do cliente com relação a prazo e custo;
Possibilidade de reutilização do protótipo
Falta de qualidade, falta de padronização
![Page 53: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/53.jpg)
O Modelo de Transformação Formal
53
![Page 54: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/54.jpg)
Utilizado para desenvolvimento de sistemas críticos;
Utiliza uma especificação formal (definição matemática, não ambígua) do software, que é desenvolvida e posteriormente transformadaem um programa através de regras que preservam a corretude da especificação;
Transformação formal
54
![Page 55: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/55.jpg)
Requirementsdefinition
Formalspecification
Formaltransformation
Integration andsystem testing
Transformação formal
55
![Page 56: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/56.jpg)
Problemas
Necessidade de habilidades especializadas e treinamento para aplicar as técnicas de transformação
Dificuldade para especificar formalmente alguns aspectos do sistema tais como a interface com o usuário
Aplicabilidade
Sistemas críticos, especialmente aqueles onde a segurança é um fator crítico
Transformação formal
56
![Page 57: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/57.jpg)
Modelos Iterativos
57
![Page 58: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/58.jpg)
Requisitos de sistema SEMPRE evoluem durante o curso de um projeto. Assim a iteração do processo sempre faz parte do desenvolvimento de grandes sistemas
Iterações podem ser aplicadas a quaisquer dos modelos de de ciclo de vida
Duas abordagens (relacionadas)
Desenvolvimento espiral
Desenvolvimento incremental
Modelos Iterativos
58
![Page 59: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/59.jpg)
O processo é representado como uma espiral em vez de uma seqüência de atividades
Cada volta na espiral representa uma fase no processo
Não há fases fixas como especificação ou projetovoltas na espiral são escolhidas dependendo do que é requerido
Acrescenta aspectos gerenciais ao processo de desenvolvimento de software.
análise de riscos em intervalos regulares do processo de desenvolvimento de software;
planejamento;
controle;
tomada de decisão.
Desenvolvimento Espiral
59
![Page 60: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/60.jpg)
Definição dos objetivos, alternativas e restrições
Objetivos específicos para a fase são identificados, alternativas para realizar os objetivos e restrições são encontradas.
Avaliação e redução de risco
Os riscos principais são identificados, analisados e buscam-se meios para reduzir estes riscos
Desenvolvimento e validação
Um modelo apropriado para o desenvolvimento é escolhido, o qual pode ser qualquer um dos modelos de ciclo de vida
Planejamento
O projeto é revisto e a próxima fase da espiral é planejada
Desenvolvimento Espiral
60
![Page 61: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/61.jpg)
Riskanalysis
Riskanalysis
Riskanalysis
Riskanalysis Proto-
type 1
Prototype 2
Prototype 3Opera-tionalprotoype
Concept ofOperation
Simulations, models, benchmarks
S/Wrequirements
Requirementvalidation
DesignV&V
Productdesign Detailed
design
Code
Unit test
IntegrationtestAcceptance
testService Develop, verifynext-level product
Evaluate alternativesidentify, resolve risks
Determine objectivesalternatives and
constraints
Plan next phase
Integrationand test plan
Developmentplan
Requirements planLife-cycle plan
REVIEW
Desenvolvimento Espiral
61
![Page 62: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/62.jpg)
Em vez de entregar o sistema como um todo, o desenvolvimento e a entrega são divididos em incrementos. Com cada incremento entregando parte da funcionalidade requerida.
Requisitos dos usuários são priorizados e os requisitos de mais alta prioridade são incluídos nas iterações iniciais
Uma vez que o desenvolvimento de um incremento é iniciado, os requisitos são "congelados". Embora outros requisitos possam continuar a evoluir para incrementos posteriores
Desenvolvimento Espiral
62
![Page 63: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/63.jpg)
Desenvolvimento Incremental
63
![Page 64: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/64.jpg)
Valida te
increment
Develop systemincrement
Design systemarchitecture
Integrateincrement
Valida te
system
Define outline requirements
Assign requirements to increments
System incomplete
Finalsystem
Desenvolvimento Incremental
64
![Page 65: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/65.jpg)
R1 R2 R3 R5
R6 R7 R8 R9
R10 R11 R12
Escopo
R2 R3 R5 R6
Release 1
R1 R7
Release 2
R10 R11 R12
Release 3
R8 R9
Release 4 (Final)
Software 1.0 Software 2.0 Software 3.0
Software 4.0Alterações
AlteraçõesAlterações
Exemplo
Modelo Iterativo e Incremental
65
![Page 66: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/66.jpg)
A funcionalidade do sistema está disponível mais cedo, pois ela é entregue a partir dos incrementos
Incrementos iniciais agem com um protótipo para ajudar a elicitar requisitos para incrementos finais
Diminui o risco de falha do projeto como um todo
Os serviços do sistema de prioridade mais alta tendem a receber mais testes
Desenvolvimento Incremental
66
![Page 67: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/67.jpg)
67
Conclusão
Para escolha de um Modelo de Ciclo de
Software adequado, deve-se levar em
consideração:
natureza do projeto e da aplicação
métodos e ferramentas a serem usados
controles e produtos que precisam ser entregues
![Page 68: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/68.jpg)
MSc, Adler Diniz de Souza, PMP
Processo de desenvolvimento e Ciclo de vida de software
68
![Page 69: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/69.jpg)
Exercícios 1 de 2
Escolha qual modelo de ciclo vida você optaria para o desenvolvimento dos seguintes projetos/soluções/situações:
1. Um software para um cliente que não sabe definir qual o escopo do projeto dele.
2. Um software de gestão empresarial para uma grande rede de empresas varejistas;
3. Um software de controle de tráfego aéreo;
4. Um software de reconhecimento de íris para acesso a locais restritos;
5. Um software de otimização de rotas para uma empresa transportadora, utilizando Algoritmo Genético;
69
![Page 70: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/70.jpg)
Exercício 2 de 2
Destaque as vantagens e desvantagens de cada modelo de ciclo de vida:
1. Modelo Cascata;
2. Modelo Prototipagem Descartável;
3. Modelo Programação Exploratória;
4. Modelo Iterativo e Incremental
5. Modelo Espiral;
70
![Page 71: Aula 00 - Introdução a Engenharia de Software.pdf](https://reader035.vdocuments.site/reader035/viewer/2022062322/55cf8fff550346703ba222f4/html5/thumbnails/71.jpg)
Fim da aula