Manutenção em sistemas

Engenharia de Software é uma profissão nova, já dizia um professor. Enquanto a medicina e arquitetura tem suas origens lá na antiguidade,  o desenvolvimento de software (apesar do ábaco, como marco inicial da computação) é algo recente, do século passado. Isso significa que existe muita coisa para aprimorar em nossa profissão. Paradigmas de programação, padrões e gestão de projetos são práticas aprimoradas de (e que auxilia o) desenvolvimento de software, e que resolveram muitos dos problemas da programação.

Entretanto, ainda há algo que assusta os programadores atuais: a manutenção de software. “É melhor começar um projeto do zero, do que dá manutenção no sistema atual.” – é o principal frase ouvida do programador ao ser alocado a um projeto de manutenção. Mas, por que isso acontece? Por que é tão difícil manter um software? Por que é tão custoso? Não tenho a solução, mas quero convidar a refletir juntamente comigo (fique a vontade nos comentários).

Um projeto de software possui um ciclo de vida, onde é concebido, evolue e chega a um ponto que morre. Seja em RUP ou algum método ágil, os sistemas vivem neste ciclo. E a manutenibilidade determinará quanto tempo ele vai continuar vivendo ou evoluindo. Porém, muitos trabalhos são (ou não são) projetados sem levar em consideração tal aspecto. Hoje em dia, desenvolver um sistema sem um mínimo de planejamento, significa mais trabalho em futuras manutenções. O analista ou projetista deve ter em mente que a arquitetura do software vai determinar o rumo de sua evolução. É o alicerce do projeto. Um software mal modelado, sem flexibilidade em sua concepção,  está fadada a elevados custos para se manter.

Engana-se quem pensa que todo o problema de manutenção de software está em sua análise ou arquitetura. Ainda que com um papel importante, o projetista pode ter feito seu trabalho excelente, mas há um outro ponto de vulnerabilidade, quando se trata de qualidade de código: o programador. Ser um bom programador não basta saber todos os macetes da linguagem, ter anos de experiências ou certificação. E isso certamente influencia nos aspectos qualitativos do sistema. Legibilidade e documentação são primordiais para que  o sistema siga com alta manutenibilidade. Existe convenções e manuais de boas práticas para que os programadores possam manter o código legível, limpo e organizado. O programador não pode ter o foco apenas na funcionalidade em si, mas também nos aspectos necessários para o projeto, tal como desempenho, segurança, etc.

Mas, ainda que projetistas e programadores se esforcem para manter um código bem arquitetado e programado, manutenção em sistema parece ser o terror para os novos desenvolvedores alocados ao projeto. Ao que percebi (posso estar enganado ou com visão parcial), dois motivos são bastantes comuns para tal fato: (1) Dar manutenção em código alheio, requer tempo para se familiarizar com a arquitetura do sistema e com a domínio da aplicação. Para muitos, isso é tedioso. (2) Ainda que o código esteja limpo e organizado, em modo geral, certamente haverá soluções paliativas (leia-se POG) para problemas que necessitaram de correção em 5 minutos! E todos nós sabemos o qual cabuloso é resolver problema causada por esta metodologia de desenvolvimento (os professores de Engenharia de Software resmungaram agora!) .

Apesar de toda a situação da manutenção em software, sabemos que este é um “mal necessário”. Não existe possibilidade de refazer todo o sistema por N motivos. Ao programador, dedique-se em ser um bom programador, principalmente em clareza e documentação dos códigos. Afinal, um dia é você quem pode estar engajado na manutenção de um sistema. :-)

Fique a vontade para compartilhar sua experiência com manutenção nos comentários. Até mais!

Autoridades acusam hacker romeno de invadir Defesa dos EUA
Um hacker romeno de 23 anos foi detido sob a acusação de ter entrado sem autorização nos servidores do departamento de Defesa dos Estados Unidos, em 2006, informou nesta sexta-feira (20) a imprensa romena.

Já havia postado uma notícia que um britânico invadiu o sistema da NASA. Dessa vez, teve-se notícia de que um romeno também conseguiu tal moleza proesa. Mas, lendo tanta notícia em relação a isso, inclusive aquela de que o governo da Alemanha treina hacker para guerra do futuro, fiquei a imaginar o estrago que o time do Bin Laden causariam se tivesse infra-estrutura e conhecimento para um ataque cibernético.

Basta analisarmos o que aconteceu com os vírus e trojans com o passar do tempo. Nos anos 90, lembro-me do cuidado que tinhamos que ter para não pegar  vírus pelo disquete e destruir todos os dados de nosso 486 (momento nostálgico). Hoje, as coisas são bem diferentes. Não se vê mais pragas digitais para destruir dados de computadores como antigamente (apesar de ainda existir por aí). O que os crackers querem é roubar dados bancários, informações sigilosas para poder ter algum retorno financeiro.

Pois bem, os terroristas sabem que os ataques por eles praticados são bem inferiores aos contra-ataques, em termos materiais. Diga-se de passagem, a maior consequência do atentado de 11 de setembro foi no psicológico dos americanos. Basta fazer um “boom” atrás de um deles pra você ver o que acontece. Sendo assim, os terroristas poderiam simplesmente atacar o império capitalista através de um ataque cibernético. Seja no sistema de defesa, ou na NASA, ou quem sabe ainda no sistema da bolsa de valores. Tanto as invasões dos hackers, como os atentados de 11/09, provaram que não é impossível atingir os EUA.

Veja bem. Não estou desejando que isso aconteça, mas a internet tem evoluido de tal forma que pode acontecer, mais cedo ou mais tarde. Agora, acho que Bin Laden vai ter que pedir uma ajudinha ao Google pra que a internet chegue até lá onde ele está.

Em prosseguimento ao artigo “Como se tornar um programador php“, abordarei nesse post os seguintes ítens:

  • Recolhendo material de estudo
  • Estudando códigos prontos
  • Praticando
  • Tirando dúvidas

Vamos lá!

Praticando

Chegado neste ponto, não podemos esquecer da principal forma de fixar o aprendizado: praticando! Programação é igual a matemática. Quanto mais você pratica, mas você aprende como resolver os problemas encontrados. (que analogia!) Assim, uma vez recolhido todo o material, estudado e analisado o código, é hora de treinar!

Inicialmente, você precisará de um servidor pra testar suas aplicações. Para isso você precisa do php, apache e mysql. Existe algumas ferramentas que permite instalar tudo junto e já configurado. É o caso do Xampp e o Easyphp. O easyphp é para windows, mas o xampp possui a versão para outros sistemas operacionais, como o Lamp para o linux.

Uma outra pedida é você desenvolver um site simples, e disponibilizar na internet. Existe alguns servidores php de hospedagem gratuita. Só nunca testei, mas existe relatos de que alguns servidores são legais.

Tirando dúvidas

Para finalizar, tire suas dúvidas. A primeira e principal fonte é o manual oficial de php. Calma! Não se preocupe se você não entende nada em inglês ou se tem aversão. Há duas formas de explorar o manual php em português. Uma é online e outra offline, fazendo o download do arquivo. Eu recomendo baixar o arquivo de ajuda do windows. Ele auxilia bastante na hora de pesquisar por determinado assunto. Mas se você preferir em outro formato, pode acessar a lista com outros formatos.

Uma vez tendo acesso ao manual php, a principal fonte para tirar dúvidas em relação a sintaxe e funções da linguagem, explore-o. Cada vez que você ver alguma função nova nos códigos ou apostilas de consulta, verifique no manual o que aquela função faz. Se observares, o próprio manual já é um bom material pra começar php. É só seguir a ordem do índice, pois ele aborda todos os pontos. Se não sabes pra que serve a função isset(), por exemplo, pesquise no manual.

Um outro método que usei bastante foi participar de fóruns como fonte de pesquisa e para tirar dúvidas. Mas, por favor, não entre no fórum pedindo código. Faça sua pergunta, explique o que você precisa, até onde chegou e pergunte como pode resolver isso. Normalmente eles não te dão o problema resolvido. Apenas indica o caminho para que você resolva. Como eu disse anteriormente, a comunidade PHP é grande, e o pessoal é colaborativo.

Não faça de qualquer jeito

Então é isso! Espero que este artigo possa orientá-lo nos estudo da linguagem, e que sempre procure ser bom no que faz. Não faça de qualquer jeito. Faça direito, ok?! O mercado é competitivo, e exige que você seja bom no que faz.

Um abraço e até a próxima!

Ontem recebi um e-mail de Jonathan Silva, me parabenizando pelo site e fazendo o seguinte questionamento:

” (…) venho também saber de você se existe algum excelente curso de PHP em Salvador, ou se seria melhor tentar aprender em casa mesmo?”

É com base nesse e-mail que relatarei minha experiência com o aprendizado com php. Dividirei este artigo em dois posts, abordando os seguintes itens:

  • Recolhendo material de estudo
  • Estudando códigos prontos
  • Praticando
  • Tirando dúvidas

Minha jornada aconteceu após conclusão do 3º ano. Por não ter conseguido passar na UFBa naquele ano, resolvi estudar em casa sobre o que mais me enchia os olhos na época. A internet! No 1º ano, tinhamos aula de informática, onde aprendemos noções básicas sobre web e chegamos até a fazer um site (bizarro), como trabalho final da unidade. =D

Porém, antes de saber que existia linguagem de programação, aprimorei o pouco que sabia de html copiando o código fonte de portais, como bol e uol, e colando no Front Page, ferramenta do pacote Office para desenvolvimento web. Me lembro o quanto de tabela era feito esses portais! Aff!

Foi então que descobri a linguagem de programação, e como poderia deixar os sites dinâmicos. Assim, criei e adotei a seguinte didática de aprendizado.

Recolhendo material de estudo

Meu primeiro passo foi adquirir apostila sobre a linguagem na internet. Na época, encontrei uma apostila do Maurício Vivas no Cadê (que hoje pertence ao Yahoo). Essa apostila é básica, mas aborda os principais pontos da programação básica. Desde eventos com formulários, até conexão com banco de dados, etc. No site do Script Brasil, há uma lista de apostilas sobre php. Veja!

Ao final do estudo da apostila, já estava pronto para fazer ao menos um CRUD.

Mas a internet hoje oferece um vasto leque de informações. Se na época encontrei material no Cadê, que era basicamente um diretório de sites, imagine agora com o Google nas mãos! Não se detenha apenas a uma fonte.

Mas, depois que entrei na faculdade, percebi que, antes mesmo de você aprender a sintaxe da linguagem e sair por aí programando, você precisa aprender ao menos lógica de programação. Sem isso, você pode até saber como começa o código, mas não conseguirá chegar a um final. Aliás, pode até chegar, mas pela metodologia da tentativa e erro. =/

Estudando códigos prontos

Após entender o básico da linguagem, comecei a aprimorar e aprofundar o conhecimendo da linguagem através de scripts prontos encontrados na web. A comunidade php é enorme, e disponibiliza muito material online. Isso não quer dizer que você já tenha tudo pronto nas mãos. Muitos desses códigos, são feitos por pessoas que também possuem conhecimento básico/intermediário.

Entretando, a revisão de códigos prontos e o aprimoramento destes, serve para você por em prática noções de lógica de programação e conhecer algumas funções da linguagem. É claro que, com códigos de outros, você pode acabar aprendendo uma maneira macarrônica de programar, mas quanto mais você aprende, mais você tem um olhar crítico das coisas.

Assim, lembro-me de um sistema de enquete encontrado também no Script Brasil. Lá há um diretório de scripts, com mais de 20 enquentes pra você treinar. Agora, lembrando que, de início, opte pelas enquete mais simples, sem autenticação por exemplo. Com o tempo, vá pegando scripts um pouco mais complexo do que a anterior.

Portanto, caro colegas, comece a recolher os materiais da internet e reserve um tempo para dedicar-se ao estudo. No próximo artigo abordarei os itens “Tirando dúvidas” e “Praticando”.

Um abraço e até a próxima!

Iniciar um negócio hoje na internet é pensar em publicidade como forma de retorno. A maioria das pessoas, principalmente jovens, atentaram para uma forma simples, porém rentável, de obter um retorno financeiro em cima daquilo que eles fazem na web. O exemplo mais clássico são os blogs. Sejam eles sobre informática, humor ou moda feminina, os autores sempre procuram algo em troca pelas informações disponibilizada. (Sim, ainda vivemos num mundo capitalista).

Hoje temos uma variedade de opções pra podermos rentabilizar com publicidade nos projetos online, através de links patrocinados. O Google Adsense, Hot Words, dentre muitos outros, oferecem dinheiro, em troca da publicidade em seu site. Funciona mais ou menos assim: A empresa paga ao Google para anunciar nos serviços dele. O Google reparte o lucro com os parceiros afiliados, através desta publicidade em seus sites. No final das contas, todos ganham.

Porém, engana-se quem pensa que essa forma de rentabilidade iniciou-se na internet. Observando dias atrás o programa Silvo Santos na televisão, percebi que o lendário apresentador da TV brasileira já exercia uma praticava  semelhante em seus programas. Quem nunca ouviu a famosa pergunta “Quem quer dinheiro?” ? Pois é. Apesar do programa não ser muito atrativo, muitas pessoas param pra assistir simplesmente porque querem o dinheiro, apesar de saber que nunca vai ganhar (pelo menos os que moram longe!).

Um outro dia, meu cunhado adolescente questionou-me: “Como é que Silvio Santos dá tanto dinheiro assim?”. Simples. Primeiro que não é muito dinheiro (isso te lembra os centavos ganho do Google Adsense?). Segundo, é que ele apenas compartilha – em proporções bem menores – o lucro dos comerciais vinculados nos intervalos do programa. Ou seja, uma empresa paga ao SBT para vincular uma propaganda, e Silvio Santos reparte o lucro, em forma de aviõezinhos com as meninas do auditório, e todos ganham, exceto você que assiste. Simples assim! O que ambas as práticas tem em comum? Os donos da empreitada ganham muito dinheiro com isso.

Recentemente um cliente estava a procura de um profissional para dar manutenção periódica no seu site, que consistia basicamente em criar páginas estáticas e acoplar à lista já existente. Como bom programador, sugeri o desenvolvimento de um sistema para ele mesmo poder gerenciar seus artigos e registros.

Ainda assim, foi solicitado o custo por hora de trabalho. Eu sempre questionei sobre essa metodologia de estimativa de custo, e, pesquisando pelos amplo mundo cibernético, encontrei o artigo “Valor/hora? Isso já não serve mais…“, por Adail Muniz Retamal. Confira!

É notório o aumento de número de sites a cada ano. Isso se torna possível, devido ao preços cada vez mais acessível para manter um site na web. O registro .com.br, agora liberado para quem possui apenas CPF, custa R$30 ao ano, e é possível encontrar servidores com preços bem acessíveis, como o Infinite host, custando o plano mínimo apenas R$6,50.

Tudo bem. Os preços estão acessíveis, contratei um profissional, – ou – meu sobrinho já sabe colocar meu site na web, mas, e agora? No início de tudo, a internet era vista apenas como um cartão de visitas das empresas. E estar fora dela, era não se atualizar, modernizar. O problema é que a internet é muito dinâmica, uma metamorfose ambulante. Se não estivermos em constantes atualizações, ficaremos para trás.

Recentemente refleti sobre isso. Trabalhando desde 2004 com desenvolvimento para internet, observei que muitos conceitos foram alterados. Os sites deixaram de ser meramente um cartão de visitas, uma vitrine virtual e se tornou um meio de comunicação direta com o cliente. As tecnologias evoluiram a nos permitir isso. A interação passou a ser um mecanismo indispensável com o usuário. Quem nunca ouviu falar da Web2.0, wikipédia, ajax, redes sociais? Pois é. Muito tem se discutido, não tão muito tem se esclarecido. É uma bolha, ou um novo conceito?

O fato é que, há pouco tempo, procurando um curso de inglês renomado aqui em Salvador, fui buscar primeiro, logicamente, no Google. Encontrei alguns, mas dei preferência àqueles em que tinha certa credibilidade. Provavelmente visto uma propaganda na TV, ou não. Apesar de ter no rodapé da página o número do telefone do curso, como qualquer outro usuário digital e preguiçoso, optei por enviar um e-mail através do formulário de contato no site, para obter maiores informações de novas turmas e preços. E para minha surpresa, até hoje não recebi a resposta.

Alguém tem noção de como é isso? É como se eu tivesse entrado em uma loja e nenhum vendedor viesse me atender. O que você faria? Sairia tranquilamente, e dificilmente voltaria lá, pelo menos até esquecer. Óbvio! Se o site mantém um formulário pra contato, é porque este seria um meio de comunicação com o cliente, correto? Tá, talvez eu tenha digitado o e-mail errado, mas, curiosamente, voltei ao mesmo site, e mandei outro e-mail, sem sucesso… Seria mais justificável que não tivesse o formulário de contato, e a empresa atendesse apenas pessoalmente ou por telefone, disponibilizando-os no lugar do formulário.

Alguém sabe por que o condicionador normalmente vem com a tampa embaixo, como se estivesse de cabeça pra baixo? (No dia que você passar o creme antes do shampoo vai entender) Os meios de contato são diferentes, e se você tiver o formulário lá, não esqueça de avisar a sua secretária que este é o condicionador, e deixará seus clientes lisinhos. =)