Engenharia de Software

Documentos relacionados
Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 03 PROFª BRUNO CALEGARO

PDS. Aula 1.6 Modelos de Processo. Prof. Dr. Bruno Moreno

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

Engenharia de Software

Processos de software

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome:

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS

Engenharia de Software. Processos. Desenvolvimento de Software Tradicionais 2014/2. Prof. Luís Fernando Garcia

Engenharia de Software II

QUESTÕES TESTES. Questão 1. O modelo de ciclo de vida em cascata:

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

Modelos de Ciclo de Vida

ENGENHARIA DE SOFTWARE

14/11/2014. Engenharia de Software. Modelos de software. Modelo Clássico - Cascata

Processos de Software. O que é modelo de processo? Vantagens. Modelos de Processo Gerais. O que é um processo de software?

Modelos de Processo de Software

MODELOS DE PROCESSOS (PARTE 2)

INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO MODELO DOS PROCESSOS DE SOFTWARE

Desenvolvimento de Projetos

Princípios da Engenharia de Software aula 03

Modelos de Processo de Software. Profª Jocelma Rios

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

Ciclo de Vida de Sistemas de Informação

Fábricas de Software. Processos de Software. Fábricas de Software. Fábricas de Software 17/08/2010. Jorge Dias

Modelos de Processo de Software. SSC Engenharia de Software 1 Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

Reuso de Software Aula Maio 2012

Verificação e Validação (V & V)

ENGENHARIA DE SOFTWARE

Processos de Software

Engenharia de Software. Prof. Me. Clodoaldo Brasilino

Processos de Software

Escolhendo um Modelo de Ciclo de Vida

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata

Prof. Dr. Thiago Jabur Bittar

Aula 2 Processo de Software

Paradigmas da Engenharia de Software AULA PROF. ABRAHAO LOPES

Ainda que muitos modelos sejam semelhantes entre os modelos de ciclo de vida, existem alguns aspectos que os diferenciam:

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Prof. Esp. Fabiano Taguchi

PROCESSO DE SOFTWARE

CICLO DE VIDA DO SOFTWARE. Nas empresas também é difícil adotar apenas um ciclo de vida, na maioria das vezes possui mais de um.

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

Paradigmas de Software

Aula 3 - Modelos de Processo - cascata, iterativo e incremental e ágil


Engenharia de Software I - Aula 04

PROCESSOS DE SOFTWARE

UNIVERSIDADE FEDERAL DO PARANÁ UFPR BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

MODELAGEM DE SISTEMAS Unidade 1 Conceitos Básicos de Modelagem. Luiz Leão

O Processo Unificado (PU) SSC 121 Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

- 6ª Lista de Exercícios -

Rational Unified Process (RUP)

ENGENHARIA DE SOFTWARE

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome:

CAPÍTULO 1 O AMBIENTE DE DESENVOLVIMENTO DE SISTEMAS. Tereza Gonçalves Kirner

Protótipo: um brinquedo valioso

Engenharia de Software Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

Processo. Processo unificado. Principais Características do UP. Principais Características do UP RUP. Unified Process (Processo Unificado)

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPI JOÃO CÂMARA RATIONAL UNIFIED PROCESS - RUP

CICLO DE VIDA DE SOFTWARE

Engenharia de Software I

Engenharia de Software

Processos de. Desenvolvimento de Software

Processos de software Leitura: Cap3 Sommerville / Cap1: Pressman - Ariadne

Processos de Desenvolvimento de Software. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 2

Engenharia de Software I

Análise e Projeto de Sistemas

UNIVERSIDADE DO ESTADO DE SANTA CATARINA - UDESC DCC Departamento de Ciência da Computação Joinville-SC

MODELAGEM DE SISTEMAS. Introdução a Computação e Engenharia de Software. Profa. Cynthia Pinheiro

Aula 2 - Modelos de Processo - cascata, iterativo e incremental e ágil

Tópicos da Aula. O que é anunciado. Falha de Comunicação no Desenvolvimento de Software. Engenharia de Software: Conceitos Fundamentais

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema:

Introdução à Análise e Projeto de Sistemas

Prof. Ms. Ronaldo Martins da Costa

RAD Rapid Application Development

Modelos Prescritivos de Processo

Processo Unificado (PU) Unified Process

2

Aula 1: Apresentação. Revisão para Prova 1. Aula 2: Motivação. O que é software? Eng. de Software em Camadas. O que é Engenharia de Software?

Engenharia de Software. Engenharia de Software

REUSO E REUSABILIDADE

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini

Definições e ciclo de vida

Requisitos de Sistemas

Análise e Projeto de Software

ENGENHARIA DE SOFTWARE

Processo de Desenvolvimento de Software

Engenharia de Software

Processo devem incorporar uma estratégia desenvolvimento

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software

Introdução a Engenharia de Software

Desenvolvimento Ágil de Software. Prof. Edjandir Corrêa Costa

FORMULÁRIO DE REGISTRO DE PLANO DE CURSO 2013.I

UML Unified Modeling Language Linguagem de Modelagem Unificada

Fundamentos de Teste de Software

Transcrição:

Engenharia de Software Professor Pedro Henrique Chagas Freitas www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 1

Tópicos da Aula Modelo baseado em componentes... 3 Métodos Formais... 9 Modelo Iterativo e Modelo Incremental... 10 RAD (Rapid Application Development)... 13 Modelos Evolucionários... 18 Modelo Espiral... 22 Prototipagem... 28 Lista das Questões Comentadas na Aula... 31 Bibliografia... 46 Lista das Questões Apresentadas na Aula... 47 Gabarito... 56 www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 2

Engenharia de Software (Parte II) Modelo baseado em componentes Vamos retornar do ponto onde paramos e tratar do modelo baseado em componentes. O modelo baseado em componentes surgiu no final dos anos 60, em uma conferência que buscava tratar da crise do Software. Nessa época tivemos os primeiros circuitos integrados aliados aos sistemas computacionais que estavam surgindo. Perceba que quando esses dois mundos (circuitos integrados e sistemas computacionais) se colidiram a complexidade daquilo que poderia ser criado a partir de então era maior e como já comentamos desenvolver software nesse ponto da história era quase que informal. Foi nesse contexto que surgiu o modelo baseado em componentes, que se utiliza de princípios oriundos da engenharia. Mas professor que princípios são esses que fomentaram o modelo baseado em componentes? A engenharia trabalha com um princípio de reutilização e quando pensamos no mundo computacional esse princípio deu origem aos componentes reusáveis, logo o modelo baseado em componentes é um modelo baseado em reusabilidade. Segundo vários autores, inclusive o autor (Pressman): A utilização do modelo baseado em componentes reduz custo de produção e gera entregas mais rápidas. Perceba que em virtude de trabalharmos aqui com a reutilização de componentes, os custos de desenvolvimento é menor aqui do que em outros modelos. Professor mas o que é um componente? Segundo nosso autor Pressman, um componente é um bloco de construção modular, ou seja, é uma parte executável de um modulo maior, que encapsula sua respectiva implementação. O modelo baseado em componentes vai trabalhar com as seguintes fases: www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 3

Especificação de Requisitos A especificação de requisitos tem o objetivo de traduzir as informações coletadas em um documento que vai agrupar os requisitos de software. Incluindo requisitos de usuário e requisitos de sistema. Análise de Componentes Na análise de componentes é realizada uma busca pelos componentes necessários para atender os requisitos. Modificação de Requisitos Após os componentes serem analisados, alternativas são propostas e os requisitos podem ser modificados ou não, dependendo da realidade de cada componente encontrado. Projeto de Sistema com reúso Os componentes reutilizaveis são apresentados a fim de se adequar ao projeto do sistema como um todo. Desenvolvimento e Integração É realizada a integração do sistema com os componentes já verificados. Validação de Sistema O sistema é validado junto ao cliente, agora com os componentes acoplados a fim de verificar se o sistema atendem aos requisitos elicitados. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 4

Quando estudarmos o modelo espiral, perceberemos que o modelo baseado em componentes apresenta muitas características do modelo espiral. Perceba então que o modelo baseado em componentes busca desenvolver software a partir de componentes já existentes, conduzindo assim sempre ao reuso do software. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 5

1. (FCC 2014 TRT 16 Região Analista Judiciário Tecnologia da Informação - III) O modelo baseado em componentes, baseia-se na existência de um número significativo de partes reusáveis. O processo de desenvolvimento do sistema enfoca a integração destas partes, ao invés de desenvolvê-las a partir do zero. Perfeito! Lembre-se: A engenharia trabalha com um princípio de reutilização e quando pensamos no mundo computacional esse princípio deu origem aos componentes reusáveis, logo o modelo baseado em componentes é um modelo baseado em reusabilidade. Gabarito: Correto 2. (CESPE - 2016 TER-PE - Técnico Judiciário Programação de Sistemas) Assinale a opção que apresenta modelos de desenvolvimento de software. a) Paradigma imperativo e scrum. b) Modelo em cascata, DFD e paradigma concorrente. c) Modelo em cascata, modelo de componentes e modelo evolucionário. d) Transformação formal e PMP. e) Scrum e JPA. Vimos até o modelo cascata e agora o modelo de componentes e mais para frente veremos o modelo evolucionário. As outras alternativas não apresentam modelos de desenvolvimento de software. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 6

Gabarito: Letra C 3. (CESPE 2010 TRE (BA) Técnico Judiciário Tecnologia da Informação) Na engenharia de software baseada em componentes, na qual se supõe que partes do sistema já existam, o processo de desenvolvimento concentra-se mais na integração dessas partes que no seu desenvolvimento a partir do início. Essa abordagem é baseada em reuso para o desenvolvimento de sistemas de software. Como estamos tratando de componentes temos um esforço maior durante o período de integração entre os componentes. O modelo baseado em componentes pode ser tratado também como engenharia de software baseada em componentes. Gabarito: Correto 4. (FEPESE 2014 MPE-SC Analista de Tecnologia da Informação) O modelo de processo de software no qual uma implementação inicial é exposta ao usuário para que possam ser realizados refinamentos posteriores que representam novas versões do sistema é conhecido como modelo de engenharia de software baseado em componentes. Questão completamente errada, não foi nada disso que ensinei. Mais para frente você vai perceber que nessa questão a banca na verdade estava tratando do modelo evolucionário. Gabarito: Errado www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 7

5. (Quadrix - 2015 Cobra (Banco do Brasil) - Analista de Operações Requisitos e Testes - B) Um dos ciclos de vida da engenharia de software bastante utilizado é o modelo incremental, que direciona para o reuso de software, com componentes desenvolvidos ou de mercado, com a redução no tempo do ciclo de desenvolvimento. Estamos tratando aqui do modelo baseado em componentes e a descrição da questão aponta para ele e não para o modelo incremental. Gabarito: Errado www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 8

Métodos Formais Métodos formais é um assunto muito raro de ser cobrado em prova, todavia é bastante simples! Os métodos formais são técnicas de desenvolvimento de software baseado em métodos matemáticos. Dentre os métodos formais, temos modelos que são utilizados em casos muito específicos, como sistemas que precisam passar grande confiabilidade, por exemplo, situações onde a vida humana esta em jogo, sistemas industriais complexos, etc. O custo de aplicar estes métodos é muito elevado, por isso, raramente eles são utilizados, tendo em vista que existem outros métodos adequados também para situações criticas e especificas. 6. (CESPE 2013 MPOG Técnico de nível Superior Tecnologia - Modificada) Uma das técnicas utilizadas para reduzir a ambigüidade de requisitos em tipos abstratos de dados é o uso de notações baseadas em linguagens formais matemáticas, como a abordagem algébrica e os métodos formais. Correto. Os métodos formais são técnicas de desenvolvimento de software baseado em métodos matemáticos. Gabarito: Correto www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 9

Modelo Iterativo e Modelo Incremental O modelo iterativo surgiu na época do modelo cascata, como o modelo cascata acumulava riscos, o objetivo era mitigar esses riscos, reduzindo o acumulo deles. Mas como fazer isso? Para mitigar os riscos, começamos então a desenvolver software de maneira gradual, através de requisitos menores, feedback constante e principalmente interação com o usuário. Essa mudança de concepção do modelo em cascata para o modelo iterativo também nos ajudou a reagir melhor às mudanças e gerenciar melhor o ciclo de vida do software. A figura apresentada acima demonstra bem o que é o modelo iterativo e o que é o modelo incremental. Nas provas dificilmente vai ser cobrada uma distinção entre os dois, porque eles caminham lado a lado, tendo pequenas diferenças. No modelo iterativo, temos várias equipes trabalhando no desenvolvimento de uma parte do software que será integrada no final e no modelo incremental temos equipes trabalhando no desenvolvimento do software lançando versões deste software com novas funcionalidades: versão 1.0, versão 2.0, etc. Uma das principais vantagens tanto do modelo iterativo como do modelo incremental é que o cliente vai receber entregas do software antes que este esteja completamente pronto, logo o feedback aqui é constante. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 10

7. (CESGRANRIO 2016 TCE-PR Analista de Controle - Tecnologia da Informação) No modelo iterativo de desenvolvimento de software, as atividades são dispostas em estágios seqüenciais. No modelo cascata e não no modelo iterativo as atividades são dispostas em estágios seqüenciais. Gabarito: Errado 8. (CESPE 2014 ANTAQ Analista de Sistemas e Negócios) O processo de desenvolvimento iterativo e incremental apresenta dificuldades para dar visibilidade ao processo. Pelo contrário, a visibilidade do processo é melhor quando utilizando processos baseados no desenvolvimento iterativo e incremental. Gabarito: Errado 9. (CESPE 2014 ANATEL Analista Administrativo Desenvolvimento de Sistemas) Nos processos iterativos de desenvolvimento de software, o tratamento de mudanças em requisitos deve ser priorizado com a realização de um processo formal de gerenciamento de mudanças. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 11

Não existe essa dependência de priorizar o tratamento de mudanças em requisitos com a realização de um processo formal de gerenciamento de mudanças. Gabarito: Errado 10. (CESPE 2013 BACEN Analista de Sistemas) Na abordagem incremental, o sistema é dividido em subsistemas por funcionalidades. Após a identificação das funcionalidades a serem entregues no primeiro incremento, novas funcionalidades serão adicionadas a cada versão. Perfeito! No modelo incremental o sistema pode ser dividido em subsistemas por funcionalidades, por isso que a cada incremento eu entrego algo funcional. Gabarito: Correto www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 12

RAD (Rapid Application Development) O RAD é um modelo iterativo e incremental que vai trabalhar com ciclos de desenvolvimento curtos, entre 60 e 90 dias. Aqui também temos a utilização do reúso de componentes a fim de reduzir o tempo de desenvolvimento do software. Estas são as fases do RAD: Modelagem de Negócios Modelagem de Dados Modelagem de Processos Geração de Aplicação Teste e Modificação Modelagem de negócio: É o modelo de como funciona os processos de negócio. Modelagem de dados: De base de como funciona os processos de negócio, podemos criar uma representação dos dados com o objetivo de suportar o negócio. Modelagem de processos: Já definido o modelo de negócio e de dados, podemos modelar o fluxo dos processos a fim de implementar as funções do negócio. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 13

Geração de aplicação: A geração de aplicação compreende o uso de técnicas baseadas na reutilização de componentes para construção de soluções de software para o negócio. Teste e Modificação: Muitos componentes aqui já estão testados, mas os novos componentes, que não estão são testados são testados nessa fase e as modificações necessárias são realizadas. No modelo RAD temos um feedback constante por parte do cliente, abaixo algumas das vantagens e desvantagens do modelo RAD. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 14

11. (FUNCAB 2014 MDA Analista de Sistemas) São características do desenvolvimento rápido de aplicações (RAD), EXCETO: a) Construção baseada em componentes. b) Utilização de equipes enxutas, mesmo em projetos grandes. c) Aplicação em desenvolvimento de sistemas de informação. d) Desenvolvimento extramamente curto. e) Processo com desenvolvimento de software incremental. No RAD as equipes devem ser maiores em projetos grandes, não existe essa definição de manter equipes enxutas em projeto grandes, as outras alternativas são características do RAD. Gabarito: Letra B 12. (FGV 2010 FIOCRUZ Tecnologista em Saúde) Rapid Application Development (RAD) é um modelo de processo de software incremental que enfatiza um ciclo de desenvolvimento curto, com o uso de uma abordagem de construção baseada em componentes. Nesse modelo, três das principais fases são abrangidas pelas modelagens: a) do negócio, dos recursos financeiros e das funções gerenciais. b) do gerenciamento, dos recursos de TI e dos processos. c) do planejamento, dos dados e das funções gerenciais. d) do planejamento, dos recursos de TI e dos projetos. e) do negócio, dos dados e dos processos. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 15

Fases do RAD: Modelagem de negócio: É o modelo de como funciona os processos de negócio. Modelagem de dados: De base de como funciona os processos de negócio, podemos criar uma representação dos dados com o objetivo de suportar o negócio. Modelagem de processos: Já definido o modelo de negócio e de dados, podemos modelar o fluxo dos processos a fim de implementar as funções do negócio. Geração de aplicação: A geração de aplicação compreende o uso de técnicas baseadas na reutilização de componentes para construção de soluções de software para o negócio. Teste e Modificação: Muitos componentes aqui já estão testados, mas os novos componentes, que não estão são testados são testados nessa fase e as modificações necessárias são realizadas. Gabarito: Letra E 13. (Cespe 2008 TST Analista Judiciário Tecnologia da Informação) O modelo RAD (Rapid Application Development) consiste em uma forma de prototipação para esclarecer dúvidas da especificação do software. O RAD pode utilizar prototipação, mas não é uma forma de prototipação. O RAD é um modelo iterativo e incremental que vai trabalhar com ciclos de desenvolvimento curtos, entre 60 e 90 dias. Aqui também temos a utilização do reúso de componentes a fim de reduzir o tempo de desenvolvimento do software. Gabarito: Errado www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 16

14. (Cespe 2013 TRT 17 Região Analista de Sistemas) O objetivo do RAD é separar os modelos da visualização e do controle. Ele fornece o controlador e facilita a escrita de moldes padronizados para a camada de visualização. O RAD é um modelo iterativo e incremental que vai trabalhar com ciclos de desenvolvimento curtos, entre 60 e 90 dias. Aqui também temos a utilização do reúso de componentes a fim de reduzir o tempo de desenvolvimento do software. Questão completamente fora de contexto do que é RAD ou do seu objetivo. Gabarito: Errado www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 17

Modelos Evolucionários Os modelos evolucionários tem como objetivo criar uma implementação ou versão inicial, capaz de evoluir ao longo do tempo, através da verificação e refinamento de várias versões até chegar no desejado. Pressman define que os modelos evolucionários são iterativos, apresentando características que possibilitam desenvolver versões cada vez mais completas do software. Existem dois tipos de desenvolvimento baseado em modelos evolucionários, que são: Desenvolvimento evolutivo ou exploratório: Nele compreendemos as partes do software e evoluimos essas através do acoplamento de novas características que o cliente pede ao longo do processo. Desenvolvimento através de prototipação: Aqui nós desenvolvemos os requisitos e conforme o software vai evoluindo e a compreensão do requisitos vai aumentando, vamos descartando versões desatualizadas. Os modelos evolucionários apresentam algumas dificuldades, que são a mudança contínua, o que dificulta você ter uma estrutura consistente e outra dificuldade é a falta de documentação, uma vez que novas versões são constantemente lançadas, o que inviabiliza uma atualização constante. Entre as vantagens é importante destacar que nos modelos evolucionários, podemos apresentar uma versão inicial ao usuário, e refinar a compreensão das suas necessidades ao longo das versões que são apresentadas, lembrando que essas versões podem ser descartadas ou evoluir até a versão final. Resumindo, o desenvolvimento evolucionário vai intercalar as atividades de especificação, desenvolvimento e validação, o que permite que o software seja desenvolvido de forma mais rápida, conforme especificações iniciais e abstratas. Entre os principais modelos evolucionários se destacam o modelo espiral e a prototipagem. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 18

15. (FUNRIO - 2016 IF-PA Analista de Tecnologia) Um modelo de desenvolvimento de software intercala as atividades de especificação, desenvolvimento e validação. Ele permite desenvolver rapidamente um sistema inicial a partir de especificações abstratas, que são então refinadas com informações do cliente, para produzir um sistema que atenda suas necessidades. Esse modelo é conhecido como desenvolvimento: a) Em espiral. b) em cascata. c) evolucionário. d) formal de sistemas. e) orientado a reuso. Os modelos evolucionários tem como objetivo criar uma implementação ou versão inicial, capaz de evoluir ao longo do tempo, através da verificação e refinamento de várias versões até chegar no desejado. Estamos tratando aqui na questão dos modelos evolucionários. Gabarito: Letra C 16. (FGV 2015 TCM-SP Agente de Fiscalização Tecnologia da Informação) Software, assim como todos os sistemas complexos, evolui ao longo do tempo. Modelos de processos evolucionários reconhecem a natureza iterativa e incremental da maioria dos projetos de engenharia de software e são projetados para adequar mudanças. Os modelos a serem utilizados em um processo evolucionário são: a) cascata e modelo V; b) prototipação e modelo espiral; www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 19

c) concorrente e métodos formais; d) incremental e baseado em componentes; e) processo unificado e orientado a aspectos. Analise de Sistemas em Teoria e Exercícios Comentados Entre os principais modelos evolucionários se destacam o modelo espiral e a prototipagem. Gabarito: Letra B 17. (CESGRANRIO 2014 Petrobrás Tecnico de Informática Júnior) Um técnico de informática, com o objetivo de agilizar o desenvolvimento de um software, escolheu o desenvolvimento evolucionário, uma abordagem da área de Engenharia de Software, que: a) facilita a produção de sistemas bem estruturados, privilegiando um processo de mudanças contínuas, cada vez mais fáceis e baratas. b) Se baseia na existência de um número significativo de componentes reusáveis, num processo de desenvolvimento que enfoca a integração desses componentes, em vez de desenvolvê-los a partir do zero. c) considera como atividades fundamentais do processo a especificação, o desenvolvimento, a validação e a evolução, representado-as como fases de processo separadas, sendo que para uma fase ser iniciada, a outra deve estar completamente terminada. d) é mutuamente exclusiva com o modelo em cascata e de Engenharia de Software baseada em componentes, sendo que os subsistemas contidos em um sistema maior precisam ser desenvolvidos, usando a mesma abordagem ou modelo. e) intercala as atividades de especificação, desenvolvimento e validação, permitindo que um sistema inicial seja desenvolvido rapidamente, baseado em especificações abstratas. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 20

Lembra: Resumindo, o desenvolvimento evolucionário vai intercalar as atividades de especificação, desenvolvimento e validação, o que permite que o software seja desenvolvido de forma mais rápida, conforme especificações iniciais e abstratas. Entre os principais modelos evolucionários se destacam o modelo espiral e a prototipagem. Nossa resposta correta é a Letra E. Gabarito: Letra E www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 21

Modelo Espiral Em 1988, o modelo espiral foi proposto por Boehm, a ideia aqui é que as atividades dentro do processo de desenvolvimento de software sejam representadas como uma espiral. O modelo espiral para muitos visa combinar dois modelos, o cascata e a prototipação, sendo que cada loop dentro do modelo espiral vai representar uma fase do processo de desenvolvimento de software. A imagem acima é uma representação conforme apresenta o autor Pressman, que ensina que o modelo espiral é dividido em cinco etapas, a saber: Comunicação, Planejamento, Modelagem, Construção e Implantação. Perceba que eu escolho cada fase de acordo com as necessidades do negócio, cada loop é uma fase e em cada uma delas podemos teremos necessidades diferentes, conforme o desenvolvimento do software. Segundo Boehm criado do modelo, a cada loop da espiral, uma escolha deve ser feitas sobre se o projeto deverá continuar ou não e a principal diferença que vocês tem que levar para prova é que o modelo espiral de destaca de outros, por causa da análise de riscos. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 22

18. (CESPE 2010 SERPRO Analista área: Desenvolvimento de Sistemas) O modelo em espiral de ciclo de vida de software é iterativo e incremental, uma vez que a mesma seqüência de atividades relacionadas à produção de software é realizada a cada ciclo da espiral. Errado, o modelo espiral é evolucionário e iterativo, mas não é incremental. Gabarito: Errado 19. (CESPE 2013 STF Técnico Judiciário Tecnologia da Informação) O processo de software fundamentado no modelo em espiral apresenta o processo em loops compostos basicamente por setores, como, por exemplo, definição de objetivos, avaliação de riscos, planejamento e desenvolvimento e avaliação. Isso mesmo! www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 23

Note que o último setor em inglês vai aparecer a característica: delivery feedback, que aqui na questão foi compreendida como avaliação, assim como construction foi compreendido como desenvolvimento. Oriento sempre a não se prender ao rigor dos nomes, porque a mesma banca pode adota autores diferentes e traduções diferentes, o importante é que você consiga perceber se a questão representa o que de fato ela visa representar. Ok? Gabarito: Correto 20. (CS-UFG 2014 UEAP Analista de Tecnologia) No modelo espiral de Boehm, o processo de software é representado como uma espiral e não como uma sequência de atividades com retornos de uma para outra. O modelo espiral de Boehm é a) um framework de processo de software dirigido a riscos. b) dividido em três setores: definição de objetivos, desenvolvimento e planejamento. c) pouco tolerante a mudanças ao longo do processo de software. d) construído de forma que a volta mais externa define o início do processo de software. Olhando para as alternativas a mais coerente é a letra A, eu pessoalmente não vejo o modelo espiral como um framework de processo de software, mas realmente o modelo espiral é dirigido a risco, essa é uma característica marcante do modelo e a banca entendeu que a letra A, realmente é a correta. Gabarito: Letra A 21. (FCC 2010 MPE-RN Analista de Tecnologia da Informação) No modelo de desenvolvimento de software em espiral, cada loop da espiral representa: a) a necessidade de retornar ao início da fase em que se encontra. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 24

b) um processo de reengenharia. c) uma disciplina de software. d) uma fase do processo de software. e) uma atividade paralela. Analise de Sistemas em Teoria e Exercícios Comentados No modelo de desenvolvimento de software em espiral, cada loop da espiral representa uma fase do processo de software. Lembra: O modelo espiral para muitos visa combinar dois modelos, o cascata e a prototipação, sendo que cada loop dentro do modelo espiral vai representar uma fase do processo de desenvolvimento de software. Gabarito: Letra D 22. (FCC 2010 BAHIAGÁS Analista de Sistemas) No modelo em espiral do processo de software cada loop na espiral representa a) uma disciplina de requisitos. b) um enfoque de banco de dados. c) uma tomada de decisão. d) uma fase do processo. e) um ciclo de programa. Praticamente a mesma questão, no mesmo ano, com a mesma banca e alternativa certa sendo a mesma. Gabarito: Letra D 23. (FUNCAB 2010 PRODAM-AM Analista de Tecnologia) Qual das alternativas a seguir corresponde ao modelo de processo, proposto no final da década de 80, que tem como principais características ser evolucionário, iterativo e focado na redução dos riscos? www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 25

a) Modelo em Espiral. b) Modelo em Cascata. c) Modelo em V. d) Modelo Transformacional. e) Modelo de Especificação Operacional. Analise de Sistemas em Teoria e Exercícios Comentados Estamos tratando aqui do Modelo Espiral. Gabarito: Letra A 24. (CESGRANRIO 2011 FINEP Analista de Desenvolvimento de Sistemas) O modelo de processo de desenvolvimento de software que combina as atividades de desenvolvimento com o gerenciamento de risco é o Modelo a) Transformacional b) de Especificação Operacional c) em V d) em Cascata e) em Espiral O modelo de processo de desenvolvimento de software que combina as atividades de desenvolvimento com o gerenciamento de risco é o Modelo Espiral. Gabarito: Letra E 25. (AOCP 2014 UFGD Analista de Tecnologia da Informação) Sobre o modelo espiral de Boehm, assinale a alternativa INCORRETA: a) É um framework de processo de software dirigido a riscos. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 26

b) Neste modelo, o processo de software é representado como uma espiral. Cada volta na espiral representa uma fase do processo de software. c) Neste modelo, cada volta da espiral é dividida em três setores, sendo: Definição de objetivos, Desenvolvimento e validação, Planejamento. d) Neste modelo, a volta mais interna pode preocupar-se com a viabilidade do sistema. e) Neste modelo, já uma combinação de prevenção e tolerância a mudanças, assume que mudanças são um resultado de riscos de projeto e inclui atividades explícitas de gerenciamento de riscos para sua redução. A única alternativa que não apresenta nenhuma ligação com o que estudamos é a alternativa C, NÃO existe essa divisão em três setores, sendo: Definição de objetivos, Desenvolvimento e validação, Planejamento. Gabarito: Letra C www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 27

Prototipagem A prototipagem é muito comum em cenários onde os requisitos não são bem conhecidos, através da prototipagem conseguimos compreender melhor os requisitos com o cliente. A prototipagem é um processo iterativo, sendo que é muito utilizado nas versões iniciais de desenvolvimento de um software, ajudando na compreensão do software como um todo. A principal vantagem da prototipagem é a experiência que o usuário ou cliente do software pode ter antes do término do processo de desenvolvimento do software. Existem algumas maneiras de se trabalhar com a prototipagem, entre elas se destacam: A utilização da prototipagem dentro do contexto de requisitos, que nada mais é do que a construção de um protótipo para ajudar a refinar a especificação dos requisitos. A utilização da prototipagem para teste de software, um protótipo aqui pode ser utilizado para realizar testes com o sistema no qual deverá ser acoplado. A utilização da prototipagem para explorar sistemas, um protótipo pode ser utilizado para validar especificações em um sistema e apoiar a experiência por exemplo do usuário com o sistema. Na prototipagem evolutiva, temos evoluções dentro do processo de desenvolvimento do software, até chegar no resultado esperado. O importante então é perceber que ao longo da prototipação é possível encontrar defeitos e validar o caminho de evolução do software. Com isso, variáveis como esforço, tempo, investimento, podem ser melhor trabalhadas, e é claro também existem desvantagens, como por exemplo o usuário confundir o protótipo com o software final, o que é muito comum. Além disso temos a documentação que fica prejudicada ao longo do processo de prototipagem e a falta de visibilidade do progresso quando vai evoluindo, evoluindo e nunca termina. Ok? www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 28

26. (CESPE 2011 MEC Analista de Sistemas) No modelo de prototipação, o processo de desenvolvimento de software é modelado como uma seqüência linear de fases, enfatizando um ciclo de desenvolvimento de breve duração. Sequência linear de fases? Lembra do que eu disse: A prototipagem é um processo iterativo, sendo que é muito utilizado nas versões iniciais de desenvolvimento de um software, ajudando na compreensão do software como um todo. Gabarito: Errado 27. (FUMARC 2012 TJ-MG Oficial Judiciário - D) Em relação a prototipagem, o protótipo ajuda no entendimento dos requisitos do sistema. Lembrando: A prototipagem é muito comum em cenários onde os requisitos não são bem conhecidos, através da prototipagem conseguimos compreender melhor os requisitos com o cliente. Gabarito: Correto 28. (FGV 2010 FIOCRUZ Tecnologista em Saúde - B) Como modelo evolucionário do processo de software, uma característica da prototipagem é configurar um processo iterativo e rápido de desenvolvimento. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 29

Simples não é verdade. A prototipagem é um modelo evolucionário e iterativo, que traz uma característica de rapidez no desenvolvimento do software. Gabarito: Correto Bons estudos! Te encontro na nossa próxima aula. Abração. Se a vida não ficar mais fácil, trate de ficar mais forte. Lembre-se: JB Carvalho www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 30

Lista das Questões Comentadas na Aula 1. (FCC 2014 TRT 16 Região Analista Judiciário Tecnologia da Informação - III) O modelo baseado em componentes, baseia-se na existência de um número significativo de partes reusáveis. O processo de desenvolvimento do sistema enfoca a integração destas partes, ao invés de desenvolvê-las a partir do zero. Perfeito! Lembre-se: A engenharia trabalha com um princípio de reutilização e quando pensamos no mundo computacional esse princípio deu origem aos componentes reusáveis, logo o modelo baseado em componentes é um modelo baseado em reusabilidade. Gabarito: Correto 2. (CESPE - 2016 TER-PE - Técnico Judiciário Programação de Sistemas) Assinale a opção que apresenta modelos de desenvolvimento de software. a) Paradigma imperativo e scrum. b) Modelo em cascata, DFD e paradigma concorrente. c) Modelo em cascata, modelo de componentes e modelo evolucionário. d) Transformação formal e PMP. e) Scrum e JPA. Vimos até o modelo cascata e agora o modelo de componentes e mais para frente veremos o modelo evolucionário. As outras alternativas não apresentam modelos de desenvolvimento de software. Gabarito: Letra C www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 31

3. (CESPE 2010 TER (BA) Técnico Judiciário Tecnologia da Informação) Na engenharia de software baseada em componentes, na qual se supõe que partes do sistema já existam, o processo de desenvolvimento concentra-se mais na integração dessas partes que no seu desenvolvimento a partir do início. Essa abordagem é baseada em reúso para o desenvolvimento de sistemas de software. Como estamos tratando de componentes temos um esforço maior durante o período de integração entre os componentes. O modelo baseado em componentes pode ser tratado também como engenharia de software baseada em componentes. Gabarito: Correto 4. (FEPESE 2014 MPE-SC Analista de Tecnologia da Informação) O modelo de processo de software no qual uma implementação inicial é exposta ao usuário para que possam ser realizados refinamentos posteriores que representam novas versões do sistema é conhecido como modelo de engenharia de software baseado em componentes. Questão completamente errada, não foi nada disso que ensinei. Mais para frente você vai perceber que nessa questão ao banca na verdade estava tratando do modelo evolucionário. Gabarito: Errado 5. (Quadrix - 2015 Cobra (Banco do Brasil) - Analista de Operações Requisitos e Testes - B) Um dos ciclos de vida da engenharia de software bastante utilizado é o modelo incremental, que www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 32

direciona para o reuso de software, com componentes desenvolvidos ou de mercado, com a redução no tempo do ciclo de desenvolvimento. Estamos tratando aqui do modelo baseado em componentes e a descrição da questão aponta para ele e não para o modelo incremental. Gabarito: Errado 6. (CESPE 2013 MPOG Técnico de nível Superior Tecnologia - Modificada) Uma das técnicas utilizadas para reduzir a ambiguidade de requisitos em tipos abstratos de dados é o uso de notações baseadas em linguagens formais matemáticas, como a abordagem algébrica e os métodos formais. Correto. Os métodos formais são técnicas de desenvolvimento de software baseado em métodos matemáticos. Gabarito: Correto 7. (CESGRANRIO 2016 TCE-PR Analista de Controle - Tecnologia da Informação) No modelo iterativo de desenvolvimento de software, as atividades são dispostas em estágios sequênciais. No modelo cascata e não no modelo iterativo as atividades são dispostas em estágios sequênciais. Gabarito: Errado www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 33

8. (CESPE 2014 ANTAQ Analista de Sistemas e Negócios) O processo de desenvolvimento iterativo e incremental apresenta dificuldades para dar visibilidade ao processo. Pelo contrário, a visibilidade do processo é melhor quando utilizando processos baseados no desenvolvimento iterativo e incremental. Gabarito: Errado 9. (CESPE 2014 ANATEL Analista Administrativo Desenvolvimento de Sistemas) Nos processos iterativos de desenvolvimento de software, o tratamento de mudanças em requisitos deve ser priorizado com a realização de um processo formal de gerenciamento de mudanças. Não existe essa dependência de priorizar o tratamento de mudanças em requisitos com a realização de um processo formal de gerenciamento de mudanças. Gabarito: Errado 10. (CESPE 2013 BACEN Analista de Sistemas) Na abordagem incremental, o sistema é dividido em subsistemas por funcionalidades. Após a identificação das funcionalidades a serem entregues no primeiro incremento, novas funcionalidades serão adicionadas a cada versão. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 34

Perfeito! No modelo incremental o sistema pode ser dividido em subsistemas por funcionalidades, por isso que a cada incremento eu entrego algo funcional. Gabarito: Correto 11. (FUNCAB 2014 MDA Analista de Sistemas) São características do desenvolvimento rápido de aplicações (RAD), EXCETO: a) Construção baseada em componentes. b) Utilização de equipes enxutas, mesmo em projetos grandes. c) Aplicação em desenvolvimento de sistemas de informação. d) Desenvolvimento extramamente curto. e) Processo com desenvolvimento de software incremental. No RAD as equipes devem ser maiores em projetos grandes, não existe essa definição de manter equipes enxutas em projeto grandes, as outras alternativas são características do RAD. Gabarito: Letra B 12. (FGV 2010 FIOCRUZ Tecnologista em Saúde) Rapid Application Development (RAD) é um modelo de processo de software incremental que enfatiza um ciclo de desenvolvimento curto, com o uso de uma abordagem de construção baseada em componentes. Nesse modelo, três das principais fases são abrangidas pelas modelagens: a) do negócio, dos recursos financeiros e das funções gerenciais. b) do gerenciamento, dos recursos de TI e dos processos. c) do planejamento, dos dados e das funções gerenciais. d) do planejamento, dos recursos de TI e dos projetos. e) do negócio, dos dados e dos processos. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 35

Fases do RAD: Modelagem de negócio: É o modelo de como funciona os processos de negócio. Modelagem de dados: De base de como funciona os processos de negócio, podemos criar uma representação dos dados com o objetivo de suportar o negócio. Modelagem de processos: Já definido o modelo de negócio e de dados, podemos modelar o fluxo dos processos a fim de implementar as funções do negócio. Geração de aplicação: A geração de aplicação compreende o uso de técnicas baseadas na reutilização de componentes para construção de soluções de software para o negócio. Teste e Modificação: Muitos componentes aqui já estão testados, mas os novos componentes, que não estão são testados são testados nessa fase e as modificações necessárias são realizadas. Gabarito: Letra E 13. (Cespe 2008 TST Analista Judiciário Tecnologia da Informação) O modelo RAD (Rapid Application Development) consiste em uma forma de prototipação para esclarecer dúvidas da especificação do software. O RAD pode utilizar prototipação, mas não é uma forma de prototipação. O RAD é um modelo iterativo e incremental que vai trabalhar com ciclos de desenvolvimento curtos, entre 60 e 90 dias. Aqui também temos a utilização do reúso de componentes a fim de reduzir o tempo de desenvolvimento do software. Gabarito: Errado www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 36

14. (Cespe 2013 TRT 17 Região Analista de Sistemas) O objetivo do RAD é separar os modelos da visualização e do controle. Ele fornece o controlador e facilita a escrita de moldes padronizados para a camada de visualização. O RAD é um modelo iterativo e incremental que vai trabalhar com ciclos de desenvolvimento curtos, entre 60 e 90 dias. Aqui também temos a utilização do reúso de componentes a fim de reduzir o tempo de desenvolvimento do software. Questão completamente fora de contexto do que é RAD ou do seu objetivo. Gabarito: Errado 15. (FUNRIO - 2016 IF-PA Analista de Tecnologia) Um modelo de desenvolvimento de software intercala as atividades de especificação, desenvolvimento e validação. Ele permite desenvolver rapidamente um sistema inicial a partir de especificações abstratas, que são então refinadas com informações do cliente, para produzir um sistema que atenda suas necessidades. Esse modelo é conhecido como desenvolvimento: a) Em espiral. b) em cascata. c) evolucionário. d) formal de sistemas. e) orientado a reuso. Os modelos evolucionários tem como objetivo criar uma implementação ou versão inicial, capaz de evoluir ao longo do tempo, através da verificação e refinamento de várias versões até chegar no desejado. Estamos tratando aqui na questão dos modelos evolucionários. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 37

Gabarito: Letra C 16. (FGV 2015 TCM-SP Agente de Fiscalização Tecnologia da Informação) Software, assim como todos os sistemas complexos, evolui ao longo do tempo. Modelos de processos evolucionários reconhecem a natureza iterativa e incremental da maioria dos projetos de engenharia de software e são projetados para adequar mudanças. Os modelos a serem utilizados em um processo evolucionário são: a) cascata e modelo V; b) prototipação e modelo espiral; c) concorrente e métodos formais; d) incremental e baseado em componentes; e) processo unificado e orientado a aspectos. Entre os principais modelos evolucionários se destacam o modelo espiral e a prototipagem. Gabarito: Letra B 17. (CESGRANRIO 2014 Petrobrás Tecnico de Informática Júnior) Um técnico de informática, com o objetivo de agilizar o desenvolvimento de um software, escolheu o desenvolvimento evolucionário, uma abordagem da área de Engenharia de Software, que: a) facilita a produção de sistemas bem estruturados, privilegiando um processo de mudanças contínuas, cada vez mais fáceis e baratas. b) Se baseia na existência de um número significativo de componentes reusáveis, num processo de desenvolvimento que enfoca a integração desses componentes, em vez de desenvolvê-los a partir do zero. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 38

c) considera como atividades fundamentais do processo a especificação, o desenvolvimento, a validação e a evolução, representado-as como fases de processo separadas, sendo que para uma fase ser iniciada, a outra deve estar completamente terminada. d) é mutuamente exclusiva com o modelo em cascata e de Engenharia de Software baseada em componentes, sendo que os subsistemas contidos em um sistema maior precisam ser desenvolvidos, usando a mesma abordagem ou modelo. e) intercala as atividades de especificação, desenvolvimento e validação, permitindo que um sistema inicial seja desenvolvido rapidamente, baseado em especificações abstratas. Lembra: Resumindo, o desenvolvimento evolucionário vai intercalar as atividades de especificação, desenvolvimento e validação, o que permite que o software seja desenvolvido de forma mais rápida, conforme especificações iniciais e abstratas. Entre os principais modelos evolucionários se destacam o modelo espiral e a prototipagem. Nossa resposta correta é a Letra E. Gabarito: Letra E 18. (CESPE 2010 SERPRO Analista área: Desenvolvimento de Sistemas) O modelo em espiral de ciclo de vida de software é iterativo e incremental, uma vez que a mesma sequência de atividades relacionadas à produção de software é realizada a cada ciclo da espiral. Errado, o modelo espiral é evolucionário e iterativo, mas não é incremental. Gabarito: Errado www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 39

19. (CESPE 2013 STF Técnico Judiciário Tecnologia da Informação) O processo de software fundamentado no modelo em espiral apresenta o processo em loops compostos basicamente por setores, como, por exemplo, definição de objetivos, avaliação de riscos, planejamento e desenvolvimento e avaliação. Isso mesmo! Note que o último setor em inglês vai aparecer a característica: delivery feedback, que aqui na questão foi compreendida como avaliação, assim como construction foi compreendido como desenvolvimento. Oriento sempre a não se prender ao rigor dos nomes, porque a mesma banca pode adota autores diferentes e traduções diferentes, o importante é que você consiga perceber se a questão representa o que de fato ela visa representar. Ok? Gabarito: Correto 20. (CS-UFG 2014 UEAP Analista de Tecnologia) No modelo espiral de Boehm, o processo de software é representado como uma espiral e não como uma sequência de atividades com retornos de uma para outra. O modelo espiral de Boehm é www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 40

a) um framework de processo de software dirigido a riscos. b) dividido em três setores: definição de objetivos, desenvolvimento e planejamento. c) pouco tolerante a mudanças ao longo do processo de software. d) construído de forma que a volta mais externa define o início do processo de software. Olhando para as alternativas a mais coerente é a letra A, eu pessoalmente não vejo o modelo espiral como um framework de processo de software, mas realmente o modelo espiral é dirigido a risco, essa é uma característica marcante do modelo e a banca entendeu que a letra A, realmente é a correta. Gabarito: Letra A 21. (FCC 2010 MPE-RN Analista de Tecnologia da Informação) No modelo de desenvolvimento de software em espiral, cada loop da espiral representa: a) a necessidade de retornar ao início da fase em que se encontra. b) um processo de reengenharia. c) uma disciplina de software. d) uma fase do processo de software. e) uma atividade paralela. No modelo de desenvolvimento de software em espiral, cada loop da espiral representa uma fase do processo de software. Lembra: O modelo espiral para muitos visa combinar dois modelos, o cascata e a prototipação, sendo que cada loop dentro do modelo espiral vai representar uma fase do processo de desenvolvimento de software. Gabarito: Letra D www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 41

22. (FCC 2010 BAHIAGÁS Analista de Sistemas) No modelo em espiral do processo de software cada loop na espiral representa a) uma disciplina de requisitos. b) um enfoque de banco de dados. c) uma tomada de decisão. d) uma fase do processo. e) um ciclo de programa. Praticamente a mesma questão, no mesmo ano, com a mesma banca e alternativa certa sendo a mesma. Gabarito: Letra D 23. (FUNCAB 2010 PRODAM-AM Analista de Tecnologia) Qual das alternativas a seguir corresponde ao modelo de processo, proposto no final da década de 80, que tem como principais características ser evolucionário, iterativo e focado na redução dos riscos? a) Modelo em Espiral. b) Modelo em Cascata. c) Modelo em V. d) ModeloTransformacional. e) Modelo de Especificação Operacional. Estamos tratando aqui do Modelo Espiral. Gabarito: Letra A 24. (CESGRANRIO 2011 FINEP Analista de Desenvolvimento de Sistemas) O modelo de processo de desenvolvimento de software que combina as atividades de desenvolvimento com o gerenciamento de risco é o Modelo www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 42

a) Transformacional b) de Especificação Operacional c) em V d) em Cascata e) em Espiral Analise de Sistemas em Teoria e Exercícios Comentados O modelo de processo de desenvolvimento de software que combina as atividades de desenvolvimento com o gerenciamento de risco é o Modelo Espiral. Gabarito: Letra E 25. (AOCP 2014 UFGD Analista de Tecnologia da Informação) Sobre o modelo espiral de Boehm, assinale a alternativa INCORRETA: a) É um framework de processo de software dirigido a riscos. b) Neste modelo, o processo de software é representado como uma espiral. Cada volta na espiral representa uma fase do processo de software. c) Neste modelo, cada volta da espiral é dividida em três setores, sendo: Definição de objetivos, Desenvolvimento e validação, Planejamento. d) Neste modelo, a volta mais interna pode preocupar-se com a viabilidade do sistema. e) Neste modelo, já uma combinação de prevenção e tolerância a mudanças, assume que mudanças são um resultado de riscos de projeto e inclui atividades explícitas de gerenciamento de riscos para sua redução. A única alternativa que não apresenta nenhuma ligação com o que estudamos é a alternativa C, NÃO existe essa divisão em três setores, sendo: Definição de objetivos, Desenvolvimento e validação, Planejamento. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 43

Gabarito: Letra C 26. (CESPE 2011 MEC Analista de Sistemas) No modelo de prototipação, o processo de desenvolvimento de software é modelado como uma sequência linear de fases, enfatizando um ciclo de desenvolvimento de breve duração. Sequência linear de fases? Lembra do que eu disse: A prototipagem é um processo iterativo, sendo que é muito utilizado nas versões iniciais de desenvolvimento de um software, ajudando na compreensão do software como um todo. Gabarito: Errado 27. (FUMARC 2012 TJ-MG Oficial Judiciário - D) Em relação a prototipagem, o protótipo ajuda no entendimento dos requisitos do sistema. Lembrando: A prototipagem é muito comum em cenários onde os requisitos não são bem conhecidos, através da prototipagem conseguimos compreender melhor os requisitos com o cliente. Gabarito: Correto 28. (FGV 2010 FIOCRUZ Tecnologista em Saúde - B) Como modelo evolucionário do processo de software, uma característica da prototipagem é configurar um processo iterativo e rápido de desenvolvimento. Simples não é verdade. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 44

A prototipagem é um modelo evolucionário e iterativo, que traz uma característica de rapidez no desenvolvimento do software. Gabarito: Correto www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 45

Bibliografia PRESSMAN, Roger S. Engenharia de Software: Uma abordagem profissional, 7ª. Edição. São Paulo: Pearson Makron Books, 2011. SOMMERVILLE, Ian. Engenharia de Software, 8ª. Edição. São Paulo: Pearson Addison Wesley, 2007. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 46

Lista das Questões Apresentadas na Aula 1. (FCC 2014 TRT 16 Região Analista Judiciário Tecnologia da Informação - III) O modelo baseado em componentes, baseia-se na existência de um número significativo de partes reusáveis. O processo de desenvolvimento do sistema enfoca a integração destas partes, ao invés de desenvolvê-las a partir do zero. 2. (CESPE - 2016 TER-PE - Técnico Judiciário Programação de Sistemas) Assinale a opção que apresenta modelos de desenvolvimento de software. a) Paradigma imperativo e scrum. b) Modelo em cascata, DFD e paradigma concorrente. c) Modelo em cascata, modelo de componentes e modelo evolucionário. d) Transformação formal e PMP. e) Scrum e JPA. 3. (CESPE 2010 TER (BA) Técnico Judiciário Tecnologia da Informação) Na engenharia de software baseada em componentes, na qual se supõe que partes do sistema já existam, o processo de desenvolvimento concentra-se mais na integração dessas partes que no seu desenvolvimento a partir do início. Essa abordagem é baseada em reúso para o desenvolvimento de sistemas de software. 4. (FEPESE 2014 MPE-SC Analista de Tecnologia da Informação) O modelo de processo de software no qual uma implementação inicial é exposta ao usuário para que possam ser realizados refinamentos posteriores que representam novas versões www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 47

do sistema é conhecido como modelo de engenharia de software baseado em componentes. 5. (Quadrix - 2015 Cobra (Banco do Brasil) - Analista de Operações Requisitos e Testes - B) Um dos ciclos de vida da engenharia de software bastante utilizado é o modelo incremental, que direciona para o reuso de software, com componentes desenvolvidos ou de mercado, com a redução no tempo do ciclo de desenvolvimento. 6. (CESPE 2013 MPOG Técnico de nível Superior Tecnologia - Modificada) Uma das técnicas utilizadas para reduzir a ambiguidade de requisitos em tipos abstratos de dados é o uso de notações baseadas em linguagens formais matemáticas, como a abordagem algébrica e os métodos formais. 7. (CESGRANRIO 2016 TCE-PR Analista de Controle - Tecnologia da Informação) No modelo iterativo de desenvolvimento de software, as atividades são dispostas em estágios sequênciais. 8. (CESPE 2014 ANTAQ Analista de Sistemas e Negócios) O processo de desenvolvimento iterativo e incremental apresenta dificuldades para dar visibilidade ao processo. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 48

9. (CESPE 2014 ANATEL Analista Administrativo Desenvolvimento de Sistemas) Nos processos iterativos de desenvolvimento de software, o tratamento de mudanças em requisitos deve ser priorizado com a realização de um processo formal de gerenciamento de mudanças. 10. (CESPE 2013 BACEN Analista de Sistemas) Na abordagem incremental, o sistema é dividido em subsistemas por funcionalidades. Após a identificação das funcionalidades a serem entregues no primeiro incremento, novas funcionalidades serão adicionadas a cada versão. 11. (FUNCAB 2014 MDA Analista de Sistemas) São características do desenvolvimento rápido de aplicações (RAD), EXCETO: a) Construção baseada em componentes. b) Utilização de equipes enxutas, mesmo em projetos grandes. c) Aplicação em desenvolvimento de sistemas de informação. d) Desenvolvimento extramamente curto. e) Processo com desenvolvimento de software incremental. 12. (FGV 2010 FIOCRUZ Tecnologista em Saúde) Rapid Application Development (RAD) é um modelo de processo de software incremental que enfatiza um ciclo de desenvolvimento curto, com o uso de uma abordagem de construção baseada em componentes. Nesse modelo, três das principais fases são abrangidas pelas modelagens: a) do negócio, dos recursos financeiros e das funções gerenciais. b) do gerenciamento, dos recursos de TI e dos processos. c) do planejamento, dos dados e das funções gerenciais. d) do planejamento, dos recursos de TI e dos projetos. e) do negócio, dos dados e dos processos. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 49

13. (Cespe 2008 TST Analista Judiciário Tecnologia da Informação) O modelo RAD (Rapid Application Development) consiste em uma forma de prototipação para esclarecer dúvidas da especificação do software. 14. (Cespe 2013 TRT 17 Região Analista de Sistemas) O objetivo do RAD é separar os modelos da visualização e do controle. Ele fornece o controlador e facilita a escrita de moldes padronizados para a camada de visualização. 15. (FUNRIO - 2016 IF-PA Analista de Tecnologia) Um modelo de desenvolvimento de software intercala as atividades de especificação, desenvolvimento e validação. Ele permite desenvolver rapidamente um sistema inicial a partir de especificações abstratas, que são então refinadas com informações do cliente, para produzir um sistema que atenda suas necessidades. Esse modelo é conhecido como desenvolvimento: a) Em espiral. b) em cascata. c) evolucionário. d) formal de sistemas. e) orientado a reuso. 16. (FGV 2015 TCM-SP Agente de Fiscalização Tecnologia da Informação) Software, assim como todos os sistemas complexos, evolui ao longo do tempo. Modelos de processos evolucionários www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 50

reconhecem a natureza iterativa e incremental da maioria dos projetos de engenharia de software e são projetados para adequar mudanças. Os modelos a serem utilizados em um processo evolucionário são: a) cascata e modelo V; b) prototipação e modelo espiral; c) concorrente e métodos formais; d) incremental e baseado em componentes; e) processo unificado e orientado a aspectos. 17. (CESGRANRIO 2014 Petrobrás Tecnico de Informática Júnior) Um técnico de informática, com o objetivo de agilizar o desenvolvimento de um software, escolheu o desenvolvimento evolucionário, uma abordagem da área de Engenharia de Software, que: a) facilita a produção de sistemas bem estruturados, privilegiando um processo de mudanças contínuas, cada vez mais fáceis e baratas. b) Se baseia na existência de um número significativo de componentes reusáveis, num processo de desenvolvimento que enfoca a integração desses componentes, em vez de desenvolvê-los a partir do zero. c) considera como atividades fundamentais do processo a especificação, o desenvolvimento, a validação e a evolução, representado-as como fases de processo separadas, sendo que para uma fase ser iniciada, a outra deve estar completamente terminada. d) é mutuamente exclusiva com o modelo em cascata e de Engenharia de Software baseada em componentes, sendo que os subsistemas contidos em um sistema maior precisam ser desenvolvidos, usando a mesma abordagem ou modelo. e) intercala as atividades de especificação, desenvolvimento e validação, permitindo que um sistema inicial seja desenvolvido rapidamente, baseado em especificações abstratas. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 51

18. (CESPE 2010 SERPRO Analista área: Desenvolvimento de Sistemas) O modelo em espiral de ciclo de vida de software é iterativo e incremental, uma vez que a mesma sequência de atividades relacionadas à produção de software é realizada a cada ciclo da espiral. 19. (CESPE 2013 STF Técnico Judiciário Tecnologia da Informação) O processo de software fundamentado no modelo em espiral apresenta o processo em loops compostos basicamente por setores, como, por exemplo, definição de objetivos, avaliação de riscos, planejamento e desenvolvimento e avaliação. 20. (CS-UFG 2014 UEAP Analista de Tecnologia) No modelo espiral de Boehm, o processo de software é representado como uma espiral e não como uma sequência de atividades com retornos de uma para outra. O modelo espiral de Boehm é a) um framework de processo de software dirigido a riscos. b) dividido em três setores: definição de objetivos, desenvolvimento e planejamento. c) pouco tolerante a mudanças ao longo do processo de software. d) construído de forma que a volta mais externa define o início do processo de software. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 52

21. (FCC 2010 MPE-RN Analista de Tecnologia da Informação) No modelo de desenvolvimento de software em espiral, cada loop da espiral representa: a) a necessidade de retornar ao início da fase em que se encontra. b) um processo de reengenharia. c) uma disciplina de software. d) uma fase do processo de software. e) uma atividade paralela. 22. (FCC 2010 BAHIAGÁS Analista de Sistemas) No modelo em espiral do processo de software cada loop na espiral representa a) uma disciplina de requisitos. b) um enfoque de banco de dados. c) uma tomada de decisão. d) uma fase do processo. e) um ciclo de programa. 23. (FUNCAB 2010 PRODAM-AM Analista de Tecnologia) Qual das alternativas a seguir corresponde ao modelo de processo, proposto no final da década de 80, que tem como principais características ser evolucionário, iterativo e focado na redução dos riscos? a) Modelo em Espiral. b) Modelo em Cascata. c) Modelo em V. d) ModeloTransformacional. e) Modelo de Especificação Operacional. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 53

24. (CESGRANRIO 2011 FINEP Analista de Desenvolvimento de Sistemas) O modelo de processo de desenvolvimento de software que combina as atividades de desenvolvimento com o gerenciamento de risco é o Modelo a) Transformacional b) de Especificação Operacional c) em V d) em Cascata e) em Espiral 25. (AOCP 2014 UFGD Analista de Tecnologia da Informação) Sobre o modelo espiral de Boehm, assinale a alternativa INCORRETA: a) É um framework de processo de software dirigido a riscos. b) Neste modelo, o processo de software é representado como uma espiral. Cada volta na espiral representa uma fase do processo de software. c) Neste modelo, cada volta da espiral é dividida em três setores, sendo: Definição de objetivos, Desenvolvimento e validação, Planejamento. d) Neste modelo, a volta mais interna pode preocupar-se com a viabilidade do sistema. e) Neste modelo, já uma combinação de prevenção e tolerância a mudanças, assume que mudanças são um resultado de riscos de projeto e inclui atividades explícitas de gerenciamento de riscos para sua redução. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 54

26. (CESPE 2011 MEC Analista de Sistemas) No modelo de prototipação, o processo de desenvolvimento de software é modelado como uma sequência linear de fases, enfatizando um ciclo de desenvolvimento de breve duração. 27. (FUMARC 2012 TJ-MG Oficial Judiciário - D) Em relação a prototipagem, o protótipo ajuda no entendimento dos requisitos do sistema. 28. (FGV 2010 FIOCRUZ Tecnologista em Saúde - B) Como modelo evolucionário do processo de software, uma característica da prototipagem é configurar um processo iterativo e rápido de desenvolvimento. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 55

Gabarito 1. Correto. 2. Letra C. 3. Correto. 4. Errado. 5. Errado. 24. Letra E 25. Letra C 26. Errado 27. Correto 28. Correto 6. Correto. 7. Errado. 8. Errado. 9. Errado. 10. Correto. 11. Letra B. 12. Letra E. 13. Errado. 14. Errado. 15. Letra C. 16. Letra B. 17. Letra E. 18. Errado. 19. Correto. 20. Letra A. 21. Letra D. 22. Letra D. 23. Letra A. www.pontodosconcursos.com.br Prof. Pedro Henrique Chagas Freitas 56

www.pontodosconcursos.com.br Prof.. Pedro Henrique Chagas Freitas 57