Uso da Programação em Lógica por Restrições Aplicado ao Problema do Nesting

O problema do nesting está presente em diversos ramos da indústria de transformação onde se necessita encaixar múltiplos objetos em um rolo ou bobina de matéria-prima, minimizando o desperdício de material.

O artigo a seguir, resultado da pesquisa realizada no curso de Especialização em Computação Aplicada da UDESC Joinville, avalia diferentes estratégias de busca de soluções para este problema, através do uso do paradigma da programação em lógica por restrições.

Os resultados mostram que as estratégias de busca padrão dos solvers necessitam da adoção de heurísticas próprias em conjunto com um modelo que favoreça a propagação das restrições no espaço de busca.

O artigo foi publicado em Fevereiro de 2011, pela Revista Corte & Conformação de Metais e sua versão eletrônica (PDF) pode ser obtida clicando neste link.

Ferramentas de Desenvolvimento Localizadas

1 de fevereiro de 2011 1 comentário

Utilizar software localizado para nossa região ou cultura é sem dúvida um conforto. Mesmo que você tenha certa fluência em um segundo idioma, utilizar um software que, por exemplo, não tenha a interface no mesmo idioma que você se comunica comumente, no mínimo aumenta o seu esforço cognitivo, principalmente quando o software é um aplicativo empresarial que você passa horas utilizando ou que requer muita observação e atenção.

Percebo uma tendência de termos softwares que já nascem globalizados, ou seja, que podem estar facilmente disponíveis em diversos idiomas. Por enquanto o mais comum é encontramos os textos estáticos e mensagens da interface traduzidas, mas sabemos que localizar um aplicativo de software não é só isso. Porém isto é outra conversa.

O que gostaria de expor aqui é algo sobre as ferramentas de desenvolvimento de software. Creio que existam algumas observações importantes a fazer ao se considerar utilizar estas ferramentas (chamadas também de IDEs) localizadas. Aqui vão algumas delas:

1 – As versões localizadas geralmente não são lançadas ao mesmo tempo da versão original (vamos assumir o Inglês por motivos óbvios). Então se você esta esperando aquele recurso que já foi anunciando em algum PDC, MIX, TechED, etc, etc… e que vai tornar a sua vida uma maravilha, pode colocar na conta um bom tempo de espera até que a nova versão esteja disponível para seu idioma;

2 – Qualidade da tradução. Quando iniciei minha carreira de desenvolvimento, comprei um livro chamado “Delphi for Lammers” em português. Como o próprio nome diz, o livro era destinado a iniciantes. Vocês não fazem ideia do que é tentar compilar um código por uma semana sem sucesso, até descobrir que o tradutor havia traduzido partes do código fonte !!!. Não estou dizendo que isso esta assim ainda, mas não é difícil encontrar alguém com experiências similares;

3 – Se você quiser assistir um vídeo de treinamento, tutorial, webcast, virtual lab, how-to vídeo ou qualquer evento online que seja feito no país onde as coisas acontecem, pode ser que você tenha uma experiência no mínimo estranha em ter que encontra as funções, opções, menus no seu ambiente de desenvolvimento localizado;

4 – Caso você utilize os fóruns de comunidades técnicas internacionais (eu o faço várias vezes ao dia), poderá ter dificuldades em encontrar alguém que lhe ajude se você relatar seu problema utilizando os menus, opções, erros de compilação, warnings, etc se estiverem traduzidos. Tenho alguns problemas semelhantes apenas pelo fato de utilizar o Windows em português, pois algumas mensagens vem do sistema operacional. Traduzir este texto de maneira exata para encontrar ajuda em uma ferramenta de busca pode ser uma tarefa bastante improdutiva.

5 – Para finalizar, esta é uma questão mais de práticas internas. Eu costumo codificar, comentar e documentar meus projetos em Inglês, afinal de contas não sei quem poderá utilizá-lo no futuro, me auxiliar em alguma tarefa ou dar continuidade ao trabalho. Então acredito que código e ferramenta de desenvolvimento no mesmo idoma seja uma boa combinação.

Gostaria da sua opinião para ajudar a melhorar a minha.

Processo Individual (Pessoal) de Software

19 de dezembro de 2010 Deixe um comentário

Apesar das diversas propostas existentes de modelos para melhoria dos processos na Engenharia de Software, observa-se que ainda poucos projetos são concluído com sucesso (quando concluídos). O Chaos Report, divulgado anualmente pelo Standish Group mostra que nós Engenheiros de Software não estamos indo bem.

A adesão de modelos como CMMI, SPICE, MPS.BR, ISO parece não ser uma realidade na maioria das empresas do setor. 

Este post fala um pouco sobre uma proposta de modelo de melhoria voltada mais para o indivíduo (Engenheiro) do que para a organização, visando auxiliar o profissional a aumentar a qualidade do seu trabalho.

Elaborei esta apresentação recentemente para tratar um pouco mais sobre o Processo Individual de Software, ou Personal Software Process (PSP).

Programação Orientada a Objetos com Microsoft Visual C#

25 de novembro de 2010 Deixe um comentário

Segue apresentação introdutória sobre o paradigma da programação orientada a objetos utilizando o Microsoft Visual C#. Ao final, coloquei alguns links interessantes que servem de referência para estudos futuros.

Caso queira levar esta apresentação para um evento ou treinamento especializado, entre em contato para mais informações.

O Idioma que Falamos, influi na maneira que penssamos?

31 de agosto de 2010 1 comentário

Os hábitos que predominam em nossa cultura desde a infância moldam nossa visão do mundo e nossas respostas emocionais para os objetos que encontramos, e provavelmente influenciam em nossas crenças, valores e ideologias, diz Guy Deutscher, autor de Through the Language Glass: Why the World Looks Different in Other Languages.

Quando nossa língua rotineiramente nos obriga a especificar alguns tipos de informações, somos forçados a nos atentar para certos detalhes ao nosso redor e a certos aspectos de experiências que pessoas que falam outros idiomas podem não necessitar. E como estes hábitos são cultivados desde a infância, torna-se natural a transição destes hábitos, que afetarão nossas experiências, percepções, associações, sentimentos, memórias e orientações sobre o mundo.

O artigo completo pode ser lido aqui:

Windows Forms ou WPF?

No Microsoft .NET Framework, o namespace System.Windows.Forms é utilizado para projetos “Windows Forms”. Muito útil se você:

1 – Faz manutenção em sistemas baseados nesta tecnologia;

2 – Necessita desenvolver algum projeto onde obrigatoriamente tenha que utilizar o .NET Framework 2.0 ou anterior;

3 – Precisa prover interoperabilidade ou re-utilizar em seu projeto novo algum controle ou parte de um projeto Windows Forms;

Se você não cai nestas situações e esta começando um projeto novo ou aprendendo a tecnologia, aconselho fortemente a fugir do Windows Forms. Estude WPF. Estude Silverlight (para aplicações web). Procure material atualizado sobre estas tecnologias.

Como disse em outro post, materiais específicos sobre C# são o fundamento da linguagem mas podem desencorajar os iniciantes. Eu gosto de utilizá-los como referência apenas. Se quiser entrar no mundo do desenvolvimento ou se atualizar sobre as novas funcionalidades do Microsoft .NET Framework, procure um material voltado a tecnologia em questão. Ex: WPF, Silverlight, ASP.NET, WCF e assim por diante. A linguagem C# será usada como ferramenta para se conseguir o que você necessita nesta tecnologias.

Diga-se de passagem que o XAML reduziu muito a necessidade de existir código C# (code-behind) nas camadas de interface gráfica das aplicações. Inclusive esta é a recomendação para que designers possam interagir no projeto com ferramentas especializadas para designers como o Microsoft Expression Blend.

Desenvolvendo Aplicações Móveis – Parte 2 – Aplicações de Negócios

No post anterior, citamos alguns termos e nomes conhecidos dos PDAs. Agora vamos falar sobre uma área bastante promissora e pouco explorada: O uso dos dispositivos móveis para aplicações de negócios.

Aplicações de negócios, são aquelas que dão suporte aos processos operacionais e estratégicos nas empresas. Dentre os mais comuns citamos os ERPs, MRPs, CRMs, BI, MES, etc.

Se olharmos de uma maneira mais analítica a relação das pessoas com estes sistemas, podemos identificar algumas etapas destes processos, onde um computador (notebook, desktop, etc) não é o dispositivo mais adequado, principalmente devido a falta de mobilidade.

Imagine um representante comercial ou vendedor consultando o estoque de um determinado item, em tempo real para fechar um pedido de venda antes que o cliente mude de idéia?. Qual dispositivo seria mais adequado neste momento? Um notebook que esta na mala e precisa ser ligado, colocado em uma mesa, conectar ao sistema, digitar valores, etc ou o celular que esta no bolso pronto para uso e já conectado a internet e com a aplicação rodando?

Este tipo de aplicação comumente é chamado de LOB (line of business application) e ainda é pouco colocada em pauta nas reuniões das equipes de desenvolvimento e T.I. Uma grande força para este tipo de aplicação é o baixo investimento em hardware, pois atualmente qualquer pessoa possui um aparelho celular repleto de recursos, suficiente para executar este tipo de aplicação.

Analisando o mercado empresarial, encontramos diversos níveis de maturidade na adoção de novas tecnologias. Quando uma empresa já possui uma infra-estrutura de T.I otimizada e seus processos internos mapeados, torna-se mais fácil identificar as lacunas que as aplicações para dispositivos móveis podem preencher.

Porém, as aplicações para PDAs não são apenas para as grandes. Se desenvolvidas para serem simples, práticas e utilizadas com bastante freqüência, podem automatizar pequenas tarefas cotidianas de qualquer funcionário ou gestor. Os resultados aparecem rapidamente e aumentam o valor percebido da equipe de desenvolvimento, deixando de ser um centro de custos e tornando-se um ativo estratégico da empresa, seja qual for o seu tamanho.

Para finalizar, recebi hoje alguns números interessantes sobre o uso de dispositivos móveis: Somente no primeiro quadrimestre deste ano, foram comercializados 8,8 milhões de iPhones contra 55 milhões de smartphones no mesmo período, sendo 21,5 milhões apenas os da Nokia. Considera-se smartphone os dispositivos que possuem um sistema operacional e recursos mais avançados de computação. É como um PDA com telefone. O artigo consultado e as fontes podem ser obtidos em: http://bit.ly/bikeYx

Percebemos então uma grande oportunidade para oferecer um próximo nível de eficiência dos processos e fluxo de trabalho nas empresas com o uso dos dispositivos móveis. Com grande capacidade de processamento e alto grau de conectividade e mobilidade, novos horizontes estão sendo abertos e novas oportunidades de negócios surgindo. Em breve, falaremos sobre o projeto do Windows Phone, que promete ser mais um grande player nesta competição.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.