terça-feira, 29 de abril de 2008

Problema com controle Microsoft Internet Control

Qual não foi o meu espanto quando depois de atualizar o internet explorer para a versão 7.0, o meu projeto no Visual Studio 6 não funcionava corretamente. A seguinte mensagem era exibida ao iniciar o VB6 : File not found: 'C:\WINDOWS\system32\IEFRAME.dll\1'--Continue Loading Project?
A solução para esse problema (após algum tempo gastando queimando neurônios) foi simples. Busquei no registro do sistema o valor C:\WINDOWS\system32\IEFRAME.dll\1 e o modifiquei para C:\WINDOWS\system32\IEFRAME.dll .
Pronto! Ao abrir o projeto novamente o problema já estava solucionado.

quarta-feira, 12 de dezembro de 2007

O software livre e oportunidades

O software livre pode ser caracterizado pelo tipo de licença que governa sua distribuição e pelo modelo de desenvolvimento de software. No primeiro aspecto, ele é regulado por um tipo de licença (BSD, GPL, etc) que concede grandes liberdades ao usuário deste software.

É possível utilizar o software sem pagar previamente uma licença e pode-se efetuar costumizações para atender necessidades específicas. A obrigatoriedade de compartilhar estas modificações é dependente da licença, embora seja um conceito universal a idéia de contribuir quando se tem grandes vantagens relacionadas à melhoria do produto original.
No segundo aspecto, trata-se de uma alternativa de desenvolvimento de programas onde se atrai engenheiros e profissionais de informática para exame da qualidade do software e eventuais contribuições pelo livre acesso aos fontes (equivalente à planta estrutural de um programa). A prática da revisão entre os pares (peer-review) é típica da academia e tem bons resultados para validar trabalhos, sejam aplicados ou científicos.
Estudos promovidos por grandes empresas, como IBM, constatam a percepção por parte de administradores de sistemas e usuários de GNU/Linux que sistemas baseados em software livre são mais resilientes a vírus e invasões. Porém também há estudos indicando o contrário, devendo o mérito de cada um ser pertinente às condições específicas em que o responsável por uma organização decida desenvolver algum projeto de infraestrutura de TI (tecnologia de informação).
O software livre (assim como o fechado), está sujeito à licença de uso em que foi disponibilizado. Ambos têm aptidão comercial, embora o modelo de negócios seja diferenciado: o primeiro busca se financiar com serviços, doações e licenças enquanto o último é totalmente dependente de licenças.
A vantagem facilmente tangível do uso de software livre é a independência de fornecedor. Ao contratante, é possível mudar de empresa fornecedora de software e de serviços, toda a estrutura de software pode ser acessada por interessados em função do tipo de licença. Como exemplo, a empresa norte americana Red Hat possui 2 versões de seu sistema, uma paga e outra gratuita. O que motiva o pagamento da licença é o suporte oferecido pela empresa e homologação da plataforma para certos usos (como o software fechado Oracle).
Se a licença do software é fechada não se garante a independência de fornecedor, mesmo se for possível o acesso aos fontes do programa licenciado. Os custos de migração de plataforma tornam-se proibitivos, mesmo com a perspectiva de liberação de pagamentos anuais com licenças ou de upgrade forçado pelo fornecedor.De fato, o software livre não é gratuito, pois torná-se necessária a contratação de serviços para instalação, suporte e costumização. Entretanto, a priori, o modelo de software fechado não garante isenção dos custos supra citados, porém deve-se acrescentar os custos com licenciamento (estes sim sempre garantidos).
Justamente pelas vantagens econômicas oferecidas, os softwares livres vem crescendo rapidamente dentro das corporações. Isto ocorre apesar de menores recursos para veiculação de campanhas publicitárias ou de não possuir a vantagem de ser o sistema operacional dominante nos desktops, como caso de seu concorrente direto, o Windows.
O software livre garante a proteção dos direitos autorais dos seus criadores através da licença que governa sua distribuição. Assim como um contrato normal, a quebra das cláusulas da licença destitui o usuário da utilização do software, ficando o mesmo à mercê de processos movidos pelo detentor do 'copyright' do programa (de forma semelhante ao modelo de software fechado). Em última análise, o respeito aos direitos autorais é a base do crescimento do software livre, impedindo oportunistas de se apropriarem de produtos de software de criação alheia.
A idéia de política pública para obrigatoriedade de uso de software livre deve ser cuidadosamente examinada para promover o crescimento da indústria nacional de software. Por se tratar de um assunto polêmico, seria ingenuidade supor que todo o governo (poderes judiciário, executivo e legislativo) tivesse pleno concenso. As áreas em que o software livre mostra sua potência seriam equivalentes a “commodities da informática” (sistemas operacionais, servidores de internet, navegadores de internet, planilhas e editores de texto). No presente momento, o maior segmento de mercado nesta área é ocupado por um único fornecedor de origem internacional. As empresas nacionais em geral desenvolvem sistemas de cárater mais especializado, como automação, administração, contabilidade e suporte a bases de dados.
Estes softwares podem ser portados para funcionarem em uma plataforma livre, sem restrição à mudança da licença dos mesmos, se assim desejado pelos seus fabricantes. Finalmente, haveria a possibilidade de duplo licenciamento destes programas, havendo versões livres e fechadas de acordo com o interesse da parte contratante, desde que renumerados os custos de desenvolvimento das empresas envolvidas.
O próprio governo pode lançar mão de iniciativas como financiamentos subsidiados para empresas interessadas em trabalhar com um modelo de negócio baseado em software livre, viabilizando o desenvolvimento de novos programas e fortalecimento deste segmento de negócios. O Brasil tem as vantagens: empresários altamente dinâmicos, mão de obra qualificada e boa inserção no cenário internacional de software livre.
A prova desta inserção pode ser observada na lista de palestrantes da 6a. edição do FISL (Fórum Internacional de Software Livre) realizado em junho deste ano no Rio Grande do Sul. Este evento contou com uma extensa lista de palestrantes de países estrangeiros, líderes no desenvolvimento destas tecnologias. Neste aspecto, os profissionais brasileiros têm demonstrado grande receptividade, não havendo espaço para xenofobia ou “tacanhice”.
A competitividade da indústria e da esfera pública de qualquer país passa pela redução de custos e domínio de tecnologias relacionadas à informação em um mundo altamente conectado. O software livre é somente mais um dos caminhos para esta meta.

Adenilson Cavalcanti - Graduado em Eng. USP e Mestrando USP

Fonte: http://www.malima.com.br/article_read.asp?id=574

terça-feira, 11 de dezembro de 2007

A Padaria de Software e a Fábrica de Software.

Quantas vezes eu varei noites (varar mesmo!) fazendo programas às pressas, tentando terminar o processo com um mínimo de erros pois sabia que ao amanhecer teriam pessoas loucas pelo resultado do programa. Todos estavam de olho no que eu estava fazendo. Tinha que ser rápido e preciso.
Mas vendo o resultado de fora agora penso se valeu a pena. O que eu levei dessas noites passadas em frente ao computador? Talvez um pulmão um pouco mais escuro pelo excesso de cigarro consumido junto com meus neurônios.
Mas e meu código!? Foi documentado? Me pergunto. Foi planejado? Foi, mas foi planejado runtime, se é que se pode planejar enquanto se desenvolve. Onde está o código disso agora, cadê as classes para reutilização do meu código! ?
Bem, de uma coisa eu não posso reclamar. No outro dia todos estavam felizes com o resultado.

Quando comecei a fazer o curso de UML (Unified Model Language, ou linguagem para modelagem visual de software) pela Impacta Tecnologia sabia muito pouco da existência da Engenharia de Software e todo o universo de planejamento que a UML contempla.
Tomei um susto e até ri da orientadora quando falou que o ciclo de vida de um software
é 40% planejamento, 20% testes 20%homologação e apenas 20% de código!
Pensei comigo: Deixa ela estar no meu lugar. Vai colocar essa tal de "UML" na gaveta e comprar umas boas carteiras de cigarro.

Mas com o aprofundamento do curso me dei conta de quanto tempo eu perdi tentando responder perguntas que eu nem havia perguntado. Quantas vezes me vi resolvendo pequenas coisas como o tamanho da janela do programa ou, que tipo de mensagem eu vou colocar pro usuário quando o processo terminar, quando a real solução eu ainda nem havia começado a resolver!

Vejo hoje que, um software bem planejado, bem testado e mais que tudo, bem documentado só vem a elevar o nível de um desenvolvedor assim como o das empresas também.
Claro que todos queríamos que tudo fosse rápido, que os desenvolvedores sentassem a bunda na cadeira e saíssem com o sistema pronto, afinal eles são pagos pra fazer acontecer, e rápido.

Porém cabe as empresas escolher o tipo de profissional de que precisam, padeiros ou desenvolvedores, as vezes me sinto um bom desenvolvedor, as vezes um bom padeiro.

Qualidade de software com Java

O quadro a seguir é baseado na norma ISSO-9126 que trata das características e subcarecterísticas utilizadas para avaliar a qualidade de um produto de software.


Atualmente as linguagens líderes de mercado, Java da Sun Microsystems e .NET da Microsoft, implementam, relativamente bem, todos os conceitos de orientação a objetos, que podem trazer boa reutilização de código e facilidade de manutenção (consequentemente somando pontos na avaliação da qualidade do software), porém algumas peculiaridades de Java são muito importantes para construir um sistema com maior qualidade:

  • Portabilidade e independência de plataforma:

Java basicamente surgiu da idéia de que em um futuro não tão distante, poderíamos vir a criar software para qualquer tipo de eletrodoméstico, por exemplo, uma torradeira, geladeira ou para a TV, tornando estes equipamentos mais interativos com seus usuários.

Atualmente um programa para desktop escrito nessa linguagem pode funcionar, sem qualquer modificação, em qualquer sistema operacional que suporte a JVM (Java Virtual Machine) como Windows, Linux, Apple OS X e Solaris.

  • Checked Exceptions

Infelizmente, não há como garantir que os participantes do projeto de um software sejam as mesmas pessoas que farão a sua manutenção e possíveis adaptações durante todo o ciclo de vida do programa.

Para resolver esse problema natural, Java proporciona uma trava importante para que o sistema não perca a confiabilidade: as “Checked Exceptions”.

Em Java, o compilador é encarregado de verificar se todas as exceções previstas estão sendo corretamente tratadas. Um exemplo: Se um programador precisar abrir um arquivo, ele será obrigado a tratar a exceção de Arquivo Inexistente, caso contrário o programa nem será compilado.

Portanto, usando as checked exceptions é possível garantir um sistema muito mais próximo do projeto original, já que todas as exceções previstas durante a criação dos métodos, obrigatoriamente, serão tratadas.

É fato, portanto, que Java propicia o desenvolvimento de software de qualidade, que é cada vez mais importante para garantir a competitividade das empresas.