Buscar

Apostila Engenharia de Software

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

1 
 
MINISTÉRIO DA EDUCAÇÃO 
SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA 
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA 
GOIANO 
CAMPUS IPORÁ - GOIÁS 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Engenharia de Sistemas de 
Informação 
 
 
 
 
 
 
CURSO: Técnico em Informática PERÍODO: 2º 
 PROFESSORA: Luciana Recart Cardoso 
2 
 
 
 
 
 
SUMÁRIO 
 
 
 
 
1 INTRODUÇÃO AOS SISTEMAS DE INFORMAÇÃO ............................................. 4 
1.1 TEORIA SISTÊMICA ................................................................................................................. 4 
1.1.1DEFINIÇÕES DE SISTEMA ...................................................................................................... 4 
1.1.2 HIERARQUIA DOS SISTEMAS ................................................................................................. 5 
1.1.3 TIPOS DE SISTEMAS ............................................................................................................. 7 
1.1.4 CARACTERÍSTICAS DOS SISTEMAS ....................................................................................... 8 
1.1.5 PARÂMETROS DOS SISTEMAS .............................................................................................. 8 
1.2 CONCEITOS DE SISTEMAS DE INFORMAÇÃO ............................................................................ 9 
1.2.1 SISTEMAS DE INFORMAÇÃO BASEADOS EM COMPUTADOR .................................................. 10 
QUAL A DIFERENÇA ENTRE DADO E INFORMAÇÃO? ...................................................................... 10 
1.2.2 CARACTERÍSTICAS IDEAIS DE UMA INFORMAÇÃO ................................................................ 11 
1.2.3 QUALIDADE DAS INFORMAÇÕES ......................................................................................... 11 
2 INTRODUÇÃO À ENGENHARIA DE SOFTWARE .............................................. 11 
2.1 CRISE DO SOFTWARE ........................................................................................................... 12 
2.2 O QUE É ENGENHARIA DE SOFTWARE? ................................................................................. 12 
2.2.1 OBJETIVOS DA ENGENHARIA DE SOFTWARE ...................................................................... 12 
METAS DA ENGENHARIA DE SOFTWARE ...................................................................................... 13 
2.2.2 O QUE É SOFTWARE? ........................................................................................................ 14 
2.2.3 CARACTERÍSTICAS DO SOFTWARE ..................................................................................... 14 
2.3 QUAL É A DIFERENÇA ENTRE ENGENHARIA DE SOFTWARE E CIÊNCIA DA COMPUTAÇÃO? ...... 18 
2.4 QUAL É A DIFERENÇA ENTRE ENGENHARIA DE SOFTWARE E ENGENHARIA DE SISTEMAS? ..... 18 
2.5 O QUE É UM PROCESSO DE SOFTWARE? ............................................................................... 18 
2.6 O QUE É UM MODELO DE PROCESSO DE SOFTWARE? ............................................................ 18 
2.6.1 MODELO CASCATA ............................................................................................................. 19 
2.6.2 MODELO DE PROTOTIPAGEM ............................................................................................. 20 
2.6.3 MODELO DE PROCESSO DE DESENVOLVIMENTO INCREMENTAL ........................................... 22 
2.6.4 MODELO ITERATIVO ........................................................................................................... 24 
3 
 
DIFERENÇA ENTRE O MODELO ITERATIVO E O MODELO INCREMENTAL ......................................... 25 
2.6.5 MODELO ESPIRAL .............................................................................................................. 26 
QUAIS SÃO OS CUSTOS DA ENGENHARIA DE SOFTWARE? ........................................................... 28 
2.8 O QUE SÃO MÉTODOS DE ENGENHARIA DE SOFTWARE? ....................................................... 28 
PROBLEMAS NO DESENVOLVIMENTO ........................................................................................... 28 
MITOS DO SOFTWARE................................................................................................................. 29 
 
4 
 
 
 
 
 
1 INTRODUÇÃO AOS SISTEMAS DE INFORMAÇÃO 
 
1.1 Teoria Sistêmica 
Na década de 1950, o biólogo alemão Ludwig Von Bertalanffy, estudando organismos 
vivos, observou que quaisquer dos organismos pesquisados, embora se diferenciassem uns 
dos outros em enorme gama de características, mantinham sempre algumas características 
comuns. Von Bertalanffy estendeu as suas observações a outros tipos de organismos, sejam 
mecânicos, sociais etc., e constatou que algumas características se mantinham, não 
importando a natureza do organismo. 
A mais importante característica que sempre se podia destacar era o objetivo 
(propósito) que o organismo atingia. Embora o organismo em observação fosse composto de 
uma série de elementos, percebia-se claramente a interação desses elementos com vistas a 
atingir um objetivo, que seria a finalidade daquele organismo. Desses estudos e observações, 
Von Bertalanffy propôs a chamada Teoria Geral dos Sistemas, chamando de sistema a esses 
organismos visando a um objetivo. 
 
1.1.1Definições de Sistema 
O Sistema é um conjunto de partes interagentes e interdependentes que, 
conjuntamente, formam um todo unitário com determinado objetivo e efetuam determinada 
função (OLIVEIRA, 2002, p. 35). 
 
Sistema pode ser definido como um conjunto de elementos interdependentes que 
interagem com objetivos comuns formando um todo, e onde cada um dos elementos 
componentes comporta-se, por sua vez, como um sistema cujo resultado é maior do que o 
resultado que as unidades poderiam ter se funcionassem independentemente. Qualquer 
conjunto de partes unidas entre si pode ser considerado um sistema, desde que as relações 
entre as partes e o comportamento do todo sejam o foco de atenção (ALVAREZ, 1990, p. 17). 
 
Sistema é um conjunto de partes coordenadas e não relacionadas, formando um todo 
complexo ou unitário (OLIVEIRA, 2002, p. 35). 
5 
 
 
Sistema é uma entidade que tem a capacidade de manter um certo grau de 
organização em face de mudanças internas ou externas, composto de um conjunto de 
elementos, em interação, segundo determinadas leis, para atingir um objetivo específico. 
 
Cada um dos elementos, ao serem reunidos para constituir uma unidade funcional 
maior, desenvolve características que não se encontram em seus componentes isolados. 
 
1.1.2 Hierarquia dos sistemas 
A visão de um sistema depende do interesse de quem pretenda analisá-lo. Uma 
empresa, por exemplo, poderá ser entendida como um sistema ou subsistema ou ainda um 
supersistema, dependendo da análise que se queira fazer: que o sistema tenha um grau de 
autonomia maior do que o subsistema e menor do que o supersistema. 
Aos elementos interdependentes, interatuantes, inter-relacionados, dá-se o nome de 
subsistemas, que podem ser sistemas sob outro foco, dependendo do interesse de quem 
analisa. Depende da abordagem. 
 
 
 
• Milhões de anos-luz de nossa galáxia (no Universo) 
• nossa galáxia, sistema Via Láctea 
• nosso sistema solar 
• nosso planeta Terra, sistema Terra 
6 
 
• uma comunidade indígena, sistema comunidade 
• um sistema árvore (organismo) 
• sistema folha 
• uma molécula 
• sistema átomo 
 
 
Outros exemplos de sistema 
 
Automóvel 
 
Quais os objetivos? 
• transportar passageiros e carga, locomoção mecanizada 
 
Quais os subsistemas que compõem o sistema automóvel? 
• subsistema motor; subsistema caixa de marchas, subsistema suspensão, subsistema 
de frenagem, etc. 
 
 
Computador 
 
Quais os objetivos? 
• Processar e armazenar informações 
 
Quais os subsistemas que compõemo sistema computador? 
• subsistema teclado, subsistema CPU, subsistema vídeo, subsistema HD, subsistema 
placa de vídeo, placa de som, placa de memória, etc. 
7 
 
 
 
 
 
 
1.1.3 Tipos de sistemas 
 
Há uma grande variedade de sistemas e uma ampla gama de tipologias para classificá-
los, de acordo com certas características básicas. 
 
• Quanto a sua constituição: 
o Físicos ou concretos: quando compostos de equipamento, de maquinaria e de 
objetos e coisas reais (equipamento, objetos, hardware); 
o Abstratos ou conceituais: quando compostos por conceitos, planos, hipóteses 
e ideias que muitas vezes só existem no pensamento das pessoas (conceitos, 
planos, ideias, software). 
Na realidade, há uma complementação entre sistemas físicos e abstratos: os sistemas 
físicos precisam de um sistema abstrato para funcionar, e os sistemas abstratos somente se 
realizam quando aplicados a algum sistema físico. 
 
• Quanto a sua natureza: 
o Fechados: não apresentam intercâmbio com o meio ambiente que os circunda, 
sendo assim não recebem nenhuma influência do ambiente e por outro lado 
não o influenciam. Não recebem nenhum recurso externo e nada produzem 
que seja enviado para fora. 
 Ex: A matemática é um sistema fechado, pois não sofrerá nenhuma 
influência do meio ambiente, sempre 1+1 será 2. 
• Abertos: são os sistemas que apresentam relações de intercâmbio com o ambiente, 
por meio de entradas e saídas. 
CPU 
8 
 
Os sistemas abertos trocam matéria, energia e informação regularmente com o meio 
ambiente. São necessariamente adaptativos, isto é, para sobreviver devem reajustar-se 
constantemente às condições do meio. 
 
1.1.4 Características dos sistemas 
 
As características dos sistemas são decorrências de dois conceitos: o de propósito (ou 
objetivo) e o de globalismo (ou totalidade). 
• Propósito ou objetivo: Os elementos ou unidades, bem como os relacionamentos, 
definem um arranjo que visa sempre a um objetivo a alcançar. 
• Globalismo ou totalidade: todo o sistema tem uma natureza orgânica, pela qual uma 
ação que produza mudança em uma das unidades do sistema, com muita 
probabilidade deverá produzir alterações em todas as demais unidades deste. 
• Entropia: é a tendência que os sistemas têm para o desgaste, para desintegração, 
para o afrouxamento dos padrões e para um aumento da aleatoriedade. A entropia 
aumenta com o decorrer do tempo. À medida que aumenta a informação, diminui a 
entropia, pois a informação é a base da configuração e da ordem. 
• Negentropia: a informação como meio ou instrumento de ordenação do sistema. 
• Homeostasia: é o equilíbrio ativo entre as partes do sistema. Os sistemas têm uma 
tendência a se adaptarem a fim de alcançarem um equilíbrio interno em face das 
mudanças externas do ambiente. 
 
1.1.5 Parâmetros dos sistemas 
 
Parâmetros são constantes arbitrárias que caracterizam, por suas propriedades, o 
valor e a descrição dimensional de um sistema específico ou de um componente do sistema. 
• Entrada (input): é a força de arranque (ou de partida) do sistema que fornece o material 
ou energia para a operação do sistema. As organizações adquirem ou compram 
materiais para processá-los de alguma maneira. Para assistirem outras funções, como 
os organismos vivos que ingerem alimentos para suprirem outras funções e manter a 
energia. 
• Processamento (throughput): é o fenômeno que produz mudanças, é o mecanismo de 
conversão das entradas em saídas. No animal, a comida é transformada em energia 
e suprimento das células. Na organização, a produção é equivalente a esse ciclo 
animal. Os materiais são processados havendo certa relação entre entradas e saídas 
9 
 
no qual o excesso é o equivalente a energia necessária para a sobrevivência da 
organização (transformação em produtos). 
• Saída, resultado ou produto (output): é a finalidade para a qual se reuniram elementos 
e relações do sistema. A saída deve ser coerente com o objetivo do sistema. 
• Retroalimentação, retroação ou retro informação (feedback): é a função do sistema 
que tem em vista comparar a saída com um critério ou padrão previamente 
estabelecido (objetivo). Os sistemas que não têm condições de continuadamente 
atender a essa condição, comprometem sua capacidade de sobrevivência. A 
retroalimentação visa o controle. 
• Ambiente: é o meio que envolve o sistema. O ambiente serve como fonte de energia 
para o sistema e ambos estão em contínua interação. O ambiente estando em 
constante mudança, o processo de adaptação do sistema é um processo dinâmico. O 
ambiente de um sistema é um conjunto de elementos que não fazem parte do sistema, 
mas que podem causar mudanças no estado do sistema. 
 
 
1.2 Conceitos de Sistemas de Informação 
É uma série de elementos ou componentes inter-relacionados que coletam (entrada), 
manipulam e armazenam (processo), disseminam (saída) os dados e informações e fornecem 
um mecanismo de feedback, apoiando o controle, a coordenação e a tomada de decisão em 
uma organização; auxiliam gerentes e funcionários a analisar problemas, visualizar soluções 
e a criar novos produtos. 
AMBIENTE 
RETROALIMENTAÇÃO 
ENTRADA
informação
energia
recursos materiais
PROCESSAMENTO
ou transformação
SAÍDA
informação
energia
recursos materiais
10 
 
É um tipo especializado de sistema, podendo ser definido como um conjunto de 
componentes inter-relacionados trabalhando juntos para coletar, recuperar, processar, 
armazenar e distribuir a informação com a finalidade de facilitar o planejamento, o controle, a 
coordenação, a análise e o processo decisório em empresas e organizações. 
Os sistemas de informação podem ser manuais ou baseados em computador. Muitos 
sistemas de informação começam como sistemas manuais e se transformam em 
computadorizados que estão configurados para coletar, manipular, armazenar e processar 
dados. 
 
1.2.1 Sistemas de informação baseados em computador 
Sistemas de informação baseados em computador (CBIS - computer-based 
information system), são compostos por: hardware, software, banco de dados, 
telecomunicações, pessoas e procedimentos. 
• Hardware: consiste no equipamento, o computador usado para executar as atividades 
de entrada, processamento e saída. 
• Software: consiste nos programas e nas instruções dadas ao computador. 
• Banco de Dados: é uma coleção organizada de fatos e informações. 
• Telecomunicações: permitem às empresas ligar os sistemas de computador em 
verdadeiras redes de trabalho. 
• Pessoas (peopleware): consiste no elemento mais importante na maior parte dos 
sistemas de informação. Incluem todas as pessoas que gerenciam, executam, 
programam e mantêm o sistema de computador. 
• Procedimentos: incluem as estratégias políticas, métodos e regras usadas pelo 
homem para gerar o sistema de informação baseados em computador. 
 
Qual a diferença entre dado e informação? 
 
 
 
 
Exemplos de dados em uma empresa: quantidade de produção, custo da matéria-
prima, número de funcionários. 
Como resultado da análise de tais dados tem-se a informação: capacidade de 
produção, custo de venda do produto, produtividade do funcionário. 
 
Dado - é qualquer elemento identificado em sua forma bruta que por si só não 
conduz a uma compreensão de determinado fato ou situação. 
 
 
Informação - é o dado trabalhado que permite a tomada de decisão. 
11 
 
Essas informações, ao serem utilizadas pelo executivo de uma empresa, podem afetar 
ou modificar o comportamento existente na empresa, bem como o relacionamento entre as 
suas várias unidades organizacionais. 
O propósito básico da informação é o de habilitar a empresa a alcançar seus objetivos 
pelo uso eficiente dos recursos disponíveis, nos quais se inserem pessoas, materiais, 
equipamentos, tecnologia, dinheiro além da própria informação. 
A eficiência na utilização do recurso informação é medida pela relação do custo paraobtê-la e o valor do benefício derivado do seu custo. 
 
1.2.2 Características ideais de uma informação 
A informação deve ser: (Cautela e Polloni, 1996, p.23): 
• Clara: apresentar o fato com clareza, não o mascarando entre os fatos acessórios. 
• Precisa: deve ter um alto padrão de precisão e nunca apresentar termos como: "por 
volta de...", "cerca de...", "mais ou menos...". 
• Rápida: chegar ao ponto de decisão em tempo hábil para que gere efeito na referida 
decisão. Uma informação pode ser clara e precisa, mas se chegar atrasada, perde a 
sua razão de ser. 
• Dirigida: a quem tenha necessidade dela e que irá decidir com base nessa informação. 
 
1.2.3 Qualidade das informações 
O número de veículos (meios) de informação influencia de maneira fundamental na 
qualidade da informação. A qualidade tende a decrescer à medida que se aumenta o número 
de veículos de informação. 
 
2 INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
Desde sua criação até os dias atuais, os computadores juntamente com seus 
softwares, foram ganhando cada vez mais importância e diversificando sua aplicação nas 
mais distintas áreas de nossas vidas. Atualmente, os computadores e seus softwares estão 
presentes tanto em eletrodomésticos como em complexos sistemas de controle de tráfego 
aéreo, financeiros ou mesmo auxiliando em cirurgias de risco. 
No início, os computadores eram imensos e suas operações eram muito simples. O 
custo com hardware era muito grande e os softwares não tinham custos ou eram baixos. Com 
o passar dos anos, houve uma inversão nessa equação e o tamanho dos computadores é 
cada vez menor, seus preços são mais acessíveis ao passo que sua capacidade de 
12 
 
processamento e armazenamento aumentou vertiginosamente. Os softwares por sua vez, são 
mais complexos, confiáveis e com custos mais altos em relação ao hardware. 
A engenharia de software é um ramo da engenharia que tem como foco o 
desenvolvimento com prazos e custos adequados com alto padrão de qualidade, o que não é 
muito fácil devido às características peculiares do software. A engenharia de software surgiu 
na década de 1970 originada pela crise do software. 
 
2.1 Crise do Software 
A criação de memórias semicondutoras e de microprocessadores trouxe consigo um 
grande aumento na demanda por softwares maiores e mais avançados do que os 
desenvolvidos anteriormente. Até então, os sistemas eram desenvolvidos de maneira informal 
sem a existência de padrões ou mesmo preocupação com documentação ou mesmo com a 
manutenção. A programação era encarada como uma arte e devido a isso, frequentemente 
projetos importantes apresentavam muitos problemas. Em 1968, foi realizada uma 
conferência para discutir o que foi então chamado de “crise do software”. A crise do software 
foi caracterizada por prazos e custos não respeitados, baixa qualidade, baixa produtividade 
dos profissionais, insatisfação dos clientes, entre outros. Nesta conferência surgiu pela 
primeira vez o conceito de engenharia de software. 
 
2.2 O que é Engenharia de Software? 
A engenharia de software é uma disciplina de engenharia relacionada com todos os 
aspectos envolvidos na produção do software, desde os estágios iniciais de especificação do 
sistema até sua manutenção, que acontece depois que este já está em operação. 
A Engenharia de Software deve adotar: 
• uma abordagem sistemática e organizada para o seu trabalho, 
• usar ferramentas e técnicas apropriadas de acordo com: 
o o problema a ser resolvido 
o as restrições de desenvolvimento 
o recursos disponíveis 
 
2.2.1 Objetivos da Engenharia de Software 
• aumentar a produtividade 
• melhorar a qualidade 
• Importância do Software 
13 
 
• uso no cotidiano 
• manipula informação (dado - informação - conhecimento - poder) 
 
Metas da Engenharia de Software 
 
A Engenharia de Software procura fornecer métodos, técnicas e ferramentas para que 
se possa desenvolver softwares que alcancem produtividade no processo de 
desenvolvimento; tenham qualidade e confiabilidade; sejam fáceis de utilizar; sejam de fácil 
manutenção. 
 
Metas da Engenharia de Software 
 
Manutenção: 
• quantidade de software a manter tende a crescer 
• tornar o software fácil de ser mantido (modificabilidade) 
 
Qualidade e Confiabilidade: 
• conformidade com requisitos definidos 
• ausência de defeitos 
• robustez 
 
Produtividade: 
• custos e prazos 
• gerenciamento do processo 
• inteligibilidade 
• equipes de desenvolvimento 
 
Facilidade de uso: 
• performance 
• interface com usuário 
 
Qual a diferença entre objetivo e meta? 
14 
 
 
 
 
 
 
 
 
 
 
 
Por exemplo, caso o objetivo seja chegar ao peso ideal em um ano (valor e prazo 
aproximados), uma das metas pode ser perder três quilos até o final do próximo mês (valor e 
prazos precisos, caminhando para o objetivo). 
 
2.2.2 O que é software? 
 
É comum associar o termo software a programas de computador, mas na verdade é 
bem mais que isso. Softwares são sim programas de computador, geralmente um conjunto 
de programas separados, acompanhados de todos os dados a ele associados, tais como e 
suas documentações que vão desde a descrição da estrutura do sistema até a documentação 
que orienta o usuário em relação a como usá-lo e ainda sites Web nos quais o usuário obtém 
informações recentes. 
Produtos de software podem ser desenvolvidos para um cliente específico ou pode ser 
desenvolvido para o mercado em geral 
Produtos de software podem ser: 
1. Genéricos – desenvolvidos para serem vendidos para uma ampla gama de 
clientes 
2. Sob encomenda – desenvolvido para um único cliente de acordo com a sua 
necessidade. 
2.2.3 Características do software 
Para que se possa obter a compreensão do que é software (e, principalmente, uma 
compreensão da engenharia de software), é importante examinar as características do 
software que o tornam diferente das outras coisas que os seres humanos constroem. Quando 
o hardware é construído, o processo criativo humano (análise, projeto, construção e teste) é 
imediatamente traduzido numa forma física. Se construirmos um novo computador, nossos 
O objetivo é um ponto concreto que 
se quer atingir, devendo ter parâmetros 
numéricos e datas a serem alcançadas, de 
modo geral: Ressalta-se que a meta é uma 
segmentação do objetivo, em que o 
aspecto quantitativo tem uma importância 
maior, ou seja, é mais preciso em valor e 
em data, pois é mais próximo que o 
objetivo. 
15 
 
esboços iniciais, desenhos de projeto e protótipo em forma de breadboard (arranjo 
experimental de circuitos eletrônicos) evoluem para um produto físico (chips VLSI, placas de 
circuito, fontes de energia etc.). 
 
O software é um elemento de sistema lógico, e não físico 
Portanto, o software tem características que são consideravelmente diferentes das do 
hardware. 
O software é desenvolvido ou projetado por engenharia, não manufaturado no sentido 
costumeiro. 
Apesar de existirem algumas semelhanças entre o desenvolvimento de software e a 
manufatura de hardware, as duas atividades são fundamentalmente diferentes. Em ambas as 
atividades, a alta qualidade é obtida mediante um bom projeto, mas a fase de manufatura do 
hardware pode introduzir problemas de qualidade que inexistem (ou são facilmente corrigidos) 
para o software. As duas atividades dependem de pessoas, mas a relação entre as pessoas 
envolvidas e o trabalho executado é totalmente diferente. Embora exijam a construção de um 
"produto", as abordagens são muito diferentes. 
Os custos do software estão concentrados no trabalho de engenharia. Isto significa 
que os projetos de software não podem ser conduzidos como se fossem projetos de 
manufatura. 
No decorrer da década passada, o conceito de "fábrica de software" foi discutido na 
literatura. Torna-se importante observar que este termo não implica que a manufatura de 
hardware e o desenvolvimento de software sejam equivalentes.Ao contrário, o conceito de 
fábrica de software recomenda o uso de ferramentas automatizadas para o desenvolvimento 
de software. 
 
O software não se "desgasta" 
A figura a seguir mostra o índice de falhas como uma função do tempo para o hardware. 
A relação, muitas vezes chamada "curva da banheira", indica que o hardware exibe índices 
de falhas relativamente elevados logo no começo de seu ciclo de vida (estas falhas 
frequentemente são atribuídas a defeitos de projeto e manufatura); os defeitos são corrigidos 
e o índice de falhas cai para um nível estável (esperançosamente, muito baixo) durante certo 
período de tempo. À medida que o tempo passa, entretanto, o índice de falhas eleva-se 
novamente conforme os componentes de hardware sofrem os efeitos cumulativos de poeira, 
vibração, abuso, temperaturas extremas e muitos outros males ambientais. Colocado de 
maneira simples o hardware começa a se desgastar. 
 
16 
 
 
Curva de falhas para o hardware 
 
O software não é sensível aos problemas ambientais que fazem com que o hardware 
se desgaste. Teoricamente, portanto, a curva do índice de falhas para o software assumiria a 
forma representada na figura abaixo. Defeitos não descobertos provocarão elevados índices 
de falhas no começo da vida de um programa. Porém esses são corrigidos (espera-se que 
novos erros não sejam introduzidos) e a curva achata-se, como mostra a Figura 2. Esta figura 
representa de forma grosseira e simplificada os modelos de falhas reais para o software. 
Entretanto, fica claro que o software não se desgasta. Todavia se deteriora. 
 
In
d
ic
e 
d
e 
fa
lh
as
Tempo
Continua na mesma taxa até a
absolescência
 
Curva de falhas do software (idealizada) 
Esta aparente contradição pode ser mais bem explicada considerando a de falhas 
reais para o software. Durante sua vida, o software enfrentará mudanças (manutenção). 
Quando estas são feitas, é provável que novos defeitos sejam introduzidos, fazendo com que 
a curva do índice de falhas apresente picos, como mostrado na figura abaixo: 
 
 
In
d
ic
e 
d
e 
fa
lh
as
Tempo
Elevados índices
de falhas "Desgaste"
17 
 
In
d
ic
e 
d
e 
fa
lh
as
Tempo
Mudanças
Curva Idealizada
Curva real
 
Curva de falhas reais para o software 
 
Outro aspecto do uso ilustra a diferença entre o hardware e o software. Quando se 
desgasta, um componente de hardware é substituído por uma "peça de reposição". Não 
existem peças de reposição para o software. Toda falha de software indica um erro de projeto 
ou no processo por meio do qual o projeto foi traduzido em código executável por máquina. 
Portanto a manutenção do software envolve consideravelmente mais complexidade do que a 
manutenção de hardware. 
 
 
A maioria dos softwares é feita sob medida 
Em vez de ser montada a partir de componentes existentes, a maioria dos softwares 
são desenvolvidos para um cliente em específico, diferente de outros produtos, em que um 
modelo de projeto servirá para outros vários clientes. 
Consideremos a maneira segundo a qual o hardware de controle para um produto 
baseado em microprocessadores é projetado e construído. O engenheiro de projetos desenha 
um esquema simples do circuito digital, faz algumas análises fundamentais para garantir que 
a função adequada seja conseguida e depois vai a estante onde existem catálogos de 
componentes digitais. Cada circuito integrado ou chip tem uma numeração de peça, uma 
função definida e validada, uma interface bem definida e um conjunto padrão de diretrizes de 
integração. Depois que cada componente é escolhido, o hardware pode ser encomendado. 
Infelizmente, os projetistas de software não podem permitir-se ao que acabamos de 
descrever. Com poucas exceções, não existem catálogos de componentes de software. É 
possível encomendar software não destinado à publicação, mas somente como uma unidade 
completa, não como componente que possa ser montado novamente em novos programas, 
embora esta situação esteja em mudança com a difusão do uso de programação orientada a 
objetos. 
18 
 
Ainda que muita coisa tenha sido escrita sobre reusabilidade de software, somente agora 
começam a aparecer as primeiras tentativas bem sucedidas. 
 
2.3 Qual é a diferença entre Engenharia de Software e Ciência da Computação? 
A Ciência da Computação preocupa-se com as teorias e os fundamentos; a 
Engenharia de Software preocupa-se com os aspetos práticos inerentes ao desenvolvimento 
e implantação de software. 
As teorias da Ciência da Computação são, atualmente, insuficientes para servir como 
a única de base para a Engenharia de Software. 
 
2.4 Qual é a diferença entre Engenharia de Software e Engenharia de Sistemas? 
A Engenharia de Sistemas preocupa-se com todos os aspetos do desenvolvimento de 
sistemas baseados em computador, incluindo hardware, software e engenharia de processos. 
A Engenharia de Software é parte desse processo. 
Engenheiros de Sistemas estão envolvidos na especificação de sistemas, projeto 
arquitetural, integração e implantação. 
 
2.5 O que é um processo de software? 
 
• Um conjunto de atividades cujo objetivo é o desenvolvimento ou evolução do 
software 
• As atividades genéricas presentes em todos os processos de software são: 
o Especificação – o que o sistema deve fazer e quais são as restrições de 
desenvolvimento 
o Desenvolvimento – Produção do sistema de software 
o Validação- verificação de que o software faz o que o cliente queria 
o Evolução- mudar o software em resposta à demanda por mudanças 
2.6 O que é um modelo de processo de software? 
 
Representação simplificada de um processo de software vista sob uma perspectiva 
específica. 
Exemplos de perspectivas de processo: 
• Workflow – sequencia de atividades; 
• Dataflow – fluxo de informação; 
19 
 
• Papel/ação – quem faz o que? 
 
Modelos genéricos de processos 
• Modelo cascata; 
• Desenvolvimento evolucionário; 
• Transformação formal e 
• Integração a partir de componentes reutilizáveis. 
 
2.6.1 Modelo cascata 
Também conhecido como ciclo de vida clássico, tem como principal característica a 
sequencia de atividades onde cada fase transcorre completamente e seus produtos são vistos 
como entrada para uma nova fase. Sofreu diversos ajustes e aprimoramentos sendo muito 
utilizado nos dias atuais. 
A Figura 1 mostra uma descrição visual do modelo cascata: 
 
 
 
 
 
 
 
 
 
 
 
 
 
Modelo cascata 
A ideia principal do modelo é que as diferentes etapas de desenvolvimento seguem 
uma sequência, ou seja, a saída da primeira etapa flui para a segunda etapa, a saída da 
segunda flui para a terceira e assim por diante. As atividades são agrupadas em tarefas, 
executadas sequencialmente, de forma que uma tarefa só poderá ter início quando a anterior 
tiver terminado. 
O modelo pressupõe que o cliente participa ativamente no projeto e que sabe muito 
bem o que quer. Este modelo minimiza o impacto da compreensão adquirida no andamento 
de um projeto, uma vez que se um processo não pode voltar atrás de modo a alterar os 
Análise 
Projeto 
Implantação 
Codificação 
Testes 
20 
 
modelos e as conclusões das tarefas anteriores, é normal que as novas ideias sobre o sistema 
não sejam aproveitadas. 
Numa tentativa de resolver este tipo de problema foi definido um novo tipo de 
processo baseado no clássico em cascata, designado por modelo em cascata revisto, cuja 
principal diferença consiste em prever a possibilidade de a partir de qualquer tarefa do ciclo 
se poder regressar a uma tarefa anterior de forma a contemplar alterações funcionais e/ou 
técnicas que entretanto tenham surgido, em virtude de um maior conhecimento que se tenha 
obtido. O risco desta abordagem é que, na ausência de um processo de gestão do projeto e 
de controle das alterações bem definido, podemos passar o tempo num ciclo infinito, sem 
nunca se atingir o objetivo final, ou seja, disponibilizar o sistemaa funcionar. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Cascata revisto 
2.6.2 Modelo de Prototipagem 
Muitas vezes nos deparamos com situações em que o cliente ainda não identificou 
os requisitos de entrada, processamento e saída de forma detalhada. Existem também outros 
casos que o desenvolvedor não tem a certeza do efeito de um determinado algoritmo, da 
compatibilidade com determinado sistema operacional ou ainda se a usabilidade está boa. 
Em todos os casos geralmente acarreta em erros e consequentemente na insatisfação do 
cliente. Nessas e em outras muitas situações a Prototipação da Engenharia de Software pode 
representar uma excelente abordagem. 
Análise 
Projeto 
Implantação 
Codificação 
Testes 
21 
 
A Prototipação é um processo no qual o desenvolvedor tem a capacidade de criar 
um modelo do software que será implementado. O modelo pode assumir uma das três formas: 
1. Um modelo em papel que o usuário tenha a visão da interação homem-máquina e 
quantas interações ocorrerá. 
2. Um protótipo de trabalho que implementa algumas funcionalidades exigidas pelo 
software. 
3. Um programa existente que executa parte ou toda a função desejada, mas que 
tem outras características que serão melhoradas posteriormente. 
A sequência de eventos para o paradigma de prototipação é ilustrada a seguir. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Modelo Prototipação 
 
Como em todas as abordagens do desenvolvimento de software, a prototipação inicia-
se com a coleta de requisitos. Durante essa fase, clientes e desenvolvedores ficam em 
constante interação, facilitando assim o levantamento de requisitos e funcionalidades do 
sistema. Ocorre então a elaboração de um “projeto rápido”, concentrando-se nos aspectos 
definidos pelo usuário. O Projeto rápido leva a construção de um protótipo que é avaliado pelo 
cliente/usuário e é usado para refinar os requisitos. 
Assim como o Ciclo de Vida Clássico, a Prototipação como paradigma da Engenharia 
de Software pode trazer problemas nas seguintes situações: 
1. O Protótipo na grande maioria das vezes é projetado sem a preocupação com a qualidade 
e manutenibilidade a longo prazo. 
2. A implementação utilizada para apresentar o protótipo pode no final ser a definitiva. 
Coleta de 
requisitos 
Refinamento 
protótipo Projeto 
Avaliação do 
protótipo 
Construção 
do protótipo 
22 
 
3. Com o tempo os desenvolvedores podem se acostumar com a forma de codificação da 
prototipação. 
4. O descarte do protótipo pode ser visto como perda de tempo pelo cliente. 
A Prototipação é um paradigma eficiente da Engenharia de Software. A chave é o 
acordo entre cliente e desenvolver que o protótipo será construído a fim de servir como base 
para definição de requisitos. Ele será depois descartado (pelo menos em parte) e o software 
real será projetado, levando-se em consideração a qualidade e a manutenibilidade. 
Vimos que a ideia principal da prototipação é a criação de uma espécie de “modelo” 
que servirá de base para algo real. 
 
2.6.3 Modelo de processo de desenvolvimento incremental 
O Modelo Incremental foi desenvolvido através da combinação entre os modelos linear 
e prototipação. O desenvolvimento é dividido em etapas, denominadas “incrementos”, que 
produzirão acréscimos ao sistema, até a sua versão final. 
Em cada incremento é realizado todo o ciclo do desenvolvimento de software, desde 
o planejamento até os testes do sistema já em funcionamento. Cada etapa produz um sistema 
totalmente funcional, apesar de ainda não cobrir todos os requisitos. 
O Modelo Incremental apresenta diversas vantagens para o desenvolvimento de um 
software, especialmente se os requisitos não estão claros inicialmente. Por exemplo: quando 
o Modelo Incremental é utilizado, o primeiro incremento é normalmente constituído do núcleo 
do sistema. Isto é, os requisitos básicos são implementados, e os detalhes suprimidos. Esse 
produto será entregue para uma avaliação, que poderá detectar, inicialmente, problemas que 
poderiam ter dimensões muito maiores se detectados somente na entrega do produto final. 
Outra vantagem para o desenvolvedor é que, em contato com o sistema, o cliente 
esclarece seus requisitos e suas prioridades para os próximos incrementos, além de contar 
com os serviços da versão já produzida. 
 
 
 
 
 
 
 
 
 
23 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Modelo incremental 
 
Vantagens do processo incremental 
- Possibilidade de avaliar mais cedo os riscos e pontos críticos do projeto, e identificar 
medidas para eliminá-los ou controlá-los; 
- Redução dos riscos envolvendo custos a um único incremento. Se a equipe que 
desenvolve o software precisar repetir a iteração, a organização perde somente o esforço mal 
direcionado de uma iteração, não o valor de um produto inteiro; 
- Definição de uma arquitetura que melhor possa orientar todo o desenvolvimento; 
- Disponibilização natural de um conjunto de regras para melhor controlar os 
inevitáveis pedidos de alterações futuras; 
- Permite que os vários intervenientes possam trabalhar mais efetivamente pela 
interação e partilha de comunicação daí resultante. 
Análise 
Projeto 
Codificação 
Testes 
Análise 
Projeto 
Implantação 
Codificação 
Testes 
1ª Versão 
2ª Versão 
24 
 
2.6.4 Modelo Iterativo 
Modelo concebido com base nas limitações do modelo em cascata, combinando as 
vantagens deste com as do modelo Prototipação. A ideia principal é a de que um sistema 
deve ser desenvolvido de forma incremental, onde a cada incremento serão adicionadas ao 
sistema novas capacidades funcionais, até a obtenção do sistema final. A cada passo 
realizado, modificações podem ser introduzidas. 
Uma implementação inicial do sistema é obtida, na forma de um subconjunto da 
solução do problema global deve contemplar os principais aspectos que sejam facilmente 
identificáveis no que diz respeito ao problema a ser resolvido. 
A lista de controle de projeto contem todos os passos a serem realizados para a 
obtenção do sistema final definindo quais tarefas devem ser realizadas a cada iteração. 
Todo o desenvolvimento é gerenciado para se medir em um determinado nível, o quão 
distante se está da última iteração. 
Cada iteração do modelo consiste em retirar um passo da lista de controle de projeto 
através da realização de três etapas (projeto, implementação e análise) até que a lista esteja 
completamente vazia. 
Vantagens desta abordagem 
• facilidade em testar o sistema, uma vez que a realização de testes em cada 
nível de desenvolvimento é mais fácil do que testar o sistema na sua versão final 
• obtenção de um sistema (mesmo incompleto) rapidamente, o que pode 
oferecer ao cliente interessantes informações que sirvam de subsídio para a melhor definição 
de futuros requisitos do sistema (como na Prototipação). 
 
 
 
 
 
 
 
 
 
 
 
 
 
Modelo iterativo 
Análise 
Projeto 
Codificação 
Análise 
Projeto 
Codificação 
Análise 
Projeto 
Codificação 
0 1 N 
. . . 
25 
 
Diferença entre o modelo iterativo e o modelo Incremental 
Os modelos iterativo e incremental podem ser facilmente confundidos, mas são 
profundamente diferentes. 
No modelo incremental, desenvolve-se uma primeira versão, sem se preocupar muito 
com o todo. Portanto, o desenvolvimento se inicia sem que haja um conhecimento amplo dos 
requisitos do sistema. Através do feedback do usuário, os requisitos vão sendo elicitados e 
implementados nas versões subsequentes do sistema. 
No modelo iterativo, tem-se uma visão inicial de todos (ou quase todos) os requisitos 
do usuário, mas não se implementam todos de uma vez: a cada iteração é implementado um 
subconjunto de requisitos. Estes requisitos são então apresentados ao usuário, que fica 
satisfeito ao ver que os trabalhos estão evoluindo. Eventualmente, um requisito pode ser até 
implantado e disponibilizado para uso. Admite-se que o levantamentoinicial registre 80% dos 
requisitos do sistema. Os outros surgem durante o desenvolvimento. Não vale a pena investir 
muito tempo para se esgotar todos os requisitos: perde-se tempo e corre-se o risco de levantar 
falsos requisitos (desnecessários). 
Observe as figuras que auxiliam em um comparativo entre os modelos incremental e 
Iterativo: 
 
 
 
26 
 
2.6.5 Modelo Espiral 
Neste modelo o projeto é tratado como uma série de pequenos ciclos, cada um 
finalizando uma versão de um software executável. 
O modelo em espiral foi proposto como forma de integrar os diversos modelos 
existentes à época, eliminando suas dificuldades e explorando seus pontos fortes. Foi 
desenvolvido para abranger as melhores características tanto do ciclo de vida clássico como 
da prototipação acrescentando, ao mesmo tempo, um novo elemento: a análise de riscos. 
Entretanto a integração não se dá através da simples incorporação de características 
dos modelos anteriores. O modelo em espiral assume que o processo de desenvolvimento 
ocorre em ciclos, cada um contendo fases de avaliação e planejamento, onde a opção de 
abordagem para a próxima fase (ou ciclo) é determinada. Estas opções podem acomodar 
características de outros modelos. 
O modelo original em espiral organiza o desenvolvimento como um processo iterativo 
em que vários conjuntos de quatro fases se sucedem até se obter o sistema final. 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, análise e avaliação de alternativas, identificação e solução de 
riscos, executa-se uma análise de risco. A 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. 
A figura abaixo exemplifica uma representação do modelo espiral. 
 
 
Modelo espiral 
 
Variações do modelo espiral consideram entre três e seis tarefas ou setores da 
espiral, que podem ser: 
- comunicação com o cliente; 
27 
 
- planejamento; 
- análise de risco; 
- engenharia; 
- construção e liberação; 
- avaliação do cliente. 
O modelo espiral é atualmente a abordagem mais realística para desenvolvimento 
de software em grande escala, e usa uma abordagem que capacita a empresa que presta o 
serviço, e o cliente a entender e reagir aos riscos em cada etapa evolutiva. Este tipo de modelo 
exige considerável experiência na determinação de riscos e depende dessa experiência para 
ter sucesso, pode ser difícil convencer os clientes que uma abordagem evolutiva é controlável. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Iterativo X Interativo 
Duas palavras muito comuns na área de informática, mas que constantemente são 
confundidas em seu significado e aplicação: iterativo e interativo. 
Iterativo se refere a ciclo, repetição. 
Uma Iteração é um ciclo ou uma etapa 
de uma rotina maior. 
Interativo, se refere a relacionamento, 
comunicação. 
Uma interação é uma ação mútua, uma entidade 
agindo sobre a outra ou vice-versa. 
 
Equívoco 
28 
 
Quais são os custos da Engenharia de Software? 
 
Aproximadamente 60% do custo são de desenvolvimento, 40% são para testes. Em 
software sob medida, custos de evolução normalmente excedem os de desenvolvimento. 
Os custos variam de acordo com: 
• o tipo do sistema a ser desenvolvido; 
• atributos de requisitos tais como performance e confiabilidade; 
• A distribuição do custo depende do modelo de desenvolvimento utilizado. 
 
2.8 O que são métodos de Engenharia de Software? 
 
Abordagens estruturadas de desenvolvimento que incluem modelos de sistema, 
notações, regras, diretrizes de projeto e guia de processo. 
Descrições de modelos de sistema: 
Descrições de modelos gráficos que devem ser produzidos 
Regras: 
Restrições aplicadas aos modelos do sistema 
Recomendações: 
Orientações sobre boas práticas de projeto 
Guia de processo: 
Quais são as próximas atividades 
Engenharia: Aplicação de conhecimentos científicos e empíricos, e certas habilidades 
para criação de estruturas. 
Software: Programa de computador. 
Engenharia de Software: Aplicação prática do conhecimento para a construção de 
programas. 
 
 
Problemas no desenvolvimento 
 
Entendimento do problema 
Definição inadequada 
Deficiência no levantamento de necessidades 
Deficiência na estruturação e planejamento do projeto 
Deficiência na organização do projeto 
29 
 
Dificuldade no encerramento do projeto 
Diálogo entre usuários e analistas 
Documentação inadequada 
Modelos diversos para representação da solução 
Passagem da representação da solução para o sistema de processamento de dados 
Falta de padronização 
 
Mitos do Software 
 
1 - “Já temos um manual repleto de padrões e procedimentos para a construção de 
software. Isso já é suficiente para o pessoal do desenvolvimento”. 
2 - “Meu pessoal tem ferramentas de última geração, afinal de contas compramos os 
mais novos computadores”. 
3 - “Se nós estamos atrasados nos prazos, podemos adicionar mais programadores e 
tirar o atraso”. 
4 - “Uma declaração geral dos objetivos é suficiente para se começar a escrever 
programas, podemos preencher os detalhes mais tarde”. 
5 - “Os requisitos de projeto modificam-se continuamente, mas as mudanças podem 
ser facilmente acomodadas, porque o software é flexível”. 
6 - “Assim que escrevermos o programa e o colocarmos em funcionamento, nosso 
trabalho estará completo”. 
7 - “Enquanto não tiver o programa funcionando, eu não terei realmente nenhuma 
maneira de avaliar sua qualidade”. 
8 - “A única coisa a ser entregue em um projeto bem-sucedido é o programa 
funcionando”. 
 
 
Paradigmas de Engenharia de Software 
 
Método é uma palavra que vem do grego méthodos, que significa “caminho para se 
chegar a um fim”. 
O Aurélio define método como sendo “programa que regula previamente uma série de 
operações que se devem realizar, apontando erros evitáveis, em vista de um resultado 
determinado”. 
 
Técnica é uma palavra que vem do grego technikós, que significa "relativo à arte". 
30 
 
O Aurélio [FER75] define técnica como sendo “a parte material ou o conjunto de 
processos de uma arte”. 
 
Ferramenta é uma palavra que vem do latim ferramentum. 
O Aurélio [FER75] define ferramenta como sendo “qualquer utensílio empregado nas 
artes e ofícios”. 
 
Estes três elementos devem ser envolvidos em um único conjunto de etapas. 
O arcabouço deste conjunto é conhecido como ciclo de vida ou paradigma de 
engenharia de software. 
A definição do paradigma, dos métodos, das ferramentas e técnicas para aplicação 
em desenvolvimento de software cria uma metodologia de desenvolvimento de sistemas 
(MDS). 
 
Ciclo de vida do software é um modelo que orienta as principais atividades no 
desenvolvimento de um sistema / software. Ele é fundamental para a definição de uma MDS. 
 
Apresentaremos os enfoques mais comuns de modelos de ciclo de vida do sistema / 
software. 
Modelo tradicional ou em Cascata (Waterfall) 
Este abordagem baseia-se no modelo cascata ou método linear de desenvolvimento 
(figura 2). 
Podem ser utilizados conceitos de Engenharia de Software, a qual prevê atividade de 
verificação (estamos fazendo o produto de forma correta?), validação (estamos fazendo o 
produto certo?) e de controle de qualidade. 
 
O ciclo é representado pelas seguintes fases: 
Viabilidade: definição preliminar do escopo do sistema, restrições e conceitos 
alternativos; 
Análise: especificação funcional do sistema (Projeto Lógico); 
Projeto: especificação completa da arquitetura de hardware e software, estruturas de 
controle, estruturas de dados do sistema,interfaces; 
Implementação: codificação e teste individual dos programas; 
Teste: teste dos componentes integrados do sistema; 
Implantação: implantação de maneira gradativa, a fim de evitar insatisfação e 
possibilitando a recorreção do sistema. Implantação piloto / paralela e definitiva; 
31 
 
Operação e Manutenção: utilização do sistema e modificações decorrentes de erros, 
mudança de necessidades, etc. 
 
O modelo cascata é apropriado para sistemas transacionais onde as rotinas e 
procedimentos a serem automatizados são altamente estruturados. 
 
A principal desvantagem desta abordagem é o alto custo de correção das 
especificações quando nas fases de Teste e Implantação. 
Modelo de ciclo de vida com prototipação 
Conjunto de técnicas e ferramentas de software para o desenvolvimento de modelos 
“vivos” de sistemas. 
 
Objetivo: Antecipar ao usuário final um modelo de sistema para que ele possa avaliar 
sua finalidade, identificar erros e omissões, quando em utilização, efetuando de imediato 
correções e ajustes. 
 
A filosofia de protótipos possui as seguintes vantagens: 
• maior garantia de sucesso técnico e psicológico; 
• redução no fator tempo: "o usuário gosta de ver o sistema funcionando"; 
• ideal para sistemas gerenciais e de apoio a decisão. 
 
Como desvantagens temos: 
• exige elevada capacitação gerencial por parte da equipe do projeto; 
• aparentemente, mais dispendioso (a longo prazo esta desvantagem tende a 
desaparecer); 
• exige uma ferramenta apropriada de prototipação. 
 
Modelo Espiral ou Evolutivo 
Modelo de ciclo de vida que se utiliza de protótipos por se adequar muito bem com 
esta filosofia de desenvolvimento. Cada passo através do ciclo inclui: planejamento, análise e 
projeto, prototipação e avaliação. Os passos vão sendo repetidos até que um produto seja 
obtido. 
Este é um modelo que atende os seguintes casos: 
• o problema a ser resolvido não está totalmente entendido; 
• a realidade pode mudar enquanto o sistema está sendo desenvolvido; 
• a própria solução adotada pode ter algum efeito colateral desconhecido; 
32 
 
• a preocupação está centrada mais na qualidade e funcionalidade do que se 
produz. 
 
Com base na experiência adquirida com a primeira versão, estabelecem-se novos 
requisitos para o sistema, e uma nova versão é concebida e implementada. 
 
A prototipação no ciclo de vida espiral tem como objetivos: 
• estabelecer um diálogo intensivo entre usuários e analistas/projetistas; 
• encurtar ao máximo o ciclo "concepção-implementação-utilização-avaliação" 
do sistema; 
• possibilitar a evolução do sistema através de vários ciclos ou refinamentos 
sucessivos; 
• avaliar constantemente o sistema. 
 
 
O que é CASE (Computer-Aided Software Engineering)? 
Sistemas de software cujo objetivo é fornecer apoio automatizado para atividades do 
processo de software. Sistemas CASE são normalmente usados para sustentar métodos 
Upper-CASE 
Ferramentas que dão apoio às atividades iniciais do processo, tais como de análise de 
requisitos e projeto 
Lower-CASE 
Ferramentas que dão apoio às atividades finais do processo, tais como programação, 
depuração e teste 
 
Quais são os atributos de um bom software? 
 
Ter funcionalidade e desempenho solicitado pelo usuário, deve ser manutenível, 
confiável e usável. 
Manutenibilidade 
O software deve evoluir para atender as necessidades de mudanças 
Confiabilidade 
O software deve ser confiável 
Eficiência 
O software não deve esbanjar os recursos do sistema 
Usabilidade 
33 
 
O software deve ser usável pelos seus usuários 
Quais são os principais desafios enfrentados pela engenharia de software? 
Competição com sistemas legados, com aumento da diversidade e com a demanda 
reduzida do tempo de liberação 
Sistemas Legados 
Sistemas antigos e valiosos devem ser mantidos e atualizados 
Diversidade 
Sistemas são distribuídos e incluídos num misto de hardware e software 
Liberação 
Aumento da pressão para rápida liberação do software 
 
Responsabilidade Profissional e Ética 
 
Engenheiros de Software comprometem-se com responsabilidades ao invés de 
apenas envolver-se com a aplicação de habilidades técnicas 
Engenheiros de Software devem se comportar de maneira honesta, ética e 
responsável se quiserem ser respeitados como profissionais 
Comportamento ético é muito mais do que simplesmente respeitar as leis. 
 
Assuntos de responsabilidade profissional 
 
Confidencialidade 
Engenheiros devem respeitar a confidencialidade de seus empregados ou clientes 
independentemente da existência de um acordo de confidencialidade formal. 
Competência 
Engenheiros não devem violar seu nível de competência. Eles não devem 
propositalmente aceitar trabalhos que estejam fora de sua competência. 
 
Assuntos de responsabilidade profissional 
 
Direitos da propriedade intelectual 
Engenheiros devem estar cientes da legislação local que governa o uso da 
propriedade intelectual tais como padrões, copyright, etc. Eles devem ter cuidado em 
assegurar que a propriedade intelectual dos empregados e clientes sejam protegidas. 
Uso impróprio do computador 
Engenheiros de software não devem usar suas habilidades técnicas para fazer uso 
inapropriado de computadores de outras pessoas. O uso impróprio do computador varia 
34 
 
desde algo trivial (por exemplo, jogar jogos de computador nos computadores de 
empregados) até a algo mais sério (disseminação de vírus). 
 
Código de ética da ACM/IEEE 
 
A sociedade de profissionais dos EUA definiram um código de ética e de prática. 
Membros dessas organizações assinam o código de prática quando se filiam. 
O Código contêm 8 Princípios relacionados ao comportamento e decisões tomadas 
por profissionais de ES, incluindo praticantes, educadores, gerentes, supervisores e diretores, 
bem como estagiários e estudantes da profissão. 
 
Código de ética – Introdução 
 
Introdução 
A pequena versão do código resume as aspirações num nível alto de abstração; as 
cláusulas incluídas na versão completa dão exemplos e detalhes de como estas aspirações 
mudam a maneira que nós agimos como profissionais de ES. Sem as aspirações, os detalhes 
podem se transformar em algo tedioso; sem os detalhes, as aspirações podem se transformar 
em algo profundo, porém vazio; juntos, as aspirações e os detalhes formam um código coeso. 
Engenheiros de software irão executar a análise, especificação, projeto, 
desenvolvimento, testes e manutenções de software como uma profissão benéfica e 
respeitada. De acordo com seu compromisso com a saúde, segurança e bem estar do público, 
engenheiros de software irão aderir aos seguintes princípios: 
 
Código de ética – princípios 
 
1. PÚBLICO 
Engenheiros de Software irão atuar de acordo com o interesse público. 
2. CLIENTE AND EMPREGADO 
Engenheiros de Software irão atuar de acordo com os melhores interesses de seus 
clientes e empregados e consistentemente com o interesse público. 
3. PRODUTOS 
Engenheiros de Software irão assegurar que seus produtos e alterações associadas 
atendam, tanto quanto possível, os melhores padrões profissionais. 
4. JULGAMENTO 
Engenheiros de Software irá manter a integridade e independência no seu julgamento 
profissional. 
35 
 
5. GERENCIAMENTO 
Gerentes e líderes de ES irão se comprometer e promover uma abordagem ética para 
o gerenciamento do desenvolvimento e manutenção de software. 
6. PROFISSÃO 
Engenheiros de Software irão promover a integridade e reputação de profissionais 
consistentes com o interesse público. 
7. COLEGAS 
Engenheiros de software irão ser honestos e opiar seus colegas. 
8. PARA SI MESMOS 
Engenheiros de software irão se envolver, durante a sua vida, em aprender as práticas 
de sua profissão e promover abordagens éticas para a prática de sua profissão. 
 
Dilemas éticos 
 
Desacordo com os princípios políticos da gerência sênior. 
Empregados agem de forma não ética e liberaum sistema de segurança crítica sem 
finalizar os no sistema. 
Participação no desenvolvimento de sistemas de armas militares ou sistemas 
nucleares. 
 
Pontos chaves 
A ES é uma disciplina de engenharia preocupada com todos os aspectos da produção 
de software. 
Produtos de software consistem de programas desenvolvidos e documentações 
associadas. Os atributos essenciais desses produtos são: manutenibilidade, confiabilidade, 
eficiência e usabilidade. 
O processo de software consiste de atividades envolvidas no desenvolvimento de 
produtos de software. As atividades básicas são: especificação, desenvolvimento, validação 
e evolução de software. 
Métodos são formas organizadas de produzir produtos. 
Consistem de recomendações a serem seguidas, de notações a serem usadas, regras 
para descrições de sistemas que serão produzidos, e de diretrizes e guias de projeto. 
Ferramentas CASE são sistemas de software que são projetados para apoiar 
atividades rotineiras do processo de software, tal como edição de diagramas de projeto, 
validação 
da consistência de diagramas e rastreabilidade dos testes executados 
36 
 
Engenheiros de software possuem responsabilidades para com a profissão e 
sociedade. Eles não devem se concentrar exclusivamente em assuntos técnicos. 
As sociedades de profissionais publicaram o código de conduta que estabelece os 
padrões comportamentais esperados de seus membros. 
 
Engenharia de Sistemas 
 
Projetar, implementar, implantar, operar sistemas compostas por hardware, software 
e pessoas 
 
Objetivos 
Explicar por que sistemas de software são afetados por vários assuntos de engenharia 
de sistemas 
Introduzir conceitos de propriedades de sistemas emergentes, tais como confiabilidade 
e segurança 
Explicar por que os ambientes de sistemas devem ser considerados no processo de 
projeto de sistemas 
Explicar engenharia de sistemas e processos de aquisição de sistemas 
Tópicos cobertos 
Propriedades de sistemas emergentes 
Sistemas e seus ambientes 
Modelagem de sistema 
Processo de engenharia de sistemas 
Aquisição de sistemas 
 
O que é um sistema? 
Uma coleção intencional de componentes inter-relacionados que trabalham juntos 
para atingir algum objetivo comum. 
Um sistema pode conter software, hardware mecânicos, elétricos e eletrônicos e 
pessoas. 
Componentes de sistema dependem de outros componentes de sistema. 
Propriedades e comportamentos dos componentes de sistema são intricados e inter-
relacionados. 
 
Problemas da engenharia de sistemas 
Grandes sistemas são normalmente projetados para resolver graves problemas 
37 
 
A engenharia de sistemas necessita de uma incrível coordenação e disciplina devido 
a: 
Possibilidades quase infinitas para projetar componentes intercambiáveis 
Desconfiança mútua e falta de entendimento entre disciplinas de engenharia 
Sistemas devem ser projetados para durar muitos anos mesmo em ambientes que 
sofram mudanças 
Engenharia de Software e de sistemas 
A proporção de software nos sistemas está aumentando. 
Sistemas eletrônicos de propósito geral controlado por software está substituindo 
sistemas de propósitos específicos. 
Problemas da engenharia de sistemas são similares aos problemas da engenharia de 
software 
O software é (infelizmente) visto como um problema da engenharia de sistemas. 
Muitos projetos de grandes sistemas têm sofrido atrasos por causa dos problemas de 
software. 
 
Propriedades emergentes 
Propriedades do sistema como um todo ao invés de propriedades que podem ser 
derivadas de componentes do sistema. 
Propriedades emergentes são uma conseqüência do relacionamento entre 
componentes do sistema. 
Então eles podem somente ser estimados e medidos uma vez que os componentes 
tenham sido integrados ao sistema 
 
Exemplos de propriedades emergentes 
O peso total do sistema 
É um exemplo de uma propriedade emergente que pode ser computado a partir das 
propriedades individuais. 
Confiabilidade do sistema 
Depende da confiabilidade dos componentes do sistema e do relacionamento entre 
eles. 
Usabilidade de um sistema 
Essa é uma propriedade muito complexa, que não depende só do hardware e do 
software, mas também dos operadores do sistema e do ambiente em que ele é usado. 
 
Tipos de propriedades emergentes 
Propriedades funcionais 
38 
 
Elas aparecem quando todas as partes do sistema trabalham em conjunto para atingir 
algum objetivo. Por exemplo, uma bicicleta tem uma propriedade funcional de ser um 
dispositivo de transporte, uma vez que está montada com todos os seus componentes. 
Propriedades emergentes não funcionais 
Elas são confiabilidade, desempenho, segurança e proteção. Estão relacionadas ao 
comportamento do sistema em seu ambiente operacional. Muitas vezes, elas são críticos aos 
sistemas computacionais, uma vez que uma falha em atingir um nível mínimo definido nessas 
propriedades pode inutilizar o sistema. 
 
Confiabilidade de sistemas 
Devido a interdependência de componentes, falhas podem se propagar através do 
sistema 
As falhas do sistema ocorrem com freqüência devido aos inter-relacionamentos 
imprevistos entre componentes 
É provavelmente impossível antecipar todos os possíveis relacionamentos de 
componentes 
Medidas de confiabilidade de software podem dar uma falsa idéia de confiabilidade de 
sistema 
 
Influências sobre confiabilidade 
Confiabilidade de Hardware 
Qual é a probabilidade de um componente falhar e quanto tempo leva para reparar 
esse componente? 
Confiabilidade de Software 
Qual é a probabilidade de que um componente de software venha a produzir uma 
saída incorreta? Falhas de software normalmente são distintas das falhas de hardware, pois 
o software não se desgasta. 
Confiabilidade do Operador 
Qual é a probabilidade de que o operador de um sistema cometa um erro? 
 
Relacionamento de confiabilidade 
Falhas de hardware podem gerar falsos sinais, fora dos limites das entradas esperadas 
pelo software. 
Erros de software podem ativar alarmes, causando tensão no operador e induzi-lo a 
erros 
O ambiente no qual um sistema está instalado pode afetar sua confiabilidade 
 
39 
 
Propriedades que o sistema não deve exibir 
Propriedades tais como desempenho e confiabilidade podem ser medidas depois que 
o sistema estiver funcionando 
No entanto, algumas propriedades são propriedades que o sistema não deve exibir: 
Segurança – o sistema não deve comportar-se de forma insegura. 
Proteção – o sistema não deve permitir uso não autorizado 
Medir ou estimar essas propriedades é muito difícil 
 
Sistemas e seus ambientes 
Sistemas não são independentes, eles existem dentro de um ambiente 
Funções do sistema podem se alterar devido ao ambiente 
O ambiente afeta a funcionalidade do sistema, por exemplo, sistemas precisam de 
energia elétrica fornecida pelo ambiente 
Tanto o ambiente organizacional quanto o ambiente físico são importantes 
 
Hierarquias de sistemas 
 
Fatores humanos e organizacionais 
Mudanças no processo 
O sistema requer mudanças nos processos de trabalho, no ambiente? 
Mudanças nas tarefas 
Os sistemas diminuem a habilidade dos usuários em um ambiente ou fazem com que 
modifiquem o modo como eles trabalham? 
Mudanças organizacionais 
O sistema modifica a estrutura de poder político em uma organização? 
 
Modelando a arquitetura do sistema 
Um modelo arquitetural apresenta um visão abstrata de subsistemas compondo um 
sistema 
Muitos incluem fluxo de informações entre subsistemas 
Normalmente apresentados como um diagrama de blocos 
Podem identificar diferentes tipos de componentes funcionais no modelo 
 
Sistema de alarme contra intrusos 
 
Tipos de componentes no sistema de alarme 
Sensor 
40 
 
Sensor de movimento, sensor de porta 
Atuador 
Sirene 
Comunicação 
Discador de telefone 
Coordenação 
Controlador de alarme 
Interface 
Sintetizador de voz 
 
Arquitetura do sistema ATC 
 
Componentesfuncionais do sistema 
 
Componentes de Sensor 
Componentes de Atuador 
Componentes de Computação 
Componentes de Comunicação 
Componentes de Coordenação 
Componentes de Interface 
 
Componentes de Sistema 
Componentes de Sensor 
Informações coletadas do ambiente do sistema. Por exemplo, radar do sistema de 
controle de tráfego aéreo. 
Componentes de Atuador 
Provoca alguma mudança no ambiente do sistema. Por exemplo, válvulas num 
sistema de controle de processo que aumenta ou reduz o fluxo de materiais num cano 
Componentes de Computação 
Realizar alguma computação sobre uma entrada para produzir uma saída. Por 
exemplo, um processador de ponto flutuante num sistema computacional 
Componentes de Comunicação 
Permitem que componentes do sistema comuniquem-se uns com os outros: 
computadores distribuídos interligados em rede 
Componentes de Coordenação 
Coordena as interações de outros componentes do sistema: escalonador de sistema 
em tempo real 
41 
 
Componentes de Interface 
Facilitam as interações com outros componentes do sistema: interface com o operador 
Todos os componentes são normalmente controlados por software 
 
O processo de engenharia de sistemas 
Normalmente seguem o modelo “cascata” devido ao desenvolvimento paralelo de 
diferentes partes do sistema 
Pequenos escopos para interação entre fases devido as mudanças de hardware serem 
de alto custo. Software podem ter que compensar os problemas de hardware 
Envolvem, inevitavelmente, engenheiros de diferentes disciplinas que devem trabalhar 
juntos. 
Há muitos escopos de equívocos aqui. Diferentes disciplinas usam vocabulários 
diferentes e é necessária muita negociação. Engenheiros podem ter agendas pessoais para 
cumprir. 
 
O processo de engenharia de sistemas 
 
Envolvimento interdisciplinar 
 
Definição de requisitos do sistema 
Três tipos de requisitos definidos neste estágio 
Requisitos funcionais abstratos. Funções do sistema são definidos de forma abstrata 
Propriedades do sistema. São definidos os requisitos nãofuncionais do sistema 
Características indesejáveis. É especificado o comportamento inaceitável do sistema 
Deve-se também definir os objetivos gerais da organização para o sistema 
 
Objetivos do sistema 
Objetivos funcionais 
Fornecer um sistema de alarme contra incêndios e contra intrusos para um edifício, 
com o objetivo de divulgar avisos internos e externos referentes a incêndios ou à entrada de 
pessoas não autorizadas 
Objetivos organizacionais 
Assegurar que as funcionalidades normais executadas edifício não sejam seriamente 
perturbados por eventos tais como de incêndio e entrada não autorizada de pessoas 
 
Problemas de requisitos do sistema 
Alteração de como o sistema está sendo especificado 
42 
 
Necessidade de antecipar o desenvolvimento de hardware/comunicações durante o 
tempo de vida do sistema 
Dificuldade de definir requisitos não-funcionais (particularmente) sem uma visão da 
estrutura de componentes do sistema 
 
O processo de projeto de sistemas 
Agrupar requisitos 
Organizar requisitos em grupos relacionados 
Identificar subsistemas 
Identificar um conjunto de subsistemas que coletivamente possam atender os 
requisitos do sistema 
Atribuir requisitos aos subsistemas 
Introdução de problemas específicos quando COTS são integrados 
Especificar funcionalidade de subsistemas 
Definir interfaces de subsistemas 
Atividade crítica para o desenvolvimento paralelo de subsistemas 
 
O processo de projeto de sistemas 
 
 
Problemas de projeto de sistemas 
A divisão de requisitos entre hardware, software e componentes humanos pode 
envolver muita negociação 
Assume-se que dificuldades em resolver problemas de projeto são normalmente 
resolvidos por software 
Plataformas de hardware podem não ser apropriados para atender os requisitos de 
software tal que o software deve compensar isso 
 
Desenvolvimento de subsistemas 
Normalmente, projetos de hardware, software e comunicações são desenvolvidos em 
paralelo 
Muitos envolvem algumas aquisições de sistemas COTS (Commercial Off-the-Shelf) 
Falha de comunicação entre as equipes de implementação 
Mecanismos burocráticos e lentos para aprovar mudanças no sistema faz com que o 
cronograma de desenvolvimento seja estendido devido a necessidade de re-trabalho 
Integração de sistemas 
43 
 
É o processo de colocar, todos juntos, hardware, software e pessoas para compor o 
sistema 
Deve ser realizado incrementalmente tal que os subsistemas sejam integrados um de 
cada vez 
Problemas de interface entre subsistemas são normalmente encontrados neste 
estágio 
Podem existir problemas de incompatibilidade de versões entre componentes de 
sistema 
 
Instalação do sistema 
Suposições sobre o ambiente podem ser incorretas 
Podem existir resistência humana na introdução de um novo sistema 
O sistema pode precisar coexistir com sistemas alternativos por algum tempo 
Podem existir problemas de instalação física (por exemplo, problemas de cabeamento) 
Identificação da necessidade de treinamento de operadores 
 
Operação do sistema 
Irão surgir requisitos inesperados 
Usuários podem usar o sistema de maneira nãoprevista pelos projetistas do sistema 
Podem aparecer problemas de interação com outros sistemas 
Problemas físicos de incompatibilidade 
Problemas de conversão de dados 
Elevação da média de erros de operação devido a inconsistências de interface 
 
Evolução do sistema 
Grandes sistemas tem um longo tempo de vida. Eles evoluem para atender as 
mudanças de requisitos 
A evolução é cara 
Mudanças devem ser analisados sob a perspectiva técnica e de negócio 
A interação de subsistemas pode gerar problemas não previstos 
Raramente existe uma lógica para decisões legítimas de projeto 
A estrutura do sistema é corrompida pelas mudanças realizadas 
Sistemas existentes que devem ser mantidos são chamados de sistemas legados 
 
Desativação de sistemas 
Tirar o sistema de serviço após terminado o seu tempo de vida 
44 
 
Pode ser necessário a remoção de materiais (por exemplo, produtos químicos 
perigosos) que podem poluir o ambiente 
A desativação deve ser planejada durante o projeto do sistema 
Pode ser necessário que os dados sejam reestruturados e convertidos para que 
possam ser usados em outros sistemas 
 
Aquisição do sistema 
Aquisição de um sistema para atender as necessidades da organização 
Alguns projetos de especificação e de arquitetura de sistema normalmente necessitam 
ser adquiridos 
Você precisa de uma especificação para fechar um contrato de desenvolvimento do 
sistema 
A especificação deve permitir a compra de sistemas COTS (commercial off-the-shelf), 
quase sempre mais barato do que desenvolver um sistema a partir do zero. 
 
O processo de aquisição de sistemas 
 
Consequência da aquisição 
Requisitos podem ter que ser modificados para se adaptar às capacidades de 
componentes COTS 
A especificação de requisitos pode ser parte do contrato de desenvolvimento do 
sistema 
Existe, normalmente, um período de negociação para combinar mudanças após a 
seleção do contrato de construção do sistema 
 
Contratos e subcontratos 
A aquisição de grandes sistemas de hardware / software é normalmente baseado em 
alguns pontos principais do contrato 
Subcontratos são emitidos a outros fornecedores para fornecer partes do sistema 
Clientes possuem vínculo com o principal contratado e não negocia diretamente com 
os subcontratados 
Modelo Contratado / Subcontratado 
 
Pontos chaves 
A Engenharia de Sistemas inclui várias disciplinas 
Propriedades emergentes são propriedades que são características do sistema como 
um todo e não apenas de suas partes 
45 
 
Modelos arquiteturais mostram os principais subsistemas e suas interconexões, são 
normalmente descritos usando diagrama de blocos 
 
Pontos chaves 
Os tipos de componentes de sistemas são: sensor, atuador, computação, 
coordenação, comunicaçãoe interface 
O processo de engenharia de sistemas baseia-se, normalmente, no modelo “cascata” 
e possui as fases de especificação, projeto, desenvolvimento e integração 
A aquisição de sistemas está preocupada em decidir qual sistema comprar e quem irá 
pagar por ele 
 
Conclusão 
A engenharia de sistemas é difícil! Nunca existirá respostas fáceis para problemas 
complexos de desenvolvimento de sistemas 
Engenheiros de sistemas não tem todas as respostas, mas conhecem melhor a visão 
sistêmica 
Disciplinas precisam reconhecer outras forças ativamente, ao invés de relutantemente 
cooperar no processo de engenharia de sistemas 
 
Processo de Software 
 
Conjunto coerente de atividades para especificar, projetar, implementar e testar 
sistemas de software 
 
Objetivos 
Introduzir modelos de processos de software 
Descrever vários modelos diferentes e quando eles podem ser usados 
Descrever, em linhas gerais, os modelos de processos para a engenharia de 
requisitos, desenvolvimento de software, estes e evolução 
Introduzir tecnologias CASE de apoio às atividades do processo de software 
 
O processo de software 
Conjunto estruturado de atividades necessárias para desenvolver um sistema de 
software 
Especificação 
Projeto e implementação 
Validação 
46 
 
Evolução 
Um modelo de processo de software é uma representação abstrata de um processo. 
Ele apresenta uma descrição de um processo a partir de alguma perspectiva particular 
 
Modelos de processos genéricos de software 
O modelo “cascata” 
Fases separadas e distintas da especificação e desenvolvimento 
Desenvolvimento evolucionário 
Especificação e desenvolvimento estão entrelaçados 
Desenvolvimento formal de sistemas 
Um modelo matemático do sistema é formalmente transformado para uma 
implementação 
Desenvolvimento orientado a reuso 
O sistema é montado a partir de componentes existentes 
 
Modelo cascata 
 
Fases do modelo cascata 
Análise e definição de requisitos 
Projeto de sistemas e de software 
Implementação e teste de unidades 
Integração e teste de sistemas 
Operação e manutenção 
A desvantagem do modelo cascata é a dificuldade de acomodar mudanças depois que 
o processo está em andamento 
 
Problemas do modelo cascata 
 
Inflexibilidade de particionar o projeto nesses estágios distintos. Nunca conseguimos 
isso. 
Dificuldade de responder a mudanças de requisitos de clientes 
Assim, o modelo somente é apropriado quando os requisitos estiverem bem 
consolidados e entendidos. 
 
Desenvolvimento evolucionário 
 
Desenvolvimento exploratório – Tipo 1 
47 
 
O objetivo é trabalhar junto aos clientes e desenvolver um sistema final a partir de um 
esboço inicial da especificação. O desenvolvimento inicia com requisitos bem compreendidos 
Protótipos descartáveis – Tipo 2 
O objetivo é entender os requisitos do sistema. Pode-se iniciar o processo com 
requisitos pouco entendidos. 
 
Problemas 
O processo não é visível 
Os sistemas normalmente são mal-estruturados 
Podem ser exigidas ferramentas e técnicas especiais 
Aplicabilidade 
Sistemas interativos de tamanho pequeno ou médio 
Partes de um grande sistema (por exemplo, interface de usuário) 
Sistemas de vida curta 
 
Desenvolvimento formal de sistemas 
Baseado na transformação de uma especificação matemática através de diferentes 
representações para um programa executável 
As transformações preservam a exatidão, tal que é fácil mostrar que o programa 
encontra-se em conformidade com a especificação 
Incorporado na abordagem ‘Cleanroom’, que veremos no capítulo 19, para o 
desenvolvimento de software 
 
Transformações Formais 
Problemas 
Necessita de habilidades e treinamento especializado para aplicar a técnica 
Dificuldade de especificar formalmente alguns aspectos do sistema tais como interface 
do usuário 
Aplicabilidade 
Sistemas críticos especialmente aqueles onde um caso de segurança e a 
confiabilidade deve ser produzido antes que o sistema seja colocado em operação. 
 
Desenvolvimento orientado ao reuso 
Baseado no reuso sistemático onde os sistemas são integrados a partir de 
componentes existentes ou sistemas COTS (Commercial-off-shelf) 
Estágios do Processo 
Análise de componente 
48 
 
Modificação de requisitos 
Projeto de sistema com reuso 
Desenvolvimento e integração 
Esta abordagem está se tornando cada vez mais importante mas ainda conta com uma 
limitada experiência 
 
Interação do Processo 
Requisitos de sistema SEMPRE evoluem no curso de um projeto, assim a iteração do 
processo onde os primeiros estágios são retrabalhados é sempre parte do processo de 
grandes sistemas 
A iteração pode ser aplicada a qualquer dos modelos de processos genéricos 
Duas abordagens relacionadas 
Desenvolvimento incrementa 
Desenvolvimento espiral 
 
Desenvolvimento Incremental 
 
Ao invés de entregar o sistema de uma única vez, o desenvolvimento e liberação é 
dividido em incrementos, onde cada incremento libera parte da funcionalidade requerida 
Requisitos do usuário são priorizados e os requisitos de maior prioridade são incluídos 
nos incrementos iniciais 
Uma vez que o desenvolvimento de um incremento é iniciado, os requisitos são 
congelados apesar de, posteriormente, poder continuar a evoluir. 
 
Vantagens do desenvolvimento incremental 
Retorno de valor ao cliente a cada incremento liberado, pois funcionalidades são 
disponibilizadas desde o início 
Os incrementos iniciais atuam como protótipo, ajudando a elucidar requisitos para os 
próximos incrementos 
Baixo risco de falha geral do projeto 
Os serviços do sistema de maior prioridade tendem a receber mais testes 
 
Extreme programming (XP) 
 
Nova abordagem de desenvolvimento baseado no desenvolvimento e liberação de 
incrementos de funcionalidade muito pequenos 
49 
 
Contar com aprimoramento constante de código, envolvimento do usuário com a 
equipe de desenvolvimento e programação em pares 
 
Desenvolvimento Espiral 
 
O processo é representado como uma espiral ao invés de como uma seqüência de 
atividades com backtracking 
Cada loop na espiral representa uma fase do processo 
Nenhuma fase fixa, tais como especificação ou projeto – loops na espiral são 
escolhidos dependendo do que é requerido 
Riscos são explicitamente avaliados e resolvidos durante o processo 
 
Modelo espiral do processo de software 
 
Setores do modelo espiral 
Definição de objetivos 
São identificados os objetivos específicos da fase 
Avaliação e redução de riscos 
Riscos são avaliados e atividades executadas para reduzir os principais riscos 
Desenvolvimento e validação 
Um modelo de desenvolvimento do sistema é escolhido, o qual pode ser qualquer um 
dos modelos genéricos 
Planejamento 
O projeto é revisado e a próxima fase do espiral é planejada 
 
Especificação de Software 
 
O processo de estabelecer quais serviços são requeridos e as restrições sobre a 
operação e desenvolvimento do sistema 
Processo de engenharia de requisitos 
Estudo de viabilidade 
Elucidação e análise de requisitos 
Especificação de requisitos 
Validação de requisitos 
 
O processo de engenharia de requisitos 
 
50 
 
Implementação e projeto de software 
O processo de converter a especificação do sistema num sistema executável 
Projeto de software 
Projetar uma estrutura de software que realiza a especificação 
Implementação 
Traduzir esta estrutura num programa executável 
As atividades de projeto e implementação estão intimamente relacionadas e podem 
ser 
Sobrepostas 
 
Atividades do processo de projeto 
Projeto arquitetural 
Especificação abstrata 
Projeto de interface 
Projeto de componente 
Projeto da estrutura de dados 
Projeto de algoritmo 
 
Processo de projeto de software 
 
 
Métodos de projeto 
Abordagem sistemática para desenvolver um projeto de software 
O projeto é normalmente documentado como um conjunto de modelos gráficos 
Modelos possíveis 
Modelo

Continue navegando