Você está na página 1de 70

2023-02-13T19:18:42-03:00 - main#cbf1965a84b8faca88358abf7bc1059a73cf9d0e

Engenharia de Software I

Introdução à Engenharia de Software


Prof. Ettore Leandro Tognoli

Powered by Marp & PlantUML


Engenharia
"Engenharia é a aplicação do conhecimento científico, econômico, social e prático, com o
intuito de inventar, desenhar, construir, manter e melhorar estruturas, máquinas,
aparelhos, sistemas, materiais e processos. É também profissão em que se adquire e se
aplicam os conhecimentos matemáticos e técnicos na criação, aperfeiçoamento e
implementação de utilidades que realizem uma função ou objetivo."

2
Software
"O termo "software" foi criado na década de 1940, e é um trocadilho com o termo
hardware. "Hardware", em inglês, significa "ferramenta física". Software seria tudo o que
faz o computador funcionar, através de instruções, excetuando-se a parte física dele."

3
4
Software vs Hardware
O software pode ser mudado mesmo depois de já ter sido entregue, já o hardware exige a
troca do produto.

O custo para alterar o software é menor ( pelos menos deveria ser) do que para alterar o
hardware.

5
Software
Algoritmo descrito de uma forma que pode ser compilado para a máquina ou interpretado
por ela.

Compilado

Depende que um programa, o compilador, transforme o código fonte em linguagem


de máquina, "zeros e uns".

Interpretado

Depende que um programa, o interpretador, leia e execute o código fonte


diretamente.

Mais detalhes em Linguagem de Programação 6


Algoritmo
"Em matemática e ciência da computação, um algoritmo é uma sequência finita de ações
executáveis que visam obter uma solução para um determinado tipo de problema.
Segundo Dasgupta, Papadimitriou e Vazirani; "Algoritmos são procedimentos precisos,
não ambíguos, padronizados, eficientes e corretos."."

https://pt.wikipedia.org/wiki/Algoritmo 7
https://www.youtube.com/watch?v=Ct-lOOUqmyY 8
Sistemas
"Todo sistema possui um objetivo geral a ser atingido. O sistema é um conjunto de órgãos
funcionais que têm sua determinada função, componentes, entidades, partes ou
elementos e as relações entre eles, a integração entre esses componentes pode se dar
por fluxo de informações, fluxo de matéria, fluxo de sangue, fluxo de energia, enfim,
ocorre comunicação entre os órgãos componentes de um sistema."

https://pt.wikipedia.org/wiki/Sistema 9
"Kay lançou o postulado de que o computador ideal deveria funcionar como um
organismo vivo, isto é, cada "célula" comportar-se-ia relacionando-se com outras a fim de
alcançar um objetivo, contudo, funcionando de forma autônoma. As células poderiam
também reagrupar-se para resolver um outro problema ou desempenhar outras funções."

https://pt.wikipedia.org/wiki/Alan_Kay 10
Alan Kay
Orientação a Objetos
SmallTalk
Laptop/notebook

11
Sistemas de Informação
ERP

Enterprise Resource Planning


CRM

Customer Relationship Management


SCM

Supply Chain Management


MIS

Management Information System


CMS

Content Management System

https://rockcontent.com/br/blog/sistema-de-informacao/ 12
Outros
CAD

Computer-Aided Design
GIS

Geographic Information System

13
Sistemas Operacionais
"Sistema operativo (português europeu) ou operacional (português brasileiro) é um
programa ou um conjunto de programas cuja função é gerenciar os recursos do sistema
(definir qual programa recebe atenção do processador, gerenciar memória, criar um
sistema de arquivos, etc.), fornecendo uma interface entre o computador e o usuário ou
utilizador."

https://pt.wikipedia.org/wiki/Sistema_operativo 14
Firmware
"Em eletrônica e computação, firmware é uma classe específica de software de
computador que fornece controle de baixo nível para o hardware específico do dispositivo.
O firmware pode fornecer um ambiente operacional padronizado para o software mais
complexo do dispositivo (permitindo maior independência de hardware) ou, para
dispositivos menos complexos, atuar como o sistema operacional completo do dispositivo,
executando todas as funções de controle, monitoramento e manipulação de dados.
Exemplos típicos de dispositivos que contêm firmware são sistemas embarcados."

https://pt.wikipedia.org/wiki/Firmware 15
Engenharia de Software
"Engenharia de Software é uma disciplina de Engenharia cujo foco está em todos os
aspectos da produção de software, desde os estágios iniciais da especificação do sistema
até a sua manutenção, quando o sistema já está sendo usado."

https://pt.wikipedia.org/wiki/Engenharia_de_software 16
Arquitetura de Software
"A arquitetura de software de um sistema consiste na definição dos componentes de
software, suas propriedades externas, e seus relacionamentos com outros softwares."

"A arquitetura da aplicação define a articulação lógica dos componentes e serviços em


software sem estabelecer uma escolha definitiva sobre a maneira de aplicação. Trata-se
da definição da base estrutural."

https://pt.wikipedia.org/wiki/Arquitetura_de_software 17
O que um Engenheiro de Software faz?

https://www.youtube.com/watch?v=wdU9L3DqU2w 18
4 Anos de ENGENHARIA DE SOFTWARE em 13 Minutos

https://www.youtube.com/watch?v=FLX9_QqzDAs 19
Funções de um Engenheiro de Software
Requisitos, Projeto e Design
Planejamento e gerenciamento de equipe
Qualidade
Desenvolvimento & Manutenção
Operações

20
https://www.mirago.com.br/aula/profissional-t-shaped/ 21
Síndrome do Pato

22
Requisitos

23
Analista de Requisitos

Engenheiro de Requisitos

Entender o problema do cliente e definir a solução

Muitas vezes não é simplesmente o que o cliente quer

24
25
26
Exemplos de Requisitos

Sistema de ensino

27
Sistema de ensino

Como professor devo ser capaz de disponibilizar conteúdo para os alunos

O conteúdo deve ser distribuído de acordo com a turma e matéria


Sempre que um conteúdo novo é disponibilizado os alunos devem ser
notificados
O conteúdo pode ser diversos tipos de arquivos, como pdf, docx, imagens...

Como aluno quero ter acesso ao conteúdo das matérias que estou matriculado

28
Sistema de ensino

O sistema deve ser seguro


Autenticado com usuário e senha
Mecanismo de recuperação de senha - "Esqueci minha senha"
LGPD
Exclusão de conta
Proteção dos dados
Termo de uso dos dados

29
Sistema de ensino

Deve ser acessado por PC/desktop via browser ou celular


Aplicativo

30
Sistema de ensino

Deve ser desenvolvido com java

Utilizar banco de dados oracle

Hospedado na AWS utilizando ECS

31
Projeto

32
Arquitetura

Relação e dependências entre componentes

Abstrações

Tecnologias

Linguagem de programação, serviços,

Infraestrutura

Servidores, provedores

33
Design

Não quero focar na parte visual 34


Wireframes & Mockup

https://mindconsulting.com.br/2021/11/o-que-exatamente-e-wireframe-um-guia-completo-para-2022/ 35
36
37
Planejamento

38
Geralmente ficando a cargo do gerente, que nem sempre tem formação ou conhecimento
o suficiente sobre desenvolvimento de software

Equipe
Cronograma
Entregas

39
Requisitos

Utópico modelo cascata


Projeto/Design
Projeto para um ano

Requisitos - 3 meses
Implementação

Design - 3 meses

Implementação - 3 meses
Te s t e
Teste e Implantação - 3 meses

Quando os requisitos terminam?


Implantação
Quando o design termina?

Manutenção

40
Requisitos

Projeto/Design
Metodologias Ágeis/Cíclicas
Kanban, Scrum, XP... Implementação

Cuidado com a agilidade "modinha"


Te s t e
https://agilemanifesto.org/

https://manifesto.softwarecraftsmanship.org/
Implantação

Sim
Mais requisitos?
Não

41
O gerente defende o cronograma

O desenvolvedor defende o código

O Codificador Limpo 42
Qualidade

43
Engenheiro de Qualidade

QA - Quality Assurance

QE - Quality Engineer

44
Geralmente a qualidade é associada com os testes

Testes de aceitação garantem que o sistema atende os requisitos.

Testes de integração garantem a integração entre componentes do sistema ou a


integração com sistemas externos.

Testes unitários são da fase de desenvolvimento.

45
https://blog.octo.com/the-test-pyramid-in-practice-3-5/ 46
Devs watching QA test the product

https://www.youtube.com/watch?v=baY3SaIhfl0 47
O custo dos testes
manuais
mão de obra
tempo de execução
manutenção

48
Infelizmente nem sempre é possível
automatizar tudo

49
Desenvolvimento/Implementação

50
Engenheiro de Software
Especialista de Software
Desenvolvedor
Programador
Analista
Designer*

* Algumas controvérsias 51
Compartilhamento de código

Qualidade do código

Comunicação entre o time

Escrever o código

52
Os dois valores do Software

Comportamento
Requisitos, funcionalidades, mercado

Estrutura
Arquitetura, organização, manutenção, expansibilidade

53
Operações

54
Deploy

Entregar ou atualizar o sistema do cliente

DevOps

Automatização do deploy

Monitoramento

Acompanhar a utilização de recursos

55
Atividade

56
Atividade

Individualmente escolham uma das etapas do desenvolvimento de software


Requisitos, Projeto e Design
Planejamento e gerenciamento de equipe
Qualidade
Desenvolvimento & Manutenção
Operações

57
Atividade

Individualmente pesquisem sobre a etapa escolhida


Cargos / Vagas / Empresas
Ferramentas / Tecnologias / Metodologias
Cursos / Especializações
Artigos*

* https://scholar.google.com.br/?hl=pt 58
Atividade

Palavras chave
Requisitos, Projeto e Design

ADR, Design Thinking, MVP, DDD, MDD, UML, Arquitetura Limpa, Arquitetura
Hexagonal
Planejamento e gerenciamento de equipe

Extreme Programming, Scrum, Kanban, Gantt, XGH*


Qualidade

Teste de Aceitação, Teste de Carga, PenTest


Desenvolvimento & Manutenção

Padrões de Projeto, TDD, Teste Unitário, Frontend, Backend, Framework


Operações

Integração Continua, Entrega Continua, Cloud, Telemetria

* para descontrair 59
Atividade

Debata com colegas que pesquisaram sobre a mesma etapa


Preparem uma apresentação* para o resto da turma

Não é necessário slides 60


Auto avaliação

61
Auto Avaliação

Critério 1
1. Não fiz a pesquisa
2. Só pesquisei durante o debate
3. Pesquisei antes do debate

62
Auto Avaliação

Critério 2
1. Não encontrei nenhuma ferramenta/tecnologia/metodologia
2. Encontrei pelo menos uma ferramenta/tecnologia/metodologia
3. Utilizei ou me sinto para preparado para começar utilizar umas das
ferramentas/tecnologias/metodologias

63
Auto Avaliação

Critério 3
1. Não encontrei nenhuma curso/especialização
2. Encontrei pelo menos um curso/especialização
3. Encontrei relação entre a grade curricular e minha pesquisa

64
Auto Avaliação

Critério 4
1. Não encontrei nenhum artigo
2. Encontrei pelo menos um artigo
3. Encontrei artigos que abordam soluções diferentes para o mesmo problema

65
Auto Avaliação

Critério 5
1. Não participei do debate
2. Participei somente como ouvinte
3. Expus algumas informações

66
Auto Avaliação

Critério 6
1. Não participei do debate
2. Fiz perguntas
3. Ajudei colegas com duvidas

67
Auto Avaliação

Critério 7
1. Não participei da apresentação
2. Ajudei no preparo
3. Ajudei na apresentação

68
Auto Avaliação

1 2 3
Critério 1 0 5 10
Critério 2 0 5 10
Critério 3 0 5 10
Critério 3 0 5 10
Critério 4 0 5 10
Critério 5 0 5 10
Critério 6 0 7 10
Critério 7 0 7 10

69
2023-02-13T19:18:42-03:00 - main#cbf1965a84b8faca88358abf7bc1059a73cf9d0e

FIM
Ettore Leandro Tognoli

ettore.leandro.tognoli@gmail.com

Obrigado!

Você também pode gostar