Engenharia de Software Flashcards
- (CESPE / CAU-BR – 2024) Uma vantagem do ciclo de vida do software em cascata é que ele permite modificações nos requisitos por meio de atualização das fases anteriores.
O modelo de ciclo de vida em cascata é caracterizado pela rigidez nas fases, onde cada uma deve ser concluída antes de iniciar a próxima.
Mudanças nos requisitos após a fase inicial podem ser muito custosas ou inviáveis, pois requerem revisão das fases já concluídas, o que o modelo não facilita.
Gabarito: Errado
- (CESPE / CAU-BR – 2024) No modelo em cascata, o ciclo de vida do software torna o processo de desenvolvimento estruturado.
O modelo em cascata é um dos mais antigos paradigmas de desenvolvimento de software, caracterizando-se por uma abordagem sequencial e estruturada, onde cada fase deve ser completada antes de iniciar a próxima.
Este modelo é conhecido por sua rigidez e por ser mais adequado a projetos com requisitos bem definidos e imutáveis.
Gabarito: Correto
- (CESPE / CAU-BR – 2024) Quando se utiliza um modelo incremental, frequentemente o primeiro incremento é um produto essencial; após esse primeiro, se libera uma série de incrementos, que oferecem, progressivamente, maior funcionalidade ao cliente à medida que cada incremento é entregue.
A descrição aborda o modelo incremental em projetos de software, uma técnica de desenvolvimento em que o produto é projetado, implementado e testado incrementalmente até que o produto final esteja completo.
Isso permite que versões iniciais do software sejam entregues aos clientes mais cedo e melhoradas através de versões subsequentes, baseadas em feedback e requisitos adicionais.
Gabarito: Correto
- (CESPE / TCE-SC – 2022) Os modelos de processo de software em cascata e incremental possuem abordagens distintas.
O primeiro considera as atividades fundamentais do processo, representando cada uma delas em fases distintas, tais como especificação de requisitos, implementação e teste; o segundo intercala as atividades de especificação, desenvolvimento e validação em uma série de versões do sistema, ao longo do seu ciclo de vida.
O modelo cascata é um processo de desenvolvimento de software linear e sequencial, onde o progresso flui em uma direção, como uma cascata, através das fases de concepção, iniciação, análise, design, construção, teste, implantação e manutenção.
O modelo incremental, por outro lado, divide o projeto em incrementos pequenos, permitindo que partes do projeto sejam desenvolvidas em paralelo e integradas conforme completadas, facilitando a entrega de múltiplas versões para revisão do usuário.
Gabarito: Correto
- (CESPE / PETROBRAS – 2022) No modelo de desenvolvimento Waterfall, a partir da coleta de requisitos e da elaboração do projeto desenvolve-se uma implementação inicial, que é apresentada para a apreciação dos usuários; esse ciclo continua com a criação de várias versões, até que o sistema final seja desenvolvido por meio da execução das etapas de desenvolvimento e testes de forma intercalada.
Na verdade, no Modelo Waterfall (Cascata), as fases são executadas de maneira sequencial e sem retorno a fases anteriores.
Não há ciclos de desenvolvimento com várias versões como descrito.
Este ciclo de revisão e desenvolvimento de várias versões é mais característico de modelos iterativos e incrementais.
Gabarito: Errado
- (CESPE / BANRISUL – 2022) Um dos problemas da aplicação do modelo cascata no desenvolvimento de um projeto reside no fato de que uma versão operacional do programa não estará disponível antes que o projeto esteja perto do final, por conta do estado de bloqueio que a natureza linear do ciclo de vida clássico produz.
Perfeito! O modelo cascata segue uma abordagem linear de desenvolvimento de software, onde cada etapa tem que ser concluída antes de a próxima etapa começar.
Isso significa que, ao longo do desenvolvimento, nenhuma versão operacional do programa estará disponível até que o projeto esteja próximo do final.
Gabarito: Correto
- (CESPE / BANRISUL – 2022) O modelo cascata é frequentemente inadequado para os casos de desenvolvimento de soluções de software em que há ritmo acelerado e volume intenso de mudanças de características, todavia ele pode servir como um modelo de processo útil em situações nas quais os requisitos são fixos.
Perfeito! O Modelo em Cascata é projetado para trabalhar com requisitos fixos.
Ele não é ideal para projetos que exigem mudanças frequentes, pois ele não é flexível o suficiente para lidar com mudanças.
Ele também não é ideal para projetos de grande volume ou de ritmo acelerado, pois o processo é muito linear e demorado.
Em projetos com requisitos fixos, no entanto, o modelo cascata pode ser útil porque permite gerenciar e controlar o processo de forma eficiente.
Gabarito: Correto
- (CESPE / BANRISUL – 2022) O modelo do ciclo de vida clássico sugere uma abordagem sequencial para desenvolvimento de software, começando com a especificação dos requisitos do cliente, avançando pelas fases de planejamento e modelagem, e culminando no suporte contínuo do software concluído.
Perfeito! O Modelo do Ciclo de Vida Clássico oferece uma abordagem estruturada para o desenvolvimento de software, a qual segue um conjunto de etapas comuns que devem ser cumpridas para garantir que o software desenvolvido atenda às necessidades do cliente.
Estas etapas permitem que o desenvolvedor defina os requisitos específicos do cliente, crie um plano detalhado para o desenvolvimento do software e crie um produto final que atenda às necessidades do cliente.
Além disso, as etapas do modelo do ciclo de vida clássico também oferecem suporte ao longo do ciclo de vida do software desenvolvido para garantir que o produto final atenda às expectativas do cliente.
Gabarito: Correto
- (CESPE / TJ-RJ - 2021) Na engenharia de software, pode-se dividir uma metodologia genérica em cinco macroatividades; entre elas, a que tem como objetivo criar um esboço do projeto a ser desenvolvido é:
a) o planejamento.
b) a modelagem.
c) o emprego.
d) a comunicação.
e) a construção.
Trata-se da fase (atividade) de modelagem.
De acordo com Pressman: “Cria-se um “esboço” para que se possa ter uma ideia do todo – qual será o seu aspecto em termos de arquitetura, como as partes constituintes se encaixarão e várias outras características.
Se necessário, refina-se o esboço com mais detalhes, numa tentativa de compreender melhor o problema e como resolvê-lo”.
Gabarito: Letra B
- (CESPE / Polícia Federal – 2021) Uma das etapas descritas em um método desenvolvimento de sistema clássico é a análise e definição de requisitos, etapa em que as restrições e as metas do sistema são obtidas por meio de consulta a usuários, com o objetivo de realizar a especificação do sistema.
Nesta fase, o escopo deve ser refinado e os requisitos mais bem definidos.
Para entender a natureza do software a ser construído, o engenheiro de software tem de compreender o domínio do problema, as restrições, as metas, as funcionalidades e o comportamento esperados – ele pode o fazer por meio de diversas técnicas de levantamento de requisitos (Ex: entrevistas).
Uma vez capturados os requisitos do sistema a ser desenvolvido, estes devem ser modelados, avaliados e documentados.
Uma parte vital desta fase é a construção de um modelo descrevendo o que o software tem de fazer (e não como fazê-lo).
Gabarito: Correto
- (CESPE / SERPRO – 2021) No modelo em cascata, dada a dificuldade natural para estabelecer todos os requisitos na fase inicial do projeto, os requisitos são definidos ao longo de todas as fases, acomodando-se gradualmente as incertezas e eventuais mudanças do projeto.
No modelo em cascata, todos os requisitos são levantados na fase inicial e, não, ao longo das outras fases.
Essa definição seria adequada para metodologias ágeis! Gabarito: Errado
- (CESPE / SERPRO – 2021) No modelo iterativo, as iterações na fase de construção concentram- se nas atividades de requisitos, gerenciamento, design e testes.
Um projeto que usa o desenvolvimento iterativo tem um ciclo de vida que consiste em várias iterações.
Uma iteração incorpora um conjunto quase sequencial de tarefas em modelagem de negócio, requisitos, análise e design, implementação, teste e implementação, em várias proporções, dependendo do local em que ela está localizada no ciclo de desenvolvimento.
As iterações nas fases de iniciação e de elaboração concentram-se nas atividades de gerenciamento, requisitos e design.
As iterações na fase de construção concentram-se no design, na implementação e no teste.
E as iterações na fase de transição concentram-se no teste e na implementação.
As iterações devem ser gerenciadas em um estilo com caixa de hora, ou seja, o planejamento de uma iteração deve ser considerado fixo e o escopo do conteúdo da iteração gerenciado ativamente para atender a esse planejamento.
Gabarito: Errado
- (CESPE / Ministério da Economia – 2020) Engenharia de software (ES) é um processo, expresso como o conjunto de todas as atividades relacionadas ao desenvolvimento, ao controle, à validação e à manutenção de um software operacional, abrangendo atividades técnicas e gerenciais.
Perfeito! Engenharia de Software é muito mais que apenas produzir software.
Como afirma Roger Pressman, trata-se da aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, na operação e na manutenção de software; isto é, a aplicação de engenharia ao software.
E como afirma Ian Sommerville, a engenharia de software não está relacionada apenas com os processos técnicos de desenvolvimento de software, mas também com atividades de gerenciamento de projeto de software e desenvolvimento de ferramentas, métodos e teorias que apoiem a produção de software.
Gabarito: Correto
- (CESPE / Ministério da Economia – 2020) Entre os modelos de processo aplicados ao desenvolvimento de software, o modelo cascata apresenta desvantagens por, entre outros motivos, não ter flexibilidade com requisitos, não produzir resultados tangíveis até a fase de codificação e dificultar o estabelecimento de requisitos completos antes de começar a codificar.
Questão um pouco estranha! Vejamos:
(1) uma de suas desvantagens é que ele realmente não possui flexibilidade com requisitos – uma vez especificados, não podem ser modificados;
(2) uma de suas desvantagens é que ele realmente não produz resultados tangíveis até a fase de codificação, mas eu salientaria que se trata de um resultado tangível para o usuário (Ex: software em funcionamento), visto que há outros resultados tangíveis, como artefatos produzidos em cada etapa;
(3) uma de suas desvantagens é que ele realmente obriga que os requisitos estejam completos antes de começar a codificação e nós sabemos que requisitos podem se modificar o tempo todo.
Gabarito: Correto
10.(CESPE / TCE-RO – 2019) O modelo de desenvolvimento de sistemas cascata:
a) é voltado para requisitos de sistemas de software e, por isso, não engloba os requisitos de hardware.
b) prevê que os estágios sejam iniciados toda vez que a fase anterior tenha concluído a etapa de documentação.
c) envolve o feedback de uma fase para outra, por ser um modelo linear simples.
d) é sequencial, o que impede que os documentos produzidos em cada fase sejam modificados para refletirem as alterações feitas em cada um deles.
e) é consistente com outros modelos de processos de engenharia, apesar de haver uma divisão inflexível do projeto em estágios distintos.
(a) Errado, ele é utilizado para desenvolvimento de sistemas, que envolvem software e hardware.
Além disso, engloba os requisitos não-funcionais, que podem tratar de requisitos de hardware;
(b) Errado, não há obrigatoriamente uma documentação associada, apesar de ser o mais comum;
(c) Errado, não se trata de um modelo linear simples – envolve uma sequência de iterações das atividades de desenvolvimento;
(d) Errado, o modelo em cascata não impede que haja a modificação dos documentos;
(e) Correto, sua característica principal é que ele é um modelo rígido e sequencial.
Gabarito: Letra E
- (CESPE / EBSERH – 2018) O modelo de ciclo de vida em cascata tem como características o estabelecimento, no início do projeto, de requisitos de maneira completa, correta e clara, e a possibilidade de disponibilização de várias versões operacionais do software antes da conclusão do projeto.
O modelo de ciclo de vida em cascata realmente tem como característica o estabelecimento, no início do projeto, de requisitos de maneira completa, correta e clara.
No entanto, não há versões operacionais do software antes da conclusão do projeto, apenas ao fim – essa é uma característica do modelo iterativo e incremental.
Gabarito: Errado
- (CESPE / IPHAN – 2018) No modelo em cascata, com exceção do sequenciamento dos estágios de requisitos e de análise, os demais são executados em paralelo, iniciando-se antes do término do estágio seguinte.
Na verdade, todos os estágios são sequenciais – não há exceção.
Gabarito: Errado
- (CESPE / TCE-PR – 2016 – Item B) A engenharia de software refere-se ao estudo das teorias e fundamentos da computação, ficando o desenvolvimento de software a cargo da ciência da computação.
A Engenharia de Software tem por objetivos a aplicação de teoria, modelos, formalismos, técnicas e ferramentas da ciência da computação e áreas afins para a desenvolvimento sistemático de software.
Associado ao desenvolvimento, é preciso também aplicar processos, métodos e ferramentas sendo que a pedra fundamental que sustenta a engenharia de software é a qualidade.
Conforme vimos em aula, não se trata do estudo – trata-se da aplicação.
Além disso, o desenvolvimento também fica a cargo da engenharia de software.
Em geral, a ciência da computação trata da teoria e a engenharia de software trata da prática.
Gabarito: Errado
- (CESPE / TCE/PR – 2016 – Item E) O conceito de software se restringe ao desenvolvimento do código em determinada linguagem e seu armazenamento em arquivos.
Em uma visão restritiva, muitas pessoas costumam associar o termo software aos programas de computador.
Software não é apenas o programa, mas também todos os dados de documentação e configuração associados, necessários para que o programa opere corretamente.
O software não é apenas o programa, mas também todos os dados de documentação e configuração associados, necessários para que o programa opere corretamente.
Gabarito: Errado
- (CESPE / TCE-PR – 2016) As fases do ciclo de vida de um software são:
a) concepção, desenvolvimento, entrega e encerramento.
b) iniciação, elaboração, construção e manutenção.
c) escopo, estimativas, projeto e processo e gerência de riscos.
d) análise, desenvolvimento, teste, empacotamento e entrega.
e) planejamento, análise e especificação de requisitos, projeto, implementação, testes, entrega e implantação, operação e manutenção.
Alguns autores afirmam que os modelos de ciclo de vida básicos, de maneira geral, contemplam pelo menos as fases de: Planejamento; Análise e Especificação de Requisitos; Projeto; Implementação; Testes; Entrega e Implantação; Operação; e Manutenção.
Logo, a questão trata da última opção.
Gabarito: Letra E
- (CESPE / TCE-PR – 2016 – Item A) A engenharia de software está relacionada aos diversos aspectos de produção de software e inclui as atividades de especificação, desenvolvimento, validação e evolução de software.
Sommerville afirma que um processo de software é um conjunto de atividades e resultados associados que produz um produto de software.
De acordo com ele, existem quatro atividades fundamentais de processo, que são comuns a todos os processos de software – são elas: Especificação de Software; Desenvolvimento de Software (Projeto e Implementação); Validação de Software; e Evolução de Software.
Dessa forma, a questão está correta.
Gabarito: Correto
- (CESPE / TCE-PR – 2016 – Item D) Um processo de software é composto por quatro atividades fundamentais: iniciação, desenvolvimento, entrega e encerramento.
Sommerville afirma que um processo de software é um conjunto de atividades e resultados associados que produz um produto de software.
De acordo com ele, existem quatro atividades fundamentais de processo, que são comuns a todos os processos de software – são elas: Especificação de Software; Desenvolvimento de Software (Projeto e Implementação); Validação de Software; e Evolução de Software.
Dessa forma, a questão está incorreta.
Gabarito: Errado
- (CESPE / TCE-PR – 2016) O modelo de desenvolvimento em cascata é utilizado em caso de divergência nos requisitos de um software, para permitir a evolução gradual do entendimento dos requisitos durante a implementação do software.
Essa questão trata, na verdade, do modelo iterativo e incremental e, não, em cascata.
Gabarito: Errado
- (CESPE / TCE-PR – 2016 – Item C) No modelo iterativo de desenvolvimento de software, as atividades são dispostas em estágios sequenciais.
A questão trata do modelo em cascata de desenvolvimento de software.
No modelo iterativo e incremental, as atividades são dispostas ao longo de diversas iterações
Gabarito: Errado
- (CESPE / STJ – 2015) Embora os engenheiros de software geralmente utilizem uma abordagem sistemática, a abordagem criativa e menos formal pode ser eficiente em algumas circunstâncias, como, por exemplo, para o desenvolvimento de sistemas web, que requerem uma mistura de habilidades de software e de projeto.
Galera, basta pensar nas metodologias ágeis! O que são metodologias ágeis? São metodologias menos formais e são mais adequadas em determinadas circunstâncias.
Notem que isso não vai de encontro ao princípio da formalidade, na medida em que a questão deixa claro que se trata de uma abordagem “menos formal” e, não, “informal”.
Além disso, isso consta também do livro do Sommerville: “No entanto, engenharia tem tudo a ver com selecionar o método mais adequado para um conjunto de circunstâncias, então uma abordagem mais criativa e menos formal pode ser eficiente em algumas circunstâncias.
Desenvolvimento menos formal particularmente adequado para o desenvolvimento de sistemas Web, que requerem uma mistura de habilidades de software e de projeto”.
Gabarito: Correto
- (CESPE / STJ – 2015) O foco da engenharia de software inclui especificação do sistema, desenvolvimento de hardware, elaboração do projeto de componentes de hardware e software, definição dos processos e implantação do sistema.
Na verdade, pode até tratar eventualmente de alguns aspectos de hardware; mas desenvolvimento de hardware, não.
Gabarito: Errado
- (CESPE / STJ – 2015) As principais atividades de engenharia de software são especificação, desenvolvimento, validação e evolução.
Mais uma vez: Sommerville afirma que um processo de software é um conjunto de atividades e resultados associados que produz um produto de software.
De acordo com ele, existem quatro atividades fundamentais de processo, que são comuns a todos os processos de software – são elas: Especificação de Software; Desenvolvimento de Software (Projeto e Implementação); Validação de Software; e Evolução de Software.
A questão peca um pouco ao dizer que são atividades da engenharia de software.
O ideal seria dizer que são as atividades principais do processo de software.
Não sei se entraram com recurso e a banca recusou e se não entraram com recurso.
Percebam também que é a terceira vez esse tipo de questão cai em prova.
Gabarito: Correto
- (CESPE / TCE-RO – 2013) Engenharia de software não está relacionada somente aos processos técnicos de desenvolvimento de softwares, mas também a atividades como gerenciamento de projeto e desenvolvimento de ferramentas, métodos e teorias que apoiem a produção de softwares.
De acordo com Sommerville: “A engenharia de software não está relacionada apenas com os processos técnicos de desenvolvimento de software, mas também com atividades como o gerenciamento de projeto de software e o desenvolvimento de ferramentas, métodos e teorias que apoiem a produção de software”.
Logo, a questão está perfeita! Gabarito: Correto
- (CESPE / TCE-RO – 2013) Assim como a Engenharia de Software, existe também na área de informática a chamada Ciência da Computação.
Assinale a alternativa que melhor apresenta a diferença entre Engenharia de Software e Ciência da Computação.
a) A Ciência da Computação tem como objetivo o desenvolvimento de teorias e fundamentações. Já a Engenharia de Software se preocupa com as práticas de desenvolvimento de software.
b) A Engenharia de Software trata da criação dos sistemas de computação (softwares) enquanto a Ciência da Computação está ligada ao desenvolvimento e criação de componentes de hardware.
c) A Engenharia de Software trata dos sistemas com base em computadores, que inclui hardware e software, e a Ciência da Computação trata apenas dos aspectos de desenvolvimento de sistemas.
d) A Ciência da Computação trata dos sistemas com base em computadores, que inclui hardware e software, e a Engenharia de Software trata apenas dos aspectos de desenvolvimento de sistemas.
e) A Ciência da Computação destina-se ao estudo e solução para problemas genéricos das áreas de rede e banco de dados e a Engenharia de Software restringe- se ao desenvolvimento de sistemas.
A Engenharia de Software tem por objetivos a aplicação de teoria, modelos, formalismos, técnicas e ferramentas da ciência da computação e áreas afins para a desenvolvimento sistemático de software.
Associado ao desenvolvimento, é preciso também aplicar processos, métodos e ferramentas sendo que a pedra fundamental que sustenta a engenharia de software é a qualidade.
Essa questão parece contradizer o que diz Sommerville, mas não! A Engenharia de Software coloca em prática a teoria e fundamentação trazida pela Ciência da Computação.
A Engenharia de Software aplica a teoria, mas - grosso modo - ela não tem a finalidade principal de elaborá-la; a finalidade principal é de colocá-la em prática.
Já a Ciência da Computação é exatamente o contrário.
Enfim, a primeira opção foi retirada literalmente do Sommerville (Pág. 5, 8ª Ed.).
Gabarito: Letra A
- (CESPE / TRT10 – 2013) As atividades fundamentais relacionadas ao processo de construção de um software incluem a especificação, o desenvolvimento, a validação e a evolução do software.
Sommerville afirma que um processo de software é um conjunto de atividades e resultados associados que produz um produto de software.
De acordo com ele, existem quatro atividades fundamentais de processo, que são comuns a todos os processos de software – são elas: Especificação de Software; Desenvolvimento de Software (Projeto e Implementação); Validação de Software; e Evolução de Software.
Logo, a questão está corretíssima!
Gabarito: Correto
- (CESPE / TRT10 – 2013) O ciclo de vida de um software, entre outras características, está relacionado aos estágios de concepção, projeto, criação e implementação.
Essa questão é péssima! Ela foi retirada do livro Sistemas de Informação: Uma Abordagem Gerencial (Steven R. Gordon, Judith R. Gordon).
Nesse livro, os autores de fato tratam o ciclo de vida de software como concepção, projeto, criação e implementação.
Essa é uma daquelas quase impossível de acertar! Esse não é um autor consagrado de Engenharia de Software.
Gabarito: Correto
- (CESPE / TRT-17 – 2013) 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.
Galera, esse item não faz qualquer sentido! Não é possível nem avaliar de tão errado…
Gabarito: Errado
- (CESPE / MEC – 2011) O processo de desenvolvimento de software é uma caracterização descritiva ou prescritiva de como um produto de software deve ser desenvolvido.
Metodologia de Desenvolvimento de Software É uma caracterização prescritiva ou descritiva de como um produto de software deve ser desenvolvido, isto é, define o quê, como e quando fazer algo – um exemplo clássico é o RUP! Segundo Pressman, um modelo prescritivo consiste em um conjunto específico de atividades de arcabouço, como – por exemplo – a NBR ISSO/IEC 12207, que estabelece uma estrutura comum para os processos de ciclo de vida de software.
Já um modelo descritivo apresenta o processo em detalhes, é como se fosse um guia para o desenvolvimento de software.
Ambas as formas podem ser utilizadas.
Gabarito: Correto
- (CESPE / MEC – 2011) Atividades comuns a todos os processos de software incluem a especificação, o projeto, a implementação e a validação.
Sommerville afirma que um processo de software é um conjunto de atividades e resultados associados que produz um produto de software.
De acordo com ele, existem quatro atividades fundamentais de processo, que são comuns a todos os processos de software – são elas: Especificação de Software; Desenvolvimento de Software (Projeto e Implementação); Validação de Software; e Evolução de Software.
Notem que o examinador dividiu a atividade de Desenvolvimento em Projeto e Implementação, mas não invalida a questão.
Professor, ele não falou sobre a evolução! Sim, mas a questão apenas afirma que essas são atividades comuns e, não, que são as únicas.
Gabarito: Correto
- (CESPE / TJ-ES – 2011) Entre as etapas do ciclo de vida de software, as menos importantes incluem a garantia da qualidade, o projeto e o estudo de viabilidade. As demais atividades do ciclo, como a implementação e os testes, requerem maior dedicação da equipe e são essenciais.
Para a definição completa do processo, cada atividade descrita no modelo de ciclo de vida deve ser decomposta e para suas subatividades, devem ser associados métodos, técnicas, ferramentas e critérios de qualidade, entre outros, formando uma base sólida para o desenvolvimento.
Adicionalmente, outras atividades, tipicamente de cunho gerencial, devem ser definidas, como controle e garantia da qualidade.
Não existe uma hierarquia de etapas mais importantes e menos importantes! Gabarito: Errado
- (CESPE / TJ-ES – 2011) O modelo de processo incremental de desenvolvimento de software é iterativo, assim como o processo de prototipagem. Contudo, no processo incremental, diferentemente do que ocorre no de prototipagem, o objetivo consiste em apresentar um produto operacional a cada incremento.
De fato, no modelo iterativo e incremental, apresenta-se sempre um produto a cada incremento.
Já na prototipação, não.
Idealmente, ele serve apenas para identificar requisitos.
Gabarito: Correto
- (CESPE / AL-ES – 2011) O ciclo de vida RAD (Rapid Application Development), por privilegiar a rapidez do desenvolvimento, não possui etapa de modelagem.
Como não?
Existe Modelagem de Negócio, Dados e Processo!
Gabarito: Errado
- (CESPE / DETRAN/ES – 2010) Segundo princípio da engenharia de software, os vários artefatos produzidos ao longo do seu ciclo de vida apresentam, de forma geral, nível de abstração cada vez menor.
Galera, vamos pensar um pouco! A abstração é a subtração de detalhes – focar-se no que é mais relevante e ignorar detalhes menos relevantes.
No início do ciclo de vida, os artefatos são bastante abstratos.
Temos, por exemplo, uma modelagem do negócio, um documento de requisitos funcionais, a abstração vai diminuindo e temos a modelagem visual de análise, depois a modelagem do projeto, até chegar ao código-fonte e ao executável do software.
Nesse ponto, temos o menor nível de abstração (com muitos detalhes!).
Compreenderam?
Gabarito: Correto
- (CESPE / TRE-BA – 2010) Entre os desafios enfrentados pela engenharia de software estão lidar com sistemas legados, atender à crescente diversidade e atender às exigências quanto a prazos de entrega reduzidos.
Bem, essa questão é bastante intuitiva.
De fato, a engenharia de software tem que lidar com sistemas legados, atender à crescente diversidade e atender às exigências quanto aos (curtos) prazos de entrega.
Gabarito: Correto
- (CESPE / TRE-BA – 2010) Um modelo de processo de software consiste em uma representação complexa de um processo de software, apresentada a partir de uma perspectiva genérica.
Um modelo de processo é uma representação abstrata de um esqueleto de processo, incluindo tipicamente algumas atividades principais, a ordem de precedência entre elas e, opcionalmente, artefatos requeridos e produzidos.
Em geral, um modelo de processo descreve uma filosofia de organização de atividades, estruturando-as em fases e definindo como essas fases estão relacionadas.
Logo, um modelo de processo de software ou modelo de ciclo de vida trata da representação abstrata/simplificada de um processo de software, apresentada a partir de uma perspectiva específica.
Note: Sommerville afirma que cada modelo representa uma perspectiva particular de um processo.
No entanto, esses modelos são genéricos no sentido de que podem ser adaptados e aplicados a uma ampla gama de projetos de desenvolvimento de software.
Gabarito: Errado
- (CESPE / EMBASA – 2010) Ciclo de vida de um software resume-se em eventos utilizados para definir o status de um projeto.
O ciclo de vida de software é um conjunto de estágios (e, não, eventos) utilizados para definir o status de um software (e, não, projeto).
Sommerville afirma, por exemplo, que um ciclo de vida é composto por estágios que demonstram atividades fundamentais de desenvolvimento.
Questão errada!
Gabarito: Errado
- (CESPE / DETRAN-ES – 2010) Quando um aplicativo de software desenvolvido em uma organização atinge, no fim do seu ciclo de vida, a fase denominada aposentadoria, descontinuação ou fim de vida, todos os dados por ele manipulados podem ser descartados.
Essa questão é um absurdo! Observem que ela afirma “podem ser descartados”.
Ora, é evidente que podem ser descartados.
No entanto, o gabarito oficial é errado!
Gabarito: Errado
- (CESPE / BASA – 2010) No modelo em cascata, o projeto segue uma série de passos ordenados.
Ao final de cada projeto, a equipe de projeto finaliza uma revisão.
O desenvolvimento continua e, ao final, o cliente avalia a solução proposta.
De acordo com Vasconcelos (2006), no Modelo em Cascata, o projeto segue uma série passos ordenados, ao final de cada fase, a equipe de projeto finaliza uma revisão.
Além disso, o desenvolvimento não continua até que o cliente esteja satisfeito com os resultados alcançados.
A questão afirma que a equipe de projeto finaliza uma revisão ao final de cada projeto, mas na verdade é ao final de cada fase.
Gabarito: Errado
- (CESPE / ANAC – 2009) O termo engenharia pretende indicar que o desenvolvimento de software submete-se a leis similares às que governam a manufatura de produtos industriais em engenharias tradicionais, pois ambos são metodológicos.
Perfeito! A Engenharia busca os princípios mais consolidados de outras engenharias mais tradicionais – engenharia mecânica, civil, elétrica, etc.
Gabarito: Correto
40.(CESPE / TCE-TO – 2009 – Item A) Quanto maior e mais complexo o projeto de software, mais simples deve ser o modelo de processo a ser adotado.
Galera, não existe essa relação! Em geral, quanto mais complexo o projeto mais complexo o modelo.
No entanto, isso também não é uma regra.
Hoje em dia, existem projetos megacomplexos feitos utilizando metodologias ágeis, por exemplo.
Gabarito: Errado
- (CESPE / TCE-TO – 2009 – Item B) O modelo de ciclo de vida do software serve para delimitar o alvo do software. Nessa visão, não são consideradas as atividades necessárias e o relacionamento entre elas.
A escolha de um modelo de ciclo de vida (para concursos, sinônimo de modelo de processo) é o ponto de partida para a definição de um processo de desenvolvimento de software.
Um modelo de ciclo de vida, geralmente, organiza as macro-atividades básicas do processo, estabelecendo precedência e dependência entre as mesmas.
Logo, o alvo do software serve para delimitar o modelo de ciclo de vida a ser escolhido.
Primeiro, define-se o alvo do software para, só então, escolher o modelo de ciclo de vida mais adequado.
Ademais, são consideradas as atividades necessárias e o relacionamento entre elas.
Gabarito: Errado
- (CESPE / INMETRO – 2009) Em uma empresa que tenha adotado um processo de desenvolvimento de software em cascata, falhas no levantamento de requisitos têm maior possibilidade de gerar grandes prejuízos do que naquelas que tenham adotado desenvolvimento evolucionário.
VANTAGENS
- É simples de entender e fácil de aplicar, facilitando o planejamento.
- Fixa pontos específicos para a entrega de artefatos.
- Funciona bem para equipes tecnicamente fracas.
- É fácil de gerenciar, devido a sua rigidez.
- Realiza documentação extensa por cada fase ou estágio.
- Possibilita boa aderência a outros modelos de processo.
- Funciona bem com projetos pequenos e com requisitos bem conhecidos.
DESVANTAGENS
- Divisão inflexível do projeto em estágios distintos.
- Dificuldade em incorporar mudanças de requisitos.
- Clientes só visualizam resultados próximos ao final do projeto.
- Atrasa a redução de riscos.
- Apenas a fase final produz um artefato de software entregável.
- Cliente deve saber todos os requisitos no início do projeto.
- Modelo inicial (Royce) não permitia feedback entre as fases do projeto.
- Pressupõe que os requisitos ficarão estáveis ao longo do tempo.
- Não funciona bem com projetos complexos e OO, apesar de compatível.
O Modelo em Cascata, de fato, não reage bem a mudanças; já Modelo evolucionário é mais adaptável a mudanças por se utilizar de iterações.
Gabarito: Correto
- (CESPE / INMETRO – 2009) Em um processo de desenvolvimento em cascata, os testes de software são realizados todos em um mesmo estágio, que acontece após a finalização das fases de implementação.
POR SOMMERVILLE
Análise e Definição de Requisitos
Projeto de Sistema e Software
Implementação e Teste de Unidade
Integração e Teste de Sistema
Operação e Manutenção
POR ROYCE
Requisitos de Sistema
Requisitos de Software
Análise
Projeto
Codificação
Teste
Operação
POR PRESSMAN (4ª ED)
Modelagem e Engenharia do Sistema/Informação
Análise de Requisitos de Software
Projeto
Geração de Código
Teste e Manutenção
POR PRESSMAN (6ª ED)
Comunicação
Planejamento
Modelagem
Construção
Implantação
Todos em um mesmo estágio, não.
A grande maioria dos testes ocorrem, de fato, após a finalização das fases de implementação.
No entanto, podem ocorrer testes unitários durante a própria implementação.
Gabarito: Errado
- (CESPE / IPEA – 2009) No modelo em cascata de processo de desenvolvimento, os clientes devem definir os requisitos apenas durante a fase de projeto; e os projetistas definem as estratégias de projeto apenas durante a fase de implementação.
As fases do ciclo de vida envolvem definição de requisitos, projeto, implementação, teste, integração, operação e manutenção.
Em cada fase do ciclo de vida, podem ser produzidos diversos artefatos.
Essa questão não faz sentido! Os clientes definem os requisitos durante a fase de Definição de Requisitos.
Já os projetistas definem as estratégias de projeto apenas durante a fase Projeto.
Gabarito: Errado
- (CESPE – 2009 – INMTRO – Analista de Sistema) No desenvolvimento de software, o modelo em cascata é estruturado de tal maneira que as fases que compõem o desenvolvimento são interligadas. Nessa situação, o final de uma fase implica o início de outra.
No Modelo em Cascata, uma fase só se inicia após o término e aprovação da fase anterior, isto é, há uma sequência de desenvolvimento do projeto.
Por exemplo, a Fase 4 só é iniciada após o término e aprovação da Fase 3.
A Fase 5 só é iniciada após o término e aprovação da Fase 4.
Logo, está em conformidade com a definição.
Gabarito: Correto
- (CESPE / TRE-MT – 2009 – Item A) O modelo em cascata é apropriado para software em que os requisitos ainda não foram bem compreendidos, pois é focado na criação de incrementos.
A utilização do Modelo em Cascata deve ocorrer preferencialmente quando os requisitos forem bem compreendidos e houver pouca probabilidade de mudanças radicais durante o desenvolvimento do sistema.
Logo, questão totalmente errada! Gabarito: Errado
- (CESPE / UNIPAMPA – 2009 – Item D) O modelo em cascata sugere uma abordagem sistemática e sequencial para o desenvolvimento de software.
Sua natureza linear leva a estados de bloqueio nos quais, para que nova etapa seja iniciada, é necessário que a documentação associada à fase anterior tenha sido aprovada.
No Modelo em Cascata, uma fase só se inicia após o término e aprovação da fase anterior, isto é, há uma sequência de desenvolvimento do projeto.
Por exemplo: a Fase 4 só é iniciada após o término e aprovação da Fase 3.
A Fase 5 só é iniciada após o término e aprovação da Fase 4.
Não basta terminar uma fase, é necessário que ela tenha sido aprovada.
Gabarito: Correto
- (CESPE / UNIPAMPA – 2009) No modelo de desenvolvimento incremental, a cada iteração são realizadas várias tarefas.
Na fase de análise, pode ser feito o refinamento de requisitos e o refinamento do modelo conceitual.
Perfeito, é a fase seguinte à fase de requisitos e busca refiná-los.
Gabarito: Correto
- (CESPE / INPE – 2008) O ciclo de vida do software tem início na fase de projeto.
Mais uma vez: alguns autores afirmam que os modelos de ciclo de vida básicos, de maneira geral, contemplam pelo menos as fases de: Planejamento; Análise e Especificação de Requisitos; Projeto; Implementação; Testes; Entrega e Implantação; Operação; e Manutenção.
Logo, ele não começa com projeto! Como você começa com projeto sem sequer levantar os requisitos? Era possível responder usando só lógica!
Gabarito: Errado
- (CESPE / TST – 2008) No modelo de desenvolvimento sequencial linear, a fase de codificação é a que gera erros de maior custo de correção.
Galera, erro na fase de requisitos que não foi corrigido e foi descoberto no final do processo de desenvolvimento, terá um custo de correção altíssimo, visto que provavelmente terá que se refazer tudo novamente.
Ora, se eu peço a construção de um carro e você constrói uma moto, o custo para corrigir esse erro será altíssimo.
Portanto não confundam essas duas coisas! Percebam o que eu disse: quanto mais tarde se descobre um erro, mais caro se torna sua correção.
Dizendo isso de outra forma: erros nas fases iniciais possuem custo de correção altíssimo.
Uma coisa é o momento em que o erro ocorre (quanto mais cedo, mais caro); outra coisa é o momento em que um erro é identificado (quanto mais tarde, mais caro).
Percebam que erros nas fases iniciais possuem custos de correção mais altos.
Logo, o maior custo está na fase de codificação? Não, está na fase de requisitos que é a fase inicial!
Gabarito: Errado
- (CESPE / SERPRO – 2008) O modelo em cascata consiste de fases e atividades que devem ser realizadas em sequência, de forma que uma atividade é requisito da outra.
No Modelo em Cascata, uma fase só se inicia após o término e aprovação da fase anterior, isto é, há uma sequência de desenvolvimento do projeto.
Por exemplo, a Fase 4 só é iniciada após o término e aprovação da Fase 3.
A Fase 5 só é iniciada após o término e aprovação da Fase 4.
Gabarito: Correto
- (CESPE / MPE-AM – 2008) O modelo de desenvolvimento sequencial linear tem como característica principal a produção de uma versão básica, mas funcional, do software desde as primeiras fases.
VANTAGENS
- É simples de entender e fácil de aplicar, facilitando o planejamento.
- Fixa pontos específicos para a entrega de artefatos.
- Funciona bem para equipes tecnicamente fracas.
- É fácil de gerenciar, devido a sua rigidez.
- Realiza documentação extensa por cada fase ou estágio.
- Possibilita boa aderência a outros modelos de processo.
- Funciona bem com projetos pequenos e com requisitos bem conhecidos.
DESVANTAGENS
- Divisão inflexível do projeto em estágios distintos.
- Dificuldade em incorporar mudanças de requisitos.
- Clientes só visualizam resultados próximos ao final do projeto.
- Atrasa a redução de riscos.
- Apenas a fase final produz um artefato de software entregável.
- Cliente deve saber todos os requisitos no início do projeto.
- Modelo inicial (Royce) não permitia feedback entre as fases do projeto.
- Pressupõe que os requisitos ficarão estáveis ao longo do tempo.
- Não funciona bem com projetos complexos e OO, apesar de compatível.
Pelo contrário, somente nas fases finais que se tem uma versão! Essa definição está mais com cara de modelo de desenvolvimento em prototipagem.
Gabarito: Errado
- (CESPE / TJ-DF – 2008) No modelo de desenvolvimento incremental, embora haja defasagem entre os períodos de desenvolvimento de cada incremento, os incrementos são desenvolvidos em paralelo.
Questão perfeita! Os incrementos são codificados não exatamente em paralelo – há uma pequena defasagem.
Gabarito: Correto
- (CESPE / TST – 2008) O modelo RAD (Rapid Application Development) consiste em uma forma de prototipação para esclarecer dúvidas da especificação do software.
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: Errado
- (CESPE / TRE-MA – 2008) 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.
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: Correto
- (CESPE / TRE-MA – 2008) 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
Perfeito, ela se utiliza de uma construção baseada em componentes, fazendo com que o desenvolvimento seja mais rápido.
Gabarito: Correto
- (CESPE / MPE-AM – 2008) 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.
Modelo Incremental não combina características do Modelo Sequencial Linear com RAD.
Aliás, RAD é Incremental!
Gabarito: Errado
- (CESPE / TSE – 2006 – Item D) O modelo em cascata organiza o desenvolvimento em fases.
Esse modelo encoraja a definição dos requisitos antes do restante do desenvolvimento do sistema.
Após a especificação e a análise dos requisitos, têm-se o projeto, a implementação e o teste.
POR SOMMERVILLE
Análise e Definição de Requisitos
Projeto de Sistema e Software
Implementação e Teste de Unidade
Integração e Teste de Sistema
Operação e Manutenção
POR ROYCE
Requisitos de Sistema
Requisitos de Software
Análise
Projeto
Codificação
Teste
Operação
POR PRESSMAN (4ª ED)
Modelagem e Engenharia do Sistema/Informação
Análise de Requisitos de Software
Projeto
Geração de Código
Teste e Manutenção
POR PRESSMAN (6ª ED)
Comunicação
Planejamento
Modelagem
Construção
Implantação
Perfeito! De fato, segue essa ordem!
Gabarito: Correto
- (CESPE / MPE-AM – 2005) O modelo RAD (rapid application development) é específico para projetos de software que empregam linguagens de programação de terceira geração.
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: Letra E
- (CESPE / IGEPREV – 2005) O modelo Rapid Application Development (RAD) é apropriado para projetos que envolvem grandes riscos técnicos.
Pelo contrário, é apropriado para projetos que envolvem pequenos riscos técnicos.
Gabarito: Errado
- (CESPE / ANS – 2005) O modelo Rapid Application Development (RAD) é uma adaptação do modelo em espiral para atender a projetos de software fundamentados em componentes.
Na verdade, ele é uma adaptação de alta velocidade do modelo em cascata.
Gabarito: Errado
- (CESPE / AL-ES – 2005 – Item B) O modelo de desenvolvimento em cascata descreve ciclos sequenciais, incrementais e iterativos, possuindo, entre outras, as fases de requisitos e implementação.
Não! Ele não descreve ciclos, muito menos ciclos iterativos.
Na verdade, essa é a definição de Modelo Iterativo e Incremental.
Gabarito: Errado
- (CESPE / STJ – 2004) O modelo de desenvolvimento seqüencial linear, também chamado modelo clássico ou modelo em cascata, caracteriza-se por não acomodar adequadamente as incertezas que existem no início de um projeto de software, em especial as geradas pela dificuldade do cliente de explicitar todos os requerimentos que o programa deve contemplar.
Como uma fase só se inicia após o término da fase anterior, só é possível em geral verificar se houve erros nas últimas fases – como pode ser visto na imagem abaixo.
Em outros modelos, os riscos são reduzidos desde as primeiras fases do processo de desenvolvimento.
Logo, lembrem-se que ele acumula riscos e não lida bem com requisitos voláteis.
Gabarito: Correto
- (CESPE / ABIN – 2004) O modelo de desenvolvimento seqüencial linear, também denominado modelo em cascata, é incompatível com o emprego de técnica de análise orientada a objetos no desenvolvimento de um sistema de informação.
VANTAGENS
- É simples de entender e fácil de aplicar, facilitando o planejamento.
- Fixa pontos específicos para a entrega de artefatos.
- Funciona bem para equipes tecnicamente fracas.
- É fácil de gerenciar, devido a sua rigidez.
- Realiza documentação extensa por cada fase ou estágio.
- Possibilita boa aderência a outros modelos de processo.
- Funciona bem com projetos pequenos e com requisitos bem conhecidos.
DESVANTAGENS
- Divisão inflexível do projeto em estágios distintos.
- Dificuldade em incorporar mudanças de requisitos.
- Clientes só visualizam resultados próximos ao final do projeto.
- Atrasa a redução de riscos.
- Apenas a fase final produz um artefato de software entregável.
- Cliente deve saber todos os requisitos no início do projeto.
- Modelo inicial (Royce) não permitia feedback entre as fases do projeto.
- Pressupõe que os requisitos ficarão estáveis ao longo do tempo.
- Não funciona bem com projetos complexos e OO, apesar de compatível.
Ele é compatível, mas não é recomendado! Por que, não? Imagina um projeto super complexo que utiliza uma análise orientada a objetos (que é um modelo mais sofisticado que a análise estruturada).
Lembre-se que, no Modelo em Cascata, você não pode errar, porque se você errar, os riscos de o projeto falhar são enormes! Por essa razão, ele não é recomendável, apesar de compatível!
Gabarito: Errado
- (CESPE / TRE-AL – 2004) O modelo cascata ou ciclo de vida clássico necessita de uma abordagem sistemática, que envolve, em primeiro lugar, o projeto e, em seguida, a análise, a codificação, os testes e a manutenção.
POR SOMMERVILLE
Análise e Definição de Requisitos
Projeto de Sistema e Software
Implementação e Teste de Unidade
Integração e Teste de Sistema
Operação e Manutenção
POR ROYCE
Requisitos de Sistema
Requisitos de Software
Análise
Projeto
Codificação
Teste
Operação
POR PRESSMAN (4ª ED)
Modelagem e Engenharia do Sistema/Informação
Análise de Requisitos de Software
Projeto
Geração de Código
Teste e Manutenção
POR PRESSMAN (6ª ED)
Comunicação
Planejamento
Modelagem
Construção
Implantação
Primeiro Projeto e depois Análise? Não, Análise vem antes do Projeto!
Gabarito: Errado
- (CESPE / BASA – 2004) 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.
Ciclo de desenvolvimento curto? Isso é RAD e, não, Prototipagem! 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.
Gabarito: Errado
- (FCC / TST – 2012) A Engenharia de Software:
a) é uma área da computação que visa abordar de modo sistemático as questões técnicas e não técnicas no projeto, implantação, operação e manutenção no desenvolvimento de um software.
b) consiste em uma disciplina da computação que aborda assuntos relacionados a técnicas para a otimização de algoritmos e elaboração de ambientes de desenvolvimento.
c) trata-se de um ramo da TI que discute os aspectos técnicos e empíricos nos processos de desenvolvimento de sistemas, tal como a definição de artefatos para a modelagem ágil.
d) envolve um conjunto de itens que abordam os aspectos de análise de mercado, concepção e projeto de software, sendo independente da engenharia de um sistema.
e) agrupa as melhores práticas para a concepção, projeto, operação e manutenção de artefatos que suportam a execução de programas de computador, tais como as técnicas de armazenamento e as estruturas em memória principal.
De acordo com Pressman: “A Engenharia de Software ocorre como consequência de um processo chamado Engenharia de Sistemas.
Em vez de se concentrar somente no software, a engenharia de sistemas focaliza diversos elementos, analisando, projetando, e os organizando em um sistema que pode ser um produto, um serviço ou uma tecnologia para transformação da informação ou controle”.
Logo, vamos aos julgamentos:
(a) Perfeito, observem as palavras-chave: modo sistemático; questões técnicas e não técnicas; projeto, implantação, operação e manutenção de desenvolvimento de software.
(b) Técnicas para otimização de algoritmos e elaboração de ambientes de desenvolvimento? Não, isso não é Engenharia de Software.
(c) Pessoal, discordo do gabarito! Certa vez, um aluno me disse que talvez fosse porque aspectos empíricos são mais voltados para metodologias ágeis.
Sim, é verdade! No entanto, a engenharia de software trata também de metodologias ágeis.
Se alguém encontrar o erro, avise :-]
(d) A Análise de Mercado serve mais como uma técnica para Análise de Interfaces, mas pode ser vista como um dos aspectos que envolvem a Engenharia de Software.
Pressman afirma que: “A Análise de Mercado pode ser inestimável na definição de segmentos de mercado e no entendimento de como cada segmento poderia usar o software de modos sutilmente diferentes”.
De todo modo, a questão está errada porque a Engenharia de Software depende da Engenharia de Sistema (como é mostrado acima).
(e) Suportam a execução? Não, suportam o desenvolvimento de programas de computador.
Gabarito: Letra A
- (FCC / TRT6 – 2012) Considere: é uma disciplina que se ocupa de todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até a manutenção desse sistema, depois que ele entrou em operação.
Seu principal objetivo é fornecer uma estrutura metodológica para a construção de software com alta qualidade.
A definição refere-se:
a) ao ciclo de vida do software.
b) à programação orientada a objetos.
c) à análise de sistemas.
d) à engenharia de requisitos.
e) à engenharia de software.
Engenharia de Software é uma disciplina de engenharia que se ocupa de todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até a manutenção desse sistema, após sua entrada em produção.
A meta principal da Engenharia de Software é desenvolver sistemas de software com boa relação custo-benefício.
Essa é a pura definição de Engenharia de Software!
Gabarito: Letra E
- (FCC / MPE-AP – 2012) Um processo de software é um conjunto de atividades relacionadas que levam à produção de um produto de software.
Existem muitos processos de software diferentes, mas todos devem incluir quatro atividades fundamentais: especificação, projeto e implementação, validação e:
a) teste
b) evolução.
c) prototipação.
d) entrega.
e) modelagem.
As atividades são Especificação de Software; Desenvolvimento de Software (Projeto e Implementação); Validação de Software; e Evolução de Software.
Logo, trata-se da evolução!
Gabarito: Letra B
- (FCC / TJ-RJ – 2012 – Item E) Dos diferentes modelos para o ciclo de vida de desenvolvimento de um software é correto afirmar que o modelo em cascata é o mais recente e complexo.
Citado inicialmente em 1970 por W. Royce, também designado Cascata ou Clássico ou Sequencial ou Linear ou Tradicional ou Waterfall ou Rígido ou Monolítico (todos esses nomes já caíram em prova!).
Esse nome é devido ao encadeamento simples de uma fase com a outra.
Os estágios do modelo demonstram as principais atividades de desenvolvimento.
Mais recente? Não, muito antigo! Complexo? Não, possui um encadeamento simples de fases.
Gabarito: Errado
- (FCC / INFRAERO – 2011) Em relação à Engenharia de Software, é INCORRETO afirmar:
a) O design de software, ao descrever os diversos aspectos que estarão presentes no sistema quando construído, permite que se faça a avaliação prévia para garantir que ele alcance os objetivos propostos pelos interessados.
b) A representação de um design de software mais simples para representar apenas as suas características essenciais busca atender ao princípio da abstração.
c) Iniciar a entrevista para obtenção dos requisitos de software com perguntas mais genéricas e finalizar com perguntas mais específicas sobre o sistema é o que caracteriza a técnica de entrevista estruturada em funil.
d) No contexto de levantamento de requisitos, funcionalidade é um dos aspectos que deve ser levado em conta na abordagem dos requisitos funcionais.
e) A representação é a linguagem do design, cujo único propósito é descrever um sistema de software que seja possível construir.
Descrever um sistema de software que seja possível construir não é o único, mas um dos objetivos da representação.
Ela auxilia a comunicação entre as partes interessadas e serve também como documentação.
Gabarito: Letra E
- (FCC / TRE-AM – 2010) A Engenharia de Software:
a) não tem como método a abordagem estruturada para o desenvolvimento de software, pois baseia-se exclusivamente nos modelos de software, notações, regras e técnicas de desenvolvimento.
b) se confunde com a Ciência da Computação quando ambas tratam do desenvolvimento de teorias, fundamentações e práticas de desenvolvimento de software.
c) tendo como foco apenas o tratamento dos aspectos de construção de software, subsidia a Engenharia de Sistemas no tratamento dos sistemas baseados em computadores, incluindo hardware e software.
d) tem como foco principal estabelecer uma abordagem sistemática de desenvolvimento, através de ferramentas e técnicas apropriadas, dependendo do problema a ser abordado, considerando restrições e recursos disponíveis.
e) segue princípios, tais como, o da Abstração, que identifica os aspectos importantes sem ignorar os detalhes e o da Composição, que agrupa as atividades em um único processo para distribuição aos especialistas.
(a) Errado.
Pelo contrário, ela se baseia em uma abordagem estruturada e sistemática! A IEEE define engenharia de software como a aplicação de uma abordagem sistemática, disciplinada e quantificável de desenvolvimento, operação e manutenção de software.
Já Friedrich Bauer conceitua como a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe em máquinas reais.
(b) Errado.
Na verdade, Engenharia de Software é uma disciplina da Ciência da Computação.
A Engenharia de Software tem por objetivos a aplicação de teoria, modelos, formalismos, técnicas e ferramentas da ciência da computação e áreas afins para a desenvolvimento sistemático de software.
Associado ao desenvolvimento, é preciso também aplicar processos, métodos e ferramentas sendo que a pedra fundamental que sustenta a engenharia de software é a qualidade.
(c) Apenas o tratamento dos aspectos de construção de software? Só construção? Não!
(d) Correto, é exatamente isso!
(e) Composição? Não, Decomposição! Divide-se o problema em partes para que cada uma possa ser resolvida de uma forma mais específica.
Além disso, a abstração ignora detalhes! Gabarito: Letra D
- (FCC / DPE/SP – 2010) A Engenharia de Software:
I. não visa o desenvolvimento de teorias e fundamentações, preocupando-se unicamente com as práticas de desenvolvimento de software.
II. tem como foco o tratamento dos aspectos de desenvolvimento de software, abstraindo-se dos sistemas baseados em computadores, incluindo hardware e software.
III. tem como métodos as abordagens estruturadas para o desenvolvimento de software que incluem os modelos de software, notações, regras e maneiras de desenvolvimento.
IV. segue princípios, tais como, o da Abstração, que identifica os aspectos importantes sem ignorar os detalhes e o da Composição, que agrupa as atividades em um único processo para distribuição aos especialistas.
É correto o que se afirma em:
a) III e IV, apenas.
b) I, II, III e IV.
c) I e II, apenas.
d) I, II e III, apenas.
e) II, III e IV, apenas.
(I) Errado, Sommerville diz: “Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software”.
No entanto, ele não diz que a engenharia de software se preocupa unicamente com as práticas de desenvolvimento de software.
(II) Errado, Pressman diz: “System engineering is concerned with all aspects of computer-based systems development including hardware, software, and process engineering” – a questão trata da Engenharia de Sistemas.
(III) Correto, de fato ela tem como métodos as abordagens estruturadas para o desenvolvimento de software que incluem os modelos de software, notações, regras e maneiras de desenvolvimento.
(IV) Errado, o princípio da abstração ignora os detalhes; e o princípio da composição não existe – o que existe é o princípio da decomposição.
E ele divide o problema em partes menores.
Em suma, nenhuma das opções nos atende! Vocês sabem qual opção a banca marcou como correta? A Letra D!!! E ela voltou atrás com os recursos? Não!!! Pois é, galera! Acostumem-se com isso :(
Gabarito: Letra D
- (FCC/ AFR/SP – 2009) A engenharia de software está inserida no contexto:
a) das engenharias de sistemas, de processo e de produto.
b) da engenharia de sistemas, apenas.
c) das engenharias de processo e de produto, apenas.
d) das engenharias de sistemas e de processo, apenas.
e) das engenharias de sistemas e de produto, apenas.
A engenharia de sistemas está preocupada com todos os aspectos do desenvolvimento de sistemas computacionais, incluindo engenharia de hardware, engenharia de software e engenharia de processos.
Percebam, então, que a Engenharia de Sistemas está em um contexto com várias outras engenharias.
Gabarito: Letra A
- (FCC / SEFAZ-SP – 2009 – Item B) O processo de engenharia de software denominado ciclo de vida clássico refere-se ao modelo incremental.
Citado inicialmente em 1970 por W. Royce, também designado Cascata ou Clássico ou Sequencial ou Linear ou Tradicional ou Waterfall ou Rígido ou Monolítico (todos esses nomes já caíram em prova!).
Esse nome é devido ao encadeamento simples de uma fase com a outra.
Os estágios do modelo demonstram as principais atividades de desenvolvimento.
Logo, modelo clássico se refere a modelo em cascata, sequencial, linear, tradicional, waterfall, rígido ou monolítico.
Gabarito: Errado
- (FGV / TJ-SE – 2023) O gerente de TI de sua empresa solicitou a implementação de um pequeno sistema para geração da folha salarial.
Como será um sistema simples, com regras imutáveis e bem definidas, o analista já definiu os requisitos e efetuou a modelagem do sistema.
Após o final da implementação, será iniciada a fase de testes e, por fim, a implantação no setor financeiro.
De acordo com esse contexto, o modelo de ciclo de vida adotado foi:
a) RUP;
b) modelo incremental;
c) prototipagem;
d) modelo evolutivo;
e) modelo em cascata.
(a) Errado.
O RUP é um processo iterativo e incremental que inclui várias iterações e refinamentos;
(b) Errado.
O modelo incremental envolve a entrega de partes do software em incrementos funcionais;
(c) Errado.
A prototipagem foca na criação de protótipos funcionais para refinar requisitos;
(d) Errado.
O modelo evolutivo envolve o desenvolvimento evolutivo e a adaptação contínua do software;
(e) Correto.
O modelo em cascata segue uma abordagem sequencial e sistemática, como descrito, onde cada fase começa apenas após a conclusão da anterior.
Gabarito: Letra E
- (FGV / COMPESA – 2016) Observe a figura a seguir, que representa um modelo de processo de software.Este modelo, algumas vezes chamado ciclo de vida clássico, sugere uma abordagem sequencial e sistemática para o desenvolvimento de software nos casos em que os requisitos de um problema são bem compreendidos e quando o trabalho flui da comunicação ao emprego de forma relativamente linear.
O modelo apresentado é denominado:
a) incremental.
b) cascata.
c) evolucionário.
d) unificado
e) especializado.
Palavras-chave: ciclo de vida clássico; abordagem sequencial e sistemática; útil quando requisitos são bem compreendidos.
Trata-se do famoso Modelo em Cascata (Waterfall).
Gabarito: Letra B
- (FGV / BADESC – 2010) De acordo com Pressman, a engenharia de software é baseada em camadas, com foco na qualidade.
Essas camadas são:
a) métodos, processo e teste.
b) ferramentas, métodos e processo.
c) métodos, construção, teste e implantação.
d) planejamento, modelagem, construção, validação e implantação.
e) comunicação, planejamento, modelagem, construção e implantação.
Bastava lembrar da imagem para responder à questão!
Ferramentas --------------- Métodos ------------------------- Processo --------------------------------- Foco na qualidade ---------------------------------------
Gabarito: Letra B
- (FGV / Fiocruz – 2010) 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.
Nesse modelo, três das principais fases são abrangidas pelas modelagens: Modelagem de Negócios, Modelagem de Dados e Modelagem de Processos.
Gabarito: Letra E
- (FGV / CODESP-SP – 2010) A UML é uma linguagem visual para modelar sistemas orientados a objetos, sendo independente tanto de linguagens de programação quanto de processos de desenvolvimento.
Nesse contexto, analise a figura abaixo, que representa um modelo de ciclo de vida para desenvolvimento de sistemas.
Essa abordagem divide o desenvolvimento de software em ciclos, em que, em cada ciclo, podem ser identificadas as fases de análise, projeto, implementação e testes.
Cada um dos ciclos considera um subconjunto de requisitos, e estes são desenvolvidos uma vez que sejam alocados a um ciclo de desenvolvimento.
Esse modelo de ciclo de vida é denominado:
a) clássico;
b) em cascata;
c) prototipação;
d) estruturado por fases;
e) incremental e iterativo.
Uma informação bizarra: a questão menciona uma figura, mas a prova não trouxe figura alguma e a questão não foi anulada.
De toda forma, a abordagem em ciclos em que, em cada ciclo, podem ser identificadas as fases de análise, projeto, implementação e testes, sendo que cada um dos ciclos considera um subconjunto de requisitos, e estes são desenvolvidos uma vez que sejam alocados a um ciclo de desenvolvimento é o modelo iterativo e incremental.
Gabarito: Letra E
- (FGV / Senado Federal – 2008) Considere as seguintes assertivas sobre modelos de processos de software:
I. No modelo em cascata, a fase seguinte não deve iniciar antes que a fase precedente tenha sido concluída.
II. No modelo evolucionário, a mudança constante tende a corromper a estrutura do software
III. A explícita consideração dos riscos no modelo em espiral distingue esse modelo dos modelos em cascata e evolucionário.
As assertivas corretas são:
a) somente I.
b) somente I e II.
c) somente I e III.
d) somente II e III.
e) I, II e III.
(I) Correto, uma fase só se inicia após o término e aprovação da fase anterior;
(II) Correto, muitas mudanças tendem a corromper a estrutura do software e isso as tornam difíceis e caras;
(III) Correto, a ideia do modelo espiral é representar um processo de software orientado a riscos, o que o diferencia dos demais modelos.
Gabarito: Letra E
- (UFRR / UFRR – 2023) O modelo em cascata é um modelo de processo de software no qual as fases são executadas em uma ordem específica, cada uma produzindo um conjunto específico de artefatos, antes de passar para a próxima fase.
O modelo em cascata é útil em projetos em que os requisitos estão bem definidos e estabelecidos e onde as mudanças durante o processo de desenvolvimento são mínimas.
Nesse sentido, pode-se afirmar que a principal característica do modelo em cascata é:
a) ser orientado a objetos.
b) ser sequencial e linear.
c) ser baseado em prototipação.
d) ser iterativo e incremental.
e) ser sequencial e incremental.
(a) Errado.
O modelo em cascata não é especificamente orientado a objetos; essa é uma característica que pode ou não ser aplicada dependendo da abordagem de programação escolhida, não do modelo de processo;
(b) Correto.
O modelo em cascata é conhecido por sua abordagem sequencial e linear, onde cada fase deve ser completada antes que a próxima comece, sem sobreposições ou iterações frequentes;
(c) Errado.
A prototipação não é uma característica central do modelo em cascata, pois este enfatiza a finalização de uma fase antes do início da outra, ao contrário da prototipação que envolve revisões iterativas;
(d) Errado.
“Iterativo e incremental” descreve modelos de processo que permitem revisões e desenvolvimentos em etapas, características não presentes no modelo em cascata;
(e) Errado.
Embora o modelo em cascata seja sequencial, ele não é incremental no sentido de desenvolvimento de software, pois não envolve adições pequenas e contínuas, mas sim fases completas e distintas.
Gabarito: Letra B