Buscar

Sistemas de Informação - Aulas EngenhariaSW - 2019

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 76 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 76 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 76 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas de Informação
Aulas 7 a 13
Engenharia de Software
 Quando vamos desenvolver um
Sistema/Software precisamos levanter
uma série de informações e requisites.
 A programação é apenas uma parte do
Sistema. Ela sozinha não é suficiente!!!
 A Engenharia de Software está aí para
tornar os sistemas mais eficientes, pois
ela inclui vários conceitos que facilitam o
desenvolvimento
Engenharia de 
Software
 A tecnologia tem evoluído numa
velocidade sem precedentes ao longo
dos anos. A sociedade fez com que ela
se encontrasse presente em
praticamente todas as coisas. Uma
dessas tendências são os chamados
eletrônicos de consumo que nos
últimos anos estão mais integrados
entre si.
 Assim, a Internet das Coisas, revolução
tecnológica que conecta objetos do
cotidiano à rede de computadores, se
consolida cada vez mais.
 O software torna se cada vez mais
presentes em nosso dia-a-dia,
tornando-se presente nos mais diversos
produtos desde os mais óbvios como os
computadores pessoais e smartphones,
até mesmo aqueles que nem nos damos
conta de que está presentes como
forno micro-ondas, por exemplo.
Todos já sabemos o que 
é um Software...
 Ele normalmente é composto por diversas 
funções, bibliotecas e módulos que geram um 
programa executável no final do processo de 
desenvolvimento e este quando executado, 
recebe algum tipo de entrada, processa os 
dados seguindo uma sequência algorítmica ou 
de instruções lógicas e mostra uma saída como 
resultado deste processamento.
 Um software bem desenvolvido é 
normalmente criado pela área de engenharia 
de software e inclui não apenas o programa de 
computador em si mas também manuais 
especificações e configurações
 Nos ambientes software esse “produto” passa 
por várias etapas como: análise econômica, 
análise de requisitos, especificação, 
codificação, teste, documentação, 
treinamento, manutenção e implantação
Então...
 Problemas relacionados com 
logística, coordenação de 
diferentes equipes ou o controle 
de máquinas e equipamentos 
tornam-se mais complexos à 
medida que se lida com projetos 
de grande dimensões. 
 A engenharia de software introduz 
métodos e ferramentas que 
facilitam o trabalho nesse tipo de 
projetos e funde diversas 
disciplinas técnicas e não-técnicas 
como engenharia de controle e 
gestão de projetos, por exemplo.
Engenharia de Software
Engenharia de 
Software
 Engenharia de Software é uma área da 
computação voltada à especificação, 
desenvolvimento, manutenção e 
criação de software com aplicação de 
tecnologias e práticas de gerência de 
projetos e outras disciplinas visando 
organização produtividade e 
qualidade.
 Empresas usam a engenharia de 
Software para incluir requisitos que 
gerenciam modelos de simulação e 
testam ferramentas para desenvolver 
produtos com sofisticação e a 
inteligência do ser humano.
Engenharia de 
Software
 Hoje dirigimos supercomputadores!!!
 Desde a performance do motor, distribuição de energia, 
controle de temperatura, controle de combustível até 
funções de segurança, são controlados por um complexo 
sistema de conexões de chips eletrônicos e milhões de 
linhas de códigos de software
Engenharia
de Software
Requisitos 
Regulamentares
$
$$
$
Engenharia de Software
Engenharia de 
Software
 Empresas podem usar 
sistemas virtuais para 
conseguir provas de 
segurança totalmente 
documentadas
Engenharia de 
Software
 A Engenharia de 
Software encapsula o 
trabalho em uma única 
plataforma 
multioperável, onde os 
times naturalmente 
colaboram.
Engenharia de 
Software
Empresas podem fazer versões digitais de seus
sistemas de engenharia, que podem ser usados no 
futuro para novos produtos
Engenharia de Software -
Resumindo
 Friedrich Bauer definiu a como engenharia de software é a 
criação e a utilização de sólidos princípios de engenharia a 
fim de obter software de maneira econômica, que seja 
confiável e que trabalhe em máquinas reais.
 A Margaret Hamilton é creditada a criação do termo 
engenharia de software.
 O próprio significado de engenharia já traz os conceitos de 
criação, construção, análise, desenvolvimento e 
manutenção.
 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
Engenharia de 
Software
 Aborda tanto questões relacionadas ao 
ambiente de desenvolvimento do 
software, como métodos, processos e 
ferramentas para sua produção. 
 Deve-se ter bastante cuidado na criação 
de um software, pois quando há um mau 
planejamento e desenvolvimento, os 
recursos a serem gastos para conserto e 
principalmente o tempo a ser 
disponibilizado para tal procedimento 
são aspectos inviáveis em qualquer 
mercado, sobretudo no tecnológico, 
onde essas duas características são 
indispensáveis.
Engenharia de Software
 O enfoque da Engenharia de Software é a 
análise e divisão do problema em pequenas 
partes, para que se possa realizar uma solução 
para cada uma delas e, depois de 
solucionadas, seja realizada a integração das 
mesmas. 
 Para todo este controle, uma série de etapas 
devem ser seguidas, denominadas ciclo de um 
software, que vai desde o planejamento até a 
entrega do produto, com o objetivo de 
cumprir todos ou, pelo menos, quase todos os 
requisitos idealizados. 
 Por ser um ciclo, as etapas não podem ser 
atropeladas sem antes se obter a verificação 
da qualidade em cada uma delas.
Princípios da Engenharia de Software
 Os princípios da engenharia de 
software constituem a base dos 
métodos, tecnologias, metodologias 
e ferramentas adotadas na prática e 
que norteiam o desenvolvimento de 
soluções de software.
 Os princípios se aplicam a um 
processo e ao produto de software 
se tornando a prática de 
desenvolvimento de software 
através da adoção de métodos e 
técnicas. Geralmente são os
métodos e técnicas que constituem 
uma metodologia que são apoiadas 
pela utilização de ferramentas.
Princípios da Engenharia de Software
 rigor e formalidade
 separação de interesses 
 modularidade 
 alta coesão 
 baixo acoplamento 
 abstração 
 antecipação a mudanças
 generalidade e 
 incrementação
Princípios da Engenharia
de Software
 Podemos considerer a engenharia de software 
como uma área criativa, porém precisamos
usar rigor e formalidade para dar
sistematização aos processos
 Rigor – aumenta a confiança no 
desenvolvimento (análises e avaliações)
 Formalidade – é o rigor no seu nível
máximo (documentação e gerenciamento)
 A Separação de Interesses envolve dominar a 
complexidade separando os problemas para 
seja possível suportar as atividades e 
processos, paralelização de atividades e 
separação de responsabilidades.
 Dividir para Conquistar!!!
Princípios da 
Engenharia de 
Software
 Usamos o princípio de Modularidade para 
dividir o software em módulos, trazendo 
a tona o conceito de sistemas modulares. 
É importante atentar que quando estamos 
trabalhando em um módulo específico 
precisa ser possível ignorar os detalhes 
dos demais módulos da solução.
 Cada módulo dever ter alta coesão, 
sendo entendido como uma unidade 
significativa. Os elementos do módulo 
devem ser fortemente relacionados entre 
si. 
 O baixo acoplamento remente a baixa 
interação de um módulo com os outros 
do sistema possibilitando que eles sejam 
percebidos como unidades separadas.
Princípios da 
Engenharia de 
Software
 A abstração é a identificação de 
aspectos importnates de um fenômeno, 
ignorando seus detalhes. Ela deve
tronar possível pensar sobre um 
ssistema através do racicínio sobre seus
módulos. Ela serve, por exemplo, para 
conseguir estimar custos de um prjeto
baseado nos projetos passados.
 A antecipação à mudanças significa ser 
capaz de suportar a evolução do 
software considerando sua arquitetura
e compatibilidade com mudanças
futuras
Princípios da 
Engenhariade 
Software
 O princípio da generalidade visa 
descobrir, durante a resolução de 
um problema, se ele faz parte de 
uma instância mais geral, podendo
sua solução ser reutilizada. O 
grande desafio está no 
balanceamento entre custo e 
performance.
 A incrementação está relacionada
a evolução de um software 
através de incrementos
estruturados. Neste caso, 
Podemos utilizer o coneceito de 
MVP muito difundido nas
metodologias ágeis.
O Papel Evolutivo do Software
 Hoje em dia o software assume um duplo papel. Ele é o produto e, ao mesmo 
tempo, o veículo para entrega do produto. 
 O software entrega o mais importante produto da nossa época - a informação!
 O software transforma dados pessoais (p. ex., as transações financeiras de 
uma pessoa) de modo que possam ser mais úteis em determinado contexto; 
gera informação comercial para melhorar a competitividade; fornece um 
portal para as redes de informação de âmbito mundial (p. ex., a Internet) e 
proporciona os meios para obter informação em todas as suas formas. 
O Papel Evolutivo do Software
Software como 
Produto
 Como produto ele disponibiliza o potencial 
de computação presente no computador 
ou, mais amplamente, numa rede de 
computadores acessível pelo hardware 
local. 
 Quer resida em um telefone celular, quer 
opere em um computador de grande 
porte, o software é um transformador de 
informação - produzindo, gerando, 
adquirindo, modificando, exibindo, ou 
transmitindo informação, que pode ser 
tão simples como um único bit ou tão 
complexa como uma apresentação em 
multimídia. 
Software como Produto
 Atualmente os engenheiros de software estão envolvidos no 
desenvolvimento de produto de software, ou seja, software que 
pode ser vendido para seus clientes.
 Existem dois tipos de softwares produtos fundamentais:
1. Produtos Genéricos: São os softwares do tipo stand-alone, produzidos por 
uma organização de desenvolvimento e vendido no mercado para 
qualquer cliente que esteja disposto a comprar.
2. Produtos sob encomenda: São os sistemas encomendados por um 
cliente. O software é desenvolvido especialmente para aquele cliente com 
as características voltadas para apenas um cliente.
Software como 
Veículo
 Como veículo usado para entrega 
do produto, o software age como 
uma base para controle do 
computador (sistemas 
operacionais), para a 
comunicação da informação 
(redes) e para a criação e o 
controle de outros programas 
(ferramentas e ambientes de 
software). 
Tipos de aplicações de software
 O software pode ser aplicado em qualquer situação para a qual um conjunto 
previamente especificado de procedimentos tenha sido definido. 
 O conteúdo e a determinação da informação são fatores importantes para 
caracterizar a natureza de uma aplicação de software. 
 Conteúdo - forma da entrada e saída da informação. 
 Por exemplo, muitas aplicações comerciais usam dados de entrada altamente estruturados 
(uma base de dados) e produzem "relatórios" formatados. 
 Determinação da informação - previsibilidade da ordem e temporização da 
informação. 
 Um programa de análise de engenharia aceita dados que têm uma ordem pré-definida, 
executa o(s) algoritmo(s) de análise sem interrupção, e produz os dados resultantes em 
forma de relatório ou de gráfico. 
Tipos de aplicações 
de software
Software de Sistemas: Software de sistema é uma 
coleção de programas escritos para servir a outros 
programas. A área de software de sistemas é 
caracterizada por interação intensa com o hardware, 
uso intenso de usuários, possui estrutura de dados 
complexas ( Exemplos: SO, Sistemas de rede)
Software de Aplicação: O software de aplicação 
consiste em programas isolados que resolvem uma 
necessidade específica do negócio da empresa ( 
Exemplo: Software de sistema de tempo real, de 
pontos de vendas)
Softwares Científicos ou de Engenharia: 
Antigamente esses eram caracterizados por 
algoritmos que processavam grandes quantidades de 
números. Hoje em dia essas aplicações estão mais 
próximas de software de sistemas. Exemplo (software 
de controle de riscos – Astronômicos, Vulcanologicos, 
da NASA)
Tipos de aplicações 
de software
Softwares Embutidos: O software embutido reside 
dentro de um produto ou sistema e é usado para 
implementar e controlar características e funções para 
o usuário final e para o próprio sistema. Os softwares 
embutidos podem realizar tarefas muito limitadas e 
também tarefas da mais alta capacidade de um 
software. (controles remotos).
Software para linha de produto: Projetado para 
fornecer uma capacidade específica a ser usada por 
muitos clientes diferentes, esse software pode focar 
para um mercado limitado e especial ou dirigir-se ao 
mercado de consumo em massa. (pacote Office, 
Windows)
Aplicações da WEB: Dos mais variados tipos.
Software para inteligência artificial: O softwares de IA 
faz uso de algoritmos não numéricos para resolver 
problemas complexos que não são passíveis de 
computação e analise direta.
Tipos de aplicações 
de software
 Software legado
 Dão suporte a funções importantes 
do negócio
 Críticos para o negócio
 A má qualidade é comum
 Projeto, código, documentação
 Histórico de mudanças mal gerido
 Evolução ao longo do tempo
 Novas necessidades
 Interoperabilidade
 Necessidade de reengenharia 
Engenharia 
reversa
 Engenharia reversa é o processo de descobrir 
os princípios tecnológicos e o funcionamento 
de um dispositivo, objeto ou sistema, através 
da análise de sua estrutura, função e 
operação. 
 Objetivamente a engenharia reversa consiste 
em, por exemplo, desmontar uma máquina 
para descobrir como ela funciona.
 Programas proprietários, ou seja, que não 
possuem seu código aberto, não permitem que 
você saiba como eles foram programados, para 
descobrir maneiras de melhorá-los ou mesmo 
copiá-los. A engenharia reversa tem condições 
de fazer análises minuciosas sobre o 
comportamento de programas, para então 
tentar reconstruí-los, descobrindo assim como 
eles funcionam internamente.
Engenharia reversa
 Interface: Engenharia reversa pode ser usado quando necessário 
um sistema efetuar interface com outro sistema e como as 
negociações entra os dois sistemas deverão ser estabelecidos. Esses 
requisitos normalmente existem para interoperabilidade.
 Melhorar deficiências de documentação: A engenharia reversa 
pode ser realizada quando a documentação de um sistema para a 
sua concepção, produção, operação ou manutenção possui 
deficiências e projetistas originais não estão disponíveis para 
melhorá-lo. Pode fornecer a documentação mais atual necessária 
para compreender o estado mais atual de um sistema de software.
 Obsolescência: Circuitos integrados muitas vezes parecem ter sido 
projetados em sistemas proprietários, obsoletos, o que significa 
que a única maneira de incorporar a funcionalidade em nova 
tecnologia é a engenharia reversa do chip existente e, em seguida, 
reprojetá-lo.
 Modernização de software: É geralmente necessária, a fim de 
compreender o estado de software existente ou legado, a fim de 
estimar adequadamente o esforço necessário para migrar 
conhecimento do sistema. Muito disso pode ser impulsionada por 
mudanças de requisitos funcionais, de conformidade ou de 
segurança.
Engenharia 
reversa
 Produtos de análise de segurança: Para examinar 
como um produto funciona, quais são as especificações 
de seus componentes, estimar os custos e identificar o 
potencial de violação de patente. Aquisição de dados 
sensíveis por desmontar e analisar o projeto de um 
componente do sistema. Outra intenção pode ser a de 
remover proteção contra cópia, a evasão de restrições 
de acesso.
 Resolução de falha: Para corrigir (ou às vezes para 
melhorar) o software que não é mais suportado por seus 
criadores (por exemplo, Abandonware).
 Criação de duplicatas não licenciadas/aprovadas: Tais 
duplicatas são chamadas de clones no domínio da 
computação.
 Fins acadêmicos/aprendizagem:Para fins de 
aprendizagem podem ser compreender as questões-
chave de um projeto mal sucedido e, posteriormente, 
melhorar o design.
Sem rodeios… 
engenharia reversa 
é descobrir como 
funciona
Reengenharia
 A reengenharia é repensar e redesenhar radicalmente os processos de 
negócios com o objetivo de conseguir grandes melhoras de desempenho, seja 
nos custos, qualidade, serviços ou tempo.
“Está na hora de parar de seguir a trilha das vacas.
Em vez de acrescentar processos ultrapassados em
hardware e software devemos, rejeitá-los e
começar de novo. Devemos fazer uma
reengenharia em nossos negócios.”
 Michael Hammer
Reengenharia
Motivações para realizar a reengenharia:
O sistema não atende mais as necessidades 
(requisitos)
 Sistema sem documentação
Modernização dos sistemas legados
 Custo muito alto para manter o sistema legado
 Código muito bagunçado e com muitos erros
 Processos de negócios muito ultrapassados
Reengenharia
Reengenharia
Problemas com prazo, planejamento e 
custos.
Prazo
CustoPlanejamento
Utopia
Processo de 
Software
“Preciso criar um app, mas 
não sei por onde começar”!
 As 6 etapas fundamentais para tirar 
um projeto de software do papel:
 Conhecer as necessidades do cliente
 Definir os requisitos
 Avaliar a viabilidade do projeto
 Documentar todos os procedimentos
 Escolher a metodologia de 
desenvolvimento
 Testar as funcionalidades criadas
Etapas do Processo 
de Software
1. Conheça a necessidade do cliente
 Todo projeto precisa ter uma reunião inicial, onde serão 
feitas discussões gerais sobre o que é necessário. O 
objetivo desta reunião é entender o que o cliente 
precisa, o porquê ele sente a necessidade daquilo e o 
quão disposto ele está a investir neste projeto. Esta 
última informação é muito importante porque é com ela 
que serão contratadas pessoas, ferramentas e serviços.
2. Defina os requisitos
 Nesta reunião inicial serão definidos os requisitos do 
software a ser criado. Estes requisitos podem ser 
funcionais ou não-funcionais, dependendo de sua 
aplicação no projeto.
 Com os requisitos em mãos é preciso analisa-los para 
então elaborar uma lista de prioridades que mostrará o 
que o software precisa ter, o que pode limitar cada 
função e quanto tempo aquilo poderá demorar, em 
teoria.
 Os requisitos precisam, depois de serem avaliados, 
ser documentados, o que costuma ser a parte mais 
complicada para desenvolvedores, mas muito 
importante para o projeto em geral.
Etapas do Processo 
de Software
3. Avaliação de viabilidade
Nesta etapa deve-se analisar:
 Pré-existência de soluções que façam o mesmo 
e por um preço menor. O que, no final das 
contas, pode ser mais vantajoso para o 
cliente;
 Pré-existência de frameworks e códigos que 
possam ser reaproveitados de alguma forma;
 Número de pessoas e capacidades necessárias 
para a formação de uma equipe;
 Quais tecnologias serão usadas, como o banco 
de dados, serviço de cloud, linguagens de 
programação, etc.
Tudo isto precisa ser bem analisado, porque não podem 
haver gaps quando o projeto começar. 
Se for necessário contratar mais pessoas, é necessário 
ver o quanto isso custará e se o budget do projeto 
permite tal ação. Tudo isto deve ser passado ao cliente 
para que ele autorize ou não o start do projeto.
Havendo a aprovação, é hora de começar a 
documentação.
Etapas do Processo 
de Software
4. Documentação!
 Sabendo o que deve ser feito, é a hora de definir 
detalhes mais profundos do desenvolvimento. Nessa 
etapa, são criadas as documentações que listam o 
que será desenvolvido e como o processo terá que 
acontecer. 
 Para isso, entram em cena os wireframes (espécie de 
exemplos do que deve ser feito), fluxogramas e casos 
de uso, ferramentas de projetos que fazem toda a 
diferença na documentação.
 Por mais que a documentação do projeto seja algo 
que desenvolvedor não gosta de fazer, é uma etapa 
essencial para o bom andamento do projeto, pois é 
onde o time irá se basear na hora de desenvolver o 
software. Se der algum problema, é na 
documentação que encontraremos a maioria das 
respostas.
 A documentação é um passo que dura o projeto 
inteiro, mesmo durante as alterações incrementais. 
Isto acontece porque tais documentos funcionam 
como um manual do desenvolvedor, onde se diz o 
que tem de ser feito e como.
Etapas do Processo 
de Software
5. Metodologia de 
desenvolvimento
 Uma das características que é 
escolhida quando o projeto está 
sendo planejado é qual será a 
metodologia de 
desenvolvimento.
 Esta é uma decisão muito 
importante pois ela direcionará 
a forma como o projeto será 
desenvolvido, as pessoas que 
farão parte, quando e quais 
entregas serão feitas, além de 
outros detalhes importantes.
Etapas do Processo 
de Software
6. Testes e mais testes
 Na hora em que as primeiras 
funcionalidades já estiverem prontas, 
elas deverão ser testadas e entregues. 
Os testes devem ser muito bem 
documentados e realizados, buscando 
emular o uso real da aplicação.
 É necessário se colocar no lugar do 
cliente, como se fosse realmente ele 
utilizando a funcionalidade que foi 
criada. Este costuma ser um dos 
principais problemas no 
desenvolvimento de software, 
principalmente, quando o teste é 
realizado somente pelo desenvolvedor, 
que muitas vezes não possui o 
conhecimento necessário para realizar o 
teste com a mesma eficiência que um 
testador especialista faria.
Etapas do Processo 
de Software
Avalie os riscos
 Para evitar qualquer tipo de problema, 
deve haver um planejamento que 
consiga proteger o projeto. 
 Para isso, inúmeras medidas podem ser 
tomadas. A primeira seria a utilização 
de backups, um importante recurso 
para qualquer projeto digital.
 Além disso, é necessário ter uma 
infraestrutura que permita uma rápida 
recuperação caso ocorra algum 
desastre. Não só backups, mas ter uma 
equipe de suporte sempre pronta é 
algo muito importante para projetos 
de software, pois isso pode evitar que 
hajam perdas de informação e 
trabalho, caso algum imprevisto 
ocorra.
Processo Pessoal de 
Software (PSP)
 Todo desenvolvedor usa algum processo 
para construir software de computador. 
O processo pode ser aleatório ou ad 
hoc, pode modificar-se diariamente, 
pode não ser eficiente, efetivo ou 
mesmo, bem-sucedido, mas existe um 
processo.
 O PSP enfatiza a medição pessoal tanto 
do produto do trabalho quanto a 
qualidade resultante do produto do 
trabalho.
 Além disso, o PSP torna o profissional 
responsável pelo planejamento 
do projeto e dá poder ao profissional 
para controlar a qualidade de todos os 
produtos do trabalho de software, por 
ele desenvolvido.
Processo Pessoal de 
Software
 O modelo PSP define cinco atividades
 Planejamento: Essa atividade, isola os requisitos e, 
com base neles, desenvolve estimativas tanto de 
tamanho quanto de recurso.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.
Processo Pessoal 
de Software
 O PSP enfatiza a necessidade 
de cada engenheiro de 
software identificar logo os erros e 
entender os tipos de erros que ele 
tende a fazer. 
 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 naprodutividade e 
qualidade é significativo.
Processo de Equipe 
de Software (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
 Facilitar o ensino as habilidades de 
equipe
Processo de Equipe 
de Software
 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 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.
Modelos de 
Processos de 
Software
 Um modelo de processo de software é uma 
representação abstrata de um processo de 
software, lembrando que um processo de 
software é um conjunto de atividades que leva à 
produção de um produto de software.
 Cada modelo de processo representa um 
processo sobre determinada perspectiva e, dessa 
forma, fornece somente informações parciais 
sobre esse processo.
 Esses modelos não são descrições definitivas de 
processo de software, como já dito 
anteriormente, são abstrações do processo que 
podem ser usadas pra explicar diferentes 
abordagens para o desenvolvimento de software.
Modelos de 
Processos de 
Software
Modelo Caixa-Preta ou Codifica – Remenda
- Neste modelo com muita sorte existe uma especificação por 
escrito.
- A codificação é iniciada imediatamente e os erros são corrigidos 
na medida em que são encontrados.
- Este modelo não oferece nenhum mecanismo de gerenciamento, 
a não ser liberar um produto depois que os volumes de defeitos 
críticos tenham sido reduzido a níveis aceitáveis.
- A garantia da qualidade do software é restrita a teste de níveis de 
sistema (testes do tipo caixa –preta, aquele que você entra com 
um dado e espera um resultado).
- Essa abordagem é inaceitável para alguns cenários:
o Requisitos que implicam na segurança de vidas humanas;
o Existência de requisitos de qualidade;
o Previsão de custo e cronograma preciso.
Modelos de Processos
de Software
Modelo Waterfall – Cascata
 O primeiro modelo de processo de desenvolvimento de software 
publicado originou-se dos processos mais gerais de engenharia de 
sistemas. Devido ao encadeamento de uma fase com a outra, esse 
modelo é conhecido como modelo cascata ou modelo de ciclo de 
vida de software.
 Para ocasiões em que os requisitos de um problema são 
razoavelmente bem compreendidos – quando o trabalho flui de 
modo razoavelmente linear, isso algumas vezes acontece em uma 
adaptação bem definidas de sistemas já existentes ou 
aperfeiçoamento dos mesmos. O modelo cascata pode ser melhor 
utilizado.
 Os principais estágios desse modelo demonstram as atividades 
fundamentais de desenvolvimento:
 Analise e definição de requisitos: Os serviços, restrições e 
objetivos são definidos em conjunto com os usuários.
 Projeto de sistema de software: Divide os requisitos em 
hardware e software, estabelece uma arquitetura geral do 
sistema.
 Implementação e teste de Unidade: O projeto de software é 
realizado, e testes unitários são realizados.
 Integração e teste de sistema: As unidades individuais do 
sistema são integrados e testados como um sistema completo 
para garantir que os requisitos foram atendidos.
 Operação e Manutenção: Geralmente é a fase mais longa. O 
sistema é instalado e colocado em operação.
Modelos de Processos
de Software
 Em princípio o resultado de cada fase 
resulta em um ou mais documentos 
aprovados. A fase seguinte não pode 
começar sem que a anterior tenha 
terminado. Porém na pratica esses estágios 
se sobrepõem e trocam informações entre 
si.
 Devido aos custos de produção e aprovação 
de documentos, as iterações são onerosas e 
envolvem um retrabalho significativo. É 
norma que depois de algumas iterações 
suspender parte dos desenvolvimentos com 
as especificações e prosseguir com os 
estágios posteriores do desenvolvimento.
 A vantagem do modelo cascata consiste na 
documentação produzida em cada fase e a 
sua aderência a outros modelos. Seu maior 
problema é a divisão inflexível do projeto 
em estágios distintos.
Modelos de Processos 
de Software
Modelo Incremental
 O modelo Incremental combina elementos 
do modelo cascata aplicado de maneira 
iterativa. O modelo incremental aplica 
sequências lineares de uma forma racional 
à medida que o tempo passa.
 Com o modelo incremental é possível 
entregar parte do projeto, ou chamada 
parte de funcionalidades básicas de um 
projeto, antes que o mesmo seja concluído 
na sua totalidade.
 Quando um módulo incremental é usado, o 
primeiro incremento é frequentemente 
chamado de núcleo do produto. Isto é os 
requisitos básicos são satisfeitos, mas 
muitas características suplementares 
deixam de ser elaboradas.
Modelos de Processos
de Software
O processo de desenvolvimento incremental tem
uma série de vantagens:
 Os clientes não precisam esperar até a
entrega do sistema inteiro para se
beneficiarem dele.
 Os clientes podem usar incrementos iniciais
como protótipos e ganhar experiência,
obtendo informações sobre os incrementos
posteriores.
 Existe um risco menor de falha geral do
projeto
 Como os requisitos não são definidos
detalhadamente até que um incremento
seja implementado, pode ser difícil
identificar os recursos comuns exigidos por
todos os incrementos.
Modelos de 
Processos de 
Software
O Modelo RAD
 O RAD(Rapid Application Development, Desenvolvimento Rápido 
de Aplicação) é um modelo de processo de software incremental 
que enfatiza um ciclo de desenvolvimento curto.
 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 construção enfatiza o uso de componentes de software 
preexistentes e a aplicação de geração de códigos automática.
 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.
Modelos de Processos de Software
A abordagem RAD tem desvantagens:
1. Para projetos grandes, o RAD exige recursos humanos suficientes 
para criar um número adequado de equipes RAD.
2. Se desenvolvedores e clientes não estiverem comprometidos com 
as atividades continuamente rápidas, para completar o sistema em 
curtíssimo espaço de tempo, o projeto RAD falhará.
3. Se o sistema não puder ser adequadamente modularizado, as 
construções dos componentes necessários ao RAD serão 
problemáticas.
4. O RAD pode não ser ajustado quando os riscos técnicos são altos
Modelos de Processos de Software
Modelos de Processos 
de Software
Modelo – Prototipação
 Em casos aonde o desenvolvedor esta inseguro da 
eficiência do seu algoritmo, da adaptabilidade de um 
sistema operacional ou da forma de interação 
homem/máquina o paradigmada prototipagem pode 
oferecer a melhor abordagem.
 Apesar de a prototipagem poder ser usada como um 
modelo de processo independente ela é mais 
comumente usada como uma técnica que pode ser 
implementada dentro do contexto de qualquer modelo 
apresentado.
 A prototipagem auxilia o engenheiro de software e o 
cliente a entenderem melhor o que deve ser 
construído quando os requisitos estão confusos.
 O protótipo pode servir como “o primeiro sistema”, 
aquele que se recomenda a ser descartado.
Modelos de Processos
de Software
Modelo – Prototipação
 Tanto os clientes como os analistas gostam do modelo de 
prototipagem. Os clientes porque tem um sistema real 
nas mãos e os desenvolvedores porque conseguem 
construir algo imediatamente.
 A prototipagem pode ser problemática pelas seguintes 
razões:
 O cliente vê o que parece ser uma versão executável 
do software, ignorando que o protótipo apenas 
consiga funcionar precariamente.
 Quando informamos que o produto deve ser refeito 
para que altos níveis de qualidade possam ser 
atingidos o cliente reclama e exige alguns acertos 
para transformar o protótipo em executável.
 O desenvolvedor frequentemente faz concessões na 
implementação a fim de conseguir rapidamente um 
protótipo executável.
Modelos de Processos de Software
Modelo Espiral
 O modelo espiral combina a natureza iterativa da prototipagem com os aspectos controlados e 
sistemáticos do modelo cascata. Ele fornece desenvolvimento rápido de versões cada vez mais 
completas.
 Em vez de representar o processo de software como sequências de atividades com algum retorno 
entre uma atividade e outra, o processo é representado por uma espiral, onde cada loop da espiral 
representa uma fase do processo de software.
 Cada loop da espiral esta dividido em quatro setores:
 Definição dos objetivos: Os objetivos específicos dessa fase do projeto são definidos, as restrições são 
identificadas e um plano de gerenciamento detalhado e elaborado. Os riscos do projeto são identificados.
 Avaliação e redução de riscos: Para cada risco do projeto identificado uma analise detalhada é realizada e 
providências são tomadas para reduzir os riscos.
 Desenvolvimento e Validação: Após a avaliação do risco um modelo de desenvolvimento para o sistema é 
selecionado
 Planejamento: O projeto é revisado e uma decisão é tomada para prosseguimento ao próximo loop da espiral. Se 
o próximo loop for começar então são elaborados planos para a próxima fase do projeto.
Modelos de Processos de Software
Modelo Espiral
 Diferente dos outros modelos, o modelo espiral reconhece o risco.
 O modelo espiral não termina quando o software é entregue, ele pode ser 
adaptado para aplicação ao longo da vida do software que foi construído.
 O modelo espiral é uma abordagem realista do desenvolvimento de sistema e 
softwares de grande porte. Como o software evolui à medida que o processo 
avança, o desenvolvedor e o cliente entendem melhor e reagem ao riscos de 
cada nível evolucionário.
 O modelo espiral usa a prototipagem como um mecanismo de redução de 
riscos, porém, mais importante, permite ao desenvolvedor aplicar 
prototipagem em qualquer estágio da evolução do produto.
Modelos de Processos de Software
Modelos de Processos de Software
Modelos Especializados
 Os modelos especializados tendem a ser aplicados quando uma abordagem de 
engenharia de software estreitamente definida é escolhida.
Desenvolvimento Baseado em Componentes
 Os componentes de software de prateleira podem ser usados quando o software 
precisa ser construído. Esses componentes fornecem funcionalidades-alvo com 
interfaces bem definidas que permitem ao componente ser integrado no software.
 O modelo de desenvolvimento baseado em componentes incorpora muitas das 
características do modelo espiral, demanda uma abordagem iterativa para criação de 
software.
 O modelo compõe aplicações a partir de componentes de software previamente 
preparados. As atividades de modelagem e construção começam com a identificação 
dos componentes candidatos.
Modelos de Processos de Software
Modelos Especializados de Processos
 Independente da tecnologia usada para criar os componentes, o modelo de 
desenvolvimento baseado em componentes incorpora os seguintes passos:
 Produtos baseados em componente disponíveis são pesquisados e avaliados para o domínio da 
aplicação em questão.
 Tópicos de integração de componentes são considerados.
 Uma arquitetura de software é projetada para acomodar os componentes.
 Componentes são integrados a arquitetura.
 Testes abrangentes são realizados para garantir a funcionalidade adequada.
 O modelo de desenvolvimento baseada em componentes leva ao reuso do software, e a 
reusabilidade fornece aos engenheiros vários benefícios mensuráveis.
 Redução de 70% do prazo do ciclo de desenvolvimento.
 Redução de 84% do custo do projeto
 Um índice de produtividade de 26,2.
Modelos de Processos de Software
O Modelo de Métodos Formais
O modelo de métodos formais abrange um conjunto de atividades que levam à 
especificação matemática formal do software. Permitem ao engenheiro de 
software especificar, desenvolver e verificar um sistema baseado na aplicação 
rigorosa de uma notação matemática.
 Quando métodos formais são usados durante o desenvolvimento, eles fornecem 
um mecanismo para eliminação de muitos problemas que são difíceis de 
resolver usando outros paradigmas de engenharia de software.
 Quando usados durante o projeto, métodos formais servem de base para a 
verificação do programa e, assim, permite que o engenheiro descubra e corrija 
erros que poderiam passar despercebidos.
Modelos de Processos de Software
O Modelo de Métodos Formais
As desvantagens desse método são:
 O desenvolvimento de modelos formais é atualmente muito lento e 
dispendioso.
 Como poucos desenvolvedores de software têm o preparo necessário 
para aplicar métodos formais, torna-se necessário um treinamento 
extensivo.
 É difícil usar os modelos como um mecanismo de comunicação, com 
clientes despreparados tecnicamente.
 Esse modelo é muito utilizado para construção de softwares 
críticos.
Modelos de Processos de Software
Desenvolvimento de Software Orientado a Aspectos
 Quando as preocupações diversas de um sistema entrecortam várias 
funções, características e informações do sistema, elas são 
frequentemente referidas como preocupações transversais. Requisitos 
referentes a aspectos definem essas preocupações que têm impacto 
em toda a arquitetura do software. 
 O desenvolvimento de software orientado a aspecto é um paradigma 
relativamente novo na engenharia que fornece um processo e 
abordagem metodológica, para definir, especificar, projetar e 
construir aspectos.
Modelos de Processos de Software
Processos Unificados
 O processo unificado reconhece a importância da comunicação com o cliente 
e dos métodos diretos para escrever a visão do cliente de um sistema (o caso 
de uso).
 Ele enfatiza importantes papeis da arquitetura de software e ajuda o 
arquiteto a se concentrar nas metas corretas.
 Ele sugere um fluxo de processo de software que é iterativo e incremental, 
dando a sensação evolucionária, que é essencial no desenvolvimento moderno 
de software.
Modelos de Processos de Software
 O processo unificado de software possui 5 fases:
 Fase da Concepçã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. Os requisitos de negócios são escritos 
por meio de casos de uso preliminares. 
 Fase de elaboração: Refina e expande os casos de uso preliminares que foram desenvolvidos 
e expande a representação arquitetural para incluir cinco visões diferentes do software – o 
modelo de caso de uso, o modelo de analise, o modelo de projeto, o modelo de 
implementaçãoe o modelo de implantação;
 A fase da construção: 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.
 Fase de Transiçã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.
 Fase de Produção: Coincidem com as atividades do processo genérico de implantação, 
durante essa fase o uso do software é monitorado, é fornecido suporte para o ambiente de 
operação e os relatórios de defeitos e solicitações de modificações são submetidos e 
avaliados.
Modelos de Processos de Software
Rational Unified Process (RUP)
 O RUP é um exemplo de modelo de processo moderno que foi 
derivado do trabalho sobre a UML e do Processo Unificado de 
desenvolvimento de software (UP).
 O RUP reconhece que os modelos convencionais de processo 
apresentam uma visão única de processo. Por outro lado, o RUP e 
descrito a partir de três perspectivas:
 Uma perspectiva dinâmica, que mostra fases do modelo ao longo do tempo.
 Uma perspectiva estática, que mostra as atividades realizadas no processo.
 Uma perspectiva pratica que sugere as boas práticas a serem usadas durante o 
processo.
Modelos de Processos de Software
Rational Unified Process (RUP)
 O RUP é um modelo constituído por fases que identifica quatro fases discretas no processo 
de software. As fases do RUP estão relacionadas mais estritamente aos negócios do que aos 
assuntos técnicos. São elas:
 Concepção: O objetivo dessa fase de concepção é estabelecer um business case para o sistema. 
Você deve identificar todas as entidades externas (pessoas e sistemas) que irão interagir com o 
sistema, e definir essas interações. Depois essas informações são usadas para avaliar a contribuição 
do sistema com o negócio.
 Elaboração: Os objetivos dessa fase é desenvolver um entendimento do domínio do problema, 
estabelecer um framework de arquitetura para o sistema, desenvolver o plano de projeto e 
identificar os riscos principais do projeto. (UML)
 Construção: A fase de construção esta essencialmente relacionada ao projeto, programação e teste 
de sistema. As partes do sistema são desenvolvidas paralelamente e integradas durante essa fase.
 Transição: A fase final do RUP esta relacionada à transferência do sistema da comunidade de 
desenvolvimento para a comunidade dos usuários e com a entrada do sistema em funcionamento 
em ambiente real.
Modelos de Processos de Software
Rational Unified Process (RUP)
 Cada fase do RUP pode ser realizada de forma iterativa, com os resultados desenvolvidos 
incrementalmente, além disso o conjunto total de fases pode ser realizada de forma 
incremental.
 A visão estática do RUP enfoca as atividades que ocorrem durante o processo de 
desenvolvimento. Elas são chamadas de workflow, dos quais existem seis.
 Modelagem de Negócio;
 Requisitos;
 Análise de Projeto;
 Implementação;
 Teste;
 Implantação;
 Gerenciamento de Configuração;
 Gerenciamento de Projetos;
 Ambiente

Outros materiais