Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistema de Software:
Um "sistema de software" refere-se a um conjunto interconectado e interdependente de
componentes de software que trabalham juntos para realizar funções específicas em um
sistema maior. Esses componentes podem incluir software de sistema, software de
middleware e software de aplicação. O objetivo de um sistema de software é fornecer
serviços e funcionalidades que atendam às necessidades dos usuários ou de um sistema
maior. Isso pode incluir a coordenação de recursos de hardware, a comunicação entre
diferentes aplicativos ou a execução de tarefas complexas.
Engenharia de Software:
A "engenharia de software" é uma disciplina que se concentra na aplicação de princípios e
práticas sistemáticas para o desenvolvimento, manutenção e gestão de software de alta
qualidade. Envolve a aplicação de métodos, técnicas e ferramentas para planejar, projetar,
codificar, testar e manter software de forma eficiente e confiável. A engenharia de software
também aborda questões relacionadas à qualidade do software, gerenciamento de projetos,
documentação, segurança e garantia de que o software atenda aos requisitos do usuário
final. É uma disciplina essencial para lidar com a complexidade crescente dos sistemas de
software modernos e garantir a entrega de soluções confiáveis e eficazes.
2. Defina projeto (project) no contexto de gerenciamento de projetos.
O ciclo de vida de um projeto é um modelo que divide o projeto em fases distintas, cada
uma com seus próprios objetivos e atividades. O ciclo de vida é um guia para o
gerenciamento do projeto e ajuda a garantir que o projeto seja concluído com sucesso.
Controle de Qualidade: Marcar a conclusão de uma fase ou entrega também pode ser um
momento para realizar verificações de qualidade. Isso garante que os padrões e requisitos
de qualidade sejam atendidos antes de avançar para a próxima fase.
Definição: O Custo Total do Projeto é a métrica que avalia o custo global de um projeto,
incluindo despesas diretas e indiretas. Isso abrange custos de mão de obra, materiais,
equipamentos, infraestrutura, despesas gerais e administrativas, entre outros.
Relevância: Monitorar o CTP ajuda a garantir que o projeto permaneça dentro do orçamento
estabelecido e permite a identificação de desvios financeiros que exigem ação corretiva.
Tempo para Conclusão (Schedule Performance):
Definição: O Tempo para Conclusão é a métrica que avalia o quão bem o projeto está
progredindo em relação ao cronograma planejado. Isso envolve comparar o progresso real
com o progresso esperado no momento atual.
Relevância: O acompanhamento do tempo para conclusão ajuda a garantir que o projeto
seja concluído dentro do prazo e permite a identificação precoce de atrasos que precisam
ser tratados.
Qualidade do Produto:
Riscos Técnicos:
Artefatos:
Além desses elementos típicos, o SCMP pode incluir outros elementos, como:
● A definição de configuração pode ser usada para garantir que todos os membros
da equipe de desenvolvimento estejam na mesma página sobre o que constitui
uma configuração de software.
● A identificação de itens de configuração pode ser usada para garantir que todos
os componentes importantes do software sejam gerenciados.
● O controle de mudanças pode ser usado para garantir que todas as mudanças
na configuração sejam rastreadas e aprovadas.
● A revisão de configuração pode ser usada para garantir que a configuração seja
correta e atualizada.
● A restauração de configuração pode ser usada para restaurar o software para
um estado conhecido em caso de problemas.
● Os relatórios podem ser usados para acompanhar o status da configuração.
Ao usar um SCMP, os gerentes de projetos podem ajudar a garantir que o software seja
desenvolvido e mantido de forma eficaz.
Aqui estão alguns exemplos de como essas propriedades podem ser aplicadas a
modelos:
● Um modelo de sistema de software é completo se representar todos os
requisitos do sistema.
● Um modelo de banco de dados é consistente se não conter contradições, como
dois registros que têm o mesmo valor para uma chave primária.
● Um modelo de previsão meteorológica é correto se gerar previsões que sejam
precisas e consistentes com os dados históricos.
Ao seguir essas dicas, os modeladores podem ajudar a garantir que seus modelos
sejam de alta qualidade.
A abstração é crucial para criar modelos que sejam mais fáceis de entender e manipular.
Ela permite que os modeladores concentrem-se nos conceitos-chave e nas relações
importantes, reduzindo o ruído da informação não essencial.
A validação é essencial para garantir que o modelo seja útil e confiável. Modelos não
validados podem levar a decisões incorretas e ações inadequadas. A validação ajuda a
identificar e corrigir erros ou inconsistências no modelo.
Objeto:
Um objeto é uma instância concreta de uma classe. É uma entidade real que possui seus
próprios dados (atributos) e pode realizar ações (métodos) específicas com base na
definição da classe à qual pertence.
Cada objeto criado a partir de uma classe é uma entidade única, com seus próprios valores
de atributos, mas compartilha a mesma estrutura de comportamento definida pela classe.
Associação:
Definição: A associação é um relacionamento básico que indica uma conexão entre duas
classes. Ela representa que uma classe está de alguma forma relacionada a outra classe,
mas não implica propriedade ou dependência forte.
Natureza: A associação pode ser bidirecional ou unidirecional, e não impõe uma relação
específica entre as classes, apenas indica que elas estão de alguma forma conectadas.
Exemplo: Uma classe "Estudante" está associada a uma classe "Curso". Isso indica que os
estudantes estão inscritos em cursos, mas não implica que um estudante possui um curso
ou vice-versa.
Agregação:
Natureza: A agregação é uma forma mais forte de associação e implica uma relação
hierárquica. A parte pode existir independentemente do todo e pode estar associada a
outros "todos".
Exemplo: Uma classe "Carro" pode ter uma agregação com uma classe "Roda". Um carro
tem rodas como parte de sua estrutura, mas as rodas podem existir independentemente e
serem usadas em diferentes carros.
Composição:
Definição: A composição é uma forma mais restritiva de agregação em que a parte só pode
pertencer a um único todo. Ela implica uma relação de dependência forte, onde a parte é
criada e destruída junto com o todo.
Natureza: Na composição, a vida da parte está vinculada à vida do todo. Quando o todo é
destruído, todas as partes também são destruídas.
Exemplo: Um carro tem uma composição com um motor. O motor é uma parte intrínseca
do carro, e quando o carro é desmontado ou destruído, o motor também é afetado.
Herança:
Natureza: A herança é usada para estabelecer uma relação "é-um", onde a subclasse é um
tipo específico da superclasse. A subclasse pode estender ou substituir o comportamento
da superclasse.
Exemplo: Uma classe "Gato" pode herdar características de uma classe "Animal". O "Gato"
é um tipo específico de "Animal" e pode ter atributos e métodos adicionais que são
específicos para gatos.
Além dessas quatro fases principais, o SDLC pode incluir outras fases, como:
Exemplo:
Concepção:
Desenvolvimento:
Entrega e Implantação:
Operação e Manutenção:
Definição: Após a implantação, o software entra na fase de operação e manutenção.
Nesta fase, o software é usado continuamente pelos usuários e requer manutenção,
correções de erros e atualizações.
Desligamento:
Vantagens:
Desvantagens:
Vantagens:
Desvantagens:
Vantagens:
Desvantagens:
Desenvolvimento Exploratório:
Cliente Envolvido: O cliente ou usuário final está fortemente envolvido durante todo o
processo de desenvolvimento, fornecendo feedback contínuo para ajudar a refinar os
requisitos.
Prototipação Throw-Away:
Cliente Envolvido: O cliente pode estar envolvido na revisão dos protótipos, mas o
principal objetivo é obter feedback sobre conceitos e funcionalidades, não para coletar
feedback sobre o código ou a estrutura do sistema.
Fase de concepção
Fase de elaboração
Fase de construção
A fase de transição é responsável por entregar o sistema aos usuários e garantir que
esteja em conformidade com seus requisitos. As responsabilidades dessa fase incluem:
Fase de concepção:
● Análise dos requisitos dos usuários: Os requisitos dos usuários são coletados e
analisados para garantir que o sistema atenda às necessidades dos usuários.
● Definição do escopo do projeto: O escopo do projeto é definido para garantir que
o projeto seja concluído dentro do prazo e do orçamento.
● Desenvolvimento do plano de projeto: O plano de projeto é desenvolvido para
definir as atividades, os recursos e o cronograma do projeto.
Fase de elaboração:
● Refinamento dos requisitos do sistema: Os requisitos do sistema são refinados
para garantir que sejam completos, consistentes e verificáveis.
● Desenvolvimento de um design detalhado: Um design detalhado é desenvolvido
para descrever como o sistema será implementado.
● Desenvolvimento de um protótipo: Um protótipo pode ser desenvolvido para
validar o design do sistema.
Fase de construção:
Fase de transição:
● Um bom design: O software deve ser bem projetado, com uma arquitetura
flexível e escalável.
● Documentação clara e concisa: A documentação deve ser clara e concisa, de
modo que os desenvolvedores possam entender como o software funciona e
como modificá-lo.
● Testes abrangentes: O software deve ser testado extensivamente para garantir
que funcione corretamente.
● Um processo de desenvolvimento bem definido: O processo de desenvolvimento
deve ser claro e transparente, para que os contribuidores saibam como
participar.
● Uma comunidade ativa: Uma comunidade ativa de desenvolvedores e usuários é
essencial para o sucesso de um projeto de software aberto.
Além desses requisitos, existem alguns outros fatores que podem contribuir para o
sucesso de um projeto de software aberto, como:
● Um produto com uma boa proposta de valor: O produto deve oferecer algo de
valor aos usuários, de modo que eles estejam motivados a contribuir.
● Uma marca forte: O projeto deve ter uma marca forte e consistente, para que
seja facilmente identificável.
● Uma estratégia de marketing e divulgação eficaz: O projeto deve ser promovido
de forma eficaz para alcançar o público-alvo.
A seguir, são apresentados alguns exemplos de como esses requisitos podem ser
aplicados a um projeto de software aberto:
Ao atender a esses requisitos, os projetos de software aberto têm uma chance maior de
ser bem-sucedidos.
No BDD, os bugs são tratados como requisitos negativos. Isso significa que eles são
descritos como o que não deve acontecer. Por exemplo, um bug pode ser descrito como
"o sistema deve não travar quando o usuário tenta inserir um valor inválido".
O BDD é um processo iterativo e incremental. Isso significa que os bugs são corrigidos
em pequenas etapas, cada uma das quais é validada antes de prosseguir para a
próxima etapa.
O BDD é uma abordagem que pode ser eficaz para melhorar a qualidade do software.
No entanto, é importante notar que o BDD não é uma solução para todos os problemas
de desenvolvimento de software. O BDD é mais adequado para projetos em que a
qualidade é uma prioridade e em que os requisitos são claros e bem definidos.
Vantagens do BDD
● Melhora a qualidade do software: O BDD ajuda a identificar e corrigir bugs, o que
pode melhorar a qualidade do software.
● Reduz os custos de manutenção: Ao corrigir os bugs no início do processo de
desenvolvimento, é possível reduzir os custos de manutenção no futuro.
● Melhora a compreensão do código: O BDD pode ajudar a melhorar a
compreensão do código, pois os bugs são descritos como requisitos negativos.
Desvantagens do BDD
● Pode ser lento: O BDD é um processo iterativo e incremental, o que pode levar
mais tempo para concluir o desenvolvimento do software.
● Pode ser difícil de implementar: O BDD pode ser difícil de implementar em
projetos com requisitos complexos ou em constante mudança.
Esses princípios refletem a crença de que os métodos ágeis são mais eficazes para o
desenvolvimento de software do que os métodos tradicionais. Os métodos ágeis
enfatizam a colaboração, a flexibilidade e a entrega de valor ao cliente.
● Pode ser mais lenta: A programação em pares pode levar mais tempo do que a
programação individual.
● Exige um esforço extra: A programação em pares requer que os
desenvolvedores estejam dispostos a trabalhar juntos e a compartilhar ideias.
● Pode ser desconfortável: A programação em pares pode ser desconfortável para
alguns desenvolvedores, especialmente aqueles que são introvertidos ou que
preferem trabalhar sozinhos.
1. Escrever um teste: O primeiro passo é escrever um teste que falha. O teste deve
descrever o comportamento esperado do código.
2. Faça o código passar no teste: O próximo passo é escrever o código necessário
para fazer o teste passar.
3. Refatorar o código: O código pode ser refatorado para melhorar sua qualidade e
legibilidade.
O TDD tem várias vantagens, incluindo:
● Melhor qualidade do código: O TDD ajuda a garantir que o código esteja correto
e funcional.
● Maior produtividade: O TDD pode aumentar a produtividade dos
desenvolvedores, pois eles podem identificar e corrigir bugs mais rapidamente.
● Menor custo de manutenção: O TDD pode ajudar a reduzir o custo de
manutenção do software, pois o código é mais fácil de entender e modificar.
No XP, o TDD é usado para garantir a qualidade do código e para facilitar a manutenção
do software. O TDD também é usado para melhorar a comunicação entre os
desenvolvedores, pois eles precisam trabalhar juntos para escrever os testes.
32. Defina e exemplifique história de usuário (user story) e explique como são usadas
no XP.
Uma história de usuário (user story) é uma descrição informal de uma funcionalidade ou
requisito de um sistema de software, escrita da perspectiva do usuário. É uma das
práticas mais importantes do Extreme Programming (XP), um método ágil de
desenvolvimento de software.
Por exemplo, uma história de usuário para um sistema de e-commerce pode ser:
Como um cliente,
Eu quero adicionar um produto ao meu carrinho de compras,
Para que eu possa comprar o produto.
Conclusão:
33. Defina Sprint, Sprint Planning, Daily Scrum, Sprint Review e Sprint Retrospective
no SCRUM.
Sprint
Sprint Planning
O Sprint Planning é uma reunião realizada no início de cada Sprint para definir o escopo
do Sprint e planejar o trabalho. A reunião é realizada com a participação do time Scrum,
do Product Owner e do Scrum Master.
Daily Scrum
O Daily Scrum é uma reunião diária realizada pelo time Scrum para discutir o progresso
do Sprint, identificar quaisquer impedimentos e planejar o trabalho para o dia seguinte. A
reunião é geralmente de curta duração, geralmente de 15 minutos.
Sprint Review
A Sprint Review é uma reunião realizada no final de cada Sprint para demonstrar o
incremento de produto desenvolvido e obter feedback do Product Owner e dos
stakeholders. A reunião é usada para garantir que o produto esteja atendendo às
necessidades dos usuários e que o time Scrum esteja no caminho certo para entregar o
produto final.
Sprint Retrospective
A Sprint Retrospective é uma reunião realizada após a Sprint Review para identificar o
que foi bem, o que pode ser melhorado e planejar ações para o próximo Sprint. A
reunião é usada para ajudar o time Scrum a aprender e melhorar com o tempo.
Os eventos do Scrum são projetados para funcionar juntos para ajudar o time Scrum a
entregar um produto de alta qualidade de forma iterativa e incremental.
O Sprint Planning é usado para definir o escopo do Sprint e planejar o trabalho. O Daily
Scrum é usado para acompanhar o progresso do Sprint e identificar quaisquer
impedimentos. A Sprint Review é usada para demonstrar o incremento de produto
desenvolvido e obter feedback do Product Owner e dos stakeholders. A Sprint
Retrospective é usada para identificar o que foi bem, o que pode ser melhorado e
planejar ações para o próximo Sprint.
Exemplo
No início de cada Sprint, o time Scrum realiza uma reunião de Sprint Planning. Na
reunião, o time discute os requisitos do Sprint com o Product Owner e prioriza o
trabalho. O time também cria um plano de Sprint, que descreve como o trabalho será
realizado.
Durante o Sprint, o time Scrum realiza uma reunião diária de Daily Scrum. Na reunião, o
time discute o progresso do Sprint, identifica quaisquer impedimentos e planeja o
trabalho para o dia seguinte.
No final do Sprint, o time Scrum realiza uma reunião de Sprint Review. Na reunião, o
time demonstra o incremento de produto desenvolvido ao Product Owner e aos
stakeholders. O time também coleta feedback sobre o incremento.
Após a Sprint Review, o time Scrum realiza uma reunião de Sprint Retrospective. Na
reunião, o time discute o que foi bem no Sprint, o que pode ser melhorado e planeja
ações para o próximo Sprint.
O time Scrum repete esse processo a cada Sprint até que o produto final esteja
concluído.
● Visibilidade: O trabalho deve ser visualizado de forma clara e concisa para que
todos possam entender o seu status.
● Limitação do trabalho em andamento: O trabalho em andamento deve ser
limitado para evitar sobrecarga e garantir que o trabalho seja concluído de forma
eficiente.
● Melhoria contínua: O processo deve ser continuamente avaliado e melhorado
para aumentar a eficiência e a produtividade.
Elementos do Kanban
O Kanban é um método flexível que pode ser adaptado a uma ampla gama de projetos
e equipes. No entanto, existem alguns elementos comuns que são frequentemente
usados:
● Kanban board: Um kanban board é uma ferramenta visual que ajuda a visualizar
o trabalho. Ele geralmente consiste em um quadro com três ou mais colunas,
representando as diferentes etapas do fluxo de trabalho.
● Cartões de trabalho: Os cartões de trabalho representam unidades de trabalho
individuais. Eles geralmente incluem informações como o título do trabalho, a
descrição do trabalho, a prioridade do trabalho e o estado do trabalho.
● Regras de fluxo: As regras de fluxo definem como o trabalho é movido pelo
kanban board. Elas geralmente incluem regras para adicionar trabalho, mover
trabalho e remover trabalho do kanban board.
Vantagens do Kanban
Desvantagens do Kanban
Além desses elementos básicos, um processo de PXP também pode incluir as seguintes
atividades:
● Seja realista: Ao definir o escopo do projeto, seja realista sobre o que você pode
realizar.
● Seja flexível: Esteja preparado para fazer alterações no projeto conforme
necessário.
● Comunique-se regularmente: Mantenha as partes interessadas informadas sobre
o progresso do projeto.
● Comemore as conquistas: Reconheça as conquistas ao longo do caminho.
Ao seguir essas dicas, você pode criar um processo de PXP que o ajudará a gerenciar
seus projetos pessoais com sucesso.
Requisitos funcionais
Os requisitos não funcionais definem como o sistema deve funcionar. Eles descrevem
as características ou qualidades do sistema, como desempenho, segurança, usabilidade
e confiabilidade. Os requisitos não funcionais são geralmente expressos em termos de
objetivos ou metas.
Contraste
Requisitos de usuário
Requisitos de sistema
Contraste
Importância
Os requisitos de usuário e os requisitos de sistema são ambos importantes para o
desenvolvimento de um sistema de software. Os requisitos de usuário são necessários
para garantir que o sistema atenda às necessidades dos usuários, enquanto os
requisitos de sistema são necessários para garantir que o sistema possa ser
implementado de forma eficaz e eficiente.
Exemplos
39. Relacione elementos típicos do documento visão e escopo (vision and scope).
O documento de visão e escopo (vision and scope) é um documento que descreve a
visão do produto e o escopo do projeto. Ele é usado para comunicar a visão do produto
para as partes interessadas e para garantir que todos estejam alinhados sobre o que
será desenvolvido.
Os elementos típicos do documento de visão e escopo incluem:
● Introdução: Uma introdução que fornece uma visão geral do SRS e seus
objetivos.
● Visão geral do sistema: Uma descrição geral do sistema, incluindo seus
objetivos, funções e usuários.
● Requisitos funcionais: Uma descrição dos requisitos funcionais do sistema, ou
seja, o que o sistema deve fazer.
● Requisitos não funcionais: Uma descrição dos requisitos não funcionais do
sistema, ou seja, como o sistema deve funcionar.
● Definições e siglas: Uma lista de definições e siglas usadas no SRS.
● Anexos: Anexos que fornecem informações adicionais sobre o SRS, como
diagramas, especificações técnicas ou formulários.
● Introdução: A introdução fornece uma visão geral do SRS e seus objetivos. Ela
deve incluir informações como o propósito do SRS, o público-alvo e o escopo do
SRS.
● Visão geral do sistema: A visão geral do sistema fornece uma descrição geral do
sistema, incluindo seus objetivos, funções e usuários. Ela deve fornecer uma
visão geral do sistema para as partes interessadas, sem entrar em detalhes
sobre os requisitos.
● Requisitos funcionais: Os requisitos funcionais descrevem o que o sistema deve
fazer. Eles devem ser claros, concisos e completos.
● Requisitos não funcionais: Os requisitos não funcionais descrevem como o
sistema deve funcionar. Eles incluem requisitos como desempenho, segurança,
usabilidade e confiabilidade.
● Definições e siglas: As definições e siglas são usadas para fornecer clareza e
precisão ao SRS.
● Anexos: Os anexos fornecem informações adicionais sobre o SRS, como
diagramas, especificações técnicas ou formulários.
41. Defina e exemplifique regra de negócio.
Uma regra de negócio é uma declaração que define ou restringe alguma atividade,
processo ou operação dentro de uma organização ou sistema de software. Essas regras
são estabelecidas para orientar e controlar o comportamento de uma empresa, sistema ou
processo, a fim de alcançar seus objetivos e cumprir requisitos legais ou regulatórios. As
regras de negócio podem ser aplicadas em diversos contextos, desde o funcionamento de
uma empresa até o desenvolvimento de software. Aqui está uma definição acompanhada
de um exemplo:
Regra de Negócio: "Os clientes menores de 18 anos não podem fazer compras de
produtos restritos a maiores de idade."
Nesse exemplo, a regra de negócio estabelece uma restrição que impede que clientes com
menos de 18 anos comprem produtos que são restritos a maiores de idade, como produtos
de classificação etária para adultos. Essa regra é implementada para cumprir
regulamentações legais e para garantir que a loja esteja em conformidade com as leis de
venda de produtos restritos. Ela também orienta o desenvolvimento de sistemas de
gerenciamento de pedidos e carrinhos de compras online para verificar a idade dos clientes
antes de permitir que eles comprem esses produtos.
Artefato Atividade
Artefato Atividade
Artefato Atividade
Atores
Os atores são os usuários ou sistemas que interagem com o sistema. Eles podem ser
pessoas, organizações ou sistemas externos.
Os atores são representados por um símbolo de um homem ou mulher, com o nome do
ator abaixo do símbolo.
Casos de uso
Os casos de uso são as interações entre um ator e o sistema. Eles descrevem o que o
ator faz para alcançar um objetivo.
Os casos de uso são representados por um símbolo de um oval, com o nome do caso
de uso dentro do oval.
Premissas e pós-condições
As premissas são as condições que devem ser atendidas antes de um caso de uso ser
executado. As pós-condições são as condições que devem ser atendidas depois de um
caso de uso ser executado.
Fluxos de eventos
Extensões e exceções