Buscar

Modelo de Maturidade de Software

Prévia do material em texto

MODELO DE MATURIDADE DE SOFTWARE 1 
Apresentação ................................................................................................................................ 6 
Aula 1: Problemas no desenvolvimento de software ................................................................... 8 
 ............................................................................................................................. 8 Introdução
 ................................................................................................................................ 9 Conteúdo
Hardware ou software? .................................................................................................... 9 
O contexto do desenvolvimento de software ............................................................. 9 
Problemas persistentes ................................................................................................... 10 
Crise do software ............................................................................................................. 12 
Características do software ........................................................................................... 13 
Mitos do software ............................................................................................................ 15 
Atividade proposta .......................................................................................................... 17 
........................................................................................................................... 17 Referências
 ......................................................................................................... 17 Exercícios de fixação
Chaves de resposta ..................................................................................................................... 20 
 ..................................................................................................................................... 20 Aula 1
Exercícios de fixação ....................................................................................................... 20 
Aula 2: Introdução à engenharia de software ............................................................................. 23 
 ........................................................................................................................... 23 Introdução
 .............................................................................................................................. 24 Conteúdo
Software ............................................................................................................................. 24 
Software: arte ou engenharia? ...................................................................................... 24 
Definição de software ..................................................................................................... 25 
Evolução do software ...................................................................................................... 25 
Classificação do software ............................................................................................... 27 
Definição de engenharia de software .......................................................................... 28 
Objetivo e características da engenharia de software ............................................. 30 
Fatores que afetam a prática da Engenharia de software ....................................... 30 
Tecnologia em camadas ................................................................................................ 31 
Atividade proposta .......................................................................................................... 32 
........................................................................................................................... 32 Referências
 ......................................................................................................... 32 Exercícios de fixação
Chaves de resposta ..................................................................................................................... 36 
 ..................................................................................................................................... 36 Aula 2
 
 MODELO DE MATURIDADE DE SOFTWARE 2 
Exercícios de fixação ....................................................................................................... 36 
Aula 3: Modelos de ciclo de vida de software ............................................................................ 39 
 ........................................................................................................................... 39 Introdução
 .............................................................................................................................. 40 Conteúdo
Ciclo de vida de software ............................................................................................... 40 
Principais modelos de ciclo de vida de software ...................................................... 41 
Modelo cascata ................................................................................................................ 41 
Modelo V ........................................................................................................................... 42 
Modelo incremental ........................................................................................................ 43 
Modelo evolutivo ............................................................................................................. 44 
Modelo iterativo e incremental ..................................................................................... 45 
Modelos de ciclo de vida mais utilizados .................................................................... 45 
Modelos de ciclo de vida mais utilizados .................................................................... 45 
Prototipação ..................................................................................................................... 46 
Modelo espiral .................................................................................................................. 47 
Rational Unified Process (RUP) ...................................................................................... 47 
Atividade proposta .......................................................................................................... 49 
........................................................................................................................... 49 Referências
 ......................................................................................................... 50 Exercícios de fixação
Chaves de resposta ..................................................................................................................... 54 
 ..................................................................................................................................... 54 Aula 3
Exercícios de fixação ....................................................................................................... 54 
Aula 4: Processo de desenvolvimento de software .................................................................... 56 
 ........................................................................................................................... 56 Introdução
 .............................................................................................................................. 57 Conteúdo
Fundamentos da medição de software ....................................................................... 57 
Medição e modelos/normas de qualidade de um software .................................... 57 
ISO e a tecnologia da informação ................................................................................59 
Princípios de gestão da qualidade ................................................................................ 61 
Visões da qualidade de software .................................................................................. 62 
Padrões de qualidade de software ............................................................................... 62 
ISO 9001:2000 e ISO 1207 ............................................................................................. 63 
ISO/IEC 12207: histórico ................................................................................................. 64 
Medição de software e melhorias em processos ...................................................... 65 
Atividade proposta .......................................................................................................... 65 
........................................................................................................................... 65 Referências
 
 MODELO DE MATURIDADE DE SOFTWARE 3 
 ......................................................................................................... 66 Exercícios de fixação
Chaves de resposta ..................................................................................................................... 69 
 ..................................................................................................................................... 69 Aula 4
Exercícios de fixação ....................................................................................................... 69 
Aula 5: Maturidade de software – Método GQM – Goal Question Metric ................................ 71 
 ........................................................................................................................... 71 Introdução
 .............................................................................................................................. 72 Conteúdo
Método GQM .................................................................................................................... 72 
Definição das métricas GQM ......................................................................................... 72 
Abordagem GQM ............................................................................................................. 74 
Objetivos da medição ..................................................................................................... 74 
Práticas eficazes de aplicação GQM ............................................................................ 75 
Benefícios do GQM .......................................................................................................... 76 
Implementação ................................................................................................................ 77 
Fase de planejamento ..................................................................................................... 77 
Etapas do GQM ................................................................................................................ 79 
Desvantagens do GQM ................................................................................................... 81 
Refinamento das metas .................................................................................................. 81 
Atividade proposta .......................................................................................................... 82 
........................................................................................................................... 82 Referências
 ......................................................................................................... 82 Exercícios de fixação
Chaves de resposta ..................................................................................................................... 86 
 ..................................................................................................................................... 86 Aula 5
Exercícios de fixação ....................................................................................................... 86 
Aula 6: Modelos de medição de software PSM e CMM.............................................................. 89 
 ........................................................................................................................... 89 Introdução
 .............................................................................................................................. 90 Conteúdo
PSM (Practical Software Measurement) ....................................................................... 90 
Utilização do PSM ............................................................................................................ 91 
Modelos do PSM ............................................................................................................... 91 
Modelo de informação ................................................................................................... 91 
Conjunto de medidas do PSM ....................................................................................... 92 
SW-CMM (Capability Maturity Model for Software) .................................................. 94 
CMMI .................................................................................................................................. 95 
Níveis de maturidade do SW-CMM .............................................................................. 96 
Atividade proposta ........................................................................................................ 102 
 
 MODELO DE MATURIDADE DE SOFTWARE 4 
......................................................................................................................... 103 Referências
 ....................................................................................................... 103 Exercícios de fixação
Chaves de resposta ................................................................................................................... 106 
 ................................................................................................................................... 106 Aula 6
Exercícios de fixação ..................................................................................................... 106 
Aula 7: Modelos de maturidade de processos de software CMMI e MP-BR ............................ 109 
 ......................................................................................................................... 109 Introdução
 ............................................................................................................................ 110 Conteúdo
Fundamentos do CMMI (Capability Maturity Model Integration) .......................... 110 
Qualidade – MPS.BR ...................................................................................................... 110 
CMMI ................................................................................................................................ 111 
CMMI-DEV ....................................................................................................................... 112 
Representação contínua .............................................................................................. 115 
Representação por estágios ........................................................................................ 116 
CMMI-DEV – representação por estágios ................................................................. 117 
Atividade proposta ........................................................................................................ 121 
.........................................................................................................................121 Referências
 ....................................................................................................... 121 Exercícios de fixação
Chaves de resposta ................................................................................................................... 126 
 ................................................................................................................................... 126 Aula 7
Exercícios de fixação ..................................................................................................... 126 
Aula 8: ISSO/IEC – Qualidade de software ................................................................................ 129 
 ......................................................................................................................... 129 Introdução
 ............................................................................................................................ 130 Conteúdo
Fundamentos da Norma ISO/IEC 9126 ...................................................................... 130 
ISO/IEC 9126-1 - Modelo de qualidade ..................................................................... 130 
Métricas de qualidade interna e externa ................................................................... 131 
Medição do produto de software: ISO 9126–2.4 ..................................................... 131 
Medição do produto de software: seleção de métricas ......................................... 132 
Métricas de qualidade ................................................................................................... 136 
ISO/IEC 9126-4 - Métricas de qualidade em uso ..................................................... 138 
Qualidade no ciclo de vida do software .................................................................... 139 
Atividade proposta ........................................................................................................ 139 
......................................................................................................................... 139 Referências
 ....................................................................................................... 139 Exercícios de fixação
Chaves de resposta ................................................................................................................... 143 
 
 MODELO DE MATURIDADE DE SOFTWARE 5 
 ................................................................................................................................... 143 Aula 8
Exercícios de fixação ..................................................................................................... 143 
Conteudista ............................................................................................................................... 146 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 6 
 
No início da computação, o desenvolvimento de um software era realizado de 
forma improvisada, sem regras claras, processos sistemáticos ou metodologias 
bem definidas. Essa falta de padronização no desenvolvimento de softwares 
nos levou à uma série de problemas, como por exemplo, software sem 
documentação, dentre outros. 
 
Tivemos que repensar a forma de desenvolvimento de software e a 
necessidade de definirmos uma área na Computação responsável pela definição 
de técnicas e métodos apropriados para o desenvolvimento de software. À 
partir dessa necessidade surge a área de Engenharia de Software à qual define 
os modelos de ciclo de vida para o desenvolvimento de software, padrões, 
normas e modelos de maturidade, dentre outros. 
 
Assim sendo, é importante que os profissionais da área de Computação 
conheçam a Engenharia de Software e particularmente os Modelos de 
Maturidade de Software que fornecem informações para orientar as empresas 
em todo o processo de desenvolvimento de um software. Os modelos orientam 
na escolha dos melhores métodos e técnicas disponíveis, ajudam na formulação 
de uma estratégia de melhoria a longo prazo, direcionada aos objetivos do 
negócio e por avanços graduais nas práticas de seus processos. 
 
Objetivos: 
Esta disciplina tem como objetivos apresentar: 
 1. Os problemas existentes no desenvolvimento de software; 
 2. A área de Engenharia de Software; 
 
 MODELO DE MATURIDADE DE SOFTWARE 7 
 3. Ciclos de vida de desenvolvimento de Software; 
 4. Processos de desenvolvimento de Software; 
 5. Modelos de maturidade de software. 
 
 
 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 8 
Introdução 
Esta aula tem como tema central apresentar aos alunos as dificuldades 
relacionadas ao desenvolvimento de um software. É importante conhecer esses 
problemas para que, posteriormente, possamos entendê-los bem e saibamos 
como resolvê-los. No decorrer do curso, serão apresentadas as técnicas 
necessárias para que essas adversidades não ocorram e, assim, possamos 
desenvolver software seguindo as boas práticas utilizadas no mercado. 
 
Hoje em dia, ainda sofremos com os problemas decorrentes do 
desenvolvimento de software sem métodos ou técnicas bem definidos e bem 
estabelecidos. Devemos entender também que a criação de técnicas e métodos 
obedecia a um processo normal de desenvolvimento de uma área de 
conhecimento, na qual os seus fundamentos ainda estavam sendo 
estabelecidos. 
 
Muitas empresas (pequenas, médias e, principalmente, as grandes 
organizações) utilizam muitos sistemas antigos que são executados em seus 
sistemas computacionais. Estes sistemas são críticos para as organizações, 
tendo em vista que foram desenvolvidos no início da computação, quando as 
técnicas e métodos praticamente não existiam. Desta forma, é primordial que 
possamos entender bem os problemas ocorridos para que não sejam repetidos 
no desenvolvimento de novos sistemas. 
 
Objetivo: 
1. Apresentar o contexto do desenvolvimento de um software e os principais 
problemas existentes, além de conhecer o que foi a crise do software; 
2. Entender as características do software e seus mitos para que estes não 
sejam propagados. 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 9 
Conteúdo 
Hardware ou software? 
Vamos começar a nossa aula com uma pergunta simples: qual é o elemento 
mais importante no desenvolvimento de um software: o hardware ou o 
software? 
 
Acredito que muitos tenham respondido o software; entretanto, essa não foi a 
resposta padrão durante muito tempo, contabilizando desde o início do 
desenvolvimento de sistemas. Por um longo período, o hardware era o 
componente principal, era o elemento essencial para o qual todas as atenções 
estavam voltadas. 
 
Porém, esse cenário mudou e, agora, vamos entender bem como isso ocorreu e 
por que ocorreu, estudando o contexto do desenvolvimento de um software e 
os problemas que geraram a crise deste elemento. 
 
O contexto do desenvolvimento de software 
No início da computação, o elemento-chave era o hardware. Havia uma 
preocupação muito grande com o projeto e o uso deste componente. Naquela 
época, o hardware era muito caro e, por isso, o armazenamento nos 
dispositivos de memória secundária deveriam ser muito bem pensados e 
medidos. Foi nessa época que o termo “escovar bits” foi cunhado, devido ao 
alto valor de armazenamento dos dados. Entretanto, no início dos anos 80, foi 
divulgado um importante artigo na Business Week Magazine falando sobre a 
importância do software, cujo título era: “Software: the new driving force”. 
 
A partir desse artigo, os pesquisadores começaram a perceber a importância do 
software para o desenvolvimento de sistemas. Outros artigos foram lançados 
como vertentes positivas à utilização do software, como: The ThirdWave 
(Toffler, A., 1980); Information Society (Naisbitt, J., 1982). Eletronic 
Community (Stoll, C., 1989). 
 
 MODELO DE MATURIDADE DE SOFTWARE 10 
Assim como as vertentes positivas, tivemos também as negativas ao uso do 
software: Resisting the Virtual Life (Brook, J.); The Future Does Not Compute 
(Talbot, S.). 
 
Dessa forma, o software ultrapassou o hardware como a chave do sucesso para 
muitos sistemas baseados em computador. Hoje, o principal desafio é melhorar 
a qualidade e reduzir o custo de soluções baseadas em computador, pois a 
economia de todos os países do mundo depende cada vez mais de software, 
visto que este componente serve de base para: modernas investigações 
científicas; resolução de problemas de engenharia; controlar sistemas de 
transporte, medicina, telecomunicações, etc. As pessoas aplicam software em 
praticamente tudo no dia a dia, como: no trabalho, no conforto, na segurança, 
no entretenimento, na comunicação, entre outros. 
 
Problemas persistentes 
Ainda existem alguns problemas no uso e desenvolvimento de software, como: 
 
Avanços de hardware que continuam a se intensificar, mas não existe 
capacidade de construção de software que possa usufruir desses avanços. 
 
Os engenheiros de software precisam trabalhar bastante para produzir software 
com alta confiabilidade e qualidade. 
 
Pouca habilidade de construção de novos programas e de construção rápida 
que atenda a todos os requisitos dos usuários. 
 
Pouca habilidade de manutenção devido a projetos ruins e ausência de 
recursos. 
 
A habilidade para construção de software é insuficiente para suprir a demanda 
por novas aplicações. 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 11 
Sociedade dependente da construção de software totalmente confiável, o que 
pode causar verdadeiras catástrofes. 
 
Um dos grandes problemas ainda é a manutenção de software. As empresas 
gastam um valor muito alto para prestar assistência em seus sistemas, o que 
impacta nos custos de acordo com a etapa em que a alteração no software 
ocorrerá, conforme a figura: 
 
 
 
Percebemos que, depois que o software é entregue ao cliente final, qualquer 
tipo de alteração demanda um alto custo para sua manutenção. Precisamos 
analisar bem qualquer tipo de alteração no software para que as mudanças não 
tenham custos proibitivos. Quanto mais cedo uma alteração for realizada no 
desenvolvimento de um software, menor será o seu custo. 
 
Também possuímos uma fábrica de desenvolvimento de software em fase de 
envelhecimento, pois há milhares de aplicações de software críticas que se 
encontram em dramática necessidade de renovação. Existem muitas aplicações 
críticas, tais como: 
 
• Sistemas de informação escritos há 20 anos, em que a menor modificação 
pode fazer com que todo o sistema falhe; 
 
 MODELO DE MATURIDADE DE SOFTWARE 12 
• Aplicações de engenharia em projetos críticos que ninguém tem 
conhecimento detalhado sobre a estrutura interna de seus programas; 
 
• Sistemas embutidos que exibem comportamento estranho, mas que não 
podem ser tirados de operação porque não há nada para substituí-los. 
 
Um estudo realizado pelo governo dos Estados Unidos em relação ao software 
produzido constatou que: 
 
• 2 % funcionavam muito bem; 
• 3 % funcionariam com poucas correções; 
• 45 % entregues, mas nunca foram usados com sucesso; 
• 20 % usados, mas extremamente modificados ou abandonados; 
• 30 % pagos, mas nunca foram terminados e/ou entregues. 
 
Essa análise foi o primeiro indício que uma grave crise do software estaria por 
vir. 
 
Crise do software 
A crise do software refere-se aos seguintes problemas: 
 
As estimativas de prazo e de custo são frequentemente imprecisas, visto que: 
• Não se dedica tempo para coletar dados sobre o processo de 
desenvolvimento de software; 
 
• Os projetos de desenvolvimento de software normalmente são efetuados 
apenas com um vago indício das exigências do cliente. 
 
A quantidade e a produtividade de pessoas da área de software não têm 
acompanhado a demanda por seus serviços. 
 
 MODELO DE MATURIDADE DE SOFTWARE 13 
• Sem nenhuma indicação sólida de produtividade, não se pode avaliar com 
precisão a eficácia de novas ferramentas, métodos ou padrões e, até mesmo, 
formações de pessoas. 
 
A qualidade de software, às vezes, é menor que a adequada. 
 
• Apenas recentemente começaram a surgir conceitos quantitativos e 
qualitativos sólidos de garantia de qualidade do processo e do produto de 
software. 
 
O software existente é muito difícil de manter. 
 
• A tarefa de manutenção devora o orçamento destinado ao software; 
 
• A facilidade de manutenção normalmente não é enfatizada como um critério 
importante nos projetos. 
 
Características do software 
Nesta parte do curso, discutiremos as características e os mitos relacionados ao 
desenvolvimento do software, que possui algumas características que devem 
ser muito bem analisadas. São estas: 
 
1. O software é desenvolvido ou projetado por engenharia, não manufaturado 
no sentido clássico, como o hardware. 
 
• Em ambas atividades, a alta qualidade pode ser conseguida mediante um 
bom projeto e alta capacitação de pessoas; porém, com contextos 
diferenciados; 
 
• Os custos de software são concentrados na engenharia; 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 14 
• No início de 1985, o conceito de software factory foi introduzido na literatura; 
porém, isto não implica que a manufatura de hardware e o desenvolvimento de 
software sejam equivalentes; 
 
• Fábricas de software recomendam o uso de ferramentas automatizadas e 
recursos humanos capacitados. 
 
2. Software não se “desgasta” com o uso, mas se deteriora. 
 
• Com o passar do tempo, o hardware se desgasta com os males ambientais, 
como poeira, vibração, temperatura, entre outros; 
 
• O software não é sensível a esses males ambientais; porém, durante sua vida, 
o software sofre manutenção, onde, frequentemente, são introduzidos novos 
defeitos, o que acaba deteriorando o produto. 
 
3. Curva de falha para o hardware 
 
• O gráfico mostra que muitas peças podem ser criadas com defeito 
(mortalidade infantil); porém, a maioria sofre desgastes com o passar do tempo 
e serão substituídas. 
 
4. Curva de falha para o software 
 
• A curva de falhas do software não deveria sofrer nenhum erro, pois ela não 
se desgasta com os males ambientais. Porém, ela sofre manutenção, o que 
pode introduzir falhas em seu código. 
 
5. A maioria dos produtos de software é feita sob encomenda ao invés de ser 
montada a partir de componentes existentes, que podem ser executáveis e não 
executáveis, como código e documentação, respectivamente. 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 15 
• Hardware é projetado e desenvolvido com a reutilização de componentes; 
 
• Infelizmente, muitos desenvolvedores de software, na maioria das vezes, não 
desenvolvem dessa forma; 
 
• Devemos reparar um software da mesma forma que consertarmos um 
equipamento de hardware, trocando suas peças ou seus componentes. 
 
Mitos do software 
Muitas causas da atual aflição podem remeter-se à mitologia, que surgiu 
durante os primórdios do desenvolvimento de software. Esses mitos, que 
propagaram desinformação e confusão, são divididos em: administrativos ou de 
gerência e dos profissionais. Conheça-os: 
 
1. Mito administrativo I 
 
Já temos um livro repleto de padrões e procedimentos para a construção de 
softwares. Isso não oferecerá ao meu pessoal tudo o que eles precisam saber? 
Realidade: 
 
Seráque o manual é usado? 
 
Os profissionais sabem que ele existe? 
 
Ele reflete a prática moderna de desenvolvimento de software? 
 
Ele é completo? 
 
Está voltado para melhorar o prazo de entrega, mantendo o foco na qualidade? 
 
2. Mito administrativo II 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 16 
Meu pessoal tem ferramentas de desenvolvimento de software de última 
geração; afinal, compramos os mais novos computadores. 
 
Realidade: 
 
É preciso muito mais do que os mais recentes computadores para se fazer um 
desenvolvimento de software de alta qualidade. 
 
3. Mito do profissional I 
 
A única coisa a ser entregue em um projeto bem-sucedido é o programa 
funcionando. 
 
Realidade: 
 
O programa funcionando é só uma parte. Uma boa documentação incluindo 
requisitos, projeto das estruturas de dados, especificação de testes, análise de 
riscos, etc. é o alicerce para um projeto bem sucedido e serve como guia de 
manutenção. 
 
4. Mito do profissional II 
 
A engenharia de software nos fará criar documentação volumosa e 
desnecessária, que, certamente, nos atrasará. 
 
Realidade: 
 
A Engenharia de Software não se relaciona à criação de documentos, refere-se 
à criação de qualidade. 
 
Melhor qualidade leva à redução de retrabalho e menor retrabalho resulta em 
tempos de entrega mais rápidos. 
 
 MODELO DE MATURIDADE DE SOFTWARE 17 
Atividade proposta 
Discuta sobre os mitos relacionados ao desenvolvimento de software, 
abordando se alguns deles ainda são percebidos nos dias atuais nas 
organizações. 
 
Chave de resposta: Infelizmente, alguns dos mitos discutidos ainda são 
observados no mercado de trabalho, principalmente nas organizações que 
ainda não adotaram as práticas e métodos preconizados pela engenharia de 
software. 
 
 
Material complementar 
 
Para saber mais sobre a crise do software, leia o texto disponível 
em nossa biblioteca virtual. 
 
 
Referências 
PFLEEGER, Shari Lawrence. Engenharia de Software: Teoria e Prática. 2ª 
Edição. São Paulo: Pearson (Livros Universitários), 2003. 
PRESSMAN, Roger S. Engenharia de Software: uma abordagem profissional. 
7ª Edição. São Paulo: MCGRAW-HILL BRASIL, 2011. 
SOMMERVILLE, Ian. Engenharia de Software. 9ª Edição. São Paulo: 
PEARSON (LIVROS UNIVERSITÁRIOS), 2011. 
 
Exercícios de fixação 
Questão 1 
Dentre as opções abaixo, assinale o principal elemento utilizado nos dias atuais 
para o desenvolvimento de um software? 
a) Hardware 
b) Memória 
c) Poder computacional 
 
 MODELO DE MATURIDADE DE SOFTWARE 18 
d) Software 
e) Legislação 
 
Questão 2 
Dentre as opções, assinale a que representa o principal desafio para as 
soluções baseadas em computador. 
a) Aumentar a produtividade e o custo. 
b) Reduzir o custo e a qualidade. 
c) Aumentar o custo e diminuir a produtividade. 
d) Reduzir o custo e a produtividade. 
e) Aumentar a qualidade e reduzir o custo. 
 
Questão 3 
Qual é a opção que representa um dos problemas que persistem no uso e 
desenvolvimento de softwares? 
a) Grande habilidade de manutenção dos sistemas. 
b) Sociedade dependente da construção de software confiável. 
c) Pouco trabalho para que os engenheiros de software construam sistemas 
confiáveis. 
d) Habilidade suficiente para atender a demanda de novos sistemas. 
e) Poucos avanços do hardware. 
 
Questão 4 
Sabemos que a manutenção de software é um dos grandes problemas que 
impactam nos custos de desenvolvimento. Assim sendo, qual etapa possui um 
impacto maior nos custos de manutenção? 
a) No contrato fechado com o cliente 
b) A definição 
c) Depois da entrega 
d) Na discussão inicial do software 
e) O desenvolvimento 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 19 
Questão 5 
Dentre as alternativas abaixo, assinale a que não se refere a um problema 
encontrado na crise do software. 
a) Baixa qualidade do software 
b) Difícil manutenção do software 
c) Quantidade e a produtividade das pessoas 
d) Alta qualidade do software 
e) Estimativas de prazo e custo imprecisas 
 
Questão 6 
De acordo com as características de um software, a sua alta qualidade pode ser 
conseguida com: 
a) Uma boa interação entre hardware e software 
b) Ferramentas de alta qualidade 
c) Prazos bem definidos 
d) Um bom projeto e alta capacitação de pessoas 
e) Ferramentas e bom projeto 
 
Questão 7 
A frase “software não se ‘desgasta’ com o uso, mas se deteriora” significa que: 
a) O software não sofre mudanças. 
b) As mudanças não são percebidas. 
c) O software sofre manutenção, o que pode gerar defeitos. 
d) São poucas as mudanças sofridas. 
e) Muda de acordo com o defeitos do hardware. 
 
Questão 8 
Dentre as alternativas abaixo, todas são componentes de software, exceto: 
a) Manual de operação 
b) Ferramentas de desenvolvimento 
c) Instruções de programas 
d) Documentos de desenvolvimento 
 
 MODELO DE MATURIDADE DE SOFTWARE 20 
e) Atas de reunião 
 
Questão 9 
Dentre as opções abaixo, assinale a que representa um mito administrativo. 
a) Possuímos um livro completo de padrões, e isso é suficiente. 
b) Precisamos somente de ótimos programadores. 
c) O foco é somente produzir código rápido. 
d) Gerar documentação atrasa o desenvolvimento. 
e) Devemos entregar somente o programa funcionando. 
 
Questão 10 
Dentre as opções abaixo, assinale a que representa um mito profissional. 
a) Precisamos de boas ferramentas. 
b) Precisamos somente de ótimos computadores. 
c) O foco é somente em hardware. 
d) Possuímos um livro completo de padrões, e isso é suficiente. 
e) Devemos entregar somente o código funcionando. 
 
Aula 1 
Exercícios de fixação 
Questão 1 - D 
Justificativa: Os pesquisadores perceberam que o software é mais importante 
do que o hardware, pois é o software que será gerado no desenvolvimento de 
um sistema para utilizar os recursos disponíveis em um hardware. 
 
Questão 2 - E 
Justificativa: Segundo a aula apresentada, atualmente, o principal desafio é 
melhorar a qualidade do produto de software e diminuir os custos necessários 
para o seu desenvolvimento. 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 21 
Questão 3 - B 
Justificativa: A sociedade depende, cada vez mais, da construção de softwares 
que sejam confiáveis, pois, de outra forma, poderemos ter grandes catástrofes. 
 
Questão 4 - C 
Justificativa: Depois que o software é entregue ao cliente final, qualquer tipo de 
alteração demanda uma modificação no projeto que está pronto. Todas as 
mudanças devem ser muito bem analisadas. Quanto mais cedo uma alteração 
for realizada, menor será o impacto nos custos do software; quanto mais tarde 
a mudança, maior será o custo. 
 
Questão 5 - D 
Justificativa: A crise do software refere-se a um conjunto de problemas, como a 
qualidade do software, produtividade, problemas na manutenção e em relação 
a prazos e custos. Um dos problemas era a baixa qualidade do software, e não 
a sua alta qualidade. 
 
Questão 6 - D 
Justificativa: Precisamos investir na formação de recursos humanos e ter um 
bom projeto. Somente boas ferramentas não garantem um software de 
qualidade. 
 
Questão 7 - C 
Justificativa: O software sempre terá modificações, que, possivelmente, 
introduzirão novos defeitos. 
 
Questão 8 - B 
Justificativa: Todo e qualquer documento é um componente de software, bem 
como os códigos gerados pelo seu desenvolvimento. 
 
 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 22 
Questão 9 - A 
Justificativa: De acordo com o texto, somente o primeiro item representaum 
mito administrativo. 
 
Questão 10 - E 
Justificativa: De acordo com o texto, somente o último item representa um mito 
administrativo. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 23 
Introdução 
Esta aula tem como tema central apresentar uma das principais áreas da 
Computação, a área da Engenharia de Software. Esta é uma área recente que 
deve ser utilizada para o desenvolvimento, operação e manutenção de 
software. 
 
Entender a Engenharia de Software é essencial para um bom desenvolvimento 
de software, pois o desenvolvimento de software ao longo dos anos, durante 
muito tempo, foi realizado sem a utilização de técnicas, métodos, metodologias 
ou de processos bem definidos. 
 
Muitos problemas surgiram devido a essa falta de padrões no desenvolvimento. 
Problemas esses que ainda impactam nos orçamentos das Organizações, os 
quais foram amplamente discutidos na aula anterior. 
 
Objetivo: 
1. Conhecer a definição de software, a sua evolução e classificação; 
2. Estudar a definição da Engenharia de Software, seus objetivos e 
características e entender o seu uso como uma tecnologia em camadas. 
 
 
 
 
 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 24 
Conteúdo 
Software 
Vamos começar a nossa aula com uma pergunta simples: a Engenharia de 
Software é uma engenharia ou uma arte? 
 
Certamente muitos responderam que é uma engenharia, tão somente. Mas 
vamos tentar entender como a relação engenharia e arte funciona bem para a 
Engenharia de Software. 
 
Software: arte ou engenharia? 
Com o passar do tempo foram desenvolvidas técnicas e métodos para a 
programação, análise e projeto de software. Essas técnicas foram amplamente 
testadas e incorporadas nas organizações, tornando-se as melhores práticas em 
computação nos dias atuais. Mas hoje uma questão importante é se 
desenvolvemos software utilizando somente as técnicas disponíveis ou se 
precisamos também envolver a arte no desenvolvimento. Vamos entender 
melhor o que precisamos saber para desenvolver software. 
 
Cientistas de computação e pesquisadores em engenharia de software estudam 
sistemas computacionais e teorias sobre como tornar o software mais produtivo 
e eficientes. Isso é a Engenharia no desenvolvimento. E eles também projetam 
sistemas computacionais e escrevem programas para realizar tarefas nesses 
sistemas. O que é uma arte no desenvolvimento de software. 
 
Então desenvolver software é uma engenharia e uma arte também. Para 
desenvolver software precisamos conhecer as funções do computador e as 
teorias, as quais estão descritas nos fundamentos da ciência da computação. 
Precisamos também conhecer o problema, as necessidades dos clientes e as 
técnicas e ferramentas da Engenharia de Software. 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 25 
Definição de software 
Um conceito muito importante que todos devem saber é o de software, o que é 
realmente um software e quais são os seus componentes. Um Software é 
composto das seguintes partes: 
 
Software 
Instruções: são os programas de computador que quando executadas 
produzem a função e o desempenho desejados; 
 
Estruturas de dados: possibilitam que os programas manipulem 
adequadamente os dados que estão sendo tratados; 
 
Documentos: os quais descrevem a operação e o uso dos programas. 
 
Portanto, software é muito mais do que somente instruções, do que somente 
código. Ele é composto por um elemento muito importante que são as 
documentações. Quando compramos um software devemos receber toda a 
documentação necessária sobre ele, como: nota fiscal, licença de uso, manual 
de operação, manual de instalação e configuração, dentre outros. 
 
Evolução do software 
Vamos entender agora como ocorreu a evolução do software desde o 
surgimento da computação, no final da década de 1940 e início da década de 
1950. A evolução do software está dividida em eras, que são: 
 
1950 a 1965 
A Primeira era do desenvolvimento de software 
• O desenvolvimento de software era considerado uma arte; 
• Haviam poucos métodos sistemáticos para o desenvolvimento; 
• O desenvolvimento de software não era gerenciado; 
• O hardware sofria contínuas mudanças e era o centro das atenções; 
 
 MODELO DE MATURIDADE DE SOFTWARE 26 
• O software era customizado, ou seja, adequado às necessidades do usuário 
final, e a sua distribuição era limitada; 
• O software era desenvolvido e utilizado pela mesma pessoa ou organização; 
• Não havia documentação, todas as informações necessárias sobre o software 
estavam na cabeça das pessoas que o desenvolveram (one’s head); 
• O processamento de dados era em lote (batch). 
 
1963 a 1974 
A segunda era do desenvolvimento de software 
• Surgimento da multiprogramação e dos sistemas multiusuários; 
• Desenvolvimento de técnicas interativas homem-máquina; 
• Utilização de sistemas de tempo real; 
• Surgimento da 1ª geração de sgbds; 
• Nascem as software houses e os produtos de software; 
• O software era produzido para ampla distribuição em um mercado 
multidisciplinar, em várias áreas de conhecimentos; 
• Surge o conceito de biblioteca de software; 
• Devido à falta de metodologias de desenvolvimento e de documentação, a 
manutenção era praticamente impossível. 
 
1973 a 1978 
A terceira era do desenvolvimento de software 
• Surgimento dos sistemas distribuídos e paralelos; 
• Desenvolvimento das redes locais e globais de computadores; 
• Necessidade de elevada demanda por acesso imediato a dados por parte dos 
usuários; 
• Criação dos computadores de uso pessoal (PC - personal computers) e 
estações de trabalho (workstations); 
• Uso generalizado de microprocessadores; 
• Começa a haver um grande consumo de computadores, o que 
consequentemente baixa o custo do hardware; 
 
 MODELO DE MATURIDADE DE SOFTWARE 27 
• Há um forte impacto de consumo, pois os computadores tornaram-se 
acessíveis a um grande público que antes não tinham acesso ao uso de 
computadores. 
 
1985 aos dias atuais 
A quarta era do desenvolvimento de software 
• Surgimento dos ambiente cliente-servidor; 
• Desenvolvimento do paradigma orientado a objetos, da linguagem de 
modelagem unificada (UML) e do processo unificado; 
• Surgimento dos sistemas multimídia e da realidade virtual; 
• Desenvolvimento dos sistemas especialistas e de software de inteligência 
artificial utilizados em sistema do mundo real; 
• Surgimento das técnicas de 4ª Geração (4GT); 
• Desenvolvimento da computação biológica e da computação vestível 
(wearable computers); 
• Surgimento da internet (information superhighway). 
 
Classificação do software 
Vamos entender agora quais são os diferentes tipos de software existentes e a 
sua classificação. O software está classificado nos seguintes tipos: 
 
Básico: é uma coleção de programas escritos para dar suporte a outros 
programas. Como por exemplo: compiladores, interpretadores, editores, 
componentes de sistemas operacionais, dentre outros. 
 
De Tempo Real: são programas que monitoram, analisam e controlam os 
eventos do mundo real quando eles ocorrem. Um sistema de tempo real precisa 
responder dentro de restrições de tempo especificadas. Há um limite máximo 
tolerável de resposta, de acordo com as especificações do software, como por 
exemplo: software de controle de usina nuclear, software de controle e 
navegação de satélites, dentre outros. 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 28 
Comercial: é o software desenvolvido para o negócio de uma organização. É amaior área para a qual o software é desenvolvido. Divide, basicamente, em 
Sistemas Discretos, como: sistemas de estoque, de contabilidade, de 
pagamento, dentre outros. E em Sistemas de Informações, como: sistemas de 
processamento de transações, sistemas de informações gerenciais, sistemas de 
suporte à decisão, sistemas de comércio eletrônico, dentre outros. 
 
Científico e de Engenharia: são caracterizados por algoritmos que tratam 
dados numéricos. Como por exemplo: software para cálculo da dinâmica da 
órbita de um ônibus espacial, software para computação auxiliada por 
computador (computer aided design), software para simulação de sistemas, 
dentre outros. 
 
Embutido ou Embarcado: é um software que normalmente reside em 
memória não volátil (ROM) e é utilizado para o controle de produtos e de 
sistemas para os mercados consumidor e industrial. Como por exemplo: 
software para controle de micro-ondas, para computadores de bordo de 
automóveis, para sistemas de freio, dentre outros. 
 
Computador Pessoal: é o software utilizado nas atividades domésticas para 
soluções de problemas do dia a dia, como por exemplo: processadores de 
texto, planilhas eletrônicas, multimídia, jogos, dentre outros. 
 
Inteligência Artificial: é o software que faz uso de algoritmos não numéricos 
para resolver problemas complexos que não podem ser tratados de forma 
convencional. Como por exemplo: software de apoio ao diagnóstico de infarto 
agudo do miocárdio, software para concessão de cartão de créditos, dentre 
outros. 
 
Definição de engenharia de software 
Nesta parte da aula apresentaremos a área da Engenharia de Software, seus 
objetivos e características. Abordaremos também os fatores que afetam a 
 
 MODELO DE MATURIDADE DE SOFTWARE 29 
prática da Engenharia de Software e o seu uso como uma tecnologia em 
camadas. 
 
Como já foi discutido na aula anterior, no início da computação a preocupação 
era com o hardware e o software, nada mais era do que uma reflexão 
posterior. Entretanto, essa visão mudou e com ela gerentes e técnicos se fazem 
as seguintes perguntas: 
 
• Por que o software demora tanto tempo para ser concluído? 
• Por que os custos de produção têm sido tão elevados? 
• Por que não é possível detectar todos os erros antes que o software seja 
entregue ao cliente? 
• Por que é tão difícil medir o progresso durante o processo de 
desenvolvimento? 
 
A resposta para todas essas perguntas é: a não adoção de práticas de 
engenharia de software para o desenvolvimento de software, ou seja, 
devemos desenvolver software como uma engenharia, da mesma forma que 
utilizamos a engenharia civil para construir prédios ou utilizamos a engenharia 
aeronáutica para construir aviões. 
 
A Engenharia objetiva analisar, projetar, construir, verificar e gerenciar 
entidades técnicas e/ou sociais. Quando a entidade a ser construída com a 
engenharia é software, temos a Engenharia de Software. 
 
Então podemos definir Engenharia de Software como: o estabelecimento e uso 
de sólidos princípios de engenharia para que se possa obter economicamente 
um software que seja confiável e que funcione eficientemente em máquinas 
reais (PRESSMAN, 2006). 
 
Também podemos definir da seguinte forma: Engenharia de Software é a 
aplicação de uma abordagem sistemática, disciplinada e quantificável no 
 
 MODELO DE MATURIDADE DE SOFTWARE 30 
desenvolvimento, operação e manutenção de software (IEEE STANDARD 
610.12). 
 
Objetivo e características da engenharia de software 
A engenharia de Software tem como objetivo projetar e desenvolver software 
com maior qualidade em menos tempo e com o menor custo possível para 
resolver problemas de forma eficiente e eficaz. A qualidade envolve desenvolver 
softwares mais eficientes, mais precisos, fáceis de modificar, de usar ou de 
entender. Essas são características importantes que devem ser priorizadas em 
um software. 
 
A Engenharia de Software é uma disciplina de engenharia que está envolvida 
com todos os aspectos do desenvolvimento de produtos de software. Os 
produtos de software consistem de programas desenvolvidos, estruturas de 
dados e documentação associada. Essa engenharia não está voltada para a 
programação individual, mas para abordagens provendo mecanismos para que 
grupos possam lidar com complexidade e mudança na construção de um 
software. 
 
Fatores que afetam a prática da Engenharia de software 
A Engenharia de Software tem uma série de fatores que afetam a viabilidade de 
entrega de produtos de software. Os fatores são: 
 
• Necessidade de entregar produtos de software de acordo com as exigências 
do mercado. É o que é frequentemente referenciado como time to market; 
• Mudanças na economia que afetam a computação. Grandes alterações na 
economia que têm forte impacto na área de Tecnologia da Computação; 
• Maior disponibilidade de computadores de mesa potentes. 
Usuários têm computadores com ótimas configurações para atividades 
rotineiras; 
• Redes de telecomunicações extensíveis. 
Grande disponibilidade de infraestrutura de redes de computadores à todos; 
 
 MODELO DE MATURIDADE DE SOFTWARE 31 
• Disponibilidade e adoção de tecnologia orientada a objetos; 
• Necessidade de interfaces gráficas para os usuários; 
• Imprevisibilidade do modelo cascata para o desenvolvimento de software. 
 
Tecnologia em camadas 
A Engenharia de Software é uma tecnologia em Camadas. Para que um 
problema seja resolvido, a solução deve empregar um conjunto variado de 
métodos ou técnicas, ferramentas e processos utilizando um paradigma de 
desenvolvimento específico. É muito importante que no desenvolvimento de um 
software haja um compromisso organizacional com a qualidade, que leva ao 
desenvolvimento de abordagens cada vez mais amadurecidas para a 
Engenharia de Software. 
 
FERRAMENTAS 
• Automatizam o processo de desenvolvimento de software dando suporte aos 
métodos; 
• Elas são denominadas de ferramentas Case (Computer Aided Software 
Engineering – Engenharia de Software auxiliada por computador). Como por 
exemplo: editores, testadores, modeladores, gerenciadores; 
• Quando as ferramentas são integradas é estabelecido um sistema de suporte 
ao desenvolvimento de software chamado I-CASE (Integrated CASE). 
 
MÉTODOS 
• Os métodos de Engenharia de Software fornecem a técnica de como fazer 
para construir software; 
• Incluem um amplo conjunto de tarefas que abrange: análise de requisitos, 
projeto,construção de programas, teste e manutenção, dentre outros; 
• São constituídos por um conjunto de princípios básicos, que regem cada área 
da tecnologia e incluem atividades de modelagem a outras técnicas descritivas. 
 
PROCESSOS 
• Representa o fundamento, o principal elemento, da Engenharia de Software; 
 
 MODELO DE MATURIDADE DE SOFTWARE 32 
• O processo da Engenharia de Software é o “adesivo” que mantém unidas as 
camadas de tecnologia e permite o desenvolvimento racional e oportuno de 
software para o computador. 
 
Atividade proposta 
Faça uma comparação entre a Engenharia de Software e a Engenharia Civil, 
enfatizando a importância de cada uma destas engenharias para desenvolver 
um software e para construir um prédio. 
 
Chave de resposta: Ambas devem ser vistas como engenharias e necessárias 
para que todas as técnicas sejam utilizadas para construir um software de 
qualidade e para a construção de um prédio com segurança e qualidade. 
 
 
Material complementar 
 
Para saber mais sobre engenharia de software, leia os textos 
disponíveis em nossa biblioteca virtual. 
 
 
Referências 
PRESSMAN, Roger S. Engenhariade software – uma abordagem 
profissional. 7. ed. São Paulo: MCGRAW-HILL BRASIL, 2011. 
SOMMERVILLE, Ian. Engenharia de software. 9. ed. São Paulo: Pearson 
(livros universitários), 2011. 
PFLEEGER, Shari Lawrence. Engenharia de software – teoria e prática. 2. 
ed. São Paulo: Pearson (livros universitários), 2003. 
 
Exercícios de fixação 
Questão 1 
Fonte: Funiversa – 2009 – IPHAN 
 
 MODELO DE MATURIDADE DE SOFTWARE 33 
Assim como a Engenharia de Software, existe também na área de informática a 
Ciência da Computação. Assinale a alternativa que melhor apresenta a 
diferença entre Engenharia de Software e Ciência da Computação. 
a) A Ciência da Computação tem como objetivo o desenvolvimento de 
teorias e fundamentações. Já a Engenharia de Software se preocupa 
com as práticas de desenvolvimento de software. 
b) A Engenharia de Software trata da criação dos sistemas de computação 
(softwares) enquanto a Ciência da Computação está ligada ao 
desenvolvimento e criação de componentes de hardware. 
c) A Engenharia de Software trata dos sistemas com base em 
computadores, que inclui hardware e software, e a Ciência da 
Computação trata apenas dos aspectos de desenvolvimento de sistemas. 
d) A Ciência da Computação trata dos sistemas com base em 
computadores, que inclui hardware e software, e a Engenharia de 
Software trata apenas dos aspectos de desenvolvimento de sistemas. 
e) A Ciência da Computação destina-se ao estudo e solução para problemas 
genéricos das áreas de rede e banco de dados e a Engenharia de 
Software restringe - se ao desenvolvimento de sistemas. 
 
Questão 2 
Com base nos conceitos de Engenharia de Software e da Ciência da 
Computação, julgue a questão a seguir: A ciência da computação estuda os 
aspectos do desenvolvimento e da evolução de software; a engenharia de 
software estuda o uso de ferramentas e de codificação. 
a) Verdadeiro 
b) Falso 
 
Questão 3 
Dentre as alternativas a seguir, assinale a que representa os elementos que 
compõem um software: 
a) Dados, sistema e instruções. 
b) Instruções, estruturas de dados e sistema. 
 
 MODELO DE MATURIDADE DE SOFTWARE 34 
c) Documentos, dados e instruções. 
d) Estruturas de dados, documentos e instruções. 
e) Sistemas, documentos e instruções. 
 
Questão 4 
Dentre as alternativas abaixo, assinale a única que não representa um 
problema encontrado na primeira era de desenvolvimento de software: 
a) O desenvolvimento de software era considerado uma arte. 
b) O desenvolvimento de software não era gerenciado. 
c) Haviam poucos métodos sistemáticos para o desenvolvimento. 
d) Não havia documentação. 
e) Necessidade de elevada demanda por acesso imediato a dados. 
 
Questão 5 
É o software que faz uso de algoritmos não numéricos para resolver problemas 
complexos que não podem ser tratados de forma convencional. Estamos nos 
referindo ao software: 
a) Básico. 
b) De inteligência artificial. 
c) Embutido ou embarcado. 
d) De tempo real. 
e) Comercial. 
 
Questão 6 
Fonte: Cespe 2013 TRT 10ª Região – Analista Judiciário – Tecnologia da 
Informação 
Com relação a conceitos gerais de engenharia de software, julgue o item a 
seguir: A engenharia de software engloba processos, métodos e ferramentas. 
Um de seus focos é a produção de software de alta qualidade a custos 
adequados. 
a) Verdadeiro 
b) Falso 
 
 MODELO DE MATURIDADE DE SOFTWARE 35 
Questão 7 
Fonte: Cespe 2010 TRE-BA – Analista de Sistemas – Desenvolvimento de 
Sistemas 
Com relação à engenharia de software, julgue o item a seguir: Entre os 
desafios enfrentados pela engenharia de software estão lidar com sistemas 
legados, atender à crescente diversidade e atender às exigências quanto a 
prazos de entrega reduzidos. 
a) Verdadeiro 
b) Falso 
 
Questão 8 
Fonte: FGV 2010 Badesc – Analista de Sistemas – Desenvolvimento de Sistemas 
De acordo com Pressman, a engenharia de software é baseada em camadas, 
com foco na qualidade. Essas camadas são: 
a) Métodos, processo e teste. 
b) Ferramentas, métodos e processo. 
c) Métodos, construção, teste e implantação. 
d) Planejamento, modelagem, construção, validação e implantação. 
e) Comunicação, planejamento, modelagem, construção e implantação. 
 
Questão 9 
Fonte: FCC – 2010 – TRE-RS – Analista Judiciário – Analista de Sistemas 
Suporte 
Sobre a engenharia de software, considere: 
I. Atualmente todos os problemas na construção de software de alta qualidade 
no prazo e dentro do orçamento foram solucionados. 
II. Ao longo dos últimos 50 anos, o software evoluiu de um produto de 
indústria para um ferramental especializado em solução de problemas e análise 
de informações específicas. 
III. Todo projeto de software é iniciado por alguma necessidade do negócio. 
IV. O intuito da engenharia de software é fornecer uma estrutura para a 
construção de software com alta qualidade. 
 
 MODELO DE MATURIDADE DE SOFTWARE 36 
Está correto o que consta em: 
a) III e IV, somente. 
b) II e III, somente. 
c) I, II e IV, somente. 
d) II, III e IV, somente. 
e) I, II, III e IV. 
 
Questão 10 
Fonte: FCC 2012 – TCE-AM – Analista de Controle Externo – Tecnologia da 
Informação 
Considere o excerto a seguir: 
A engenharia de software pode ser considerada uma tecnologia, com métodos 
e ferramentas próprios, estruturada em camadas, do ponto de vista sistêmico. 
A abordagem sistêmica da engenharia de software deve se apoiar num 
compromisso organizacional com a qualidade que leve à cultura de um 
processo contínuo de aperfeiçoamento, e é essa cultura que, em última análise, 
leva ao desenvolvimento de abordagens cada vez mais efetivas. A camada de 
base em que a engenharia de software se apoia é I e o “adesivo” que mantém 
unidas as camadas, estruturadas segundo a visão sistêmica, é o II. 
As lacunas I e II devem ser preenchidas, correta e respectivamente, por: 
a) A qualidade de processo – método. 
b) O uso de ferramentas - controle de qualidade. 
c) O controle de qualidade – método. 
d) O controle de requisitos – projeto. 
e) O foco na qualidade – processo. 
 
Aula 2 
Exercícios de fixação 
Questão 1 - A 
 
 MODELO DE MATURIDADE DE SOFTWARE 37 
Justificativa: A Ciência da Computação deve desenvolver os fundamentos e as 
teorias para que a Engenharia de Software possa utilizá-los no desenvolvimento 
de software. 
 
Questão 2 - B 
Justificativa: Segundo os conceitos apresentados a Ciência da Comutação 
desenvolve os fundamentos e as teorias para que sejam utilizados pela 
Engenharia de Software. 
 
Questão 3 - D 
Justificativa: De acordo com o conceito de software ele é composto de: 
instruções, estruturas de dados e documentos. 
 
Questão 4 - E 
Justificativa: Os problemas encontrados na primeira era de desenvolvimento de 
software são decorrentes da falta de métodos e técnicas de desenvolvimento, 
bem como da falta de documentação. Dessa forma, somente a última 
alternativa não representa um problema desta era. 
 
Questão 5 - B 
Justificativa: De acordo com a definição apresentada no início da aula, ela 
refere-se ao software de inteligência artificial. 
 
Questão 6 - A 
Justificativa: A Engenharia de Software utiliza a tecnologia em camadas com o 
foco na qualidade. 
 
Questão 7 - A 
Justificativa: A Engenharia de Software lida com muitos sistemas legados e 
deve atender a grande necessidade do mercado quanto aos prazos de entrega. 
 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 38 
Questão 8 - B 
Justificativa: De acordo com o abordado nas aulas, a Engenharia de Software é 
composta por ferramentas, métodos e processo.Questão 9 - A 
Justificativa: Os problemas de custo e prazo ainda persistem, e o software 
ainda está em processo de evolução para se tornar uma solução para os 
problemas existentes. E os itens III e IV estão corretos. 
 
Questão 10 - E 
Justificativa: O foco da Engenharia de Software é sempre na qualidade e o 
processo é o adesivo que mantém unidas as camadas das ferramentas e dos 
métodos. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 39 
Introdução 
Esta aula tem como tema central apresentar aos alunos os principais modelos 
de ciclo de vida utilizados no mercado, seus conceitos, características e 
aplicações. 
Os modelos de ciclo de vida de software surgiram pela necessidade de termos 
um conjunto de etapas a serem seguidas para que um este produto pudesse 
ser desenvolvido. 
 
Com um modelo bem definido e estabelecido, é mais fácil para que todos na 
organização possam seguir as mesmas etapas e saber em que fase se encontra 
o desenvolvimento do software. 
 
Objetivo: 
1. Apresentar o conceito de ciclo de vida de software e alguns modelos, como: 
cascata, v, incremental, evolutivo, iterativo e incremental; 
2. Discutir os modelos Rad, prototipação, espiral e Rup. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 40 
Conteúdo 
Ciclo de vida de software 
Vamos começar a nossa aula com uma pergunta simples: 
 
por que precisamos utilizar um modelo de ciclo de vida para desenvolver 
software? 
 
Porque ele define a estrutura e a filosofia utilizadas obrigatoriamente em um 
processo de desenvolvimento de software. Um modelo de ciclo de vida define 
também as diferentes fases na existência deste produto, além de determinar 
também os princípios e diretrizes que guiarão a realização destas fases. 
Precisamos entender também que a adoção de um ciclo de vida não é 
suficiente para guiar e controlar um projeto de software na prática. 
 
 
Atenção 
 As seguintes características devem ser levadas em consideração 
durante a vida de um produto de software: 
• Organização das atividades do processo; 
• Recursos humanos, hardware e software; 
• Procedimentos de operação; 
• Políticas de desenvolvimento e restrições; 
• Tipos de software. 
Ou seja, precisamos conhecer bem a equipe de desenvolvimento 
e entender quais são as suas habilidades e quais as ferramentas 
disponíveis na organização, dentre outras características. 
 
Com essas informações, podemos definir o melhor ciclo de vida a ser utilizado 
no desenvolvimento de um software, pois não existe um melhor ciclo de vida a 
ser utilizado. Precisamos conhecer bem as características do projeto a ser 
desenvolvido para escolher ciclo de vida mais adequado para esse projeto. 
 
 MODELO DE MATURIDADE DE SOFTWARE 41 
Um ciclo de vida possui algumas características básicas que são comuns a todos 
os modelos, tais como: 
 
• Descrever as principais fases do desenvolvimento; 
• Definir as principais atividades a serem realizadas durante cada uma das 
fases; 
• Especificar os produtos de cada uma das fases, além dos insumos necessários 
para o início delas; 
• Fornecer um framework sobre o qual as atividades necessárias podem ser 
mapeadas. 
 
Principais modelos de ciclo de vida de software 
Existem vários modelos de ciclo de vida disponíveis no mercado; entretanto, 
vamos discutir os principais modelos utilizados nas organizações, que são: 
cascata, V, incremental, evolutivo, iterativo e incremental. 
 
Modelo cascata 
Modelo mais antigo e o mais amplamente usado na engenharia de software, 
modelado em função do ciclo da engenharia convencional. Também conhecido 
como modelo clássico ou sequencial linear. 
 
Ele requer uma abordagem sistemática e sequencial ao desenvolvimento de 
software, sendo adequado em situações nas quais os requisitos são bem 
entendidos, e o gerente do projeto confia na capacidade da equipe de 
desenvolver utilizando o processo. 
 
A ideia da cascata nasceu das etapas que possuem este formato, sendo 
executadas sequencialmente e podendo retornar a uma etapa anterior. 
Entretanto, o retorno a uma etapa anterior deve ser muito bem analisado 
quanto à sua viabilidade financeira e técnica. 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 42 
 
Atenção 
 Esse modelo apresenta as seguintes vantagens: 
• A fase única de requisitos leva à especificação antes do projeto 
e ao projeto antes da codificação; 
• O uso de revisões ao fim de cada fase permite o envolvimento 
do usuário; 
• O modelo permite que se imponha um controle de 
configuração; 
• Cada passo serve como uma base aprovada e documentada 
para o passo seguinte. 
E possui as seguintes desvantagens: 
• O fluxo sequencial que o modelo propõe geralmente não é 
seguido em projetos reais; 
• Requisitos devem ser estabelecidos de maneira completa, 
correta e clara no início de um projeto; 
• Difícil avaliar o progresso verdadeiro do projeto durante as 
primeiras fases; 
• Uma versão executável do software só fica disponível numa 
etapa avançada do desenvolvimento; 
• Ao final do projeto, é necessário um grande esforço de 
integração e testes. 
 
Modelo V 
Assim como o modelo cascata, o modelo V é sequencial; isto significa que cada 
fase precisa ser completada antes que a próxima se inicie. Os testes são muito 
mais enfatizados nesse modelo do que no modelo cascata. Os procedimentos 
de teste são desenvolvidos desde cedo no ciclo de vida, antes da 
implementação. 
 
Esse modelo apresenta as seguintes vantagens: 
 
 MODELO DE MATURIDADE DE SOFTWARE 43 
• Menor custo e menos tempo são necessários para a entrega da primeira 
versão; 
• Riscos associados ao desenvolvimento de incrementos são menores devido ao 
seu tamanho reduzido; 
• Número de mudanças nos requisitos pode diminuir devido ao curto tempo de 
desenvolvimento da primeira versão. 
E possui as seguintes desvantagens: 
• Se os requisitos não são tão estáveis ou completos quanto se esperava, 
alguns incrementos podem ser retirados de uso e retrabalhados; 
• O gerenciamento de custo, cronograma e configuração são mais complexos. 
 
Modelo incremental 
Neste modelo, as necessidades do usuário são segmentadas em uma série 
incremental de produtos. O processo se repete até que um produto completo 
seja produzido, e a segmentação das necessidades é realizada antes do 
desenvolvimento da primeira versão. A ideia desse modelo condiz com o 
propósito de aumentar pouco a pouco o software. 
 
O modelo incremental deve ser adotado quando os requisitos são conhecidos 
no início do desenvolvimento e há a necessidade de entrega de um produto 
funcional em pouco tempo. Deve notar que, a cada incremento, é produzida 
uma versão operacional do software. 
 
 
 
 
 
 
 
 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 44 
 
Atenção 
 Esse modelo apresenta as seguintes vantagens: 
• Menor custo e menos tempo são necessários para a entrega da 
primeira versão; 
• Riscos associados ao desenvolvimento de incrementos são 
menores devido ao seu tamanho reduzido; 
• Número de mudanças nos requisitos pode diminuir devido ao 
curto tempo de desenvolvimento da primeira versão. 
E possui as seguintes desvantagens: 
• Se os requisitos não são tão estáveis ou completos quanto se 
esperava, alguns incrementos podem ser retirados de uso e 
retrabalhados; 
• O gerenciamento de custo, cronograma e configuração são 
mais complexos. 
 
Modelo evolutivo 
Neste modelo, as versões parciais são desenvolvidas para atender aosrequisitos conhecidos inicialmente. A primeira versão é usada para refinar os 
requisitos para uma segunda versão e, a partir do conhecimento sobre os 
requisitos obtido com o uso, continua-se o desenvolvimento, evoluindo o 
produto. 
 
MODELO EVOLUTIVO 
 
Esse modelo apresenta as seguintes vantagens: 
 
• É adequado quando os requisitos não podem ser completamente 
especificados no início do desenvolvimento; 
• O uso do sistema pode aumentar o conhecimento sobre o produto e, 
consequentemente, melhorar os requisitos. 
E possui as seguintes desvantagens: 
 
 MODELO DE MATURIDADE DE SOFTWARE 45 
• Necessária uma forte gerência de custo, cronograma e configuração; 
• Usuários podem não entender a natureza da abordagem e se decepcionarem 
quando os resultados não são satisfatórios. 
 
Modelo iterativo e incremental 
O fundamento deste modelo é dividir o desenvolvimento do software em 
pequenos ciclos, considerando um pequeno conjunto de necessidades do 
cliente final para que estes ciclos sejam executados. 
 
Os ciclos dizem respeito a pequenos modelos cascatas que são executados para 
contemplar as necessidades do usuário. Dessa forma, precisamos dividir as 
necessidades dos clientes finais em partes e definir um grau de importância 
para cada uma delas. 
 
Modelos de ciclo de vida mais utilizados 
Nesta parte do curso, discutiremos mais alguns modelos de ciclo de vida que 
são muito utilizados no mercado, que são: RAD (Rapid Application 
Development), prototipação, espiral e RUP (Rational Unified Process). 
 
Modelos de ciclo de vida mais utilizados 
O modelo RAD (Rapid Application Development) é sequencial linear que 
enfatiza o desenvolvimento rápido de um software. Essa “alta velocidade” é 
conseguida através de uma abordagem de construção baseada em várias 
equipes que trabalham paralelamente enquanto o produto é dividido em 
módulos. Geralmente, um projeto de software que utiliza RAD tem duração de 
60 a 90 dias. 
 
Ele pode ser utilizado quando os requisitos são bem definidos e estão 
estabilizados, o escopo do sistema é restrito, e a aplicação pode ser 
modularizada. 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 46 
Necessita de recursos humanos capacitados e comprometidos, suficientes para 
todas as equipes. A equipe deve utilizar componentes no desenvolvimento do 
software. 
 
 
Atenção 
 Esse modelo apresenta as seguintes vantagens: 
• O ciclo de desenvolvimento é extremamente curto; 
• Maior distribuição de tarefas entre as equipes. 
E possui as seguintes desvantagens: 
• Requer recursos humanos suficientes para criar um número 
adequado de equipes em projetos grandes e escaláveis; 
• Requer um comprometimento entre desenvolvedores e 
clientes; 
• Não é apropriado quando os riscos são grandes; 
• Não é apropriado quando o sistema precisa interagir com 
outros sistemas. 
 
Prototipação 
Um protótipo é uma versão preliminar do produto final, o software. É uma 
técnica que deve ser utilizada para explorar (elicitar) as necessidades do cliente 
final, principalmente quando eles são vagos ou indefinidos. Os usuários podem 
fazer experiências com o protótipo, conhecendo mais sobre o software que será 
disponibilizado futuramente. 
 
É uma versão inicial de um software que pode ser utilizado para determinar a 
viabilidade técnica, de custo e de cronograma de um projeto. 
 
Deve haver uma forte interação com o usuário para que as suas necessidades 
sejam rapidamente projetadas e implementadas na construção e validação do 
protótipo, de acordo com etapas descritas na figura seguinte. 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 47 
Ele possui as seguintes vantagens: 
 
• Um protótipo deve ser submetido a uma avaliação, geralmente feita pelo 
cliente; 
• O fato de o cliente poder interagir com um protótipo ajuda a cristalizar suas 
necessidades funcionais e de desempenho; 
• Os desenvolvedores podem implementar os requisitos baseado no feedback 
do usuário. 
E apresenta os seguintes riscos na sua utilização: 
• Clientes imaginam que a maior parte do trabalho já foi feita; 
• Protótipo pode crescer de maneira não planejada, tornando-se um incremento 
funcional; 
• Protótipo pode ter um desempenho melhor do que um incremento funcional, 
pois não implementa toda a funcionalidade, causando frustração aos clientes 
quando o sistema completo é entregue. 
 
Modelo espiral 
Esse modelo possui as melhores características do ciclo de vida clássico e da 
prototipação, acrescentando um elemento muito importante: a análise de risco. 
 
Além disso, assume que o desenvolvimento acontece em ciclos e possui as 
seguintes fases: planejamento, análise de riscos, engenharia e avaliação. Um 
software passa repetidamente por essas fases em iterações (chamadas espirais 
nesse modelo). A cada passagem na espiral, é realizada a análise de risco para 
avaliar a continuidade ou não do desenvolvimento do software. 
 
Rational Unified Process (RUP) 
O RUP (Rational Unified Process) é um processo proprietário de engenharia de 
software desenvolvido pela Rational Software, atualmente subsidiária da IBM, e 
possui um framework de processo que pode ser adaptado e estendido. 
 
 
 MODELO DE MATURIDADE DE SOFTWARE 48 
Ele usa o paradigma orientado a objetos, juntamente com a notação UML 
(Unified Modeling Language) para a documentação do software. 
 
Esse modelo está organizado em disciplinas, nas quais são distribuídas tarefas e 
responsabilidades para que sejam gerados produtos de software de cada uma 
destas tarefas, conhecidas como artefatos de software. 
 
O ciclo de vida é dividido em fases sequenciais, as quais, por sua vez, são 
divididas em iterações, que são planejadas em número, duração e objetivos, 
como pode ser observado na figura. 
 
As etapas do modelo são descritas abaixo: 
 
Concepção: 
Entender os requisitos gerais e determinar o escopo do esforço de 
desenvolvimento. 
 
Elaboração: 
Planejar as atividades e recursos necessários e especificar as características e 
projeto da arquitetura. 
 
Construção: 
Construir o produto e evoluir a visão, arquitetura e planos até que o material 
esteja pronto para entrega. 
 
Transição: 
Garantir que o sistema tenha o nível correto de qualidade para atingir os 
objetivos, além de realizar correções, treinamento de usuários, ajustes e adição 
de elementos que estavam faltando. Posteriormente, o produto final é 
produzido e entregue. 
 
Esse modelo possui as seguintes vantagens: 
 
 MODELO DE MATURIDADE DE SOFTWARE 49 
• Permite e encoraja o feedback do usuário,elicitando os requisitos reais do 
sistema; 
• Inconsistências entre requisitos, projeto e implementação podem ser 
detectados rapidamente; 
• Divisão da carga de trabalho por todo o ciclo de vida; 
• Compartilhamento de lições aprendidas, melhorando continuamente o 
processo; 
• Evidências concretas do andamento do projeto podem ser oferecidas durante 
todo o ciclo de vida. 
 
Atividade proposta 
Antes de finalizarmos esta aula, vamos fazer uma atividade! 
Discuta como o modelo cascata e a prototipação podem ser utilizados no 
modelo em espiral. 
 
Chave de resposta: Podemos utilizar a prototipação na análise de riscos, e o 
modelo cascata na engenharia. 
 
 
Material complementar 
 
Para saber mais sobre os modelos de ciclo de vida de software, 
leia os textos disponíveis em nossa biblioteca virtual. 
 
 
Referências 
PRESSMAN, Roger S. Engenharia de Software: Uma Abordagem Profissional. 
7ª Edição. São Paulo: McGraw-Hill Brasil, 2011. 
SOMMERVILLE, Ian. Engenharia de Software. 9ª Edição. São Paulo:

Continue navegando