Buscar

Fundamentos de Desenvolvimento de Software

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
57
1
Profª Luciane Yanase Hirabara Kanashiro
Fundamentos de Desenvolvimento 
de Software
Aula 1
57
2
Conversa Inicial
57
3
Com certeza você já ouviu falar de software...
Mas saberia definir o que 
é software? O que diferencia 
software de sistema? Ou, 
ainda, o que diferencia 
software de programa?
Software
Lu
is
 M
o
lin
er
o
/
S
h
u
tt
er
st
o
ck
57
4
Software, programas e sistemas 
Algoritmos e linguagens 
O jargão na área de TI
Ciclo de vida do desenvolvimento de software 
(metodologias)
57
5
Software, programas 
e sistemas 
57
6
Software consiste em: 
(1) instruções (programas de computador) 
que, quando executadas, fornecem 
características, funções e desempenho 
desejados
(2) estruturas de dados que possibilitam 
aos programas manipular informações 
adequadamente
(3) informação descritiva, tanto na forma 
impressa quanto na virtual, descrevendo 
a operação e o uso dos programas 
Software e programas
1 2
3 4
5 6
2
57
7
Software
Programa
Sequência de passos ou instruções 
descritos por um algoritmo
Algoritmo
Estrutura passo a passo de como 
um problema deve ser resolvido
Ex: uma receita de bolo
57
8
Software de Sistema (Básico)
Sistemas Operacionais
Sistemas tradutores
Software Utilitário
Software Aplicativo
57
9
Coleção de programas para apoiar outros 
programas
Sistema operacional
Softwares utilitários ou ferramentas 
de sistema
Software de Sistema (Básico)
57
10
Fornecem ao usuário ferramentas para 
organizar os discos, verificar disponibilidade 
de memória, corrigir falhas de 
processamento
Úteis ao sistema computacional
Ex: antivírus, compactadores, emuladores, 
desfragmentadores, formatadores, backup 
Software utilitário
57
11
Programas que auxiliam o usuário de 
computador a realizar determinada tarefa
Popularmente conhecidos como app
Ex: navegadores, editor de texto, planilhas 
apresentações, SGBDs, editor de imagens etc.
Software aplicativo
57
12
Sistema operacional
7 8
9 10
11 12
3
57
13
Sistema: conjunto de partes que se 
interagem para alcançar determinado 
objetivo
O que diferencia software de sistema é 
que um sistema pode ser definido como um 
conjunto de softwares que interagem entre 
si para alcançar determinado objetivo
Sistema operacional
57
14
O software básico é aquele necessário para o 
funcionamento do hardware ou de parte dele
Ex: sistemas operacionais e sistemas 
tradutores
Sistemas operacionais
57
15
Software responsável pela supervisão dos 
processos executados em um computador
Gerencia todo o hardware e todo o software 
do computador e realiza a “comunicação” 
entre eles
Sistemas operacionais
Ia
m
n
ee
/
S
h
u
tt
er
st
o
ck
 
57
16
Sistemas operacionais
Abrir o gerenciador de 
tarefas: CTRL + SHIFT + 
ESC
CTRL+ALT+DEL >> 
Gerenciador de Tarefas
Pesquisa do Windows >> 
Gerenciador de Tarefas
Processo: programa 
em execução
57
17
Hardware
Sistema Operacional
Usuário/Aplicativo
Camada de software entre o hardware 
e os softwares usados pelos usuários
Sistemas operacionais
Ia
m
n
ee
/
S
h
u
tt
er
st
o
ck
 
57
18
Facilitar o uso do computador pelo usuário, 
tornando mais simples a utilização de seus 
recursos
Gerenciar os recursos 
do computador
Controlar a execução 
de programas pela CPU
Funções do SO
Ia
m
n
ee
/
S
h
u
tt
er
st
o
ck
 
13 14
15 16
17 18
4
57
19
10000010011111111010101000111
10001110101010101010101011110
printf
(“Aprova
do \n”);
if(media 
> =7)
media = 
(nota1 + 
nota2)/2;
Converte os programas 
escritos para 
um código em uma 
linguagem de máquina, 
mais adequada para 
manipular bits
Sistemas tradutores
57
20
Fonte
Fonte
Fonte
Fonte
Fonte
Compilador
1100010000
0011101011
0101010101
1000111001
0111011011
Fonte
Fonte
Fonte
Fonte
Fonte
Interpretador
1100010000
CPU
Programa escrito em linguagem de alto nível: 
necessidade ser traduzido para a linguagem de 
máquina para que o computador possa executá-
lo
Interpretadores e compiladores
57
21
Algoritmos e Linguagens
57
22
“Algoritmo é uma sequência de passos que 
visa atingir um objetivo bem definido.” 
(Forbellone, 1999)
Algoritmos
57
23
Objetivo: representar mais fielmente 
o raciocínio envolvido na lógica de 
programação
Uma vez concebida uma solução, esta pode 
ser traduzida para qualquer linguagem de 
programação
57
24
Gap semântico entre lógica de programação 
e a lógica do dia a dia
Semântica na linguagem de programação: 
referindo ao conteúdo, ao significado
Sintaxe está relacionada com as regras, 
premissas, restrições 
Modo como as palavras podem ser 
combinadas e formar os enunciados 
define a sintaxe
Sintaxe x semântica
19 20
21 22
23 24
5
57
25
Exemplo 1:
Fiz prova de FDS na semana passada
Se escrevêssemos:
FDS passada semana prova fiz
Exemplo 2:
(2 ] - /
Sintaxe
57
26
Define o significado formal das expressões, 
comandos ou unidades de programas
Erros de semântica estão relacionados 
a lógica de programação
Exemplo: expressão sintaticamente correta 
na linguagem Python, mas semanticamente 
não faz sentido somar um número e um 
caractere
a = 2 + "3"
Semântica
57
27
Receita de bolo de caneca 
Ingredientes
2 colheres (sopa) de achocolatado
3 colheres (sopa) de farinha de trigo
3 colheres (sopa) de açúcar
meia colher (chá) de fermento em pó
3 colheres (sopa) de Leite 
2 colheres (sopa) de óleo
1 ovo (...)
Algoritmos – exemplo 1
A
fr
ic
a 
S
tu
d
io
/S
h
u
tt
er
st
o
ck
, 
T
o
w
n
fo
x/
S
h
u
tt
er
st
o
ck
 
57
28
(...)
Modo de preparo
Em uma caneca com capacidade superior a 350 
ml, misture o achocolatado, a farinha de trigo, 
o açúcar e o fermento em pó
Acrescente o Leite , o óleo e o ovo 
e misture delicadamente até incorporar
Coloque a caneca sobre um prato 
de sobremesa e leve ao forno 
micro-ondas por 3 minutos em potência alta
Sirva a seguir
A
fr
ic
a 
S
tu
d
io
/S
h
u
tt
er
st
o
ck
, 
T
o
w
n
fo
x/
S
h
u
tt
er
st
o
ck
 
57
29
Calcular média de prova
Obter as duas notas de 
provas
Calcular a média 
aritmética
Se a média for igual ou 
maior que 7, o aluno foi 
aprovado
Se não, ele foi reprovado
Algoritmos – exemplo 2
57
30
Linguagens de programação tratam os dados 
de um computador por meio do uso de 
algoritmos
Programador: 
Deve encontrar um algoritmo que resolve 
o seu problema
Implementá-lo usando uma linguagem 
de programação
Linguagens
25 26
27 28
29 30
6
57
31
Algoritmos
Lógica de 
programação
Estrutura 
de Dados
Linguagem
C
C++
C#
Java 
Python 5732
Exemplo - Python
#Obter as duas notas de provas
nota1 = float(input("Digite a primeira nota: "))
nota2 = float(input("Digite a segunda nota: "))
#Calcular a média aritmética
media = (nota1 + nota2)/2
#Se a média for igual ou maior que 7, o aluno foi aprovado
if media >= 7:
print("Aprovado")
#Se não, ele foi reprovado     
else:
print("Reprovado")
#Obter as duas notas de provas
nota1 = float(input("Digite a primeira nota: "))
nota2 = float(input("Digite a segunda nota: "))
#Calcular a média aritmética
media = (nota1 + nota2)/2
#Se a média for igual ou maior que 7, o aluno foi aprovado
if media >= 7:
print("Aprovado")
#Se não, ele foi reprovado     
else:
print("Reprovado")
57
33
//Obter as duas notas de provas
System.out.println("Digite a primeira nota: ");
float nota1 = teclado.nextFloat();
System.out.println("Digite a segunda nota: ");
float nota2 = teclado.nextFloat();
//Calcular a média aritmética
float media = (nota1 + nota2)/2;
//Se a média for igual ou maior que 7,o aluno foi aprovado,
if (media >= 7)
System.out.println("Aprovado");
//Se não, ele foi reprovado
else
System.out.println("Reprovado");
Exemplo - Java
57
34
//Obter as duas notas de provas
printf("Digite a primeira nota: ");
scanf_s("%d", &nota1);
printf("Digite a segunda nota: ");
scanf_s("%d", &nota2);
//Calcular a média aritmética
media = (nota1 + nota2) / 2;
//Se a média for igual ou maior que 7, o aluno foi aprovado
if (media >= 7) 
printf("Aprovado");
//Se não, ele foi reprovadoelse
printf("Reprovado");
Exemplo - C
57
35
Glossário do desenvolvedor 
de software
57
36
Significado de Jargão
“Linguagem restrita a determinado grupo 
profissional ou social; gíria. Linguagem de 
códigos que alguns grupos usam para que 
pessoas desconhecidas não compreendam suas 
conversas; gíria.” 
JARGÃO. In: DICIO, Dicionário Online de 
Português. Porto: 7Graus, 2022. Disponível em: 
<https://www.dicio.com.br/jargao/>. Acesso 
em: 6 dez. 2022
Glossário do desenvolvedor de software
31 32
33 34
35 36
7
57
37
Front-end: parte gráfica de uma aplicação 
web
Back-end: desenvolvimento no lado 
do servidor
Full-stack: ambas as abordagens
Glossário do desenvolvedor de software
57
38
API (Application Programming Interface)
Conjunto de rotinas e padrões de programação
Objetivo: acessar aplicativos de software
Plataformas baseados na web
Utilizada por programa/aplicação
Framework: 
Conjunto de código de LP específica
Auxilia no desenvolvimento web 
ou de software
Biblioteca de códigos com funções já 
prontas
Arcabouço de código
57
39
IDE (Integrated Development Environment):
Integra diversas funcionalidades para 
desenvolvimento em única interface gráfica
Auxilia e agiliza o processo 
de desenvolvimento
SDK (Software Development Kit):
Composição: compilador, debugger e API
Conjunto de ferramentas fornecidos por 
um fabricante para que se desenvolva 
para uma plataforma ou sistema especifico
57
40
Nativo 
Desenvolvido para uma única plataforma
Utilização de linguagens e ferramentas 
específicas para a plataforma em questão
Exemplo: para Android, usa-se Android SDK; 
e Android Studio, linguagem Java e kotlin
Híbrido
Implementação utiliza html, css e Javascript
Frameworks ou ferramentas que permitem 
uma mesma base de código
Uma linguagem e distribuída para várias 
plataformas
57
41
Serviços: 
processos de software 
O termo processo de 
software nesse caso 
não é no sentido de 
conjunto de atividades 
da engenharia de 
software, mas, sim, 
naquele programa 
processado pelo SO 
57
42
Monolítico: roda com um único processo
Microsserviços: abordagem arquitetônica e 
organizacional do desenvolvimento de software 
na qual o software consiste em pequenos 
serviços independentes que se comunicam 
usando APIs bem definidas. São autônomos 
e especializados Monolithic Microservices
A
sh
al
at
h
a/
S
h
u
tt
er
st
o
ck
 
37 38
39 40
41 42
8
57
43
SOAP – Service-Oriented Architecture
(Or Application) Protocol
Utiliza arquivos xml
Protocolo de transporte: HTTP com
REST – Representational State Transfer
Conjunto de restrições para criação 
de webservices
Quando um serviço implementa esse 
padrão: Restfull
Restfull utiliza arquivos JSON
57
44
SOAP e REST são APIs 
e são arquiteturas de 
webservice
Webservices são 
independentes de 
linguagem
Java .Net C/C++ Python PHP
URL, WSDL, SOAP Request/Reponse
XML,JSON 
w
eb
S
ervices
URL, WSDL, SOAP Request/Reponse
XML,JSON 
Java.NetC/C++PythonPHP
Ashalatha/Shutterstock 
57
45
Commit: 
Enviar alterações de determinado trecho 
do código
Enviar criação de uma nova versão 
do projeto
Versionamento: 
Atribuição de número de versão ao estado 
do projeto 
Exemplo: pastas com versões do projeto: 
trabalho_FDS_v1, trabalho_FDS_v2
57
46
Snapshot: cópia instantânea 
em determinado tempo de um volume
Debug: 
Debugging ou debugar 
Depurar o programa
Encontrar erros no programa 
e tentar resolvê-los
Sumstock/Shutterstock 
57
47
Git:
Sistema de controle de versão
Gerencia as várias versões no desenvolvimento 
de um documento
O logo do GIT representa a ramificação para 
desenvolvimento não linear
Github: 
Plataforma de desenvolvedor completa para 
criar, dimensionar e fornecer software seguro
Utiliza o Git como sistema de controle
.
57
48
Ciclo de vida de software 
43 44
45 46
47 48
9
57
49
Software Development Life Cycle – SDLC 
Modelo de processo 
Representação simplificada de um processo 
de software
Ciclo de vida de 
desenvolvimento de softwares
57
50
Quatro atividades são comuns a todos 
os processos de software: especificação, 
desenvolvimento, validação e evolução
Especificação Desenvolvimento Validação Evolução
Sommerville (2019) 
57
51
Analogia com a construção de casa
Especificação Desenvolvimento Validação Evolução
S
o
m
m
er
vi
lle
 (
2
0
1
9
),
 
Fr
an
ck
 B
o
st
o
n
/S
h
u
tt
er
st
o
ck
, 
m
ar
u
co
/S
h
u
tt
er
st
o
ck
, 
fr
an
co
 
lu
ca
to
/S
h
u
tt
er
st
o
ck
, 
S
ea
n
 L
o
ck
e 
P
h
o
to
g
ra
p
h
y/
S
h
u
tt
er
st
o
ck
, 
jo
se
rp
iz
ar
ro
/
S
h
u
tt
er
st
o
ck
Especificação: 
especificar como 
quer que a casa 
seja
Validação: o 
que está sendo 
construído está 
de acordo com 
o solicitado
Desenvolvimento: 
construção 
da casa 
propriamente
Evolução: 
manutenção 
da casa. Evoluir 
para atender 
necessidades 
57
52
Ciclo de vida de um software
Especificação
Desenvolvimento
Validação
Evolução
S
o
m
m
er
vi
lle
 (
2
0
1
9
) 
N
D
A
B
 C
re
at
iv
it
y/
S
h
u
tt
er
st
o
ck
,
S
to
ck
 4
yo
u
/S
h
u
tt
er
st
o
ck
, 
B
lu
e 
P
la
n
et
 S
tu
d
io
/
S
h
u
tt
er
st
o
ck
 
Especificação Desenvolvimento Validação Evolução
57
53
Clássico
Tradicional 
SDLC
Waterfall
Modelo cascata
Metas e restrições 
são identificadas 
junto aos 
usuários
O projeto de 
software é 
implementado em 
unidades de 
programa
Sistema é instalado 
e colocado em 
operação
Requisitos são 
mapeados em 
componentes de 
hardware e software
Unidades de programa 
são integradas e 
testadas como um 
sistema completo
Requerimento
Projeto
Implementação
Verificação
Manutenção
57
54
Alternativa para gestão de projetos 
tradicionais
Entrega rápida das funcionalidades
Foco no software e não no projeto 
Adequada a aplicações em que os requisitos 
mudam rapidamente
Duas abordagens: o extreme Programming
(XP) e o SCRUM
Metodologia Ágil
49 50
51 52
53 54
10
57
55
Integração 
contínua
Integração 
contínua
Propriedade 
Coletiva
Lançamentos 
pequenos
Programação 
em pares
Refatoração
Projeto 
simples
Planejamento 
incremental
Representante 
do cliente
Desenvolvimento 
test first
Ritmo 
sustentável
Metodologia Ágil
57
56
SCRUM
•Product Backlog
•Sprint Baclog
•Increment
Artefatos
•Sprint planning
•Daily Scrum
•Sprint Review
•Sprint 
Retrospective
Eventos
•Comprometimento
•Coragem
•Foco
•Abertura
•Respeito
Valores
•Scrum master
•Product owner
•Desenvolvedor
Papéis
K
P
D
M
ed
ia
/S
h
u
tt
er
st
o
ck
57
57
Sprint 
Retrospective
Sprint 
Review
Sprint 
Planning
Daily 
Scrum 
Product 
Backlog
Sprint
Backlog
Increment
1 Scrum Team
Scrum Framework
57
58
55 56
57 58

Continue navegando