Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

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é
indicado.
174
Vantagens do desenvolvimento Incremental
175
✓ Uma vantagem desta abordagem é a facilidade em testar o sistema,
uma vez que a realização de testes em cada nível de
desenvolvimento é, sem dúvida, mais fácil do que testar o sistema
final.
✓ Além disso, como na Prototipação, a obtenção de um sistema,
mesmo incompleto num dado nível, pode oferecer ao cliente
interessantes informações que sirvam de subsídio para a melhor
definição de futuros requisitos do sistema.
Apresentam características que possibilitam desenvolver versões cada
vez mais completas do software. Nos slides seguintes, são
apresentados dois modelos comuns em processos evolucionários.
 Prototipação
 Espiral
176
Modelos evolucionários
Modelos de processo evolucionário
processo que possibilita que o desenvolvedor crie um modelo
do software que deve ser construído.
 idealmente, o modelo (protótipo) serve como um mecanismo
para identificar os requisitos de software.
apropriado para quando o cliente definiu um conjunto de
objetivos gerais para o software, mas não identificou requisitos
de entrada, processamento e saída com detalhes.
• Prototipação
177
Prototipação
Este protótipo pode ser oferecido ao cliente em diferentes formas, a saber:
Protótipo em papel ou modelo executável em PC retratando a interface
homem máquina capacitando o cliente a compreender a forma de
interação com o software;
Um protótipo de trabalho que implemente um subconjunto dos requisitos
indicados;
Um programa existente (pacote) que permita representar todas ou parte
das funções desejadas para o software a construir.
178
fim
início
construção
produto
refinamento
protótipo
avaliação
protótipo
construção
protótipo
projeto
rápido
obtenção dos
requisitos
Prototipação - O paradigma da prototipação
179
Atividades da Prototipação
Obtenção dos Requisitos:
desenvolvedor e cliente definem os 
objetivos gerais do software, identificam 
quais requisitos são conhecidos e as áreas 
que necessitam de definições adicionais
Projeto Rápido: representação dos 
aspectos do software que são visíveis ao 
usuário (abordagens de entrada e 
formatos de saída)
fim
início
construção 
produto
refinamento 
protótipo
avaliação 
protótipo
construção 
protótipo
projeto 
rápido
obtenção 
dos 
requisitos
180
Construção Protótipo:
implementação do projeto rápido
Avaliação do Protótipo: cliente e 
desenvolvedor avaliam o protótipo 
Atividades da Prototipação
fim
início
construção 
produto
refinamento 
protótipo
avaliação 
protótipo
construção 
protótipo
projeto 
rápido
obtenção 
dos 
requisitos
181
Refinamento dos Requisitos: cliente e
desenvolvedor refinam os requisitos do
software a ser desenvolvido.
Ocorre neste ponto um processo de iteração
que pode conduzir a 1ª atividade até que as
necessidades do cliente sejam satisfeitas e o
desenvolvedor compreenda o que precisa
ser feito.
Atividades da Prototipação
fim
início
construção 
produto
refinamento 
protótipo
avaliação 
protótipo
construção 
protótipo
projeto 
rápido
obtenção 
dos 
requisitos
182
Construção Produto: 
identificados os requisitos, o 
protótipo deve ser descartado e a 
versão de produção deve ser 
construída considerando os 
critérios de qualidade. 
Atividades da Prototipação
fim
início
construção 
produto
refinamento 
protótipo
avaliação 
protótipo
construção 
protótipo
projeto 
rápido
obtenção 
dos 
requisitos
183
Problemas com a Prototipação
cliente não sabe que o software que ele vê não considerou, durante o
desenvolvimento, a qualidade global e a manutenibilidade a longo prazo.
 Não aceita bem a ideia que a versão final do software vai ser construída e "força"
a utilização do protótipo como produto final.
184
Problemas com a Prototipação
desenvolvedor frequentemente faz uma implementação
comprometida (utilizando o que está disponível) com o
objetivo de produzir rapidamente um protótipo. Depois de
um tempo ele familiariza com essas escolhas, e esquece que elas
não são apropriadas para o produto final.
185
Ainda que possam ocorrer problemas, a prototipação é um
ciclo de vida eficiente ✓
A chave é definir-se as regras do jogo logo no começo✓
O cliente e o desenvolvedor devem ambos concordar que o
protótipo seja construído para servir como um mecanismo a
fim de definir os requisitos✓
Prototipação (comentários)
186
Ciclo de Vida em Espiral
✓ engloba as melhores características do ciclo de vida Clássico e da
Prototipação, adicionando um novo elemento: a Análise de Risco;
✓ segue a abordagem de passos sistemáticos do Ciclo de Vida
Clássico incorporando-os numa estrutura iterativa que reflete
mais realisticamente o mundo real;
✓ usa a Prototipação, em qualquer etapa da evolução do produto,
como mecanismo de redução de riscos
187
Ciclo de Vida em Espiral
✓ Foi originalmente proposto por Boehm em 1988. Uma maneira
simplista de analisar este modelo é considerá-lo como um modelo
cascata onde cada fase é precedida por uma análise de risco e sua
execução é feita evolucionariamente.
✓O modelo espiral completo está ilustrado na figura a seguir. A
dimensão radial representa o custo acumulado atualizado e a
dimensão angular representa o progresso através da espiral. Cada
setor da espiral corresponde a uma tarefa (fase)do desenvolvimento.
188
Ciclo de Vida em Espiral
✓Um ciclo se inicia com a "Determinação de objetivos, alternativas e
restrições "(primeira tarefa) onde ocorre o comprometimento dos
envolvidos e o estabelecimento de uma estratégia para alcançar os
objetivos.
✓Na segunda tarefa "Avaliação de alternativas, , identificação e
solução de riscos", executa-se uma análise de risco. Prototipação é
uma boa ferramenta para tratar riscos. Se o risco for considerado
inaceitável, pode parar o projeto.
✓Na terceira tarefa ocorre o desenvolvimento do produto. Neste
quadrante pode-se considerar o modelo cascata. Na quarta tarefa o
produto é avaliado e se prepara para iniciar um novo ciclo.
189
Modelo Espiral
190
decisão de continuar ou não
direção de um 
sistema concluídoavaliação
do cliente engenharia
análise dos
riscos
planejamento
Espiral
191
Atividades do Ciclo de Vida em Espiral
Planejamento: determinação dos objetivos,
alternativas e restrições.
Análise de Risco: análise das alternativas e
identificação / resolução dos riscos.
Construção: desenvolvimento do produto no
nível seguinte.
Avaliação do Cliente: avaliação do produto e
planejamento das novas fases
avaliação
do cliente
engenharia
análise dos 
riscos
planejamento
192
Modelo Espiral Completo
193
Modelo Espiral - Considerações
194
✓ O modelo espiral é uma abordagem realista para o desenvolvimento de sistemas
e de software em larga escala. Pelo fato de o software evoluir à medida que o
processo avança, o desenvolvedor e o cliente compreendem e reagem melhor aos
riscos em cada nível evolucionário. Esse modelo usa a prototipação como
mecanismo de redução de riscos e, mais importante, torna possível a aplicação
da prototipação em qualquer estágio do processo evolutivo do produto.
✓ Mantém a abordagem em etapas, de forma sistemática, sugerida pelo ciclo de
vida clássico, mas a incorpora em uma metodologia iterativa que reflete mais
realisticamente o mundo real. O modelo espiral requer consideração direta dos
riscos técnicos em todos os estágios do projeto e, se aplicado apropriadamente,
reduz os riscos antes de se tornarem problemáticos.
 O objetivo dos modelos evolucionários é desenvolver
software de alta qualidade. Entretanto, é possível
usar um processo evolucionário para enfatizar a
flexibilidade, a extensibilidade e a velocidade do
desenvolvimento.
 O desafio para as equipes de software e seus gerentes
será estabelecer um equilíbrio apropriado entre esses
parâmetros críticos de projeto e produto e a
satisfação dos clientes (o árbitro final da qualidade de
um software).
195
Modelos evolucionários (comentários)
DESENVOLVIMENTOÁGIL
196
197
O que é? A engenharia de software ágil combina filosofia com um
conjunto de princípios de desenvolvimento. A filosofia defende a
satisfação do cliente e a entrega de incremental prévio; equipes
de projeto pequenas e altamente motivadas; métodos informais;
artefato de engenharia de software mínimos e, acima de tudo,
simplicidade no desenvolvimento geral.
Os princípios de desenvolvimento priorizam a entrega mais que
análise e projeto (embora essas atividades não sejam
desencorajadas); também priorizam a comunicação ativa e
contínua entre desenvolvedores e clientes.
DESENVOLVIMENTO ÁGIL
No começo de 2001, um grupo de 17 desenvolvedores reconhecidos se juntou em Utah,
nos EUA, para discutir maneiras de desenvolvimento mais leves com base em suas
experiências. Eles assinaram um documento chamado “Manifesto para o
Desenvolvimento Ágil de Software”.
198
Quem realiza? Os engenheiros de software e outros envolvidos no projeto
(gerentes, clientes, usuários finais) trabalham conjuntamente em uma equipe
ágil — uma equipe que se auto-organiza e que controla seu próprio destino.
Uma equipe ágil acelera a comunicação e a colaboração entre todos os
participantes (que estão a seu serviço).
DESENVOLVIMENTO ÁGIL
Por que é importante? O moderno ambiente dos sistemas e
dos produtos da área é acelerado e está em constante
mudança. A engenharia de software ágil constitui uma
razoável alternativa para a engenharia convencional voltada
para certas classes de software e para certos tipos de
projetos, e tem se mostrado capaz de entregar sistemas
corretos rapidamente.
199
Quais são as etapas envolvidas? O desenvolvimento ágil poderia ser mais bem
denominado “engenharia de software flexível”. As atividades metodológicas
básicas permanecem: comunicação, planejamento, modelagem, construção e
emprego. Entretanto, estas se transformam em um conjunto de tarefas mínimas
que impulsiona a equipe para o desenvolvimento e para a entrega (pode-se
levantar a questão de que isso é feito em detrimento da análise do problema e
do projeto de soluções).
DESENVOLVIMENTO ÁGIL
Qual é o artefato? Tanto o cliente como o engenheiro têm o
mesmo parecer: o único artefato realmente importante
consiste em um “incremento de software” operacional que
seja entregue, adequadamente, na data combinada.
Como garantir que o trabalho foi realizado corretamente? Se a equipe ágil concordar
que o processo funciona e essa equipe produz incrementos de software passíveis de
entrega e que satisfaçam o cliente, então, o trabalho está correto.
200
Fundamentos-chave:
✓ Indivíduos e interações acima de processos e ferramentas;
✓ Software funcionando acima de documentação abrangente;
✓ Colaboração com o consumidor/cliente acima de negociação de contratos,
✓ Resposta às transformações/mudanças, mais do que seguir um plano.
DESENVOLVIMENTO ÁGIL
201
Qual é a importância da metodologia ágil para as empresas?
As metodologias ágeis têm por finalidade maximizar o trabalho das equipes de projetos e
os resultados gerados aos clientes, tendo por base seus 12 princípios:
1. Ter como prioridade a satisfação do cliente por meio de entregas de valor contínuas
e rápidas;
2. Ser receptivo a alterações nos requisitos em qualquer fase do processo. Aliás,
ambientes mutáveis são empregados em toda etapa do projeto para entregar ao
cliente vantagem competitiva;
3. Realizar entregas frequentes (do produto ou serviço) no menor período de tempo
possível;
4. Manter a colaboração das partes envolvidas em todo o projeto, diariamente;
5. Fornecer o ambiente, as ferramentas e o suporte necessários aos indivíduos do
projeto, além de acreditar neles para realizar as atividades;
DESENVOLVIMENTO ÁGIL
202
6. Estimular a comunicação pessoal, que transmite as informações necessárias ao
time de colaboradores, sendo o meio mais eficiente. Nesse ponto, atenção especial
para reuniões presenciais, consideradas mais eficazes para o sucesso do projeto;
7. Um produto final de trabalho corresponde à medida final do êxito. No caso da
tecnologia, a medida primária de progresso consiste no software em funcionamento;
8. Os profissionais envolvidos no processo precisam manter um ritmo constante, de
modo indefinido, pois fluxos ágeis estimulam um desenvolvimento sustentável. Da
mesma maneira, o desenvolvimento sustentável é feito por intermédio de processos
ágeis, por meio dos quais as partes interessadas conseguem manter um ritmo
contínuo e cíclico;
DESENVOLVIMENTO ÁGIL
203
9. Manter atenção frequente à excelência de design e técnica eleva ou aprimorar a
agilidade;
10. Eliminar o máximo de esforços que não geram valor ao produto, pois a simplicidade
é fundamental;
11. Equipes auto-organizáveis propiciam os melhores designs e arquiteturas, além de
atenderem aos requisitos do projeto,
12. Por meio de intervalos regulares, o time de colaboradores do projeto reflete sobre
como melhorar a sua eficiência e eficácia para otimizar o seu comportamento.
DESENVOLVIMENTO ÁGIL
204
✓ Esses princípios geram benefícios às empresas, como aumento na satisfação do
público e comunicação ativa entre os participantes do projeto e os clientes. Isso pode
reduzir custos.
✓ Além do mais, há grande enfoque em prazos, de modo que é possível sincronizar o
cronograma de execução de orçamento do projeto com as etapas e entregas aos
clientes.
DESENVOLVIMENTO ÁGIL
205
Existem métodos que se utilizam de processos ágeis para fortalecerem as suas
abordagens, tornando os procedimentos em que são aplicados mais eficientes. Veja
alguns exemplos adiante.
✓ Kanban
Kanban, termo de origem japonesa que significa literalmente “cartão” ou “sinalização”.
Seu conceito está relacionado ao uso de cartões — posteriormente de post-it, luzes, caixas
vazias, etc — para indicar o status de transportes ou fluxos de produção em companhias
de fabricação em série.
✓ Lean
A Metodologia Lean é anterior ao manifesto ágil, tendo surgido no Japão do pós-guerra,
em indústrias automobilísticas que desejavam ser mais produtivas. Por compreender
modelos de processos enxutos, com poucos desperdícios, essa abordagem é compatível
com as metodologias ágeis.
DESENVOLVIMENTO ÁGIL 
Métodos de uso relacionados à metodologia ágil
206
✓ Scrum
Scrum consiste em uma metodologia ágil para planejamento e gerenciamento de
projetos (especialmente de software). Nele, cada projeto é segmentado em ciclos,
geralmente mensais, conhecidos como sprints, que consistem em um time box (caixa de
tempo) ou um intervalo em que um conjunto de atividades deve ser realizado.
No Scrum, os projetos são divididos em ciclos (tipicamente mensais) chamados de
Sprints. O Sprint representa um Time Box dentro do qual um conjunto de atividades deve
ser executado. Metodologias ágeis de desenvolvimento de software são iterativas, ou
seja, o trabalho é dividido em iterações, que são chamadas de Sprints no caso do Scrum.
DESENVOLVIMENTO ÁGIL - Scrum
Métodos de uso relacionados à metodologia ágil
207
✓ As funcionalidades a serem implementadas em um projeto são mantidas em uma lista
que é conhecida como Product Backlog. No início de cada Sprint, faz-se um Sprint
Planning Meeting, ou seja, uma reunião de planejamento na qual o Product Owner
prioriza os itens do Product Backlog e a equipe seleciona as atividades que ela será
capaz de implementar durante o Sprint que se inicia. As tarefas alocadas em um Sprint
são transferidas do Product Backlog para o Sprint Backlog.
✓ O Product Owner é a pessoa que define os itens que compõem o Product Backlog e os
prioriza nas Sprint Planning Meetings. O Scrum Team olha para o Product Backlog
priorizado, seleciona os itens mais prioritários e se compromete a entregá-los ao final
de um Sprint (iteração).
DESENVOLVIMENTO ÁGIL - Scrum
Métodos de uso relacionados à metodologia ágil
208
✓ A cada dia de uma Sprint, a equipe faz uma breve reunião (normalmente
de manhã), chamada Daily Scrum. O objetivo é disseminar conhecimento
sobre o que foi feito no dia anterior, identificar impedimentos e priorizar o
trabalhodo dia que se inicia.
DESENVOLVIMENTO ÁGIL - Scrum
Métodos de uso relacionados à metodologia ágil
209
✓ Ao final de um Sprint, a equipe apresenta as funcionalidades implementadas em uma
Sprint Review Meeting. Finalmente, faz-se uma Sprint Retrospective e a equipe parte
para o planejamento do próximo Sprint. Assim reinicia-se o ciclo. Veja a ilustração a
baixo:
DESENVOLVIMENTO ÁGIL - Scrum
210
✓ Extreme Programming – XP
A Programação Extrema é uma das metodologias ágeis mais conhecidas. Foi criada por
Kent Beck e ganhou notoriedade a partir da OOPLSA 2000 (a maior conferência
internacional de Orientação a Objetos). A primeira reação a XP foi bem controversa.
Alguns amaram (normalmente os programadores), outros odiaram. Em XP, o bom
programador se sente mais livre para fazer o que faria se não existissem regras. Ao
mesmo tempo, XP obriga o “mau” programador a se comportar de forma similar ao
bom.
DESENVOLVIMENTO ÁGIL 
Métodos de uso relacionados à metodologia ágil
211
DESENVOLVIMENTO ÁGIL - Extreme Programming – XP 
Métodos de uso relacionados à metodologia ágil
A Programação Extrema é baseada em cinco valores, alguns princípios e várias práticas.
Ela se destina a times de até dez programadores, projetos de curto e médio prazo.
Os cinco valores de XP são:
1. Comunicação – para um projeto de sucesso é necessária muita interação entre os
membros da equipe, programadores, cliente, treinador. Para desenvolver um produto,
o time precisa ter muita qualidade nos canais de comunicação. Conversas cara-a-cara
são sempre melhores do que telefonemas, e-mails, cartas ou fax.
2. Feedback – as respostas às decisões tomadas devem ser rápidas e visíveis. Todos
devem ter, o tempo todo, consciência do que está acontecendo.
212
DESENVOLVIMENTO ÁGIL - Extreme Programming – XP 
Métodos de uso relacionados à metodologia ágil
3. Coragem – alterar um código em produção, sem causar bugs, com agilidade, exige
muita coragem e responsabilidade.
4. Simplicidade – para atender rapidamente às necessidades do cliente, quase sempre
um dos valores mais importantes é simplicidade. Normalmente o que o cliente quer é
muito mais simples do que aquilo que os programadores constroem.
5. Respeito – todos têm sua importância dentro da equipe e devem ser respeitados e
valorizados. Isso mantém o trabalho energizado.
213
DESENVOLVIMENTO ÁGIL - Extreme Programming – XP 
XP, valores, princípios e práticas
Em XP existem quatro papéis principais:
✓ Programadores – foco central da metodologia, sem hierarquia.
✓ Treinador (ou coach) – pessoa com mais experiência no time, responsável por
lembrar os outros das regras do jogo (que são as práticas e os valores de XP). O
treinador não precisa necessariamente ser o melhor programador da equipe e sim o
que mais entende da metodologia XP.
✓ Acompanhador (ou tracker) – responsável por trazer para o time dados, gráficos,
informações que mostrem o andamento do projeto e ajudem a equipe a tomar
decisões de implementação, arquitetura e design. Algumas vezes o próprio coach faz
papel de tracker. Outras o time escolhe sozinho quem exercerá este papel.
✓ Cliente – em XP o cliente faz parte da equipe. Deve estar sempre presente e pronto
para responder às dúvidas dos programadores.
214
DESENVOLVIMENTO ÁGIL - Extreme Programming – XP 
Resumo das práticas:
✓ Planejamento – assim como no Scrum, existe uma fase de planejamento, quando
desenvolvedores e cliente se encontram para priorizar e estimar histórias.
✓ Fases Pequenas – cada fase é chamada de iteração (Sprint no Scrum). Elas devem
durar no máximo 30 dias, mas o ideal é que seja 15 ou até 7 dias.
✓ Design Simples – seguindo o valor simplicidade, os projetos devem ser simples e
atender a cada passo somente o que foi pedido. Nada de matar formigas com
canhão!
✓ Testes – todo desenvolvimento inclui testes.
215
DESENVOLVIMENTO ÁGIL - Extreme Programming – XP 
✓ Refatoração – é um conjunto de técnicas para modificar o código do sistema sem
alterar nenhuma funcionalidade. O objetivo é simplificar, melhorar o design, limpar,
enfim, deixar o código mais fácil de entender e dar manutenção.
✓ Programação Pareada – em XP dois programadores sentam juntos no mesmo
computador e programam juntos. Enquanto um programador digita, o outro
observa, pensa em melhorias, alternativas. Identifica erros, etc.
✓ Propriedade Coletiva – O código fonte não pertence a um único programador. Todos
da equipe são responsáveis. Todos alteram código de todos (mas sempre rodando os
testes para se certificar que nada foi quebrado).
216
DESENVOLVIMENTO ÁGIL - Extreme Programming – XP 
✓ Integração Contínua – depois de testada, cada nova funcionalidade deve ser
imediatamente sincronizada entre todos os desenvolvedores. Quanto mais frequente
for essa integração, menores são as chances de conflitos de arquivos que vários
programadores alteram simultaneamente.
✓ Semana de 40 horas – programar é uma atividade intensa e que não rende se o
programador não estiver descansado e disposto. Por isso, 40 horas de trabalho por
semana é essencial para a saúde do time.
✓ Cliente Sempre Presente – o cliente não é alguém de fora, mas sim um membro da
equipe. Ele deve estar sempre disponível e pronto para atender às dúvidas dos
desenvolvedores.
✓ Padronizações – se todo o time seguir padrões pré-acordados de codificação, mais
fácil será manter e entender o que já está feito. O uso de padrões é uma das formas
de reforçar o valor comunicação.
217
DESENVOLVIMENTO ÁGIL x DESENVOLVIMENTO TRADICIONAL
A Metodologia Tradicional possui etapas bem definidas sendo o planejamento do
projeto, uma estimativa em termos de prazo e orçamento, a execução e entrega no final.
Por exemplo:
✓ Planejamento do software (como ele ficará no final)
✓ Planejamento das atividades que serão necessárias (definição e análise dos requisitos,
programação, design, etc)
✓ Definição de prazos e custos
✓ Execução
✓ Testes
✓ Implantação
218
DESENVOLVIMENTO ÁGIL x DESENVOLVIMENTO TRADICIONAL
✓ Apesar do nome, a palavra ágil aqui não significa agilidade e sim o poder de “quebrar”
o projeto em partes menores.
✓ Ao contrário da metodologia tradicional que em várias técnicas de ciclo de vida, faz
apenas uma entrega já com o projeto final, aqui se faz entregas constantemente até
entregar todo o projeto.
✓ A preocupação com custo, qualidade e prazos são as mesmas da metodologia
tradicional, porém é possível conseguir controlar e gerenciar as mudanças que
provavelmente irão aparecer no decorrer do projeto.
✓ Na metodologia ágil o foco principal é a entrega de valor ao cliente, por isso é
priorizado a entrega, à documentação, por exemplo. Mas isso não quer dizer que não
é documentado, não planejado, assim como na tradicional. Na metodologia ágil
também existem esses aspectos, mas de maneiras diferentes. Por exemplo, o
planejamento da metodologia ágil é de forma iterativa e incremental enquanto a da
tradicional planeja com muita antecedência como será cada etapa do projeto.
✓ Dentro desta metodologia o mais utilizado e que provavelmente é o Scrum.
219
DESENVOLVIMENTO ÁGIL x DESENVOLVIMENTO TRADICIONAL
Como saber qual utilizar?
✓ Isso vai depender muito do tipo de projeto e cultura da empresa. A própria empresa
pode preferir a metodologia tradicional, ainda mais se os envolvidos do projeto não
estão acostumados a trabalhar com uma metodologia ágil, ainda que ela se aplique a
aquele projeto.
✓ O ideal é estudar o projeto, conhecer os requisitos, tecnologias a serem utilizadas…
tudo o que julgar necessário. E a partir disso tudo analisar se é melhor partir pela
metodologia ágil ou a tradicional. Em um projeto onde as necessidades do cliente
podem mudar a qualquer momento (o que é muito comum), será necessário ter a
liberdade de poder fazer mudanças necessárias tanto pelo lado do cliente quanto de
tecnologia, se precisar. Projetos que provavelmente terão mudanças constantes,
precisa ter um planejamento mais flexível, sendo assim a metodologia mais viável
seria a ágil.
220
DESENVOLVIMENTOÁGIL x DESENVOLVIMENTO TRADICIONAL
Como saber qual utilizar?
✓ A metodologia tradicional é uma boa opção em casos mais específicos, como por
exemplo em algo que precisa ser planejado e decidido desde o início. Se o projeto tem
poucas chances de ter mudanças e com baixo risco, o ideal é ter um plano de projeto
mais detalhado antes de iniciar.
Vale lembrar que a escolha da metodologia é importante não somente para se ter
sucesso no processo, mas principalmente, na entrega do produto. As duas
metodologias têm vantagens e podem ser utilizadas até mesmo de forma conjunta,
convivendo perfeitamente bem, até mesmo porque o foco das duas é a otimização de
projetos. A escolha entre a metodologia tradicional e ágil não precisa ser um conflito.
Deve-se respeitar às premissas das duas metodologias e saber o que cada uma pode
agregar aos objetivos de cada projeto.
Concluindo…
Até aqui 29.09.2020
221
222
RAPID APPLICATION DEVELOPMENT- RAD
223
✓ Rapid Application Development
(RAD) ou Desenvolvimento
Rápido de Aplicação é um
modelo de processo de
desenvolvimento de software
incremental, que enfatiza um
ciclo de desenvolvimento curto.
Foi registrado por James Martin,
em 1991.
224
CARACTERISTICAS
✓ É um processo de desenvolvimento de aplicações de forma rápida com objetivos
bem definidos e análise de requisitos extremamente bem alinhada. Esse modelo
enfatiza um ciclo de desenvolvimento curto, com o intuito de ter um
desenvolvimento melhor e mais rápido.
✓ No desenvolvimento incremental, uma das características de RAD, o sistema é
dividido em módulos, tomando por base a funcionalidade. Tendo os incrementos
definidos, a cada ciclo é acrescido de novas funcionalidades ou até mesmo
modificações, caso seja necessário.
✓ Outra característica é justamente essa maleabilidade de adaptação dos processos e
a capacidade de se manter em constante evolução.
225
✓ O Modelo RAD é uma adaptação de “alta velocidade” do modelo em cascata, no qual
o desenvolvimento rápido é conseguido com o uso de uma abordagem de construção
baseada em componentes.
✓ No modelo RAD a comunicação trabalha para entender os problemas do negócios e as
características informais que o software precisa acomodar.
✓ O planejamento é essencial, porque várias equipes de software trabalham em
paralelo em diferentes funções do sistema.
✓ A modelagem abrange três das fases principais – modelagem de negócios,
modelagem dos dados e modelagem dos processos.
✓ A implantação estabelece a base das iterações subsequentes se necessárias.
✓ Se uma aplicação comercial pode ser modularizada de modo a permitir que cada
função principal possa ser completada em menos de três meses é uma candidata ao
RAD.
226
✓ A aplicabilidade do modelo em uma empresa exige recursos humanos suficiente
para todas as equipes. Clientes e desenvolvedores também devem estar
comprometidos com as atividades do processo a fim de finalizar a construção do
produto num prazo curto.
✓ Importante: Aplicações que não são passíveis de modularização não acondicionam
processos instanciados a partir do modelo RAD. Lembre-se também que, durante o
desenvolvimento, os módulos devem ser integrados, esta integração exige que as
regras de interfaces sejam bem definidas e respeitadas.
✓ As fases de modelagem e geração da aplicação são executadas por diversas equipes.
Essa divisão otimiza tempo, além do reaproveitamento de módulos prontos que faz
com que o desenvolvimento cumpra prazos curtos. Por fim, ocorre a integração
desses componentes.
227
O RAD tem uma capacidade muito grande de potencializar o desempenho dos
profissionais da equipe. Algumas outras VANTAGENS são:
✓ economia de tempo
✓ progresso mensurável
✓ trabalho com modelos
✓ integração mais rápida de sistemas
✓ feedback constante
228
Modelo RAD
229
A abordagem RAD tem DESVANTAGENS:
✓ Se uma aplicação não puder ser modularizada de modo que cada função principal
seja completada em menos de 3 meses, não é aconselhável o uso do RAD;
✓ Para projetos grandes (mas escaláveis) o RAD exige recursos humanos suficientes
para criar o número correto de equipes, isso implica um alto custo com a equipe;
✓ O envolvimento com o usuário tem que ser ativo;
✓ Comprometimento da equipe do projeto;
✓ O RAD não é aconselhável quando os riscos técnicos são altos e não é indicada
quando se está testando novas tecnologias ou quando o novo software exige alto
grau de interoperabilidade com programas de computador existentes. Falta de
prazo pode implicar qualidade reduzida, e há necessidade de habilidade maior dos
desenvolvedores, e suporte maior da gerência e dos clientes;
230
✓ Custo do conjunto de ferramentas e hardware para rodar a aplicação;
✓ Mais difícil de acompanhar o projeto(pois não existe os marcos clássicos);
✓ Menos eficientes;
✓ Perda de precisão científica (falta de métodos formais);
✓ Pode acidentalmente levar ao retorno das práticas caóticas no desenvolvimento;
✓ Funções desnecessárias (reuso de componentes);
✓ Requisitos podem não se encaixar (conflitos entre desenvolvedores e clientes);
✓ Padronização (aparência diferente entre os módulos e componentes);
✓ Sucessos anteriores são difíceis de se reproduzir.
231
✓ Um ponto muito importante é que a aplicação deve
possuir requisitos muito bem definidos;
✓ A performance não é o mais importante;
✓A distribuição do produto é pequena;
✓O âmbito do projeto é restrito;
✓O sistema pode ser dividido em vários módulos
independentes;
✓Quando envolve poucos riscos técnicos.Quando devo USAR?
232
✓ A aplicação precisa interagir com outros programas;
✓ A distribuição do produto será em grande escala;
✓ Para se construir sistemas operacionais (confiabilidade
exigida alta demais)
✓ Jogos de computador (performance exigida muito alta)
✓ Riscos tecnológicos muito altos;
✓ O sistema não pode ser modularizado.
Quando devo
EVITAR?
233
PU - Processo Unificado
234
Principal Ideia:
✓ Desenvolvimento Iterativo e Incremental - O PU utiliza um paradigma evolucionário para
o desenvolvimento de softwares.
✓ O ciclo de vida iterativo é baseado em refinamentos e incrementos sucessivos a fim de
convergir para um sistema adequado. Em cada iteração incrementa-se um pouco mais o
produto, baseando-se na experiência obtida nas iterações anteriores e no feedback do
usuário.
✓ Cada iteração pode ser considerada um miniprojeto de duração fixa, sendo que cada um
destes inclui suas próprias atividades de análise de requisitos, projeto, implementação e
testes.
✓ O processo unificado (Unified Process - UP) de desenvolvimento de software é o conjunto
de atividades necessárias para transformar requisitos do usuário em um sistema de
software.
✓ O Processo Unificado (PU) surgiu como um processo popular para o desenvolvimento de
software visando à construção de sistemas orientados a objetos (o RUP – Rational Unified
Process é um refinamento do PU).
235
O resultado de cada iteração é um sistema executável, porém incompleto. Ele não está pronto para
ser colocado em produção e pode continuar nesta situação ainda por muitas iterações. Vale ressaltar
também que cada iteração produz um sistema com qualidade de produto final, e não um protótipo.
236
Realimentação e Adaptação: A chave para o sucesso!
Ao invés de combater a inevitável mudança que ocorre no desenvolvimento de
software (principalmente nas fases iniciais), o PU prega uma atitude de aceitar a
mudança e a adaptação como fatores inevitáveis e, de fato, essenciais. Não se deve
tentar especificar completa e corretamente o sistema de uma só vez, com a ideia de
criar um conjunto congelado de requisitos.
Em cada iteração é escolhido um pequeno subconjunto de requisitos, os quais são
rapidamente projetados, implementados e testados pelos usuários. Isso leva a uma
realimentação rápida - baseada em dados concretos de usuários, desenvolvedores e
testes – que possibilita modificar ou adaptar a compreensão dos requisitos do
projeto.
237
Os usuários finais podem ver um sistema parcial, utilizá-lo e assim terão mais
subsídios paracriticar ou aprovar. Esse ciclo de avaliações e detecção de falhas
não traduz um erro, mas sim, representam um modo hábil de progredir e
descobrir o que é de real valor para os interessados no projeto. Além de melhorar
a compreensão dos requisitos, a implementação precoce possibilita detectar se o
projeto está no caminho certo ou, por exemplo, se alguma mudança na arquitetura
central deve ser feita.
Consequentemente o trabalho progride por meio de uma série de ciclos
estruturados em construção-realimentação- adaptação. É melhor resolver e por à
prova as decisões arriscadas e fundamentais de projeto logo no início e o
desenvolvimento iterativo fornece o mecanismo para isso.
238
CARACTERÍSTICAS:
✓ Iterativo e Incremental - O Processo Unificado é um processo Iterativo e
Incremental. As fases de Elaboração, Construção e Transição são divididas em
uma série de interações. (A fase de Iniciação também pode ser dividida em
iterações para grandes projetos). Cada iteração resulta em um incremento, que é
uma versão do sistema que contém funcionalidades adicionais ou melhoradas
em comparação com a versão anterior.
✓ Dirigido por Casos de Uso - No Processo Unificado, Casos de Uso são usados
para capturar requisitos funcionais e refinar o conteúdo das iterações. Cada
iteração tem um conjunto de casos de uso ou cenários de requisitos durante
todo o tempo de implementação, teste e desenvolvimento.
239
✓ Centrado na Arquitetura - O Processo Unificado insiste que a Arquitetura deve estar
no centro dos esforços da equipe do projeto, para dar forma ao sistema. Uma vez que
não existe um modelo único suficiente para cobrir todos os aspectos do sistema, o
Processo Unificado suporta múltiplas visões e modelos arquiteturais.
✓ Focado no Risco - O Processo Unificado requer que a equipe do projeto concentre-se
em enfrentar os Riscos mais críticos no início do ciclo de vida do projeto. As entregas
de cada iteração, especialmente na fase de Elaboração, devem ser selecionadas de
forma a garantir que os maiores riscos sejam tratados em primeiro lugar.
240
Ele é baseado em componentes, o que significa o sistema ser construído a partir
de componentes de software interconectados via interfaces muito bem definidas.
O processo unificado utiliza a Linguagem de Modelagem Unificada (Unified
Modeling Language – UML) no preparo de todos os artefatos do sistema.
241
O processo unificado de software possui 4 fases:
1. Fase da Concepção:
o Abrange atividades de comunicação com os clientes e de planejamento. Em colaboração
com os clientes e usuários finais , os requisitos de negócio para o software são
identificados, um rascunho de arquitetura é proposto.
o Os requisitos de negócios são escritos por meio de casos de uso preliminares. Um caso de
uso descreve uma sequência de ações que são realizadas por um ator.
o Não deve existir aqui a pretensão de especificar de forma detalhada requisitos, a ideia é
ter uma visão inicial do problema, estimar de forma vaga esforço e prazos e determinar se
o projeto é viável e merece uma análise mais profunda.
242
2. Fase de elaboração:
o Na fase de elaboração todos (ou a grande maioria dos requisitos) são levantados em
detalhes. Numa primeira iteração um ou dois requisitos, os de maior risco e valor
arquitetural, são especificados em detalhes. Estes são implementados e servem como
base de avaliação junto ao usuário e desenvolvedores para o planejamento da próxima
iteração. Em cada nova iteração na fase de elaboração pode haver um seminário de
requisitos, onde requisitos antigos são melhor esclarecidos e novos são detalhados.
o Ao fim da fase, 90% dos requisitos foram levantados em detalhes, o núcleo do sistema foi
implementado com alta qualidade, os principais riscos foram tratados e pode-se então
fazer estimativas mais realistas.
o Refina e expande os casos de uso preliminares que foram desenvolvidos como parte da
fase de concepção e expande a representação arquitetural para incluir cinco visões
diferentes do software – o modelo de caso de uso, o modelo de análise, o modelo de
projeto, o modelo de implementação e o modelo de implantação.
243
3. A fase da construção:
o implementação iterativa dos elementos restantes de menor risco e mais fáceis e
preparação para a implantação.
o É idêntica as atividades de construção definidas pelos modelos genéricos, essa fase
desenvolve ou adquire componentes de software que vão tornar cada caso de uso
operacional para os usuários finais. Todas as características e funções necessárias e
requeridas do incremento de software serão implementadas no código fonte. À
medida que os componentes são implementados , testes unitários são realizados.
4. Fase de Transição: Testes finais e implantação. Abrange os últimos estágios da vida
genérica de construção e a primeira parte genérica da atividade de implantação. O
software é dado ao usuário final para testes beta e relatórios de feedback do usuário
sobre defeitos e modificações necessárias.
244
Esboço do cronograma de um PU
245
Resumindo, os principais BENEFÍCIOS do PU são:
✓ Mitigação precoce, ao invés de tardia, de altos riscos;
✓ Progresso visível desde o início;
✓ Realimentação, envolvimento do usuário e adaptação imediatos, levando a um sistema
refinado que atenda, de forma mais adequada, às reais necessidades dos interessados;
✓ A complexidade é administrada; a equipe não é sobrecarregada pela “paralisia da
análise” ou por passos muito longos e complexos;
✓ O aprendizado obtido em uma iteração pode ser usado para melhorar o próprio
processo de desenvolvimento.
246
Conclusão
✓ O Processo Unificado foi criado para ser um processo ágil de desenvolvimento e
prega uma abordagem realística para a condução de um projeto. Ao contrário do
modelo em cascata, onde cada etapa do ciclo de vida é realizada integralmente e
de uma só vez (e que é mais apropriado para a construção de prédios do que para
softwares), no PU as atividades são repetidas quantas vezes forem preciso, em
ciclos organizados.
✓ Não há um plano detalhado para todo um projeto. Há um plano de alto nível
(chamado Plano de Fases) que estima a data de término do projeto e outros
marcos de referência principais, mas ele não detalha os passos de granularidade
fina para se atingir tais marcos. Um plano detalhado (chamado Plano de Iterações)
somente planeja a iteração a ser feita em seguida. O planejamento detalhado é
feito de forma adaptativa, de iteração para iteração.
247
EXERCÍCIOS
A empresa de software PAPAQUITOS SA pegou um projeto de desenvolvimento que
requer um desenvolvimento de alta velocidade, visando essa característica o
engenheiro de software dividiu esse desenvolvimento em iterações, com duração
cada uma delas de 60 a 90 dias e distribui isso por várias equipes. Que modelo de
desenvolvimento esse engenheiro usou?
A) Incremental
B) Espiral
C) RAD
D) Prototipação
E) Cascata
248
O processo unificado (PU) compactou as fases do processo genérico em 4 fases, quais
são elas?
A) Concepção, Planejamento, Modelagem, Construção
B) Concepção, Elaboração, Construção, Implantação
C) Concepção, Elaboração, Construção, Transição
D) Planejamento, Elaboração, Comunicação, Construção
E) Comunicação, Planejamento, Construção e Implantação
249
Na fase de Concepção do modelo PU (Processos Unificados) podemos descrever os
requisitos de negócio através das preliminares (artefatos):
A) Diagrama Atividade
B) Diagrama Sequência
C) Diagrama Estado
D) Diagrama Casos de Uso
E) Diagrama Classes
Até aqui 06.10.2020
250
251
Processo Unificado da Rational - RUP
252
Desafio:
Um grande problema nos projetos atuais é o grande dinamismo e complexidade
dos negócios nos dias de hoje. Cada vez mais os sistemas são complexos e
precisam estar prontos em menos tempo. Mais do que isso, as necessidades
mudam ao longo do tempo e a especificação de um sistema provavelmente será
alterada durante seu desenvolvimento. Além disso, temos tecnologias novas
(software e hardware) surgindo a cada dia. Algumas funcionambem. Outras não.
Visando atacar estes problemas, o RUP adota as seguintes premissas básicas:
o Uso de iterações para evitar o impacto de mudanças no projeto;
o Gerenciamento de mudanças;
o Abordagens dos pontos de maior risco o mais cedo possível.
253
✓ O Processo Unificado da Rational conhecido como RUP (Rational Unified Process), é
um processo proprietário de engenharia de software criado para apoiar o
desenvolvimento orientado a objetos, fornecendo uma forma sistemática para se
obter vantagens no uso da UML. Foi criado pela Rational Software Corporation e
adquirido em fevereiro de 2003 pela IBM.
✓ O principal objetivo do RUP é atender as necessidades dos usuários garantindo uma
produção de software de alta qualidade que cumpra um cronograma e um
orçamento previsíveis. Assim, o RUP mostra como o sistema será construído na fase
de implementação, gerando o modelo do projeto e, opcionalmente, o modelo de
análise que é utilizado para garantir a robustez.
✓ O RUP define perfeitamente quem é responsável pelo que, como as coisas deverão
ser feitas e quando devem ser realizadas, descrevendo todas as metas de
desenvolvimento especificamente para que sejam alcançadas.
Processo Unificado da Rational - RUP
254
Características:
✓ Utiliza uma abordagem de orientação a objetos em sua concepção e é projetado e
documentado utilizando a notação UML para ilustrar os processos em ação.
✓ Suas características principais: Iterativo e Incremental.
✓ Inicialmente foi desenvolvido e comercializado pela Rational, e desde 2003 pertence
a IBM.
✓ O RUP utiliza pequenos ciclos de projetos (mini-projetos) que correspondem à uma
iteração e que resultam em um incremento no software. Iterações referem-se a
passos e incrementos à evolução do produto.
Processo Unificado da Rational - RUP
255
✓ Derivado dos trabalhos sobre UML e do Processo Unificado de
Desenvolvimento de Software, ele traz elementos de todos os
modelos genéricos de processo, apoia a iteração e ilustra boas
práticas de especificação e projeto (Sommervillie 2007).
✓ Ele captura seis das melhores práticas no desenvolvimento de
software de forma satisfatória para uma grande faixa de projetos
e organizações (Krutchten 2003).
Processo Unificado da Rational - RUP
256
As melhores práticas abordadas são as seguintes (Sommerville 2007):
1. Desenvolver o software iterativamente: planejar os incrementos de software com base
nas prioridades do cliente e desenvolver e entregar o mais cedo possível às características
de sistema de maior prioridade no processo de desenvolvimento.
2. Gerenciar Requisitos: documentar explicitamente os requisitos do cliente e manter
acompanhamento das mudanças desses requisitos. Analisar o impacto das mudanças no
sistema antes de aceitá-las.
3. Usar arquiteturas baseadas em componentes: Estruturar a arquitetura do sistema com
componentes, reduzindo a quantidade de software a ser desenvolvido e,
consequentemente, reduzir custos e riscos.
Processo Unificado da Rational - RUP
257
4. Modelar software visualmente: usar modelos gráficos de UML para apresentar as visões
estática e dinâmica do software.
5. Verificar continuamente a qualidade do software: garantir que o software atenda aos
padrões de qualidade da organização.
6. Controlar as mudanças do software: gerenciar as mudanças do software, usando um
sistema de gerenciamento de mudanças, procedimentos e ferramentas de gerenciamento
de configuração.
Processo Unificado da Rational - RUP
258
Alcançando as melhores práticas:
✓ Abordagem iterativa.
✓ Guia para atividades e artefatos.
✓ Processo focado na arquitetura.
✓ Casos de uso dirigem o projeto e a implementação.
✓ Modelos simplificados de sistemas.
Processo Unificado da Rational - RUP
259
Processo Unificado da Rational – RUP
Conceitos básicos 
Trabalhador – Worker
✓O trabalhador define o comportamento e as
responsabilidades de um indivíduo, ou um
conjunto de indivíduos trabalhando em uma
equipe, dentro do contexto de uma organização
de software;
✓O trabalhador representa um cargo executado
por indivíduos em um projeto e define como
eles devem realizar o trabalho;
✓ Exemplos: engenheiros de requisitos, analistas
de sistemas, gerentes de projetos, arquitetos de
software, testadores, entre outros.
260
Processo Unificado da Rational – RUP
Conceitos básicos 
Atividade – Activity
✓Uma atividade é uma unidade de trabalho que
um indivíduo que representa um trabalhador é
encarregado de executá-la;
✓Uma atividade tem uma finalidade clara,
usualmente expressa em termos de criação ou
atualização de algum artefato, como um modelo,
uma classe, um plano.
261
Processo Unificado da Rational – RUP
Conceitos básicos 
Artefatos - Artifacts
✓Atividades têm artefatos com entrada e saída;
✓Um artefato é um produto de trabalho do processo. Trabalhadores usam artefatos para
executar suas atividades, e produzem artefatos durante a execução de suas atividades;
✓Artefatos são de responsabilidades de um único trabalhador, em um processo, cada
porção de informação é de responsabilidade de uma pessoa específica.
262
Processo Unificado da Rational – RUP
Trabalhador, Atividade e Artefato
263
Processo Unificado da Rational - RUP
O RUP, além de uma metodologia, é um produto comercializado pela Rational, que é
uma grande documentação baseada em hipertexto (HTML). Do conteúdo deste material,
destaca-se os seguintes assuntos:
Workflows: Cada workflow é descrito em detalhe, apresentando passo a passo as
tarefas, subprodutos a serem gerados e papéis de profissionais envolvidos. Cada tarefa,
subproduto e papel é descrito em detalhe. Este modelo pode ser seguido à risca ou
adaptado conforme sua necessidade específica.
Tarefas: Cada tarefa é descrita em detalhe, incluindo que papel é responsável por ela, a
qual workflow ela pertence e quais são os subprodutos de entrada e saída.
264
Processo Unificado da Rational - RUP
Modelo de equipe: Os diversos papéis necessários no projeto são descritos em detalhe.
Assim como no MSF, cada papel pode ser representado por mais de uma pessoa, ou
uma pessoa pode ter mais de um papel, dependendo da carga de trabalho necessário.
Porém o RUP aborda os papéis em um maior nível de detalhe. Ao todo são mais de 30.
Exemplos de papéis são: analista de sistemas, analista de negócio, etc.
Modelos de documentos: O RUP apresenta modelos e exemplos para os diversos
documentos (artifacts) gerados ao longo do projeto. Estes documentos são descritos em
detalhe, assim como as tarefas que os geram e as que os utilizam. Para os usuários das
ferramentas Rational, existe um recurso adicional e-coach, que orienta o usuário a usar
ferramentas como o Requisite Pro passo a passo. Os documentos são totalmente
compatíveis com a UML, o que reforça a questão de padronização.
265
Processo Unificado da Rational – RUP
No Processo Unficado Rational existem nove Disciplinas, que são divididas em seis
disciplinas de Processo e três de Suporte:
✓ As Disciplinas de Processo são:
o Modelagem de Negócio;
o Requisitos;
o Análise de Projeto;
o Implementação;
o Testes;
o Implantação.
✓ As Disciplinas de Suporte são:
o Gerenciamento de Configuração e Alteração;
o Gerenciamento de Projetos;
o Ambiente.
266
Processo Unificado da Rational – RUP
Estrutura Básica do RUP - Nesta metodologia, o projeto passa por 4 fases básicas. Estas fases
são:
1. Iniciação - entendimento da necessidade e visão do projeto;
2. Elaboração - especificação e abordagem dos pontos de maior risco;
3. Construção - desenvolvimento principal do sistema;
4. Transição - ajustes, implantação e transferência de propriedade do sistema.
267
Processo Unificado da Rational – RUP
✓ Apesar de parecer um modelo em cascata, na verdade cada fase é composta de
uma ou mais iterações, o que se assemelha a um modelo em espiral. Estas
iterações são em geral curtas (1-2 semanas) e abordam algumas poucas funções
do sistema. Isto reduz o impacto de mudanças, pois quanto menor o tempo,
menor a probabilidade de haver uma mudança neste período para as funçõesem questão.
✓ Além das fases e iterações, existem os workflows. Cada workflow é na verdade
uma sequência de tarefas encadeadas e relacionadas a um aspecto importante
do projeto, tal como análise do negócio, testes, etc. Os gráficos da figura
mostram a ênfase de cada workflow em cada etapa do projeto.
268
✓ O RUP organiza o desenvolvimento de software em quatro fases, onde são tratadas questões
sobre planejamento, levantamento de requisitos, análise, implementação, teste e implantação
do software. Cada fase tem um papel fundamental para que o objetivo seja cumprido pela
disciplinas apresentadas, distribuídos entre vários profissionais como o Analista de sistema,
Projetista, Projetista de testes, entre outros.
Processo Unificado da Rational - RUP
DISCIPLINAS
As disciplinas agrupam 
atividades relacionadas nas 
fases.
A iteração percorre todas 
as disciplinas.
Tempo
C
o
n
te
ú
d
o
269
1. Concepção / Iniciação:
o Esta fase do RUP abrange as tarefas de comunicação com o cliente e
planejamento. É feito um plano de projeto avaliando os possíveis riscos, as
estimativas de custo e prazos, estabelecendo as prioridades, levantamento dos
requisitos do sistema e preliminarmente analisá-lo. Assim, haverá uma anuência
das partes interessadas na definição do escopo do projeto, onde são examinados
os objetivos para se decidir sobre a continuidade do desenvolvimento.
o Nesta fase é estabelecido um business case[2] (Caso de uso de negócio) para o
sistema. Devem ser identificadas todas as entidades externas (pessoas e
sistemas/atores) que irão interagir com o sistema em desenvolvimento e definir
essas interações. Essas informações são utilizadas para avaliar a contribuição do
novo sistema para o negócio.
Processo Unificado da Rational - RUP
270
2. Elaboração:
o Abrange a Modelagem do modelo genérico do processo. O objetivo desta fase é
analisar de forma mais detalhada a análise do domínio do problema, revisando
os riscos que o projeto pode sofrer e a arquitetura do projeto começa a ter sua
forma básica. Indagações como "O plano do projeto é confiável?", "Os custos
são admissíveis?" são esclarecidas nesta etapa.
o Ao final desta fase deve-se ter um modelo de requisitos para o sistema (os casos
de uso da UML são especificados), uma descrição de arquitetura e um plano de
desenvolvimento do software.
Processo Unificado da Rational - RUP
271
3. Construção:
o Está fase está essencialmente relacionada ao projeto, programação e teste do
sistema. As partes do sistema são desenvolvidas paralelamente e integradas durante
esta fase. Ao final deve-se ter um sistema de software em funcionamento e a
documentação associada pronta para ser liberada para os usuários.
4. Transição:
o Abrange a entrega do software ao usuário e a fase de testes. O objetivo desta fase é
disponibilizar o sistema, tornando-o disponível e compreendido pelo usuário final. As
atividades desta fase incluem o treinamento dos usuários finais e também a
realização de testes da versão beta do sistema visando garantir que o mesmo possua
o nível adequado de qualidade.
A versão beta de um software ou produto é a versão em estágio ainda de desenvolvimento, mas que é 
considerada aceitável para ser lançada para o público, mesmo que ainda possua bugs e problemas que precisarão 
ser reparados pelos desenvolvedores antes do lançamento definitivo do produto ao mercado na sua versão final.
Processo Unificado da Rational - RUP
272
Processo Unificado da Rational – RUP
Disciplinas e Modelos
273
Processo Unificado da Rational - RUP
Cada disciplina do RUP contém um fluxo de trabalho (workflow). Um workflow é um fluxo de atividades 
de alto-nível (Workflow Details) que produzem um resultado de valor observável.
Workflow Details
Workflows Details
mostram trabalhadores, 
atividades que estes 
executam, artefatos e 
entrada e artefatos de 
saída.
Exemplo: Disciplina de Requisitos Exemplo de diagrama Workflow Details: 
Analyze the Problem
274
Processo Unificado da Rational – RUP
Como Adotar
o Com base nestes recursos a adoção do RUP pode ser feita de mais de uma maneira.
Um extremo seria usar o RUP à risca, ou seja, aplicar todos os métodos e processos
exatamente como são propostos.
o A vantagem desta abordagem é que nada deve ser alterado, pois o RUP é bem
completo e detalhado. Porém existe um preço a ser pago, pois o RUP na íntegra é
complexo.
o Esta abordagem implicaria em treinamentos, projetos piloto, etc. Propostas de
projetos de adoção do RUP são descritos no próprio produto.
275
Processo Unificado da Rational – RUP
Conclusão:
Utilizando o RUP é possível obter:
✓ Software de qualidade.
✓ Produtividade no desenvolvimento, operação e manutenção do software.
✓ Controle sobre o desenvolvimento dentro de custos, prazos e níveis de qualidade
desejados.
✓ Estimativas de prazos e custos com maior precisão.
276
ICONIX
277
✓ A Metodologia ICONIX foi elaborada por Doug Rosenberg e Kendall Scott a partir da síntese do
processo unificado pelos “três amigos” - Booch, Rumbaugh, e Jacobson o qual tem dado
suporte e conhecimento a mesma desde 1993.
✓ O ICONIX é “um processo simplificado que unifica conjuntos de métodos de orientação a
objetos em uma abordagem completa, com o objetivo de dar cobertura ao ciclo de vida”.
✓ É considerado uma metodologia pura, prática e simples, mas também poderosa e com um
componente de análise e representação dos problemas sólido e eficaz.
✓ A metodologia ICONIX é caracterizada como um Processo de Desenvolvimento de Software
desenvolvido pela ICONIX Software Engineering.
✓ O ICONIX é um processo que se situa entre o RUP – Rational Unified Process (qualificado pelos
autores como “imenso”) e o XP- eXtreme.
ICONIX
278
✓ Iconix é um processo de desenvolvimento de software - Modelo de Engenharia de
Software desenvolvido pela Iconix Software Engineering . Trata-se de uma
metodologia prática e simples, mas também poderosa e com um componente de
análise e representação de problemas sólidos e eficazes.
✓ É um processo não tão burocrático quanto o RUP, ou seja, não gera tanta
documentação, mas também não pode ser considerado tão simples como o XP.
O Iconix é um processo que está adaptado ao padrão UML, possuindo uma
característica exclusiva chamada Rastreabilidade dos Requisitos , que através dos
seus mecanismos permite checar em todas as fases se os requisitos estão sendo
atendidos.
ICONIX
279
Os principais diagramas usados no processo são:
✓ Modelo de Domínio: é uma parte essencial do ICONIX, ele constrói uma porção
estática inicial de um modelo que é essencial para dirigir a fase de design a partir
dos casos de uso.
o Basicamente o modelo de domínio consiste em descobrir objetos de um
problema do mundo real. Para realizar o modelo de domínio é preciso tentar
descobrir o maior número possível de classes existentes no problema para o
qual se pretende desenvolver o software.
ICONIX
280
Modelo de Domínio
281
✓ Modelo de Caso de Uso:
Esse modelo é usado para representar as exigências dos usuários, seja para um sistema
novo, ou partindo de um já existente. Ele deve detalhar de forma clara e legível todos
os cenários que os usuários executarão para realizar alguma tarefa.
Caso de Uso de Negócio Caso de Uso de Software
282
Até aqui 13/10/2020
283
Análise de Robustez (conceito e diagramas recuperados da visão original de Ivar Jacobson)
ICONIX: Diagramas de Robustez
RASTREABILIDADE
Diagrama de caso 
de uso
Descrição de 
casos de uso
Diagrama de 
robustez
Diagrama de 
sequência
284
Análise de Requisitos
✓ Requisitos x Casos de Uso:
o Um Caso de Uso descreve uma unidade de comportamento.
o Um Requisito descreve uma regra que governa o
comportamento.
o Um Caso de Uso satisfaz um ou mais Requisitos Funcionais.
o Um Requisito Funcional pode ser satisfeito por um ou mais Casos 
de Uso.
285
Análise e Desenho Preliminar
✓ Fazer as descrições dos Casos de Uso com os cenários principais, alternativos e
exceções
✓ Fazer a análise de robustez, isto é, para cadaCaso de Uso:
o Identificar um primeiro conjunto de objetos.
o Criar Diagramas de Robustez usando os estereótipos de classes boundary
(fronteira), control (controle), e entity (entidade).
o Atualizar o modelo do domínio, com os novos objetos e atributos descobertos.
✓ Terminar a atualização do diagrama de classes de modo a refletir a conclusão da
fase de análise (iteração mais detalhada do diagrama de domínio).
286
Diagrama de Robustez
Os Diagramas de Robustez usam três tipos de estereótipos:
✓ Objetos de fronteira/interface («boundary»)
✓ Objetos de entidade («entity»)
✓ Objetos de controle («control»)
287
✓ Diagrama de Robustez:
Essa fase tem como objetivo conectar a fase de análise com a parte de projeto
assegurando que a descrição dos casos de uso está correta, além de descobrir novos
objetos através do fluxo de ação.
Este diagrama usa três tipos de estereótipos:
o Objetos de fronteira/interface (<<>boundary>) – Permitem aos atores a comunicação com o sistema
(janela, páginas web, janelas de diálogo).
o Objetos de entidade (<<entity>>) - correspondem geralmente aos objetos identificados no modelo de
domínio.
o Objetos de controle (<<control>>) – integradores entre os objetos de fronteira e os objetos de
entidade:
▪ Contém as regras de negócio e as políticas de funcionamento do modo a potencializarem a
independência das interfaces com os utilizadores, dos esquemas das bases de dados, etc.
▪ Acabam geralmente por se convertidos em métodos de objetos de entidade ou de objetos de
fronteira, embora resultem ocasionalmente também em objetos no modelo estático.
288
289
✓ Diagrama de Sequência:
Tem como objetivo construir um modelo dinâmico entre o usuário e o
sistema. Para isso é necessário usar os objetos e suas iterações identificados
na análise robusta, porém detalhando todo o fluxo de ação.
290
✓ Diagrama de Classe:
Nada mais é do que o
modelo de domínio
que foi atualizado ao
longo de todas as fases
do processo e
representa todas as
funcionalidades do
sistema de modo
estático sem as
iterações com o
usuário.
291
O ICONIX é dividido em dois grandes setores, modelo estático e modelo dinâmico,
esses podem ser desenvolvidos paralelamente e de forma recursiva, o modelo estático
é formado pelo diagrama de domínio e de classe e o dinâmico pelos demais.
Dinâmica: Apresenta a
interação do usuário com
o sistema, utilizando dos
seguintes artefatos:
Diagrama de caso de uso,
diagrama de robustez e
diagrama de sequência.
Estática: Mostra o
funcionamento do
sistema sem nenhum
dinamismo e interação
do usuário. Utiliza dos
seguintes artefatos:
Modelo de domínio e
diagrama de classe.
292
293
294
✓ O Iconix trabalha a partir de um protótipo de Interfaces onde se desenvolvem os
diagramas de caso de uso baseados nos requisitos levantados. A partir do diagrama
do caso de uso, se faz análise robusta para cada caso de uso. Com os resultados
obtidos é possível desenvolver o diagrama de sequência e posteriormente
complementar o domínio com novos métodos e atributos descobertos.
✓ É um processo dirigido por casos de uso, como o RUP, mas não é tão burocrático, ou
seja, não gera tanta documentação.
✓ O ICONIX também é um processo relativamente compacto, como o XP, mas não
descarta a análise e projeto (design) como o XP faz.
✓ O ICONIX utiliza a linguagem de modelagem UML e possui uma característica
exclusiva chamada “Rastreabilidade dos Requisitos” (Traceability of Requirements),
mais precisamente, ele permite “obrigatoriamente” por meio de seus mecanismos,
verificar em todas as fases, se os requisitos estão sendo atendidos.
295
O ICONIX tem como base responder algumas questões fundamentais sobre o software.
Assim, utiliza técnicas da UML que auxiliam a prover a melhor resposta. As questões e as
técnicas são:
QUESTÕES TÉCNICAS
1 – Quem são os usuários do sistema (ou atores), e o 
que eles estão tentando fazer?
Utilizar casos de uso
2 – O que são, no “mundo real” (Chamado domínio de 
problema), os objetos e as associações entre eles?
Utilizar diagrama de classe de alto nível
3 – Que objetos são necessários para cada caso de uso? Utilizar análise de robustez
4 – Como objetos estão colaborando e interagindo 
dentro de cada caso de uso?
Utilizar diagrama de sequência e de 
colaboração
5 – Como será manipulado em tempo real aspectos de 
controle?
Utilizar diagrama de estado
6 – Como realmente será construído o sistema em um 
nível prático?
Utilizar diagrama de classe de baixo nível
296
As CARACTERÍSTICAS-CHAVE do ICONIX são:
✓ Uso enxuto da UML: os passos do processo estabelecem apenas um conjunto
mínimo e suficiente para que um projeto orientado a objetos seja bem sucedido.
✓ Alto grau de rastreabilidade: a cada passo do processo retorna-se de alguma forma
aos requisitos. Nenhuma parte do processo permite que o analista se afaste muito
das necessidades do usuário.
✓ Iterativo e incremental: múltiplas iterações acontecem entre o desenvolvimento
do modelo de domínio e a identificação e análise dos casos de uso. O modelo
estático é incrementalmente refinado durante as sucessivas iterações que
acontecem no modelo dinâmico.
297
Conclusões sobre ICONIX:
✓O ICONIX é um processo com uma abordagem essencialmente prática, que promove
a modelação de um sistema segundo o paradigma “Objecto Oriented”, segundo um
princípio de que se deve modelar e desenhar incrementalmente, fazendo o menos
possível em cada passo (conseguem-se especificar 80% da maioria dos sistemas com
apenas 20% de esforço de análise e desenho).
✓O ICONIX é um processo conduzido por casos, de modo iterativo e incremental
(distinguindo-se entre requisitos e casos de utilização).
✓ ICONIX não privilegia explicitamente alguns diagramas da UML, tais como diagrama de
estado ou de arquitetura, e mesmo os diagramas de colaboração.
298
PRAXIS - Processo para Aplicativos e Extensíveis Interativos
299
PRAXIS
✓ O PRAXIS é um processo de software, baseado no Processo Unificado (UP),
desenhado para dar suporte a projetos didáticos. A sigla PRAXIS significa Processo
para Aplicativos e Extensíveis Interativos, refletindo em uma ênfase no
desenvolvimento de aplicativos gráficos interativos, baseados na tecnologia
orientada a objeto.
✓ O PRAXIS propõe um ciclo de vida composto por fases que produzem um conjunto
precisamente definido de artefatos (documentos e modelos). Para construir cada um
dos artefatos, o usuário de processo (estudante ou Engenheiro) precisa exercitar um
conjunto de práticas recomendáveis. Na construção desses artefatos, o usuário do
processo é guiado por padrões e auxiliado pelos modelos de documentos e
exemplos constantes de material de apoio.
300
PRAXIS é um modelo baseado nos modelos RUP (sendo esta sua
principal referência), TSP e PSP. Na realidade, trata-se de uma
instância (implementação) do RUP, que ganhou expressão no mercado
em função de seu "berço" (DCC UFMG - Referência em computação) e
por ter sido utilizado em cursos de graduação e pós graduação por
longos períodos. Entretanto, existem limitações para sua difusão, falta
de divulgação de longo alcance, fora de MG, e a questão do "perfil
acadêmico" excessivo do modelo, caracterizado, por exemplo pelo
excessivo número de artefatos gerado ao longo do projeto (relatórios,
modelos, especificações, etc.)
301
O modelo baseia-se numa visão sobreposta, por duas fontes do mesmo fato: O
Desenvolvimento de Software.
A primeira visão é a do "fluxo técnico":
- Atividade do engenheiro de software
- Gestão de requisitos
- Análise (Projeto lógico)
- Desenho (Diagramação, UML)
- Implementação
- Engenharia de Sistemas
302
> A segunda visão é a gerencial, cuja responsabilidade é do gestor de projetos. Cada
passo/fase, é vista segundo um "script" estruturado da seguinte forma:
- Descrição
- Pré Requisitos
- Insumos
- Atividades
- Resultados Esperados
- Critérios de aprovação
303
O PRAXIS adota as mesmas fases (Concepção, Elaboração, Construção, Transição) e os
mesmos fluxos do Processo Unificado. Os principais elementosque constituem o
PRAXIS são:
✓ Passo: Divisão formal de um processo, com pré-requisitos, entradas, critérios de
aprovação e resultados definidos.
✓ Fase: Divisão maior de um processo, para fins gerenciais, que corresponde aos
pontos principais de aceitação por parte do cliente.
✓ Interação: Passo constituinte de uma fase, no qual se atinge um conjunto bem
definido de metas parciais de um projeto.
✓ Script: Conjunto de instruções que define como uma iteração deve ser executada.
✓ Fluxo: Subprocesso caracterizado por um tema Técnico ou Gerencial.
✓ Subfluxo: Conjunto de atividades mais estreitamente correlatas faz parte de um
fluxo maior.
✓ Atividade: Passo constituinte de um fluxo
✓ Técnica: Método ou prática aplicável à execução de um conjunto de atividades.
304
CLEAROOM – SALA LIMPA
305
Clearoom
O desenvolvimento de software Cleanroom é uma
filosofia de desenvolvimento de software que usa
métodos formais para apoiar inspeção rigorosa de
software.
O objetivo dessa abordagem para o
desenvolvimento de software é o software com
defeito zero. O nome Cleanroom foi derivado por
analogia com unidades de fabricação de
semicondutores, em que os defeitos são evitados na
manufatura em uma atmosfera ultra limpa.
306
A abordagem Cleanroom para desenvolvimento de software baseia-se em cinco estratégias
principais:
A abordagem Cleanroom, baseia-se nas seguintes estratégias:
1. Especificação Formal: o software a ser desenvolvido é especificado formalmente.
2. Desenvolvimento Incremental: o software é particionado em incremento
desenvolvidos e validados separadamente.
3. Programação Estruturada: um número limitado de construções abstratas de controle e
de dados são usados. O processo de codificação de um programa é um processo de
refinamentos sucessivos da especificação.
4. Verificação Estática: o software é verificado estaticamente por meio de inspeções
rigorosas de software.
5. Testes Estatísticos de Sistema: cada incremento de software é testado estatisticamente
parta determinar a confiabilidade. Esses testes são baseados num perfil operacional
desenvolvido em paralelo com a especificação do sistema.
307
CONSIDERAÇÕES:
✓ O uso desta abordagem tem levado a construção de softwares com poucos erros. Os
custos desses projetos foram comparáveis a outros projetos que usaram técnicas de
desenvolvimento convencionais.
✓ A inspeção rigorosa do programa é uma parte fundamental do processo Cleanroom.
Um modelo de estado do sistema é criado como especificação do sistema, onde o
mesmo é refinado através de uma serie de modelos de sistema detalhada para um
programa executável.
✓ Os argumentos matemáticos usados nos Cleanroom não são provas formais de
correção. Elas dependem do uso do conhecimento de semânticas formais de
linguagem de programação para construir teorias que relacionem o programa e a sua
especificação formal.
✓ O desenvolvimento Cleanroom funciona quando é praticado por engenheiro
habilidosos e comprometido.
308
Qual a principal característica do Iconix?
A) Rastreabilidade de Segurança
B) Utilização de UML
C) Rastreabilidade de Requisitos
D) Uso do Diagrama de Sequência
E) Nenhuma das anteriores
EXERCÍCIOS
309
EXERCÍCIOS
Em qual outro modelo de Processo o Praxis é baseado?
A) RUP
B) Clearoom
C) Métodos Formais
D) Espiral
E) Processo Unificado - PU
310
EXERCÍCIOS
A abordagem Cleanroom para desenvolvimento de software baseia-se em cinco
estratégias principais com exceção de:
A) Especificação informal
B) Desenvolvimento Incremental
C) Programação Estruturada
D) Verificação estática
E) Testes estáticos do sistema
311
Até aqui 20.10.2020
312
DSDM (Dynamic Systems Development Method – Método de 
desenvolvimento dinâmico de sistemas)
313
✓ Atualmente, existem diversos métodos ágeis usados no mercado, cujo o objetivo é
atender às demandas dos clientes e seus projetos de maneira mais flexível e com
maior produtividade. Um exemplo de método ágil empregado no desenvolvimento
de projetos e também no meio tecnológico é o DSDM (do inglês Dynamic Systems
Development Method).
✓ Originado no Reino Unido em 1990, através do DSDM Consortium, uma associação
de consultores e especialistas no ramo de Engenharia de Software, partilharam e
combinaram as suas melhores técnicas e experiências. Seu objetivo era a união do
desenvolvimento de uma extensão do RAD (Rapid Application Development)
independente, cuja as principais características são os prazos curtos e orçamentos
fixos.
314
✓ O DSDM é uma metodologia de desenvolvimento de sistemas dinâmicos, que visa
desenvolver projetos com a qualidade desejada sem ultrapassar limites de tempo e
orçamento. Entre suas melhores práticas estão o desenvolvimento incremental e
iterativo, exigências flexíveis, a colaboração e comunicação entre cliente e equipe,
além da integração de funcionalidades.
✓ O DSDM é uma abordagem ágil de desenvolvimento de software que fornece um
arcabouço para construir e manter sistemas que satisfazem às restrições de prazos
apertadas, por meio do uso de prototipagem incremental em um ambiente
controlado de projeto.
315
O DSDM consiste em três fases sequenciais: Pré-Projeto, Projeto e Pós-Projeto.
✓ Fase 1: O Pré-Projeto
No pré-projeto são identificados os projetos candidatos, onde são definidos o
orçamento e a assinatura do contrato. Estes critérios devem ser controlados
antecipadamente para evitar problemas futuros e em estágios mais críticos.
✓ Fase 2: O Ciclo de Vida do Projeto
Nesta etapa, o Estudo de viabilidade e o Estudo de Negócio são fases sequenciais que
se completam entre si. Após a conclusão destas fases, o sistema é desenvolvido
iterativamente e de forma incremental nos níveis de Análise Funcional, Desenho e
Implementação. Veja seguir o que representa cada fase.
316
o Estudo da Viabilidade – Estabelece requisitos básicos de negócio e restrições associados à
aplicação a ser construída. Depois avalia se a aplicação é um candidato viável para o processo
DSDM.
o Estudo do Negócio – Incrementa todo o trabalho realizado no Estudo de Viabilidade. Depois do
projeto ser declarado viável para o uso da DSDM, este nível examina o processo de
financiamento, os utilizadores envolvidos e as suas necessidades e desejos respectivos.
o Iteração de Modelos Funcionais – Onde é produzido um conjunto de protótipos incrementais
que demonstram a funcionalidade para o cliente. Neste ciclo iterativo procura-se juntar os
requisitos adicionais ao se obter feedback dos usuários conforme eles vão testando e utilizando
o protótipo.
o Iteração de Projeto e Desenvolvimento – Onde revisitamos os protótipos desenvolvidos
durante a iteração de modelos funcionais, para assegurar que cada um tenha passado por um
processo de engenharia. Assim, conseguimos oferecer aos usuários finais o valor de negócio em
termos operacionais.
o Implementação – Onde de fato colocamos a última versão do incremento de software no
ambiente operacional. Nesta última fase o incremento pode não estar 100% completo ou ainda
alterações podem ser solicitadas conforme o incremento seja alocado.
317
Fase 3: Pós-Projeto
Esta fase garante a eficiência e eficácia do projeto. Através de manutenções, melhorias e
ajustes de acordo com os princípios do DSDM. A manutenção pode ser vista como um
contínuo desenvolvimento. Invés de finalizar o ciclo de vida de apenas 1 vez,
normalmente o projeto pode retomar fases anteriores a fim de refinar ainda mais o
passo concluído.
Considerações:
O DSDM é uma ótima e segura base para equipes de desenvolvimento que têm em
mãos projetos com necessidade de execução rápida e com requisitos flexíveis. Onde
visa desenvolver projetos com a qualidade desejada sem ultrapassar limites de tempo e
orçamento. É constituída por 3 fases que ajudam na facilitação do projeto e de seu
desenvolvimento. A partir desta metodologia, é possível construir um trabalho que
agrade ao cliente, à equipe de desenvolvimento e aos utilizadores finais que terão a
oportunidade de interagir com todo o desenvolvimento do sistemade informação,
através das frequentes fases de testes.
318
FAMÍLIA CRYSTAL
319
Crystal
✓ Criada no final da década de 90 por Alistair Cockburn e Jim Highsmith, a família
Crystal se baseia na gestão de pessoas, tendo o foco na interação, habilidades,
talentos e comunicação.
✓ Segundo o criador Cockburn, as pessoas de uma equipe possuem diferentes
talentos e habilidades, sendo um diferencial durante o desenvolvimento de um
projeto, já que as pessoas têm uma importância muito grande no desempenho do
projeto. Além disso, foi criada para atender vários tipos de projetos e equipes que
precisam de táticas para resolver diversos problemas.
✓ Não há uma metodologia Crystal e sim diferentes tipos de metodologia Crystal
para diferentes tipos de projeto, por isso chamamos de família Crystal. É uma
família de metodologias que une diferentes modelos de processo, mas com
elementos centrais que são comuns a todas, além dos papéis e práticas específicas
de cada uma.
320
A criticidade é dividida em 4 níveis: (C) conforto, (D) baixo custo, (E) alto custo e (L)
risco de vida. Assim é possível escolher a melhor metodologia para aquele projeto,
adotando um conjunto de políticas adequadas para cada situação.
Algumas práticas da metodologia são:
✓ a entrega em intervalos regulares;
✓ o monitoramento do progresso;
✓ envolvimento direto com o cliente;
✓ inspeções constantes a cada incremento;
✓ os feedback que servem para ajuste do produto e da metodologia caso necessário.
321
Segundo os autores da metodologia, acredita-se que a metodologia adequada é
baseada no tamanho da equipe e nos riscos envolvidos no projeto. Por isso, a
família Crystal é dividida em cores, onde deve-se escolher a cor que mais for
apropriada para cada projeto, de acordo com o nível de criticidade e o tamanho da
equipe. Quanto mais escura for a cor, mais crítico é o sistema e, consequentemente,
será utilizada a metodologia mais “pesada”.
Por exemplo, um projeto com 50 pessoas envolvidas precisa de uma metodologia
mais pesada do que um projeto com 10 pessoas. Pode-se avaliar o projeto por duas
visões: número de pessoas e criticidade do sistema.
322
Modelagem Ágil (AM)
323
Modelagem Ágil (AM)
A modelagem Ágil foi inspirada para a utilização em softwares muito grandes. Apesar da
AM sugerir uma ampla gama de princípios de modelagem centrais e suplementares os
elementos que tornam AM peculiar são:
✓ Modelar com uma finalidade: Um desenvolvedor que usa AM deve ter uma meta
específica em mente antes de criar o modelo. Uma vez identificada a meta do modelo,
o tipo de notação a ser usada e o nível de detalhes a ser exigido serão óbvios.
✓ Usar modelos múltiplos: Há muitos modelos e notações diferentes que podem ser
usados para descrever software. Apenas um pequeno subconjunto é essencial para a
maioria dos projetos. A AM sugere que, para fornecer a visão necessária, cada modelo
apresente um aspecto diferente do sistema e que apenas aqueles modelos que
ofereçam valor seja usados.
324
✓ Viajar leve: À medida que o trabalho de engenharia de software prossegue, conserve
apenas aqueles modelos que fornecerão valor ao longo do prazo e livre-se do resto.
✓ O conteúdo é mais importante que a representação: Um modelo sistematicamente
perfeito que leva pouco conteúdo útil não são tão valioso com um modelo com notação
defeituosa, mas que fornece conteúdo valioso .
✓ Conhecer os modelos e ferramentas que você usa para criá-los: Entenda os pontos
fortes e fracos de cada modelo e das ferramentas que são usadas para criá-los
✓ Adaptar localmente: A abordagem de modelagem deve ser adaptada às necessidades
da equipe ágil.
325
Apesar da AM (Modelagem Ágil) sugerir uma ampla gama de princípios de modelagem
centrais e suplementares o que não torna AM peculiar é:
A) Modelar com uma finalidade
B) Não usar modelos múltiplos
C) O conteúdo é mais importante que a representação
D) Conhecer os modelos e ferramentas que você usa para criá-los
E) Adaptar localmente
EXERCÍCIOS
326
Princípios Centrais, Comunicação e 
Planejamento
327
De modo genérico, a prática é uma coleção de conceitos, princípios, métodos e
ferramentas da qual um engenheiro de software faz uso diariamente. A prática preenche
um modelo de processo de software com as receitas técnicas e gerenciais necessárias
para fazer o serviço.
A essência da prática da engenharia de software baseou-se na essência da resolução de
problemas que é:
1. Entenda o problema (comunicação e análise)
2. Planeje uma solução (modelagem e projeto de software)
3. Execute o plano (geração do código)
4. Examine o resultado quanto à precisão (teste e garantia da qualidade).
328
Princípios Centrais
Existem 7 princípios centrais para a prática da engenharia de software:
✓ O Primeiro Princípio: A razão por que tudo existe.
Um sistema de software existe por uma razão: para fornecer valor aos seus usuários.
Todas as decisões devem ser tomadas com isso em mente.
A pergunta deve ser feita: Isso adiciona valor real ao sistema? Se a resposta for não, não
faça. Todos os outros princípios se apoiam nesse.
✓ O Segundo Princípio: KISS(Keep it Simple,Stupid – Mantenha a coisa simples)
Todo projeto deve ser tão simples quanto possível. Isso facilita ter um sistema mais fácil
de entender e de manter, mas não quer dizer que características internas, devam ser
descartadas em nome da simplicidade. Simples também não significa rápido e sujo.
✓ O Terceiro princípio: Mantenha a Visão
Uma visão clara é essencial para o sucesso de um projeto de software. Ter um arquiteto
fortalecido que possa manter a visão e exige que ela seja respeitada ajuda a garantir um
projeto de software muito bem sucedido.
329
✓ O Quarto Princípio: O que você produz outros vão consumir
De um modo ou de outro alguém mais vai usar, manter, documentar ou precisará entender
o seu sistema. Assim, sempre especifique, projete e implemente sabendo que mais alguém
terá de entender o eu você esta fazendo.
✓ O Quinto Princípio: Esteja Aberto para o Futuro
Os sistemas de software com verdadeira “força industrial” precisam durar muito mais. Para
fazer isso com sucesso, eles precisam estar prontos para se adaptar a essas e outras
modificações. Sistemas que fazem isso com sucesso são aqueles que foram projetados dessa
forma desde o início.
✓ O Sexto Princípio: Planeje com Antecedência o Reuso
Reuso poupa tempo e esforço. O reuso de código e de projetos tem sido proclamado como
um importante beneficio do uso de tecnologia orientada a objetos.
Planejar o reuso com antecedência reduz custo e aumenta o valor tanto dos componentes
reusáveis quanto do sistema ao qual será incorporado.
✓ O Sétimo Princípio: Pense!
Raciocinar clara e completamente antes da ação quase sempre produz melhores resultados.
Quando se pensa sobre algo é mais provável que o faça corretamente. Você também
adquire conhecimento sobre como fazê-lo novamente.
330
Prática da COMUNICAÇÃO
Antes que os requisitos do cliente possam ser analisados, modelados ou especificados,
eles precisam ser coletados por meio de uma atividade de comunicação. O caminho da
comunicação para o entendimento é frequentemente cheio de buracos.
A comunicação efetiva esta entre as atividades mas desafiadoras com as quais se
confronta um engenheiro de software.
Os princípios da comunicação são:
Princípio 1: Escute
Tente se concentrar nas palavras do interlocutor em vez de na formulação de sua
resposta a essas palavras. Peça esclarecimento se algo estiver obscuro. Evite interrupções
constantes.
Princípio 2: Prepare-se Antes de se comunicar
Gaste tempo em entender o problema antes de se encontrar com os outros,
pesquise a respeito para entender a “linguagem” do usuário.
331
Princípio 3: Alguém deve facilitar a atividade
Toda reunião de comunicação deve ter um líder (facilitador) para manter a
conversa se movendo em uma direção produtiva, para mediar qualquer conflito e para
garantir que os outros princípios sejam seguidos.
Princípio 4: Comunicação face a face é melhor
Costuma funcionar melhor quandoalguma outra representação da comunicação
relevante é apresentada.
Princípio 5: Faça anotações e documente as decisões
As coisas têm um modo de escorrer por entre os dedos. Alguém que participe
da comunicação deve servir como um registrador e anotar todos os pontos importantes.
Princípio 6: Busque Colaboração
Colaboração e consenso ocorrem quando o conhecimento coletivo dos
membros da equipe é combinado para descrever funções e características do sistema.
332
Princípio 7: Conserve-se focado, modularize sua discussão
Quanto mais pessoas estiverem envolvidas em uma comunicação, mais
provavelmente aquela discussão vai ficar saltando de um tópico para o outro. O facilitador
deve manter a conversa modular, abandonando um tópico apenas depois que estiver
resolvido.
Princípio 8: Se algo não esta claro desenhe uma figura
A comunicação verbal vão só até um certo ponto, um esboço ou um desenho pode
frequentemente fornecer esclarecimento.
Princípio 9: Prossiga
A comunicação, como qualquer atividade de engenharia leva tempo. Em vez de
iterar sem fim, as pessoas que participam devem reconhecer que muito tópicos requer
discussão e devem prosseguir com a reunião sem se prender a eles nesse momento.
Princípio 10: Negociação
Existem muitas instâncias em que os engenheiros de software e os clientes devem
negociar funções e características, isso deve ser feito de modo que ambas as partes saiam
ganhando, assim sendo negociação exige comprometimento de ambas as partes.
333
Práticas do PLANEJAMENTO
A atividade de planejamento inclui um conjunto de práticas gerenciais e técnicas
que permitem a equipe de software definir um roteiro enquanto ela se move em direção
a sua meta estratégica e seus objetivos táticos.
Em muitos projetos o planejamento excessivo consome tempo e não produz
frutos, mas a falta de planejamento é uma receita para o caos. O planejamento deve ser
conduzido com moderação.
Independente do rigor com o qual o planejamento é conduzido os princípios a
seguir se aplicam:
Princípio 1: Entenda o escopo do Projeto
É impossível usar um roteiro se você não souber para onde está indo. O escopo
fornece a equipe de software um destino
Princípio 2: Envolva o cliente na atividade de planejamento
O cliente que define as prioridades e oferece as restrições do projeto, por isso
ele deve ser envolvido no planejamento.
334
Princípio 3: Reconheça que o planejamento é iterativo
Um plano de projeto nunca é gravado em pedra. Quando o trabalho tem início, é
muito provável que as coisas se modifiquem, como consequência o plano deve ser
ajustado para acomodar as modificações.
Princípio 4: Estime com base no que é sabido
A intenção de uma estimativa é fornecer uma indicação de esforço, o custo, a
duração de tarefas com base no entendimento atual da equipe quanto ao trabalho a ser
feito.
Princípio 5: Considere riscos à medida que você define o plano
Se a equipe tiver definido riscos que têm grande impacto e alta probabilidade, é
necessário planejamento e contingência.
Princípio 6: Seja realista
As pessoas não trabalham 100% do tempo do dia, sempre há ruídos em qualquer
comunicação humana, omissões, ambiguidade.
335
Princípio 7: Ajuste a granularidade a medida que você define o plano
Granularidade refere-se ao nível de detalhes introduzido à medida que um plano
de projeto é desenvolvido.
Princípio 8: Defina como você pretende garantir a qualidade
O plano deve identificar como a equipe de software pode garantir a qualidade.
Princípio 9: Descreva como você pretende acomodar as modificações
Mesmo o melhor planejamento pode ser comprometido por modificações
descontroladas. A equipe de software deve identificar como as modificações devem ser
acomodadas à medida que o trabalho prossegue.
Princípio 10: Acompanhe o plano com frequência e faça os ajustes necessários
Projetos de software se atrasam um dia de cada vez. Assim faz sentido
acompanhar o progresso diariamente, procurando áreas problemáticas e situações em que
o trabalho não esta de acordo com o programado.
336
Qual das alternativas tem um dos princípios da
Comunicação?
A) Se algo não esta claro desenhe uma figura
B) A razão porque tudo existe
C) Entenda o escopo do projeto
D) Mantenha a Visão
E) O que você produz outros vão consumir
EXERCÍCIOS
337
O princípio: "Estime com base no que é sabido", é um principio da ...
A) Comunicação
B) Modelagem e Analise
C) Construção
D) Planejamento
E) Princípios Gerais
EXERCÍCIOS
338
A descrição : "As pessoas não trabalham 100% do tempo do dia, sempre há ruídos em
qualquer comunicação humana, omissões, ambiguidade." diz respeito a qual princípio?
A) Estime com base no que é sabido
B) Busque colaboração
C) Escute
D) Seja Realista
E) Descreva como você pretende acomodar as modificações
EXERCÍCIOS
339
O Princípio “Planeje com Antecedência o Reuso” é um principio:
A) Central
B) Comunicação
C) Planejamento
D) Reuso
E) Consumismo
EXERCÍCIOS
340
Projetos de software se atrasam um dia de cada vez. Assim faz sentido aplicar um dos
princípios do planejamento que é:
A) Considere riscos à medida que você define o plano
B) Acompanhe o plano com frequência e faça os ajustes necessários
C) Defina como você pretende garantir a qualidade
D) Descreva como você pretende acomodar as modificações
E) Estime com base no que é sabido
EXERCÍCIOS
341
Finalizamos todo conteúdo programático
Muito Obrigada!!!
342
Referências
• PRESSMAN, Roger. Software Engineering: A Practitioner’s Approach,
6ª edição, Mc Graw Hill, 2005 .
• «Ariane-5G». Gunter’s Space Page. Consultado em6 September 2014.
• Naur and B. Randell, Eds.Software Engineering. Report on a
Conference held in Garmisch, Oct. 1968, sponsored by NATO
• https://ariane.cnes.fr/en/5-goodies/decollage-parfait-pour-ariane-5
• http://www.laps.ufpa.br/yomara/paginav2/aps/processo%20unificad
o%20rup.pdf
• http://www.ibm.com/software/awdtools/rup/
https://ariane.cnes.fr/en/5-goodies/decollage-parfait-pour-ariane-5

Mais conteúdos dessa disciplina