Baixe o app para aproveitar ainda mais
Prévia do material em texto
Livro Eletrônico Aula 16 Tecnologia da Informação p/ SEFAZ-GO (Auditor Fiscal) Com videoaulas - Pós-Edital Celson Carlos Martins Junior, Diego Carvalho, Fábio Alves, Thiago Rodrigues Cavalcanti, Victor Dalton SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 1 de 93 AULA 16 SUMÁRIO PÁGINA Apresentação 01 - Rapid Application Development (RAD) 02 - Modelos Evolucionários 11 - Modelos em Prototipagem 22 - Modelo em Espiral 35 - Modelo baseado em Componentes 60 - Modelo de Métodos Formais 68 - Modelos Orientados a Aspectos 71 Lista de Exercícios Comentados 76 Gabarito 92 SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 2 de 93 RAPID APPLICATION DEVELOPMENT (RAD) O RAD é um modelo iterativo e incremental, que enfatiza o ciclo de desenvolvimento curto (60 a 90 dias). Esse desenvolvimento ocorre tão rápido, porque é utilizada o reúso de componentes a exaustão. Como muitos componentes já estão testados, pode-se reduzir o tempo total de desenvolvimento. As fases são mostradas na imagem abaixo: Modelagem de Negócio: o fluxo de informações entre as funções de negócio é modelado de modo a responder que informação direciona o processo de negócio; que informação é gerada; quem gera essa informação; para onde vai a informação gerada; e, por fim, quem processa a informação. Modelagem de Dados: o fluxo de informação definido na fase de modelagem de negócio é refinado em um conjunto de objetos de dados que são necessários para suportar o negócio. Os atributos de cada objeto são identificados e os relacionamentos entre esses objetos são definidos. Modelagem de Processo: os objetos de dados definidos na modelagem de dados são transformados para conseguir o fluxo necessário para implementar uma função do negócio. Descrições do processamento são criadas para adicionar, modificar, descartar ou recuperar um objeto de dados. Geração da Aplicação: considera o uso de técnicas de quarta geração, trabalha com a reutilização de componentes de programa existentes quando ==d2b7e== SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 3 de 93 possível, ou cria componentes reusáveis. São usadas ferramentas automatizadas para facilitar a construção do software. Teste e Modificação: como o processo enfatiza o reúso, muitos componentes já estão testados e isso reduz o tempo total de teste. No entanto, os novos componentes devem ser testados e todas as interfaces devem ser exaustivamente exercitadas para colocar o resultado em produção. Detalhe interessante: Modelagem de Negócio, Dados e Processos são frequentemente condensados na etapa de Modelagem e Geração da Aplicação, Teste e Modificação são frequentemente condensados na etapa de Construção. Lembrando que, como pode ser observado pela imagem acima, essas etapas podem ser distribuídas por diversas equipes. Neste modelo, há uma interação direta e intensa com o usuário e uso frequente de programação de banco de dados e ferramentas de apoio ao desenvolvimento, como geradores de telas e relatórios. Mais abaixo, pode-se ver as vantagens e SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 4 de 93 desvantagens do modelo. Galera, ele não pode ser utilizado em qualquer situação. Recomenda-se utilizá-lo quando: a aplicação não necessita de softwares auxiliares (standalone); é possível fazer uso de classes pré-existentes; a performance não é o mais importante; o risco técnico é reduzido; a distribuição do produto no mercado é pequena; o escopo do projeto é restrito; o sistema pode ser dividido em vários módulos; o risco de mudança tecnológica é baixo. VANTAGENS DESVANTAGENS Permite o desenvolvimento rápido e/ou a prototipagem de aplicações. Exige recursos humanos caros e experientes. Criação e reutilização de componentes. O envolvimento com o usuário tem que ser ativo. Desenvolvimento é conduzido em um nível mais alto de abstração. Comprometimento da equipe do projeto. Grande redução de codificação manual com wizards. Custo alto do conjunto de ferramentas e hardware para rodar a aplicação; Cada função pode ser direcionada para a uma equipe separada. Mais difícil de acompanhar o projeto. Maior flexibilidade (desenvolvedores podem reprojetar à vontade). Perda de precisão científica (pela falta de métodos formais). Provável custo reduzido (tempo é dinheiro e também devido ao reuso). Pode levar ao retorno das práticas caóticas no desenvolvimento. Tempo de desenvolvimento curto. Pode construir funções desnecessárias. Protótipos permitem uma visualização mais cedo. Requisitos podem não se encaixar (conflitos entre desenvolvedores e clientes). Envolvimento maior do usuário. Padronização (aparência diferente entre os módulos e componentes) SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 5 de 93 (CESPE ² 2008 ² TST - Analista Judiciário - Análise de Sistemas) O modelo RAD (Rapid Application Development) consiste em uma forma de prototipação para esclarecer dúvidas da especificação do software. Comentários: RAD é um processo de desenvolvimento de software iterativo e incremental que enfatiza um ciclo de desenvolvimento curto. Ele não é uma forma de prototipação, apesar de poder utilizá-la. Gabarito: E (CESPE ² 2004 ² BASA ² Analista de Sistemas) O modelo embasado em prototipagem é um modelo de processo incremental que enfatiza um ciclo de desenvolvimento extremamente curto. A primeira fase do processo é a modelagem de negócio e a última é a fase de teste e entrega. Comentários: O RAD é um modelo iterativo e incremental, que enfatiza o ciclo de desenvolvimento curto (60 a 90 dias). Esse desenvolvimento ocorre tão rápido, porque é utilizada o reúso de componentes a exaustão. Como muitos componentes já estão testados, pode-se reduzir o tempo total de desenvolvimento. As fases são mostradas na imagem abaixo: Ciclo de desenvolvimento curto? Isso é RAD e, não, Prototipagem! Gabarito: E (CESPE ² 2005 ² MPE/AM ² Analista Judiciário ² Analista de Sistemas) O modelo RAD (rapid application development) é específico para projetos de software que empregam linguagens de programação de terceira geração. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 6 de 93 Comentários: Geração da Aplicação: considera o uso de técnicas de quarta geração, trabalha com a reutilização de componentes de programa existentes quando possível, ou cria componentes reusáveis. São usadas ferramentas automatizadas para facilitar a construção do software. Não existe qualquer limitação quanto a isso! Em geral, ele mais utilizado com linguagens de programação de quarta geração, mas não se limita a elas. Lembrando que,grosso modo, as linguagens de 1ª Geração são as Linguagens de Máquina (Ex: Binário); 2ª Geração são Linguagens de Montagem (Ex: Assembler); as Linguagens de 3ª Geração são as Linguagens de Alto Nível (Ex: Java, C++, etc); e as Linguagens de 4ª Geração são as Linguagens de Altíssimo Nível com objetivos específicos (Ex: SQL para Bancos de Dados, APEX para RAD, MatLab para cálculo numérico). Gabarito: E (CESPE ² 2011 ² AL/ES ² Analista de Sistemas ² O ciclo de vida RAD (Rapid Application Development), por privilegiar a rapidez do desenvolvimento, não possui etapa de modelagem. Comentários: Como não? Existe Modelagem de Negócio, Dados e Processo! Gabarito: E (CESPE ² 2005 ² IGEPREV ² Analista de Sistemas ² O modelo Rapid Application Development (RAD) é apropriado para projetos que envolvem grandes riscos técnicos. Comentários: Pelo contrário, é apropriado para projetos que envolvem pequenos riscos técnicos. Gabarito: E (CESPE ² 2003 ² IPEA ² Analista de Sistemas) O RAD (Rapid Application Development) é um modelo de processo de software incremental que assume SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 7 de 93 um ciclo de desenvolvimento curto e utiliza uma abordagem de construção com base em componentes. Comentários: Perfeito, é exatamente isso! Gabarito: C (CESPE ² 2008 ² TRE/MA ² Analista de Sistemas ² O modelo RAD (Rapid Application Development) é uma adaptação de alta velocidade do modelo sequencial linear, conseguido por meio da construção embasada em componentes. Comentários: O RAD (Rapid Application Development) realmente é uma adaptação de alta velocidade do modelo sequencial linear (cascata). Além disso, ele se utiliza realmente de componentes prontos para o desenvolvimento rápido. Por que ele é considerado uma adaptação do modelo em cascata? Porque ele funciona como vários modelos em cascata trabalhando iterativamente. E qual o nome disso? Isso se chama Modelo iterativo e incremental! Gabarito: C (CESPE ² 2008 ² TRE/MA ² Analista de Sistemas ² O uso de uma abordagem de construção embasada em componentes faz que o desenvolvimento no modelo RAD (Rapid Application Development) seja considerado mais rápido. Comentários: Perfeito, ela se utiliza de uma construção baseada em componentes, fazendo com que o desenvolvimento seja mais rápido. Gabarito: C (CESPE ² 2013 ² TRT/17 ² 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. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 8 de 93 Comentários: Galera, esse item não faz qualquer sentido! Gabarito: E 10. (CESPE ² ² MPE/AM ² Analista de Sistemas) O modelo de desenvolvimento incremental combina características do modelo de desenvolvimento sequencial linear com características do modelo RAD, embora isso resulte em projetos que sistematicamente apresentam maior duração que aqueles feitos com os dois modelos de desenvolvimento originais. Comentários: Modelo Incremental não combina características do Modelo Sequencial Linear com RAD. Aliás, RAD é Incremental! Gabarito: E 11. (CESPE ² 2005 ² ANS ² Analista Administrativ ² Processamento de Dados) O modelo Rapid Application Development (RAD) é uma adaptação do modelo em espiral para atender a projetos de software fundamentados em componentes. Comentários: Na verdade, ele é uma adaptação de alta velocidade do modelo em cascata. Gabarito: E 12. (COPESE ² 2014 ² UFPI ² Analista de Sistemas ² Letra D) O modelo RAD (Rapid Application Development) é um modelo incremental que enfatiza um ciclo de desenvolvimento curto, sendo construído baseado em componentes. Comentários: Perfeito! Incremental? Sim! Ciclo de desenvolvimento curto? Sim! Baseado em componentes? Sim! Gabarito: C SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 9 de 93 13. (UPANET ² 2012 ² JUCEPE ² Analista de Sistemas ² Item IV) O Desenvolvimento Rápido de Aplicações (RAD ² Rapid Application Development) pode fazer uso do processo de desenvolvimento conjunto de aplicações (JAD ² Joint Application Development) para coletar dados e analisar requisitos. Comentários: Questão estranha! Pode usar o JAD? Claro! É uma técnica para levantar requisitos. Por que não poderia? Gabarito: C 14. (FGV ² 2010 ² Fiocruz ² Analista de Sistemas) 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. Comentários: No Modelo RAD a modelagem abrange três das principais fases - modelagem de negócio, modelagem de dados e modelagem de processos - e estabelecem representações de projeto que servem com base para a atividade de construção do RAD. Gabarito: E 15. (VUNESP ² 4 ² PRODEST/ES ² Analista de Sistemas) No modelo de ciclo de vida de software conhecido como RAD (Rapid Application Development) há duas atividades, cujas tarefas podem ser distribuídas por diversas equipes. Essas atividades são: a) comunicação e modelagem b) comunicação e planejamento. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 10 de 93 c) integração e construção. d) modelagem e construção. e) planejamento e integração. Comentários: Detalhe interessante: Modelagem de Negócio, Dados e Processos são frequentemente condensados na etapa de Modelagem e Geração da Aplicação, Teste e Modificação são frequentemente condensados na etapa de Construção. Lembrando que, como pode ser observado pela imagem acima, essas etapas podem ser distribuídas por diversas equipes. Conforme vimos em aula, trata-se de Modelagem e Construção. Gabarito: D 16. (FJPF ² ² CONAB ² Analista de Sistemas) O modelo de processo de desenvolvimento de software incremental que enfatiza um ciclo de desenvolvimento extremamente curto, que compreende as fases de modelagem do negócio, modelagem dos dados, modelagem do processo, geração da aplicação, além de teste e entrega, e que o desenvolvimento é conseguido pelo uso de construção baseada em componentes, é conhecido como modelo: a) seqüencial linear; b) RAD (Rapid Application Development); c) de prototipagem; d) espiral; e) de desenvolvimento concorrente. Comentários: Essa ficou fácil: claro que é o RAD! Gabarito: B ACERTEI ERREI SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 11 de 93 MODELOS EVOLUCIONÁRIOSAntes de começarmos, eu acho oportuno dizer que a maioria dos autores consideram o Modelo Evolucionário como um tipo de Modelo Iterativo. Um dos nossos guias, Pressman diz: Os modelos evolucionários são iterativos, apresentando características que possibilitam desenvolver versões cada vez mais completas do software. Agora é hora de ver isso melhor... Vocês sabem que mudanças são extremamente comuns, i.e., as necessidades de negócio e de produto mudam frequentemente, tornando inadequado seguir um planejamento em linha reta de um produto final. Hoje em dia, nós vivemos em função do tempo! É raro um cliente exigir um produto de software com prazos folgados e tranquilos ² em geral, o cliente quer o produto para ontem! Todas essas variáveis, prazos apertados, determinados pelo mercado, tornam impossível completar um produto de software abrangente, porém uma versão limitada tem de ser introduzida para aliviar e/ou atender às pressões comerciais ou da concorrência. E é nessa hora que entra o conceito de Modelos Evolucionários e suas implementações. Dessa forma, podemos afirmar que o Modelo Evolucionário se baseia na ideia de desenvolvimento de uma implementação inicial, expondo o resultado aos comentários do usuário e refinando esse resultado por meio de várias versões até que seja desenvolvido um sistema adequado. As implementações mais famosas do Modelo Evolucionário são: Prototipagem e Espiral! SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 12 de 93 Em geral, a abordagem evolucionária é mais eficaz que abordagem em cascata. Por que? Porque a especificação pode ser desenvolvida de forma incremental. À medida que os usuários compreendem melhor seu problema, isso pode ser refletido no sistema de software. No entanto, essa abordagem possui dois problemas (inclusive, já caíram no Senado Federal): O processo não é visível: se os sistemas são desenvolvidos rapidamente, não é viável economicamente produzir documentos para cada versão do sistema. Os sistemas são frequentemente mal estruturados: mudanças contínuas tendem a corromper a estrutura do software e tornar mudanças difíceis e caras. O Pressman recomenda o Desenvolvimento Evolucionário para sistemas de pequeno e médio porte (até 500 mil linhas de código). Já para sistemas maiores e mais complexos, esses problemas supracitados tornam-se mais graves. É difícil estabelecer uma arquitetura estável, tornando difícil integrar as contribuições das equipes. Pessoal, isso é só uma estimativa! Um esboço simples do processo de desenvolvimento evolucionário é apresentado acima. As atividades de especificação, desenvolvimento e validação são intercaladas, em vez de separadas, com feedback rápido que permeia as atividades. Desenvolve- se rapidamente uma implementação inicial do software a partir de especificações bastante abstratas e são feitas modificações de acordo com sua avaliação. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 13 de 93 Cada versão do programa herda as melhores características das versões anteriores. Cada versão é refinada com base no feedback recebido para produzir um sistema que satisfaça suas necessidades. Neste ponto, o sistema pode ser entregue ou pode ser reimplementado utilizando uma abordagem mais estruturada para aumentar a robustez e a facilidade de manutenções. As atividades de especificação, desenvolvimento e validação são concorrentes e apresentam um forte feedback entre si, como mostra a imagem apresentada anteriormente. Por fim, é bom esclarecer a diferença entre Modelo Incremental Evolucionário! Pressman afirma que o primeiro tem o objetivo de apresentar um produto de trabalho ou uma funcionalidade operacional a cada iteração. Já o segundo, durante as primeiras iterações, pode gerar versões compostas apenas por modelos em papel ou protótipos. É beeeem sutil! Em suma, um Modelo Evolucionário não vai necessariamente liberar funcionalidades a cada iteração como ocorre no Modelo Incremental, logo alguns autores não consideram, por exemplo, o Modelo Espiral como um Modelo Incremental, mas como Evolucionário. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 14 de 93 (FGV ² 2008 ² Senado Federal ² Analista de Sistemas) No modelo evolucionário, a mudança constante tende a corromper a estrutura do software. Comentários: Em geral, a abordagem evolucionária é mais eficaz que abordagem em cascata. Por que? Porque a especificação pode ser desenvolvida de forma incremental. À medida que os usuários compreendem melhor seu problema, isso pode ser refletido no sistema de software. Essa abordagem possui dois problemas (inclusive, já caíram no Senado Federal): O processo não é visível: se os sistemas são desenvolvidos rapidamente, não é viável economicamente produzir documentos para cada versão do sistema. Os sistemas são frequentemente mal estruturados: mudanças contínuas tendem a corromper a estrutura do software e tornar mudanças difíceis e caras. Conforme vimos em aula, é exatamente isso que acontece! Gabarito: C (CESPE ² 2008 ² TJ/DF ² Analista de Sistemas) A prototipação evolucionária não gera problemas de manutenção de sistema porque o desenvolvimento é rápido e não sofre grandes mudanças. Comentários: Em geral, a abordagem evolucionária é mais eficaz que abordagem em cascata. Por que? Porque a especificação pode ser desenvolvida de forma incremental. À medida que os usuários compreendem melhor seu problema, isso pode ser refletido no sistema de software. Essa abordagem possui dois problemas (inclusive, já caíram no Senado Federal): SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 15 de 93 O processo não é visível: se os sistemas são desenvolvidos rapidamente, não é viável economicamente produzir documentos para cada versão do sistema. Os sistemas são frequentemente mal estruturados: mudanças contínuas tendem a corromper a estrutura do software e tornar mudanças difíceis e caras. Conforme vimos em aula, gera problemas, sim! Muitas mudanças tendem a corromper a estrutura do software e isso as tornam difíceis e caras. Observação: o ideal seria que a questão dissesse Modelo ou Abordagem Evolucionária e, não, Prototipação Evolucionária. Gabarito: E (FCC ² ² DPE/SP ² Analista de Sistemas) No desenvolvimento de software, podem ser utilizados os chamados modelos evolucionários, cujo objetivo é lidar com produtos que possam evoluir ao longo do tempo. Assinale a alternativa que contém APENAS modelos evolucionários de desenvolvimento de software. a) UML e de qualidade. b) Componentes e arquétipo. c) Prototipagem e espiral. d) Redes de Petri e certificação. e) Semântico e validação. Comentários: Galera, a imagem responde à pergunta: Prototipagem e Espiral. Gabarito: C SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 16 de 93 (IESES ² ² CEGÁS ² Analista de Sistemas) Para Sommerville (2007) modelos evolucionários se caracterizampor sua iteratividade e permitem o desenvolvimento de versões de software cada vez mais completas. Assinale a alternativa que caracteriza os dois tipos processos mais comuns destes modelos: a) RUP e Cascata. b) Cascata e incremental. c) RAID e Cascata. d) Espiral e Prototipação. Comentários: Mais uma vez: Espiral e Prototipação. Gabarito: D (CESPE ² 2011 ² FUB ² Analista de Sistemas) Os diversos modelos de processo de software disponíveis permitem a representação abstrata de um processo de software sob diferentes perspectivas. No modelo evolucionário, sob a perspectiva da arquitetura, a velocidade de desenvolvimento faz que a produção de documentos que reflitam cada versão do sistema seja economicamente inviável, gerando problemas na validação independente de sistemas. Comentários: Em geral, a abordagem evolucionária é mais eficaz que abordagem em cascata. Por que? Porque a especificação pode ser desenvolvida de forma incremental. À medida que os usuários compreendem melhor seu problema, isso pode ser refletido no SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 17 de 93 sistema de software. Essa abordagem possui dois problemas (inclusive, já caíram no Senado Federal): O processo não é visível: se os sistemas são desenvolvidos rapidamente, não é viável economicamente produzir documentos para cada versão do sistema. Os sistemas são frequentemente mal estruturados: mudanças contínuas tendem a corromper a estrutura do software e tornar mudanças difíceis e caras. Conforme vimos em aula, realmente não é viável economicamente produzir documentos para cada versão do sistema. Gabarito: C (CESPE ² 2014 ² MEC ² Analista de Sistemas) No desenvolvimento de software de grande porte, não se usam, em conjunto, os seguintes modelos de processo de software genéricos: modelo em cascata, desenvolvimento evolucionário e engenharia de software embasada em computador. Comentários: De acordo com Sommerville, os modelos genéricos de processos de software amplamente utilizados são o modelo em cascata, o modelo de desenvolvimento evolucionário e o modelo de desenvolvimento baseado em componentes. Estes, não são mutuamente exclusivos e comumente são utilizados em conjunto, especialmente para desenvolvimento de sistemas de grande porte. Nós vimos em aula que o modelo evolucionário, por exemplo, não é recomendado para sistemas de grande porte. No entanto, a questão trata da utilização desses três modelos em conjunto ² R�TXH�p�SRVVtYHO��1R�HQWDQWR��QmR�H[LVWH�´engenharia de software embasada em computadorµ� ² R� TXH� H[LVWH� p� ´engenharia de software baseada em componentesµ� Gabarito: E (CESGRANRIO ² 2014 ² PETROBRÁS ² Analista de Sistemas) 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: SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 18 de 93 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. Comentários: Um esboço simples do processo de desenvolvimento evolucionário é apresentado acima. As atividades de especificação, desenvolvimento e validação são intercaladas, em vez de separadas, com feedback rápido que permeia as atividades. Desenvolve- se rapidamente uma implementação inicial do software a partir de especificações bastante abstratas e são feitas modificações de acordo com sua avaliação. Conforme vimos em aula, ele de fato intercala atividades de especificação, desenvolvimento e validação, permitindo que um sistema inicial seja desenvolvido de maneira muito rápida baseado em especificações abstratas. Gabarito: E (ESAF ² 2009 ² ANA ² Analista de Sistemas) O modelo de processo de software caracterizado por intercalar as atividades de especificação, desenvolvimento e validação, denomina-se: a) modelo de workflow. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 19 de 93 b) modelo de fluxo de dados. c) desenvolvimento evolucionário. d) transformação formal. e) modelo em cascata. Comentários: Um esboço simples do processo de desenvolvimento evolucionário é apresentado acima. As atividades de especificação, desenvolvimento e validação são intercaladas, em vez de separadas, com feedback rápido que permeia as atividades. Desenvolve- se rapidamente uma implementação inicial do software a partir de especificações bastante abstratas e são feitas modificações de acordo com sua avaliação. Conforme vimos em aula, só pode ser o modelo (ou desenvolvimento) evolucionário. Gabarito: C (FEPESE ² 2014 ² MPE/SC ² Analista de Sistemas) Assinale a alternativa abaixo que melhor identifica 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. As atividades de especificação, desenvolvimento e validação são intercaladas. a) Relational Unified Process (RUP) b) Desenvolvimento Evolucionário c) Método Ágil de Desenvolvimento d) Modelo de Desenvolvimento em Cascata e) Modelo de Engenharia de Software Baseado em Componentes Comentários: Um esboço simples do processo de desenvolvimento evolucionário é apresentado acima. As atividades de especificação, desenvolvimento e validação são intercaladas, em vez de separadas, com feedback rápido que permeia as atividades. Desenvolve- se rapidamente uma implementação inicial do software a partir de especificações bastante abstratas e são feitas modificações de acordo com sua avaliação. Conforme vimos em aula, mais uma questão parecida, só pode ser o modelo (ou desenvolvimento) evolucionário. d SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 20 de 93 Gabarito: B 10. (FCC ² 2014 ² TRT/16 ² Analista de Sistemas) Os modelos de processo são uma representação abstrata de um processo de software, que podem ser usados para explicar diferentes abordagens para o desenvolvimento de sistemas. Analise as seguintes abordagens: Desenvolvimento I : intercala as atividades de especificação, desenvolvimento e validação. Um sistema inicial é de- senvolvido rapidamente baseado em especificaçõesabstratas e depois é refinado com as entradas do cliente para produzir um produto que o satisfaça. Modelo II : considera as atividades fundamentais do processo, compreendendo especificação, desenvolvimento, validação e evolução e as representa como fases de processo separadas, tais como especificação de requisitos, projeto de software, implementação, teste etc. III: 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. Os modelos de processo genéricos descritos em I, II e III são, correta e respectivamente, associados a: a) em Espiral - Baseado em Componentes - RAD b) Evolucionário - em Cascata - Baseado em Componentes c) Baseado em Componentes - Sequencial - Refactoring d) Ágil - Sequencial - Unified Process e) em Cascata - Ágil - Refactoring Comentários: Um esboço simples do processo de desenvolvimento evolucionário é apresentado acima. As atividades de especificação, desenvolvimento e validação são intercaladas, em vez de separadas, com feedback rápido que permeia as atividades. Desenvolve- se rapidamente uma implementação inicial do software a partir de especificações bastante abstratas e são feitas modificações de acordo com sua avaliação. 2 SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 21 de 93 Conforme vimos em aula, intercala atividades de especificação, desenvolvimento e validação só pode ser o Desenvolvimento Evolucionário. Apenas com isso, nós já podemos matar a questão. Gabarito: B ACERTEI ERREI b SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 22 de 93 MODELOS EM PROTOTIPAGEM A Prototipagem é utilizada quando não se conhece bem os requisitos. É uma forma de entendê-los melhor para posteriormente desenvolver o software. Ela se configura como um processo iterativo, interativo e rápido de desenvolvimento e o protótipo serve como um mecanismo de identificação dos requisitos do software, que servirão para uma futura especificação. Um protótipo é uma versão inicial de um sistema de software utilizado para demonstrar conceitos, experimentar opções de projeto e, geralmente, conhecer mais sobre o problema e suas possíveis soluções. Assim, os custos são controlados e as partes interessadas do sistema podem experimentar o protótipo mais cedo no processo de desenvolvimento. A Prototipagem pode ocorrer de duas maneiras: Desenvolvimento Exploratório: objetivo do processo é trabalhar com o cliente para explorar os requisitos e entregar um sistema final. O desenvolvimento começa com as partes do sistema compreendidas. O sistema evolui por meio da adição de novas características propostas pelo cliente. Prototipação Throwaway: o objetivo do processo de desenvolvimento evolucionário é compreender os requisitos do cliente e, a partir disso, desenvolver melhor definição de requisitos para o sistema. O protótipo se concentra na experimentação dos requisitos mal compreendidos do cliente. 7 SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 23 de 93 Um protótipo de software pode ser utilizado em um processo de desenvolvimento de diversas maneiras! Veremos três modos possíveis de utilização: a) No processo de engenharia de requisitos, um protótipo pode ajudar na descoberta e validação dos requisitos do sistema. b) Processo de projeto do sistema, um protótipo pode ser usado para explorar soluções específicas de software e apoiar o projeto de interface com o usuário. c) No processo de teste, um protótipo pode ser usado para realizar testes completos com o sistema que será entregue para o cliente. A metodologia de Prototipagem Evolutiva (ou Evolucionária) é uma abordagem que visualiza o desenvolvimento de concepções do sistema conforme o andamento do projeto até chegar ao resultado final. Esta metodologia baseia-se na utilização de prototipagem visual ou modelos do sistema final. Estes modelos podem ser simples desenhos ou imagens do sistema. Protótipos permitem que os usuários introduzam novas ideias para os requisitos e encontrem pontos fortes e fracos no software. Ademais, protótipos podem revelar erros e omissões nos requisitos propostos, além de reduzirem o tempo e esforço de desenvolvimento, treinamento e documentação o sistema. Professor, só há vantagens? Não, há desvantagens também! Olha só... Análise insuficiente, devido a desenvolvedores que se focam só no protótipo e esquecem de analisar o problema global; usuários confundem protótipo com o sistema final, sendo que serão descartados posteriormente; documentação pode ser prejudicada; falta de visibilidade do progresso quando o sistema evolui, mas nunca termina; tempo excessivo para desenvolver o protótipo; etc. IMPORTANTE Quando uma questão não especifica o tipo de prototipação, geralmente se trata de Prototipação Throw-away/Descartável e, não, Evolucionária/Exploratória. Sommerville declara: ´8VR�R�WHUPR� prototipação no sentido de processo iterativo de desenvolvimento de um sistema experimental que QmR�p�GHVWLQDGR�j�GLVSRQLELOL]DomR�DR�FOLHQWHµ. e SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 24 de 93 Como apresenta a imagem acima, o paradigma de prototipação começa com a comunicação. Encontra-se com as partes interessadas para definir os objetivos gerais do software, identificar os requisitos conhecidos e definir áreas em que uma definição mais profunda é obrigatória. Uma iteração de prototipação é planejada rapidamente e, então, ocorre a modelagem dessa iteração. Um plano rápido se foca na representação daqueles aspectos do software que serão visíveis aos usuários finais e leva à construção do protótipo. O protótipo é implantado e avaliado pelas partes interessadas, que fornecem feedbacks que serão utilizados para refinar os requisitos. A iteração ocorre à medida que o protótipo é ajustado para satisfazer as necessidades dos diversos stakeholders. Ao mesmo tempo, ele ajuda a entender melhor o que precisa ser feito! Idealmente, o protótipo serve como um mecanismo para identificar requisitos de software. S um protótipo será construído, pode-se utilizar partes existentes de programas ou aplicar ferramentas que permitem que programas sejam gerados rapidamente. E o que fazer com o protótipo construído? Na maioria dos casos, o protótipo é inviável de ser utilizado, por ser muito lento e/ou muito grande e/ou difícil de utilizar. Em geral, os protótipos são descartados assim que os objetivos de levantamento de requisitos são alcançados. No entanto, alguns preferem refiná-los iterativamente até evoluir ao sistema final requisitado pelo usuário. Captaram? SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 25 de 93 (CESPE ² 2009 ² UNIPAMPA ² Analista de Sistemas) No modelo de desenvolvimento prototipagem, um protótipo é desenvolvido para ajudar no entendimento dos requisitosdo sistema. Comentários: A Prototipagem é utilizada quando não se conhece bem os requisitos. É uma forma de entendê-los melhor para posteriormente desenvolver o software. Ela se configura como um processo iterativo, interativo e rápido de desenvolvimento e o protótipo serve como um mecanismo de identificação dos requisitos do software, que servirão para uma futura especificação. Conforme vimos em aula, um protótipo é em geral desenvolvido para ajudar no entendimento dos requisitos do sistema. Gabarito: C (CESPE ² 2010 ² TRE/MT ² Analista de Sistemas - A metodologia de prototipagem evolutiva é uma abordagem que visualiza o desenvolvimento de concepções do sistema conforme o andamento do projeto, por meio de protótipos visuais. Comentários: A metodologia de Prototipagem Evolutiva (ou Evolucionária) é uma abordagem que visualiza o desenvolvimento de concepções do sistema conforme o andamento do projeto até chegar ao resultado final. Esta metodologia baseia-se na utilização de prototipagem visual ou modelos do sistema final. Estes modelos podem ser simples desenhos ou imagens do sistema. Conforme vimos em aula, na prototipação evolutiva, eu vou mostrando ao meu usuário funcionalidades por meio de protótipos visuais conforme o andamento do projeto. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 26 de 93 Gabarito: C (CESPE ² 2004 ² TRE/AL ² Analista de Sistemas) No modelo de prototipação, o desenvolvedor cria inicialmente um modelo de software que será posteriormente implementado. Comentários: A metodologia de Prototipagem Evolutiva (ou Evolucionária) é uma abordagem que visualiza o desenvolvimento de concepções do sistema conforme o andamento do projeto até chegar ao resultado final. Esta metodologia baseia-se na utilização de prototipagem visual ou modelos do sistema final. Estes modelos podem ser simples desenhos ou imagens do sistema. Na maioria dos casos, o protótipo é inviável de ser utilizado, por ser muito lento e/ou muito grande e/ou difícil de utilizar. Em geral, os protótipos são descartados assim que os objetivos de levantamento de requisitos são alcançados. No entanto, alguns preferem refiná-los iterativamente até evoluir ao sistema final requisitado pelo usuário. Captaram? Conforme vimos em aula, cria-se, inicialmente, um modelo do sistema final! Além disso, o protótipo pode ser implementado e se tornar esse sistema final. Galera, essa questão foi retirada literalmente do Pressman (1995): "Prototyping is a process that enables the construction of a model of the software which is to be built". Qual o problema dessa questão? Sua tradução! Pressman afirma que a Prototipação é um processo que permite ao desenvolvedor a construção de um modelo software que será construído. Em outras palavras, a prototipação é um modelo/esboço do software que posteriormente será construído. Pensem em um software qualquer! Antes de construir o software, faremos um modelo/esboço dele (não importando se iremos descartá-lo ou não). A questão não afirma em nenhum momento que o protótipo será evoluído ou descartado. Gabarito: C (CESPE ² 2007 ² TSE ² Analista de Sistemas) Um possível objetivo da prototipação é criar rapidamente um sistema experimental que possa ser avaliado por usuários finais. Um protótipo aprovado pelos usuários pode vir a ser usado como ponto de partida para a construção do sistema. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 27 de 93 Comentários: Na maioria dos casos, o protótipo é inviável de ser utilizado, por ser muito lento e/ou muito grande e/ou difícil de utilizar. Em geral, os protótipos são descartados assim que os objetivos de levantamento de requisitos são alcançados. No entanto, alguns preferem refiná-los iterativamente até evoluir ao sistema final requisitado pelo usuário. Captaram? Conforme vimos em aula, é uma alternativa, i.e., posso usá-lo como ponto de partida para construção do sistema, em vez de descartá-lo! Gabarito: C (CESPE ² 2008 ² MPE/AM ² Analista de Sistemas) No modelo de prototipação, a especificação de requisitos tem pouca importância, pois o software é continuamente adaptado em função dos desejos do usuário. Comentários: A Prototipagem é utilizada quando não se conhece bem os requisitos. É uma forma de entendê-los melhor para posteriormente desenvolver o software. Ela se configura como um processo iterativo, interativo e rápido de desenvolvimento e o protótipo serve como um mecanismo de identificação dos requisitos do software, que servirão para uma futura especificação. Conforme vimos em aula, a prototipação serve não só para o levantamento de requisitos, mas também para sua especificação. Galera, como não tem importância? É para isso que ele serve! Gabarito: E (CESPE ² 2008 ² TJ/DF ² Analista de Sistemas) Uma vantagem da prototipação é promover a participação e o comprometimento do usuário em relação ao sistema em desenvolvimento. Comentários: Protótipos permitem que os usuários introduzam novas ideias para os requisitos e encontrem pontos fortes e fracos no software. Ademais, protótipos podem revelar erros e omissões nos requisitos propostos, além de reduzirem o tempo de SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 28 de 93 desenvolvimento, treinamento e documentação o sistema. Professor, só há vantagens? Não, há desvantagens também! Olha só... Conforme vimos em aula, percebam que a prototipação promove uma grande participação dos usuários no processo de desenvolvimento. Gabarito: C (CESPE ² 2008 ² TJ/DF ² Analista de Sistemas) A prototipação de um software é uma técnica de desenvolvimento não-interativa porque o teste do sistema só ocorre na versão final. Comentários: A Prototipagem é utilizada quando não se conhece bem os requisitos. É uma forma de entendê-los melhor para posteriormente desenvolver o software. Ela se configura como um processo iterativo, interativo e rápido de desenvolvimento e o protótipo serve como um mecanismo de identificação dos requisitos do software, que servirão para uma futura especificação. Conforme vimos em aula, ela é tanto iterativa (repete-se diversas vezes) quanto interativa (conta com a participação ativa dos usuários). Gabarito: E (CESPE ² 2008 ² TJ/DF ² Analista de Sistemas) Uma das finalidades da prototipação é reduzir o esforço de desenvolvimento de um software. Comentários: Protótipos permitem que os usuários introduzam novas ideias para os requisitos e encontrem pontos fortes e fracos no software. Ademais, protótipos podem revelar erros e omissões nos requisitos propostos, além de reduzirem o tempo e esforço de desenvolvimento, treinamento e documentação o sistema. Professor, só há vantagens? Não, há desvantagens também! Olha só... Conforme vimos em aula, a questão está perfeita! Ela realmente ajuda a reduzir o esforço! A prototipação (não importa qual tipo) ajuda a esclarecer requisitos. Caso eu não faça um protótipo, pode ocorrer de eu não compreender bem requisitos obscuros e, eventualmente, eu ter que refazer o desenvolvimento. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.brPág. 29 de 93 Gabarito: C (CESPE ² 2010 ² INMETRO ² Analista de Sistemas ² Um dos benefícios da prototipação é a documentação normalmente gerada, que facilita a manutenção dos sistemas a longo prazo e a elaboração de casos de teste. Comentários: Análise insuficiente, devido a desenvolvedores que se focam só no protótipo e esquecem de analisar o problema global; usuários confundem protótipo com o sistema final, sendo que serão descartados posteriormente; documentação pode ser prejudicada; falta de visibilidade do progresso quando o sistema evolui, mas nunca termina; tempo excessivo para desenvolver o protótipo; etc. Conforme vimos em aula, é justamente o inverso! A documentação geralmente é prejudicada quando se utiliza a prototipação! Imaginem só: você precisa entregar algo rápido para o usuário verificar se satisfaz seus requisitos, não é viável fazer uma documentação formal. Gabarito: E 10. (CESPE ² 2010 ² INMETRO ² Analista de Sistemas ² Um dos riscos da prototipação é o usuário confundir o protótipo com o sistema verdadeiro e criar falsas expectativas com relação a prazos e recursos. Comentários: Análise insuficiente, devido a desenvolvedores que se focam só no protótipo e esquecem de analisar o problema global; usuários confundem protótipo com o sistema final, sendo que serão descartados posteriormente; documentação pode ser prejudicada; falta de visibilidade do progresso quando o sistema evolui, mas nunca termina; tempo excessivo para desenvolver o protótipo; etc. Conforme vimos em aula, esse é um erro comum! Gabarito: C 11. (CESPE ² 2010 ² INMETRO ² Analista de Sistemas ² Na abordagem evolutiva para desenvolvimento de software, um protótipo do software é produzido e SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 30 de 93 utilizado para identificar possíveis problemas com os requisitos, sendo descartado logo em seguida, e o desenvolvimento do software propriamente dito é, então, iniciado. Comentários: A metodologia de Prototipagem Evolutiva (ou Evolucionária) é uma abordagem que visualiza o desenvolvimento de concepções do sistema conforme o andamento do projeto até chegar ao resultado final. Esta metodologia baseia-se na utilização de prototipagem visual ou modelos do sistema final. Estes modelos podem ser simples desenhos ou imagens do sistema. Conforme vimos em aula, se o protótipo é descartado, então não se trata de uma abordagem evolutiva! Cuidado, porque esses nomes confundem: existe modelo evolutivo e abordagem evolutiva ² a Prototipação Throw-away não é uma abordagem evolutiva, mas é parte do Modelo Evolutivo. Gabarito: E 12. (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. Comentários: A Prototipagem é utilizada quando não se conhece bem os requisitos. É uma forma de entendê-los melhor para posteriormente desenvolver o software. Ela se configura como um processo iterativo, interativo e rápido de desenvolvimento e o protótipo serve como um mecanismo de identificação dos requisitos do software, que servirão para uma futura especificação. Conforme vimos em aula, não é linear, mas iterativo! A questão menciona uma sequência linear de fases, que lembra o Modelo em Cascata; e um ciclo de desenvolvimento de breve duração, que lembra o Desenvolvimento Rápido de Aplicações (RAD). Gabarito: E SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 31 de 93 13. (CESPE ² 2013 ² TRT/10 ² Analista Judiciário ² Tecnologia da Informação) No modelo prototipação, a construção de software tem várias atividades que são executadas de forma sistemática e sequencial. Comentários: Na verdade, quem constrói software por meio de atividades executadas de forma sistemática e sequencial é o Modelo em Cascata; a prototipação é iterativa. Gabarito: E 14. (CESPE ² 2009 ² TCE/RN ² Assessor Técnico de Informática) A prototipação, uma abordagem para desenvolvimento de software na qual se cria um modelo do software que será implementado, é composta de quatro etapas: planejamento, análise de risco, engenharia e avaliação do cliente. Comentários: Conforme vimos em aula, as etapas são Comunicação, Plano Rápido, Modelagem de Plano Rápido, Construção do Protótipo, e Implantação, Entrega e Feedback. As etapas mencionadas na questão são do Modelo em Espiral. Gabarito: E 15. (CESPE ² 2009 ² DETRAN/DF ² Analista de Sistemas) O modelo de processo de desenvolvimento de software evolucionário parte do desenvolvimento de uma SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 32 de 93 implementação inicial cujos resultados são apresentados aos clientes e refinados por meio de várias versões até que se alcance o sistema adequado. A prototipação, como processo, tem por objetivo compreender as especificações do software para se chegar aos requisitos para o sistema. Comentários: A Prototipagem é utilizada quando não se conhece bem os requisitos. É uma forma de entendê-los melhor para posteriormente desenvolver o software. Ela se configura como um processo iterativo, interativo e rápido de desenvolvimento e o protótipo serve como um mecanismo de identificação dos requisitos do software, que servirão para uma futura especificação. Conforme vimos em aula, essa questão está errada. Ela afirma que a prototipação tem por objetivo (1) compreender as especificações do software para (2) se chegar aos requisitos para o sistema. Na verdade, é justamente o contrário! Primeiro, eu levanto os requisitos do sistema e, depois, eu faço a especificação. Cabe ressaltar que a especificação é o detalhamento dos requisitos, logo ele não pode vir antes do levantamento dos requisitos. Gabarito: E 16. (CESPE ² 2008 ² TJ/DF ² Analista de Sistemas) A prototipação evolucionária permite que a versão inicial do protótipo seja desenvolvida e refinada em estágios sequenciados, até que se chegue à versão final do sistema. Comentários: Um protótipo é uma versão inicial de um sistema de software utilizado para demonstrar conceitos, experimentar opções de projeto e, geralmente, conhecer mais sobre o problema e suas possíveis soluções. Assim, os custos são controlados e as partes interessadas do sistema podem experimentar o protótipo mais cedo no processo de desenvolvimento. A Prototipagem pode ocorrer de duas maneiras: Desenvolvimento Exploratório: objetivo do processo é trabalhar com o cliente para explorar os requisitos e entregar um sistema final. O desenvolvimento começa com as partes do sistema compreendidas. O sistema evolui por meio da adição de novas características propostas pelo cliente. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 33 de 93 Conforme vimos em aula, a questão está perfeita! Trata da prototipação evolucionária ou exploratória. Percebam que a questão afirma que a versão é desenvolvida em estágios sequenciados e, não, o processo de desenvolvimento. Esse é iterativo e, não, sequenciado. No entanto, as versões são sequenciais, no sentidode que as versões seguem uma ordem. Gabarito: C 17. (VUNESP - 2009 - CETESB - Analista de Tecnologia da Informação - Banco de Dados) Considere um sistema cujos requisitos de interface são definidos apenas quando o cliente realiza um test-drive na aplicação e aprova essa interface. Assinale a alternativa que apresenta o modelo mais adequado para o desenvolvimento da interface desse sistema. a) Ágil. b) Cascata. c) Iterativo incremental. d) Prototipação. e) Rapid Application Development. Comentários: A Prototipagem é utilizada quando não se conhece bem os requisitos. É uma forma de entendê-los melhor para posteriormente desenvolver o software. Ela se configura como um processo iterativo, interativo e rápido de desenvolvimento e o protótipo serve como um mecanismo de identificação dos requisitos do software, que servirão para uma futura especificação. A afirmativa diz que o sistema possui requisitos de interface que são definidos apenas quando o cliente realiza um test-drive, i.e., um teste inicial na aplicação e aprova essa interface. Em outras palavras, o cliente valida ou não esses requisitos a partir de uma primeira utilização do sistema. Que metodologia de desenvolvimento de software pode ser utilizada para levantar e validar/aprovar requisitos? Trata-se da Prototipação! Gabarito: D 18. (FGV ² 2010 ² Fiocruz ² Analista de Sistemas) Como Modelo evolucionário do processo de software, uma característica da prototipagem é: SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 34 de 93 a) independer do estabelecimento e da definição de requisitos. b) configurar um processo interativo e rápido de desenvolvimento. c) iniciar o processo de desenvolvimento pela implantação e pelos testes. d) gerar uma primeira versão do sistema completa e isenta de erros. e) descartar a participação do cliente no processo de desenvolvimento e de implantação. Comentários: (a) Errado, claro que depende da definição de requisitos; (b) Correto, é um processo interativo, iterativo e rápido de desenvolvimento; (c) Errado. Você vai implantar e testar o que? Você primeiro tem que levantar, especificar e desenvolver; (d) Errado, se é uma primeira versão, não é completa. Além disso, não há sistemas sem erros; (e) Errado, você deve incentivar a participação do cliente. Gabarito: B ACERTEI ERREI SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 35 de 93 MODELO EM ESPIRAL O Modelo em Espiral foi proposto originalmente, em 1988, por Boehm. Sua ideia era representar um processo de software orientado a riscos. Em vez de representar o processo como uma sequência de atividades com algum retorno entre uma atividade e outra, o processo representado como uma espiral. Ele combina atividades de desenvolvimento com aspectos gerenciais (Planejamento, Tomada de Decisão, Análise de Riscos, etc). É conhecido como prototipagem-em-etapas, por combinar, em geral, o modelo em cascata com a prototipação. Cada loop representa uma fase do processo de software. Dessa forma, o loop mais interno pode estar relacionado à viabilidade do SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 36 de 93 sistema; o próximo loop, à definição de requisitos; o próximo, ao projeto de sistema e assim por diante. De acordo com Boehm, divide-se em quatro setores: Determinar objetivos, alternativas e restrições: definem-se os objetivos da do projeto (aumentar performance, consertar funcionalidade, melhorar qualidade), identificam-se alternativas (reúso de componentes, comprar pronto) e identificam-se restrições impostas (custo, cronograma, etc). Avaliar alternativas, identificar e resolver riscos: avaliam-se as alternativas identificadas em relação aos objetivos e restrições. Frequentemente, esse processo identifica áreas de incerteza (custos excessivos, falta de recursos) e resolve ou reduz os riscos identificados - um protótipo pode ser construído. Desenvolv e test : após a redução dos riscos, um modelo de desenvolvimento para o sistema é selecionado (Ex: prototipação evolucionária, modelos formais, modelo em cascata, modelos baseados em componentes). O software é desenvolvido e, posteriormente, testado. Planejar próximas fases: revisa-se o projeto e decide-se sobre o prosseguimento ao próximo loop da espiral. Se a decisão for pelo prosseguimento, são elaborados planos para a próxima fase do projeto, e terminamos um loop. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 37 de 93 De acordo com Pressman, cada espiral é dividida em cinco setores1: Comunicação: é a comunicação em si; Planejamento: estimativa de custos, cronograma e análise de riscos; Modelagem: análise e design; Construção: codificação e teste; Implantação: entrega e feedback; Vocês entenderam isso? O Pressman explica isso por meio da imagem acima! Percebam que o loop mais interno (1) pode tratar do projeto de desenvolvimento de conceito, o segundo loop (2) pode tratar do projeto de desenvolvimento de um produto, o terceiro loop (3) pode tratar do projeto de melhoria e o último (4), mais claro, pode tratar do projeto de manutenção. Pode tratar de todo ciclo de vida... Cada loop é uma fase e a fase é escolhida de acordo com as necessidades do negócio! Já setores do processo são fixos para todos os loops. No entanto, Boehm utiliza uma divisão de setores diferente do Pressman. No caso de dúvida, considerem a versão original do Modelo de Boehm. Além disso, ao final de cada loop, há uma tomada de decisão a respeito do projeto. Vocês perceberam, pela imagem acima, que existem protótipos que são utilizados para verificar a viabilidade do projeto. Ao final de cada loop na espiral, deve-se decidir se o projeto continuará ou se será interrompido. Pessoal, por que esse modelo se destaca em relação aos outros modelos? Porque ele enfatiza bastante um aspecto que o diferencia dos demais: Análise de Riscos. Este é um modelo complexo que precisa ser gerenciado por pessoas que tenham grande experiência na avaliação de riscos. Geralmente, o modelo é utilizado em sistemas críticos e grandes! Por fim, vamos ver um tema mais polêmico: ele é evolucionário ou é incremental? Pressman diz que é iterativo, mas, não, incremental ² sendo, então, evolucionário. Logo, é nele em que vamos nos basear! O conceito essencial do modelo é minimizar os riscos pelo uso repetido de protótipos e outros meios. Ao contrário de outros modelos, em cada fase a análise de risco é realizada. O modelo funciona através da construção de versões 1 Na versão anterior, eram seis etapas no Modelo em Espiral (Planejamento, Análise de Riscos, Engenharia, Construção e Liberação, Avaliação do Cliente e Comunicação com Cliente). Variações do modelo consideram entre três e seis setores da espiral. Infelizmente, cada autor pega a versão original e adapta, criando sua versão. Portanto, vocês verão muitos nomes diferentes para cada setor. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ²Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 38 de 93 progressivamente mais completas do software, iniciando no centro da espiral para o exterior. A cada volta, o cliente avalia o trabalho e são feitas sugestões. O modelo, então, se diferencia por ter uma abordagem cíclica, para aumentar incrementalmente o grau de definição e de implementação de um sistema enquanto diminui seu grau de risco; e por ter conjunto de marcos de ancoragem, para garantir o comprometimento dos interessados com soluções exequíveis e mutuamente satisfatórias para o sistema. VANTAGENS DESVANTAGENS Suporta mecanismos de redução de riscos. Exige analistas de risco bastante experientes. Obtêm-se versões do sistema a cada iteração. Exige uma equipe de desenvolvimento extremamente qualificada. Entregando produtos cada vez mais refinados e de melhor qualidade. Exige um gerenciamento de processo mais complexo. Reflete as práticas reais de engenharia atual. Não é recomendado resolver problemas mais simples e pequenos. Apresenta uma abordagem sistemática. Apresenta estimativas realistas. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 39 de 93 Somente com esse esquema, responde-se grande parte das questões a seguir... ESQUEMA SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 40 de 93 (FCC - 2012 - TST - Analista Judiciário - Análise de Sistemas) O Ciclo de Vida de um Sistema especifica todas as fases de desenvolvimento, desde sua concepção até o processo de manutenção e declínio. No que diz respeito ao desenvolvimento de software, existem alguns processos conhecidos. Um destes processos, possui característica iterativa e incremental, inicia cada fase do projeto realizando um planejamento prévio, realiza a execução da fase, verifica o progresso e os resultados da fase (riscos, lições aprendidas) e incrementa novos objetivos para a fase seguinte, seguindo para a próxima iteração. O processo de software em questão é o: a) Modelo espiral. b) Ciclo de vida em cascata. c) Modelo de desenvolvimento evolucionário (prototipação). d) Modelo de desenvolvimento ágil. e) Método de desenvolvimento Cleanroom (Sala Limpa). Comentários: Conforme vimos no esquema, ele citou todos os setores do Modelo Espiral (os nomes estão um pouco diferentes, mas é apenas uma variação). Essa questão tem um detalhe: ela afirma que o modelo espiral é iterativo e incremental, mas já vimos que o Pressman afirma que ele é iterativo e evolucionário, mas não incremental. Gabarito: A (FCC - 2010 - TRT - 20ª REGIÃO (SE) - Analista Judiciário - Tecnologia da Informação) À medida que se avança pelo modelo ocorre uma iteração e o software evolui para estágios superiores, normalmente com aumento da complexidade. Cada iteração está provida das atividades determinadas pelos quadrantes planejamento, avaliação de alternativas e riscos, desenvolvimento do software e avaliação do cliente. No ciclo de vida de desenvolvimento de software, trata-se da propriedade do modelo: a) Cascata. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 41 de 93 b) Incremental. c) Espiral. d) Prototipação. e) Balbúrdia. Comentários: Conforme vimos em aula, a questão fala de iteração, logo não pode ser Modelo em Cascata! Por outro lado, a questão fala em avaliação de alternativas e riscos, enfatizada (em verde em nosso esquema). Logo, trata-se claramente do Modelo em Espiral. Percebam que a questão faz uma confusão com os setores de cada autor, mas está correta. Gabarito: C (FCC - 2010 ² MPE/RN ² Analista de Sistemas) O modelo em espiral difere principalmente dos outros modelos de processo de software por: a) não contemplar o protótipo. b) reconhecer explicitamente o risco. c) não ter fases. d) possuir uma fase única evolucionária. e) não contemplar o projeto do produto. Comentários: Vocês perceberam, pela imagem acima, que existem protótipos que são utilizados para verificar a viabilidade do projeto. Ao final de cada loop na espiral, deve-se decidir se o projeto continuará ou se será interrompido. Pessoal, por que esse modelo se destaca em relação aos outros modelos? Porque ele enfatiza bastante um aspecto que o diferencia dos demais: Análise de Riscos. Conforme vimos em aula, reconhecimento explícito no risco. Gabarito: B (FCC - 2012 ² TRE/CE ² Analista de Sistemas) No desenvolvimento de software em espiral (Boehm), cada loop está dividido em quatro setores. NÃO se trata da denominação de um destes setores: SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 42 de 93 a) levantamento. b) definição de objetivos. c) avaliação e redução de riscos d) desenvolvimento e validação. e) planejamento. Comentários: Determinar objetivos, alternativas e restrições: definem-se os objetivos da do projeto (aumentar performance, consertar funcionalidade, melhorar qualidade), identificam-se alternativas (reúso de componentes, comprar pronto) e identificam-se restrições impostas (custo, cronograma, etc). Avaliar alternativas, identificar e resolver riscos: avaliam-se as alternativas identificadas em relação aos objetivos e restrições. Frequentemente, esse processo identifica áreas de incerteza (custos excessivos, falta de recursos) e resolve ou reduz os riscos identificados - um protótipo pode ser construído. Desenvolver e testar: após a redução dos riscos, um modelo de desenvolvimento para o sistema é selecionado (Ex: prototipação evolucionária, modelos formais, modelo em cascata, modelos baseados em componentes). O software é desenvolvido e, posteriormente, testado. Planejar próximas fases: revisa-se o projeto e decide-se sobre o prosseguimento ao próximo loop da espiral. Se a decisão for pelo prosseguimento, são elaborados planos para a próxima fase do projeto, e terminamos um loop. Conforme vimos em aula, levantamento não é um dos setores. Gabarito: A (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. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 43 de 93 Comentários: É conhecido como prototipagem-em-etapas, por combinar o modelo em cascata com a prototipação. Cada loop representa uma fase do processo de software. Dessa forma, o loop mais interno pode estar relacionado à viabilidade do sistema; o próximo loop, à definição de requisitos; o próximo, ao projeto de sistema e assim por diante. De acordo com Boehm, divide-se em quatro setores: Conforme vimos em aula, trata-se de uma fase do processo de software. Gabarito: D (CESPE ² 2011 ² MEC ² Gerente de Projetos) O modelode processo denominado em espiral combina as atividades de desenvolvimento com o gerenciamento de riscos, de modo a minimizá-los e controlá-los. Comentários: Vocês perceberam, pela imagem acima, que existem protótipos que são utilizados para verificar a viabilidade do projeto. Ao final de cada loop na espiral, deve-se decidir se o projeto continuará ou se será interrompido. Pessoal, por que esse modelo se destaca em relação aos outros modelos? Porque ele enfatiza bastante um aspecto que o diferencia dos demais: Análise de Riscos. Conforme vimos em aula, está perfeito! Gabarito: C (CESPE ² 2008 ² TJ/DF ² Analista Judiciário ² Tecnologia da Informação) O modelo em espiral é um modelo de processos de software que reúne a natureza iterativa da prototipação com os aspectos sistemáticos e controlados do modelo sequencial linear. Comentários: É conhecido como prototipagem- -etapas, por combinar o modelo em cascata com a prototipação. Cada loop representa uma fase do processo de software. Dessa forma, o loop mais interno pode estar relacionado à viabilidade do sistema; o próximo loop, SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 44 de 93 à definição de requisitos; o próximo, ao projeto de sistema e assim por diante. De acordo com Boehm, divide-se em quatro etapas: Conforme vimos em aula, Modelo em Espiral é também conhecido como Prototipagem-Em-Etapas, por conta disso! Gabarito: C (CESPE ² 2004 ² COHAB ² Analista Judiciário ² Tecnologia da Informação) O modelo espiral é um modelo de processo de software que combina a natureza iterativa da prototipagem com os aspectos controlados e sistemáticos do modelo sequencial linear. Comentários: conhecido como prototipagem- -etapas, por combinar o modelo em cascata com a prototipação. Cada loop representa uma fase do processo de software. Dessa forma, o loop mais interno pode estar relacionado à viabilidade do sistema; o próximo loop, à definição de requisitos; o próximo, ao projeto de sistema e assim por diante. De acordo com Boehm, divide-se em quatro etapas: Conforme vimos em aula, está perfeito! Galera, eu não errei! Essa questão é quase idêntica à anterior: é o CESPE copiando do CESPE! Gabarito: C (CESPE - 2008 ² TJ/DF - Analista Judiciário - Tecnologia da Informação) Empregando o modelo de desenvolvimento em espiral, o software é desenvolvido em uma série de versões intermediárias incrementais. Comentários: Este é um modelo complexo que precisa ser gerenciado por pessoas que tenham grande experiência na avaliação de riscos. Geralmente, o modelo é utilizado em sistemas críticos e grandes! Por fim, vamos ver um tema mais polêmico: ele é evolucionário ou é incremental? Pressman diz que é iterativo, mas, não, incremental ² sendo, então, evolucionário. Logo, é nele em que vamos nos basear! Conforme vimos em aula, o Pressman discorda! A questão fala que o software é desenvolvido em uma série de versões intermediárias incrementais. Ora, modelos SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 45 de 93 iterativos geram uma série de versões intermediárias; modelos incrementais geram incrementos. Logo, pode-se assumir que a questão afirma que se trata de um modelo iterativo e incremental. Pressman discorda, mas não é incomum autores tratarem o modelo em espiral como iterativo e incremental. Gabarito: C 10. (CESPE ² 2010 ² SERPRO - Analista ² 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. Comentários: Conforme vimos em aula, ele é iterativo e evolucionário. Gabarito: E 11. (CESPE ² 2010 ² SERPRO - Analista ² Desenvolvimento De Sistemas) O modelo de desenvolvimento em espiral permite repensar o planejamento diversas vezes durante o desenrolar do projeto. Comentários: Este é um modelo complexo que precisa ser gerenciado por pessoas que tenham grande experiência na avaliação de riscos. Geralmente, o modelo é utilizado em sistemas críticos e grandes! Por fim, vamos ver um tema mais polêmico: ele é evolucionário ou é incremental? Pressman diz que é iterativo, mas, não, incremental ² sendo, então, evolucionário. Logo, é nele em que vamos nos basear! Conforme vimos em aula, ele é iterativo, portanto permite replanejamento a cada nova iteração. Gabarito: C 12. (CESPE - 2009 - ANTAQ - Analista Administrativo - Informática) O modelo em espiral, que descreve o processo de desenvolvimento de um software, apresenta uma espiral em que cada loop representa uma fase distinta desse processo. A ausência de risco nesse modelo o diferencia dos demais modelos de software. SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 46 de 93 Comentários: Vocês perceberam, pela imagem acima, que existem protótipos que são utilizados para verificar a viabilidade do projeto. Ao final de cada loop na espiral, deve-se decidir se o projeto continuará ou se será interrompido. Pessoal, por que esse modelo se destaca em relação aos outros modelos? Porque ele enfatiza bastante um aspecto que o diferencia dos demais: Análise de Riscos. Na verdade, é a presença da Análise de Riscos que o diferencia. Gabarito: E 13. (CESPE ² 2003 ² IPEA ² Analista de Sistemas) O modelo espiral é um modelo evolucionário de processo de software que combina a prototipagem com o modelo em cascata. Contudo, a incerteza em relação ao número de ciclos necessários para construir o projeto, leva tal abordagem a empregar o modelo de métodos formais para viabilizá-lo. Comentários: É conhecido como prototipagem- -etapas, por combinar o modelo em cascata com a prototipação. Cada loop representa uma fase do processo de software. Dessa forma, o loop mais interno pode estar relacionado à viabilidade do sistema; o próximo loop, à definição de requisitos; o próximo, ao projeto de sistema e assim por diante. De acordo com Boehm, divide-se em quatro etapas: Conforme vimos em aula, a primeira parte está perfeita! No entanto, não faz sentido empregar o modelo de métodos formais porque não se sabe estimar o número de ciclos para construir um projeto. Ele tem uma natureza iterativa que permite reduzir riscos a cada loop. Gabarito: E 14. (CESPE ² 2009 ² UNIPAMPA ² Analista de Sistemas) O modelo espiral admite retorno às fases anteriores de desenvolvimento, suportando ainda a execução paralela de fases. Comentários: SEFAZ/GO ² Auditor Fiscal - 2018 Tecnologia da Informação Prof. Diego Carvalho ² Aula 16 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 47 de 93 Agora vamos analisar o Modelo em Espiral. Ele foi proposto originalmente, em 1988, por Boehm. Sua ideia era, em vez de representar um processo de software orientado a riscos. Em vez de representar o processo como uma sequência de atividades com algum retorno entre uma atividade e outra, o processo é representado como uma espiral. Conforme vimos em aula, ele não admite retorno às fases anteriores e, como espiral que é, não permite a execução paralela de fases. Gabarito: E 15. (CESPE ² 2004 ² PBV/RR ² Analista de Sistema) O modelo em cascata é linear
Compartilhar