Buscar

01 Projeto e Arquitetura 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 49 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 49 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 49 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

Projeto e Arquitetura 
de Software Prof. Alexandre Krohn
Projeto e Arquitetura de Software 2
Projeto e Arquitetura de 
Software
Projeto e Arquitetura de Software 3
“Tu te tornas eternamente 
responsável por aquilo que 
cativas”
Antoine de Saint-Exupéry
Projeto e Arquitetura de 
Software
Projeto e Arquitetura de Software 4
“Tu te tornas eternamente 
responsável por aquilo que 
cativas”
Antoine de Saint-Exupéry
No nosso caso...
Projeto e Arquitetura de 
Software
Projeto e Arquitetura de Software 5
Projeto e Arquitetura de 
Software
“Tu te tornas eternamente 
responsável por aquilo que 
cativas”
Antoine de Saint-Exupéry
“Tu te tornas eternamente 
responsável por aquilo que 
programas”
Ricardo Vargas Dorneles
No nosso caso...
Projeto e Arquitetura de Software 6
Eternamente 
responsável?
● Espera-se que todo software 
desenvolvido dure.
● Em média, a vida de um software 
pode ser resumida assim
Tempo
Desenvolvimento Manutenção Manutenção Manutenção Manutenção
Projeto e Arquitetura de Software 7
● Se o software for bem construído, 
isso não é um problema.
80% da vida útil é 
manutenção
Projeto e Arquitetura de Software 8
80% da vida útil é 
manutenção
● Mas e se não for?
Projeto e Arquitetura de Software 9
Dê manutenção nisso:Dê manutenção nisso:
Projeto e Arquitetura de Software 10
A gambiarra é a principal 
inimiga
● Produtos bem construídos são mais 
simples de manter
● Boa construção significa 
planejamento e atenção aos detalhes
● Em software, PROJETO e 
ARQUITETURA!
Projeto e Arquitetura de Software 11
Projeto e Arquitetura
● Projeto de Software
● Arquitetura de Software
Projeto e Arquitetura de Software 12
Projeto de Software
● Projeto de Software (do inglês Software 
design) é a parte da engenharia de software 
que se encarrega de fazer todo o 
planejamento anterior ao desenvolvimento, 
incluindo a definição da arquitetura do 
software, e transformar tudo em um 
documento ou conjunto de documentos 
capazes de serem interpretados diretamente 
pelo programador.
Projeto e Arquitetura de Software 13
Arquitetura de Software
● O projeto forma o plano geral de 
desenvolvimento do software
● A arquitetura concentra-se nos 
aspectos técnicos da programação 
do software
Projeto e Arquitetura de Software 14
Arquitetura de Software
● Deixaremos o máximo possível do 
projeto de software para as 
disciplinas de Engenharia de 
Software
● Essa é uma disciplina de 
programação!
Projeto e Arquitetura de Software 15
Função : Arquiteto de 
Software
● Geralmente um programador Sênior
● É o intermediário entre o pessoal de 
Análise de Sistemas e os 
Desenvolvedores
● Precisa equilibrar uma série de 
fatores
Projeto e Arquitetura de Software 16
Arquiteto de Software
Projeto e Arquitetura de Software 17
Arquiteto de Software
● Preocupa-se com
– Requisitos
– Qualidade
– Tecnologia
– Boas práticas
– Padrões
– Performance...
Projeto e Arquitetura de Software 18
Mas como?
● Começa-se dominando bem 
programação. Especialmente a 
linguagem e o paradigma com o 
qual se irá trabalhar.
● Estudo, estudo, estudo…
● Programar, programar, programar...
Projeto e Arquitetura de Software 19
Sobre os Ombros de 
Gigantes
● em latim: nanos gigantum humeris 
insidentes expressa o significado de 
"descobrir a verdade a partir das 
descobertas anteriores"
● Ou seja, aproveitar as experiências 
daqueles que nos antecederam!
● Muitos exemplos e literatura disponíveis
Projeto e Arquitetura de Software 20
Sobre os Ombros de 
Gigantes
Projeto e Arquitetura de Software 21
Arquitetura de Software 
(voltando...)
● A arquitetura de um software 
definirá o futuro do mesmo. 
● Organização é a palavra-chave.
● O resto são escolhas adequadas.
Projeto e Arquitetura de Software 22
Organização de Software
● Primeiro tópico em organização de 
um programa qualquer, em 
qualquer paradigma:
Modularização
Projeto e Arquitetura de Software 23
O que Modularização 
evita?
Projeto e Arquitetura de Software 24
O que Modularização 
evita?
Projeto e Arquitetura de Software 25
Monólitos de Software
● Blocos de código gigantescos, 
difíceis de entender e de depurar, 
com muita repetição de código
Projeto e Arquitetura de Software 26
Monólitos de Software
● Blocos de código gigantescos, 
difíceis de entender e de depurar, 
com muita repetição de código
● E que ninguém quer mexer!
Projeto e Arquitetura de Software 27
Modularização de 
Programas
Um problema complexo é melhor 
abordado se for dividido 
primeiramente em vários 
subproblemas 
MODULARIZAÇÃO 
Projeto e Arquitetura de Software 28
Modularização de 
Programas
Um problema complexo é melhor 
abordado se for dividido 
primeiramente em vários 
subproblemas 
MODULARIZAÇÃO MÓDULOS 
Projeto e Arquitetura de Software 29
Modularização de 
Programas
A implementação desses Módulos é 
feita através de SUBPROGRAMAS 
MÓDULOS 
Projeto e Arquitetura de Software 30
Modularização de 
Programas
A implementação desses Módulos é 
feita através de SUBPROGRAMAS 
MÓDULOS 
Os SUBPROGRAMAS 
podem ser 
FUNÇÕES e 
PROCEDIMENTOS 
Projeto e Arquitetura de Software 31
Subprogramas
● SUBPROGRAMAS devem realizar uma única 
funcionalidade no programa.
– possuem “código independente” e devem ser definidos 
separadamente no programa
– na linguagem C, a definição do subprograma (função) deve 
ocorrer antes da função que irá utilizá-lo.
– SUBPROGRAMAS são declarados no início do programa
– Prototipação de funções (pragmas)
● Se for em Java, um subprograma é um método de uma 
classe
Projeto e Arquitetura de Software 32
Estrutura de uma função
tipodafunção nomedafunção(tipo 
var1, ..., tipo varn) 
inicio 
 declaração de variáveis locais 
 corpo da função 
 retorne(variável de retorno); 
fim 
Projeto e Arquitetura de Software 33
Estrutura de uma função 
(C)
int soma(int a, int b) 
{ 
 int resposta; 
 resposta = a + b; 
 return resposta; 
} 
Projeto e Arquitetura de Software 34
Estrutura de um método 
(Java)
public int soma(int a, int b) { 
 int resposta; 
 resposta = a + b; 
 return resposta; 
} 
Projeto e Arquitetura de Software 35
Funções e Métodos
● Retornam um único valor
– Na definição da função devem ser declarados:
● o tipo de todos os parâmetros (argumentos)
● o tipo do valor que a função retorna
● todas as variáveis utilizadas internamente no 
subprograma (variáveis locais)
● Para utilizar a função no programa principal, 
basta colocar seu nome (identificador) e os 
valores para os parâmetros.
Projeto e Arquitetura de Software 36
Exemplo
  Dados dois números N e K, calcular a 
Combinação 
 C N,K = 
  Com a definição de uma função fat (X) que 
calcula o fatorial de um dado X, o cálculo da 
combinação fica: 
CNK ← fat (N) / (fat (K) * fat (N-K)) 
)!(!
!
KNK
N
−
Projeto e Arquitetura de Software 37
Exemplo
Projeto e Arquitetura de Software 38
Escopo de Variáveis
● Significa a visibilidade de uma variável perante os 
diversos subprogramas integrantes do programa (ou 
algoritmo)
– Variável global: declarada no início do algoritmo ou 
programa (fora dos subprogramas e programa principal) e é 
visível por todos.
– Variável local: declarada dentro de um subprograma e 
somente visível dentro do mesmo.
Projeto e Arquitetura de Software 39
Escopo de Variáveis
● A variável global existe durante toda a execução do 
programa
– Interessante quando a mesma é utilizada por várias 
funções
– Muitas variáveis globais podem prejudicar a execução do 
programa (overflow)
– Os parâmetros enviados para as funções ajudam no 
entendimento da finalidade da função
● O uso de variável global deve ser analisado cuidadosamente.
Projeto e Arquitetura de Software 40
Subprogramas
● Como se transforma um programa 
em um programa com 
subprogramas?
Projeto e Arquitetura de Software 41
Programa que testa 
números primos (Java):
Conta os divisores, 
se tiver só dois, é 
primo
Projeto e Arquitetura de Software42
Programa que testa 
números primos (Java):
Conta os divisores, 
se tiver só dois, é 
primo
Esse é o código 
que verifica se o 
número é primo
Projeto e Arquitetura de Software 43
Programa que testa 
números primos (Java):
Saída do método
Corpo do método
c c
numero
numero
c
numero Parâmetro de 
entrada
Projeto e Arquitetura de Software 44
Programa que testa 
números primos (Java):
A leitura do número
é feita no programa 
principal 
As mensagens de 
saída também 
ficam no programa 
principal 
Projeto e Arquitetura de Software 45
Programa que testa 
números primos (Java):
Extraindo
o método
obtemos 
chamada 
Projeto e Arquitetura de Software 46
Benefícios da 
Modularização
● Organiza o código
● Distribui a complexidade do programa
● Favorece o reuso
● Evita a duplicação de código : Princípio DRY 
(Don’t Repeat Yourself)
● Facilita a manutenção
● Diminui o impacto de erros
Projeto e Arquitetura de Software 47
Resultado da 
Modularização
Programa Grande
Monolítico
Principal
Subprograma A
Subprograma B
Subprograma C
Subprograma D
Projeto e Arquitetura de Software 48
Dúvidas?
Projeto e Arquitetura de Software 49
Referências
● Len Bass e outros, Software Architecture In 
Practice
● Robert C. Martin e Micah Martin, Agile 
Principle, Patterns, and Practices in C#
● Eric Gamma e outros, Padrões de Projeto – 
Soluções Reutilizáveis de Software 
Orientado a Objetos
● Antoine de Saint-Exupéry, O Pequeno Príncipe 
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42
	Slide 43
	Slide 44
	Slide 45
	Slide 46
	Slide 47
	Slide 48
	Slide 49

Continue navegando