Escolar Documentos
Profissional Documentos
Cultura Documentos
COESÃO E ACOPLAMENTO
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
RQUITETURA EM CAMADAS
▪ Rede: que permite aos clientes acessarem esses serviços. Quando clientes e
servidores podem ser executados em uma única máquina, não são necessários.
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
Os clientes talvez precisem saber os nomes dos servidores e os serviços que eles
fornecem, mas os servidores não precisam saber sobre os clientes. Eles acessam os
serviços pelo servidor por meio de chamadas remotas de procedimento usando um
protocolo Request-Reply (Ex: HTTP). Essencialmente, um liente z um pedido
um rvidor spera té eceber a esposta.
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
O catálogo deve ser capaz de lidar com várias consultas e de fornecer links para
Sistemas Web de informações com dados do filme e videoclipe, e um sistema de e-
commerce que apoie a venda desses. O rograma cliente mplesmente a
interface grada om o u ário, construída om o de egador eb
para esses serviços.
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
As principais desvantagens dos clientes gordos são: não há um local central para
atualizar e manter a lógica do negócio, uma vez que o código do aplicativo é
executado em vários locais de cliente; é exigida uma grande confiança entre o
servidor e os clientes por conta do banco de dados; não suporta bem o crescimento
do número de clientes.
1
Galera, diz-se Arquitetura em Três Camadas, 3-Layers Architecture ou 3-tiers Architecture. Apesar de muitas
pessoas usarem os dois termos indiferentemente, eles não são iguais: Layers são camadas lógicas, i.e., pode
haver três layers em uma única máquina e os Tiers são camadas físicas, i.e., pode haver apenas um tier por
máquina. Entenderam? ;)
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
Grosso odo: um usuário faz uma requisição por meio de um Navegador (Camada
do Cliente), essa requisição é passada para um Servidor Web (Camada de
Apresentação), que a processa e procura a regra de negócio correspondente no
Servidor de Aplicação (Camada de Aplicação), que procura os dados no banco de
dados (Camada de Dados).
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
Camada e delo:
Essa é a camada responsável pela rep e sentação dos dados, provendo meios de
acesso (leitura/escrita). Cara, sempre ue ocê ensar em manipulação e ados,
(leitura, escrita u validação e dados2), pense a amada e delo! Ela gerencia
não só os dados, mas também os comportamentos fundamentais da aplicação –
representados por regras de negócio (Sim, elas ficam na Camada de Modelo!).
Camada e C ntrole:
2
Galera, a validação ocorre na Camada de Modelo. Pode ocorrer na Camada de Visão? Sim, eu posso utilizar um
JavaScript p/ fazer algumas validações de dados, mas isso é inseguro e se trata de uma violação do modelo.
Logo, aceitem que validações ocorrem na camada de modelo. Bacana?
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
Vocês já pensaram no porquê de essa camada ter esse nome? Porque ela controla o
fluxo da aplicação, interpretando os dados de entrada e coordenando/orquestrando
as manipulações do modelo e as interações com o usuário. Trata-se de uma camada
intermediária entre a Visão e o Modelo. Em geral, há c ntrolador ara da
visão, apesar e poder xistir várias controladoras para a sma visão.
Camada e isão:
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
Nesse momento, a visão não precisa necessariamente fazer uma requisição para o
controle, para que o controle peça a lista de itens para o modelo. Ora, ela pode
pedir diretamente para o modelo! Fiquem ligados também ue xistem diversas
visões para ada delo. Na imagem abaixo, podemos ver as possíveis interações
na Arquitetura MVC!
▪ http://www.cfgigolo.com/2008/01/mvc-model-view-controller-e-os-tres-macacos
▪ https://r.je/views-are-not-templates.html
▪ http://tableless.com.br/mvc-afinal-e-o-que
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
Comentários:
Gabarito: D
b) A camada Model pode interagir com a camada View para converter as ações
do cliente em ações que são compreendidas e executadas na camada Controller.
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
Tudo rve ara ualquer profissão, mas por lguma razão, algumas pessoas
acham que a área e ecnologia da ormação diferente das demais. Ora, vocês
já imaginaram um médico fazendo uma cirurgia, quando recebe uma mensagem
do chefe do hospital dizendo: “Doutor, você está enrolando demais nas cirurgias,
acelera um pouco isso aí, porque você já está atrasado os próximos pacientes”.
“Outra coisa, essa mulher tinha pedido para colocar silicone nos seios, mas acabou
de desistir e, na verdade, ela vai querer uma plástica no nariz; não demore mais do
que vinte minutos, ok?!”. Existem muitos programadores ruins por aí, mas existem
muitos que bons programadores, porém fazem digos uins por nta de
todos esses motivos supracitados.
É preciso que todos tenham noção de que código ruim tem um preço alto. Por que?
Porque eventualmente ele irá falhar e, quando isso acontecer, alguém vai ter que
ler o código e entendê-lo para dar manutenção. Quanto ior scrito, mais difícil e
entender, mais demora para c nsertar. Fora a frustração e a irritação de mexer em
um código mal escrito. Quem já passou por isso sabe...
Acho que á icou aro ue u ódigo de aixa qualidade, pode atar rojeto
e té estruir a mpresa. Professor, o que seria um código limpo? É um código
eficiente, simples, direto, elegante, não-redundante, pouco dependente, fácil de
manutenir, ler e entender, coberto por testes, e que seguem padrões definidos.
Galera, um código limpo que pode ser lido quase como uma conversa. Vejam só:
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
de uma das regras do escotismo que diz: “Sempre deixe a área de acampamento
mais limpa do que estava” – isso serve para os programadores e seus códigos.
Nomes significativos: escolher bons nomes (para variáveis, métodos, funções, etc);
nomes devem ter significado (i.e., revelar a intenção); nomes devem estar de acordo
com o contexto empregado; nomes devem ser pronunciáveis (evitar siglas); nomes
não devem ser abreviados; nomes devem ser descritíveis; por devem ser ão-
ambíguos, fáceis de r e ompreender o ntexto m que re.
int tempoGastoEmDias;
Nomes de classes não devem ser verbos, devem ser substantivos; já nomes de
métodos não devem ser substantivos, devem ser verbos. Quanto às funções: devem
ser pequenas e devem fazer apenas uma coisa (responsabilidade única); não deve
ter nível de endentação maior que dois; preferencialmente, devem ter poucos
parâmetros; recomenda-se não repetir código (evitar redundância).
Quanto aos comentários: somente são úteis se forem colocados nos lugares certos;
como comentários, em geral, não são atualizados, eles podem distorcer a realidade,
logo não são confiáveis; além disso, comentários por si só não transformam um
código sujo em um código limpo; deve-se evitar fazer controle de versão por meio
de comentários (//revisado por Diego).
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
e) O comando return deve ser evitado, ao passo que continue e break devem
ser priorizados, assim como o goto.
Comentários:
Nomes significativos: escolher bons nomes (para variáveis, métodos, funções, etc);
nomes devem ter significado (i.e., revelar a intenção); nomes devem estar de acordo
com o contexto empregado; nomes devem ser pronunciáveis (evitar siglas); nomes
não devem ser abreviados; nomes devem ser descritivos; por fim, devem ser não-
ambíguos, fáceis de ler e de compreender no contexto em que se insere.
(a) Conforme vimos em aula, nomes devem ser pronunciáveis e que tenham um
propósito.
Nomes de classes não devem ser verbos, devem ser substantivos; já nomes de
métodos não devem ser substantivos, devem ser verbos. Quanto às funções: evem
ser pequenas e devem fazer apenas uma coisa (responsabilidade única); não deve ter
nível de endentação maior que dois; preferencialmente, devem ter poucos
parâmetros; recomenda-se não repetir código (evitar redundância).
(b) Conforme vimos em aula, nomes de classes não devem ser verbos – mas
substantivos.
Nomes significativos: escolher bons nomes (para variáveis, métodos, funções, etc);
nomes devem ter significado (i.e., revelar a intenção); nomes devem estar de acordo
com o contexto empregado; nomes devem ser pronunciáveis (evitar siglas); nomes
não devem ser abreviados; nomes devem ser descritivos; por fim, devem ser não-
ambíguos, fáceis de ler e de compreender no contexto em que se insere.
(c) Conforme vimos em aula, nomes devem ser descritivos, mas isso não significa
necessariamente longo.
Robert C. Martin diz: “The ideal number of arguments for a function is zero (niladic).
Next comes one (monadic), followed closely by two (dyadic). Three arguments (triadic)
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
TRICAS SOFTWARE
As medições de software podem ser usadas para realizar previsões gerais sobre um
sistema, i.e., encontrar uma estimativa geral de algum atributo do sistema (ex:
quantidade de defeitos) ou para identificar componentes anômalos, i.e., partes que
possuem características que desviam de alguma regra específica. Uma trica de
software a dição que efere a software, processo u ocumentação.
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
3
Como medir Produtividade? KLOC/Pessoa-Mês. Como medir Qualidade? Erros/KLOC. Como medir Custo?
$/KLOC. Como medir Documentação? Páginas/KLOC.
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
O que fazer, então? Bem, uma alternativa seria coletar uma grande quantidade de
dados de sistemas existentes e descobrir como os atributos de produto de software
se relacionam com as qualidades externas. As métricas de produtos se dividem em
duas classes: métricas dinâmicas, coletadas em um rograma m execução; e
métricas estáticas, coletadas em uma ocumentação, projeto, etc.
▪ Fan-in/Fan-out:
▪ Extensão e C digo:
▪ Complexidade C clomática:
▪ Extensão e dentificadores:
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
isso, mais compreensível será o programa. Vocês entendem isso? Uma variável com
30 caracteres, em geral, possui mais significado.
▪ Índice e Fog
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
Comentários:
Gabarito: E
Comentários:
Gabarito: E
4
Como medir Produtividade? KLOC/Pessoa-Mês. Como medir Qualidade? Erros/KLOC. Como medir Custo?
$/KLOC. Como medir Documentação? Páginas/KLOC.
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
Comentários:
a) Não, tempo gasto por ponto de função está mais para medição de produtividade
do que de qualidade; b) Não, isso é para estimar o tempo gasto para desenvolver
o software; c) Não, quantidade de linhas de código não servem para medir a
qualidade de um software e vice-versa; d) Não existe essa relação; e) Perfeito,
permite estimar a aderência aos requisitos do usuário.
Gabarito: E
a) De qualidade.
b) Técnicas.
c) Produtividade.
d) De estabilidade
e) De vulnerabilidade.
Comentários:
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
Gabarito: B
Comentários:
Gabarito: D
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
P ADIGMA ESTRUTURADO
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
/* Representação de um algoritmo genérico */
variavel 1;
variavel 2;
variavel 3;
Inicio
{
comando 1;
comando 2;
comando 3;
comando 4;
comando 5;
}
Fim
Inicio
{
comando 1;
comando 2;
comando 3;
comando 4;
comando 5;
}
Fim
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
Inicio
Se (condição 1) Então
(comandos)
Senão
(comandos)
Fim-Se
Fim
/* Representação de uma estrutura condicional por meio de uma seleção de múltipla escolha */
Escolha a
Caso 1:
(comandos)
Caso 2:
(comandos)
...
Caso Contrário
(comandos)
Fim-Escolha
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
anos, então sou um adulto; por fim, caso contrário, i.e., eu tenha mais de 60 anos,
então sou um idoso.
Repita
(comandos)
Até (condição)
No primeiro caso, inicialmente testa-se a condição e, caso ela seja verdadeira, entra-
se no bloco de comandos, saindo – apenas – quando a condição se tornar falsa. No
segundo caso, entra-se no bloco de comandos, realizam-se todos os passos até
testar a condição. Da sma forma, caso la ja a, o u sai do loco e
comandos.
Por fim, na estrutura de repetição com variável de controle, utiliza-se uma variável
que controlará a quantidade de iterações do bloco de comandos, isto é, nesse caso,
há uma quantidade definida de repetições e, portanto, quando chegar ntagem
máxima, o ontrole e o s o loco de comandos e parte para a próxima
instrução do programa.
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
e) Os nomes das variáveis devem ser simplificados, de forma a não criar códigos
gordos (fat codes) — por exemplo, o uso de x para o nome de uma variável é
mais apropriado que MediadosAlunosAprovados.
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org
TRF5/2017 – ANALISTA JUDICIÁRIO
Curso de Engenharia e Desenvolvimento de Software
Prof. Diego Carvalho – Aula 05
a) De qualidade.
b) Técnicas.
c) Produtividade.
d) De estabilidade
e) De vulnerabilidade.
www.concurseirosunid
www.concurs www.concurseirosunidos.o
s.org