Você está na página 1de 8

Atividade Avaliativa de Revisão Para Prova

Alunos: Larissa, Lais, Lucas Molina e Henrique Conceito:


Disciplina Engenharia de Software Turma: INFO-2A
:
Professor: Nelson Bellincanta Filho

1 - Pesquise e liste cinco exemplos de softwares para cada uma das categorias abaixo.

Software de Sistema:
a. Windows;
b. MacOS;
c. Linux;
d. IOS;
e. Android.

Software de Aplicação:
a. Spotify;
b. Microsoft Word;
c. MeuIF;
d. Paint;
e. Excel.

Software de Engenharia/Científico:
a. AutoCAD;
b. COMSOL Multiphysics;
c. SketchUp;
d. MATLAB;
e. Sienge.

Software Embarcado:
a. Sistemas embarcados automotivos;
b. Roteadores;
c. Modems;
d. Microondas;
e. Retroprojetor.

Software para Linha de Produtos:


a. Office;
b. Spotify;
c. Epic Games;
d. Discord;
e. TeamSpeak3.

Aplicações Web/Aplicativos Móveis:


a. Duolingo;
b. Whatsapp;
c. Instagram;
d. Spotify;
e. Github.

Software de Inteligência Artificial:


a. ChatGPT;
b. Midjourney;
c. Tabnine;
d. Copilot
e. Black Box

2 - Neste exercício, você irá explorar e descrever o processo de software, bem como suas
principais etapas.

a) Definição do Processo de Software:

O processo de software é uma metodologia para as atividades, ações e tarefas


necessárias para desenvolver um software de alta qualidade que precisa ter
especificação, projeto, implementação, validação e evolução.

b) Especifique cada uma das quatro principais etapas do processo de software:

● Especificação de Software;

Serve para definir as funções e objetivos que o software deve executar e


também as restrições do software.

● Projeto e Implementação de Software;

O processo de projeto e implementação é o que dá vida ao software que


converte as especificações do cliente em um sistema executável.

● Validação de Software;

É a parte do processo que permite identificar e corrigir problemas e falhas


antes que o software seja lançado, essa etapa evita que um trabalho tenha que
ser executado novamente gerando assim custos adicionais.

● Evolução de Software.

O último processo feito antes do lançamento, que é referida como o processo


de desenvolvimento, manutenção e atualização do software, onde ocorrem
muitas mudanças no software.

c) Exemplos ou Cenários:

Primeiro a parte de especificação onde uma empresa está desenvolvendo um novo


sistema de pedidos, nessa etapa os analistas entrevistam tanto os usuários finais quanto os
funcionários da empresa e analisam suas necessidades.
Logo após, com base nas necessidades, os engenheiros de software projetam a
interface do software.
Tendo o projeto em mãos os programadores começam a implementar o código com
as especificações da primeira etapa.
Aí sim é feito os testes que são funcionais e de integração, os testadores se colocam
tanto como usuários, quanto como parte da empresa.
E entra a parte de manutenção que é feita após o lançamento que corrige erros e
adiciona funções necessárias.

d) Importância das Etapas:

Cada etapa é importante para que o resultado final seja o esperado, por exemplo a
parte de especificações e exigências é necessária para que o projeto seja como
desejado, para que o código tenha tudo o que for necessário, desta forma uma etapa
compromete as outras, sendo uma mal executada compromete a próxima etapa e o
resultado final.

e) Desafios e Soluções:

As principais dificuldades encontradas são:


● Falta de comunicação tanto entre o cliente e do desenvolvedor, como também
entre os próprios desenvolvedores, uma das principais soluções é estabelecer
canais de comunicação claros e regulares entre as equipes.
● Falta de recursos tanto financeiros, quanto de tempo de execução do projeto,
como solução pode-se priorizar tarefas e funcionalidades essenciais para
garantir que os recursos disponíveis sejam utilizados de forma eficiente.
● Qualidade do código que pode ser mal escrito, não testado para isso pode-se
adotar práticas de desenvolvimento de software como revisões de código, e
realizar mais testes.

3 - Neste exercício, você irá investigar e compreender os modelos de processo de software,


que são estruturas fundamentais para organizar e gerenciar o desenvolvimento de software. ‘

a) Definição dos Modelos de Processo de Software:


Os modelos de processo de software, como o Waterfall e os ágeis (incrementais ou
iterativos), são essenciais no contexto do desenvolvimento de software porque
fornecem estruturas organizadas e diretrizes para o planejamento, execução e entrega
de projetos de software. O modelo Waterfall, embora seja mais antigo e sequencial, é
adequado para projetos com requisitos fixos e pouca probabilidade de mudança. No
entanto, para situações em que os requisitos são propensos a mudanças rápidas e a
comunicação informal da equipe é possível, os métodos ágeis, como o
desenvolvimento incremental, são mais eficazes. O desenvolvimento incremental
permite a entrega de software útil em estágios, facilitando o feedback do cliente e a
adaptação às mudanças nos requisitos, embora possa apresentar desafios de
gerenciamento em sistemas grandes e complexos. Para esses casos, uma abordagem
mista pode ser recomendada, combinando características dos modelos Waterfall e
incremental para otimizar o processo de desenvolvimento.
b) Identificação de Exemplos:

1. Modelo Waterfall:
● O modelo Waterfall é um paradigma mais antigo da engenharia de software,
caracterizado por uma abordagem sequencial e sistemática para o desenvolvimento de
software.
● Suas características principais incluem a divisão do processo de desenvolvimento em
estágios sequenciais, onde cada fase depende da conclusão da anterior.
● O ciclo de vida do desenvolvimento de software no modelo Waterfall segue uma
progressão linear, passando pelas fases de análise, design, implementação, testes e
manutenção.
● Uma das principais limitações do modelo Waterfall é sua rigidez em lidar com
mudanças nos requisitos, uma vez que cada estágio é dependente do anterior e as
alterações podem ser difíceis e custosas de serem implementadas.

2. Modelo Incremental:
● O modelo Incremental é uma abordagem iterativa que envolve o desenvolvimento e a
entrega de partes incrementais do software ao longo do tempo.
● Nesse modelo, o desenvolvimento é dividido em incrementos, onde cada incremento
adiciona funcionalidades adicionais ao sistema.
● O ciclo de vida do desenvolvimento de software no modelo Incremental é
caracterizado pela entrega de versões parciais e funcionais do software em intervalos
regulares.
● Uma das principais vantagens desse modelo é a capacidade de fornecer resultados
tangíveis em estágios iniciais do projeto, permitindo feedback contínuo do cliente e
acomodando mudanças nos requisitos de forma mais flexível.

3. Modelo Scrum (Ágil):


● O Scrum é um dos métodos ágeis mais populares, que se baseia em princípios de
transparência, inspeção e adaptação.
● No Scrum, o desenvolvimento é organizado em ciclos chamados de "sprints",
geralmente com duração de 2 a 4 semanas, durante os quais uma parte do trabalho é
concluída e pronta para entrega.
● O ciclo de vida do desenvolvimento de software no Scrum é interativo e adaptativo,
com um foco na colaboração da equipe, na entrega contínua de valor ao cliente e na
capacidade de resposta a mudanças.
● O Scrum também enfatiza a auto-organização da equipe, com papéis definidos, como
Scrum Master e Product Owner, para facilitar a comunicação e a tomada de decisões
rápidas.

c) Comparação entre Modelos:

1. Modelo Waterfall:
● Vantagens:
○ Estrutura clara e sequencial, facilitando o planejamento e o gerenciamento do
projeto.
○ Fácil de entender e seguir para projetos com requisitos bem definidos e
estáveis.
○ Documentação abrangente em cada fase, o que pode ser útil para fins de
conformidade e auditoria.
● Desvantagens:
○ Pouca flexibilidade para lidar com mudanças nos requisitos ao longo do
tempo.
○ O cliente só vê o produto final no final do desenvolvimento, o que pode levar
a problemas de aceitação.
○ Risco de falha caso os requisitos não sejam compreendidos corretamente
desde o início.
● Contextos de Aplicação Adequados:
○ Projetos com requisitos estáveis e bem definidos.
○ Sistemas críticos onde a segurança e a estabilidade são prioridades.
○ Projetos de pequena ou média escala com equipes experientes e
especializadas.

2. Modelo Incremental:
● Vantagens:
○ Possibilita entregas parciais e frequentes de funcionalidades, permitindo
feedback precoce do cliente.
○ Maior flexibilidade para lidar com mudanças nos requisitos ao longo do
tempo.
○ Reduz o risco de falha ao permitir testes e validações contínuas em partes do
sistema.
● Desvantagens:
○ Possibilidade de degradação da arquitetura do sistema se não houver uma
visão clara do design final desde o início.
○ Gerenciamento complexo de dependências entre incrementos.
○ Custos adicionais de integração e testes de cada incremento.
● Contextos de Aplicação Adequados:
○ Projetos onde os requisitos são propensos a mudanças ou não estão
completamente definidos desde o início.
○ Desenvolvimento de produtos complexos onde é preferível uma abordagem
iterativa.
○ Equipes multidisciplinares que podem se adaptar rapidamente às mudanças de
requisitos.

3. Modelo Scrum (Ágil):


● Vantagens:
○ Foco na entrega contínua de valor ao cliente através de ciclos curtos de
desenvolvimento.
○ Capacidade de resposta a mudanças nos requisitos e prioridades do cliente.
○ Melhora a colaboração e a comunicação dentro da equipe.
● Desvantagens:
○ Pode ser desafiador para equipes inexperientes devido à necessidade de auto-
organização e autogestão.
○ Requer um envolvimento significativo do cliente e do Product Owner, o que
pode ser difícil em algumas organizações.
○ A estrutura do Scrum pode não ser adequada para todos os tipos de projetos ou
organizações.
● Contextos de Aplicação Adequados:
○ Projetos onde é importante entregar valor ao cliente rapidamente e de forma
incremental.
○ Desenvolvimento de produtos onde a adaptação contínua aos requisitos do
mercado é essencial.
○ Equipes que valorizam a colaboração, comunicação e feedback contínuos.

Em resumo, enquanto o Waterfall é mais adequado para projetos com requisitos estáveis, o
Incremental e o Scrum são mais flexíveis e adaptáveis a mudanças nos requisitos ao longo do
tempo, com o Scrum sendo especialmente eficaz para projetos onde a entrega contínua de
valor ao cliente é essencial. Cada modelo tem suas próprias vantagens e desvantagens, e a
escolha do modelo mais adequado depende dos requisitos específicos do projeto, das
preferências da equipe e da cultura organizacional.

d) Aplicação Prática:

1. Projeto de Desenvolvimento de Software para uma Pequena Startup:


● Tamanho da Equipe: Pequena equipe multidisciplinar.
● Complexidade do Projeto: Baixa a média.
● Requisitos de Flexibilidade: Altos, devido à natureza dinâmica de uma startup.
● Modelo de Processo Recomendado: Scrum (Ágil)
○ O Scrum permite que a equipe entregue valor rapidamente em ciclos curtos
(sprints), adaptando-se rapidamente às mudanças nos requisitos do produto e
do mercado.
○ A flexibilidade do Scrum permite que a equipe ajuste suas prioridades e
funcionalidades com base no feedback contínuo do cliente, essencial para
startups que buscam inovação rápida e adaptação às demandas do mercado.

2. Projeto de Desenvolvimento de Software para uma Empresa Estabelecida:


● Tamanho da Equipe: Médio a grande equipe, com especialistas em diferentes áreas.
● Complexidade do Projeto: Alta, com múltiplos sistemas e integrações.
● Requisitos de Flexibilidade: Moderados a baixos, devido à estabilidade dos requisitos
do sistema.
● Modelo de Processo Recomendado: Modelo Incremental
○ O desenvolvimento incremental permite que a equipe divida o projeto em
incrementos menores e entregue partes funcionais do software em intervalos
regulares.
○ Isso ajuda a mitigar riscos e a gerenciar a complexidade, permitindo que a
equipe se concentre em partes específicas do sistema de cada vez e integre
gradualmente as funcionalidades.
○ A abordagem iterativa do desenvolvimento incremental permite ajustes
conforme necessário, enquanto mantém a estabilidade geral dos requisitos.

3. Projeto de Desenvolvimento de Software para uma Agência Governamental:


● Tamanho da Equipe: Grande equipe, com diferentes departamentos e stakeholders.
● Complexidade do Projeto: Alta, devido aos requisitos de conformidade, segurança e
integração com sistemas legados.
● Requisitos de Flexibilidade: Baixos a moderados, devido aos requisitos regulatórios e
de segurança.
● Modelo de Processo Recomendado: Modelo Waterfall
○ O modelo Waterfall é adequado para projetos governamentais onde os
requisitos são estáveis e bem definidos desde o início.
○ Ele oferece uma abordagem estruturada e documentada, que é importante para
atender aos requisitos de conformidade e auditoria.
○ Apesar da falta de flexibilidade do Waterfall, a natureza estável dos requisitos
nesses projetos permite que a equipe siga uma abordagem sequencial sem
muita necessidade de ajustes frequentes.

e) Reflexão:

Selecionar o modelo de processo de software adequado para um projeto específico é


muito importante, pois pode influenciar no sucesso do resultado final, na eficiência da
equipe e na satisfação do cliente. Cada modelo de processo tem suas próprias
características, vantagens e desvantagens, e a escolha do modelo certo depende das
necessidades específicas do projeto, das restrições de recursos, do cronograma e do
ambiente em que o projeto está sendo desenvolvido.

f) Exemplos de Modelos de Processo de Software:

Modelo Cascata (Waterfall)

Descrição: É o modelo de construir o software de forma sequencial que baseia-se em uma


hierarquia rígida de etapas sequenciais tendo um controle fixo.
Exemplo: Uma empresa que quer desenvolver um software de controle de estoque que
seria inicialmente levantada pelos analistas, em seguida os desenvolvedores vão
implementar o sistema, os testadores vão fazer testes e por fim o software é entregue para
a fase de manutenção.

Modelo incremental

Descrição: É uma abordagem evolutiva no desenvolvimento do sistema, onde o sistema é


construído e entregue a incrementos.Cada um adiciona funcionalidades ao sistema.
Exemplo: O desenvolvimento de um sistema de gerenciamento de projetos. No primeiro
incremento, o sistema pode incluir recursos básicos, como cadastro de projetos e tarefas.
Em seguida, em incrementos subsequentes, funcionalidades mais avançadas, como
atribuição de recursos, geração de relatórios e integração com ferramentas de
comunicação, são adicionadas.

O modelo cascata segue uma abordagem sequencial, enquanto o modelo incremental e


iterativo. Isso significa que no modelo cascata, as mudanças nos requisitos são difíceis de
serem acomodadas após o início do desenvolvimento, enquanto no modelo incremental,
as mudanças podem ser incorporadas em incrementos futuros.

A escolha do modelo de processo de software adequado pode ter um impacto


significativo no resultado do projeto. Por exemplo, a escolha do modelo cascata pode ser
mais apropriada para projetos com requisitos estáveis e bem definidos, enquanto o
modelo incremental pode ser mais adequado para projetos onde a flexibilidade e a
capacidade de adaptação são prioridades. A escolha errada do modelo pode resultar em
atrasos, custos adicionais e insatisfação do cliente.

Você também pode gostar