A avaliação prática do framework CodeIgniter é realizada tendo como base uma aplicação já
utilizada no mercado, onde a função é o cadastro de candidato em concursos públicos, a partir de um formulário, conforme os padrões do edital, esta aplicação sofre alterações de pequeno e grande porte para ficar conforme os parâmetros do concurso que será realizado, como não utiliza padrão de desenvolvimento vem a custar um grande tempo para essas customizações, além de gerar problemas de entendimento de métodos utilizados no próprio sistema. A partir destes problemas gerados, o entendimento por parte dos desenvolvedores fica trabalhoso, pela falta de documentação e organização do código fonte, com isso o aproveitamento do código anterior fica reduzido, e consequentemente aumentando o período para finalizar as atualizações.
A segurança da aplicação monolítica é mínima, facilitando ataques maliciosos, e até a inserção de instruções de códigos fontes e inclusões de comandos em banco de dados, por ser tratado de forma diferente cada parte do código, abrindo “brechas” para esta invasão. Comandos para comunicação com banco de dados trazem um problema, pois as consultas, inclusões, alterações e exclusões estão localizadas em todas as partes da aplicação, executando muitas vezes consultas desnecessárias, consequentemente aumentando tempo de resposta da aplicação, com consumo de banda e servidor para processamento.
Com esta avaliação prática, o objetivo é desenvolver um protótipo desta aplicação descrita acima, mas seguindo uma metodologia de desenvolvimento, juntamente com o framework CodeIgniger, verificando dificuldades e facilidades no desenvolvimento de funções especificas em comparação com a anterior sem padronização, a utilização das camadas para testar a segurança dos dados, e verificar com precisão o consumo de tempo das consultas realizadas.
A pouca reutilização de código pela falta de padronização, não utilizando orientação a objetos, traz consigo o problema do entendimento dos códigos básicos dentro da linguagem, como a utilização de funções abreviadas, para inicio do código PHP “<?” e o fim desta camada de código “?>”, onde em uma boa padronização deve ser usado “<?php ... php?>”, assim desenvolvedores iniciantes com a linguagem já visualizam rapidamente a escrita do bloco, bem como a sua interpretação.
A organização do código de forma legível utilizando indentações para cada bloco de código, os comentários em todas as funções da aplicação, ajudam a interpretação de novos desenvolvedores, e em uma posterior manutenção do código.
Portanto é imprescindível utilizar um padrão de projeto ou desenvolvimento, que possa garantir tanto entendimento futuro da aplicação, seja pelo criador do código ou outro programador, mas que permita a fácil atualização e manutenção.
Em aplicações web é essencial refletir sobre a segurança, visto que ela está ligada em uma rede mundial de computadores. Através desta rede é possível que usuários mal intencionados podem tentar fraudar a aplicação. As técnicas utilizadas para evitar fraudes e invasões devem ser implementadas corretamente, em todos os arquivos e páginas. Em uma estrutura de software sem um padrão de desenvolvimento torna-se desgastante a inclusão manual de rotinas de segurança.
Na linguagem PHP é necessário incluir verificação de autenticação do usuário, através de uma sessão junto ao servidor ou um arquivo cookie. Se a aplicação não for estruturada ou não utiliza nenhum framework que faça esta verificação automaticamente, deve-se incluir o código em todos os arquivos. Qualquer página que não possua confirmação da autenticação poderá ser utilizada como brecha para uma possível invasão, como uma extração indevida de informação, ou mesmo uma modificação não autorizada da configuração da aplicação.
Aplicações sem padrões de segurança estão suscetíveis as manipulações não autorizadas de dados. É possível citar a técnica de injeção de comandos SQL (Structured Query Language), onde um indivíduo pode realizar diversas operações indevidas junto ao banco de dados. Está prática pode expor ou sobrescrever informações valiosas, através da inclusão de novos códigos SQL ou a alterações de já existentes na aplicação. Para evitar esta ameaça é necessário sempre validar os dados inseridos, seja em formulários ou através do endereço URL (Uniform Resource Locator), para que não seja possível a interpretação da informação inserida como um comando junto ao banco.
Ataques comuns em aplicações PHP é o Cross-Site Scripting, através da inserção de scripts na página que não tenha padrões de segurança, esse tipo de ataque é frequente em sistemas com formulário, assim introduzindo um script na página, aonde vem a criar que o utilizador desse sistema passe informações de login sem perceber que está no formulário malicioso, repassando assim as informações para terceiros. Pode ocorrer também a inserção de scripts para redirecionar chamadas por métodos GET, assim o usuário também é levado para outro ambiente na web.
Aplicando uma boa padronização para os métodos de segurança, evitando premissas básicas de invasão, a aplicação fica menos vulnerável a ataques maliciosos por parte dos invasores. Os padrões de projeto visam facilitar a reutilização de soluções de desenho, isto é, soluções na fase de projeto do software, sem considerar reutilização de código. MACORATTI (2002).
Antes da criação de qualquer código de lógica ou design é importante termos todos os diagramas necessários para o inicio da identificação dos objetos do sistema, estes devem ser utilizados para a criação de um banco de dados. O CodeIgniter possui compatibilidade nativa com MySQL, PostgresSQL e ODBC (Open Database Connectivity).
Para a conexão entre o framework e o banco de dados é utilizado um único arquivo PHP que configura todas as variáveis necessárias, através de um vetor multidimensional, dentre algumas: usuário, senha, nome da base de dados, driver utilizado dentre outras. Os vetores permitem salvar múltiplas configurações de conexão, através do preenchimento da variável global “active-group”, desta maneira é possível instalar mais de uma base de dados para a aplicação.
De acordo com Upton (2010, p. 220):
“Active record é um padrão de design dentre muitos outros sistemas altamente abstratos como, MVC, que fornecem modelos para a solução de problemas comuns de codificação [...]. Em si, não é o código, é um padrão para o código. Existem várias interpretações diferentes do mesmo. Na sua essência é a criação de uma relação entre o seu banco de dados e os objetos, cada vez que você faz uma consulta, edição ou inserção.”
A abordagem de comunicação com o banco de dados através do padrão Active record possibilita ações junto ao banco de dados através de instâncias dos objetos. A definição de todos os objetos e seus relacionamentos junto ao banco de dados deve ser feito na camada model do modelo MVC. Segundo Macoratti (2002), MVC é um padrão de arquitetura de software. Com o aumento da complexidade das aplicações desenvolvidas torna-se fundamental a separação entre os dados e o layout.
O padrão de projeto é divido entre três principais componentes, que interagem entre si: Model, View e Controller. O modelo (model) é utilizado para manipular todas as ações de estado dos objetos, bem como sua interação diretamente com o banco de dados ou outra fonte de informação, como um arquivo XML (Extensible Markup Language). A visão (view) é responsável em mostrar todo o conteúdo selecionado para o usuário visualizar, possui todo o layout e os scripts que o navegador irá executar no cliente. A controladora (controller) é dedicada para manipular e controlar todo o fluxo de informação entre o modelo e a visão, realiza toda a lógica da aplicação, possui as funções necessárias para decidir onde certa informação deve ser impressa para o usuário.
A utilização do padrão MVC é utilizada nativamente no framework CodeIgniter, criando uma modularização entre camadas. Este isolamento entre partes garante alguns benefícios, como afirma Myer (2008), por causa da separação de três partes do MVC, os desenvolvedores podem criar várias views e controllers para um modelo, sem forçar mudanças no design do modelo. Essa separação permite fácil manutenção, portabilidade e organiza a aplicação.
CodeIgniter framework é uma biblioteca robusta onde vem facilitar a codificação de métodos simples e complexos, assim diminuindo a quantidade de linhas a ser codificadas, com isso o desenvolvedor ganha em tempo e produtividade em suas aplicações, com funções pré-definidas para conexão a banco de dados, métodos para o tratamento de retornos. Possui também um grande conjunto de helpers, onde pode-se dizer que são pequenas bibliotecas de métodos. Desta forma o tempo não é gasto com instruções básicas, e sim com códigos de maior complexidade, assim a solução fica mais robusta sem muito esforço.
Nenhum comentário:
Postar um comentário