Metodologias de desenvolvimento Flashcards
O que é 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 manutenção desse sistema, após sua entrada em produção.
Quais são os princípios da Engenharia de Software?
AFF DG
Abstração: existe uma preocupação da identificação de um determinado fenômeno da realidade.
Formalidade: o software deve ser desenvolvido seguindo passos definidos.
Flexibilização: permite que o software possa ser alterado, sem causar problemas na execução.
Decomposição: o problema pode ser dividido em partes.
Generalização: o problema é resolvido de forma genérica, de modo que possa ser reutilizado em outras situações.
O que precisa ser aplicado e que é associado ao desenvolvimento?
Processos, métodos e ferramentas, sendo que o que sustenta a Engenharia de Software é o foco na qualidade.
O que é modelo de ciclo de vida de software?
São as fases pelas quais um software passa desde o seu início até o seu fim e como essas fases se relacionam.
Quais são as fases genéricas da produção de software?
Planejamento
Análise e especificação de requisitos
Projeto
Implementação
Testes
Entrega e Implantação
Operação
Manutenção
Descreva a fase de Planejamento.
O objetivo do planejamento de projeto é fornecer uma estrutura que possibilite ao gerente fazer estimativas razoáveis de recursos, custos e prazos. À medida que o projeto progride, o planejamento deve ser detalhado e atualizado regularmente.
Descreva a fase de Análise e Especificação de Requisitos.
Nesta fase, o processo de levantamento de requisitos é intensificado. O escopo deve ser refinado e os requisitos mais bem definidos.
Modelo do que o software tem que fazer (e não como fazê-lo).
Descreva a fase de Projeto.
Esta fase é responsável por incorporar requisitos tecnológicos aos requisitos essenciais do sistema, modelados na fase anterior e, portanto, requer que a plataforma de implementação seja conhecida.
Envolve duas grandes etapas: projeto da arquitetura do sistema (geralzão) e projeto detalhado (cada componente).
Descreva a fase de Implementação.
A fase de implementação realiza a tarefa de traduzir o projeto para uma forma passível de execução pela máquina, isto é, cada unidade de software do projeto detalhado é implementada.
Descreva a fase de Testes.
Inicialmente, cada unidade de software implementada deve ser testada e os resultados documentados. A seguir, os diversos componentes devem ser integrados sucessivamente até se obter o sistema. Finalmente, o sistema como um todo deve ser testado.
Descreva a fase de Entrega e Implementação.
O propósito desta fase é estabelecer que o software satisfaz os requisitos dos usuários. Isto é feito instalando o software e conduzindo testes de aceitação. Quando o software tiver demonstrado prover as capacidades requeridas, ele pode ser aceito e a operação iniciada.
Descreva a fase de Operação.
Nesta fase, o software é utilizado pelos usuários no ambiente de produção, isto é, no ambiente real de uso do usuário.
Descreva a fase de Manutenção.
Indubitavelmente, o software sofrerá mudanças após ter sido entregue para o usuário. Alterações ocorrerão porque erros foram encontrados, porque o software precisa ser adaptado para acomodar mudanças em seu ambiente externo, ou porque o cliente necessita de funcionalidade adicional ou aumento de desempenho.
Quais são as principais características do Modelo Cascata?
É uma abordagem sistemática com forte ênfase na documentação.
Uma fase só se inicia após o término e aprovação da fase anterior.
É apropriado para quando os requisitos já estão bem definidos e compreendidos.
Quais são as vantagens do modelo Cascata?
É simples de entender e fácil de aplicar.
Fixa pontos específicos para 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.
Quais são as desvantagens do modelo Cascata?
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, que só são descobertos na fase de testes.
Apenas a fase final produz um artefato de software entregável.
Cliente deve saber todos os requisitos no início do projeto.
Não funciona bem com projetos complexos e OO, apesar de compatível.
Como o modelo Incremental é realizado?
É como se um artista já tivesse o quadro pronto na cabeça e vai desenvolvendo cada parte do quadro separadamente até integrá-las em uma imagem completa.
Produz builds, partes do software.
Como o modelo Iterativo é realizado?
É feito um esboço do quadro, e são desenvolvidas várias versões até o resultado final que se deseja.
Produz releases, versões constantemente melhoradas do software.
Quais são as fases do RAD (Rapid Application Development)?
Modelagem de Negócio
Modelagem de Dados
Modelagem de Processo
Geração e Aplicação
Teste e Modificação
Quais são as vantagens do RAD?
Permite o desenvolvimento rápido e/ou a prototipagem de aplicações.
Criação e reutilização de componentes.
Desenvolvimento é conduzido em um nível mais alto de abstração.
Grande redução de codificação manual com wizards.
Cada função pode ser direcionada para uma equipe separada.
Provável custo reduzido (tempo é dinheiro e também devido ao reúso).
Tempo de desenvolvimento curto.
Protótipos permitem uma visualização mais cedo.
Envolvimento maior do usuário.
Quais são as desvantagens do RAD?
Exige recursos humanos caros e experientes.
O envolvimento com o usuário tem que ser ativo.
Comprometimento da equipe do projeto.
Custo alto do conjunto de ferramentas e hardware para rodar a aplicação;
Mais difícil de acompanhar o projeto.
Perda de precisão científica (pela falta de métodos formais).
Pode levar ao retorno das práticas caóticas no desenvolvimento.
Pode construir funções desnecessárias.
Padronização (aparência diferente entre os módulos e componentes).
Como funciona o modelo Evolucionário?
O modelo evolucionário funciona também com base em iterações ou repetições com o intuito de refinar o software a partir do feedback do cliente. A ideia é utilizar um esboço inicial e ir incrementando, melhorando, aperfeiçoando o software de acordo com as necessidades dos clientes até chegar a uma versão. Ao fim, o sistema pode ser entregue ao cliente ou ser refeito de forma mais estruturada.
Quais são os tipos de modelo em prototipagem?
1) Prototipação throwaway: o objetivo é compreender os requisitos do cliente e melhor defini-los. O protótipo se concentra nos requisitos mal compreendidos e é posteriormente descartado.
2) Prototipação evolucionária: o objetivo é pegar o protótipo que foi feito e refiná-lo iterativamente até chegar ao sistema final.
Quais são as etapas do modelo em Prototipagem?
Comunicação
Projeto rápido
Modelagem de Projeto Rápido
Construção de um Protótipo
Entrega e realimentação
Quais são as principais características do Modelo em Espiral?
É um processo de software orientado a riscos.
O processo é representado como uma espiral (caracol).
Combina o modelo em cascata com o de prototipagem.
Quais são as vantagens do Modelo em Espiral?
Suporta mecanismos de redução de riscos.
Obtêm-se versões do sistema a cada iteração.
Reflete as práticas atuais de engenharia atual.
Apresenta uma abordagem sistemática e estimativas realistas.
Quais são as desvantagens do Modelo em Espiral?
Exige analistas de risco bastante experientes.
Exige uma equipe de desenvolvimento extremamente qualificada.
Exige um gerenciamento de processo mais complexo.
Não é recomendado resolver problemas mais simples e pequenos.
Em quais situações os Métodos Formais são aplicados?
Eles permitem indicar atividades que contem com representações matemáticas de software, especificação formal, prova de especificação, desenvolvimento transformacional.
Em geral, são utilizados para o desenvolvimento de sistemas que necessitam de grande robustez e confiabilidade diante da possibilidade de perda de vidas ou sério prejuízo, caso haja falhas.
O que é Modelo Baseado em Componentes?
Utiliza o reúso como peça principal, ela depende de uma grande base de componentes reusáveis e algum framework de integração.
Defina e descreva as fases do Modelo Baseado em Componentes.
Especificação de Requisitos:
Coleta informações e reúne em um documento que define um conjunto de requisitos de software. Devem ser incluídos dois tipos de requisitos nesse documento: os Requisitos de Usuário e Requisitos de Sistema.
Análise de Componentes:
Nesta fase, é feita uma busca pelos componentes para implementar essa especificação. Geralmente, não existe uma correspondência exata entre o componente encontrado e o procurado. Muitas vezes, os componentes que podem ser usados fornecem apenas parte da funcionalidade necessária.
Modificação de Requisitos:
Os requisitos são analisados usando as informações sobre os componentes encontrados, que são modificados para refletir os componentes disponíveis. Quando as modificações são impossíveis, a atividade de análise de componentes pode ser novamente realizada para procurar alternativas.
Projeto de Sistema com Reúso:
O framework do sistema é projetado ou um framework existente é reutilizado. Pode ser necessário projetar algum software novo caso os componentes reusáveis não estejam disponíveis para aquisição para o sistema.
Desenvolvimento e Integração:
Software que não pode ser adquirido externamente é desenvolvido e os componentes e os sistemas COTS (biblioteca de componentes) são integrados para criar os novos sistemas.
Validação de Sistema:
Processo de verificação de se um sistema atende às necessidades e expectativas do cliente.