Escolar Documentos
Profissional Documentos
Cultura Documentos
Engenharia de Software I
Prof. Vickybert Freire
Apresentação
Engenharia de Software I
Prof. Vickybert Freire
Professor
• Vickybert P. Freire
vickybert.freire@fatec.sp.gov.br
– Bacharel em Ciências da Computação
– Pós-Graduado em Gestão de Projetos
– +14 anos de experiência em desenvolvimento de software em
diversas plataformas, linguagens e bancos de dados
– +8 anos de experiência em liderança de equipe e projetos
– +10 anos de experiência em ministrar disciplinas de programação
– +6 anos de experiência em ministrar disciplinas de gestão de
projetos
– Certificado em SCJP – Sun Certified Java Programmer
– Certificado em CSM – Certified ScrumMaster
– Certificado em Management 3.0
Engenharia de Software I
Prof. Vickybert Freire
Disciplina
IES011 – Engenharia de Software I
Ementa
Introdução à Análise de Sistemas. Modelos de Ciclo de Vida de Software. Modelos
de Processos de Desenvolvimento de Software (Modelo em Cascata, Espiral e
Prototipagem). Definição e classificação de Requisitos de Software (funcionais e
não funcionais). Técnicas de Levantamento de Requisitos. Modelo de Negócios
aplicado ao levantamento de Requisitos (Canvas). Estudo de Viabilidade. Técnicas
de documentação. Metodologias para desenvolvimento de sistemas
Objetivos de Aprendizagem
• Identificar as características de Sistemas de Informação, seus tipos, viabilidade
técnica, características de custo, valor e qualidade da informação.
• Explicar as características de um sistema, seus componentes e relacionamentos.
• Compreender o ciclo de vida utilizando concepções do modelo cascata.
• Utilizar conceitos da UML na análise de requisitos e na elaboração de diagramas
focando na modelagem de sistemas.
Engenharia de Software I
Prof. Vickybert Freire
Disciplina
Bibliografia básica
• Básica
– BEZERRA, Eduardo. Princípios de Análise e Projeto de Sistemas com UML. 3 ed. Rio de
Janeiro: Elsevier, 2015.
– PRESSMAN, Roger; MAXIM, Bruce. Engenharia de Software. 8 ed. São Paulo: McGraw
Hill Brasil, 2016.
– SOMMERVILLE, Ian. Engenharia De Software. 10 ed. São Paulo: Pearson Brasil, 2019.
• Complementar
– LARMAN, Craig. Utilizando UML e padrões. 3 ed. Porto Alegre: Bookman, 2007.
– REZENDE, Denis Alcides. Engenharia de software e sistemas de informação. 3 ed. Rio de
Janeiro: Brasport, 2005.
– WASLAWICK Raul. Análise e Projeto de Sistemas de Informação Orientados a Objetos. 2
ed. Rio de Janeiro: Elsevier, 2010.
Engenharia de Software I
Prof. Vickybert Freire
Disciplina
Engenharia de Software I
Prof. Vickybert Freire
Disciplina
Materiais recomendados
• YouTube • Podcast
– Curso em Vídeo – Gustavo Guanabara – Hipsters.Tech
https://www.youtube.com/c/CursoemVídeo https://hipsters.tech/category/podcast/
– Dev na Estrada
– Fabio Akita https://devnaestrada.com.br
https://www.youtube.com/c/FabioAkita1990
– Lamba3
– Full Cycle – Wesley Willians https://www.lambda3.com.br/lambda3-
podcast/
https://www.youtube.com/c/FullCycle
– Filipe Deschamps
https://www.youtube.com/c/FilipeDeschamps
Engenharia de Software I
Prof. Vickybert Freire
Critérios de avaliação
• A avaliação do desempenho do aluno ao longo do semestre é feita
com o intuito de aferir aquisição do conteúdo da carga didática
seguirá as orientações da coordenação de curso;
A1 e A2 = Atividades (Trabalhos)
P1 e P2 = Provas
P1 = 45% do conteúdo
P2 = 100% do conteúdo
Engenharia de Software I
Prof. Vickybert Freire
FAQ
• Posso filmar ou gravar o áudio das aulas?
Não, está proibido o uso desses recursos.
• Posso divulgar o material da disciplina, provas e/ou trabalhos publicamente na
internet?
Não, o material fornecido visa ajuda-los no desenvolvimento do aprendizado e
orientação. As ações de divulgação do material, provas e/ou trabalhos são prejudiciais
aos futuros alunos e ao professor.
• Posso utilizar calculadora nas provas?
Sim, desde que não seja alfanumérica, nem telefone celular.
• Qual a matéria das provas e exercícios de classe?
Sempre toda a matéria lecionada até aquela data.
• Os alunos especiais estão dispensados de realizar as provas?
Não, os alunos especiais somente estão dispensados de realizar os trabalhos.
• A frequência é obrigatória?
Sim, e controlada.
Engenharia de Software I
Prof. Vickybert Freire
FAQ
• Preciso fazer os trabalhos solicitados?
Sim, os trabalhos têm o intuito de ajuda-los a aprender e seu
reforço será recompensado computando pontos na sua
avaliação. Deixar de fazer os trabalhos fará que você perca
pontos valiosos, e que podem fazer falta no final.
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert Freire
Apresentação dos alunos
• Diga-me seu nome (farei a chamada enquanto
isso)
• Seu conhecimento prévio sobre Engenharia,
Desenvolvimento.
• Gostaria de trabalhar nesta área?
• Qual é seu super poder?
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert P. Freire
Aula 02
Engenharia de Software I
Prof. Vickybert Freire
O que é Software?
• Software é um agrupamento de comandos escritos em uma
linguagem de programação. Estes comandos, ou instruções, criam
as ações dentro do programa, e permitem seu funcionamento.
Engenharia de Software I
Prof. Vickybert Freire
O que é Software?
• Software é o termo genérico usado para
descrever programas, apps, scripts, macros e
instruções de código embarcado diretamente
(firmware), de modo a ditar o que uma
máquina deve fazer
Engenharia de Software I
Prof. Vickybert Freire
O que é Software?
• Esta pilha de
62.000 cartões
perfurados era o
software de
controle do SAGE.
Tamanho dos
dados? 5 MB
Engenharia de Software I
Prof. Vickybert Freire
O que é Engenharia?
• Aplicação de métodos científicos ou empíricos à
utilização dos recursos da natureza em benefício
do ser humano.
Engenharia de Software I
Prof. Vickybert Freire
O que é Engenharia de Software?
• A engenharia de software é uma disciplina de
engenharia que se preocupa com os aspectos
da produção de software, desde sua
concepção inicial até sua operação e
manutenção.
Engenharia de Software I
Prof. Vickybert Freire
O que se estuda em Eng de Software
O SWEBOK define 12 áreas de conhecimento em Engenharia de Software:
1. Requisitos de Software
2. Desenho de Software
3. Construção de Software
4. Teste de Software
5. Manutenção de Software
6. Gerenciamento de Configuração de Software
7. Gerenciamento da Engenharia de Software
8. Processo de Engenharia de Software
9. Modelos e Métodos de Engenharia de Software
10. Qualidade de Software
11. Prática Profissional de Engenharia de Software
12. Aspectos Econômicos na Engenharia de Software
13. Fundamentos de Computação
14. Fundamentos de Matemática
15. Fundamentos de Engenharia
https://www.computer.org/education/bodies-of-knowledge/software-engineering
https://ieeecs-media.computer.org/media/education/swebok/swebok-v3.pdf
Engenharia de Software I
Prof. Vickybert Freire
Eng de Software
• O conceito de engenharia de software foi proposto pela primeira
vez em 1968, em uma conferência realizada para discutir o que
então se chamava crise do software (NAUR; RANDELL, 1969). Ficou
claro que as abordagens individuais ao desenvolvimento de
programas não escalavam para sistemas de software grandes e
complexos. Os sistemas não eram confiáveis, custavam mais do que
o previsto e eram entregues com atraso.
Engenharia de Software I
Prof. Vickybert Freire
Eng de Software
• Em uma conferência da OTAN, com 50
renomados cientistas da computação, houve a
seguinte citação:
“O problema é que certas classes de sistemas estão colocando
demandas sobre nós que estão além das nossas capacidades e das
teorias e métodos de projeto que conhecemos no presente
tempo. Em algumas aplicações não existe uma crise, como rotinas
de ordenação e folhas de pagamento, por exemplo. Porém,
estamos tendo dificuldades com grandes aplicações. Não podemos
esperar que a produção de tais sistemas seja fácil.”
Engenharia de Software I
Prof. Vickybert Freire
Mercado de Trabalho
• O que faz um Engenheiro de Software?
Vídeo: Vídeo:
O que um Engenheiro de 4 Anos de ENGENHARIA
Software faz? DE SOFTWARE em 13
Minutos
Engenharia de Software I
Prof. Vickybert Freire
Mercado de Trabalho
• Quanto ganha um Engenheiro de Software?
Engenharia de Software I
Prof. Vickybert Freire
Mercado de Trabalho
Engenharia de Software I
Prof. Vickybert Freire
Mercado de Trabalho
Engenharia de Software I
Prof. Vickybert Freire
https://olhardigital.com.br/2021/07/26/pro/contracorrente-salarios-da-ti-sobem-55-nas-capitais-brasileiras-veja-valores/
Engenharia de Software I
Prof. Vickybert Freire
Definições, Contexto e História
Engenharia de Software I
Prof. Vickybert Freire
Definições, Contexto e História
• No mundo moderno, tudo é software. Hoje em dia, por exemplo,
empresas de qualquer tamanho dependem dos mais diversos sistemas de
informação para automatizar seus processos. Governos também
interagem com os cidadãos por meio de sistemas computacionais, por
exemplo, para coletar impostos ou realizar eleições. Empresas vendem,
por meio de sistemas de comércio eletrônico, uma gama imensa de
produtos, diretamente para os consumidores. Software está também
embarcado em diferentes dispositivos e produtos de engenharia,
incluindo automóveis, aviões, satélites, robôs, etc. Por fim, software está
contribuindo para renovar indústrias e serviços tradicionais, como
telecomunicações, transporte em grandes centros urbanos, hospedagem,
lazer e publicidade.
• Portanto, devido a sua relevância no nosso mundo, não é surpresa que
exista uma área da Computação destinada a investigar os desafios e
propor soluções que permitam desenvolver sistemas de software —
principalmente aqueles mais complexos e de maior tamanho — de forma
produtiva e com qualidade. Essa área é chamada de Engenharia de
Software.
Engenharia de Software I
Prof. Vickybert Freire
Definições, Contexto e História
• Engenharia de Software trata da aplicação de
abordagens sistemáticas, disciplinadas e
quantificáveis para desenvolver, operar, manter e
evoluir software.
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de software
A engenharia de software é importante por duas razões:
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de software
Existem dois tipos de produto de software:
1. Produtos genéricos
Engenharia de Software I
Prof. Vickybert Freire
Diversidade da engenharia de software
Existem muitos tipos diferentes de aplicação, incluindo:
1. Aplicações stand-alone
2. Aplicações interativas baseadas em transações
3. Sistemas de controle embarcados
4. Sistemas de processamento em lotes (batch)
5. Sistemas de entretenimento
6. Sistemas para modelagem e simulação
7. Sistemas de coleta de dados e análise
8. Sistemas de sistemas
Engenharia de Software I
Prof. Vickybert Freire
Diversidade da engenharia de software
Há fundamentos da engenharia de software que se aplicam a
todos os tipos de sistemas de software:
Engenharia de Software I
Prof. Vickybert Freire
Exemplos reais
Para ilustrar a complexidade envolvida na construção de
sistemas de software reais, vamos dar alguns números sobre o
tamanho desses sistemas, em linhas de código.
Engenharia de Software I
Prof. Vickybert Freire
FAQ – Eng de Software
Engenharia de Software I
Prof. Vickybert Freire
Atributos essenciais do bom software
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert P. Freire
Aula 02
Engenharia de Software I
Prof. Vickybert Freire
Ética
Engenharia de Software I
Prof. Vickybert Freire
Código de Ética
• Para assegurar o máximo possível que seus
esforços serão utilizados para o bem, os
engenheiros de software devem se comprometer
a fazer da engenharia de software uma profissão
útil e respeitada. De acordo com esse
compromisso, os engenheiros de software devem
seguir o código de ética e prática profissional.
Engenharia de Software I
Prof. Vickybert Freire
Código de Ética
• Um engenheiro de software deve aceitar que o seu
trabalho envolve responsabilidades mais amplas do
que a simples aplicação de habilidades técnicas.
Também deve se comportar de maneira ética e
moralmente responsável se quiser ser respeitado como
um engenheiro profissional.
Engenharia de Software I
Prof. Vickybert Freire
Código de Ética
Código de Ética do Profissional de Informática - SOCIEDADE BRASILEIRA DE COMPUTAÇÃO
• Art. 1o : Contribuir para o bem-estar social, promovendo, sempre que possível, a inclusão de todos setores da
sociedade.
• Art. 2o : Exercer o trabalho profissional com responsabilidade, dedicação, honestidade e justiça, buscando sempre
a melhor solução.
• Art. 3o : Esforçar-se para adquirir continuamente competência técnica e profissional, mantendo-se sempre
atualizado com os avanços da profissão.
• Art. 4o : Atuar dentro dos limites de sua competência profissional e orientar-se por elevado espírito público.
• Art. 5o : Guardar sigilo profissional das informações a que tiver acesso em decorrência das atividades exercidas.
• Art. 6o : Conduzir as atividades profissionais sem discriminação, seja de raça, sexo, religião, nacionalidade, cor da
pele, idade, estado civil ou qualquer outra condição humana.
• Art. 7o : Respeitar a legislação vigente, o interesse social e os direitos de terceiros.
• Art. 8o : Honrar compromissos, contratos, termos de responsabilidade, direitos de propriedade, copyrights e
patentes.
• Art. 9o : Pautar sua relação com os colegas de profissão nos princípios de consideração, respeito, apreço,
solidariedade e da harmonia da classe.
• Art. 10: Não praticar atos que possam comprometer a honra, a dignidade, privacidade de qualquer pessoa.
• Art. 11: Nunca apropriar-se de trabalho intelectual, iniciativas ou soluções encontradas por outras pessoas.
• Art. 12: Zelar pelo cumprimento deste código.
Engenharia de Software I
Prof. Vickybert Freire
Código de Ética
Código de ética e prática profissional da engenharia de software - ACM/IEEE-CS
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert P. Freire
Aula 03
Engenharia de Software I
Prof. Vickybert Freire
Processos de Software
Engenharia de Software I
Prof. Vickybert Freire
Importância de Processos
• A produção de um carro em uma fábrica de automóveis segue um
processo bem definido. Sem estender a explicação, primeiro, as
chapas de aço são cortadas e prensadas, para ganhar a forma de
portas, tetos e capôs. Depois, o carro é pintado e instalam-se
painel, bancos, cintos de segurança e a fiação. Por fim, instala-se a
parte mecânica, incluindo motor, suspensão e freios.
Engenharia de Software I
Prof. Vickybert Freire
Importância de Processos
• Em projetos pessoais, a adoção de um processo é
menos importante (a exemplo do Linux em seu início).
Ou, dizendo de outra forma, o processo em tais
projetos é pessoal, composto pelos princípios, práticas
e decisões tomadas pelo seu único desenvolvedor; e
que terão impacto apenas sobre ele mesmo.
Engenharia de Software I
Prof. Vickybert Freire
Importância de Processos
• E essas equipes, para produzir software com qualidade e
produtividade, precisam de um ordenamento, mesmo que
mínimo. Por isso, empresas dão tanto valor a processos de
software. Eles são o instrumento de que as empresas
dispõem para coordenar, motivar, organizar e avaliar o
trabalho de seus desenvolvedores, de forma a garantir que
eles trabalhem com produtividade e produzam sistemas
alinhados com os objetivos da organização.
Engenharia de Software I
Prof. Vickybert Freire
Importância de Processos
• Vamos estudar alguns processos de software,
como por exemplo Processos Waterfall e Ágeis
Engenharia de Software I
Prof. Vickybert Freire
Processos em
Cascata
Engenharia de Software I
Prof. Vickybert Freire
Processos em Cascata
• Os processos do tipo Waterfall (também chamado de
Cascata ou Tradicional) - dominante nas décadas de 70 e
80 - eram estritamente sequenciais, começando com
uma fase de especificação de requisitos até chegar às
fases finais de implementação, testes e manutenção do
sistema.
Engenharia de Software I
Prof. Vickybert Freire
Processos em Cascata
• Se considerarmos o contexto histórico, essa primeira
visão de processo era natural, visto que projetos de
Engenharia tradicional também são sequenciais e
precedidos de um planejamento detalhado. Todas as
fases também geram documentações detalhadas do
produto que está sendo desenvolvido.
Engenharia de Software I
Prof. Vickybert Freire
Processos em Cascata
Os estágios do modelo em cascata refletem diretamente as atividades
fundamentais do desenvolvimento de software:
Engenharia de Software I
Prof. Vickybert Freire
Processos em Cascata
3. Implementação e teste de unidade. Durante essa etapa, o projeto do
software é realizado como um conjunto de programas ou unidades de
programa. O teste de unidade envolve a verificação de cada unidade,
conferindo se satisfazem a sua especificação.
Engenharia de Software I
Prof. Vickybert Freire
Processos em Cascata
• Há muitas empresas, principalmente as que seu
produto final não é software, que utilizam o
modelo Waterfall para o desenvolvimento de
projetos.
Engenharia de Software I
Prof. Vickybert Freire
Processos em Cascata
• Alguns benefícios do uso de modelos Waterfall:
– Processos mais rígidos e portanto mais auditáveis;
– Alto nível de confiabilidade na evolução do projeto,
uma vez que cada etapa é validada e aceita;
– Menor exposição à imprevistos, devido à forte
preocupação com riscos e ameaças e
acompanhamento contínuo;
– Maior/melhor previsibilidade e planejamento,
evitando construções com baixo resultado.
Engenharia de Software I
Prof. Vickybert Freire
PMBOK
• A versão atual do PMBOK (5ª edição, 2013)
contém 47 processos de gerenciamento,
agrupados nas 10 áreas de conhecimento.
Engenharia de Software I
Prof. Vickybert Freire
10 Pilares da Gestão de Projetos
Engenharia de Software I
Prof. Vickybert Freire
47 processos
Engenharia de Software I
Prof. Vickybert Freire
5 grupos de processos
Engenharia de Software I
Prof. Vickybert Freire
Processos em Cascata
Engenharia de Software I
Prof. Vickybert Freire
Processos em Cascata
• No entanto, após cerca de uma década,
começou-se a perceber que software é diferente
de outros produtos de Engenharia.
Engenharia de Software I
Prof. Vickybert Freire
Processos em Cascata
• Em 1994, um relatório produzido pela empresa de
consultoria Standish Group revelou informações mais
detalhadas sobre os projetos de software da época.
Por exemplo, o relatório, que ficou conhecido pelo
sugestivo nome de CHAOS Report, mostrou que mais
de 55% dos projetos estourava os prazos planejados
entre 51% e 200%; pelo menos 12% estouravam os
prazos acima de 200%, conforme mostra o próximo
gráfico.
Engenharia de Software I
Prof. Vickybert Freire
Processos em Cascata
Engenharia de Software I
Prof. Vickybert Freire
Processos em Cascata
Engenharia de Software I
Prof. Vickybert Freire
Processos
Incrementais
Engenharia de Software I
Prof. Vickybert Freire
Processos Incrementais
• O desenvolvimento incrementai se baseia na
ideia de desenvolver uma implementação inicial,
obter feedback dos usuários ou terceiros e fazer o
software evoluir através de várias versões, até
alcançar o sistema necessário.
Engenharia de Software I
Prof. Vickybert Freire
Processos Incrementais
Engenharia de Software I
Prof. Vickybert Freire
Processos Incrementais
• O desenvolvimento incremental, em alguma de suas
formas, é atualmente a abordagem mais comum para o
desenvolvimento de aplicações e produtos de
software.
Engenharia de Software I
Prof. Vickybert Freire
Processos Incrementais
• O desenvolvimento incremental tem três grandes
vantagens em relação ao modelo em cascata:
1. O custo de implementação das mudanças nos requisitos é
reduzido. A quantidade de análise e documentação que
precisa ser refeita é significativamente menor do que a
necessária ao modelo em cascata.
2. É mais fácil obter feedback do cliente sobre o trabalho de
desenvolvimento. Os clientes podem comentar as
demonstrações de software e ver o quanto foi implementado.
Para eles, é mais difícil julgar o progresso a partir dos
documentos do projeto (design) de software.
3. A entrega e a implantação antecipadas de um software útil
para o cliente são possíveis, mesmo se toda a funcionalidade
não tiver sido incluída. Os clientes são capazes de usar o
software e de obter valor a partir dele mais cedo do que com
um processo em cascata.
Engenharia de Software I
Prof. Vickybert Freire
Processos Incrementais
• Apesar dos benefícios o desenvolvimento incremental tem
desvantagens:
1. Grandes organizações têm procedimentos burocráticos que
evoluíram ao longo do tempo, o que pode levar a uma
incompatibilidade entre esses procedimentos e um processo
iterativo ou ágil mais informal;
2. O processo não é visível. Os gerentes precisam de resultados
regulares para medir o progresso. Se os sistemas forem
desenvolvidos rapidamente, não é econômico produzir documentos
que reflitam cada versão do sistema.
3. A estrutura do sistema tende a se degradar à medida que novos
incrementos são adicionados. Mudanças regulares deixam o código
bagunçado, uma vez que novas funcionalidades são adicionadas de
qualquer maneira possível. Fica cada vez mais difícil e caro adicionar
novas características a um sistema. Para reduzir a degradação
estrutural e a bagunça generalizada no código, os métodos ágeis
sugerem que se refatore (melhore e reestruture) o software
regularmente.
Engenharia de Software I
Prof. Vickybert Freire
Processos Incrementais
• Alguns modelos de desenvolvimento de software
usando processos incrementais foram criados e
evoluídos com o tempo, dentre eles estão:
– RUP – Rational Unified Process;
– XP – eXtreme Programming;
– Kanban;
– Scrum
Engenharia de Software I
Prof. Vickybert Freire
Atividades do
Processo
Engenharia de Software I
Prof. Vickybert Freire
Atividades do Processo
• Os processos de software reais são sequências intercaladas de
atividades técnicas, colaborativas e gerenciais, cujo objetivo global
é especificar, projetar, implementar e testar um sistema de
software.
Engenharia de Software I
Prof. Vickybert Freire
Especificação do software
• Especificação do software ou engenharia de requisitos é o processo
de compreender e definir quais serviços são necessários para o
sistema e identificar as restrições sobre sua operação e
desenvolvimento.
Engenharia de Software I
Prof. Vickybert Freire
Especificação do software
Engenharia de Software I
Prof. Vickybert Freire
Especificação do software
• Existem três atividades principais no processo de engenharia de
requisitos:
1. Elicitação e análise de requisitos. É o processo de derivação dos
requisitos do sistema por meio da observação dos sistemas
existentes, de discussões com os potenciais usuários e clientes, da
análise de tarefas etc.
2. Especificação de requisitos. É a atividade de traduzir a informação
obtida durante a análise em um documento que defina um conjunto
de requisitos. Dois tipos podem ser incluídos nesse documento:
requisitos do usuário, que são declarações abstratas dos requisitos
do sistema para o cliente e usuário final; e requisitos do sistema, que
são uma descrição mais detalhada da funcionalidade a ser fornecida.
3. Validação de requisitos. Essa atividade confere os requisitos quanto
a realismo, consistência e integridade. Durante esse processo, erros
no documento de requisitos são inevitavelmente descobertos.
Engenharia de Software I
Prof. Vickybert Freire
Projeto e implementação do software
• O estágio de implementação no desenvolvimento de software é o
processo de elaborar um sistema executável para ser entregue ao
cliente. Às vezes, isso envolve atividades distintas, que são o projeto
(design) e a programação do software.
Engenharia de Software I
Prof. Vickybert Freire
Projeto e implementação do software
• As atividades no processo de projeto variam, porém quatro que
podem fazer parte do processo de projeto para sistemas de
informação são:
1. Projeto de arquitetura, em que são identificados a estrutura global
do sistema e os componentes principais (módulos), observando seus
relacionamentos e como eles estão distribuídos.
2. Projeto de banco de dados, em que são projetadas as estruturas de
dados do sistema e como elas devem ser representadas em um
banco de dados.
3. Projeto de interface, em que são definidas as interfaces entre os
componentes do sistema; Uma vez acordadas as especificações da
interface, os componentes podem ser projetados e desenvolvidos
separadamente.
4. Seleção e projeto de componentes, em que são feitas buscas por
componentes reusáveis e, caso não haja componentes adequados,
são projetados novos componentes de software.
Engenharia de Software I
Prof. Vickybert Freire
Projeto e implementação do software
• O desenvolvimento (escrita de código) para implementar
um sistema é o próximo passo natural do projeto.
Engenharia de Software I
Prof. Vickybert Freire
Validação do software
• A validação do software ou, em termos mais gerais,
verificação e validação (V & V), destina-se a mostrar
que um sistema está em conformidade com sua
especificação e que satisfaz as expectativas do cliente
do sistema.
• A principal técnica de validação é o teste de programa,
no qual o sistema é executado usando dados de teste
simulados.
• A validação também pode envolver processos de
conferência como inspeções e revisões em cada estágio
do processo de software, desde a definição dos
requisitos do usuário até o desenvolvimento do
programa.
Engenharia de Software I
Prof. Vickybert Freire
Validação do software
• Os sistemas não devem ser testados como
uma unidade monolítica.
• Um processo de teste pode ter três estágios,
no qual os componentes do sistema são
testados individualmente e, depois, o sistema
integrado é testado e, por fim, testado pelo
cliente.
Engenharia de Software I
Prof. Vickybert Freire
Validação do software
Os estágios no processo de teste são:
1. Teste de componente. Os componentes do sistema são testados pelas
pessoas que o desenvolvem. Cada componente é testado
independentemente, sem as demais partes do sistema. Os
componentes podem ser entidades simples. como as funções ou classes
de objetos, ou agrupamentos coerentes dessas entidades.
Engenharia de Software I
Prof. Vickybert Freire
Evolução do Software
• Historicamente, sempre houve uma divisão entre o processo de
desenvolvimento e o processo de evolução (manutenção) do software. As
pessoas pensam em desenvolvimento de software como uma atividade
criativa, na qual um sistema de software é desenvolvido a partir de um
conceito inicial até se tornar um sistema funcional. Por outro lado,
pensam em manutenção de software como uma atividade maçante,
menos interessante e menos desafiadora do que o desenvolvimento do
software original.
Engenharia de Software I
Prof. Vickybert Freire
Lidando com
Mudanças
Engenharia de Software I
Prof. Vickybert Freire
Lidando com Mudanças
• A mudança é inevitável em todos os grandes projetos de
software. Os requisitos do sistema mudam à medida que as
empresas reagem a pressões externas, à concorrência e a
mudanças nas prioridades da gestão.
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert P. Freire
Aula 00
Engenharia de Software I
Prof. Vickybert Freire
Projeto Interdisciplinar
Engenharia de Software I
Prof. Vickybert Freire
Projeto Interdisciplinar
• No Projeto Pedagógico do Curso Superior Tecnológico em Desenvolvimento de
Software Multiplataforma foram previstos 6 Projetos Interdisciplinares a
serem desenvolvidos em disciplinas-chave, ou seja, disciplinas nas quais o
professor responsável será encarregado de desenvolver o PI. Para cada
disciplina-chave existe um conjunto de disciplinas que servirão de apoio. Estas
disciplinas são denominadas Disciplinas Satélite.
Engenharia de Software I
Prof. Vickybert Freire
Projeto Interdisciplinar
O desenvolvimento dos Projetos Interdisciplinares permitirá ao aluno:
• Desenvolver um trabalho prático que integre as teorias abordadas nas disciplinas do
semestre referente ao Projeto Interdisciplinar, bem como em semestres anteriores.
• Buscar, aplicar, ampliar e adequar conhecimento técnico-científico, visando à integração
entre a teoria e a prática no desenvolvimento das competências requeridas para formação
do perfil profissional.
• Exercitar-se na perspectiva da prática profissional através de sua inserção em situação real
de trabalho.
• Exercitar a interpretação e a articulação dos argumentos teóricos e/ou empíricos para
demonstrar análises críticas, conclusões e sugestões de desdobramentos pertinentes aos
assuntos pesquisados.
• Participar do trabalho em equipes, que propicia o exercício de uma postura democrática,
participativa, cooperativa, crítica e empática dos integrantes do grupo, desenvolvendo suas
habilidades nas relações interpessoais.
• Aplicar ferramentas metodológicas e ou bibliotecas e boas práticas na apresentação de
trabalhos técnico-científicos.
• Diagnosticar e analisar situações-problema, propondo alternativas e soluções criativas em
situações reais, embasando sua futura vivência profissional e ética, tornando-se autônomo
na resolução de problemas.
• Melhorar a comunicação, inclusive no que tange aos processos de divulgação de produtos ou
serviços, que passam a ser desenvolvidos nos Projetos Interdisciplinares.
Engenharia de Software I
Prof. Vickybert Freire
Ferramentas
Engenharia de Software I
Prof. Vickybert Freire
Ferramentas
• Para o desenvolvimento dos Projetos
Interdisciplinares, recomenda-se o emprego
de métodos ágeis para gestão dos projetos.
Formalmente, o conteúdo será desenvolvido
na disciplina Gestão de Projetos Ágeis, que
está prevista no terceiro semestre. No
entanto, nada impede que alguns conceitos
sejam desenvolvidos transversalmente
durante todos os semestres.
Engenharia de Software I
Prof. Vickybert Freire
Ferramentas
• O emprego do Canvas no desenvolvimento dos projetos é indicado por se
tratar de uma ferramenta amplamente utilizada para representar um
modelo de negócios, lembrando que os alunos do curso podem ser
futuros empreendedores ou intraempreendedores, por isso a importância
em trazer essa ferramenta em uma abordagem aplicada no contexto do
curso.
• Design Thinking é uma metodologia de desenvolvimento de produtos e
serviços focados nas necessidades, desejos e limitações dos usuários. Essa
metodologia é utilizada tanto para levantamento de requisitos, quanto
para pesquisa junto a usuários. Por se tratar de uma ferramenta voltada
para pessoas (clientes/usuários), ela auxilia no desenvolvimento centrado
no usuário e também na metodologia ágil, pois facilita a criação e entrega
de um MVP (Mínimo Produto Viável).
• Como método ágil, sugere-se o Framework Scrum, por ser o mais
difundido, porém o Coordenador do Curso e o corpo docente podem usar
o método que acharem mais adequado para a realidade da unidade.
Assim como pode-se optar por um método híbrido que empregue
métodos ágeis e processos tradicionais trazidos pelo PMBOK.
Engenharia de Software I
Prof. Vickybert Freire
Ferramentas
Engenharia de Software I
Prof. Vickybert Freire
Temas / Objetivos
Engenharia de Software I
Prof. Vickybert Freire
Temas / Objetivos
• Os temas dos Projetos Interdisciplinares do CST em
Desenvolvimento de Software Multiplataforma devem ser trazidos
por empresas parceiras das Fatecs, uma vez que uma das
metodologias propostas é a Aprendizagem Baseada em Problemas.
Engenharia de Software I
Prof. Vickybert Freire
Competências Profissionais / Objetivos de Aprendizagem
Engenharia de Software I
Prof. Vickybert Freire
Competências Profissionais / Objetivos de Aprendizagem
Engenharia de Software I
Prof. Vickybert Freire
Competências Profissionais / Objetivos de Aprendizagem
Engenharia de Software I
Prof. Vickybert Freire
Competências Socioemocionais
Engenharia de Software I
Prof. Vickybert Freire
Portfólio Digital
Engenharia de Software I
Prof. Vickybert Freire
Portfólio Digital
• Em DSM, o Trabalho de Graduação será substituído
pelos PIs desenvolvidos no decorrer do curso; para
efetivar essa substituição, os PIs deverão ser avaliados
pelos professores e, se possível, por um integrante da
empresa parceira ou convidados externos, para então
ser disponibilizado em um Portfólio Digital.
Engenharia de Software I
Prof. Vickybert Freire
Ferramentas
Engenharia de Software I
Prof. Vickybert Freire
Do primeiro ao
sexto semestre
Engenharia de Software I
Prof. Vickybert Freire
Do primeiro ao sexto semestre
• Em DSM, foram propostos 6 PIs; para cada um
deles, foi escolhida uma Disciplina-Chave,
sendo que, nessa disciplina, o professor será
responsável por propor e desenvolver o PI.
Cada PI envolve as disciplinas, conhecimentos
e competências de ao menos 2 disciplinas
satélites.
Engenharia de Software I
Prof. Vickybert Freire
Do primeiro ao sexto semestre
Engenharia de Software I
Prof. Vickybert Freire
• Ao relacionar competências desenvolvidas em disciplinas de
diferentes semestres, é possível avaliar diferentes dimensões
de uma mesma competência, proporcionando, assim, ao
aluno, a possibilidade de adquirir o conhecimento integral,
que vai do conhecimento factual até o conhecimento
metacognitivo e, assim, alcançar todos os objetivos de
aprendizagem (Lembrar, Entender, Aplicar, Analisar, Sintetizar
e Criar) como proposto na Taxonomia de Bloom
Engenharia de Software I
Prof. Vickybert Freire
Itens do projeto
Engenharia de Software I
Prof. Vickybert Freire
Itens do projeto
• Como sugestão de estrutura dos projetos, são elencados alguns itens:
– Descrição do projeto: (Problema a ser resolvido, justificativa, objetivos, metas, requisitos
básicos, partes interessadas, entre outras);
– Metodologia de gestão do projeto: (definir qual o tipo de gestão: ágil, tradicional ou híbrida),
(equipe/responsabilidades, cronograma de atividades/entregas, regras para a entrega do
Pitch, avaliação entre outras);
– Ferramentas empregadas;
– Repositório e versionamento;
– Link de acesso ao Pitch;
– Competências técnicas desenvolvidas;
– Competências socioemocionais desenvolvidas;
– Critérios de avaliação;
– Produto final a ser entregue
– Dados do portfólio (link do projeto/produto).
Engenharia de Software I
Prof. Vickybert Freire
Regras Básicas
Como o desenvolvimento de PIs não está atrelado a uma única disciplina do PPC, a criação
de regras se faz importante. Com a finalidade de auxiliar a implantação do CST em
Desenvolvimento de Software Multiplataforma, foram propostas as seguintes regrais gerais,
cabendo ao Coordenador de Curso e professores avaliarem a necessidade da inclusão de
outras regras.
Engenharia de Software I
continua...
Prof. Vickybert Freire
Regras Básicas
– Os projetos deverão ser desenvolvidos em grupos, sendo que o número de integrantes
fica a critério do professor da Disciplina Chave.
– Todos os integrantes dos grupos serão responsáveis pelo trabalho apresentado, não
cabendo atribuições de responsabilidades individuais, sendo assim o feedback deve ser
relacionado ao projeto e não a um único aluno.
– O desenvolvimento das competências técnicas e socioemocionais deve ser avaliado na
entrega dos Projetos Interdisciplinares, bem como durante o seu desenvolvimento.
– A avaliação do projeto não deve ser a única forma de avaliação do aluno, na Disciplina-
Chave. Deve ser levado em conta as competências técnicas e as socioemocionais
desenvolvidas durante na disciplina.
– As competências técnicas podem ser avaliadas por meio das entregas parciais e da
entrega final do projeto, sendo que os professores das Disciplina-Chave e Disciplinas
Satélite definem se a nota será por grupo ou individualmente.
– Cada aluno deve ser avaliado individualmente, no que tange ao desenvolvimento das
competências socioemocionais, ou seja, a avaliação destas competências não deve ser
realizada de forma coletiva. Sugere-se também que seja realizada uma avaliação em
pares e uma autoavaliação.
Engenharia de Software I
Prof. Vickybert Freire
Papéis dos atores
do PI
Engenharia de Software I
Prof. Vickybert Freire
Atores
Engenharia de Software I
Prof. Vickybert Freire
Papel da Empresa
• A participação das empresas no processo em ensino
aprendizagem é de suma importância, pois diminui o gap
entre academia e o mercado de trabalho. No contexto dos PIs,
o papel da empresa é:
– Apresentar temas de projetos ou problemas reais para os alunos e
professores do Curso;
– Participar da avaliação das soluções/produtos desenvolvidos;
– Fornecer feedback estruturado das soluções apresentadas/produtos;
– Avaliar o Portfólio do aluno, quando possível.
Engenharia de Software I
Prof. Vickybert Freire
Papel do Coordenador
• O Coordenador do Curso representa um papel importantíssimo no desenvolvimento dos PIs, pois
ele é o elo entre as empresas, os professores e os alunos. Para isso elencamos algumas atividades
que garantirão o exercício do seu papel.
– Realizar reuniões com os professores do curso, antes do início das aulas do semestre letivo, para planejar,
coletivamente, o trabalho interdisciplinar na sua totalidade, respeitando-se, porém, a especificidade de cada
disciplina.
– Buscar por empresas do setor para participarem dos PIs. Quando necessário, o coordenador por indicar
professores para realizarem esta atividade.
– Manter a interlocução entre as empresas parceiras. Quando necessário, o coordenador por indicar
professores para realizarem esta atividade.
– Promover o envolvimento dos professores na delimitação do que deve ser pesquisado em cada disciplina
envolvida no desenvolvimento do PI.
– Fazer a alocação, ao longo do semestre, de espaço nas reuniões com o corpo docente, com o objetivo de
avaliar o andamento do trabalho interdisciplinar e definir novos encaminhamentos, quando necessário.
– Manter interlocução contínua com os professores responsáveis pelos PIs, para monitorar o processo de
desenvolvimento interdisciplinar.
– Preparar cartas de apresentação de alunos às instituições, no caso de trabalho de campo, assim como
certificados de participação, quando necessário.
– Organizar, juntamente com os professores responsáveis, o período de apresentação do trabalho oral.
– Realizar reuniões com os professores, no final do semestre letivo, para avaliar o trabalho interdisciplinar e
identificar os aspectos que devem ser revistos no planejamento do semestre seguinte.
– Garantir a integração dos alunos, professores e coordenação de curso.
– Criar estratégias de implantação e acompanhar a execução das atividades dos PIs.
– Promover o evento de apresentação dos resultados finais dos PIs. Quando necessário, o coordenador por
indicar professores para realizarem esta atividade.
Engenharia de Software I
Prof. Vickybert Freire
Papel do Prof da Discip. Chave
• O Professor Responsável pelas Disciplinas-Chave será o articulador do
desenvolvimento do PI. Sua principal atribuição é planejar e acompanhar o
andamento do trabalho pelos alunos e articular a contribuição dos demais
professores, de forma a garantir a construção da interdisciplinaridade,
desenvolvendo as seguintes ações:
– Definição do tema do PI, conjuntamente com os professores das Disciplinas Satélite ao
PI e com a empresa parceira (se houver).
– Definição dos definição dos critérios e composição da nota, conjuntamente com os
professores das Disciplinas Satélite.
– Apresentação da proposta do trabalho interdisciplinar aos alunos.
– Distribuição do tema e subtemas (se houver) do PI para os grupos.
– Descrição das tarefas a serem executadas pelos alunos e distribuição do cronograma de
atividades.
– Levantamento de possibilidades de contatos para realização de coleta de dados e
pesquisa/trabalho de campo.
– Interlocução contínua com os professores das Disciplinas Satélite do PI.
– Avaliação contínua junto ao Coordenador de Curso do processo de desenvolvimento do
PI.
– Avaliar o Portfólio do Aluno.
Engenharia de Software I
Prof. Vickybert Freire
Papel do Prof da Discip. Chave
• Cabe lembrar que o Professor Responsável pela Disciplina-Chave não trabalhará o conteúdo
específico das Disciplinas-Satélite e sim a articulação desses conteúdos na parte escrita,
técnica e na apresentação oral do projeto. O Professor Responsável pela Disciplina-Chave
será o gestor do projeto e, para isso, será necessário que tenha encontros com os grupos
para:
– garantir a implementação do produto proposto;
– construir a metodologia do projeto;
– acompanhar a realização das atividades do projeto;
– acompanhar a elaboração o desenvolvimento do projeto, incluindo a parte escrita e
oral;
– colaborar na resolução dos obstáculos encontrados pelos grupos;
– avaliar o processo de desenvolvimento (etapas do processo) e o produto gerado.
Engenharia de Software I
Prof. Vickybert Freire
Papel do Prof das Discip. Satélites
• Os professores das Disciplinas-Satélites são responsáveis por subsidiar o
professor da Disciplina-Chave e o Coordenador de Curso, realizando as
seguintes ações:
– Auxiliar na definição do tema e subtemas (se houver) do PI.
– Manter diálogo constante com o professor da Disciplina-Chave.
– Participar do processo de avaliação dos PIs, auxiliando na definição dos
critérios e na composição da nota.
– Garantir que as competências vinculadas à sua disciplina sejam desenvolvidas
e avaliadas de forma a garantir a interdisciplinaridade.
– Auxiliar os alunos, sempre que possível, no desenvolvimento do PI.
– Avaliar o Portfólio do Aluno.
Engenharia de Software I
Prof. Vickybert Freire
Papel do Aluno
• O ator principal do PI, sem dúvida é o aluno. Além do desenvolvimento
das competências técnicas o aluno deve ser preocupar também em
melhorar suas competências socioemocionais, desenvolvendo as
seguintes ações:
– Administrar conflitos entre os componentes do grupo.
– Desenvolver o projeto de acordo com as etapas de planejamento descritas no
cronograma e seguir as orientações do Professor da Disciplina-Chave e dos
demais professores.
– Desenvolver o projeto e elaborar o trabalho escrito e preparar a apresentação
oral do PI, seguindo as recomendações dos professores.
– Criar um portfólio digital e incluir todos os PIs desenvolvidos, bem com demais
projetos que os professores julgarem ideais para divulgação.
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert P. Freire
Aula 04
Engenharia de Software I
Prof. Vickybert Freire
Desenvolvimento ágil
Engenharia de Software I
Prof. Vickybert Freire
Desenvolvimento ágil
• As empresas de hoje em dia operam em um
ambiente global em rápida mudança. Elas precisam
responder às novas oportunidades e mercados, às
mudanças nas condições econômicas e ao
surgimento de produtos e serviços concorrentes.
Engenharia de Software I
Prof. Vickybert Freire
Desenvolvimento ágil
• O desenvolvimento rápido de software passou a ser conhecido
como desenvolvimento ágil, ou métodos ágeis. Esses métodos são
concebidos para produzir software útil de maneira rápida. Todos
eles compartilham uma série de características comuns:
Engenharia de Software I
Prof. Vickybert Freire
Desenvolvimento ágil
2. O sistema é desenvolvido em uma série de incrementos. Os
usuários finais e outros stakeholders estão envolvidos na
especificação e avaliação de cada um deles. Além de
mudanças no software, eles também podem propor novos
requisitos para serem implementados em uma versão
posterior do sistema
Engenharia de Software I
Prof. Vickybert Freire
Desenvolvimento ágil
• Os métodos ágeis se baseiam no
desenvolvimento incrementai; os incrementos
são pequenos e, normalmente, novas versões
do sistema são criadas e disponibilizadas para
os clientes a cada duas ou três semanas, para
que seja possível obter deles um feedback
rápido nos requisitos que mudam.
Engenharia de Software I
Prof. Vickybert Freire
Desenvolvimento ágil
Engenharia de Software I
Prof. Vickybert Freire
Recordando...
Engenharia de Software I
Prof. Vickybert Freire
História da Metodologia Ágil
• 1992 – Crystal Methods - Alistair Cockburn
• 1993 – Refactoring - Bill Opdyke
• 1994 – Dynamic Systems Development Method – Consortium
• 1995 – Scrum - Jeff Sutherland and Ken Schwaber
• 1995 – Pair Development - Jim Coplien / Larry Constantine
• 1997 – Feature Driven Development – Jeff De Luca, Peter Coad and
Jon Kern
• 1999 – Adaptive Software Development – Jim Highsmith
• 1999 – The Pragmatic Programmer – Andrew Hunt and Dave
Thomas
• 1999 – Extreme Programming – Kent Beck
• 2001 – The Agile Manifesto for Software Development
Engenharia de Software I
Prof. Vickybert Freire
Manifesto Ágil
• Em 2001, Kent Beck e outros 16 renomados desenvolvedores,
autores e consultores da área de software (batizados de “Agile
Alliance” – “Aliança dos Ágeis”) assinaram o “Manifesto para
o Desenvolvimento Ágil de Software”
Engenharia de Software I
Prof. Vickybert Freire
Manifesto Ágil
Engenharia de Software I
Prof. Vickybert Freire
Manifesto Ágil
12 princípios
• Satisfazer o cliente
• As mudanças são bem vindas
• Entrega periódica de funcionalidade
• Negócios e desenvolvedores em conjunto pelo projeto
• Indivíduos motivados
• Conversas face a face
• O produto funcional é a medida do progresso
• Manter um ritmo constante sempre
• Atenção contínua, excelência técnica e bom projeto
• Simplicidade
• Equipes auto-gerenciadas
• Melhoria contínua
Mais informações em: http://www.manifestoagil.com.br/
Engenharia de Software I
Prof. Vickybert Freire
Metodologia Ágil
Engenharia de Software I
Prof. Vickybert Freire
Técnicas de
Desenvolvimento
Ágil
Engenharia de Software I
Prof. Vickybert Freire
Extreme
Programming
Engenharia de Software I
Prof. Vickybert Freire
Extreme Programming
• A abordagem mais importante para a
mudança de cultura no desenvolvimento de
software foi o Extreme Programming, criado
por Kent Beck.
Engenharia de Software I
Prof. Vickybert Freire
Extreme Programming
• Processo de produção do incremento de um
sistema desenvolvido usando Extreme
Programming
Engenharia de Software I
Prof. Vickybert Freire
Extreme Programming
• Na XP os requisitos são expressos em cenários (chamados de
histórias do usuário) implementados diretamente como uma
série de tarefas.
• Os programadores trabalham em pares e desenvolvem testes
para cada tarefa antes de escreverem o código.
• Todos os testes devem ser executados com sucesso quando o
novo código é integrado ao sistema, já que há um curto
intervalo de tempo entre os lançamentos (releases) do
sistema.
Engenharia de Software I
Prof. Vickybert Freire
Extreme Programming
O XP introduziu uma série de práticas que refletem no manifesto ágil:
1. O desenvolvimento incremental é apoiado por lançamentos menores e mais
frequentes do sistema. Os requisitos se baseiam em histórias simples dos clientes —
ou cenários —, utilizados como base para decidir qual funcionalidade deve ser
incluída em um determinado incremento.
2. O envolvimento do cliente é apoiado por seu engajamento contínuo no time de
desenvolvimento. O representante do cliente participado desenvolvimento, e é
responsável por definir os testes de aceitação do sistema.
3. As pessoas, não os processos, são apoiadas pela programação em pares, pela
propriedade coletiva do código do sistema e por um processo de desenvolvimento
sustentável que não envolve expedientes de trabalho longos demais.
4. As mudanças são adotadas por meio de lançamentos regulares do sistema aos
clientes, desenvolvimento com testes a priori (test-first), refatoração para evitar a
degeneração do código e integração contínua de novas funcionalidades.
5. A manutenção da simplicidade é apoiada pela refatoração constante, que melhora a
qualidade do código, e pelo uso de projetos (designs) simples, que não antecipam
desnecessariamente as futuras mudanças no sistema.
Engenharia de Software I
Prof. Vickybert Freire
Extreme Programming
Engenharia de Software I
Prof. Vickybert Freire
Pair Programming
Engenharia de Software I
Prof. Vickybert Freire
Pair Programming
• A técnica de programação em pares sugere que os
programadores devem trabalhar em duplas no
desenvolvimento do software.
Engenharia de Software I
Prof. Vickybert Freire
Pair Programming
A programação em pares tem uma série de vantagens:
Engenharia de Software I
Prof. Vickybert Freire
Gestão de
Projetos Ágil
Engenharia de Software I
Prof. Vickybert Freire
Kanban
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert Freire
Kanban
• O termo “kanban” combina as palavras em
Japonês “kan”, que significa “visual” e “ban”,
que significa “cartão” ou “quadro”.
• Um kanban é um cartão visual ou outra
etiqueta que sinaliza que algo é necessário.
• É um sistema de “solicitação”.
Engenharia de Software I
Prof. Vickybert Freire
Kanban
• Kanban foi desenvolvido como um sistema de
inventariado just-in-time (JIT).
• Ao utilizar o kanban, os materiais e
suprimentos são entregues somente quando
necessário. Isto reduz os custos de
armazenamento e transporte.
Engenharia de Software I
Prof. Vickybert Freire
Kanban
• O sistema kanban exige um espaço
determinado por uma área física delimitada,
ou por um número fixo de contentores ou por
cartões, onde a quantidade de material
próximo à linha de produção nunca deverá ser
superior àquela que estes espaços, cartões ou
contentores determinam.
Engenharia de Software I
Prof. Vickybert Freire
Kanban
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert Freire
Kanban - Benefícios
• Tempo de ciclo curtos, oferecendo recursos mais
rapidamente;
• Melhor gestão nas mudanças de prioridade;
• Requer menos organização;
• O processo é simplificado;
• Maior visibilidade dos projetos;
• Redução de desperdício;
• Redução de custo;
• Elimina atividades que não agregam valor para a
equipe;
• Melhora a motivação e desempenho da equipe.
Engenharia de Software I
Prof. Vickybert Freire
Kanban
• Qualidade garantida. Tudo o que é feito deve ir bem na primeira vez, não
há margem para erro. Assim, o Kanban não recompensa a velocidade, mas
a qualidade final das tarefas executadas. Isto é baseado no fato de que
muitas vezes custa mais para corrigi-lo depois de fazer certo da primeira
vez.
Definição de colunas
• Existem essas três colunas básicas citadas acima, porém, o kanban
pode ser organizado conforme sua necessidade. Por isso, antes de
mais nada, é preciso definir quais serão as colunas e o que elas
representarão. Uma coluna que pode aparecer no setor de
desenvolvimento é “ready to dev”, que corresponde às atividades
que já estão prontas para serem desenvolvidas.
Engenharia de Software I
Prof. Vickybert Freire
Princípios do Kanban
Princípios da Gestão de Mudanças
• Estes princípios de gestão de mudanças são
comuns a todas as implementações Kanban:
– Comece com o que você faz hoje
– Acordar em buscar a melhoria através da
mudança evolucionária
– Encorajar atos de liderança em todos os níveis
Engenharia de Software I
Prof. Vickybert Freire
Princípios do Kanban
• Kanban usa uma abordagem evolucionária de
mudança, baseando-se na forma de trabalhar já
existente, buscando melhorá-lo usando várias formas
de feedback e colaboração.
Engenharia de Software I
Prof. Vickybert Freire
Princípios do Kanban
Princípios da Entrega de Serviços
• Os princípios orientados para os serviços são:
– Compreender e focar nas necessidades e
expectativas dos seus clientes.
– Gerenciar o trabalho; deixar que as pessoas se
autoorganizem em torno dele.
– Rever regularmente a rede de serviços e as suas
políticas, a fim de melhorar os resultados.
Engenharia de Software I
Prof. Vickybert Freire
Princípios do Kanban
• Kanban encoraja você a adotar uma
abordagem orientada a serviços para
compreender a sua organização e como o
trabalho flui através dela.
Engenharia de Software I
Prof. Vickybert Freire
Práticas Gerais do Kanban
4. Tornando as Políticas Explícitas - As políticas devem
ser colocadas em uma área claramente perceptível,
de preferência ao lado do quadro, e incluem:
– Políticas como o de reabastecimento do quadro (quando,
quanto, por quem).
– Definição de quando uma atividade de trabalho é
concluída, e o item de trabalho pode seguir em frente
(“critérios para puxar”).
– Limites de WIP.
– Políticas para o tratamento de itens de trabalho de
diferentes classes de serviço.
– Horários das reuniões e conteúdo.
– Outros princípios e acordos de colaboração.
Engenharia de Software I
Prof. Vickybert Freire
Práticas Gerais do Kanban
5. Ciclos de Feedback - Ciclos de Feedback são necessários
para uma entrega coordenada e para melhorar a
entrega do seu serviço. Alguns meios comumente
usados para os ciclos de feedback em sistemas Kanban
são o quadro, as métricas e um conjunto de reuniões
regulares e revisões.
Engenharia de Software I
Prof. Vickybert Freire
Limites de WIP e Sistema Puxado
• O chamado limite de WIP, ou seja, o número
máximo de itens de trabalho permitidos de cada
vez, podem ser definidos por estado (s) do
trabalho, por pessoa, por faixa, por tipo de
trabalho, para todo o sistema Kanban etc.
Engenharia de Software I
Prof. Vickybert Freire
Limites de WIP e Sistema Puxado
• Cria um fluxo contínuo de trabalho através do
“princípio puxado” em que o trabalho ou “puxar” só
acontece se houver capacidade. Um sinal virtual para
puxar é gerado quando o limite de WIP não é
totalmente utilizado.
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert Freire
Cadências do Kanban
Engenharia de Software I
Prof. Vickybert Freire
Scrum
Engenharia de Software I
Prof. Vickybert Freire
Metodologia Ágil
Engenharia de Software I
Prof. Vickybert Freire
Metodologia Tradicional
Engenharia de Software I
Prof. Vickybert Freire
Metodologia Tradicional
Engenharia de Software I
Prof. Vickybert Freire
Metodologia Tradicional
Engenharia de Software I
Prof. Vickybert Freire
O que é o Scrum?
• Scrum é um framework Ágil, simples e leve,
utilizado para a gestão do desenvolvimento
de produtos complexos imersos em ambientes
complexos.
• Scrum é embasado no empirismo e utiliza
uma abordagem iterativa e incremental para
entregar valor com frequência e, assim,
reduzir os riscos do projeto.
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert Freire
Scrum
• O termo Scrum (pron. [skrʌm]) é um método de
reinício de jogada no rugby, onde os jogadores
dos dois times se juntam com a cabeça abaixada
e se empurram com o objetivo de ganhar a posse
de bola.
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert Freire
Papéis no Scrum
Engenharia de Software I
Prof. Vickybert Freire
Product Owner
Engenharia de Software I
Prof. Vickybert Freire
Scrum Master
Engenharia de Software I
Prof. Vickybert Freire
Papéis no Scrum
• Product Owner
– O Product Owner é a pessoa que define os itens que compõem
o Product Backlog e os prioriza nas Sprint Planning Meetings.
• Scrum Master
– O Scrum Master procura assegurar que a equipe respeite e siga
os valores e as práticas do Scrum. Ele também protege a equipe
assegurando que ela não se comprometa excessivamente com
relação àquilo que é capaz de realizar durante um Sprint.
• Scrum Team
– O Scrum Team é a equipe de desenvolvimento. Todos no projeto
trabalham juntos para completar o conjunto de trabalho com o
qual se comprometeram conjuntamente para um Sprint.
– Um Scrum Team típico tem de 6 a 10 pessoas
Engenharia de Software I
Prof. Vickybert Freire
Scrum
Engenharia de Software I
Prof. Vickybert Freire
Scrum
• No Scrum, os projetos são dividos em ciclos (tipicamente mensais)
chamados de Sprints.
• O Sprint representa um Time Box dentro do qual um conjunto de
atividades deve ser executado.
Engenharia de Software I
Prof. Vickybert Freire
Scrum
• A cada dia de uma Sprint, a equipe faz uma breve
reunião (normalmente de manhã), chamada Daily
Scrum. O objetivo é disseminar conhecimento sobre o
que foi feito no dia anterior, identificar impedimentos e
priorizar o trabalho do dia que se inicia.
Engenharia de Software I
Prof. Vickybert Freire
Product Backlog
• O Product Backlog é uma lista contendo todas as
funcionalidades desejadas para um produto. O
conteúdo desta lista é definido pelo Product
Owner.
Engenharia de Software I
Prof. Vickybert Freire
Sprint
Engenharia de Software I
Prof. Vickybert Freire
Sprint
• O coração do Scrum é a Sprint, um time-boxed de um mês ou
menos, durante o qual um “Pronto”, versão incremental
potencialmente utilizável do produto, é criado.
Engenharia de Software I
Prof. Vickybert Freire
Sprint
• Cada Sprint pode ser considerada um projeto
com horizonte não maior que um mês. Como os
projetos, as Sprints são utilizadas para realizar
algo.
• Cada Sprint tem a definição do que é para ser
construído, um plano projetado e flexível que irá
guiar a construção, o trabalho e o resultado do
produto.
• Sprints permitem previsibilidade que garante a
inspeção e adaptação do progresso em direção à
meta pelo menos a cada mês corrido.
Engenharia de Software I
Prof. Vickybert Freire
Sprint Backlog
• O Sprint Backlog é uma lista de tarefas que o Scrum
Team se compromete a fazer em um Sprint. Os itens do
Sprint Backlog são extraídos do Product Backlog, pela
equipe, com base nas prioridades definidas
pelo Product Owner e a percepção da equipe sobre o
tempo que será necessário para completar as várias
funcionalidades.
Engenharia de Software I
Prof. Vickybert Freire
Scrum – The Scrum Board
Engenharia de Software I
Prof. Vickybert Freire
Product Backlog Sprint Backlog In Progress Done
Engenharia de Software I
Prof. Vickybert Freire
Sprint Planning
• O trabalho a ser realizado na Sprint é
planejado na reunião de planejamento da
Sprint. Este plano é criado com o trabalho
colaborativo de todo o Time Scrum. Reunião
de planejamento da Sprint possui um time-
box com no máximo oito horas para uma
Sprint de um mês de duração.
Engenharia de Software I
Prof. Vickybert Freire
Sprint Planning
Engenharia de Software I
Prof. Vickybert Freire
Daily Scrum
• A cada dia do Sprint a equipe faz uma reunião diária,
chamada Daily Scrum. Ela tem como objetivo disseminar
conhecimento sobre o que foi feito no dia anterior,
identificar impedimentos e priorizar o trabalho a ser
realizado no dia que se inicia.
• Os Daily Scrums normalmente são realizadas no mesmo
lugar, na mesma hora do dia. Idealmente são realizados na
parte da manhã, para ajudar a estabelecer as prioridades
do novo dia de trabalho.
• Durante o Daily Scrum, cada membro da equipe provê
respostas para cada uma destas três perguntas:
– O que você fez ontem?
– O que você fará hoje?
– Há algum impedimento no seu caminho?
Engenharia de Software I
Prof. Vickybert Freire
Sprint – Daily Scrum
Engenharia de Software I
Prof. Vickybert Freire
Sprint Review
• A Revisão da Sprint é executada no final da Sprint para
inspecionar o incremento e adaptar o Backlog do Produto
se necessário. Durante a reunião de Revisão da Sprint o
Time Scrum e as partes interessadas colaboram sobre o
que foi feito na Sprint. Com base nisso e em qualquer
mudança no Backlog do Produto durante a Sprint, os
participantes colaboram nas próximas coisas que podem
ser feitas para otimizar valor.
• Esta é uma reunião informal, não uma reunião de status, e
a apresentação do incremento destina-se a motivar e
obter comentários e promover a colaboração.
• Esta é uma reunião time-boxed de 4 horas de duração para
uma Sprint de um mês.
Engenharia de Software I
Prof. Vickybert Freire
Sprint Review
Engenharia de Software I
Prof. Vickybert Freire
Sprint Retrospective
• A Retrospectiva da Sprint é uma oportunidade
para o Time Scrum inspecionar a si próprio e
criar um plano para melhorias a serem
aplicadas na próxima Sprint.
Engenharia de Software I
Prof. Vickybert Freire
Estimando no Scrum – Planning Poker
• A técnica Planning Poker foi popularizada por Mike
Cohn no livro Agile Estimating and Planning no qual
registrou o termo Planning Poker (PP). É uma técnica
de estimativa de tamanho voltada para as
metodologias ágeis de desenvolvimento de software.
• O Planning Poker consiste-se em obter a estimativa
por meio de um jogo de cartas, que deve permitir que
todos os membros da equipe participem colocando a
sua visão de complexidade, levando em consideração o
fator tempo e esforço para pontuar um cartão e após
juntos chegar a um denominador comum na equipe
através de consenso.
Engenharia de Software I
Prof. Vickybert Freire
Estimando no Scrum – Planning Poker
• No Planning Poker cada integrante tem a sua
disposição um baralho de 13 cartas. As cartas
contém os tamanhos de 0, ½, 1, 2, 3, 5, 8, 13,
20, 40 e 100 que serão atribuídos a um cartão,
havendo ainda uma carta com o símbolo de
interrogação no qual representa que o
estimador não está apto a estimar e outra
carta com a imagem de uma xícara de café no
qual representa a sugestão de uma pausa.
Leia mais em: http://www.devmedia.com.br/scrum-e-planning-poker-analise-de-estimativa-de-software/31019#ixzz41NryKXl6
Engenharia de Software I
Prof. Vickybert Freire
Estimando no Scrum – Planning Poker
• Durante o Planning Poker devem ser realizadas
rodadas para obter a estimativa de um cartão
que possui uma tarefa a desenvolver.
• As diferenças que surgirem durante as rodadas
deverão ser mediadas por um coordenador, que
no Scrum este papel é de responsabilidade
do Scrum Master.
• O Product Owner, é o responsável por explicar o
que deverá ser desenvolvido, sendo um
importante papel para retirar possíveis dúvidas a
respeito do cartão, evitando assim, o retrabalho.
Engenharia de Software I
Prof. Vickybert Freire
Planning Poker
Engenharia de Software I
Prof. Vickybert Freire
https://pbs.twimg.com/media/Ek9cGMxWkAozNWQ?format=png&name=large
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert Freire
https://miro.medium.com/max/875/1*cTEkZOm4GHSPh9JBt6iLZQ.png
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert P. Freire
Aula 04
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de
Requisitos
Engenharia de Software I
Prof. Vickybert Freire
The hardest single part of building a software
system is deciding precisely what to build. –
Frederick Brooks
Engenharia de Software I
Prof. Vickybert Freire
Agenda
• Requisitos funcionais e não funcionais
• Processos de engenharia de requisitos
• Elicitação de requisitos
• Especificação de requisitos
• Validação de requisitos
• Mudança de requisitos
Engenharia de Software I
Prof. Vickybert Freire
Requisitos
• Os requisitos de um sistema são as descrições
dos serviços que o sistema deve prestar e suas
restrições.
• Esses requisitos refletem as necessidades dos
clientes de um sistema que atende a um
determinado propósito.
• O processo de descoberta, análise,
documentação e conferência desses serviços e
restrições é chamado de engenharia de
requisitos (ER).
Engenharia de Software I
Prof. Vickybert Freire
Requisitos
• Os requisitos de usuário e os requisitos de sistema podem ser
definidos da seguinte forma:
Engenharia de Software I
Prof. Vickybert Freire
Requisitos funcionais e não-funcionais
• Os requisitos de sistema de software são classificados
frequentemente como funcionais ou não funcionais:
Engenharia de Software I
Prof. Vickybert Freire
Requisitos funcionais
• Os requisitos funcionais de um sistema descrevem o que ele deve
fazer e dependem do tipo de software que está sendo
desenvolvido, dos usuários esperados para o software e da
abordagem geral adotada pela organização ao escrever os
requisitos.
Engenharia de Software I
Prof. Vickybert Freire
Requisitos funcionais
• A imprecisão na especificação de requisitos pode
levar a conflitos entre clientes e desenvolvedores
de software.
• É normal que um desenvolvedor de sistemas
interprete um requisito ambíguo de uma forma
que simplifique a sua implementação.
• Muitas vezes, porém, não é isso o que o cliente
quer. Novos requisitos devem ser estabelecidos e
mudanças devem ser feitas, o que resulta em
atraso na entrega do sistema e aumento dos
custos.
Engenharia de Software I
Prof. Vickybert Freire
Requisitos não funcionais
• Os requisitos não funcionais são aqueles que não
possuem relação direta com os serviços específicos
fornecidos pelo sistema aos seus usuários.
Engenharia de Software I
Prof. Vickybert Freire
Requisitos não funcionais
• Embora muitas vezes seja possível identificar quais componentes do
sistema implementam requisitos funcionais específicos (por exemplo,
pode haver componentes de formatação que implementem requisitos de
relatório), isso é mais difícil com os requisitos não funcionais. Sua
implementação pode estar espalhada por todo o sistema por duas razões:
1. Os requisitos não funcionais podem afetar a arquitetura geral de um
sistema em vez de seus componentes individuais. Por exemplo, para garantir
que sejam cumpridos os requisitos de desempenho em um sistema, pode
ser necessário organizá-lo a fim de minimizar a comunicação entre seus
componentes.
2. Um requisito não funcional individual, como um requisito de segurança da
informação (security), pode gerar vários requisitos funcionais relacionados
que definem novos serviços do sistema que se fazem necessários caso o
requisito não funcional seja implementado. Além disso, também pode gerar
requisitos que restringem outros requisitos existentes: por exemplo, pode
limitar o acesso à informação no sistema
Engenharia de Software I
Prof. Vickybert Freire
Requisitos não funcionais
Os requisitos não funcionais surgem das necessidades dos usuários, que podem ser
classificados como:
Engenharia de Software I
Prof. Vickybert Freire
Requisitos não funcionais
3. Requisitos externos. Esse título abrangente cobre todos os
requisitos derivados de fatores externos ao sistema e seu
processo de desenvolvimento. Podem incluir requisitos
regulatórios, que estabelecem o que deve ser feito para o
sistema ser aprovado por uma entidade reguladora;
requisitos legislativos, que devem ser seguidos para garantir
que o sistema opere dentro da lei; e requisitos éticos, que
garantem que o sistema será aceitável para os usuários e
para o público em geral.
Engenharia de Software I
Prof. Vickybert Freire
Requisitos não funcionais
Sempre que possível, os requisitos não funcionais devem ser escritos de
forma quantitativa para que possam ser testados objetivamente e, portanto,
para conferir se ele cumpriu ou não seus requisitos não funcionais.
Engenharia de Software I
Prof. Vickybert Freire
Processos de
Eng de Requisitos
Engenharia de Software I
Prof. Vickybert Freire
Processos de Eng de Requisitos
• As atividades são organizadas como um processo iterativo em
torno de uma espiral, e o resultado do processo de ER é um
documento de requisitos de sistema. A quantidade de tempo
e esforço dedicados a cada atividade em uma iteração
depende do estágio do processo geral, do tipo de sistema a
ser desenvolvido e do orçamento disponível.
Engenharia de Software I
Prof. Vickybert Freire
Elicitação de
Requisitos
Engenharia de Software I
Prof. Vickybert Freire
Elicitação de Requisitos
• Os objetivos do processo de elicitação de requisitos são
compreender o trabalho que os stakeholders realizam e
entender como usariam um novo sistema para apoiar o
trabalho deles
Engenharia de Software I
Prof. Vickybert Freire
Elicitação de Requisitos
Elicitar e compreender os requisitos dos stakeholders no
sistema é um processo difícil por várias razões:
Engenharia de Software I
Prof. Vickybert Freire
Elicitação de Requisitos
• Um modelo padrão do processo de elicitação e análise pode ser
visto abaixo. Cada organização terá sua própria versão ou
instanciação desse modelo geral, dependendo de fatores locais
como a experiência da equipe, o tipo de sistema sendo
desenvolvido e os padrões utilizados.
Engenharia de Software I
Prof. Vickybert Freire
Elicitação de Requisitos
As atividades de processo são:
Engenharia de Software I
Prof. Vickybert Freire
Especificação de
Requisitos
Engenharia de Software I
Prof. Vickybert Freire
Especificação de Requisitos
• A especificação de requisitos é o processo de
escrever os requisitos de usuário e de sistema em um
documento de requisitos. Em condições ideais, esses
requisitos devem ser claros, inequívocos, fáceis de
entender, completos e consistentes.
Engenharia de Software I
Prof. Vickybert Freire
Especificação de Requisitos
• Notações para escrever requisitos
Engenharia de Software I
Prof. Vickybert Freire
Especificação de Requisitos
• Especificação estruturada de um requisito
Engenharia de Software I
Prof. Vickybert Freire
Especificação de Requisitos
• Para usar uma abordagem estruturada para especificar requisitos
de sistema, é preciso definir um ou mais templates para os
requisitos e representá-los como formulários estruturados.
• Quando um template é empregado para especificar requisitos
funcionais, as seguintes informações devem ser incluídas:
1. uma descrição da função ou entidade que está sendo especificada;
2. uma descrição das entradas e suas origens:
3. uma descrição das saídas e sua destinação;
4. informações sobre os dados necessários para computar ou outras
entidades no sistema que sejam necessárias (a parte ‘requer’);
5. uma descrição da ação a ser tomada;
6. se for utilizada uma abordagem funcional, uma precondição
estabelecendo o que deve ser verdadeiro antes da função ser
invocada e uma pós-condição especificando o que é verdadeiro após
a função ser invocada;
7. uma descrição dos efeitos colaterais (se houver) da operação.
Engenharia de Software I
Prof. Vickybert Freire
Casos de Uso
• Os casos de uso são uma maneira de descrever as
interações entre usuários e um sistema usando
um modelo gráfico e um texto estruturado.
Engenharia de Software I
Prof. Vickybert Freire
Casos de Uso
Engenharia de Software I
Prof. Vickybert Freire
• https://medium.com/operacionalti/uml-
diagrama-de-casos-de-uso-29f4358ce4d5
Engenharia de Software I
Prof. Vickybert Freire
Documento de Requisitos
• O documento de requisitos de software (às vezes
chamado de especificação de requisitos de software
ou ERS – em inglês SRS) é uma declaração oficial do
que os desenvolvedores do sistema devem
implementar.
Engenharia de Software I
Prof. Vickybert Freire
BRD
• https://templatelab.com/brd-templates/
Engenharia de Software I
Prof. Vickybert Freire
Validação de Requisitos
• A validação de requisitos é o processo de conferir
se os requisitos definem o sistema que o cliente
realmente quer.
Engenharia de Software I
Prof. Vickybert Freire
Validação de Requisitos
• O custo de corrigir um problema nos
requisitos com uma alteração no sistema
normalmente é muito maior do que o de
consertar erros de projeto ou de código.
Engenharia de Software I
Prof. Vickybert Freire
Validação de Requisitos
Durante o processo de validação de requisitos, diferentes tipos
de conferências devem ser executados nos requisitos do
documento, incluindo:
Engenharia de Software I
continua...
Prof. Vickybert Freire
Validação de Requisitos
3. Conferência da completude. O documento de requisitos deve
incluir aqueles que definem todas as funções e as restrições
pretendidas pelo usuário do sistema.
Engenharia de Software I
Prof. Vickybert Freire
Validação de Requisitos
Uma série de técnicas de validação de requisitos pode ser utilizada
individualmente ou em conjunto:
Engenharia de Software I
Prof. Vickybert Freire
Mudanças de Requisitos
• Os requisitos podem mudar, seja por um erro
na especificação do requisito, por
entendimento incompleto do problema
devido sua complexidade, ou por mudança no
produto esperado.
Engenharia de Software I
Prof. Vickybert Freire
Gerenciamento de Mudanças
• Existem três estágios principais em um processo de gerenciamento
de mudança:
Engenharia de Software I
Prof. Vickybert Freire
User Story
• História de usuário é um jeito bastante simples e eficiente de representar
um requisito de software ou descrever uma funcionalidade, pois foca na
linguagem de negócio e não se preocupa em detalhar a parte técnica,
muito menos em tentar descrever o “como" uma funcionalidade será
implementada.
Engenharia de Software I
Prof. Vickybert Freire
User Story
Aplicação
• Histórias de usuário são mais indicadas
quando o usuário ou tipo de usuário é o foco
central da ação e geralmente ocorrem em
situações onde deseja-se criar algo novo,
novos requisitos ou novas funcionalidades de
software.
Engenharia de Software I
Prof. Vickybert Freire
User Story
• Formato
Como um <Tipo de usuário>
Eu quero <Ação/Objetivo>
Para que <Porque/Resultado esperado>
Engenharia de Software I
Prof. Vickybert Freire
Improvement Story
• Improvement Stories, ou “histórias para
melhoria”, são alternativas bastante
interessantes às histórias de usuário e
funcionam muito bem em situações em que
deseja-se melhorar uma funcionalidade
existente, desde que essa melhoria seja
relativamente pequena e bastante óbvia, pois
focam na solução daquela situação.
Engenharia de Software I
Prof. Vickybert Freire
Improvement Story
• Aplicação
As Improvement Stories são recomendas em
produtos de software mais “maduros”, bem depois
da entrega do MVP (Minimum Viable Product -
Produto Minimamente Viável), geralmente em
suporte ou BAU (Business as Usual).
Engenharia de Software I
Prof. Vickybert Freire
Improvement Story
• Formato
Nós temos <Situação do momento>
Nós queremos ter <Situação desejada>
Para que <Porque/Resultado esperado>
Engenharia de Software I
Prof. Vickybert Freire
Technical Story
• Como o nome sugere, as Technical Stories são
mais focadas na parte técnica da
implementação e são usadas principalmente
em “SPIKES”, embora também possam ser
usadas para identificação de requisitos não
funcionais.
Engenharia de Software I
Prof. Vickybert Freire
Technical Story
• Aplicação
Technical Stories são recomendadas quando se
deseja descrever requisitos técnicos, não funcionais
e/ou SPIKES.
Engenharia de Software I
Prof. Vickybert Freire
Technical Story
• Formato
A fim de OU Para <Atingir um objetivo>, <um
sistema ou persona> precisa < 'Fazer' alguma ação>
Resultado esperado: <Relatório da investigação> OU
<Lista de ações que serão incorporadas no backlog>
Engenharia de Software I
Prof. Vickybert Freire
Technical Story
Engenharia de Software I
Prof. Vickybert Freire
Bug
• Bug, falha ou defeito. Modelo genérico o
bastante para poder ser utilizado em
praticamente todas essas situações, e que tem
se demonstrado bastante eficaz na
identificação e reprodução de problemas
deste gênero.
Engenharia de Software I
Prof. Vickybert Freire
Bug
• Aplicação
Este template pode ser utilizado para identificação,
reprodução e resolução de bugs, defeitos, falhas ou
erros de software.
Engenharia de Software I
Prof. Vickybert Freire
Bug
• Formato
Título <Breve descrição do problema>
Passo-a-passo <Passo-a-passo de como reproduzir o
problema>
1. Passo 1
2. Passo 2
3. …
Comportamento esperado <Saída
esperada/correta>
Comportamento atual <Saída atual>
Engenharia de Software I
Prof. Vickybert Freire
Use Case
• Use Cases descrevem uma sequência de ações que
permitirão a um ator atingir um ou mais objetivos.
Geralmente, eles estão relacionados a um processo
bem definido e basicamente descrevem de uma
maneira bem estruturada, as interações entre o
sistema que será construído e seus atores, que pode
ser uma pessoa, um sub-sistema ou um dispositivo
físico que interage com esse sistema.
Engenharia de Software I
Prof. Vickybert Freire
Use Case
• Aplicação
Casos de uso podem ser usados em projetos onde
seja necessário documentar todos os requisitos de
uma vez e em bastante detalhe.
Engenharia de Software I
Prof. Vickybert Freire
Use Case
• Formato
Objetivo <O que o ator quer atingir>
Pré-condições <Condições que devem ser verdade
antes do caso de uso iniciar>
Ator primário <Usuários, papéis, tipos de usuários>
Cenário principal de sucesso <Descreve o passo-a-
passo de um caso de uso de sucesso>
Pós-condições <Condições que são verdades após
um caso de uso encerrar com sucesso>
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert P. Freire
Aula 00
Engenharia de Software I
Prof. Vickybert Freire
“O engenheiro de software amador está sempre à procura da mágica,
de algum método sensacional ou ferramenta cuja aplicação
promete tornar trivial o desenvolvimento de software. É uma
característica do engenheiro de software profissional saber que tal
panaceia não existe.”
GRADY BOOCH
Engenharia de Software I
Prof. Vickybert Freire
Controle de Versão
Engenharia de Software I
Prof. Vickybert Freire
Controle de Versão
• O controle de versão, também conhecido
como controle de fonte, é a prática de rastrear
e gerenciar as alterações em um código de
software.
Engenharia de Software I
Prof. Vickybert Freire
Principais vantagens
• Controle do histórico: facilidade em desfazer e possibilidade de
analisar o histórico do desenvolvimento.
Engenharia de Software I
Prof. Vickybert Freire
Principais vantagens
• Segurança: mecanismos para evitar qualquer tipo de invasão
de agentes infecciosos nos arquivos. E, somente usuários com
permissão poderão mexer no código.
Engenharia de Software I
Prof. Vickybert Freire
Mais usados
• Free
Engenharia de Software I
Prof. Vickybert Freire
Mais usados
• Comerciais
Engenharia de Software I
Prof. Vickybert Freire
Mais usados
Engenharia de Software I
Prof. Vickybert Freire
Centralizado vs Distribuído
• Os sistemas de controle de versão possuem 2 formas
de operam o controle dos arquivos, sendo:
Engenharia de Software I
Prof. Vickybert Freire
Git
• Git é um exemplo de VCS distribuído
Engenharia de Software I
Prof. Vickybert Freire
Git As A Service
• Git nos permite criar um reporitório local para rastrear as
mudanças de um único usuário o qual criou o servidor git
local. Nós perdemos esses arquivos e rastros de mudanças
quando o sistema quebra. Não é possível recuperar um
código perdido ou um repositório criado localmente.
Engenharia de Software I
Prof. Vickybert Freire
Git As A Service
Engenharia de Software I
Prof. Vickybert Freire
IaaS, PaaS e SaaS
Engenharia de Software I
Prof. Vickybert Freire
IaaS, PaaS e SaaS
Engenharia de Software I
Prof. Vickybert Freire
Git - Iniciando
• Instale o Git na sua máquina
– https://git-scm.com/downloads
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert Freire
Git – Comandos básicos
• https://training.github.com/downloads/pt_BR
/github-git-cheat-sheet/
• https://education.github.com/git-cheat-sheet-
education.pdf
• https://dev-to-
uploads.s3.amazonaws.com/uploads/articles/
n082uxea33j6zq3mca7u.png
Engenharia de Software I
Prof. Vickybert Freire
Git - Iniciando
• Crie um repositório remoto
– Via interface web, depende do SaaS escolhido
• Clone o repositório localmente
– git clone [url]
• Adicione arquivos
https://www.themezy.com/free-website-templates
– git add [file] https://www.free-css.com/free-css-templates
Engenharia de Software I
Prof. Vickybert Freire
Git - Iniciando
• “Empurre” para o servidor remoto
– git push [branch]
• Causem conflito e resolvam
– 2 pessoas devem editar o mesmo trecho de
código
– As 2 pessoas devem enviar para o server remoto
– 1 delas não irá conseguir, e precisar dar pull,
resolver o conflito e dar push novamente
Dica: os comandos do Git são do ponto de vista do repo atual, ou seja, de
onde você está dando o comando. Portanto o push é sempre “empurrar”
do local para o remoto; o pull é sempre “puxar” do remoto para o local
Engenharia de Software I
Prof. Vickybert Freire
Git - Iniciando
• Check o status do seu repositório
– git status
• Compare as mudanças
– git diff
Engenharia de Software I
Prof. Vickybert Freire
Git Branches
• Quando desenvolvemos um projeto, independentemente
se há um time de pessoas ou só uma, é muito importante
nos preocuparmos com versões e ramificações de código.
Para isso, existem branches.
Engenharia de Software I
Prof. Vickybert Freire
Git Branches
• Figura
desenvolvimento
paralelo
Engenharia de Software I
Prof. Vickybert Freire
Git Branches
• Crie um branch
https://dev.to/couchcamote/git-
– git branch [nome-da-branch] branching-name-convention-cch
Engenharia de Software I
Prof. Vickybert Freire
Git - Desfazendo
• Retirar um arquivo do stage
– git reset HEAD [nome-do-arquivo]; ou,
– git restore --staged [nome-do-arquivo]
• Retirar um arquivo do commit mais recente
não feito push
– git rm –cached [nome-do-arquivo]
– git commit --amend
Engenharia de Software I
Prof. Vickybert Freire
Git - Desfazendo
• Pegando uma versão anterior
– git checkout [commit-id]
Engenharia de Software I
Prof. Vickybert Freire
.gitignore
• Os arquivos ignorados costumam ser artefatos de
desenvolvimento e arquivos gerados por máquina que
podem ser derivados da fonte do seu repositório ou que
não devem passar por commit. Exemplos comuns incluem:
Engenharia de Software I
Prof. Vickybert Freire
.gitignore
• Os arquivos ignorados são rastreados em um arquivo
especial chamado .gitignore, que é verificado na
origem do seu repositório.
Engenharia de Software I
Prof. Vickybert Freire
Git Flow
• https://blog.betrybe.com/git/git-flow/
Engenharia de Software I
Prof. Vickybert Freire
Git GUI
• Terminal não é pra mim. O que eu faço?
– Procure plugins para sua IDE; ou,
– https://git-scm.com/downloads/guis
– https://www.hostinger.com.br/tutoriais/git-gui
Engenharia de Software I
Prof. Vickybert Freire
Aprofunde
• Conventional Commits
https://www.conventionalcommits.org/en/v1.0.0-beta.2/
• README.md
https://www.alura.com.br/artigos/escrever-bom-readme
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert P. Freire
Aula 9
Engenharia de Software I
Prof. Vickybert Freire
“Ciência da Computação está tão relacionada aos computadores
quanto a Astronomia aos telescópios, Biologia aos microscópios, ou
Química aos tubos de ensaio. A Ciência não estuda ferramentas. Ela
estuda como nós as utilizamos, e o que descobrimos com elas.”
EDSGER WYBE DIJKSTRA
Engenharia de Software I
Prof. Vickybert Freire
Modelagem de Sistemas
Engenharia de Software I
Prof. Vickybert Freire
Modelagem de Sistemas
• A modelagem de sistemas é um processo de
desenvolvimento de modelos abstratos de um
sistema, em que cada modelo apresenta uma
visão ou perspectiva diferente desse sistema.
• Os 5 principais são:
1. diagramas de atividades, que mostram as atividades
envolvidas em um processo ou no processamento de dados;
2. diagramas de caso de uso. que mostram as interações entre
um sistema e seu ambiente;
3. diagramas de sequência, que mostram as interações entre os
atores e o sistema e entre os componentes do sistema;
4. diagramas de classes, que mostram as classes de objetos no
sistema e as associações entre elas;
5. diagramas de máquinas de estados, que mostram como o
sistema reage a eventos internos e externos.
Engenharia de Software I
Prof. Vickybert Freire
Modelagem de Sistemas
Engenharia de Software I
Prof. Vickybert Freire
Modelos de Contexto
• No estágio inicial da especificação de um sistema,
deve-se decidir sobre seus limites, ou seja, sobre o que
faz e o que não faz parte do sistema que está sendo
desenvolvido.
Engenharia de Software I
Prof. Vickybert Freire
Modelos de Contexto
Engenharia de Software I
Prof. Vickybert Freire
Modelagem de Sistemas
• Em dias atuais os modelos de sistemas são
amplamente usados entre desenvolvedores
para analisar sistemas existem ou planejar a
criação de um.
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Atividades
• Diagramas de atividades são
usados para representar, em
alto nível, um processo ou
fluxo de execução.
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Atividades
• Principais elementos
Nó Inicial: Inicia a execução do processo.
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Atividades
Decisões: Possuem um único fluxo de entrada e dois ou mais
fluxos de saída. Cada fluxo de saída possui uma variável booleana
associada, chamada de guarda. O fluxo segue apenas para a saída
cuja condição é verdadeira.
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Atividades
Forks: Bifurca o fluxo de forma a criar paralelismo (concorrência),
passando a existir múltiplos processos em execução.
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Atividades
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Atividades
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Caso de Uso
• Um caso de uso pode ser considerado uma descrição
simples do que o usuário espera de um sistema nessa
interação. Discutimos os casos de uso na elicitação dos
requisitos; considero os modelos de caso de uso mais
úteis nos estágios iniciais do projeto do sistema em vez
da engenharia de requisitos.
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Caso de Uso
• A notação de ‘bonecos palito’ representa a
interação humana, mas também é utilizada
para representar outros sistemas e hardware
externos.
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Caso de Uso
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Classes
• Diagramas de classes são os mais usados da UML.
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Classes
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Classes
• Associações
– Quando uma classe A possui um atributo b de um tipo B,
dizemos que existe uma associação de A para B,
representada por meio de uma seta.
– Frequentemente, associações incluem multiplicidade, que
indicam quantos objetos podem estar associados ao
atributo responsável pela associação. As informações de
multiplicidade mais comuns são as seguintes:
• 1 (exatamente um objeto),
• 0..1 (zero ou um objeto), e
• * (zero ou mais objetos).
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Classes
• Herança
– Relações de herança são representadas por meio de setas
com a extremidade não preenchida.
– A linha deve ser tracejada caso seja a relação entre uma
classe e uma interface
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Classes
• Dependências
– Existe uma dependência de uma classe A para uma classe
B, representada por uma seta com uma linha tracejada de
A para B, quando a classe A usa a classe B, porém esse uso
não ocorre por meio de associação
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Classes
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Pacotes
• Diagramas de pacotes são
recomendados quando se
pretende oferecer um modelo de
mais alto nível de um sistema,
que mostre apenas grupos de
classes e as dependências entre
eles.
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Pacotes
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Pacotes
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Sequência
• Diagramas de sequência são diagramas
dinâmicos, também chamados de
comportamentais.
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Sequência
• Os objetos são representados por
meio de retângulos, com o nome
dos objetos modelados. Esses
retângulos ficam dispostos logo na
primeira linha do diagrama. Abaixo
de cada objeto, desenha-se uma
linha vertical tracejada
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Sequência
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Máquina de Estados
• A modelagem dirigida por eventos mostra como um
sistema responde a eventos externos e internos. Ela
se baseia no pressuposto de que um sistema tem um
número finito de estados e que os eventos (estímulos)
podem causar uma transição de um estado para
outro.
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Máquina de Estados
Engenharia de Software I
Prof. Vickybert Freire
Diagramas de
Arquitetura
Engenharia de Software I
Prof. Vickybert Freire
Diagramas de Arquitetura
• Um diagrama de arquitetura técnica prove uma visão de alto
nível da infraestrutura da sua organização. O diagrama ilustra
como componentes em um sistema interagem com outro em
uma larga escala de itens.
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Arquitetura de Aplicação
• Um diagrama de arquitetura de aplicação compreende uma visão
geral de alto nível dos componentes e as interações fundamentais
no sistema, por exemplo, de microserviços, bancos de dados, etc.
Engenharia de Software I
Prof. Vickybert Freire
Diagrama de Arquitetura de Aplicação
• Exemplificando, suas aplicações podem residir em múltiplos
containers, isto é, bare-metal Kubernetes, AWS ECS, etc. devido
várias razões; e você é questionado sobre consolidar e mesclar as
aplicações para usar uma única plataforma de gerenciamento de
containers, como o Kubernetes para otimizar os custos e
operacionalizar um fluxo único em um ambiente multi-cloud.
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert Freire
Gerenciamento de Projetos Empresariais
Prof. Vickybert Freire
Modelagem de
Processos
Engenharia de Software I
Prof. Vickybert Freire
Modelagem de Processos
• O propósito da modelagem é criar uma representação do processo de
maneira completa e precisa sobre seu funcionamento. Por esse motivo, o
nível de detalhamento e o tipo específico de modelo têm como base o que
é esperado da iniciativa de modelagem.
Engenharia de Software I
Prof. Vickybert Freire
BPMN - Notação de Modelagem
de Processos de Negócio
• Business Process Modeling Notation (BPMN) é uma notação
gráfica que transmite a lógica das atividades, as mensagens
entre os diferentes participantes e toda a informação necessária
para que um processo seja analisado, simulado e executado.
• A notação usa um conjunto de figuras que permite diagramar
modelos de processos ajudando a melhorar a gestão de
processos de negócios, documentam o funcionamento real deles
e consegue um desempenho melhor.
• Utiliza-se uma linguagem comum para diagramar os processos
de forma clara e padronizada, o que proporciona um
entendimento geral e facilita a comunicação entre as pessoas.
Engenharia de Software I
Prof. Vickybert Freire
Eventos
• Acontece durante o curso do processo de
negócio. Afetam o fluxo e pode ter uma causa.
• Eventos são representados por círculos
vazados para permitir sinalização que
identificarão os gatilhos ou resultados. Os
tipos de eventos são: Início, Intermediário e
Final.
Engenharia de Software I
Prof. Vickybert Freire
Gerenciamento de Projetos Empresariais
Prof. Vickybert Freire
Gerenciamento de Projetos Empresariais
Prof. Vickybert Freire
Gerenciamento de Projetos Empresariais
Prof. Vickybert Freire
Atividades
• É um termo genérico para o trabalho que a organização
realiza. Pode conter uma ou mais tarefas em níveis mais
detalhados.
Engenharia de Software I
Prof. Vickybert Freire
Gerenciamento de Projetos Empresariais
Prof. Vickybert Freire
Gerenciamento de Projetos Empresariais
Prof. Vickybert Freire
Gerenciamento de Projetos Empresariais
Prof. Vickybert Freire
Decisões (Gateways)
• São usadas para definir que rumo o fluxo vai
seguir e controlar suas ramificações. A forma
gráfica é um losango com as pontas alinhadas
horizontal e verticalmente.
• O interior do losango indica o tipo de
comportamento da decisão.
Engenharia de Software I
Prof. Vickybert Freire
Gerenciamento de Projetos Empresariais
Prof. Vickybert Freire
Objetos de Conexão
Engenharia de Software I
Prof. Vickybert Freire
Gerenciamento de Projetos Empresariais
Prof. Vickybert Freire
Gerenciamento de Projetos Empresariais
Prof. Vickybert Freire
Gerenciamento de Projetos Empresariais
Prof. Vickybert Freire
Gerenciamento de Projetos Empresariais
Prof. Vickybert Freire
Open your mind
Glossário
• AS-IS / TO-BE – como é / como
será
• FYI (PSC) – For Your Information
(Para Seu Conhecimento)
• AKA – As Knowledge As
• ASAP – As Soon As Possible
• e.g. – For example
• i.e. – That is
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert P. Freire
Aula 00
Engenharia de Software I
Prof. Vickybert Freire
“The most fundamental problem in computer science is
problem decomposition: how to take a complex problem an
divide it up into pieces that can be solved independently.”
JOHN OUSTERHOUT
Engenharia de Software I
Prof. Vickybert Freire
Projeto de Arquitetura
Engenharia de Software I
Prof. Vickybert Freire
Projeto de Arquitetura
• O projeto de arquitetura visa compreender como
um sistema de software deve ser organizado e
projetar a estrutura geral desse sistema.
Engenharia de Software I
Prof. Vickybert Freire
Projeto de Arquitetura
• 2. Segurança da informação (security). Sendo um requisito crítico, deve
ser utilizada uma estrutura em camadas na arquitetura, com os ativos
mais críticos protegidos nas camadas mais internas e um alto nível de
validação de segurança da informação aplicado a essas camadas.
Engenharia de Software I
Prof. Vickybert Freire
Projeto de Arquitetura
• 4. Disponibilidade. Se um requisito crítico, a arquitetura deve ser
projetada para incluir componentes redundantes para que seja possível
substituir e atualizar os componentes sem parar o sistema [1].
Engenharia de Software I
Prof. Vickybert Freire
Projeto de Arquitetura
Visões de Arquitetura
• Ao conceber um projeto podemos utilizar de visões ou
perspectivas distintas, o que irá resultar em um enfoque
diferente no desenho criado. As visões podem ser:
– Visão Lógica: mostra as abstrações fundamentais do sistema
como objetos ou classes;
– Visão de Processo: mostra como, no tempo de execução, o
sistema é composto de processos que interagem;
– Visão de Desenvolvimento: mostra como o software é
decomposto para desenvolvimento; isto é. mostra a divisão do
software em componentes que são implementados
– Visão Física: mostra o hardware do sistema e como os
componentes de software estão distribuídos pelos
processadores no sistema. Essa visão é útil para os engenheiros
de sistema que estão planejando uma implantação do sistema.
Engenharia de Software I
Prof. Vickybert Freire
Padrões de
Arquitetura
Engenharia de Software I
Prof. Vickybert Freire
Padrões de Arquitetura
• Os padrões foram criados como uma maneira
de apresentar, compartilhar e reutilizar
conhecimento sobre sistemas foi adotada em
uma série de áreas da engenharia de
software.
Engenharia de Software I
Prof. Vickybert Freire
Model-View-Controller
• O padrão MVC (Modelo-Visão-Controlador),
que é a base do gerenciamento da interação
em muitos sistemas web. sendo suportado
pela maioria dos frameworks.
Engenharia de Software I
Prof. Vickybert Freire
Model-View-Controller
• Separa a apresentação e a interação dos dados
do sistema.
Engenharia de Software I
Prof. Vickybert Freire
Arquitetura em camadas
• Os conceitos de separação e de
independência são fundamentais para o
projeto de arquitetura porque permitem que
as mudanças sejam localizadas.
Engenharia de Software I
Prof. Vickybert Freire
Arquitetura de repositório
• O padrão repositório (repository) descreve
como um conjunto de componentes que
interagem pode compartilhar dados.
Engenharia de Software I
Prof. Vickybert Freire
Arquitetura de repositório
• Organizar as ferramentas em torno de um repositório é
uma maneira eficiente de compartilhar uma grande
quantidade de dados.
• Não é necessário transmitir os dados explicitamente de
um componente para outro. No entanto, os
componentes devem operar em torno de um modelo
aprovado de repositório de dados.
• Inevitavelmente, esse é um acordo entre as
necessidades específicas de cada ferramenta e pode
ser difícil ou impossível integrar novos componentes se
os modelos de dados não se encaixarem no esquema
aprovado.
Engenharia de Software I
Prof. Vickybert Freire
Arquitetura cliente-servidor
• Um sistema que segue o padrão cliente-
servidor é organizado como um conjunto de
serviços e servidores associados e de clientes
que acessam e usam esses serviços.
Engenharia de Software I
Prof. Vickybert Freire
Arquitetura cliente-servidor
• A vantagem mais importante do modelo
cliente-servidor é que se trata de uma
arquitetura distribuída.
Engenharia de Software I
Prof. Vickybert Freire
Outros
Engenharia de Software I
Prof. Vickybert Freire
Arquitetura Monolítica
• Uma aplicação monolítica é autônoma e
independente de outras aplicações de
computação. A filosofia do projeto consiste
em um aplicativo que não é responsável
apenas por uma determinada tarefa, mas que
também pode executar todos os passos
necessários para completar uma determinada
função
Engenharia de Software I
Prof. Vickybert Freire
Arquitetura Monolítica
• Vantagens da Arquitetura Monolítica
– Mais simples de desenvolver: a organização fica concentrada em um único sistema;
– Simples de testar: é possível testar a aplicação de ponta a ponta em um único lugar;
– Simples de fazer o deploy para o servidor: a alteração é simplesmente feita e pronto;
– Simples de escalar: como é só uma aplicação, se for preciso adicionar mais itens, é
simplesmente ir adicionando o que for necessário.
Engenharia de Software I
Prof. Vickybert Freire
Arquitetura Monolítica
Engenharia de Software I
Prof. Vickybert Freire
Gerenciamento de Projetos Empresariais
Prof. Vickybert Freire
Arquitetura de Micro Serviços
• Micro serviços é o nome dado a uma arquitetura que
estrutura a aplicação criando uma coleção de serviços.
Engenharia de Software I
Prof. Vickybert Freire
Arquitetura de Micro Serviços
As vantagens deste tipo de arquitetura podem ser listadas como:
• Baixo acoplamento e melhor isolamento, mais fácil de testar e mais rápido para inicializar a aplicação
• Interações de desenvolvimento mais rápidas. Novos recursos podem ser desenvolvidos mais rapidamente e os
existentes facilmente refatorados
• Problemas em um dos serviços estão isolados e não vão derrubar a aplicação toda
• A adoção de novas tecnologias é mais simples, os componentes podem ser atualizados de forma independente e
de forma incremental, possibilitando um stack com diferentes tecnologias e linguagens
• Os serviços serão inicializados de forma mais rápida e possivelmente de forma paralela
• Os times serão independentes. Encaixa direitinho em squads e times ágeis
Engenharia de Software I
Prof. Vickybert Freire
Arquitetura de Micro Serviços
https://lgertel.medium.com/padrões-de-arquitetura-web-monolítica-ou-micro-serviços-7b3f0c9394fe
https://www.zappts.com/blog/arquitetura-monolitica-e-
microsservicos/#:~:text=Arquitetura%20Monolítica%20é%20um%20sistema,dentro%20de%20uma%20única%20plataforma.
Engenharia de Software I
Prof. Vickybert Freire
BFF – Backend For Frontend
• Hoje é muito comum, por exemplo, um mesmo
produto ter uma interface web, outra móvel e outra
responsiva. Neste contexto, entendo que seja
bastante tentador projetar uma única API de back-
end para todas as interfaces, que seja reutilizável.
Engenharia de Software I
Prof. Vickybert Freire
BFF – Backend For Frontend
• O Back-end for Front-end é um microsserviço que
customiza a entrega de back-end para cada interface
ou experiência do usuário.
Engenharia de Software I
Prof. Vickybert Freire
BFF – Backend For Frontend
Arquitetura BFF
https://medium.com/digitalproductsdev/arquitetura-bff-back-end-for-front-end-13e2cbfbcda2
Engenharia de Software I
Prof. Vickybert Freire
Engenharia de Software I
Prof. Vickybert Freire