Buscar

Aula02___Protocolos

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 46 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 46 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 46 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

IF Sudeste MG – Barbacena 
Sistemas para Internet 
 
 Tendo escolhido um meio de transmissão, seja ele um 
telégrafo de tocha ou uma fibra óptica, temos que escrever 
um conjunto de regras para o uso adequado do meio, 
definindo como por exemplo: 
◦ As mensagens a serem codificadas; 
◦ Quando uma transmissão é iniciada e terminada; ... 
 Dois tipos de erros são difíceis de evitar: 
◦ a concepção de um conjunto incompleto de regras; ou 
◦ elaboração de regras que sejam contraditórias. 
 Veremos maneiras de certificar-nos: 
◦ que o conjunto de regras é completo e consistente. 
◦ a precisão em especificar os detalhes relevantes de um protocolo. 
◦ olhar para os tipos gerais de serviços que um protocolo de 
comunicação de computador deve ser capaz de proporcionar. 
 Suponha que temos dois computadores, A e B. A está 
conectado a um armazenamento de arquivos e B 
conectado a uma impressora. 
 Queremos enviar um arquivo texto a partir do 
armazenamento de arquivos em A para a impressora 
em B 
 
 
 
 Para que A e B se comuniquem, as duas máquinas 
devem usar os mesmos meios físicos, usar codificação 
de caracteres compatíveis, transmitir e digitalizar os 
sinais no canal, mais ou menos à mesma velocidade. 
 Além dessas questões resolvidas, a máquina ainda deve 
ser capaz de 
◦ verificar se a impressora está ou não disponível. 
◦ adaptar a velocidade que pode enviar os caracteres de acordo 
com a taxa em que a impressora pode lidar com eles. 
◦ suspender o envio quando a impressora ficar sem papel ou 
estiver desligada; 
 É importante notar que, embora o fluxo de dados reais seja 
em apenas uma direção, A → B, precisamos de um canal 
bidirecional para as informações de controle. 
◦ As duas máquinas deve ter alcançado um acordo prévio sobre o 
significado de informações de controle e sobre os procedimentos 
usados ​​para iniciar, suspender, retomar e concluir as 
transmissões. 
 Todas as normas, formatos e procedimentos que foram 
acordados entre A e B é chamado de protocolo. 
 O protocolo formaliza a interação por padronizar a utilização de 
um canal de comunicação. 
 O protocolo, então, pode conter acordos sobre os métodos 
utilizados para: 
◦ Início e término de troca de dados 
◦ Sincronização de remetentes e destinatários 
◦ Detecção e correção de erros de transmissão 
◦ Formatação e codificação de dados 
 A maioria desses problemas pode ser definido em mais de um 
nível de abstração: 
◦ Para a sincronização pode-se aplicar a sincronização de relógio do 
remetente e do receptor; 
◦ Em um nível mais alto de abstração, preocupa-se com a sincronização 
das transferências de mensagens (por exemplo, no controle de fluxo e 
controle de taxa), 
◦ Um nível ainda mais alto lida com a sincronização e coordenação as 
principais fases do protocolo. 
 No nível mais baixo pode 
consistir num método para 
codificar os bits em sinais 
analógicos e em sinais elétricos. 
 Um nível acima, pode consistir 
no método de codificação de 
caracteres individuais de um 
alfabeto na transmissão de bits. 
 Em seguida, os códigos podem 
ser agrupados em campos de 
mensagem, e de campos de 
mensagens em quadros ou 
pacotes, cada um com um 
significado e uma estrutura 
específica. 
 A especificação do protocolo consiste em cinco partes 
distintas. Para ser completa, cada especificação deve 
incluir explicitamente: 
1. O serviço a ser fornecido pelo protocolo; 
2. As suposições sobre o ambiente em que o protocolo será 
executado; 
3. O vocabulário de mensagens utilizadas para implementar o 
protocolo; 
4. A Codificação (formato) de cada mensagem no vocabulário; 
5. As regras que garantem a consistência de trocas de mensagens; 
o O design e validação de um conjunto inequívoco de regras e 
procedimentos. 
 Cada item da especificação do protocolo pode definir uma 
hierarquia de outros elementos. 
◦ O protocolo de vocabulário, por exemplo, pode consistir de uma 
hierarquia de classes de mensagem. 
 Segue um exemplo informal da definição dos 
cinco elementos do protocolo, e os tipos de erros 
que podem permanecer em um projeto. 
 O seguinte protocolo foi descrito por W. C. Lynch 
[1968] como 
◦ “... De razoável aparência, mas esquema inadequado 
publicado por uma das principais fabricantes de 
computadores em um manual de informações do 
sistema.” 
 Podemos identificar os blocos básicos de 
construção em uma especificação citado acima. 
 Serviço de especificações 
◦ O objetivo do protocolo é a transferência de arquivos de texto 
como sequências de caracteres através de uma linha telefônica 
enquanto protege contra erros de transmissão, assumindo que 
todos erros de transmissão pode de fato ser detectado. 
◦ O protocolo é definido como transferência de arquivos full-
duplex, isto é, ele deve permitir uma transferência em duas 
direções ao mesmo tempo. 
◦ Confirmações positivas e negativas no tráfego de A para B 
enviado no canal de B para A, e vice-versa. Cada mensagem 
contém duas partes: 
 uma parte da mensagem, 
 e uma parte de controle que se aplica ao tráfego no canal reverso 
 Suposições sobre o MEIO AMBIENTE 
◦ O ambiente em que o protocolo deve ser executado 
consiste em pelo menos dois usuários do serviço de 
transferência de arquivos e um canal de transmissão. 
◦ Os usuários podem assumir simplesmente um pedido de 
transferência de arquivos e aguardar a sua conclusão. 
◦ No canal de transmissão é assumido que pode causar 
distorções em mensagens arbitrárias, mas não para 
perder, duplicar, inserir ou reordenar as mensagens. 
◦ Vamos supor aqui que uma camada de nível inferior será 
usada para capturar todas as distorções e transformá-las 
em mensagens sem distorções de erro. 
 Vocabulário de protocolos 
◦ O vocabulário de protocolo define três tipos distintos de 
mensagens: 
 Ack para uma mensagem combinada com um reconhecimento 
positivo; 
 Nak apara uma mensagem combinada com uma confirmação 
negativa; e 
 Err para uma mensagem com erro de transmissão. 
◦ O vocabulário pode ser sucintamente expressa como um 
conjunto: V = {ack, err, nak}. 
◦ Cada tipo de mensagem pode ser ainda mais refinado para 
uma classe de mensagens de nível inferior, constituído por 
exemplo de um subtipo para cada código de caractere a ser 
transmitido. 
 Formato de mensagem 
◦ Cada mensagem é constituída por um campo de controle que identifica: 
o tipo de mensagem e um campo de dados com o código de caracteres. 
 Para o exemplo, assumimos que os dados e os campos de controle são de um 
tamanho fixo. 
◦ A forma geral de cada mensagem pode agora ser representada 
simbolicamente como uma simples estrutura de dois campos: 
{ control tag, data } 
enum control { ack, nak, err }; 
struct message { 
enum control tag; 
unsigned char data; 
}; 
◦ A linha que começa com a palavra-chave enum declara um tipo de 
enumeração chamado control com três valores possíveis; 
◦ Um tipo usado para a declaração da mensagem; 
◦ E a estrutura da própria mensagem contém dois campos: uma tag do 
tipo control e um campo de dados. 
 
 Regras do protocolo 
◦ As regras para o protocolo foram informalmente descrito 
como se segue: 
 Se a chegada da última mensagem for livre dos erros do 
canal, a mensagem de retorno vai levar uma confirmação 
positiva; caso contrário vai levar um confirmação negativa. 
 Se a mensagem anterior teve uma confirmação negativa, ou 
não houve recebimento de confirmação alguma, retransmitir 
a mensagem antiga; caso contrário, buscar uma nova 
mensagem para transmissão. 
 Regras do protocolo 
◦ Para formalizar essas regras, podemos usar os diagramas 
de transição de estado, fluxogramas, expressões 
algébricas ou descrições do formato de programas. 
 Receive: simboliza a espera da 
chegada de uma nova mensagem no 
canal. 
 Nack, ack ou err: representa a 
confirmação de acordo com a 
mensagem recebida. 
 Next:o : Operação interna que indica 
o próximo item de dado a ser 
enviado.O item de dado é 
armazenado na variável o. 
 
 
 Os dados transferidos em uma direção apenas podem 
continuar se os dados foram transferidos na outra 
direção. 
 Como definir quando uma transmissão de dados será 
iniciada ou concluída. 
◦ As regras de transmissão só trata a transferência de dados 
normais. 
◦ Quando quer iniciar a transmissão, um dos dois lados enviam 
uma mensagem falsa de erro, sendo os dois lados autorizados 
a iniciar a transmissão. 
 Não diz se o receptor deve aceitar ou não um item de 
dado que foi recebido corretamente e armazenada 
temporariamente em i. 
◦ Conduz a aceitação de uma mensagem duplicada 
 Suponha a tentativa de enviar a sequência de 
caracteres de A à Z . 
◦ As linhas pontilhadas representam comunicação de sucesso e 
as linhas tracejadas representam mensagens distorcidas pelo 
canal. 
◦ ACK – reconhecimento positivo, enviado para confirmar o 
recebimento correto do segmento e NAK – reconhecimento 
negativo, enviado para informar que o segmento foi recebido 
com erros; 
 A inicia a transmissão enviando uma mensagem de 
erro falsa para B. 
 B responde pela transmissão dos caracteres na ordem 
inversa: de Z para A 
 A erroneamente aceita a mensagem. 
 
 
 
 Para realizar uma tarefa como transferência de 
arquivos, um protocolo deve realizar uma série de 
funções de nível baixo, tais como sincronização e 
recuperação de erros. 
◦ A realização de tais serviços, depende do pressuposto 
estabelecido em relação ao meio ambiente onde o 
protocolo será executado. 
 Para resolver problemas maiores, usa-se o senso 
de dividi-lo em subproblemas menores, mais 
fáceis de serem resolvidos. 
◦ Princípio da Modularidade / Camadas 
 Exemplo: Suponha que precisamos implementar um protocolo 
de transmissão que fornece codificação para cada sequência de 7 
bits e proteger contra erros de transmissão, por exemplo com a 
adição de 1 bit de paridade para sequência codificada. 
◦ Podemos separar cada um desses serviços em dois submódulos 
funcionais: um codificador e um de paridade e invocá-los 
sequencialmente. 
◦ Na outra extremidade haverá um decodificador e um verificador de 
paridade. 
◦ P1 é o conjunto de adicionar paridade e o verificador; 
◦ P2 é o conjunto codificador/decodificador. 
 A figura do slide anterior ilustra o princípio de 
funcionamento em camadas. 
 Cada camada oferece um serviço diferente para 
cada protocolo 
◦ P1 
 é um protocolo de 8 bits 
 Proporciona um canal virtual para P2 de forma transparente 
 Qualquer formato imposto pelo P2 é transparente. 
◦ P2 
 é um protocolo de 7 bits 
 Qualquer formato imposto por camadas superiores também 
é transparente. 
 
 Como mostrado na imagem acima, cada camada pode 
incluir os dados a serem transmitidos de outra camada, 
como um envelope. 
 Os formatos de dados usados nas camadas superiores não 
precisam ser mantidos pelas camadas inferiores. 
 Os dados podem ser divididos em novos formatos e 
tamanhos, desde que o formato original possa ser 
recuperado na camada correspondente do receptor. 
 O princípio da modularidade garante que a alteração no 
formato de uma camada não altere o funcionamento das 
demais. 
 Em 1980 a ISO reconheceu as vantagens de padronizar a 
hierarquia de serviços de um protocolo com um modelo de 
referência para os projetistas de protocolos. 
 A recomendação ISO define 7 camadas: 
1. Camada física: a transmissão de bits através de um circuito físico 
2. Camada de enlace: detecção de erros e recuperação 
3. Camada de rede: transferência transparente de dados e 
roteamento 
4. Camada de transporte: transferência de dados para um usuário 
de nível superior 
5. Camada de Sessão: coordenação de interações em sessões de 
usuário 
6. Camada de apresentação: interpretação da sintaxe em nível de 
usuário por exemplo, para a criptografia ou compressão de dados 
7. Camada de aplicação: ponto de entrada dos daos para os 
processos de aplicações, tais como correio eletrônico ou de 
arquivo de transferência de dados. 
 
 Camada Física 
◦ A camada 1 contém as funções específicas que se aplicam 
à transmissão real dos bits. 
◦ Ela especifica se a ligação é um fio de cobre, canal de 
rádio ou fibra óptica. 
◦ Define a codificação dos dados em, por exemplo, bits, 
elétrico, óptico ou sinal de rádio. 
◦ Padroniza as exigências dos cabos, interruptores, 
conectores, incluindo a atribuição de pinos. 
◦ Ela vai esconder estes detalhes da camada de enlace. 
 Os quadrados representam os nós ou hosts na 
rede. 
 Os círculos representam os processos no cliente à 
nível de aplicação. 
 As linhas representam as conexões lógicas 
 Camada de enlace 
◦ utiliza o serviço prestado pela camada de física 
◦ transforma os dados brutos em dados confiáveis, adicionando 
tratamento de erros. 
◦ está conectado a cada par de hosts. 
◦ Transmite dados em blocos (frames) 
◦ Pode fornecer controle de fluxo de dados 
◦ Pode ser orientado à conexão com confirmação de entrega 
 Camada de rede 
◦ Se encarrega com funções típicas da rede 
 Endereçamento 
 Roteamento 
 Escolher melhor caminho, evitar gargalos e 
congestionamentos entre o host inicial e final. 
 Fornece meio para estabelecer e orientar conexões 
 Camada de Transporte 
◦ Conecta processos à nível de usuário 
◦ Os protocolos de rede e transporte podem ser chamados 
de protocolos ponto-a-ponto 
◦ Pode fornecer serviço de controle de fluxo 
 A camada define um nível de abstração no 
protocolo. 
 Cada camada na hierarquia define um serviço 
distinto e implementa um protocolo diferente. 
 O formato usado em cada camada é independente 
do formato usado nas demais. 
◦ A camada de redes envia pacote de dados, a camada de 
ligação cria os quadros e a camada física converte em 
fluxos de bits ou bytes. 
◦ O formato imposto pelas camadas inferiores é 
transparente para as camadas superiores. 
 Interface 
◦ A interface é quem separa os níveis 
de abstração das camadas. 
◦ Deve ser bem projetada e definida 
 Na figura, as funções dos 
protocolos na camada N formam 
uma entidade lógica. 
 No modelo são referidos como 
pares de entidades 
 O limite vertical entre duas 
camadas é o que chamamos de 
interface. 
 O limite horizontal é o que 
chamamos de par de protocolos. 
 Os detalhes de implementação das interfaces são 
ocultadas do meio ambiente. 
 A interface entre duas camadas é definido como 
uma coleção de acesso a serviços implementados 
pela camada inferior e usadas pela camada 
superior. 
 As informações a serem trocadas são formatadas 
de modo incremental pelas várias camadas como 
“envelope de dados”. 
 São usados três métodos para codificar a 
mensagem do protocolo em um determinado 
vocabulário: 
◦ Orientada a bit 
◦ Orientada a caractere 
◦ Orientada a contagem de byte 
 Orientada a bit 
◦ Um protocolo orientado a bits transmite seus dados como 
fluxo de bits. 
◦ Para reconhecer quando inicia ou termina uma mensagem 
(quadro), são usados alguns padrões como: modificação de 
um pequeno padrão de bits ou flags. 
 Deve ser garantido que esses bits serão interpretados de maneira 
diferente dos bits da mensagem. 
◦ Se o flag de um frame for uma sequência de 6 bits “1” entre 2 
“0” 01111110, esta série poderia seria interceptada se existisse 
nos dados do usuário. 
◦ Poderia ser feito a inserção de um bit “0” extra depois de cada 
série cinco “1” nos dados do usuário. 
 Orientada a bit 
◦ O receptor poderá detectar corretamente a estrutura 
imposta pelos flags no fluxo de bits através do controle 
do primeiro bit após cada série de 5 deles, sendo 
encontrado um zero, este deve ser excluído. 
◦ Esta técnica é usada no protocolo da camada de enlace 
do modelo OSI. 
 Orientado à caractere 
◦ Uma estrutura mínima é aplicado sobre o fluxo de bits 
◦ Se o número de bits por caractere é fixado em tamanhos fixos 
(7 ou 8 bits), toda a comunicação ocorre em múltiplos desses n 
bits. 
◦ Estas unidades sãousadas para codificar dados e para códigos 
de controle. Ex.: ASCII 
◦ Um exemplo para delimitadores dos dados dos usuário em 
ASCII é iniciar com delimitador STX e terminar com ETX 
◦ Para que os delimitadores não ocorram nos dados do usuário, 
são usados códigos de escape DLE 
◦ Técnica conhecida como Caractere Stuffing 
 
 
 Orientada a contagem de byte 
◦ Os flags de um protocolo orientado a bit e orientado a 
caractere são usados para estruturar um fluxo de dados 
em fragmentos maiores. 
◦ O motivo de usar tal estrutura é para indicar ao receptor 
onde o fluxo de dados inicia e termina. 
◦ Após o código de controle STX, o receptor conhece a 
quantidade de bytes contém a mensagem. 
◦ O código para indicar o fim, ETX, agora é desnecessário. 
◦ A maioria dos protocolos são desse tipo. 
 Nos métodos de estruturação da mensagem, caso haja 
uma distorção ou uma DLE é perdida, essas técnicas 
podem falhar. 
 Fazer a detecção de erros requer a transmissão de 
informações redundantes, como um checksum. 
 Fazer o controle de fluxo requer que um campo seja 
adicionado na mensagem. 
 Detectar a perda ou reordenar pacotes, requer que um 
campo de número sequencial seja adicionado. 
 Se mais de um tipo de mensagem pode ser enviado, 
deve existir um campo para sinalizar o tipo da 
mensagem. 
 Todos esses dados agrupados de maneira adequada, 
formam uma estrutura de cabeçalho e a soma de 
verificação são colocadas no rodapé. 
 O formato de uma mensagem pode ser ordenada 
por três elementos: 
formato = { header, data, trailer }. 
 Cada um desses elementos são formado por um 
subconjunto de outros itens: 
header = {type, destino, número de ordem, a contagem}, 
rodapé= {checksum, endereço de retorno}. 
 Muito se pensa na semelhança do projeto de 
protocolos com a de um software. As diferenças 
fundamentais são: 
◦ As regras do protocolo são interpretadas simultaneamente por 
inúmeros processos que interagem entre si. 
◦ As ferramentas para ver o protocolo funcionando de maneira 
simultânea por vários processos são escassas. 
 A mais popular par ao raciocínio de protocolos é o diagrama de 
sequência, para conhecer sua sequência temporal. Mas é 
inadequada. 
 Máquinas de estados finitos são mais adequadas, pois podemos 
perceber o comportamento do protocolo para cada evento 
envolvido. 
 
 Projeto de protocolo é um problema de engenharia que pode ser 
tratado por meio de técnicas conhecidas. 
 Já existem diversos padrões consolidados na área de engenharia, 
como: 
◦ várias técnicas quem podem ser usadas para codificar os dados binários 
ou sinais analógicos. 
◦ Sincronizar os transmissores e receptores. 
◦ Etc.. 
 Os principais problemas estão relacionados aos projetos de 
redes: 
◦ Roteamento 
◦ Dimensionamento das estruturas envolvidas 
◦ Interconexão de várias redes 
◦ Controles de congestionamento e fluxo 
 Os desafios hoje estão relacionados a criação de um protocolos 
com regras consistentes e erros a ser evitados para a troca de 
informações em sistemas distribuídos. 
 Diante dos novos desafios, busca-se criar ferramentas 
para explorar os novos ambientes e descobrir suas 
possibilidades. 
◦ A ideia é remover restrições em vez de impô-las. 
◦ Vai aprendendo com a “experiência” (erros). 
 Principais desafios: 
◦ Simplicidade 
 Protocolo bem estruturado por um conjunto de “camadas” bem 
elaboradas. 
 Cada camada executa bem, e apenas, a sua função 
 Ter interfaces bem definidas 
 Protocolos concebidos desta forma, são mais fáceis de entender, 
implementar e identificar erros. 
 Modularidade 
◦ Um protocolo que executa um função complexa, pode 
ser construído a partir de módulos menores que 
interagem entre si de forma bem definida e simples. 
◦ Cada módulo menor fica mais simples de ser definido, 
verificado, implementado e mantido. 
 Protocolos bem projetados 
◦ Um protocolo bem elaborado não contém nenhuma parte 
de seu código inacessível ou inexequível. 
 Ex.: A chegada de uma mensagem que o receptor não 
esperava receber, ou não respondê-la. 
◦ Um protocolo bem formado é limitado, não pode se 
referir a outras partes do sistema. 
◦ Auto-estabilizador: se ocorre um erro transitório que faz 
o protocolo alterar seu estado, ele tem capacidade de 
retornar por si só ao seu estado normal. 
◦ O protocolo sempre deverá atingir um dos estados 
destinados em um tempo finito. 
 
 Robusto 
◦ O protocolo deve estar preparado para lidar de forma 
adequada em cada evento possível, sob todas as 
condições possíveis. 
◦ O protocolo deve fazer suposições mínimas apenas do 
seu ambiente para não criar muitas características de 
dependência. 
 
 Consistente 
◦ Existem algumas formas padronizadas em que um 
protocolo pode falhar: 
 Deadlocks: Estado em que nenhuma execução do protocolo 
é possível, pois todos os processos do protocolo estão á 
espera de condições que nunca serão cumpridas. 
 Livelocks: Processos que são executados infinitas vezes, sem 
nenhum tipo de progresso. 
 Terminações impróprias: Términos da execução do 
protocolo sem satisfazer as tarefas necessárias. 
1. O problema deve estar bem-definido. 
2. Defina o serviço antes das estruturas (O quê vem antes de Como). 
3. Projete funcionalidades externas antes das internas (caixa-preta) 
4. Faça-o Simples (KISS) [6]. Fácil de implementar, validar e mais 
eficiente. 
5. Não conecte o que é independente. Separe interesses ortogonais. 
6. Não introduza o que é imaterial. Um bom projeto é “open-ended ”. 
7. Antes de implementar, construa um protótipo e verifique sua 
corretude. 
8. Implemente o projeto, meça sua performance, e se necessário, 
otimize-o. 
9. Teste sua implementação final, se é equivalente ao projeto validado. 
10. Não pule as regras de 1 a 7. 
 
A regra mais violada é a regra 10

Continue navegando