Buscar

AULAS_-_Conteudo_Completo

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 342 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 342 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 342 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

ENGENHARIA DE SOFTWARE I 
FIGURA DISCIPLINA
1
Prof. Me. Liliane Balduino de Carvalho Coelho
lilianebcc.unip@gmail.com
FUNDAMENTOS DE ENGENHARIA DE 
SOFTWARE
2
CONCEITO DE SOFTWARE
3
• O que é Produto de Software?
Software é o conjunto de programas de computador,
procedimentos, documentação e dados associados que compõe
o software.
4
Muitas pessoas pensam que software é simplesmente outra
palavra para programas de computador. No entanto, quando
falamos de engenharia de software, não se trata apenas do
programa em si, mas de toda a documentação associada e
dados de configurações necessários para fazer esse programa
operar corretamente. (SOMMERVILLE, 2011, p. 17)
CONCEITO DE SOFTWARE
Ou seja, envolve todo o resto que esta envolvido na sua 
fabricação (requisitos, analise, documentação, prototipação, testes, 
manuais de sistema, manuais do usuário).
5
CONCEITO DE SOFTWARE
Para que fique mais fácil compreender o que realmente é software é importante
conhecer suas características, pois são essas que o torna, diferente de todas as outras
coisas que podem ser construídas.
E essas características são também relativamente diferentes das encontradas nos
hardwares.
6
CARACTERÍSTICAS DE SOFTWARE
1. O software é desenvolvido por um processo de Engenharia e não é fabricado no
sentido clássico.
(O que significa o sentido clássico da produção, seria imaginar uma linha de produção
de um produto qualquer, por exemplo de um CARRO, aonde em cada etapa, são
encaixados peças e o produto vai caminhando pela fábrica, até que tudo fique pronto e
passe por uma aprovação de qualidade.
SOFTWARE diferente disso não tem peças que vão sendo agregadas e não caminha por
uma linha de produção, sua fabricação independe de máquinas e depende muito mais
das pessoas e sua especialização no assunto, sua qualidade envolve outros indicadores
e seus problemas apesar de serem mais fácil de solucionar são de outras proporções).
7
CARACTERÍSTICAS DE SOFTWARE
2. O software não se desgasta
Para verificar que o software não se desgasta é interessante fazer uma análise da curva
de falhas entre o hardware e o software.
Curva de falhas 
do Hardware
O gráfico conhecido como o gráfico da banheira, representa a curva de
desgastes do hardware, notem que a quantidade de falha de um
hardware é muito grande no momento de sua criação podendo
acontecer o que chamamos de mortalidade infantil do hardware, depois
que essa taxa de erros se estabiliza ela permanece um tempo inalterada,
porém a medida que o tempo passa e os males ambientais (pó,
umidade, calor) vão ocorrendo as falhas do hardware voltam a ocorrer e
o mesmo tem então um índice de desgaste grande e precisa ser retirado
de uso.
8
CARACTERÍSTICAS DE SOFTWARE
Curvas de falha do Software
Curva IDEAL
A curva ideal do software, seria uma curva que começaria
com grandes quantidades de falhas, pois o software estaria
no seu surgimento, portanto, conteria muitos acertos e
ajustes, e correções de bug e depois essa curva iria se
achatando e não mais subiria ficando assim o software em
pleno uso. Porém essa curva não é ideal ela contém vários
picos aonde os erros aumentam e diminuem, é conhecida
como curva dentada, isso ocorre porque a cada alteração
que é solicitada no software o mesmo sofre alterações e é
passível de novos defeitos, nem sempre essa curva de erros
chega a se estabilizar e novas demandas são necessárias,
fazendo com o que o software não se desgaste mas sim se
deteriore com o tempo. Curva NÃO IDEAL
9
CARACTERÍSTICAS DE SOFTWARE
Curvas de falha do Software
Curva IDEAL
A curva ideal do software, seria uma curva que começaria com
grandes quantidades de falhas, pois o software estaria no seu
surgimento, portanto, conteria muitos acertos e ajustes, e
correções de bug e depois essa curva iria se achatando e não
mais subiria ficando assim o software em pleno uso. Porém
essa curva não é ideal ela contém vários picos aonde os erros
aumentam e diminuem, é conhecida como curva dentada, isso
ocorre porque a cada alteração que é solicitada no software o
mesmo sofre alterações e é passível de novos defeitos, nem
sempre essa curva de erros chega a se estabilizar e novas
demandas são necessárias, fazendo com o que o software não
se desgaste mas sim se deteriore com o tempo.
10
INTRODUÇÃO
Contexto Histórico do software
• Nos anos 40, quando se iniciou a evolução dos sistemas computadorizados, grande
parte dos esforços, e consequentes custos, era concentrada no desenvolvimento do
hardware, em razão, principalmente das limitações e dificuldades encontradas na
época.
• À medida que a tecnologia de hardware foi sendo dominada, as preocupações se
voltaram, no início dos anos 50, para o desenvolvimento dos sistemas operacionais,
onde surgiram então as primeiras realizações destes sistemas, assim como das
chamadas linguagens de programação de alto nível, como FORTRAN e COBOL, e dos
respectivos compiladores.
11
Contexto Histórico do software
• A tendência da época foi de poupar cada vez mais o usuário de um computador de
conhecer profundamente as questões relacionadas ao funcionamento interno da
máquina, permitindo que este pudesse concentrar seus esforços na resolução dos
problemas computacionais em lugar de preocupar-se com os problemas relacionados ao
funcionamento do hardware.
• Já no início dos anos 60, com o surgimento dos sistemas operacionais com
características de multiprogramação, a eficiência e utilidade dos sistemas
computacionais tiveram um considerável crescimento, para o que contribuíram
também, de forma bastante significativa, as constantes quedas de preço do hardware.
Em um sistema de multiprogramação temos frequentemente a
situação onde vários processos estão prontos para serem executados.
O sistema operacional deve decidir qual processo deve ser executado
primeiro.
12
Contexto Histórico do software
• Uma consequência deste crescimento foi a necessidade, cada vez
maior, de desenvolver grandes sistemas de software em
substituição aos pequenos programas aplicativos utilizados até
então.
• Desta necessidade, surgiu um problema nada trivial devido à falta de
experiência e à não adequação dos métodos de desenvolvimento
existentes para pequenos programas, o que foi caracterizado, ainda
na década de 60 como a "crise do software", mas que, por outro
lado, permitiu o nascimento do termo "Engenharia de Software".
13
Contexto Histórico do software
• 1970 – 1980: Período visto como o surgimento do software, foi visto
pela sociedade e pelos pensadores da época como uma nova revolução
industrial, outros pensadores disseram que essa era a terceira onda de
mudanças da história humana.
-Transformação de uma sociedade industrial em uma sociedade da
informação.
- A informação e o conhecimento como centro do poder.
14
Contexto Histórico do software
• 1990: Houve o que os pensadores descreveram como a mudança do
poder, agora com os computadores houve uma democratização do
conhecimento (antigamente o conhecimento estava restrito a um núcleo
de pessoas que se mantinham no poder , principalmente a economia
militar).
• - Surgiram uma série de livros anti-computadores, que enfatizavam
diversas preocupações, mas não colocavam os benefícios.
• - Veio na segunda metade dos anos 90 a ascensão e a ressureição dos
programadores.
15
Contexto Histórico do software
• 2000: Comentários a respeito da bomba relógio - O Bug do Milênio,
aonde todos os autores escreveram sobre a parada de todos os
sistemas, o fim do mundo, baseado em sistemas.
• 2001 até dias atuais: A indústria do software tornou-se e vem se
afirmando como o fator dominante na economia do mundo
industrializado.
16
Até aqui 18/08
A CRISE DO SOFTWARE
17
18
O que foi a Crise do Software e o início da Engenharia de Software?
A Crise do software foi um termo que surgiu nos
fim dos anos 60.
O termo expressava as dificuldades do
desenvolvimento de software frente ao rápido
crescimento da demanda por software, da
complexidade dos problemas a serem
resolvidos e da inexistênciade técnicas
estabelecidas para o desenvolvimento de
sistemas que funcionassem adequadamente ou
pudessem ser validados.
19
A “crise do software” foi um termo cunhado para descrever as dificuldades
enfrentadas no desenvolvimento de software no fim da década de 60. A
complexidade dos problemas, a ausência de técnicas bem estabelecidas e a
crescente demanda por novas aplicações começavam a se tornar um problema
sério.
Foi nessa época, mais precisamente em 1968, que ocorreu a Conferência da
OTAN sobre Engenharia de Software (NATO Software Engineering Conference)
em Garmisch, Alemanha. O principal objetivo dessa reunião era estabelecer
práticas mais maduras para o processo de desenvolvimento, por essa razão o
encontro é considerado hoje como o nascimento da disciplina de Engenharia
de Software.
Crise do Software
20
Duas décadas depois, em 1986, Alfred Spector, presidente da Transarc
Corporation, foi coautor de um artigo comparando a construção de
pontes ao desenvolvimento de software. Sua premissa era de que as
pontes normalmente eram construídas no tempo planejado, no
orçamento, e nunca caiam.
Na contramão, os softwares nunca ficavam prontos dentro do prazo e do 
orçamento, e, além disso, quase sempre apresentavam problemas.
Crise do Software
21
No Início dos anos 70, quando vivia-se a terceira era do software,
houveram muitos problemas de prazo e custo no
desenvolvimento de software, devido a baixa produtividade,
baixa qualidade e difícil manutenção do software.
Crise do Software
Grande parte dos projetos continuam com
estes problemas ainda na atualidade, assim
pode-se dizer que a crise continua vigente.
22
Os principais problemas apontados por Dijkstra (1971) eram:
• Estimativas de prazo e de custo imprecisas.
• Produtividade das pessoas da área de software não acompanha a
demanda.
• Projetos que estouram o cronograma e/ou orçamento.
• Não atendimento dos requisitos do usuário.
• Produtos não gerenciáveis, difíceis de manter e evoluir. A facilidade de
manutenção não era enfatizada como um critério importante, gerando
assim custos de manutenção elevados.
Crise do Software
23
Solução para a crise do software
• Utilização de técnicas, ferramentas e processos sistematizados
para produzir software.
• Treinamento e educação em conjunto com a mudança de
paradigma sobre o que é desenvolver software e como
deveria ser feito.
• Criação da Engenharia de Software.
Crise do Software
24
A criação da Engenharia de Software surgiu numa tentativa de contornar a crise do
software e dar um tratamento de engenharia(mais sistemático e controlado) ao
desenvolvimento de sistemas de software complexos.
Crise do Software
O termo Engenharia de Software tornou-se conhecido após uma conferência em 1968,
quando as dificuldades e armadilhas de projetar sistemas complexos foram discutidas
francamente.
A busca de soluções começou. Ela se concentrou em melhores metodologias e
ferramentas. As mais importantes foram as linguagens de programação que refletem
os estilos procedimental, modular e, em seguida, orientado à objeto.
25
A engenharia de software está
intimamente ligada ao aparecimento e
aperfeiçoamento desses estilos.
Também importantes foram os esforços
de sistematização, automatização da
documentação do programa e testes.
Crise do Software
A Engenharia de Software se concentra nos aspectos práticos da produção de um
sistema de software, enquanto a ciência da computação estuda os fundamentos teóricos
dos aspectos computacionais.
26
Considerando o que foi apresentado até aqui, já foi possível
compreender que o termo software descreve algo um pouco mais
completo e complexo do que um “simples” programa de computador,
bem como deixa claro que, a concepção de um software pode não ser
algo tão simples, obviamente isso irá depender da natureza para a
qual o mesmo está sendo ou foi projetado.
A Engenharia de Software é responsável por coordenar 
os processos de identificação das necessidades do 
cliente, planejamento, análise, desenvolvimento, 
entrega e evolução do software.
Relevância da Engenharia de Software
27
Definição de Engenharia de Software
Os problemas apontados nas seções anteriores não serão, é claro, resolvidos da noite
para o dia, mas reconhecer a existência dos problemas e defini-los da forma mais
precisa e eficaz são, sem dúvida, um primeiro passo para a sua solução.
Figura - Componentes do software
28
• Em primeiro lugar, é preciso estar ciente também de que não existe uma
abordagem mágica que seja a melhor para a solução destes problemas,
mas uma combinação de métodos que sejam abrangentes a todas as
etapas do desenvolvimento de um software.
• Além disto, é importante e desejável que estes métodos sejam
suportados por um conjunto de ferramentas que permita automatizar
o desenrolar destas etapas, juntamente com uma definição clara de
critérios de qualidade e produtividade de software.
São estes aspectos que caracterizam de maneira mais influente a disciplina 
de Engenharia de Software.
29
É uma disciplina de engenharia que se preocupa com
todos os aspectos de produção de software
(SOMMERVILLE, 2011, p. 4).
Esta disciplina descreve como proceder com a análise,
projeto, documentação, desenvolvimento, validação,
implantação e evolução do software, obviamente não
existe uma receita de bolo genérica que se aplica a todo e
qualquer escopo de projeto de software, mas sim um
conjunto de regras, instruções e práticas que norteiam o
desenvolvimento destes.
O que é Engenharia de software
30
Primeiramente, deve-se ter em mente que os processos de
Engenharia de Software são diferentes, dependendo do tipo de
software que se vai desenvolver.
[…] dependendo do nível de conhecimento ou estabilidade dos
requisitos, deve-se optar por um ou outro ciclo de vida, o qual
será́ mais adequado ao tipo de desenvolvimento que se vai
encontrar. WAZLAWICK (2013, p. 4)
31
Na literatura, pode-se encontrar diversas definições da Engenharia de
Software:
"O estabelecimento e uso de sólidos princípios de engenharia para que se
possa obter economicamente um software que seja confiável e que
funcione eficientemente em máquinas reais" [NAU 69].
“A aplicação prática do conhecimento científico para o projeto e a
construção de programas computacionais e a documentação necessária
à sua operação e manutenção.” [Boehm, 76]
32
“Abordagem sistemática para o desenvolvimento, a
operação e a manutenção de software” [Afnor, 83]
“Conjunto de métodos, técnicas e ferramentas necessárias à
produção de software de qualidade para todas as etapas
do ciclo de vida do produto.” [Krakowiak, 85]
33
É importante observar que, ainda que várias definições tenham sido
atribuídas a Engenharia de Software, todas convergem para o fato de que
esta disciplina possui uma importância significativa para o
desenvolvimento de um SOFTWARE PROFISSIONAL.
Tenha em mente que o uso da expressão “software profissional”, neste
contexto, pode ser entendido como software projetado para ser utilizado
por terceiros, sendo ele comercializado ou não, ou seja, em sua essencial
primária, à Engenharia de Software pode ser vista como complicador ou
emprego de esforço desnecessário quando aplicada ao software projetado
para o uso pessoal daquele que o desenvolve.
34
A engenharia de software tem por OBJETIVO apoiar o desenvolvimento
profissional de software, mais do que a programação individual. Ela inclui
técnicas que apoiam especificação, projeto e evolução de programas, que
normalmente não são relevantes para o desenvolvimento de software
pessoal. (SOMMERVILLE, 2011, p. 3)
Segundo Sommerville (2011, p. 29) a Engenharia de Software pode ser vista
como um processo evolutivo, “no qual o software é constantemente
alterado durante seu período de vida em resposta às mudanças de
requisitos e às necessidades do cliente”.
Objetivo da Engenharia de Software
35
De modo mais objetivo, pode-se dizer que a Engenharia de Software
busca prover a tecnologia necessária para produzir software de alta
QUALIDADE a um BAIXOCUSTO. Os dois fatores motivadores são
essencialmente a qualidade e o custo.
A qualidade de um produto de software é um parâmetro cuja
quantificação não é trivial, apesar dos esforços desenvolvidos nesta
direção. Por outro lado, o fator custo pode ser facilmente quantificado
desde que os procedimentos de contabilidade tenham sido
corretamente efetuados.
36
EXERCÍCIOS
Em 1968 aconteceu a NATO Software Engineering Conference, um
evento criado com o objetivo de discutir alternativas para contornar a
Crise do Software. Podemos resumir à crise no desenvolvimento de
software causada por alguns problemas com exceção de:
A) Projetos estourando o prazo.
B) Software de baixa qualidade.
C) Projetos atendendo o orçamento.
D) Software muitas vezes não atendendo os requisitos.
E) Projetos não gerenciáveis e código difícil de manter.
37
EXERCÍCIOS
Assinale a alternativa que melhor explica a frase " O software não se desgasta, ele se
deteriora".
A) Significa que o software não tem falhas.
B)Significa que o software não sofre falhas, mas problemas relacionados ao tempo e
ambiente.
C) Significa que o software não sobre desgastes ambientais (tempo, poeira), mas ao
longo da sua vida sofre diversas alterações por causa das falhas e manutenções
ficando obsoletos ou deteriorados.
D) Significa que o software não sobre desgastes de manutenções ao longo da sua
vida entretanto sofre problemas ambientais e temporais tornando-se obsoletos ou
deteriorados.
E) NDA
38
Aqui 25.08
39
Para determinar quais métodos e técnicas serão utilizadas no
desenvolvimento de um software, é necessário primeiramente
determinar de que tipo ele será. Segundo Sommerville (2011) alguns
dos possíveis tipos de aplicativos são:
Tipos de Software
1. Aplicações stand-alone. Essas são as
aplicações executadas em um computador
local, como um PC. Elas contêm toda a
funcionalidade necessária e não precisam estar
conectadas a uma rede. Exemplos de tais
aplicações são aplicativos de escritório em um
PC, software de manipulação de fotos etc.
40
2. Aplicações interativas baseadas em transações.
São aplicações que executam em um computador remoto, acessadas
pelos usuários a partir de seus computadores ou terminais.
Certamente, aqui são incluídas aplicações Web como aplicações de
comércio eletrônico em que você̂ pode interagir com o sistema
remoto para comprar produtos ou serviços.
Essa classe de aplicações também inclui sistemas corporativos, em
que uma empresa fornece acesso a seus sistemas através de um
navegador Web ou um programa cliente especial e serviços
baseados em nuvem, como é o caso de serviços de e-mail e
compartilhamento de fotos. Aplicações interativas frequentemente
incorporam um grande armazenamento de dados, que é acessado e
atualizado em cada transação.
Tipos de Software
41
3. Sistemas de controle embutidos. São
sistemas de controle que controlam e
gerenciam dispositivos de hardware.
Numericamente, é provável que haja mais
sistemas embutidos do que de qualquer outro
tipo. Exemplos de sistemas embutidos
incluem software em telefone celular,
softwares que controlam antitravamento de
freios em um carro e software em um micro-
ondas para controlar o processo de
cozimento.
Tipos de Software
42
4. Sistemas de processamento de lotes. São sistemas
corporativos projetados para processar dados em
grandes lotes. Eles processam grande número de
entradas individuais para criar as saídas
correspondentes.
Exemplos de sistemas de lotes incluem sistemas
periódicos de cobrança, como sistemas de cobrança
telefônica, e sistemas de pagamentos de salário.
Tipos de Software
43
5. Sistemas de entretenimento. São sistemas cuja
utilização principal é pessoal e cujo objetivo é entreter o
usuário. A maioria desses sistemas é de jogos de
diferentes tipos. A qualidade de interação com o
usuário é a característica particular mais importante dos
sistemas de entretenimento.
Tipos de Software
44
6. Sistemas de coleta de dados. São sistemas que coletam dados de
seu ambiente com um conjunto de sensores e enviam esses dados
para outros sistemas para processamento. O software precisa
interagir com sensores e frequentemente é instalado em um
ambiente hostil, por exemplo, dentro de uma máquina ou em um
lugar remoto.
7. Sistemas de sistemas. São sistemas compostos de uma série de
outros sistemas de software. Alguns deles podem ser produtos
genéricos de software, como um programa de planilha eletrônica.
Outros sistemas do conjunto podem ser escritos especialmente para
esse ambiente. (Sommerville, 2011, p. 7, grifo do autor)
Tipos de Software
45
Mitos do software
A principal consequência dos mitos é que eles causam confusão e
propagam informações erradas. A referência [PRE97] cita alguns mitos
relacionados ao software os quais listamos a seguir:
• Mitos gerenciais
• Mitos do cliente
• Mitos dos desenvolvedores
46
Os gerentes estão sobre pressão constante
para manter o orçamento, para cumprir
cronogramas e para melhorar a qualidade.
Para aliviar esta pressão alguns (mesmo
temporariamente) se agarram aos mitos.
• MITOS GERENCIAIS:
47
Mito: Tem-se livros de primeira qualidade com padrões e procedimentos.
Realidade: eles são necessários, mas não suficientes.
Mito: Tem-se ferramentas moderníssimas e de primeira qualidade para desenvolvimento,
associadas a computadores e instalações de primeira linha.
Realidade: Estas ferramentas têm utilização eficaz, eficiente e adequada?
Mito: Quando se está atrasado, pode-se contratar mais profissionais e recuperar-se do
atraso.
Realidade: Pessoas novas precisam se integrar a equipe existente, precisam aprender.
Isto pode atrasar ainda mais o projeto.
• MITOS GERENCIAIS:
48
Mito: Objetivos gerais são suficientes para se iniciar um projeto.
Realidade: Esta é a maior causa de falhas em projetos. É essencial a descrição formal e
detalhada do domínio da informação, das funções, do desempenho, das interfaces, das
restrições de projeto e dos critérios de validação. Comunicação desenvolvedor X usuário
é vital.
Mito: Requisitos do usuário mudam continuamente, mas estas mudanças podem ser
acomodadas facilmente pois o software é flexível.
Realidade: O impacto destas mudanças varia no tempo ao longo do projeto. O custo
pode ir de uma vez (mudanças ocorridas na definição de requisitos do usuário) a cem
vezes (mudanças ocorridas após a liberação do software).
• MITOS DO CLIENTE
49
• MITOS DOS DESENVOLVEDORES
Estes mitos são fomentados por décadas de "programação". Eles são difíceis de serem
eliminados.
Mito: O trabalho termina quando o programa funciona.
Realidade: Entre 50 e 70% de todo esforço investido num software é gasto na sua
manutenção.
Mito: A qualidade só pode ser avaliada após o programa estar operando.
Realidade: Uma das técnicas mais efetivas para avaliar e garantir qualidade é aplicada na
fase de projeto: Revisões Técnicas Formais (Elas são filtros para detectar certos tipos de
erros).
Mito: O único considerável para o sucesso de um projeto é o programa.
Realidade: Ele é apenas uma parte da configuração de software que inclui programas,
documentos e dados. Documentação é fundamental para as tarefas de manutenção.
50
O que é Processo de Software ?
É um conjunto de tarefas requeridas
para construir um software de
qualidade.
O PROCESSO DE SOFTWARE
Existem vários processos de desenvolvimento de software diferentes, mas todos
envolvem:
✓ especificação – definição do quê o sistema deve fazer;
✓ projeto e implementação – definição da organização do sistema e implementação do
sistema;
✓ validação – checagem de que o sistema faz o que o cliente deseja;
✓ evolução – evolução em resposta a mudanças nas necessidades do cliente.
• Um modelo de processo de desenvolvimento de software é uma representação abstrata
de um processo. Ele apresenta uma descrição do processo de uma perspectiva em
particular.
51
52
O Processo
O processo de desenvolvimento de software é a
estrutura das tarefas que são requeridas para
construir software de altaqualidade.
A engenharia de software foca a qualidade,
utilizando processos, métodos e ferramentas.
Uma das definições para engenharia de software
foi proposta na referência [NAU69], estando
traduzida a seguir:
[Engenharia de software é] o estabelecimento e utilização 
de saudáveis princípios de engenharia a fim de obter 
economicamente software que seja confiável e rode 
eficientemente em máquinas reais.
53
• Se o processo de desenvolvimento de um produto é ruim, sem dúvida
o produto obtido é ruim. No entanto não se deve focar apenas no
processo. O produto é também importante.
• O software deve ser analisado tanto do ponto de vista de processo
como de produto. O desenvolvedor de software deve sentir
satisfação tanto na execução do processo de desenvolvimento como
no exame produto final obtido.
PRODUTO X PROCESSO 
54
Processos x Produto
O processo utilizado no desenvolvimento de
um projeto tem grande reflexo na produtividade e
na qualidade do software desenvolvido.
Os estudos sobre qualidade, mais recentemente, são
voltados para o melhoramento do processo de
desenvolvimento de software, pois ao garantir a
qualidade do processo, já se está dando um grande
passo para garantir também a qualidade do produto.
QUALIDADE DE PRODUTO DE SOFTWARE
55
Exercícios, problemas e trabalhos
1. Os mitos da área de software estão pouco a pouco enfraquecendo.
No entanto outros estão tomando seu lugar. Tente encontrar pelo
menos um mito novo em qualquer uma das categorias.
2. Procure na internet pelo menos duas "definições" para o termo
"Engenharia de Software".
3. O que é mais importante: o produto ou o processo?
4. Explique, utilizando suas próprias palavras, a diferença que existe
entre software e hardware quanto ao desenvolvimento e produto final
56
Até aqui 01.09.2020
PROBLEMAS COM PRAZO, CUSTO E 
QUALIDADE DO SOFTWARE 
57
58
É importante verificar que as tarefas de ORÇAMENTO do projeto, CRONOGRAMA do
projeto e planejamento da QUALIDADE do projeto, são tarefas que devem ser
realizadas para TODOS os projetos em questão e as mesmas devem ser realizadas pelos
seus GERENTES DE PROJETOS.
O gerenciamento de projeto de software é uma parte essencial da engenharia de
software. Um bom gerenciamento não pode garantir o sucesso do projeto, no entanto,
um mau gerenciamento geralmente resulta em falhas do projeto: o software é
entregue com atraso, custa mais do que foi estimado originalmente e falha ao atender
os requisitos mínimos do cliente.
GERENTE DE PROJETOS
O gerente de projetos é quem garante que o projeto
será concluído e os objetivos, alcançados. O gerente do
projeto é quem define: objetivo geral do projeto,
objetivos individuais, cronograma de atividades,
responsabilidades e recursos. Sua principal atribuição é
evitar que as falhas inerentes aos processos
aconteçam.
GERENTE DE PROJETOS
A gestão de projetos é uma profissão do presente e do futuro, adotada
largamente em diversas áreas.
59
60
✓ Os gerentes de softwares são responsáveis pelo
desenvolvimento de planos, cronogramas e estimativa
de custos do projeto.
✓ Eles supervisionam o trabalho para garantir que ele
esteja sendo realizado dentro dos padrões exigidos, e
monitoram o progresso para verificar se o
desenvolvimento está no prazo e dentro do orçamento.
✓ O gerenciamento de projeto é necessário, pois a
engenharia de software está sempre sujeita às
restrições de orçamento e de cronograma da
organização.
GERENTE DE PROJETOS
✓ As organizações precisam de profissionais qualificados
na gestão de projetos para alcançar o sucesso
pretendido.
✓ Um gerente de projetos é um profissional no campo de
gerência de projetos que tem a responsabilidade de
planejar e controlar a execução de projetos em
diversas áreas de atuação, como a construção civil,
arquitetura e desenvolvimento de software, entre
outras.
GERENTE DE PROJETOS
61
62
GERENTE DE PROJETOS
Os gerentes de projetos fazem o mesmo trabalho que gerentes de outra
engenharias, no entanto, a engenharia de software é diferente das outras
engenharias de uma série de maneiras. Algumas das diferenças são:
· O produto é intangível: Ou seja, o software é intangível, não pode ser visto ou
tocado, os gerentes de projeto de software não podem ver seu progresso. Eles
contam e devem confiar em outras pessoas para produzir a documentação
necessária para examinar o progresso.
· Não existe processo padrão em software: O processo de software varia
drasticamente de uma empresa para outra, não existe um padrão na sua
construção, uma linha de produção como produtos manufaturados.
· Projetos de software de grande porte são geralmente projetos “únicos”: Esses
projetos de alguma forma são sempre diferentes dos anteriores, portanto, mesmo
gerentes experientes podem considerar difícil prever problemas.
63
GERENTE DE PROJETOS
Atividades do Gerenciamento - RESUMO
A maioria dos gerentes assume a responsabilidade por algumas ou todas das
seguintes tarefas:
· Elaboração de proposta
· Planejamento e Desenvolvimento do cronograma do projeto
· Custo do projeto
· Monitoração e revisão do projeto
· Seleção e avaliação de pessoal
· Elaboração de relatórios e apresentações.
64
GERENTE DE PROJETOS
65
Planejamento de Projeto
O gerenciamento eficiente de um projeto de software depende de um
planejamento minucioso do progresso do projeto. Os gerentes devem prever
problemas que podem ocorrer e preparar soluções experimentais para esses
problemas. Um plano elaborado no início de um projeto deve ser usado como guia.
Esse plano inicial deve ser o melhor possível em face das informações disponíveis. Ele
deve evoluir à medida que o projeto progride e melhores informações se tornem
disponíveis.
O planejamento é um processo interativo, apenas concluído quando o projeto
é concluído. À medida que as informações se tornam disponíveis durante o projeto, o
plano deve ser regularmente revisado. As metas da empresa constituem um
importante fator que deve ser considerado na formulação do plano do projeto. À
medida que essas metas mudam, as metas do projeto também mudam e, portanto,
são necessárias mudanças no plano de projeto.
66
No inicio do processo de planejamento deve ser avaliado as restrições que afetam o
projeto. Junto com isso deve ser estimado os parâmetros do projeto, como sua
estrutura, tamanho e distribuição de funções.
Planejamento de Projeto
No inicio do processo de planejamento deve-se usar o
Guia de Boas Práticas - PMBOK
67
✓ É um Guia de boas práticas em Gerenciamento de Projetos. Possui um somatório de
conhecimentos relativos à Gerência de Projetos.
✓ Foi desenvolvido pelo PMI (Project Management Institute), visando a pesquisa,
sistematização e divulgação dos conceitos relativos à administração de Projetos.
✓ Este conjunto completo de conhecimentos inclui práticas tradicionais que são
amplamente utilizadas nas mais diversas organizações e em qualquer ramo de
atividade.
✓As práticas estão organizadas em dez áreas de conhecimento e de gestão. São elas:
Integração, Escopo, Custos, Cronograma, Qualidade, Recursos, Comunicações, Riscos,
Aquisições e Partes Interessadas.
✓Adota as melhores práticas de gerência de projetos consolidadas de mercado.
PMBOK
ÁREAS DE CONHECIMENTO DO PMBOK 6ª EDIÇÃO
68
69
As maiorias dos Planos devem incluir as seguintes seções:
Introdução: Descreve brevemente os objetivos do projeto e estabelece as restrições que afetam
o gerenciamento do projeto.
Organização do projeto: Descreve o modo como a equipe de desenvolvimento está organizada,
as pessoas envolvidas e seus papéis na equipe.
Análise de riscos: Descreve os possíveis riscos do projeto, e as estratégias adotadas se os
mesmos ocorrerem.
Requisitos de recursos de hardware e software: Especifica os recursos necessários para o
desenvolvimento.
Estrutura analítica: Especifica a estrutura analítica de um projeto
Cronograma do projeto: Apresenta as dependências entre as atividades, o prazo estimado
necessário para atingir cada marco e a alocação de pessoas nas atividades.Mecanismo de monitoração e relatório: Definem os relatórios de gerenciamento que devem
ser produzido, quando devem ser produzidos e o mecanismo de monitoração utilizado.
Planejamento de Projeto
O QUE É UM PROJETO?
Segundo a NBR 10006 (2008), norma brasileira que documenta as
diretrizes para qualidade em gerenciamento de projetos, o projeto é um
[...] processo único, consistindo de um grupo de atividades coordenadas e
controladas com datas para início e término, empreendido para alcance de
um objetivo conforme requisitos específicos, incluindo limitações de tempo,
custo e recursos.
Para o PMI (2017), o projeto é um “esforço temporário que tem a finalidade de criar
um produto/serviço único”.
Segundo Kerzner (2001) projeto é um empreendimento com um objetivo bem
definido, que consome recursos e opera sob pressões de prazo, custos e qualidade.
70
O QUE É UM PROJETO?
Então aquela viagem que farei pode se tornar um projeto?
A resposta é “sim”.
❖ Tem todos requisitos para ser organizado em um grupo de
atividades controladas por prazos;
❖ Tem um objetivo único;
❖ Envolve orçamento financeiro;
❖ Depende de planejamento prévio;
71
72
CARACTERÍSTICAS DE PROJETO
✓ É temporário;
o Um projeto apresenta um esquema de tempo específico, ou uma vida finita (ou
seja, ele não pode ser um processo que não tem fim);
o Tem uma data de início e uma data na qual o objetivo deve ser alcançado.
✓ Objetivo é definido em termos de Escopo (trabalho a ser realizado), Cronograma
(tempo) e Custo;
✓ Espera-se que o escopo do trabalho seja atingido com qualidade e que traga a
satisfação do cliente.
✓ É um esforço específico e único (não pode ser realizado da mesma forma duas vezes,
por mais que um projeto se pareça com outro, nenhum projeto é idêntico);
73
CARACTERÍSTICAS DE PROJETO
✓ Um projeto de desenvolvimento de um software ou construção de uma casa é
único pelo grau de customização que exigem;
✓ Um projeto faz uso de recursos para realizar tarefa;
✓ Existem vários tipos de recursos: pessoas, organizações, equipamentos, material,
etc;
✓ Um projeto tem um cliente (sponsor – patrocinador), é a pessoa quer fornece os
recursos necessários para realizar o projeto;
✓ Projetos envolvem certo grau de incerteza.
74
Área de CRONOGRAMA
✓ É o conjunto de processos necessários para garantir
que o projeto seja entregue no prazo. Afinal, o
cronograma traz uma visão geral das atividades e das
relações entre elas, além de mostrar os prazos das
atividades e o prazo final do projeto.
✓ Esta área é responsável por estimar recursos e duração
e sequenciar as atividades do projeto. Nela, define-se o
cronograma do projeto a partir do escalonamento das
atividades e suas precedências.
Tempo é um recurso precioso e não renovável, e a
maioria das pessoas gostaria de ter mais tempo para suas
atividades, que frequentemente exigem mais tempo do
que o estimado.
75
Área de CRONOGRAMA
✓ Os processos do gerenciamento do tempo são:
o Planejar o de gerenciamento do cronograma;
o Definir as atividades;
o Sequenciar as atividades;
o Estimar os recursos;
o Estimar a duração;
o Desenvolver o cronograma;
o Controlar o cronograma.
Os processos do gerenciamento do tempo são utilizados para garantir que o andamento das atividades
esteja de acordo com o cronograma e que a entrega do projeto ocorra no prazo comprometido.
76
Custo do Projeto
Existem três parâmetros envolvidos no cálculo do custo total de um projeto de software:
• Custo de hardware e software, incluindo a manutenção
• Custo de viagens e treinamentos
• Custo de esforços
Os custos de uma empresa são os gastos ligados diretamente à produção ou à
atividade-fim de uma organização, como por exemplo: compra de matéria-prima,
pagamento de salários, contas de energia, entre outros. Já as despesas podem ser
consideradas gastos relacionados à manutenção do negócio.
77
Custo do Projeto
O custo mais representativo nos projetos são os custos dos esforços, pois os custos dos
esforços não são apenas salários dos engenheiros de software que estão envolvidos no
projeto. As organizações calculam os custos dos esforços em termos indiretos nos quais
são considerados o custo total de operação da organização, e este é dividido pelo número
de pessoal produtivo. Portanto os seguintes custos são parte do custo total de esforços:
• Custo de subsistência, aquecimento e iluminação no espaço de escritório
• Custo de pessoal de apoio como contadores, administradores, gerentes de sistemas,
faxineiros e técnicos.
• Custo de operações de rede de comunicações
• Custo de instalações centrais, como de biblioteca ou recreação
• Custo de seguridade social e benefícios dos empregados, como pensões e seguros
78
Área de CUSTOS
✓ O principal objetivo é fornecer uma estimativa preliminar do custo total do projeto, já no seu
início. Assim, é possível assegurar que o projeto terá todo o recurso financeiro necessário para a
realização do empreendimento.
✓ Além disso, nessa área também é possível planejar as formas de como os recursos financeiros
serão utilizados ao longo do cronograma do projeto, podendo controlá-los e gerenciá-los da
melhor maneira possível, certificando-se de que o projeto seja finalizado conforme o orçamento
definido.
79
Área de CUSTOS
✓ Os processos do gerenciamento de custo são:
o Planejar o de gerenciamento de custo;
o Estimar os custos;
o Determinar o orçamento;
o Controlar os custos.
80
Uma vez que o projeto esteja em andamento, os gerentes de
projetos devem atualizar regularmente suas estimativas de custo.
Isso ajuda no processo de planejamento e uso eficiente de recursos.
Se as despesas reais são significantemente maiores do que as
estimadas, o gerente de projeto deve tomar alguma providência. Isso
pode envolver a aplicação de recursos adicionais para o projeto ou a
modificação do trabalho a ser realizado.
Área de CUSTOS
81
QUALIDADE - Implantação e Melhoria de Processos de Software
O mercado de software tem evoluído exponencialmente por conta da popularização
dos computadores e dispositivos móveis, fato este, que deriva da globalização e da
necessidade de uma economia mais competitiva, onde se busca um diferencial
estratégico, ocasionando uma necessidade de processos que objetivem a qualidade
dos produtos de software.
82
Existem diversas definições para o que vem a ser qualidade algumas das mais
importantes são:
• Termo subjetivo com significados diferentes para pessoas e contextos diferentes.
• Conjunto de Propriedades de um produto ou serviço, que lhe oferecem aptidões
para satisfazer as necessidades explicitas ou implícitas (ISO 8402, 1994).
• Grau com que o conjunto de propriedades inerentes ao produto satisfaz os
requisitos. (ISO 2000)
Definições de Qualidade
83
A qualidade de software tem se aprimorado significativamente nos últimos 15 anos.
Uma razão para isso é o fato de as empresas terem adotado novas técnicas e
tecnologias, como o uso do desenvolvimento orientado a objeto e de ferramentas de
apoio CASE, e também teve uma crescente conscientização da importância da
qualidade de software.
Bons gerentes de qualidade têm por objetivo desenvolver uma cultura de qualidade
na qual todos os responsáveis por desenvolvimento de produto estão comprometidos
em atingir um alto nível de qualidade de produto. Eles encorajam as equipes a
assumirem a responsabilidade pela qualidade de seu trabalho, e a desenvolverem
novas abordagens para aprimoramento da qualidade.
Área de QUALIDADE
84
Área de QUALIDADE
• O gerenciamento de qualidade formalizada é particularmente importante para as
equipes que estão desenvolvendo sistemas amplos e complexos. A
documentação de qualidade é um registro do que tem sido feito por cada grupo
no projeto. Isso ajuda as pessoas a verificarem se tarefas importantes não foram
esquecidas ou se uma parte da equipe não fez suposições incorretas sobre o que
outras equipes fizeram.
• A documentação de qualidade é também um meio de comunicação ao longo da
existência de um sistema.
• Para sistemas menores,a gerência de qualidade é ainda importante, mas a
mesma pode ser adotada de uma maneira mais informal.
• No desenvolvimento de software a qualidade de projeto abrange os requisitos,
as especificações e o projeto do sistema.
85
Área de QUALIDADE
Satisfação do usuário = produto adequado (ESCOPO)+ máxima qualidade + entrega
no prazo dentro do orçamento (CUSTO).
86
Área de QUALIDADE
Tem por objetivo estabelecer as normas de
qualidade e garantir que os padrões
estabelecidos sejam seguidos.
✓O gerenciamento da qualidade, por sua vez, é responsável por garantir que o projeto
satisfaça os objetivos e funções para os quais ele foi realizado. Normas e padrões de
qualidade são costumeiramente definidos nos processos dessa área, buscando sempre
a melhoria contínua.
✓Pode-se ressaltar que o ciclo PDCA é a base da melhoria da qualidade. Sendo assim, é
comum a realização de auditorias de qualidade, impedindo que um produto que não
atenda às normas e padrões preestabelecidos seja aprovado.
87
Área de QUALIDADE
✓ Os processos do gerenciamento da qualidade de acordo com PMBOK são:
o Planejar gerenciamento da qualidade;
o Realizar a garantia da qualidade;
o Controlar a qualidade.
88
Área de QUALIDADE
Além disso, para a qualidade de um projeto existem três tarefas de suma
importância:
• Controle de Qualidade
• Garantia da Qualidade
• Custo da Qualidade
89
Área de QUALIDADE
• Controle de Qualidade
O controle da variação pode ser equiparado ao controle da qualidade. O controle da
qualidade envolve a série de inspeções, revisões e testes usada ao longo do processo de
software para garantir que cada produto de trabalho satisfaça os requisitos para ele
estabelecidos.
Um conceito chave do controle de qualidade é que todos os produtos de trabalho têm
especificações mensuráveis e definidas com as quais nós podemos comparar os resultados de
cada processo.
• Garantia da Qualidade
Garantia da qualidade consiste em um conjunto de funções para auditar e relatar que
avaliar a efetividade e completeza das atividades de controle de qualidade. A meta da garantia
da qualidade é fornecer a gerência os dados necessários para que fique informada sobre a
qualidade do produto, ganhando assim compreensão e confiança de que a qualidade do produto
está satisfazendo as suas metas.
90
Área de QUALIDADE
Custo da Qualidade
O custo da qualidade inclui todos os custos decorrentes da busca da qualidade ou da
execução das atividades relacionadas à qualidade. Estudos de custo de qualidade
são conduzidos para obter um referencial para o custo de qualidade. Esse custo de
qualidade pode ser dividido em custos associados com a prevenção, com a avaliação
e com as falhas.
• Os custos de prevenção incluem planejamento da qualidade, revisões técnicas
formais, equipamentos de teste e treinamentos.
• Os custos de avaliação incluem atividades para obter entendimento da condição
do produto na primeira execução de cada projeto.
• Os custos de falhas são aqueles que desapareciam se nenhum defeito aparecesse
antes de se entregar um produto ao cliente.
91
Área de QUALIDADE
Custo da Qualidade
Os custos de falhas podem ser subdivididos em custos de falhas internas e custo de
falhas externas.
• Sendo o custo de falhas internas aqueles que ocorrem quando detectamos um
defeito no nosso produto antes do embarque. Os custos de falhas internas incluem
refazer, reparar e analisar o modo como a falha ocorreu.
• O custo de falha externa é associado com os defeitos encontrados depois que o
produto já esta com o cliente, geralmente são os mais caros.
•
92
Qualidade do Produto
A qualidade do produto de software deverá garantir algumas
características para que esse seja considerado realmente um
produto de qualidade.
Essas características serão apresentadas no próximo slide:
93
94
Até aqui 08.09.2020
95
Área de QUALIDADE
Modelos de Qualidade de Software
De maneira mais resumida vamos conhecer alguns modelos de qualidade:
• CMMI
• MPSBr
• ISO
96
Área de QUALIDADE
CMMI
✓ Antes de surgir o modelo CMMI, surgiu o modelo SW – CMM (Capability Maturity Model
for software) é um modelo de capacitação de processos que foi patrocinado pelo
departamento de defesa dos EUA, para avaliação da capacidade dos seus fornecedores
de software. O CMM baseou-se em algumas ideias importantes do movimento de
qualidade industrial.
✓ Com o sucesso do SW-CMM, outros modelos foram sendo criados , o P-CMM(People CMM
para recursos humanos), o SA-CMM (para aquisição de software) e o SE-CMM para
engenharia de sistemas, com o surgimento de todas essas vertentes de modelos começou
a ser causada uma certa confusão de quando usar um e outro, para isso foi criado então o
CMMI que integrou todos esses e pode ser aplicado para a empresa como um todo.
✓ O objetivo do CMMI é servir de guia para melhoria de processos na organização e também
na habilidade dos profissionais em gerenciar o desenvolvimento, a aquisição e
manutenção de produtos e serviços.
✓ O CMMI um pouco diferente do seu originário SW-CMM, pode ser abordado por níveis ou
então em melhoria contínua, atuando com níveis de capacidade.
97
Área de QUALIDADE
Os níveis do CMMI são:
• Inicial – Ad hoc (processos imprevisível e sem controle)
• Nível Gerenciado – Processos disciplinados
• Nível Definido – Processos consistentes padronizados
• Nível gerenciado Quantitativamente – Processos medidos e
controlados
• Nível Otimizado – Processos melhorados continuamente.
98
Área de QUALIDADE
MPSBr
• O MPSBr foi criado por pesquisadores brasileiros para melhoria de processos de
desenvolvimento de softwares em empresas brasileiras.
• O MPS.BR, Melhoria do Processo de Software Brasileiro, é um programa da Softex com
apoio do Ministério da Ciência, Tecnologia, Inovações e Comunicações (MCTIC). Com
inicio em dezembro de 2003, o programa tem como objetivo melhorar a capacidade de
desenvolvimento de software, serviços e as práticas de gestão de RH na indústria de
TIC.
• O MPSBr atende à necessidade de implantar os princípios de engenharia de software
de forma adequada ao contexto das empresas brasileiras, seguindo as principais
abordagens internacionais para definição, avaliação e melhoria de software.
• A definição desse processo baseia-se em três guias: Guia Geral, Guia de aquisição e
Guia de Avaliação.
99
Área de QUALIDADE
O MPSBr assim como o CMMI também define níveis de maturidade, porém esses
níveis são sete compreendidos de A a G sendo:
A – Em otimização
B – Gerenciado Quantitativamente
C – Definido
D – Largamente Definido
E - Parcialmente Definido
F – Gerenciado
G – Parcialmente Gerenciado
100
Área de QUALIDADE
ISO
As normas ISO 9000 é uma referência em sistemas de qualidade, tendo
influência em diversas outras normas e metodologias.
A ISO 9000 tornou-se sinônimo de preocupação com qualidade em todo o
mundo, a sigla é conhecida por consumidores dos mais diversos produtos e funciona
muitas vezes como um apelo de marketing muito eficiente. A série teve origem na
norma britânica BS570, baseada em padrões militares ainda mais antigos.
A ISO 9000 é, na realidade, uma família de normas e tem um caráter genérico.
Serve aos propósitos de qualquer organização, em qualquer ramo de atividade, que
queria realizar o controle de qualidade dos produtos ou serviços oferecidos.
101
Área de QUALIDADE
ISO
A norma ISO/IEC 15504 guarda estreita relação com o modelo CMMI. Essa norma
apresenta estrutura para a realização de avaliações de processos em organizações,
pode ser aplicada em situações como:
• Uma empresa que busca melhorias internas;
• Avaliação de terceiros ao realizarem contratos de prestação de serviços ou
fornecimento de produtos.
102
Com qual custo do projeto os Gerentes mais precisam se preocupar?
A) Custos com Ambientes.
B) Custo com os servidores.
C) Custos com o maquinário necessário.
D) Custo com os recursos e tudo que envolve mantê-los.
E) Custo com o café.
EXERCÍCIOS
103
EXERCÍCIOS
Do que depende um gerenciamento eficiente do Projeto?
A) Deum bom cronograma, para apenas fazer o controle dos recursos e
desenvolvimento.
B) Da monitoração e revisões constante do escopo do projeto.
C) Seleção e avaliação do pessoal.
D) Elaboração de Relatórios e Apresentações em Power Point.
E) Depende de um planejamento minucioso do progresso do projeto, esse
planejamento só termina com o projeto concluído.
104
EXERCÍCIOS
Qual das alternativas citam 3 modelos conhecidos de qualidade.
A) MEC, SEI, SERASA
B) MPSBr, ANFAVIA, TSP
C) CMMI, MPSBr, ISO
D) INFRAERO, NBT, AE
E) CM, QPM, GR
105
EXERCÍCIOS
Com relação à qualidade de software o desenvolvimento do projeto abrange quais
itens:
A) Custo de hardware e software, incluindo a manutenção.
B) Gerenciamento e desenvolvimento.
C) Gerenciamento e controle.
D) Custo e garantia.
E) Requisitos, as especificações e o projeto do sistema.
ETAPAS DE PROCESSO DE PESSOAL E DE 
EQUIPE (PSP/TSP)
106
107
Modelos de Processo Pessoal e de Equipe
O melhor processo de software é aquele que se aproxima do pessoal que fará o serviço.
✓ Personal Software Process (PSP) é um processo de desenvolvimento de software
projetado para ser utilizado por engenheiros de software para a elaboração de
projetos individuais. O PSP foi desenvolvido por Watts Humphrey e está descrito no
seu livro "A Discipline for Software Engineering" (Uma disciplina para Engenharia de
Software) de 1995. O PSP foi desenvolvido para orientar o planejamento e
desenvolvimento de módulos de software ou pequenos programas, mas pode ser
adaptado para outras tarefas pessoais.
✓ Sendo um subconjunto do CMM (Capability Maturity Model), o PSP tem como
filosofia a revisão contínua em cada estágio do ciclo de desenvolvimento. Enquanto o
CMM é focado na melhoria da capacidade organizacional, o foco do PSP é o
engenheiro individual.
108
Os objetivos principais do PSP são:
✓ Melhorar a estimativa de prazo e esforço para o desenvolvimento de um módulo de
software ou programa;
✓ Melhorar o planejamento e o acompanhamento de cronogramas;
✓ Evitar o excesso de compromissos;
✓ Criar um comprometimento pessoal com a qualidade e com a melhoria contínua do
processo;
109
O modelo PSP define cinco atividades: planejamento, projeto de alto nível, revisão do
projeto de alto nível, desenvolvimento e pós-conclusão.
✓ Planejamento: Essa atividade, isola os requisitos e, com base neles, desenvolve
estimativas tanto de tamanho quanto de recurso. Toda métrica é registrada em
planilhas e gabaritos. Finalmente, as tarefas de desenvolvimento são identificadas e
um cronograma de projeto é criado.
✓ Projeto de alto nível: São desenvolvidas especificações externas para cada
componente a ser construído e é criado um projeto dos componentes, Protótipos são
construídos quando existe incerteza. Todos os itens são registrados e monitorados.
✓ Revisão do Projeto de alto nível: Métodos de verificação formal são aplicados para
descobrir erros no projeto.
✓ Desenvolvimento: O projeto em nível de componentes é refinado e revisado. O
código é, revisado, compilado e testado.
✓ Pós- conclusão: Usando as medidas e as métricas coletadas, a efetividade do processo
é determinada.
110
✓ O PSP enfatiza a necessidade de cada engenheiro de software identificar logo os
erros, e igualmente importante, entender os tipos de erros que ele tende a fazer. Isso
é conseguido por meio de uma atividade de avaliação rigorosa desenvolvida em todos
os produtos de trabalho produzidos pelo Engenheiro de Software.
✓ O PSP representa uma abordagem disciplinada, baseada na métrica, da engenharia de
software que pode levar a um choque de cultura em muitos profissionais, quando o
mesmo é usado pela engenharia de software o aperfeiçoamento resultante na
produtividade e qualidade é significativo.
Naturalmente, a melhoria da capacidade de organização do indivíduo 
favorece a melhoria da capacidade organizacional como um todo.
111
TSP (Team Software Process – Processo de Equipe de Software)
Como muitos projetos de software de nível industrial são desenvolvidos por uma equipe
de profissionais, Watts Humphrey estendeu as lições aprendidas com a introdução do
PSP e propôs o TSP. O objetivo do TSP é construir uma equipe de projeto “autodirigida”
que se organize para produzir um software de alta qualidade.
Para isso foi definido os seguintes objetivos:
✓ Construir equipes autodirigidas que planejem e monitorem seu trabalho, estabelecem
metas, e possuam seus próprios processos e planos;
✓ Mostrar aos gerentes como acompanhar e motivar suas equipes, e como ajudá-las a
manter seu desempenho de pico;
✓ Acelerar o aperfeiçoamento do processo de software tornando o comportamento de
nível 5 do CMMI normal e esperado;
✓ Facilitar o ensino as habilidades de equipe de nível industrial.
112
✓ O TSP define as seguintes atividades: lançamento, projeto de alto nível,
implementação, integração e teste, pós-conclusão.
✓ Essas atividades permitem que a equipe planeje, projete e construa softwares de
modo disciplinado e, ao mesmo tempo, meça quantitativamente o processo e o
produto. A pós-conclusão prepara o cenário para aperfeiçoamento do processo.
✓ O TSP usa uma grande variedade de documentos, formulários e normas que servem
para guiar os membros da equipe em seus trabalhos.
✓ O TSP reconhece que as melhores equipes de software são as autodirigidas. Os
membros da equipe estabelecem objetivos do projeto, adaptam o processo para
satisfazer às suas necessidades, têm controle sobre o cronograma e, por meio de
medições e analise da métrica coletada, trabalham continuamente para melhorar a
abordagem da equipe do ponto de vista da Engenharia de software.
113
O TSP é uma abordagem rigorosa de Engenharia e fornece
benefícios distintos e quantificáveis em produtividade e qualidade.
A equipe deve estabelecer um total comprometimento com o
processo e deve passar por treinamentos para garantir que a
abordagem seja propriamente aplicada.
114
EXERCÍCIOS:
José desenvolve pequenos softwares para uma empresa de seu bairro, ele queria medir
melhor a qualidade do seu próprio trabalho, ele sabe que é bem disciplinado para fazer
isso. Qual modelo ele deve usar para realizar essa medição?
A) PSP
B) TST
C) PMP
D) TQP
E) PSS
115
EXERCÍCIOS:
Em uma empresa que desenvolve sistemas de grande porte, o gerente decidiu pedir para
que cada um se auto avaliasse e além disso decidiu aplicar o conceito de equipes
autodirigidas para melhorar a qualidade do software que a equipe produz. Quais os
modelos de processo aplicado?
A) PSP, TTP
B) PSP e TSP
C) PTP, TSP
D) TSP e PPP
E) Espiral, PSP
116
EXERCÍCIOS:
O PSP (Personal Software Process – Processo Pessoal de Software) enfatiza a medição
pessoal tanto do produto do trabalho que é produzido quanto da qualidade resultante do
produto do trabalho.O modelo PSP define cinco atividades que são:
A) Planejamento, monitoramento, metas, processos e planos
B) Planejamento, projeto de alto nível, revisão do projeto de alto nível, desenvolvimento
e pós-conclusão;
C) Análise, requisitos, desenvolvimento, teste e implantação;
D) Análise, projeto de alto nível, metas, processos e implantação;
E) Planejamento, levantamento, desenvolvimento, teste e pós-conclusão
ENTENDENDO COMO OS PROCESSOS 
SÃO EXECUTADOS....
117
118
Fluxo de processo
O chamado fluxo de processo — descreve como são organizadas as atividades
metodológicas, bem como as ações e tarefas que ocorrem dentro de cada atividade
em relação à sequência e ao tempo.
Um fluxo de processo linear executa cada uma das cinco atividades metodológicas
em sequência, começando com a de comunicação e culminando com a entrega
(Figura a).
119
Fluxo de processo
Um fluxo de processo iterativo repete uma ou mais das atividades antes
de prosseguir para a seguinte (Figura b).
120
Fluxo de processo
Um fluxo de processo evolucionário executa as atividades de uma forma “circular”.
Cada volta pelas cinco atividades conduz a uma versão mais completa do software
(Figura c).
121
Fluxo de processo
Um fluxode processo paralelo (Figura d) executa uma ou mais atividades em paralelo com outras
atividades (por exemplo, a modelagem para um aspecto do software poderia ser executada em
paralelo com a construção de um outro aspecto do software).
122
Abordagem de Camadas Engenharia de Software 
Esta abordagem é a reunião de metodologias, métodos, ferramentas, procedimentos e 
princípios a serem utilizados durante o processo de produção de software (percepção do 
software, implantação e manutenção) com intuito de obter produtos de alta qualidade.
abrange um conjunto de três elementos fundamentais: 
Métodos, Ferramentas e Procedimentos (Processo)
Principais metas: melhorar a qualidade de produtos de software, 
aumentar a produtividade do pessoal técnico e aumentar a satisfação do 
cliente. Ou seja, FOCO NA QUALIDADE!
123
Métodos: proporcionam os detalhes de como fazer para
construir o software.
Os métodos da engenharia de software fornecem as
informações técnicas para desenvolver software. Os métodos
envolvem uma ampla gama de tarefas, que incluem:
comunicação, análise de requisitos, modelagem de projeto,
construção de programa, testes e suporte.
Engenharia de Software 
124
 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 
Métodos
125
Ferramentas: As ferramentas da engenharia de software
fornecem suporte automatizado ou semiautomatizado para o
processo e para os métodos.
Quando as ferramentas são integradas, de modo que as
informações criadas por uma ferramenta possam ser usadas
por outra, é estabelecido um sistema para o suporte ao
desenvolvimento de software, denominado engenharia de
software com o auxílio do computador. (CASE - Computer
Aided Software Engineering )
Engenharia de Software 
126
Procedimentos (Processos): constituem o elo de ligação
entre os métodos e ferramentas.
 sequê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.
Engenharia de Software 
127
Procedimentos (Processos):
✓ No contexto da engenharia de software, um
processo não é uma prescrição rígida de como
desenvolver um software. Ao contrário, é uma
abordagem adaptável que possibilita às pessoas (a
equipe de software) realizar o trabalho de selecionar
e escolher o conjunto apropriado de ações e tarefas.
✓ A intenção é a de sempre entregar software
dentro do prazo e com qualidade suficiente para
satisfazer àqueles que patrocinaram sua criação e
àqueles que irão utilizá-lo.
Engenharia de Software 
128
Até aqui 15.09.2020
129
A essência da solução de problemas e, consequentemente, a essência da
prática da engenharia de software:
➢1. Compreender o problema (comunicação e análise).
➢2. Planejar uma solução (modelagem e projeto de software).
➢3. Executar o plano (geração de código).
➢4. Examinar o resultado para ter precisão (testes e garantia da
qualidade).
Engenharia de Software 
130
1 . Compreenda o problema. Algumas vezes é difícil de admitir, porém, a maioria de
nós é arrogante quando nos é apresentado um problema. Ouvimos por alguns segundos
e então pensamos: “Ah, sim, estou entendendo, vamos começar a resolver este
problema”. Infelizmente, compreender nem sempre é assim tão fácil. Vale a pena
despender um pouco de tempo respondendo a algumas questões simples:
• Quem tem interesse na solução do problema? Ou seja, quem são os interessados?
• Quais são as incógnitas? Que dados, funções e recursos são necessários para resolver
apropriadamente o problema?
• O problema pode ser compartimentalizado? É possível representá-lo em problemas
menores que talvez sejam mais fáceis de ser compreendidos?
• O problema pode ser representado graficamente? É possível criar um modelo
analítico?
Engenharia de Software 
131
2 . Planeje a solução. Faça um pequeno projeto e indaque:
• Você já viu problemas similares anteriormente? Existem padrões que são reconhecíveis
em uma potencial solução? Existe algum software que implemente os dados, as funções
e características necessárias?
• Algum problema similar já foi resolvido? Em caso positivo, existem elementos da
solução que podem ser reutilizados?
• É possível definir subproblemas? Em caso positivo, existem soluções aparentes e
imediatas para eles?
• É possível representar uma solução de maneira que conduza a uma implementação
efetiva? É possível criar um modelo de projeto?
Engenharia de Software 
132
3. Execute/leve adiante o plano. O projeto elaborado que já foi criado
serve como um mapa para o sistema que se quer construir. Podem surgir
desvios inesperados e é possível que se descubra um caminho ainda melhor
à medida que se prossiga, porém, o “planejamento” nos permitirá que
continuemos sem nos perder.
• A solução se adéqua ao plano? O código-fonte pode ser atribuído ao
modelo de projeto?
• Cada uma das partes componentes da solução está provavelmente
correta? O projeto e o código foram revistos, ou, melhor ainda, provas da
correção foram aplicadas ao algoritmo?
Engenharia de Software 
133
4.Examine o resultado. Não se pode ter certeza de que uma solução
seja perfeita, porém, pode-se assegurar que um número de testes
suficiente tenha sido realizado para revelar o maior número de erros
possível.
• É possível testar cada parte componente da solução? Foi implementada
uma estratégia de testes razoável?
• A solução produz resultados que se adéquam aos dados, às funções e
características necessários? O software foi validado em relação a todas as
solicitações dos interessados?
Engenharia de Software 
134
135
MODELOS DE DESENVOLVIMENTO DE 
SOFTWARE – CICLO DE VIDA
136
137
Modelos de Ciclo de Vida ou Modelos de Processo
• Um modelo de ciclo de vida ou modelo de processo pode ser visto como uma
representação abstrata de um esqueleto de processo, incluindo tipicamente
algumas atividades principais, a ordem de precedência entre elas e, opcionalmente,
artefatos requeridos e produzidos.
• De maneira geral, um modelo de processo descreve uma filosofia de organização de
atividades, estruturando as atividades do processo em fases e definindo como
essas fases estão relacionadas. Entretanto, ele não descreve um curso de ações
preciso, recursos, procedimentos e restrições. Ou seja, ele é um importante ponto de
partida para definir como o projeto deve ser conduzido, mas a sua adoção não é o
suficiente para guiar e controlar um projeto de software na prática.
138
Modelos de Ciclo de Vida ou Modelos de Processo
Ainda que os processos tenham de ser definidos caso a caso, de maneira geral, o ciclo de
vida de um software envolve, pelo menos, as seguintes fases:
• Planejamento: O objetivo do planejamento de projeto é fornecer uma estrutura que
possibilite ao gerente fazer estimativas razoáveis de recursos, custos e prazos. Uma vez
estabelecido o escopo de software, com os requisitos esboçados, uma proposta de
desenvolvimento deve ser elaborada, isto é, um plano de projeto deve ser elaborado
configurando o processo a ser utilizado no desenvolvimento de software.
À medida que o projeto progride, o planejamento deve ser detalhado e atualizado
regularmente. Pelo menos ao final de cada uma das fases do desenvolvimento (análise e
especificação de requisitos, projeto, implementação e testes), o planejamento como um
todo deve ser revisto e o planejamento da etapa seguinte deve ser detalhado. O
planejamento e o acompanhamento do progresso fazem parte do processo de gerência
de projeto.
139
Modelos de Ciclo de Vida ou Modelos de Processo
• Análise e Especificação de Requisitos: Nesta fase, o processo de levantamento de
requisitos é intensificado. O escopo deve ser refinado e os requisitos mais bem
definidos. Para entender a natureza do software a ser construído, o engenheiro de
softwaretem de compreender o domínio do problema, bem como a funcionalidade e o
comportamento esperados.
Uma vez capturados os requisitos do sistema a ser desenvolvido, estes devem ser
modelados, avaliados e documentados. Uma parte vital desta fase é a construção de um
modelo descrevendo o que o software tem de fazer (e não como fazê-lo).
140
Modelos de Ciclo de Vida ou Modelos de Processo
• Projeto: Esta fase é responsável por incorporar requisitos tecnológicos aos
requisitos essenciais do sistema, modelados na fase anterior e, portanto, requer
que a plataforma de implementação seja conhecida. Basicamente, envolve duas
grandes etapas: projeto da arquitetura do sistema e projeto detalhado. O objetivo
da primeira etapa é definir a arquitetura geral do software, tendo por base o
modelo construído na fase de análise de requisitos. Essa arquitetura deve
descrever a estrutura de nível mais alto da aplicação e identificar seus principais
componentes.
O propósito do projeto detalhado é detalhar o projeto do software para cada
componente identificado na etapa anterior. Os componentes de software devem
ser sucessivamente refinados em níveis maiores de detalhamento, até que
possam ser codificados e testados.
141
Modelos de Ciclo de Vida ou Modelos de Processo
• Implementação: O projeto deve ser traduzido para uma forma passível de
execução pela máquina. A fase de implementação realiza esta tarefa, isto é, cada
unidade de software do projeto detalhado é implementada.
• Testes: inclui diversos níveis de testes, a saber, teste de unidade, teste de
integração e teste de sistema. Inicialmente, cada unidade de software
implementada deve ser testada e os resultados documentados. A seguir, os
diversos componentes devem ser integrados sucessivamente até se obter o
sistema. Finalmente, o sistema como um todo deve ser testado.
142
Modelos de Ciclo de Vida ou Modelos de Processo
• Entrega e Implantação: uma vez testado, o software deve ser colocado em produção.
Para tal, contudo, é necessário treinar os usuários, configurar o ambiente de produção
e, muitas vezes, converter bases de dados. O propósito desta fase é estabelecer que o
software satisfaz os requisitos dos usuários. Isto é feito instalando o software e
conduzindo testes de aceitação. Quando o software tiver demonstrado prover as
capacidades requeridas, ele pode ser aceito e a operação iniciada.
• Operação: nesta fase, o software é utilizado pelos usuários no ambiente de
produção.
143
Modelos de Ciclo de Vida ou Modelos de Processo
• Manutenção: seguramente, o software sofrerá mudanças após ter sido entregue
para o usuário. Alterações ocorrerão porque erros foram encontrados, porque o
software precisa ser adaptado para acomodar mudanças em seu ambiente externo,
ou porque o cliente necessita de funcionalidade adicional ou aumento de
desempenho.
Muitas vezes, dependendo do tipo e porte da manutenção necessária, essa fase pode
requerer a definição de um novo processo, onde cada uma das fases precedentes é
reaplicada no contexto de um software existente ao invés de um novo.
144
Modelos de Ciclo de Vida ou Modelos de Processo
Os modelos de processo, de maneira geral, contemplam as fases Análise e
Especificação de Requisitos, Projeto, Implementação, Testes e Entrega e Implantação.
A escolha de um modelo de processo é fortemente dependente das características do
projeto. Assim, é importante conhecer alguns modelos de ciclo de vida e em que
situações são aplicáveis.
Os modelos visam definir como as etapas relativas ao desenvolvimento do software
serão conduzidas e interrelacionadas para atingir o objetivo do desenvolvimento que é a
obtenção de um produto de software de alta qualidade a um custo relativamente baixo.
Os principais modelos de ciclo de vida podem ser agrupados em três categorias
principais: modelos sequenciais, modelos incrementais e modelos evolutivos.
Para escolha de um Ciclo de Vida de Software leva-se em
conta:
natureza do projeto e da aplicação
métodos e ferramentas a serem usados
controles e produtos que precisam ser entregues
145
Alguns ciclos de vida mais conhecidos são:
 Modelo Sequencial ou Clássico – Cascata
Cascata V
 Modelo Incremental
 Modelos Evolucionários
Prototipação 
Modelo Espiral 
MODELOS DE DESENVOLVIMENTO 
146
Ciclo de Vida Sequencial
Como o nome indica, os modelos sequenciais organizam o
processo em uma sequência linear de fases. O principal modelo
desta categoria é o modelo em cascata, a partir do qual diversos
outros modelos foram propostos, inclusive a maioria dos
modelos incrementais e evolutivos.
147
Ciclo de Vida Clássico (Cascata)
 Cada fase envolve a elaboração de um ou mais documentos, que devem
ser aprovados antes de se iniciar a fase seguinte. Assim, uma fase só
deve ser iniciada após a conclusão daquela que a precede. Uma vez que,
na prática, essas fases se sobrepõem de alguma forma, geralmente,
permite-se um retorno à fase anterior para a correção de erros
encontrados. A entrega do sistema completo ocorre em um único
marco, ao final da fase de Entrega e Implantação.
 O uso de revisões ao fim de cada fase permite o envolvimento do
usuário. Além disso, cada fase serve como uma base aprovada e
documentada para o passo seguinte, facilitando bastante a gerência de
configuração.
148
Ciclo de Vida Clássico (Cascata)
➢Este é o modelo mais simples de desenvolvimento de software,
estabelecendo uma ordenação linear no que diz respeito à
realização das diferentes etapas;
➢modelo mais antigo e o mais amplamente usado da engenharia
de software;
➢modelado em função do ciclo da engenharia convencional;
➢requer uma abordagem sistemática, sequencial ao
desenvolvimento de software.
149
Quando usar o Ciclo de Vida Clássico (Cascata)
 há casos em que os requisitos de um problema são bem compreendidos
— quando o trabalho flui da comunicação ao emprego de forma
relativamente linear.
 Essa situação ocorre algumas vezes quando adaptações ou
aperfeiçoamentos bem definidos precisam ser feitos em um sistema
existente (por exemplo, uma adaptação em software contábil exigida
devido a mudanças nas normas governamentais).
 Pode ocorrer também em um número limitado de novos esforços de
desenvolvimento, mas apenas quando os requisitos estão bem definidos
e são razoavelmente estáveis.
150
Engenharia de 
Requisitos
Análise de 
Requisitos 
Projeto 
Codificação 
Testes 
Manutenção
Cascata
151
Atividades do Ciclo de Vida Clássico
ENGENHARIA DE REQUSITOS
 envolve a coleta de requisitos em nível do 
sistema, pequena quantidade de projeto e 
análise de alto nível 
Engenharia de 
Requisitos
Análise de 
Requisitos 
Projeto 
Codificação 
Testes 
Manutenção
152
Atividades do Ciclo de Vida Clássico
ANÁLISE DE REQUISITOS DE 
SOFTWARE
 processo de coleta dos requisitos 
é intensificado e concentrado 
especificamente no software
 deve-se compreender o domínio 
da informação, a função, 
desempenho e interfaces 
exigidos
 os requisitos (para o sistema e para 
o software) são documentados e 
revistos com o cliente
Engenharia de 
Requisitos
Análise de 
Requisitos 
Projeto 
Codificação 
Testes 
Manutenção
153
Atividades do Ciclo de Vida Clássico
PROJETO
 tradução dos requisitos do software para um 
conjunto de representações 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
Engenharia de 
Requisitos
Análise de 
Requisitos 
Projeto 
Codificação 
Testes 
Manutenção
154
Atividades do Ciclo de Vida Clássico
CODIFICAÇÃO
 tradução das representações 
do projeto para uma linguagem 
“artificial” resultando em 
instruções executáveis pelo 
computador
Engenharia de 
Requisitos
Análise de 
Requisitos 
Projeto 
Codificação 
Testes 
Manutenção
155
Atividades do Ciclo de Vida Clássico
TESTES
Concentram-se:
 nos aspectosló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.
Engenharia de 
Requisitos
Análise de 
Requisitos 
Projeto 
Codificação 
Testes 
Manutenção
156
Atividades do Ciclo de Vida Clássico
MANUTENÇÃO
 o software deverá sofrer mudanças depois que 
for entregue ao cliente 
Engenharia de 
Requisitos
Análise de 
Requisitos 
Projeto 
Codificação 
Testes 
Manutenção
 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
157
Modelo Cascata - Modelo V
158
 Uma variação na representação do modelo cascata é denominada
modelo V. Este modelo descreve a relação entre ações de garantia da
qualidade e as ações associadas à comunicação, modelagem e atividades
de construção iniciais.
 O modelo procura enfatizar a estreita relação entre as atividades de teste
(teste de unidade, teste de integração, teste de sistema e teste de
aceitação) e as demais fases do processo.
 A conexão entre os lados direito e esquerdo do modelo em V implica que,
caso sejam encontrados problemas em uma atividade de teste, a
correspondente fase do lado esquerdo e suas fases subsequentes podem
ter de ser executadas novamente para corrigir ou melhorar esses
problemas.
159
Modelo Cascata - Modelo V
160
Na realidade, não existe uma diferença
fundamental entre o ciclo de vida clássico e o
modelo V.
O modelo V fornece uma forma para visualizar
como a verificação e as ações de validação são
aplicadas ao trabalho de engenharia anterior.
Modelo Cascata - Modelo V
Limitações do Ciclo de Vida Clássico
 O modelo assume que os requisitos são inalterados ao longo do
desenvolvimento; isto em boa parte dos casos não é verdadeira, uma
vez que nem todos os requisitos são completamente definidos na etapa
de análise;
Muitas vezes, a definição dos requisitos pode conduzir à definição do
hardware sobre o qual o sistema vai funcionar; dado que muitos projetos
podem levar diversos anos para serem concluídos, estabelecer os
requisitos em termos de hardware é um tanto temeroso, dadas as
frequentes evoluções no hardware;
161
Problemas com o Ciclo de Vida Clássico
 Os requisitos devem ser estabelecidos de maneira completa, correta
e clara logo no início de um projeto. A aplicação deve, portanto, ser
entendida pelo desenvolvedor desde o início do projeto. Entretanto,
frequentemente, é difícil para o usuário colocar todos os requisitos
explicitamente. O modelo em cascata requer isto e tem dificuldade de
acomodar a incerteza natural que existe no início de muitos projetos.
162
Limitações do Ciclo de Vida Clássico
O modelo impõe que todos os requisitos sejam completamente
especificados antes do prosseguimento das etapas seguintes; em alguns
projetos, é às vezes mais interessante poder especificar completamente
somente parte do sistema, prosseguir com o desenvolvimento do
sistema, e só então encaminhar os requisitos de outras partes; isto não é
previsto a nível do modelo;
As primeiras versões operacionais do software são obtidas nas etapas
mais tardias do processo, o que na maioria das vezes inquieta o cliente,
uma vez que ele quer ter acesso rápido ao seu produto.
163
Problemas com o Ciclo de Vida Clássico
 projetos reais raramente seguem o fluxo sequencial que o modelo
propõe;
 logo no início é difícil estabelecer explicitamente todos os requisitos.
No começo dos projetos sempre existe uma incerteza natural;
o cliente deve ter paciência. Uma versão executável do software só
fica disponível numa etapa avançada do desenvolvimento. Um erro
grave, se não detectado até o programa operacional ser revisto, pode
ser desastroso.
164
Problemas com o Ciclo de Vida Clássico
 A introdução de certos membros da equipe, tais como projetistas e
programadores, é frequentemente adiada desnecessariamente. A
natureza linear do ciclo de vida clássico leva a “estados de bloqueio”
nos quais alguns membros da equipe do projeto precisam esperar que
outros membros da equipe completem tarefas dependentes.
165
Considerações do Ciclo de Vida Clássico
Os modelos sequenciais pressupõem que o sistema é entregue completo,
após a realização de todas as atividades do desenvolvimento. Entretanto, nos
dias de hoje, os clientes não estão mais dispostos a esperar o tempo
necessário para tal, sobretudo, quando se trata de grandes sistemas.
Dependendo do porte do sistema, podem se passar anos até que o sistema
fique pronto, sendo inviável esperar. Assim, outros modelos foram
propostos visando a, dentre outros, reduzir o tempo de desenvolvimento. A
entrega por partes, possibilitando ao usuário dispor de algumas
funcionalidades do sistema enquanto outras estão sendo ainda
desenvolvidas, é um dos principais mecanismos utilizados por esses
modelos, como veremos a seguir.
166
Embora o Ciclo de Vida Clássico tenha 
fragilidades, ele é significativamente 
melhor do que uma abordagem casual 
ao desenvolvimento de software
Clássico (comentários)
167
Até aqui 22/09/2020
168
Modelo Incremental
 No desenvolvimento incremental, o sistema é dividido em
subsistemas ou módulos, tomando por base a funcionalidade.
 Os incrementos (ou versões) são definidos, começando com um
pequeno subsistema funcional que, a cada ciclo, é acrescido de novas
funcionalidades.
 Além de acrescentar novas funcionalidades, nos novos ciclos, as
funcionalidades providas anteriormente podem ser modificadas para
melhor satisfazer às necessidades dos clientes / usuários.
 Vale destacar que a definição das versões (e a correspondente
segmentação e atribuição dos requisitos a essas versões) é realizada
antes do desenvolvimento da primeira versão.
169
Modelo Incremental
O modelo incremental pode ser visto como uma filosofia básica que
comporta diversas variações.
O princípio fundamental é que, a cada ciclo ou iteração, uma versão
operacional do sistema será produzida e entregue para uso ou
avaliação detalhada do cliente. Para tal, requisitos têm de ser
minimamente levantados e há de se constatar que o sistema é modular,
de modo que se possa planejar o desenvolvimento em incrementos.
O primeiro incremento tipicamente contém funcionalidades centrais,
tratando dos requisitos básicos. Outras características são tratadas em
ciclos subsequentes.
170
Modelo Incremental
 O modelo incremental combina elementos dos fluxos de processos
lineares e paralelos. O modelo de processo incremental tem seu foco
voltado para a entrega de um produto operacional com cada
incremento.
 Os primeiros incrementos são versões seccionadas do produto final,
mas eles realmente possuem capacidade para atender ao usuário e
também oferecem uma plataforma para avaliação do usuário.
171
Modelo Incremental
 O desenvolvimento incremental é particularmente útil nos casos em
que não há pessoal disponível para uma completa implementação
na época de vencimento do prazo estabelecido para o projeto.
 Os primeiros incrementos podem ser implementados com número
mais reduzido de pessoal. Se o produto essencial for bem acolhido,
então um pessoal adicional (se necessário) poderá ser acrescentado
para implementar o incremento seguinte.
172
Modelo Incremental
173
o modelo incremental 
aplica sequências 
lineares, de forma 
escalonada, à medida 
que o tempo vai 
avançando. 
Cada sequência linear gera “incrementais” (entregáveis/aprovados/liberados) do software de 
maneira similar aos incrementais gerados por um fluxo de processos evolucionários.
Modelo Incremental
Há muitas situações em que os requisitos são
razoavelmente bem definidos, mas o tamanho do
sistema a ser desenvolvido impossibilita a adoção de
um modelo sequencial, sobretudo pela necessidade
de disponibilizar rapidamente uma versão para o
usuário. Nesses casos, um modelo incremental

Outros materiais