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.