Ava1 Exercícios
Ava1 Exercícios
Ava1 Exercícios
Mudanças de ambiente: À
medida que o ambiente de
execução do software muda
(atualizações no sistema
operacional, bibliotecas,
hardware), o software pode não
funcionar corretamente,
resultando em deterioração.
Tecnologia ultrapassada: À
medida que as tecnologias
avançam, o software
desenvolvido com base em
tecnologias mais antigas pode se
tornar incompatível e não
funcional em sistemas
modernos.
Segurança: A falta de
atualizações de segurança pode
tornar o software vulnerável a
ataques, resultando em
deterioração de sua integridade
e confiabilidade.
3) O surgimento da engenharia
de software foi impulsionado por
uma série de fatores que
destacaram a necessidade de
abordar o desenvolvimento de
software de forma mais
sistemática e profissional. Alguns
dos principais motivos incluem:
Complexidade crescente:
Conforme os sistemas de
software se tornaram mais
complexos, tornou-se evidente
que
abordagens informais e ad hoc
não eram suficientes para
garantir a qualidade e a
confiabilidade dos softwares
produzidos.
Crescimento da demanda: À
medida que a dependência de
software em várias indústrias
aumentava, havia uma
necessidade crescente de
desenvolver software de maneira
eficiente e confiável para atender
às demandas do mercado.
Problemas de qualidade: O
desenvolvimento de software
frequentemente resultava em
produtos com muitos defeitos e
problemas. Isso levou à perda de
tempo, recursos e dinheiro,
incentivando a busca por
melhores práticas.
Reutilização de código: A
necessidade de reutilizar código
para economizar tempo e
recursos levou ao
desenvolvimento de métodos e
técnicas para criar bibliotecas de
software reutilizáveis.
Pesquisa e educação: O
reconhecimento da importância
do treinamento formal e
pesquisa em métodos de
desenvolvimento de software
contribuiu para o surgimento da
engenharia de software como
disciplina acadêmica.
Complexidade crescente: Os
sistemas de software estavam se
tornando cada vez mais
complexos, tornando difícil a
compreensão e o gerenciamento
eficaz de projetos.
Mudanças de requisitos
frequentes: Os clientes muitas
vezes mudavam os requisitos do
software durante o
desenvolvimento, o que causava
atrasos e aumento nos custos.
Desenvolvimento de
metodologias: Surgiram diversas
metodologias de
desenvolvimento de software,
como o modelo em cascata e,
mais tarde, abordagens ágeis,
que visavam trazer ordem e
estrutura ao processo de
desenvolvimento.
Padronização e normas: A
criação de padrões e normas
para o desenvolvimento de
software ajudou a estabelecer
práticas comuns e melhorar a
qualidade.
Ênfase na comunicação:
Abordagens ágeis, como Scrum,
enfatizaram a comunicação
próxima com os clientes para
compreender melhor os
requisitos em constante
mudança.
Documentação
Testes
Código-fonte
Protótipos e maquetes
Planos e cronogramas
Artefatos de design
Relatórios de status
Portanto, a engenharia de
software envolve a entrega de
uma variedade de produtos e
informações além do programa
em funcionamento para garantir
o sucesso do projeto, a
compreensão adequada e a
manutenção eficiente do
software. O programa em
funcionamento é apenas uma
parte do quadro completo.
6) Um artefato, no contexto da
engenharia de software e de
muitas outras disciplinas, é um
termo geralmente usado para se
referir a qualquer item,
documento, objeto ou resultado
tangível que é produzido ou
gerado como parte de um
processo ou atividade. Artefatos
são criados para servir a
diferentes propósitos em um
projeto ou em uma disciplina
específica.
Na engenharia de software, por
exemplo, alguns exemplos de
artefatos incluem:
7) Gerenciar projetos de
software é uma
tarefa complexa e influenciada
por vários fatores. Aqui estão
três fatores importantes que
afetam a forma de gerenciar
projetos de software:
1. Complexidade do Software: A
complexidade do software a ser
desenvolvido é um fator crítico.
Projetos de software complexos
exigem abordagens de
gerenciamento mais detalhadas
e planejamento cuidadoso. Isso
pode incluir o uso de
metodologias específicas,
equipes multidisciplinares e uma
análise mais profunda de
requisitos e riscos.
2. Tamanho e Escopo do Projeto:
O tamanho e o escopo do
projeto têm um impacto
significativo na gestão. Projetos
de grande escala geralmente
envolvem mais recursos,
orçamento e tempo.
Portanto, é importante
dimensionar a equipe
corretamente, planejar de forma
eficiente e acompanhar o
progresso de maneira rigorosa.
3. Tecnologia e Inovação: As
tecnologias e ferramentas
usadas no desenvolvimento de
software estão em constante
evolução. Gerenciar projetos de
software significa acompanhar
as últimas tendências
tecnológicas e garantir que a
equipe esteja atualizada. A
introdução de novas tecnologias
pode afetar a velocidade de
desenvolvimento, os requisitos
de treinamento e a viabilidade
técnica do projeto.
1. Definição de Objetivos e
Escopo: Esta atividade envolve a
definição clara dos objetivos do
projeto e o escopo do trabalho
que deve ser realizado para
alcançar esses objetivos. É
fundamental estabelecer o que o
projeto deve entregar e o que
está excluído do escopo. A
definição adequada do escopo é
a base para o planejamento e o
sucesso do projeto.
2. Planejamento do Projeto: O
planejamento é uma atividade
abrangente que inclui a criação
de um cronograma, alocação de
recursos, orçamento,
identificação de riscos,
desenvolvimento de um plano de
comunicação e estabelecimento
de métricas de desempenho. O
plano do projeto serve como um
guia para toda a equipe,
definindo como o projeto será
executado, monitorado e
controlado.
3. Acompanhamento e Controle:
Esta atividade envolve a
monitorização contínua do
progresso do projeto em relação
ao plano. Os gerentes de projeto
devem acompanhar o
andamento, identificar desvios
em relação ao plano original e
tomar medidas corretivas
quando necessário. Isso inclui a
gestão de riscos, a resolução de
problemas, a comunicação com
as partes interessadas e a
garantia de que o projeto
permaneça alinhado com os
objetivos.
Essas atividades são essenciais
em qualquer projeto,
independentemente de seu
tamanho ou complexidade. Elas
ajudam a garantir que o projeto
seja bem definido, planejado e
executado de acordo com as
metas estabelecidas,
minimizando riscos e problemas
ao longo do caminho.
1. Identificação de Riscos:
- Identificar e documentar
todos os possíveis riscos que
podem afetar o projeto. Isso
pode ser feito por meio de
reuniões, revisão de
documentos, consulta a
especialistas e análise de lições
aprendidas de projetos
anteriores.
2. Análise de Riscos:
- Avaliar a probabilidade de
ocorrência e
o impacto de cada risco
identificado. Isso ajuda a
priorizar os riscos com base em
sua gravidade e probabilidade,
muitas vezes utilizando uma
matriz de probabilidade-impacto.
3. Planejamento de Resposta a
Riscos:
- Desenvolver estratégias para
lidar com os riscos identificados.
Existem quatro estratégias
principais:
- Mitigação: Implementar
ações para reduzir a
probabilidade ou o impacto do
risco.
- Transferência: Transferir o
risco para terceiros, como
seguradoras ou fornecedores.
- Aceitação: Aceitar o risco,
quando seu impacto é
considerado aceitável ou os
custos de mitigação são
proibitivos.
- Evitação: Evitar o risco,
alterando o plano do projeto para
eliminar a
possibilidade de ocorrência.
4. Implementação de Resposta a
Riscos:
- Colocar em prática as
estratégias de resposta ao risco
definidas. Isso pode envolver a
execução de atividades de
mitigação, a compra de seguros,
a alocação de recursos
adicionais, entre outras ações.
5. Monitoramento e Controle de
Riscos:
- Acompanhar continuamente
os riscos ao longo do projeto
para verificar se eles evoluem
conforme o planejado. Isso inclui
a revisão e atualização regular
do registro de riscos, bem como
a execução das respostas
definidas.
6. Comunicação de Riscos:
- Manter as partes
interessadas informadas sobre o
status dos riscos e
das ações de resposta. A
comunicação eficaz é essencial
para garantir que todos estejam
cientes dos riscos e das medidas
tomadas para mitigá-los.
7. Revisão e Aprendizado:
- Após a conclusão do projeto,
realizar uma revisão final dos
riscos e avaliar o desempenho
do gerenciamento de riscos.
Documentar lições aprendidas
para aplicar em projetos futuros.
Características da Matriz de
Risco:
1. Eixos de Probabilidade e
Impacto: A matriz de risco
geralmente tem dois eixos: um
que representa a probabilidade
de ocorrência de um risco (por
exemplo, baixa, média, alta) e
outro que representa o impacto
desse risco no projeto (por
exemplo, baixo, médio, alto).
Esses eixos são escalas que
ajudam a classificar os riscos.
3. Cores ou Classificações: As
células da matriz podem ser
preenchidas com cores ou
classificações para indicar a
gravidade relativa de cada risco.
Isso cria uma representação
visual que ajuda a equipe do
projeto a identificar os riscos
mais críticos.
1. Priorização de Riscos: A
matriz de risco ajuda a equipe do
projeto a priorizar os
riscos, concentrando-se nos que
têm maior probabilidade de
impacto negativo significativo no
projeto. Isso permite que a
equipe concentre seus esforços
de gerenciamento de riscos nos
itens mais críticos.
2. Tomada de Decisões: Ao
visualizar os riscos em uma
matriz, os gerentes de projeto
podem tomar decisões
informadas sobre quais riscos
exigem ações imediatas, como
desenvolver estratégias de
mitigação ou planejar respostas.
3. Comunicação: A matriz de
risco é uma ferramenta eficaz
para comunicar o perfil de risco
do projeto para as partes
interessadas. Ela oferece uma
visão clara dos principais
desafios e oportunidades
relacionados aos riscos.
4. Avaliação Contínua: Durante o
ciclo de vida do projeto, a matriz
de risco pode ser atualizada à
medida que novas informações
se tornam disponíveis ou à
medida que os riscos se
materializam. Isso ajuda a
manter o gerenciamento de
riscos atualizado e adaptado às
circunstâncias do projeto.
f) Requisito Organizacional:
Esses requisitos são definidos
pela organização que está
desenvolvendo o sistema e
podem incluir políticas, padrões
e diretrizes que devem ser
seguidos durante o
desenvolvimento. Exemplo: "O
sistema deve seguir os padrões
de codificação da empresa."
g) Requisito Externo: Esses
requisitos são impostos por
fontes externas à organização,
como regulamentos
governamentais, normas da
indústria ou
contratos com clientes. Exemplo:
"O sistema deve cumprir as
regulamentações de privacidade
de dados do país X."
1. Entrevistas: Realizar
entrevistas diretas com partes
interessadas, usuários finais e
especialistas para obter
informações detalhadas sobre
seus requisitos, expectativas e
necessidades.
3. Observação: Observar os
usuários em seu ambiente de
trabalho para entender como
eles interagem com sistemas
existentes ou identificar
necessidades não expressas
verbalmente.
4. Questionários e Pesquisas:
Criar questionários estruturados
para coletar informações de um
grande número de pessoas.
Essa técnica é útil para coletar
dados quantitativos.
5. Prototipagem Rápida:
Construir protótipos interativos
do software para que os usuários
possam visualizar e
experimentar as funcionalidades
propostas, proporcionando
feedback
direto.
6. Workshops de Requisitos:
Realizar sessões de trabalho
colaborativas com partes
interessadas para identificar,
priorizar e validar requisitos.
7. Análise de Documentação
Existente: Rever documentos,
manuais, relatórios e outros
materiais relacionados ao
sistema ou ao projeto para
extrair informações relevantes.
8. Brainstorming: Realizar
sessões de brainstorming com
partes interessadas para gerar
ideias e identificar requisitos de
forma criativa.
9. Técnicas de Storytelling:
Encorajar partes interessadas a
contar histórias sobre como o
sistema deveria funcionar
em cenários específicos,
ajudando a identificar requisitos
implícitos.
1. Avaliação Financeira: O
estudo de viabilidade examina as
implicações financeiras do
projeto. Isso inclui a análise de
custos, orçamento necessário e
projeções de receitas. Ele ajuda
a determinar se o projeto é
financeiramente viável e se o
retorno esperado justifica o
investimento.
2. Análise de Mercado: O estudo
considera a demanda de
mercado, a concorrência, as
tendências e as oportunidades
existentes. Ele ajuda a identificar
se há um mercado adequado
para o produto ou serviço que o
projeto visa entregar.
7. Comunicação com
Investidores e Stakeholders:
Quando o projeto envolve
investidores, acionistas ou partes
interessadas externas, o estudo
de viabilidade serve como um
meio eficaz de
comunicar os detalhes do
projeto, seus riscos e
oportunidades.
8. Conformidade Regulatória:
Em muitos casos, projetos estão
sujeitos a regulamentações e
normas específicas. O estudo de
viabilidade ajuda a garantir que o
projeto esteja em conformidade
com essas exigências.
Em resumo, o Estudo de
Viabilidade é uma ferramenta
essencial para avaliar se um
projeto é praticável, lucrativo e
alinhado com os objetivos
estratégicos da organização. Ele
fornece uma base sólida para a
tomada de decisões e o
planejamento adequado,
minimizando o risco de investir
em projetos que não têm
potencial de sucesso.
2. Patrocinadores: Os
patrocinadores são normalmente
as partes que fornecem recursos
financeiros para o projeto e têm
um interesse direto em seu
sucesso. Eles podem ser
indivíduos, departamentos ou
organizações.
5. Fornecedores e Parceiros:
Fornecedores e parceiros
fornecem recursos, materiais ou
serviços que são essenciais para
o projeto. Eles têm interesse na
execução bem-sucedida do
projeto.
6. Governo e Órgãos
Reguladores: Em muitos casos,
projetos estão sujeitos a
regulamentações
governamentais e normas
específicas. Agências
governamentais e órgãos
reguladores são stakeholders
que podem influenciar o projeto.
7. Comunidade e Sociedade:
Dependendo da natureza do
projeto, a comunidade local ou a
sociedade em geral podem ser
afetadas por suas atividades.
Suas
preocupações e interesses
devem ser considerados.
8. Concorrentes: Em alguns
casos, concorrentes da
organização podem ser
stakeholders indiretos,
especialmente em setores
altamente competitivos.
9. Funcionários: Os funcionários
da organização que estão
envolvidos no projeto ou que
podem ser afetados por suas
implicações são considerados
stakeholders internos.
É importante identificar,
compreender e gerenciar os
stakeholders de forma adequada
ao longo do ciclo de vida do
projeto. Isso envolve a
comunicação eficaz, o
atendimento às suas
necessidades e preocupações, e
a criação de relacionamentos
positivos para garantir o sucesso
do projeto e o apoio das partes
interessadas.
4. Requisitos Funcionais:
Descrições detalhadas das
funções e características
específicas do sistema, incluindo
os requisitos funcionais que
descrevem como o sistema deve
se comportar em resposta a
entradas específicas.
5. Requisitos Não Funcionais:
Requisitos que especificam
critérios de desempenho,
segurança, usabilidade,
confiabilidade e outros atributos
do sistema que não estão
relacionados diretamente com
funcionalidades específicas.
6. Requisitos de Interface:
Descrições das interfaces do
sistema com outros sistemas ou
componentes, incluindo
requisitos de integração.
7. Restrições: Limitações ou
restrições que devem ser
consideradas no
desenvolvimento do sistema,
como restrições de hardware,
software ou regulamentações
externas.
9. Diagramas e Modelos:
Representações visuais, como
diagramas de fluxo de dados,
diagramas de classe ou
diagramas de sequência, que
ajudam a ilustrar a estrutura e o
comportamento do sistema.
O Documento de Requisitos é
uma peça fundamental na
gestão de projetos de software,
pois fornece uma base sólida
para o planejamento,
implementação, teste e
validação do sistema. Ele
também atua como um ponto de
referência para resolver disputas
ou ambiguidades durante o
desenvolvimento do projeto,
ajudando a garantir que o
sistema entregue atenda às
expectativas dos stakeholders.
4. Documentação: A UML é
usada para criar documentação
técnica detalhada de sistemas.
Os diagramas UML servem
como uma forma de documentar
a estrutura, o comportamento, as
interfaces e outros aspectos do
sistema, facilitando a
manutenção e o entendimento
contínuos.
7. Pós-condições: Condições
que devem ser verdadeiras após
a conclusão bem-sucedida do
caso de uso.
Os casos de uso são valiosos
para capturar e documentar os
requisitos funcionais de um
sistema de forma clara e
compreensível. Eles ajudam os
desenvolvedores e as partes
interessadas a entender como o
sistema será usado na prática e
a identificar os principais
cenários de interação entre
usuários e sistema.