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", ¬a1);
printf("Digite a segunda nota: ");
scanf_s("%d", ¬a2);
//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