código belo vs. legado e qualidade de software

Documentos relacionados
arquitetura shared-nothing em 3 camadas

Protocolo HTTP. Professor Leonardo Larback

Estruturas de Comunicação de Dados Aula 3 Camadas de Aplicação e Transporte

Prof. Marcelo Cunha Parte 6

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

Camada de Aplicação da Arquitetura TCP/IP

modelos, bancos de dados e active record

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Redes de Computadores

Aula 1 Cleverton Hentz

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão

Programação para Internet

Modelo TCP/IP. Douglas Wildgrube Bertol DEE - Engenharia Elétrica CCT

Introdução à Computação

Redes de Computadores

Níkolas Timóteo Paulino da Silva Redes de Computadores I ADS 2ºTermo

Prof. Samuel Henrique Bucke Brito

Arquiteturas de Redes de Computadores Os Modelos RM-OSI e TCP/IP. Prof. M.e Helber Wagner da Silva

Desenvolvimento de Aplicações Distribuídas

Funcionalidade e Protocolos da Camada de Aplicação

Introdução a Redes e a Internet. Introdução ao Computador 2010/01 Renan Manola

Conceitos Básicos

Capítulo 7. A camada de aplicação

Desenvolvimento de Aplicações Distribuídas

Protocolos de Rede. Protocolos em camadas

Capítulo 2. Camada de aplicação

Arquitetura de Rede. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina: Redes de Computadores I

Protocolos e Serviços de Redes

Protocolos e Serviços de Redes

TRANSPORTE. Prof. Me. Hélio Esperidião

Arquitetura da World Wide Web. WWW: Histórico. WWW: Usos. WWW: Histórico. WWW Tecnologias Fundamentais. Comércio Eletrônico na WWW

Protocolo HTTP. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 22

Aula Prática de Redes Industriais Wireshark

INTRODUÇÃO ÀS APLICAÇÕES PARA WEB

Redes de Computadores

SERVIÇOS WEB. Frankley Gustavo F. Mesquita, Tamiris Souza Fonseca. 27 de junho de 2016

ATENÇÃO O TCP/IP não é um protocolo. TCP/IP é um conjunto de diversos protocolos em 04 camadas próprias que se relaciona com o modelo OSI.

M V C P R O F. M E. H É L I O E S P E R I D I Ã O

Funções da. Os principais serviços oferecidos pela camada de transporte são: Controle de conexão, Fragmentação, Endereçamento e Confiabilidade.

REDES DE COMPUTADORES

CST em Redes de Computadores

Construção de Sites. Introdução ao Universo Web. Prof. Nícolas Trigo

Sistemas de Informação (SI) Telecomunicações, Internet e tecnologia sem fio (I)

Redes de Computadores. Prof. Msc André Y. Kusumoto

Camada de Aplicação. Redes Industriais Prof. Rone Ilídio

Redes de Computadores

>>> RESTful API >>> Com Node.js e Restify. Name: Anderson Pimentel Date: 19 de Março de

DESCONTOS DE ATÉ 50%

Resumo. Redes de Computadores. História da Internet. História da Internet. História da Internet. História da Internet

Protocolos e Arquiteturas de Redes. Thiago Leite

Redes de Computadores e Internet

Internet. Geanderson Esteves dos Santos IC (2018/02) Pontifícia Universidade Católica de Minas Gerais Instituto de Ciências Exatas e Informática

SISTEMAS OPERACIONAIS DE REDE

Arquitetura da Internet TCP/IP

Desenvolvimento Web. Introdução Geral. Prof. Vicente Paulo de Camargo

INTERNET P R O F. M A R C O A N T Ô N I O PROF. MARCO ANTÔNIO

PTC Aula Web e HTTP 2.3 Correio eletrônico na Internet 2.4 DNS O serviço de diretório da Internet

Introdução a Web. Programação para a Internet. Prof. Vilson Heck Junior

Redes de computadores e a Internet. Redes de computadores e a Internet. Prof. Gustavo Wagner. Capítulo 3. Camada de transporte

Capacitação IPv6.br. Serviços em IPv6. Serviços rev

Política de Privacidade Este aplicativo coleta alguns dados pessoais de seus usuários. Resumo

INTRODUÇÃO À INTERNET E À WORLD WIDE WEB

envolvidos numa comunicação

CURSO TÉCNICO EM INFORMÁTICA

REDES DE COMPUTADORES

MANUAL DE INSTALAÇÃO E PROGRAMAÇÃO CONVERSOR - IP / USB / SERIAL RV1

Capítulo 4 - Sumário

Redes de comunicação. Mod 2 Redes de computadores. Professor: Rafael Henriques

Redes de Computadores. Protocolos de Internet

Programação para Web

TESTES DE SOFTWARE Lista de Exercício 02. Luiz Leão

Modelo de Referência TCP/IP

EA975 - Laboratório de Engenharia de Software

Informática Questões Aulas 08, 09 e 10 Prof. Márcio Hunecke

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

UMG 50. Principais Características. Aplicações Típicas. Visão Geral USER MEDIA GATEWAY E1 E VOIP. Do tamanho da sua empresa

PTC Aula Princípios das aplicações de rede 2.2 A Web e o HTTP. (Kurose, p ) (Peterson, p ) 21/03/2017

Arquitetura TCP/IP Nível de Aplicação (HTTP, SMTP, FTP & DNS) Prof. Helber Silva

Transmissão e comunicação de dados. Renato Machado

: TMS M

Aplicação de rede. GA-027 Redes de Computadores. Camada de Aplicação. Artur Ziviani LNCC/MCT. Execução nos sistemas finais com comunicação via rede

Prof RG Crespo Criptografia e Segurança das Comunicações. Introdução à segurança de protocolos. Pilha de protocolos (1)

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

Redes de Computadores e Telecomunicações - Camada de Transporte

Redes de Computadores I. Sockets e Arquitetura HTTP

Eduardo Barasal Morales Tiago Jun Nakamura Maputo, Moçambique 18/07/17-21/07/17

Consultor de TI Instrutor Cisco CCNA Analista de Sistemas Especialista de TI Pai do Miguel

Redes de Computadores. Protocolos TCP/IP

Serviços de Comunicações Capítulo 3

IESGO Redes de Computadores I

software as a service (saas) e service-oriented architecture (soa)

Instalação e Configuração de Servidores Linux Server Configuração de Rede. Prof. Alex Furtunato

POLÍTICA DE PRIVACIDADE

Protocolo HTTP. - Características. - Modelo Requisição/Resposta. - Common Gateway Interface (CGI)

Agenda. Motivação Serviços Funcionalidades Básicas DNS NTP Servidores HTTP Proxies SMB CIFS ( SAMBA )

Conceito de Serviço Universal. Conceito de Serviço Universal. Arquitetura de uma internet. Hardware básico de uma internet. Serviço universal:

Fundamentos de Redes de Computadores Modelo de Referência ISO/OSI

Transcrição:

código belo vs. legado e qualidade de software engenharia de sistemas de informação Daniel Cordeiro 22 de agosto de 2017 Escola de Artes, Ciências e Humanidades EACH USP

pergunta Em geral, qual afirmação sobre a relação entre os custos de consertar bugs no software e de melhorar o software é a mais precisa? $(Consertar um bug) 2 $(Melhorar) $(Consertar um bug) $(Melhorar) $(Melhorar) 2 $(Consertar um bug) $(Melhorar) 2 4 $(Consertar um bug) 1/16

manutenção vs. desenvolvimento: gasto com ti pelo governo dos eua em 2010 2017 Figura 1: Fonte: Government Accountability Office (GAO) report GAO-16-696T, Federal Agencies Need to Address Aging Legacy Systems, Testimony Before the Committee on Oversight and Government Reform, House of Representatives. Publicado em 26 de maio de 2016. 2/16

código legado vs. código belo Código legado: software antigo que continua a satisfazer as necessidades do cliente, mas que é difícil de evoluir devido a um projeto deselegante ou tecnologia antiquada 60% do custo de manutenção do software causado pela adição de novas funcionalidades a código legado 17% do custo é usado na correção de bugs Problema vital mas ignorado na maioria dos cursos de ES Diferente de código belo: satisfaz o cliente e é fácil de evoluir 3/16

qualidade de software Qualidade do produto (em geral): adequação para o uso Valor de negócio para o cliente && para o fabricante Garantia de qualidade: processos/padrões Qualidade do software: 1. Satisfaz as necessidades do cliente: facilidade de usar, dá as respostas corretas, não para de funcionar (crash), etc. 2. É fácil de ser depurado e melhorado pelos desenvolvedores Software QA: garante a qualidade e melhora os processos na organização do software 4/16

garantias Verificação: você construiu a coisa da maneira certa? você seguiu a especificação? Validação: você construiu a coisa certa? era isso o que o cliente queria? a especificação estava certa? Hardware: geralmente foca a verificação Software: geralmente foca a validação Testes garantem a Qualidade do Software 5/16

testar exaustivamente é impraticável Dividir para conquistar: realize testes diferentes em cada fase do desenvolvimento do software o nível superior não refaz os testes do nível inferior Cobertura: várias medidas que indicam o quanto do código foi exercitado pelo conjunto de testes Tipos de testes Teste de sistema ou aceitação verifica se o programa integrado cumpre a especificação Teste de integração verifica se as interfaces entre diferentes unidades tem as mesmas hipóteses; se elas se comunicam corretamente Módulo ou teste funcional verifica diversas unidades individuais Teste de unidade verifica se um único método faz aquilo que é esperado 6/16

pergunta Qual afirmação não é verdadeira sobre testes? Testes que não são mais tão úteis devem ser descartados Mesmo que seja difícil conseguir, uma cobertura de 100% garante que o código está correto Testes de alto nível normalmente delegam testes mais detalhados para os níveis mais baixos Testes de unidade trabalham dentro de uma única classe e testes funcionais trabalham com várias classes 7/16

a arquitetura de aplicações saas

2.1 100.000 pés Cliente-servidor (vs. P2P) 2.2 50.000 pés HTTP e URIs 2.3 10.000 pés XHTML e CSS 2.4 5.000 pés Arquitetura de 3 camadas Escalabilidade horizontal Navegador (Firefox, Chrome...) css html Internet Servidor Web (Apache, Microsoft IIS, WEBrick) Camada de Apresentação Servidor de Aplicação (rack) Site rottenpotatoes. com Camada Lógica Banco de Dados (Postgres, SQLite) Camada de Persistência 2.5 1.000 pés Model-View-Controller (vs. Page Controller, Front Controller) Modelos Controladores Visões 2.6 500 pés: Modelos Active Record (vs. Data Mapper) 2.7 500 pés: Controladores REST (Representational State Transfer para ações auto-contidas) 2.8 500 pés: Template View (vs. Transform View) Active Record REST Template View Data Mapper Transform View 8/16

visão de 100.000 pés A web segue uma arquitetura cliente servidor Processos fundamentalmente orientados a requisições resposta 9/16

protocolos tcp/ip Endereços IP (Internet Protocol) identificam uma interface física de rede com quatro octetos (200.144.183.244, 32 bits) ou com oito grupos de quatro dígitos hexadecimal (2001:12d0:c000:91::41, 128 bits) o endereço especial 127.0.0.1 (0:0:0:0:0:0:0:1) aponta para este computador, chamado de localhost, mesmo se não estiver conectado a Internet! TCP/IP (Transmission Control Protocol / Internet Protocol) IP: não há garantias, pacotes são enviados tão bem quanto possível (best-effort) de um endereço IP para outro TCP: torna o IP confiável ao detectar problemas no envio de pacotes (que não chegaram, que chegam fora de ordem, erros de transmissão, lentidão na rede, etc.) e se recuperar desses problemas Portas TCP permitem múltiplas aplicações TCP no mesmo computador 10/16

visão de 100.000 pés A web segue uma arquitetura cliente servidor Processos fundamentalmente orientados a requisições resposta DNS (Domain Name System) é outro tipo de servidor que mapeia nomes a endereços IP 11/16

hypertext transfer protocol Protocolo ASCII de requisição resposta para transferência de informação na Web Requisições HTTP incluem: método de requisição (GET, POST, etc.) Uniform Resource Identifier (URI) versão do protocolo HTTP entendida pelo cliente cabeçalhos informação extra referente à requisição Resposta HTTP do servidor: versão do protocolo & código de status cabeçalhos da resposta corpo da resposta Códigos de status HTTP 2xx tudo ocorreu bem 3xx o recurso foi movido 4xx problema no acesso 5xx erro no servidor 12/16

pergunta Assumindo que > significa depende de, qual afirmação não é correta? 1. DNS > IP 2. HTTP > TCP > IP 3. TCP > DNS 4. Todas estão corretas 13/16

cookies Obs: HTTP é stateless Problema antigo: como guiar um usuário através de uma sequência de páginas? usar o IP para identificar o usuário? Ruim, usuários compartilham um mesmo IP em uma rede compartilhada embutir informação do usuário na URI? Ruim, quebra os caches Rapidamente substituído por cookies; assista: http://screencast.saasbook.info Arcabouços como o Rails gerenciam a adulteração de cookies para você 14/16

usos de cookies A maioria dos sites perceberam que manter um estado para cada usuário poderia ser útil para muitas coisas: personalização ( My Yahoo! ) rastreamento de clicks/fluxo autenticação (logado ou não) Quais desses podem ser implementados no lado do usuário? Quais não devem ser e por quê? Regra de ouro: não confie no cliente! Deve ser possível identificar alterações nos cookies 15/16

pergunta Um(a) pode criar e modificar cookies; o(a) é responsável por incluir o cookie correto em cada requisição 1. Navegador / app SaaS 2. app SaaS / navegador 3. requisição HTTP / navegador 4. app SaaS / resposta HTTP 16/16