Desenvolvimento de aplicações web utilizando separação de preocupações



Documentos relacionados
DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Introdução à Tecnologia Web. Tipos de Sites. Profª MSc. Elizabete Munzlinger

Programando em PHP. Conceitos Básicos

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Desenvolvendo para WEB

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

Desenvolvendo Websites com PHP

Protocolos de Internet (família TCP/IP e WWW) Primeiro Técnico. Prof. Cesar

DESENVOLVIMENTO WEB DENTRO DOS PARADIGMAS DO HTML5 E CSS3

UM NOVO CONCEITO EM AUTOMAÇÃO. Série Ponto

World Wide Web e Aplicações

2 Geração Dinâmica de Conteúdo e Templates de Composição

DWEB. Design para Web. Fundamentos Web I. Curso Superior de Tecnologia em Design Gráfico

18/04/2006 Micropagamento F2b Web Services Web rev 00

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.

Programação e Designer para WEB

UFG - Instituto de Informática

Serviços Web: Introdução

Programação WEB Introdução

Prof.: MARCIO HOLLWEG

Web Design. Prof. Felippe

TECNOLOGIA WEB Aula 1 Evolução da Internet Profa. Rosemary Melo

Entendendo como funciona o NAT

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

BANCO DE DADOS CONTEÚDO INFORMÁTICA. Prof.: MARCIO HOLLWEG BANCO DE DADOS SGBD TABELA CONCEITOS BÁSICOS

CONCEITOS BÁSICOS DE INTERNET. Disciplina: INFORMÁTICA 1º Semestre Prof. AFONSO MADEIRA

CAPÍTULO 2. Este capítulo tratará :

Curso de Aprendizado Industrial Desenvolvedor WEB

ATIVIDADES PRÁTICAS SUPERVISIONADAS

Desenvolvimento de Aplicações Web

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

SIGLA - Sistema Integrado de Gestão Legislativa e Administrativa

XHTML 1.0 DTDs e Validação

Internet. Gabriela Trevisan Bacharel em Sistemas de Infomação

UNIVERSIDADE. Sistemas Distribuídos

10/07/2013. Camadas. Principais Aplicações da Internet. Camada de Aplicação. World Wide Web. World Wide Web NOÇÕES DE REDE: CAMADA DE APLICAÇÃO

UNICE Ensino Superior Linguagem de Programação Ambiente Cliente Servidor.

Programação Web Prof. Wladimir

Aula 1 Cleverton Hentz

Manual SAGe Versão 1.2 (a partir da versão )

CRIAÇÃO DE SITES (AULA 1)

Autoria Web Apresentação e Visão Geral sobre a Web

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma:

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

Introdução ao Modelos de Duas Camadas Cliente Servidor

Implementar servidores de Web/FTP e DFS. Disciplina: Serviços de Redes Microsoft Professor: Fernando Santorsula fernando.santorsula@esamc.

BEM-VINDOS AO CURSO DE ORIENTADO A OBJETOS

Plano de Ensino IDENTIFICAÇÃO. SEMESTRE ou ANO DA TURMA: 3º EMENTA

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Universidade da Beira Interior

Programação para a Web - I. José Humberto da Silva Soares

IplanRio DOP - Diretoria de Operações GIT - Gerência de Infraestrutura Tecnológica Gerente da GIT

Sistemas Distribuídos

3 SCS: Sistema de Componentes de Software

Introdução ao PHP. Prof. Késsia Marchi

Construção de Wiki para a MISTOOL, uma Ferramenta de Aplicação do Método de Inspeção Semiótica

Web Services. Autor: Rômulo Rosa Furtado

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

Sumário. Apresentação O que é o Centro de Gerenciamento de Serviços (CGS) NTI? Terminologia Status do seu chamado Utilização do Portal Web

DESENVOLVIMENTO DE SOFTWARE DE VOTAÇÃO WEB UTILIZANDO TECNOLOGIA TOUCHSCREEN

Aula 4. Objetivos. Conteúdo dinâmico na internet.

Programação para Web Artefato 01. AT5 Conceitos da Internet

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Manual do Visualizador NF e KEY BEST

IV. Intercâmbio Eletrônico de Dados (EDI)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Manual do usuário - Service Desk SDM - COPASA. Service Desk

Agenda Semântica. Grupo: Francisco Rodrigues Júnior Guilherme Daher Ferreira Luana Vieira Morellato Renan Rigo

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

Construção Páginas de Internet

SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Aplicação Prática de Lua para Web

INFORMÁTICA FUNDAMENTOS DE INTERNET. Prof. Marcondes Ribeiro Lima

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo.

Desenvolvimento em Ambiente Web. Prof. André Y. Kusumoto

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

DELEGAÇÃO REGIONAL DO ALENTEJO CENTRO DE FORMAÇÃO PROFISSIONAL DE ÉVORA REFLEXÃO 3

CONSTRUÇÃO DE BLOG COM O BLOGGER

PARANÁ GOVERNO DO ESTADO

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

WebMail Manual do cliente

Conceitos Básicos

4 O Workflow e a Máquina de Regras

Software Adobe DreamWeaver. Requisitos para criar aplicações Web

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Aula 1 Desenvolvimento Web. Curso: Técnico em Informática / 2º módulo Disciplina: Desenvolvimento Web Professora: Luciana Balieiro Cosme

Desenvolvimento Web Protocolos da Internet

Versão /10. Xerox ColorQube 9301/9302/9303 Serviços de Internet

Informática I. Aula 6. Aula 6-12/09/2007 1

Web Design Aula 01: Conceitos Básicos

REDES DE COMPUTADORES

Transcrição:

Daniel Delatorre Vanzin Desenvolvimento de aplicações web utilizando separação de preocupações Monograa apresentada ao programa de Bacharelado em Ciências da Computação da Universidade Federal de Santa Catarina como requisito parcial para obtenção do grau Bacharel em Ciências da Computação Orientador: Professor Dr. Raul Sidnei Wazlawick Universidade Federal de Santa Catarina Centro Tecnológico Florianópolis SC 2005

Daniel Delatorre Vanzin Desenvolvimento de aplicações web utilizando separação de preocupações Florianópolis SC 2005

Monograa de graduação sob o título Desenvolvimento de aplicações web utilizando separação de preocupações, defendida por Daniel Delatorre Vanzin e aprovada em XX de xxxxxx de 2005, em Florianópolis, Santa Catarina, pela banca examinadora constituida pelos doutores: Prof. Dr. Raul Sidnei Wazlawick Orientador Prof. Dr. Leandro José Komosinski Universidade de Santa Catarina Prof. Dr. Ricardo Pereira e Silva Universidade de Santa Catarina

Resumo Escreva aqui o texto de seu resumo..., seguido de palavras chave!!

Abstract Write here the English version of your `Resumo'...

Sumário Lista de abreviaturas e siglas Lista de símbolos 1 Introdução p. 8 1.1 Objetivo................................... p. 8 1.1.1 Tema................................. p. 8 1.1.2 Objetivo Geral........................... p. 8 1.1.3 Objetivos Especícos........................ p. 8 1.2 Metodologia................................. p. 9 1.2.1 Método de abordagem....................... p. 9 1.2.2 Métodos de procedimento..................... p. 9 1.3 Objeto.................................... p. 10 1.3.1 Hipótese Básica........................... p. 10 1.3.2 Hipóteses Secundárias....................... p. 10 1.4 Justicativa................................. p. 10 1.5 Resultados esperados............................ p. 11 1.6 Limitações do trabalho........................... p. 11 2 Programação Web p. 12 2.1 World Wide Web, uma rede de alcance mundial............. p. 12 2.1.1 A arquitetura cliente/servidor................... p. 12 2.1.2 Servidores Web e servidores de aplicação............. p. 13

2.1.3 Páginas estáticas e páginas dinâmicas............... p. 13 2.1.3.1 Processamento de páginas estáticas........... p. 14 2.1.3.2 Processamento de páginas dinâmicas.......... p. 14 2.1.4 Sites e aplicações web....................... p. 16

Lista de abreviaturas e siglas

Lista de símbolos

8 1 Introdução 1.1 Objetivo 1.1.1 Tema Desenvolvimento de aplicações web 1.1.2 Objetivo Geral Demonstrar as vantagens da aplicação do conceito de separação de preocupações no desenvolvimento de aplicações web. 1.1.3 Objetivos Especícos Apontar ferramentas, linguagens e serviços utilizados para a chamada programação web. Descrever as principais linguagens de programação e marcação utilizadas em aplicações web. Desenvolver uma aplicação web aplicando um método de análise orientada a objetos baseado no Processo Unicado para a criação de aplicações desktop tradicionais, constatar o que não funciona para esse tipo de aplicação e sugerir alternativas. Demonstrar os benefícios que podem ser alcançados com a utilização de XML e XSL com relação à separação de preocupações. Comparar as diferentes arquiteturas de software utilizadas para a criação de aplicações web, em especial a separação de preocupações com o MVC Modelo 2. Debater sobre as vantagens da adoção de linguagens ociais da web, como denidas pelas especicações da W3C, em contraste com a utilização de linguagens criadas

9 por grupos liados a outras organizações. Avaliar as diferentes alternativas de linguagens de transformação baseadas no XSL, como o Freemaker, NiceXsl e o EXSL. 1.2 Metodologia 1.2.1 Método de abordagem Será utilizado o método argumentativo, utilizando-se de argumentos e não necessariamente de fatos para alcançar os objetivos do trabalho. 1.2.2 Métodos de procedimento O trabalho irá inicialmente denir importantes termos relacionados a programação web. Palavras utilizadas de forma incorreta serão esclarecidas e será estabelecido uma denição para aquelas que não possuem consenso quanto a seu signicado. Seguindo a denição de termos, será discutido as características das aplicações web que a tornam diferentes de aplicações comuns. Serão abordados os desaos de programar para um protocolo sem estados, e como as linguagens dinâmicas entram em cena para ajudar. Na próxima parte o foco principal do trabalho, a separação de preocupações, será tratada. Serão identicadas quais são as preocupações envolvidas nas aplicações web e como elas vem sendo tratadas. Essa é a parte onde serão descritas as principais ferramentas utilizadas no desenvolvimento de aplicações web, e como elasse relacionam com os princípios da separação de preocupações. Frameworks serão analisados e um deles será escolhido para uso na criação da apli cação que será usada como caso de estudo. O framework escolhido terá seu funcionamento detalhado. Na última etapa do projeto, será aplicado um método de análise e projeto orientado a objetos para a criação de uma aplicação web. O processo de desenvolvimento da aplicação será descrito e alterações serão sugeridas nas partes em que o método não for eciente em se tratando de uma aplicação web.

10 1.3 Objeto 1.3.1 Hipótese Básica É possível reduzir os custos de gerenciamento, aumentar a produtividade, facilitar a manutenção e reduzir o tempo de desenvolvimento de aplicações web se aplicado o conceito de separação de preocupações. 1.3.2 Hipóteses Secundárias 1. Apesar de alguns programadores conseguirem gerenciar a divisão entre conteúdo e interface com o usuário, tal feito é conseguido apesar da tecnologia utilizada, não por causa dela. 2. O resultado nal de uma aplicação web terá melhor qualidade se cada área de preocupação da aplicação for desenvolvida por um prossional especializado na área em questão. 3. O processo de desenvolvimento de uma aplicação web será mais rápido se diferentes equipes puderem trabalhar concomitantemente. 4. O trabalho de correção de problemas ou atualização de conteúdo ou funcionalidades ca mais fácil quando a área em questão pode ser alterada sem afetar as demais. 5. A tarefa de dividir e coordenar diferentes grupos trabalhando no mesmo projeto é facilitada se as áreas de preocupação forem identicadas e bem denidas. 6. O esforço de controle e coordenação dos grupos de trabalho é reduzido signicativamente quando cada grupo tem bem denido o que deve fazer, e sua atividade independe do trabalho dos demais grupos. 7. A falta de comprometimento com a adoção de padrões no desenvolvimento de aplicações web traz problemas de compatibilidade com outras aplicações. 1.4 Justicativa O uso de separação de aplicações facilita a divisão de grupos de trabalho para o desenvolvimento de aplicações. Cada grupo pode ser formado por pessoas com habilidades comuns, especialistas em sua área. Os grupos também podem trabalhar ao mesmo tempo,

11 contanto que a denição das atividades de cada um seja bem estabelecida para que não ocorra interferência no trabalho de um grupo com outro. Logo é preciso saber coordenar adeqüadamente o trabalho. Em métodos ad hoc que predominam na Web, todo trabalho relativo ao desenvolvimento de uma aplicação web é delagado a uma única pessoa. Esse prossional precisa ter um conhecimento técnico amplo para poder lidar com as diferentes áreas de preocupação envolvidas no processo, as quais muitas sequer são identicadas. Logo, a mesma pessoa encarregada da programação da aplicação é a responsável pela inserção de novo conteúdo, ganhando o mesmo salário para isso. Apesar de diferentes, aplicações web não necessitam de uma abordagem completamente novade desenvolvimento. As mesmas técnicas que vem sendo utilizadas nos últimos anos de análise e projeto de sistemas podem ser empregadas, com algumas pequenas alterações. O escopo deste trabalho também cobre o estudo de algumas destas alterações. 1.5 Resultados esperados Obter um método que garanta a maior separação de preocupações possível. 1.6 Limitações do trabalho A quantidade de ferramentas (em especial frameworks) existentes para criação de aplicações web são enormes. Serão abordadas apenas três ou quatro das mais importantes e mais utilizadas. Também não serão analisadas muitos métodos de análise e projeto de aplicações web, pois aqueles que valem a pena serem vistos baseiam-se em métodos de desenvolvimento de software que já vem sendo utilizados há anos.

12 2 Programação Web 2.1 World Wide Web, uma rede de alcance mundial Quando Tim Berners-Lee escreveu em 1989 uma proposta como solução para os problemas de colaboração entre os pesquisadores do laboratório onde trabalhava, jamais poderia imaginar nas proporções de seu sucesso. The World Wide Web is the universe of network-accessible information, an embodiment of human knowledge.- Tim Berners-Lee. Ela é uma parte da Internet, muitas vezes sendo confundida como seu sinônimo. A Internet é uma rede física formada por computadores e cabos, enquanto a WWW é um espaço abstrato formado por documentos e links de hipertexto. 1 A Web, como também é conhecida, usa a metáfora páginas"para a organização de informação. O conteúdo das páginas web podem aparecer na forma de texto, hyperlinks, grácos, vídeos, sons e animações. Uma página web pode ser acessada através de seu endereço único na Web, chamado de Uniform Resource Locator (URL). 2.1.1 A arquitetura cliente/servidor A Web gira em torno do modelo cliente-servidor, uma arquitetura de rede na qual cada computador na rede age como um cliente ou um servidor. Um computador cliente é aquele que executa uma aplicação cliente, como um navegador web, que interage com um servidor web, uma aplicação em execução no computador servidor, para a exibição de páginas. A interação cliente-servidor acontece através de um conjunto de instruções chamado de protocolo. Protocolos ajudam na transferência de dados entre computadores. Existem muitos protocolos na Internet. A Word Wide Web utiliza o HyperText Transfer Protocol 1 Um documento que um clique em alguma parte dele encaminhara o usuário para outro documento ou outra parte do mesmo documento

13 (HTTP) para realizar a comunicação entre computadores na Internet. Ele simplica a ecrita de endereços e automaticamente busca a Internet pela URL indicada e chama a página para visualização. O HTTP funciona com base num ciclo de requisição-resposta. Quando um computador cliente faz uma requisição por uma página, ele envia uma mensagem ao computador servidor. Um vez recebida essa mensagem, o computador servidor processa seu conteúdo e gera uma mensagem que será enviada como resposta para o cliente. O cliente interpreta a resposta e exibe a página para a aplicação que a requisitou, geralmente, um navegador web. Uma requisição deve sempre ser acompanhada de uma resposta, e o ciclo é sempre iniciado pelo cliente, nunca pelo servidor. 2.1.2 Servidores Web e servidores de aplicação Um servidor web é um programa que serve arquivos em resposta a requisições de navegadores web. As vezes, é chamado de servidor HTTP. Servidores web comuns incluem Microsoft Internet Information Server (IIS), Netscape Enterprise Server, Sun ONE Web Server, e Apache HTTP Server. Existem inúmeros serviços de hospedagem de páginas que possuem servidores web instalados. Se um desses serviços não for utilizado, é possível instalar o servidor na máquina local ou em uma máquina remota. Servidores web trabalham com um servidor de aplicações, que ajudam ele a processar páginas dinâmicas. O servidor de aplicação a ser utilizado depende da tecnologia a ser utilizada (ColdFusion, ASP.NET, ASP, JSP, ou PHP), do servidor web escolhido(.net Framework só trabalha com IIS 5 ou maior, por exemplo) e também do orçamento disponível. Um servidor de aplicação popular e gratuíto é o Jakarta Tomcat. A gura 2 mostra alguns servidores de aplicações e as tecnologias que suportam. 2.1.3 Páginas estáticas e páginas dinâmicas Páginas web são classicadas em dois tipos de acordo com o estado de seu conteúdo no momento em que são acessadas. Se o conteúdo já está denido são chamadas de páginas estáticas. Quando o conteúdo está parcialmente ou inteiramente indeterminado são chamadas de páginas dinâmicas. Páginas estáticas são alteradas sempre que seu conteúdo é modicado, enquanto pá-

14 Figura 1: Exemplos de servidores de aplicações e as tecnologias que suportam ginas dinâmicas podem apresentar um conteúdo distinto a cada vez que são visualizadas. O conteúdo pode ser alterado de uma requisição para outra de acordo com as ações do usuário. 2.1.3.1 Processamento de páginas estáticas Páginas estáticas não mudam quando são requisitadas. Quando o servidor web recebe uma requisição por uma página estática, o servidor lê a requisição, encontra a página e envia ela para o navegador que a requisitou. Esse processo pode ser visto na gura 2. As linguagens de marcação (markup languages) como a HTML e a XHTML são utilizadas para a criação deste tipo de páginas. 2.1.3.2 Processamento de páginas dinâmicas Páginas dinâmicas são modicadas pelo servidor antes de serem enviadas para o navegador que as requisitou. Quando um servidor web recebe uma requisição por uma página dinâmica, ele passa a página para um servidor de aplicação que será responsável por terminar ela. O servidor de aplicação lê o código na página e substitui ele de acordo com as instruções nele contidas. O resultado é uma página estática que o servidor de aplicação devolve para o servidor web, que então envia a página para o programa cliente. A gura 3 mostra uma visão do processo. As linguagens utilizadas para a criação deste tipo de páginas adicionam scripts ou

15 Figura 2: Processamento de páginas estáticas Figura 3: Processamento de páginas dinâmicas

16 tags ao código estático da página para torná-la dinâmica. Quando o código é visualizado, a linguagem aparece embutida com o código estático, sendo por isso conhecidas como linguagens de programação embutidas. Exemplos incluem a ColdFusion Markup Language (CFML), JavaServer Pages (JSP), Active Server Pages(ASP), Hypertext Preprocessor (PHP), JavaScript e VisualScript. 2.1.4 Sites e aplicações web Web sites são conjuntos de páginas web ligadas umas com as outras. Eles correspondem a uma representação virtual de interesses ou produtos das pessoas ou empresas responsáveis por sua criação. Quando um web site oferece funcionalidades além de apenas conteúdo, ele é chamado de uma aplicação web. Uma aplicação é um programa de computador projetado para uma tarefa ou uso especíco. Aplicações web utilizam um site web como interface gráca para uma aplicação mais típica. Em uma aplicação web dados de entrada do cliente executam lógica de negócios no servidor. Pelo fato de sua execução envolver dois (ou mais) computadores conectados em uma rede, uma aplicação web é também uma aplicação distribuída. O contrário não é verdade no entanto, uma vez que aplicações web utilizam apenas o protocolo HTTP para comunicação. A distinção entre um site web e uma aplicação web pode ser bastante nebulosa. Uma armação de que sites web possuem apenas conteúdo estático implicaria em dizer que qualquer página com um contador de visitantes é uma aplicação web. Baxley 2 sugere duas propriedades presentes apenas em aplicações web: Relação um-para-um - aplicações web estabelecem uma sessão e relacionamento únicos com cada visitante. Como elas exigem algum tipo de identicação do usuário, é possível que a aplicação seja dinamicamente alterada de um usuário para outro. Isto pode tomar a forma de conteúdo ou funcionalidades personalizados, baseado em papéis e privilégios. Habilidade de mudar dados permanentemente - aplicações web permitem usuários a criar, manipular, e permanentemente guardar dados. Tal dados podem assumir a forma de transações de vendas completadas, registros de recursos humanos, ou mensagens de email, para citar apenas algumas. 2 citação

17 Aplicações web que possuem ambas características necessariamente contém algum grau de comportamento, lógica e estado, carentes em sites web tradicionais baseados em conteúdo. O grau de complexidade presente nessas aplicações é que irá decidir se há necessidade de aplicar conceitos avançados de análise e projeto de sistemas. A denição adotada por Baxley no entanto, não é muito precisa. Um aplicativo de calculadora não satisfaz nenhuma das exigências, no entanto é uma aplicação, que pode ter sua interface tanto na Web quanto no desktop. Uma outra diz que web sites são formados por páginas cujo conteúdo já está denido no momento de seu acesso. Devido ao conteúdo passar para o usuário sem nenhuma mudança essas páginas são chamadas de estáticas. Aplicações web contém páginas com conteúdo parcialmente ou inteiramente indeterminado. O conteúdo nal é determinado somente quando o visitante requer uma página do servidor web. Devido a mudança de conteúdo de uma requisição de acordo com as ações do usuáro essas página são chamadas de dinâmicas. Essa denição de associação feita com páginas dinâmicas e páginas estáticas é mais especíca, mas também não é a mais adequada. De acordo com ela, uma página simples contendo apenas algum texto e um contador de visitantes ou a data atual pode ser considerada uma aplicação web. Doravante será utilizado uma combinação de ambas as denições para designar uma aplicação web. Qualquer aplicação tradicional de desktop, como uma calculadora, que possua uma interface web é uma aplicações web, assim como sites que apresentarem um grau mínimo de comportamento, lógica e estado. Server-side vs. Client-side scripting What distinguishes PHP from something like client-side JavaScript is that the code is executed on the server. If you were to have a script similar to the above on your server, the client would receive the results of running that script, with no way of determining what the underlying code may be. You can even congure your web server to process all your HTML les with PHP, and then there's really no way that users can tell what you have up your sleeve.