PROGRAMAÇÃO WEB - PARTE 1
Autor: Ciência da Computação - JokerHat | Publicado: 2016-03-09T02:07:00-03:00






Segundo estatísticas tobguarani (2015), o Brasil é o 5º país com maior numero de conexões à internet do mundo e tem margens de ter ultrapassado o Japão. Dados fomentam que o numero de brasileiros conectados à internet subiu de 27% para 48% entre 2007 e 2011.&nbsp;

Compreende-se 87% dos brasileiro acessam a internet pelo menos uma vez por semana e esse número parece crescer com a entrada da classe C para o club dos internautas devido a facilidade de se conseguir hoje um dispositivo computacional capaz de ter acesso à internet. O numero de horas gasto na internet chegou à marca de 69 horas por pessoa em registros de 2011.

Em 2008 foram gastos 82,2 bilhões em compras on-line. Em 2009, mesmo com a crise, foram gastos 10,6 bilhões. Em 2010 fechou com 14,8 bilhões. E em 2012 foram gastos 22,5 bilhões. Esse valores compreendem 20% dos usuários brasileiros sendo 69% não consideram a compra on-line segura e 26% não confiam na qualidade do produto.A internet tem se tornado o maior veículo de alcance depois do rádio, onde 87% dos usuários usam a rede para buscar produtos e serviços sendo 70% buscam opiniões e sugestões online.



No mundo o numero de computadores tem a tendência de dobrar chegando a mais de 2 bilhões. Segundo estatística, cerca de 500 mil pessoas por dia no mundo chegam pela primeira vez a ter acesso à internet. A cada segundo um novo blog é criado e cerca de 70% das pessoas no mundo acham a internet indispensável. Hoje, na internet, existem mais de 174 milhões de sites.
A web é um mercado promissor. Devido ao seu grande alcance de pessoas, 
mercados podem ser consolidados na rede. Um breve busca no Google, lhe 
da uma margem de maneiras de capitalizar com venda de produtos e 
serviços na rede.&nbsp;

Estar na rede hoje é fazer parte do mundo 
principalmente para as empresas, que buscam serem conhecidas por um 
numero ilimitado de pessoas aumentando, sem procedentes, suas chances de venda.&nbsp;





INTRODUÇÃO



Ao acessar um site (ou sítio) na internet como este blog, o que você imagina estar envolvido? Lhe passa algo remoto nos pensamento que lhe dê uma margem de como tudo isso é feito?

Os agentes para o desenvolvimento de soluções para web envolvem, basicamente:

1. Web Design: profissional voltado ao desenvolvimento de layouts, ou a parte visual de um site que envolve: identidade visual - compreende tudo que identifica a marca de um produto, que neste caso é um site, como ícones e logomarca; o modelo gráfico da página web. A percepção da interação entre humano computador (IHC) é um diferencial de um bom profissional, as técnicas mais atuais são UI e UX; o conhecimento em linguagem de marcação de texto (HTML) e cascading style sheets (css) e programação script (javascript) são o suficiente para se criar layouts para páginas web em bootstrap que nada mais é que uma conversão da imagem gráfica para a linguagem entendida pela web. Este é o motivo de estar envolvido conhecimentos em informática ao publicitário.

Entre as ferramentas utilizadas por web designers, destacam-se pacotes gráficos e uma IDE de desenvolvimento web que permita a edição do html, css e javascript. Entre muitas destacam-se o pacote da Adobe Reader, são os preferidos desses profissionais.

Existe um estudo envolvido no desenvolvimento de um bom layout além da IHC, como fatores de publicidade e propaganda principalmente na criação da identidade visual a qual demanda criatividade para atingir a necessidade da comunicação necessária e visual da mensagem da empresa para o usuário.

Não confunda Web Designer com profissionais em publicidade e propaganda. Existe algo em comum, porém, foco diferente.



O
 profissional em publicidade e propaganda ou publicitário é 
importantíssimo para prover toda a imagem publicitária da empresa como 
folders, banners, cartilhas, panfletos, apostilas, manuais, uniformes, 
etc, tudo que é relacionado à comunicação visual da missão da empresa 
com o usuário.

O
 web designer tem a mesma ideologia contudo voltado à edição de layouts 
para web ampliando seu conhecimento em publicidade com linguagens de marcação e script,
 as quais entram na área de informática.

Em resumo, o web design é responsável por criar a apresentação ou a imagem do produto e/ou empresa ao público. E segundo os especialistas, é o que vende.




2. Programador Web: profissional voltado ao desenvolvimento de tecnologias para web, ou a parte que não é visual de um site, o código fonte. Em outras palavras, para todo o funcionamento do site como o esperado, o responsável é o programador.
Nesta área a criatividade fica em segundo plano dando margens ao raciocínio lógico. Esse profissional precisa criar (desenvolver) soluções para determinado problema encontrado que viabilize uma solução. Quanto maior conhecimento em determinada linguagem e nos processos atuais de viabilidades providos por novas tecnologias, mais rápido são suas soluções e maior o nível de qualidade do produto final. Embora o termo qualidade se destaca por controles aplicados à políticas da empresa com boas práticas no desenvolvimento de softwares e segurança dos produtos e agentes envolvidos nos processos. Quanto maior o conhecimento do programador, a capacidade de aprendizagem, e a maneira como lida com os problemas é um grande diferencial nesta área.

Hoje, em geral, as empresas cobram mais proatividade, ou seja, além de você ficar parado esperando as coisas acontecerem, aquele que oferece uma solução de prontidão ou que reaja ao que pode ser melhorado no ambiente de trabalho quanto na corporação, é um dos diferencias que buscam. Caso for um, é provável que você ganhe alguma promoção pela sua ética. 

As duas área trabalham de forma independente, são parte de uma equipe que pode ser compreendida pelo: o gerente de desenvolvimento, com especialização em gerencia de TI, possui conhecimentos para gerenciar uma equipe de desenvolvimento de software e manter o sistema funcionando; analistas de sistemas com o objetivo de prover as necessidades suficientes para atender as especificações do software, que neste caso é a web. Dependendo do projeto, como o processamento de imagem, é necessário provedores com capacidade de processamento viável. Isso não é trabalho de um programador e sim de um analista de sistemas. Além disso, ele também é o responsável pela documentação do projeto e por sua estruturação. A linguagem que usam geralmente é a UML (a qual o programador usa para programar); o publicitário fornecendo o conteúdo para o site de forma que atenda a necessidade da comunicação do objetivo da empresa com seus clientes (ou usuários);&nbsp; um advogado para fornecer as necessidades jurídicas que o site prove para utilização de seus serviços como termos de aceite, políticas de uso da ferramenta, etc; e por fim uma área que esta crescendo no Brasil, o gestor de segurança da informação, responsável pela segurança da informação dos sítios. Além disso, se pensarmos em uma software house, ainda temos mais pessoas envolvidas como o s Testers (departamento ou conjunto de pessoas que fazem testes no produto desenvolvido para contextuar sua eficiência isso tb inclui a segurança do software). 

Para você isso parece um conceito "bobo" ou perda de tempo? Se você pensa assim, hoje você é um alvo fácil. Pense: supomos que sua equipe desenvolva um site. Vc despacha o produto. Duas semanas depois seu cliente vem até vc reclamar que o banco de dados da empresa dele foi roubado por hackers com todas as informações de seus clientes incluindo email. Se vc não sabe, uma base de dados de email pode ser vendida para redes publicitárias, é informação meu caro. E a perícia veio a dizer que o problema foi causado por um campo de pesquisa que permitiu a entrada no sistema. A vulnerabilidade descrita no relatório foi a XSS (cross script), causada pelo campo input da entrada de dados para pesquisa o qual não foi tratado permitindo a entrada de scripts para buscas na base de dados e instalação de agentes no servidor. 
Esse problema se resolve com 6 caracteres, ou uma linha em qualquer linguagem de programação.
Se houvesse feito a bateria de testes como pode ser descrito por controles de qualidade, o site, para este caso, não estaria vulnerável.

Isso com email. Imagine cartões de credito, identidade, conta bancária, endereços, etc. Engenharia social é outra técnica que usam para descobrir outras informações, ou conseguirem o que precisam. São coisas que você talvez nem imagine que seriam possíveis. E as boas práticas ajudam a evitar dores de cabeça ainda maiores. Como o processo que sua empresa pode receber pela falta de padrões para a segurança das informações dos seus clientes. Dependendo do processo, vc vai ter que vender tudo que tem para pagar as indenizações e vai ficar devendo. Os diretores não entendem tanto, apenas quando acontece algum incidente como este.


Note que o programador, além de saber programar, hoje um diferencial é conhecer as boas práticas em programação, entender e seguir as políticas de qualidade da empresa. Hoje, para esta área exige-se mais e paga-se menos a estes profissionais, o que força a maioria a criar os mesmos produtos que criaria para determinada empresa e procurar mercado de vendas. As empresas acabam tento mais concorrência do que soluções. Por exemplo, um software que você faça de automação comercial, com 50 clientes, no mínimo, você ja tem renda suficiente ou maior que a mesma que conseguiria trabalhando para terceiros. E para chegarmos a casa dos milhões rapidamente, existem técnicas de marketing aplicadas à venda de produtos que alavancam as vendas, hoje muito usada no Brasil, chama-se marketing multinível: você tem um produto. Para vendê-lo além dos limites que vc se encontra ponha pessoas para vender para você. No marketing multinível um numero ilimitado de pessoas vendem para você sem a necessidade de contratá-los como empregadores, acabam ganhando uma pequena comissão do valor que venderam. Eles auto se pagam, e quem recebe o montante é o dono do produto. Um produto virtual só exige um programador, o resto é uma cópia da mesma funcionalidade. Isso se aplica para qualquer produto, contudo o virtual vc faz sem sair de casa com investimento de um computador. Basta saber legalizar isso quando a receita federal te pedir justificativas pelo rápido enriquecimento. O programa que vc faz é seu, basta vc colocá-lo no seu nome (patente), por isso para as empresas é interessante ter um programador do que usar um código pronto fora de sua patente. Vc entendeu? Ja vi na internet linha de código por 1 mil reais. Não faça isso, se forem comprar venda por um preço absurdo! Eles vão lucrar e muito. Uma plataforma multinivel hoje custa 100 mil reais. Venda por 1 milhão!
Hoje esta mais fácil, para as empresas, treinarem um profissional de acordo com suas necessidades e mantê-lo com promoções e salário decente do que contratar profissionais com mais experiência, dependendo da estrutura financeiro, economiza-se mais treinando do que contratando, isso porque o funcionário tem expectativas de carreira na empresa. Outros optam pelo PJ, para fugir da trabalhista, mas pesa quando existe uma necessidade constante de chamá-lo para concluir manutenção e ou serviços extras. E uma boa notícia, o mercado brasileiro carece de profissionais em tecnologia, mesmo com a crise. 

A similaridade com uma indústria é relativamente a mesma. 
Para maiores informações sobre como e quantas pessoas são necessárias para formar uma equipe de desenvolvimento de software ou para determinada finalidade que envolva o desenvolvimento de aplicações web, basta consultar seu contador para fazerem um plano de negócios que atenda esta necessidade (não tem segredos). Não precisa pagar contador, você pode consultar um no SEBRAE (no Brasil). É de GRAÇA: clique aqui (faça o cadastro e vai ver as opções quando logar além do software para desenvolvimento de um plano de negócios).











Neste post e alguns à frente iremos falar sobre desenvolvimento de soluções web voltado à programação. Iremos tratar de metodologias ágeis e padrões para desenvolvimento web, o que atualmente é a realidade . Outros segmentos poderemos falar sobre web design, se interessou a alguns.&nbsp;







DESENVOLVIMENTO DE SOFTWARE



Desenvolver sistemas de computadores parece fácil para você? Se sim, que bom, resta saber se esta desenvolvendo da maneira correta.

Para ser exato, em 1970 houve um marco na história da computação conhecido como: "A CRISE DO SOFTWARE". 

Em resumo, devido ao crescimento do uso de softwares de computadores o seu desenvolvimento também aumentou, porém, a falta de técnicas e padronizações de forma a assegurar a sua qualidade não eram conhecidos. Desta maneira, o orçamentos extrapolavam as margens estabelecidas e os prazos, eram finalizados com má qualidade, era de difícil manutenabilidade principalmente por falta de documentação. Em resumo, davam mais trabalho do que propor a solução para determinado problema.

Depois deste evento desenvolvedores e pesquisadores desenvolveram metodologias para o desenvolvimento de software com o objetivo de acertar os problemas que fundamentaram a crise d software, os quais ficou conhecido como MANIFESTO ÁGIL.

O desenvolvimento ágil tem o objetivo de reger a engenharia de software propondo metodologias que procedam para a melhor qualidade de software.



Assim nasce as metodologias, que você já deve ter conhecido lendo algo sobre engenharia de software, para gerencia de projetos como de software, ou conhecidos como metodologias ágeis: XP Programming; Scrum; MPS-BR; etc.
Geralmente a gerencia é voltada ao profissional com tal conhecimento para manter e gerir projetos de softwares.




PROGRAMAÇÃO ORIENTADA A OBJETO (POO)



O desenvolvimento de software, na década de 70, era realizado por meio de linguagem estruturada. Até hoje ensinam isso na faculdade, principalmente nas primeiras aulas de programação com a linguagem C.

Essa maneira de programar acaba deixando o código um pouco confuso, o que dificulta sua manutenabilidade,. Criar novas versões do mesmo produto torna-se uma das maiores dificuldades forçando a reescrever todo o código. A reutilização de código é outro problema que encontramos, tornando a repetição um excesso.

A POO, vem com a ideia de propor um padrão de desenvolvimento. As linguagens de programação posteriores passaram a&nbsp; adotar a interpretação dessas mudanças como a linguagem C que se reinventou passando a ser C++, orientada a objeto.

Para mais detalhes sobre POO



Atualmente existem diversas linguagens de programação. Saber se determinada linguagem é ou não apropriada para determinado projeto, seus pontos fracos e fortes para aplicação da solução é um diferencial. Contudo, existem linguagens voltadas ao desenvolvimento desktop e outras diretamente para o desenvolvimento web.


MODEL, VIEW, CONTROL (MVC)


Trata-se de um design pattern, o qual separa a representação da informação com a interação do usuário, e foi apresentado em 1979. Os componentes trabalham de forma separada contudo interligados.
Esse modelo tem sido aplicado por volta de 2005, em frameworks voltados para o desenvolvimento de aplicações web como o ColdBox, PureMVC, Toika, ASP.NET MVC, JSF e CakePHP, Backbone, entre outros.

Atualmente não se programa para web sem utilizarmos algum framework para determinada linguagem. Além de implementarem a POO o modelo MVC torna a disposição das pastas mais elegante e compreensível, fácil de trabalhar de forma organizada.


CONTENT MANAGEMENT SYSTEM (CMS)

Temos ainda no mercado os chamados gestores de conteúdo e em sua maioria possuem licença&nbsp; Tecnologias livres podem ser uma solução viável para empresas que não queiram gastar valores com licenciamento da ferramenta para desenvolvimento.

Algumas referencias citam o objetivo de um gestor de conteúdo como um aplicativo que permite criar, editar, gerenciar e publicar conteúdo na internet de forma organizada. Contudo, o CMS não se trata de um framework por não se aplicar a conceitos específicos para solução de determinado problema, mas, assemelha quanto à usabilidade, viabilização e administração.

Esta ferramenta oferece as condições necessárias para a criação, edição e publicação de conteúdos prontamente disponíveis.

Os CMS são viáveis à empresas que não queiram ter demanda com o desenvolvimento de softwares e atualizações de softwares. Devido a sua facilidade de uso, uma pessoa sem conhecimento em programação para web possa operar conteúdos para internet, além de diversas operações que estarão disponíveis por meio de instalação de plugins.

Para manter o conteúdo, manutenção da ferramenta, criação ou desenvolvimento de plugins e necessidades da ferramenta para a empresa responsável, etc, necessitam de um profissional qualificado.

Entre os CMS citam: Joomla, Wordpress, Drupal, BBForum, Xoops, MODX, SPIP, SPIP Agora, MAMBO, Typo3, Zooming, tec.

A necessidade de implementar um CMS para determinado projeto de uma empresa deve ser medido por um analista de sistemas que viabilizará à necessidade da empresa e a sua realidade financeira se tal proposta é a mais indicada. 
E sinceramente, analisando melhor, o código desenvolvido é autoria de quem o desenvolveu por meio de uma ferramenta de licenciamento livre (Open Source). O termo software livre ja emprega que o software tenha seu código aberto e possa ser modificado por terceiros. Se o licenciamento é aberto, isso permite que você possa modificar a ferramenta de acordo com suas necessidades.

Ou seja, o código desenvolvido em uma ferramenta open source, pode ser vendido pelo autor. A microsoft esta com uma jogada desta.


Saiba que: se vc é autônomo, possui nome jurídico e é programador, cada linha de código no seu nome tem valor que agrega ao seu nome jurídico. Em termos monetários isso é justificável a qualquer empresa. Quando você vendê-la, o código (de sua propriedade) é somado ao seu valor bruto.

Além disso, as mudanças que necessita realizar para adequar a ferramenta ao seu gosto, necessita de um profissional qualificado, sendo assim, não necessariamente alguém que não saiba programar pode ser o suficiente para gerir a ferramenta.



---------------

Bom, iremos ver em algumas partes deste Post sobre o desenvolvimento de soluções web voltado à programação utilizando linguagem PHP. Iremos programar em um framework chamado LARAVEL.
Vou passar alguns conceitos com o LARAVEL suficientes para você começar a andar sozinho. Um complemento às suas aulas de programação web. Não sei o nível da sua faculdade ou curso, mas esse tema vai além do básico..

É preciso ter conhecimento em programação. Caso não saiba PHP, é simples: compre um livro de estrutura de dados da linguagem ou pegue um livro gratuito na internet, desde que fale sobre o tema. Se você entendeu a lógica de programação, você é capaz de programar em qualquer linguagem basta conhecer sua sintaxe. Com relação ao framework, todos e sem exceção, possuem a mesma ideia que é a mvc e&nbsp; POO. A maneira de utilização é a mesma, o que pode mudar é apenas alguma sintaxe e a ordem das pastas, e caso for em outra linguagem, logicamente a linguagem. O legal do ramo da TI é que o pessoal é auto didata, aprende pesquisando, lendo e pronto. As certificações são apenas para contextuar seu conhecimento para outras empresas, a prova que você SABE operar tal ferramenta, contudo, um portfólio já é o suficiente para sua entrada.

A ideia dos frameworks é relativamente a mesma. Neste caso a linguagem é a mesma, o padrão é o mesmo. O que pode mudar de um para outro é a maneira de utilizar os MVC. Contudo, a mudança não será brusca.

Precisaremos do framework PHP e de um servidor PHP. Poderemos tratar neste post sobre LARAVEL, é um framework PHP e o servidor wampServer porque não tem necessidade de ser on-line. Ambos OPEN SOURCE.


FRAMEWORK LARAVEL:
Documentação: https://laravel.com/docs/5.2
Download: https://github.com/laravel/laravel
Vídeo apresentação : Laravel 5.2 vídeo

SERVIDOR PHP:
WampServer: http://www.wampserver.com/

SVN
https://tortoisesvn.net/



Obs: CONTROLE DE VERSÃO
Já usou ou sabe do que estou falando? Se sim ou se não, vamos incluir isso no bate papo. É importante pelo menos ter uma visão disso. Não é obrigatório mas faz parte das boas praticas de desenvolvimento de software. O controle de versionamento de código permite saber a evolução do projeto e muito mais.


Fazendo isso manterá tudo organizado, guardado numa pastinha bonitinha, com relatórios e posicionamento.
Para o gerente visualizar isso e conhecer as etapas processadas, o que esta sendo processado e o que irá processar é uma mão na roda.

Existem diversos softwares que podem lhe auxiliar no gerenciamento das versões de código, entre eles o github é o mais usado. O github é pago quando se trata de uma equipe. E se você não paga pode usar o sistema com limitações, seu código, por exemplo, ficará publico. Ele é multiplataforma.

O TortoiseSVN ou subversion é outro que faz a mesma coisa que o github entre outros no mercado. Porém, localmente, isso mesmo na sua máquina e é de graça. Para trabalhar em equipe basta um servidor de versão instalado no departamento de TI, e se for usar online um configuração básica.

Enfim, seja ele qual for, desde que controle as versões das atualizações que você estará fazendo válido.







Att o próximo post