Desenvolvimento de Software Flashcards
Processo de Software:
- metodologia para as atividades, ações e tarefas necessárias para desenvolver um software de alta qualidade.
- conjunto de atividades relacionadas que levam à produção de um produto de software.
Atividades do processo de software (Pressman):
- comunicação.
- planejamento.
- modelagem.
- construção.
- entrega.
Atividades do processo de software (Sommervile):
- especificação.
- projeto e implementação.
- validação.
- evolução.
Fluxo do processo de software:
Descreve como são organizadas as atividades metodológicas, bem como as ações e tarefas que ocorrem dentro de cada atividade em relação à sequência e tempo.
Pode ser:
- linear.
- iterativo.
- evolucionário.
- paralelo.
Modelo de processo de software:
Fornece um guia específico para o trabalho de engenharia de software. Define o fluxo de todas as atividades, ações e tarefas, o grau de iteração e a organização do trabalho a ser feito.
Os modelos não prescritivos são denominados “ágeis”.
Modelo espiral de processo de software:
Une o modelo em cascata com o modelo evolucionário.
Ou seja, constitui-se de seguidos ciclos. Cada ciclo segue a linha do modelo cascata, mas são repetidos diversos ciclos seguidamente, de maneira que o software é regularmente melhorado.
É baseado na prototipagem, como se o software produzido em cada ciclo fosse o protótipo para o próximo ciclo.
Seu diferencial é o reconhecimento ao risco.
Modelo em cascata de processo de software = modelo linear.
Engenharia de software orientada a reuso:
Baseia-se no desenvolvimento e uso de chamados componentes.
O foco é reutilizar componentes já implementados ou desenvolver novos componentes que poderão ser reutilizados no futuro.
Com isso, se reduz a quantidade de software a ser desenvolvido.
Modelo incremental de processo de software:
Desenvolve diversas partes independentes do software seguindo o modelo em cascata.
Mas cada parte representa uma fase de desenvolvimento e entrega.
Cada entrega inclui uma nova parte/funcionalidade ao software, de maneira que o software é gradativamente incrementado, até todas as partes serem entregues.
Os modelos evolucionários são baseados em prototipagem e melhoria continua do software.
A cada ciclo se produz uma versão do software (como um protótipo) que é então avaliada.
No próximo ciclo se considera a avaliação da versão anterior para definir as mudanças a serem implementadas neste novo ciclo.
Assim o software está continuamente evoluindo.
Modelo RAD - Rapid application development
Reduz o tempo que é investido na fase de planejamento.
- Planejamento: uma fase de planejamento mais curta, na qual se define um esboço dos requisitos e funcionalidades do software.
- Prototipagem: desenvolvem-se protótipos com novas funcionalidades e recebe-se o feedback dos clientes. Com base no feedback, fazem alterações e novas funcionalidades. No final dessa fase, tem-se um modelo do que o cliente quer.
- Construção e deploy: uma vez estabelecido o modelo que o cliente quer, passa-se para a fase de construir um software robusto que implemente o modelo e então entrega-se o software (deploy).
Modelo RUP - Rational Unified Process ou Processo Unificado
- é um modelo incremental e iterativo.
A cada ciclo o software é estendido e melhorado.
É marcado por necessariamente envolver a orientação a objetos e documentação em UML.
4 fases:
- Concepção/Iniciação: modelagem dos negócios e definição do escopo e requisitos do software.
- Elaboração: arquitetura do software, incluindo UML.
- Construção do software.
- Transição: testes e validação, e implantação e disponibilização do software aos usuários.
Disciplinas: modelagem de negócios, requisitos, análise e projeto, implementação, testes, implantação.
Sobre o Rational Unified Process (RUP)
Artefatos: nome dado aos resultados de trabalho, como exemplo documentos, código, etc.
Workflows: descrevem, em detalhes, o passo a passo, as tarefas, produtos a serem gerados e papéis dos profissionais envolvidos.
Papéis e atividades: um papel define um conjunto de atividades a serem executadas e os artefatos a serem produzidos.
Engenharia de Requisitos: processo de descobrir, analisar, documentar e verificar as funções e restrições do sistema.
Validação: estamos construindo o produto certo?
É a atividade em que obtemos o aceite do cliente sob determinado artefato.
Verificação: estamos construindo o produto da maneira certa?
Examina a especificação do software, de maneira a assegurar sua conformidade, e detectando e corrigindo possíveis problemas.
Requisito de Usuário:
- definido em linguagem natural.
- são as restrições com as quais o sistema deve operar.
- é o que o sistema deve fornecer aos usuários.
Requisito de Sistema:
- especificação de requisitos do sistema.
- define exatamente o que deve ser implementado.
- serve para os desenvolvedores.
Requisitos funcionais: descrevem as funções/ações que o sistema fornece ao usuário.
Ex: o sistema envia um email de confirmação uma vez que o usuário se cadastra.
Requisitos não-funcionais: descrevem restrições e limitações do sistema. Geralmente diz respeito à eficiência, performance, disponibilidade, etc do sistema.
Ex: a página deve carregar em menos de 3 segundos.
Requisitos do negócio: descrevem em termos do negócio o que deve ser entregue para fornecer valor.
Requisitos do produto: descrevem as propriedades que o sistema deve satisfazer.
Requisitos do processo: especifica as metodologias a serem seguidas e a restrições que devem ser obedecidas durante o desenvolvimento do sistema.
O documento de requisitos de software, também chamado de especificação de requisitos de software, é um documento oficial que descreve o que os desenvolvedores devem implementar, incluindo requisitos do sistema e do usuário.
Sobre o documento da engenharia de requisitos:
- clientes do sistema: especificam e leem os requisitos para saber se o sistema atende suas necessidades. Também especificam mudanças e novos requisitos.
Sobre o documento da engenharia de requisitos:
- gerentes: usam o documento para planejar uma proposta para o sistema e para planejar o processo de desenvolvimento.
Sobre o documento da engenharia de requisitos:
- engenheiros do sistema: consideram os requisitos para entender e conceber o sistema que será desenvolvido.
Sobre o documento da engenharia de requisitos:
- engenheiros de teste: consideram os requisitos para desenvolver testes de validação do sistema.
Sobre o documento da engenharia de requisitos:
- engenheiros de manutenção: consideram os requisitos para entender o sistema e o relacionamento entre suas partes.
Engenharia de Requisitos
4 etapas:
- descoberta dos requisitos: interação com os stakeholders para descobrir os requisitos desejados para o sistema.
- classificação dos requisitos: agrupa os requisitos relacionados e organiza em grupos coerentes.
- priorização e negociação de requisitos.
- especificação e documentação dos requisitos.
Técnicas de levantamento de requisitos:
- entrevistas: entrevistas formais ou informais com stakeholders.
- cenários: cenários e exemplos práticos de situações reais de uso do sistema.
- casos de uso: identifica uma interação, os atores envolvidos e dá um nome à interação.
- etnografia: observar o dia a dia dos funcionários e usuários finais do sistema.
- prototipação: é desenvolvido um protótipo satisfazendo alguns requisitos e deve ser validado.
- joint application development: preve reuniões envolvendo tanto desenvolvedores quanto usuários.
Requisitos de Software:
- requisitos normais (explícitos).
- requisitos esperados (implícitos).
- requisitos fascinantes.
Validação de Requisitos
- verificação de validade.
- verificação de consistência.
- verificação de completude.
- verificação de realismo.
- verificabilidade: os requisitos do sistema devem ser passíveis de verificação, i.e, deve ser possível escrever um conjunto de testes que demonstrem que o sistema atende aos requisitos.
- adaptabilidade.
Técnicas de validação de requisitos
- revisão de requisitos.
- prototipação.
- geração de casos de testes.