Engenharia De Software Flashcards
O que é engenharia de software?
Engenharia de software é uma disciplina de engenharia relacionada a todos os aspectos de produção de software.
O que é software?
Programas de computador e documentação associada. Os produtos de software podem ser desenvolvidos para um cliente específico ou para um mercado geral.
Qual é a diferença entre engenharia de software e ciência da computação?
A ciência da computação está relacionada com teorias e fundamentos; a engenharia de software está relacionada com a prática de desenvolvimento e entrega de software útil..
Qual a diferença entre engenharia de software e engenharia de sistemas?
A engenharia de sistemas está relacionada a todos os aspectos de desenvolvimento de sistemas baseados em computadores, incluindo hardware, software e engenharia de processo. A engenharia de software é parte desse processo.
Assim como a engenharia de software, existe também na área de informática a chamada ciência da computação. Qual a diferença entre engenharia de software e ciência da computação?
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.
O que é um processo de software?
Um conjunto de atividades, métodos, práticas e transformações que as pessoas (papéis) utilizam para desenvolver e manter software e seus produtos relacionados (quem faz o que e quando).
O que é uma técnica?
Aplicação ótima dos métodos tendo como compromisso maior com o resultado, e não com a aplicação formal dos métodos.
O que são métodos de engenharia de software?
Abordagens estruturadas para desenvolvimento de software que incluem modelos de sistema, notações, regras, recomendações de projeto e guias. (Como fazer)
O que é uma atividade?
Conjunto de técnicas delimitadas conceitualmente pela transformação de um artefato específico em outro.
O que é um artefato?
Qualquer produto gerado durante a especificação, construção, implantação ou manutenção de um software.
O que é CASE? (computer-aided software Engineering)
Sistemas de software que têm a intenção de fornecer apoio automatizado (produtividade) para atividades de processo de software. Sistemas CASE são frequentemente usados para apoio ao método.
O que é uma Metodologia?
Conjunto formado por procedimentos, técnicas, ferramentas e documentação que auxiliará os responsáveis pelo desenvolvimento de sistemas em seus esforços na implementação de um novo sistema de informação.
O que é um Modelo de Processo de Desenvolvimento de Software?
O modelo de processo de desenvolvimento é uma representação abstrata de como será realizada a construção do software.
A engenharia de software é 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 sua manutenção. A engenharia de software adota métodos que:
São abordagens de estruturadas para o desenvolvimento de software, que incluem modelos de sistemas, notações, regras, recomendações de projetos e diretrizes de processos.
Engenharia de software é o estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais, abrangendo um conjunto de três elementos fundamentais: métodos, ferramentas e procedimentos. Qual o conceito de métodos?
Métodos de engenharia de software proporcionam os detalhes de como fazer para construir o software e envolvem um amplo conjunto de tarefas que incluem: planejamento e estimativa de projeto, análise de requisitos de software e sistemas, projeto de estrutura de dados, arquitetura de programa e algoritmo de processamento, codificação, teste e manutenção.
Engenharia de software é o estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais, abrangendo um conjunto de três elementos fundamentais: métodos, ferramentas e procedimentos. Qual o conceito de ferramentas?
An ferramentas proporcionam apoio automatizado ou semi-automatizado aos métodos.
Engenharia de software é o estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais, abrangendo um conjunto de três elementos fundamentais: métodos, ferramentas e procedimentos. Qual o conceito de procedimentos?
Procedimentos constituem o elo de ligação dos métodos e das ferramentas e possibilitam o desenvolvimento racional e oportuno de software.
Certo ou errado: segundo o 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.
Certo!
O conjunto de atividades e resultados associados que resulta em um produto de software recebe o nome de:
Processo de software
Certo ou errado: são elementos de um processo de desenvolvimento de software: atividade, sequencia, modelo de processo, recursos, controles, políticas e organização.
Certo!
O que é Formalidade no principio de engenharia de software?
O processo de desenvolvimento deve acontecer como uma seqüência de passos definidos com precisão; cada passo deve ser guiado por alguma metodologia que siga algum (ou alguns) método.
O que é a Abstração no principio de engenharia de software?
É o processo de identificação dos aspectos importantes de um determinado fenômeno, ignorando-se os detalhes. Pode existir diferentes visões da mesma realidade, cada uma com enfoque diferente.
O que é a Decomposição no principio de engenharia de software?
Subdivisão do trabalho em atividades específicas, com o objetivo de gerenciar a complexidade. Pode se aplicar a decomposição tanto ao processo de desenvolvimento como ao produto que está sendo construído.
O que faz a Decomposição do processo?
Permite o planejamento das atividades e diminui o tempo extra que seria gasto mudando de uma atividade para outra. Permite a atribuição de tarefas a pessoas diferentes.
O que faz a Decomposição do produto?
Permite que atividades de desenvolvimento sejam feitas em paralelo. Permite a criação de componentes independentes, portanto reutilizaveis.
O que é a Flexibilização no principio de engenharia de software?
O principio da flexibilização é necessário no processo de desenvolvimento para permitir que o produto possa ser modificado com facilidade. O processo deve ter flexibilidade suficiente para permitir que partes do produto possam ser utilizados em outros sistemas.
O que é a Generalização no principio de engenharia de software?
Uma solução mais geral para um problema tem maior potencial para ser reutilizada. Através da generalização, o desenvolvedor tem o potencial de desenvolver um componente que pode ser utilizado em mais de um ponto do sistema de software desenvolvido.
Quais são os princípios da engenharia de software?
Formalidade, abstração, decomposição, generalização e flexibilização.
Qual o foco principal da engenharia de software?
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.
A engenharia de software resume-se a um conjunto de técnicas utilizadas para o desenvolvimento e manutenção de sistemas computadorizados, visando produzir e manter softwares de forma padronizada e com qualidade. O que é a Flexibilizaçáo?
A flexibilização é o processo que permite que o software possa ser alterado, sem causar problemas para sua execução.
Certo ou errado: o termo engenharia de software 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.
Certo!
Certo ou errado: 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.
Certo!
O que a engenharia de software não visa?
Ela não visa o desenvolvimento de teorias e fundamentações. A engenharia de software se preocupa unicamente com as práticas de desenvolvimento de software.
De acordo com Pressman, a engenharia de software é baseada em camadas, com foco na qualidade. Essas camadas são:
Ferramentas, métodos e processo.
Certo ou errado: todo projeto de software é iniciado por alguma necessidade do negócio?
Certo!
Certo ou errado: os princípios de engenharia de software definem a necessidade de formalidades para reduzir inconsistências e a decomposição para lidar com a complexidade.
Certo!
O primeiro passo para alcançar estimativas para um projeto de software, por meio de análise de pontos de função, é estimar:
O tamanho do produto resultante do projeto.
A estimativa de software que se baseia na análise por pontos de função tem como insumos as métricas relacionadas a seguir:
Entradas de usuário, saídas de usuário, interfaces externas e arquivos.
Certo ou errado?
O modelo em cascata é indicado para projetos de alto risco
Errado! É para baixo risco.
Certo ou errado?
O modelo em espiral é indicado para projetos de baixo risco.
Errado! É para alto risco.
Certo ou errado?
O modelo de prototipação pode ser usado para captura de requisitos da versão definitiva do sistema.
Certo!
No âmbito dos processos desenvolvimento de software, entre as vantagens do desenvolvimento incremental sobre o modelo em cascata é:
A diminuição do custo de mudança nos requisitos do usuário, pela diminuição da análise e documentação que deve ser refeita.
Qual modelo é esse?
I. Combina a natureza iterativa de modelos incrementais com aspectos sistemáticos do modelo em cascata.
II. Pode ser aplicado em todo o ciclo de vida de uma aplicação, inclusive, após a entrega do software.
III. É um modelo que reconhece explicitamente a necessidade de gerenciar riscos.
Modelo em Espiral.
Um desenvolvedor de software atua com um usuário ouvindo suas e pedidos e criando, imediatamente, um esboço do produto desejado por esse usuário. O usuário utiliza esse esboço e dá o feedback do que precisa melhorar na aplicação, constituindo um desenvolvimento de software do tipo Prototipação. Esse modelo de ciclo de vida deve:
Destacar, de forma especial, as diversas fontes de demanda por software, os pontos de decisão durante o processo de desenvolvimento e incorporar características do mundo real.
Estudos baseados na analise de diversos projetos de software sugerem que tais projetos tem maior chance de sucesso quando empregam metodologia e gerenciamento alinhados ao paradigma de desenvolvimento de novos produtos, em contraponto ao paradigma de produção industrial. Com base nessas observações, a maioria das metodologias modernas recomendam:
Dividir o trabalho em iterações curtas, com prazos fixos, e não permitir que as mesas avancem sobre os prazos, reduzindo o escopo da iteração, se necessário.
No ciclo de vida cascata, o custo de correção é menor na fase de:
Requisitos.
Certo ou errado: No modelo de desenvolvimento incremental, embora haja defasagem entre os períodos de desenvolvimento de cada incremento, os incrementos são desenvolvidos em paralelo.
Certo!
Quais as principais técnicas do modelo RAD para produzir software rapidamente?
Reuso de componentes, Modularidade, Incrementos em ciclos curtos e Ferramentas de quarta geração.
É embasado na idéia de desenvolvimento de uma implementação inicial, expondo o resultado aos comentários do usuário e refinando esse resultado por meio de diversas versões, até que seja desenvolvido um sistema adequado. No âmbito do processo de software, trata-se de:
Desenvolvimento Evolucionário.
Quais as principais vantagens do modelo de prototipagem?
Permite uma grande interação com o cliente; Facilita o processo de definição de requisitos; Permite que o cliente teste o protótipo.
Considere as seguintes assertivas sobre o processo evolutivo de software conhecido como modelo em espiral.
Certo ou errado?
Cada atividade de negociação inicia com a identificação das partes interessadas.
A definição do ciclo de vida arquitetural é um dos três marcos do processo conhecidos como pontos de ancoragem (anchor points).
Certos!
Qual é o modelo de processo proposto no final da década de 80, que tem como principais características ser evolucionário, iterativo e focado na redução dos riscos?
Modelo em Espiral.
Existem vários modelos de ciclo de vida de software. O desenvolvimento em espiral é qual modelo?
É um modelo Iterativo.
Esse item tem a ver com Modelo Concorrente?
“A atividade de comunicação completou sua primeira iteração e está no estado aguardando modificação.”
Sim!
Esse item tem a ver com Modelo Concorrente?
“Permitem ao engenheiro de software especificar, desenvolver e verificar um sistema aplicando uma rigorosa notação matemática.”
Não, esse é o Modelo baseado em Métodos Formais.
Esse item tem a ver com Modelo Concorrente?
“Se o cliente requerer mudanças nos requisitos, a modelagem passa de ‘em desenvolvimento’ para ‘aguardando modificações’ e a ‘comunicação’ passa de ‘aguardando modificações’ para ‘em revisão’.”
Sim!
Certo ou errado?
O modelo espiral é um modelo de processo de software evolucionário que combina a natureza interativa de prototipagem com os aspectos controlados do modelo sequencial linear.
Certo!
Certo ou errado?
O modelo de processo concorrente é frequentemente usado como paradigma para o desenvolvimento de aplicações cliente/servidor, definindo atividades em duas dimensões: de sistema e de componentes.
Certo!
Certo ou errado?
O desenvolvimento baseado em aspectos se baseia na busca por interesses transversais.
Certo!
Há diversas formas de se conduzir um projeto de software visando a economia de recursos. O modelo baseado em componentes, por exemplo, incorpora, fundamentalmente:
A reutilização de software.
Certo ou errado?
“Os métodos formais definem matematicamente (estrutura e funcionalidade) os elementos da linguagem descritiva, os quais permitem o tratamento de uma classe substancial de problemas de forma concisa.”
Certo!
Considere:
I. Cada incremento de software é especificado formalmente e essa especificação é transformada em uma implementação.
II. a correção de software é demonstrada por meio de uma abordagem formal.
III. Não existe teste de defeitos no processo e o teste do sistema concentra-se na avaliação da confiabilidade.
As três características acima pertencem a um processo formal de desenvolvimento de software, denominado:
Cleanroom.
Na Orientação a Aspectos, o código que implementa um aspecto e um evento em um programa em execução no qual a recomendação associada a um aspecto pode ser executada são as respectivas definições de:
Recomendação (ou Adendo) e Ponto de Junção.
Pertence a técnica de 4 GL?
“Desenvolvido para abranger as melhores características do modelo de ciclo de vida clássico e prototipação, acrescentando um novo elemento: análise de riscos.”
Não, esse é o modelo em Espiral!
Pertence a técnica de 4 GL?
“Concentra-se na capacidade de se especificar o software a uma máquina em um nível que esteja próximo à linguagem natural.”
Sim!
Pertence a técnica de 4 GL?
“Engloba um conjunto de ferramentas de software que possibilitam que: o sistema seja especificado em uma linguagem de alto nível e o código fonte seja gerado automaticamente a partir dessas especificações.”
Sim!
Certo ou errado?
“No modelo incremental, a implementação do sistema é feita antes de sua especificação.”
Errado!
Certo ou errado?
“No modelo em cascata, cada fase inicia somente quando sua predecessora termina”
Certo!
Certo ou errado?
“O modelo em espiral requer que a especificação do sistema seja feita somente uma vez.”
Errado!
O Modelo de processo de software incremental que enfatiza um ciclo de desenvolvimento extremamente curto, obtido pelo uso de construção baseada em componentes, é denominado:
RAD
Considerando o mais antigo dos paradigmas de desenvolvimento de software. Ele obedece um fluxo sequencial, qual é esse modelo?
É o modelo Cascata.
Qual o modelo de processo de software que se caracteriza mais fortemente por uma abordagem sistemática e sequencial para o desenvolvimento de software?
Cascata.
Entre os paradigmas de ciclo de vida de engenharia de software, aquele que se caracteriza mais fortemente por uma abordagem sistemática e sequencial das atividades é o denominado:
Clássico ou Cascata.
Certo ou errado?
“No paradigma de prototipação, o protótipo idealmente serve como mecanismo para identificar os requisitos de software.”
Certo!
Certo ou errado?
“No paradigma de prototipação, o protótipo será descartado (no todo ou em parte) e o software real será reprojetado.”
Certo!
Certo ou errado?
“O modelo espiral define quatro atividades, que são executadas nesta ordem: planejamento, análise de riscos, engenharia, avaliação pelo cliente.”
Certo!
O modelo de ciclo de vida em cascata enfatiza:
Ele enfatiza a realização sequencial das atividades do desenvolvimento de um produto de software.
Certo ou errado?
“O modelo Cascata é indicado quando há a volatilidade nos requisitos.”
Errado!
Certo ou errado?
“Um risco na adoção do modelo de Prototipação é negligenciar a qualidade do produto a fim de se obter rapidamente um protótipo executável.”
Certo!
Certo ou errado?
“O uso do modelo de Prototipação reduz o risco para a gerência ao particionar o projeto em módulos com funcionalidades bem definidas, que podem ocorrer simultaneamente.”
Errado!
Certo ou errado?
“Os modelos Evolucionários são fortemente baseados no uso de técnicas formais para a especificação de requisitos de software.”
Errado!
Certo ou errado?
“O modelo Espiral é baseado na divisão em iterações.”
Certo!
Certo ou errado?
Um dos objetivos da fase de elaboração é a criação e estabilização da arquitetura de sistema.
Certo!
Certo ou errado?
Um dos princípios do RUP é considerar como medida principal do progresso o software executável funcionando.
Certo!
Um gerente de projetos decidiu usar o RUP como seu processo de desenvolvimento de software. Com base no RUP, quais os objetivos que o gerente deve direcionar na fase de Elaboração?
Fazer o design dos casos de uso críticos; Obter um entendimento mais crítico dos requerimentos; Implementar e testar cenários críticos.
Quais são as características do RUP?
- Baseado no ciclo de vida em espiral;
- Baseado em disciplinas (Tarefas e responsabilidades);
- Guia para utilização de UML: Desenvolvimento dirigido por Casos de Uso;
- Processo configurável (customizável);
- avaliação contínua dos riscos do projeto;
- Centrado na Arquitetura;
- Geração de produtos interdependentes em todas as iterações.
Quais são as fases do RUP?
Iniciação, Elaboração, Construção e Transição.
Quais são as disciplinas do RUP?
Modelagem de Negócios, Requisitos, Análise e Design, Implementação, Teste, Implantação, Gerência de Configuração e Mudança, Gerenciamento de Projeto e Ambiente.
O que é uma fase no RUP?
Uma fase é um período significativo no projeto que é concluído com um ponto de checagem, ou seja, um MARCO.
Certo ou errado?
“Fases não ocorrem em paralelo, são como etapas da vida, precisam ocorrer uma após a outra e não voltam.”
Certo!
Os casos de uso são utilizados para qual finalidade no RUP?
Os casos de uso são utilizados como o elo de ligação entre o fluxo das fases no RUP.
Certo ou errado?
“Ser Ágil é uma característica do RUP.”
Errado!
Certo ou errado?
“Na fase de construção são implementados casos de uso que tenham impacto sobre a arquitetura; na fase de transição, os casos sem impacto sobre a arquitetura, mas que descrevam funcionalidades que deverão estar presentes na versão que está sendo desenvolvida.”
Errado!
Certo ou errado?
“No modelo de processo unificado, cada artefato pode estar associado à saída de várias atividades e cada atividade pode produzir como saída vários artefatos.”
Certo!
Certo ou errado?
“A fase de Elaboração tem como objetivo finalizar a análise econômica do projeto e preparar um plano que contenha detalhes suficientes para orientar a Construção do sistema.”
Certo!
De acordo com o RUP, o gerente do projeto já está em condição de planejar as atividades e estimar os recursos necessários para completar o projeto no final de qual fase?
Elaboração.
Certo ou errado?
“No RUP: O caso de uso mais crítico deve ser atacado, preferencialmente, no final.”
Errado! Isso deve ser feito logo no início para evitar problemas ou até possível cancelamento do projeto.
Temos quatro fases no RUP. Quais são essas ênfases e quais são as ênfases de cada fase?
- Concepção (ou Iniciação): ênfase no escopo do sistema.
- Elaboração: ênfase na arquitetura.
- Construção: ênfase no desenvolvimento.
- Transição: ênfase na implantação.
Quais são os artefatos produzidos pela fase de Iniciação no RUP?
Documento de Visão; Casos de Negócio; Lista de Riscos; Plano de Desenvolvimento de Software; Plano de Iteração; Casos de Desenvolvimento; Ferramentas; Glossário; Modelo de Caso de Uso.
Quais são os artefatos produzidos pela fase de Elaboração no RUP?
Protótipo Arquitetural; Lista de Riscos; Casos de Desenvolvimento; Ferramentas; Visão Refinada; Documento de arquitetura; Plano de desenvolvimento de software; Plano de iteração; Especificações e Conjunto de Testes.
Quais são os objetivos da fase de Construção no RUP?
- Tem por meta esclarecer os requisitos restantes e concluir o desenvolvimento do sistema com base na arquitetura;
- Começa o desenvolvimento físico do software, produção de códigos, testes alfa e beta.
- Deve-se aceitar testes, e processos de testes estáveis, e se os códigos do sistema constituem “baseline”, imagem de uma versão de cada artefato.
Quais são os artefatos produzidos pela fase de Construção no RUP?
Software; Plano de Implantação; Modelo de Implementação; conjunto de testes; Materiais de treinamento; Plano de Iteração; Modelo de Projeto; Caso de desenvolvimento; ferramentas e Modelo de dados.
Quais são os artefatos produzidos pela fase de Transição no RUP?
Incremento de Software; Notas de Release; Artefatos de instalação; material para Treinamento; Material de suporte ao usuário final; Relatório de Testes e Realimentação geral do usuário.
Qual o papel do Analista de Testes no RUP?
O papel do analista de testes é ser responsável por inicialmente identificar e posteriormente definir os testes necessários, monitorar a abrangência dos testes e avaliar a qualidade geral obtida ao testar os itens de teste-alvo.
O que é uma Iteração?
Uma iteração envolve as atividades de desenvolvimento que levam ao release de um produto - uma versão estável e executável do produto, junto com qualquer outro elemento periférico necessário para utilizar esse release.
Ao planejar as atividades de uma iteração, o gestor deve seguir quais recomendações?
- Priorizar os casos de uso que impliquem em mais riscos ao projeto;
- Priorizar os casos de uso que sejam relevantes para a Arquitetura de software;
- Priorizar os casos de uso mais urgentes para o cliente.
Certo ou errado?
O XP divide o ciclo de vida de desenvolvimento de software em 4 fases: Concepção, Elaboração, Construção e Transição.
Errado! Essas são as fases do RUP.
Certo ou errado?
Scrum é uma metodologia ágil para gestão e planejamento de projetos de software. No Scrum, os projetos são divididos em ciclos chamados Sprints.
Certo!