domingo, junho 08, 2008

backup e restore do ubuntu

Backup
tar -cvpzf /media/sda5/bkp/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media /

Restore
tar xvpfz backup.tgz -C /

quinta-feira, junho 05, 2008

segunda-feira, junho 02, 2008

Colegas da PUC

Esses são meus colegas da pós em engenharia da computação na PUC-SP. A foto foi tirada no último dia de aula, sábado passado. Foi muito bacana conhecer todos eles. Vou sentir saudades. Um grande abraço!!!!

quinta-feira, maio 29, 2008

Programas essenciais para o Ubuntu

Avidemux
Editor de vídeo
download: http://www.getdeb.net/app/Avidemux
info: http://ubuntudicas.blogspot.com/2008/01/avidemux-editor-de-vdeo.html

Deluge
Torrents
donwload: http://www.getdeb.net/app/Deluge
info: http://ubuntudicas.blogspot.com/2008/01/deluge-0581-nova-verso.html

Emesene
Instant Messenger tipo MSN
info: http://ubuntudicas.blogspot.com/2007/12/emesene-clone-do-msn.html

Exaile
Player de mp3 e CD
download: via Adicionar/Remover Programas...

Frostwire
P2P
download: via Adicionar/Remover Programas...

Gmount-ISO
Leia imagens ISO
download: Via Synaptic
via terminal: sudo apt-get install gmountiso

PyTube
Baixar vídeos do YouTube
info: http://bashterritory.com/pytube/index.php
download

VLC
Player de vídeo divx ou dvd
download: Via Synaptic
info: http://ubuntudicas.blogspot.com/2007/10/vlc-no-mostra-as-legendas.html

Wifi Radar
Buscador de redes wireless
donwload: Via Synaptic
info: http://ubuntudicas.blogspot.com/2008/01/wifi-radar.html

Fonte: http://ubuntudicas.blogspot.com/2008/01/programas-essenciais.html

quarta-feira, maio 28, 2008

Sistemas Especialitas

Sistema Baseado em Conhecimento (SBC)

  • Sistemas de software no qual o conhecimento relativo ao dominio de problemas é armazenado como regras, separadas do modo como são processadas, em um repositório chamado Base de Conhecimento (BC).
  • Sistema Especialista é um SBC construído para executar tarefas que requerem conhecimento de um especialista humano (perito).
  • Sistema computacional no qual um programa interpretador (Motor de Inferencia - MI), com base nos dados correntes armazenados na Memória de Trabalho (MT), escolhe e aplica regras de inferência armazenadas em uma Base de Conhecimento (BC) para realizar tarefas do domínio.
  • Sistemas Especialistas estão baseados no pressuposto que conhecimento perito pode ser representado como fatos, regras e objetos e estes elementos podem ser descobertos em um processo de aquisição de conhecimento, e tornados explícitos em uma BC.
  • Regras de Produção ou Inferência definem a lógica de uma aplicação de forma separada do modo como são processadas (encademaento).

segunda-feira, maio 26, 2008

Modelo CMMI

O CMMI (Capability Maturity Model Integration) é um modelo de referência que contém práticas (Genéricas ou Específicas) necessárias à maturidade em disciplinas específicas (Engenharia de Sistemas, Engenharia de Software, Desenvolvimento Integrado do Produto e do Processo, Fontes de Aquisição). Desenvolvido pelo SEI (Software Engineering Institute) da Universidade Carnegie Mellon, o CMMI é uma evolução do CMM e seu objetivo servir de guia para a melhoria de processos na organização e também da habilidade dos profissionais em gerenciar o desenvolvimento, aquisição e manutenção de produtos e serviços. Assim espera-se que o uso do CMMI permita a organização ser mais eficiente, respeitando seus proprios prazos e construíndo software com menos erro.

Os 5 Níveis da Maturidade do CMMI:
  1. Inicial (Imprevisível, mal controlado e reativo)
  2. Gerenciado (Projetos, reativo)
  3. Definido (Organizado e pró-ativo)
  4. Quantitativamente Gerenciado (Processo medido e controlado)
  5. Otimização (Melhoria contínua do processo)
Nível 2 - Gerenciado
  • Gerência de Requisitos
  • Planejamento de Projetos
  • Acompanhamento e Supervisão de Projetos
  • Gerencia de fornecimento
  • Medição e Análise
  • Garantia da Qualidade de Software de processo e produto
  • Gerência de Configuração de Software
Nível 3 - Definido
  • Desenvolvimento de requisitos
  • Solução técnica
  • Integração de produto
  • Verificação
  • Validação
  • Foco no Processo da Organização (SEPG)
  • Definição do Processo da Organização
  • Programa de Treinamento
  • Gerência de Projetos Integrada
  • Gerencia de riscos
  • Coordenação entre Grupos
  • Gerencia integrada de fornecimento
  • Análises de decisão e resolução
  • Ambiente organizacional para integração
Nível 4 – Quantitativamente gerenciado
  • Desempenho de processo organizacional
  • Gerência Quantitativa de Projetos
Nível 5 - Otimizado
  • Inovação organizacional e distribuição
  • Análise casual e resolução

sábado, maio 24, 2008

dica de leitura

Esse livro é muito bacana, Covert Java™: Techniques for Decompiling, Patching, and Reverse Engineeringby Alex Kalinovsky.

Várias técnicas para solução de problemas de desenvolvimento na plataforma Java como interceptação dinâmica do fluxo de execução usando reflection, como usar de forma adequada técnicas de tracing, dicas para descompilar classes, dicas para proteger aplicações comerciais contra hacking, etc.

Vale a pena ler esse livro.

terça-feira, maio 13, 2008

O que é qualidade de software?

A qualidade de software depende principalmente do correto emprego de boas metodologias pelos desenvolvedores de software, está ligada a um processo de melhoria contínua.

Um dos fatores que exerce influência negativa sobre a qualidade de um projeto é a complexidade que está associada ao tamanho das especificações, em razão das interações entre diversos componentes dos sistema.

As dificuldades no processo de software começam durante as etapas iniciais de um projeto: delimitar o escopo de um sistema está longe de ser uma tarefa trivial. A volatilidade dos requisitos é uma das maiores causas de insucesso de projeto de software. Muitas vezes, mesmo que a estrutura do software tenha sido toda desenhada, é muito complicado prever como será programa acabado.

A qualidade é um conceito muito subjetivo, o que para uns pode ser bom, para outros não. Por isso, estabelecer critérios (requisitos) que sirvam de base é uma forma de garantir a qualidade de um determinado produto/processo. É preciso saber como cada pessoa envolvida no projeto influi sobre os requisitos para conhecer com precisão o objetivo que se pretende alcançar.

Então é possível dizer que a qualidade de software é o conjunto de características mensuráveis que possibilitam a um produto atender as necessidades do cliente, de forma confiável, acessível, segura, no tempo certo e com o menor custo:
  • Qualidade de Processo – refere-se às “atividades, métodos, práticas e transformações que profissionais de informática utilizam para desenvolver e manter software e os produtos associados” (CMMI)
  • Qualidade de Projeto – refere-se ao correto emprego da metodologia definida e dos recursos disponibilizados na produção de software, objetivando: Eficiência, Eficácia, Controle de Custos, Cumprimento de Prazos, Satisfação de clientes e usuários
  • Qualidade de Produto – seu controle visa garantir a conformidade com as especificações de projeto
Algumas recomendações nas atividades relacionadas a qualidade de software:
  • Requisitos de qualidade de software - orçamento para realização, usuários envolvidos, ferramentas e métodos necessários, aspéctos relacionados a segurança de funcionamento e as consequencias que as falhas podem causar.
  • Detecção a não-conformidade dos requisitos - teste de software, revisões, inspeções, auditorias e ferramentas automatizadas de verificação.
  • Técnicas para gerenciamento de qualidade - orientada a pessoas, como é o caso de revisões e auditorias; estáticas, que não envolvem execução do produto; dinâmicas, que são efetuadas durante a execução do software; e as técnicas analíticas, que fazem uso de métodos formais.
  • Medição de qualidade - conjunto de dados obtidos por medidas é um recurso de extrema ajuda para auxiliar a tomada de decisões gerenciais.
Características que determinam o grau de qualidade de um produto final de software:
  • Facilidade de instalação
  • Facilidade de utilização
  • Previsibilidade de comportamento
  • Padronização das interfaces e do código fonte
  • Cobertura das necessidades funcionais que se pretende atender (escopo)
  • Exatidão de resultados
  • Tratamento apropriado de casos normais e exceções
  • Facilidade de manutenção

domingo, maio 11, 2008

Modelo de um documento de iniciação da monografia

Título (localizador do trabalho)
- Motivação (inclui a descrição do problema)
- Objetivos
- Resultados Esperados e Contribuições (produtos e extensões de conhecimento)
- Método de Pesquisa (atividades)
- Cronograma (atividades no tempo)
- Referências a serem consultadas

quarta-feira, maio 07, 2008

dica de leitura

1968: o Ano que Não Terminou
Zuenir Ventura

"Fascinante reconstituição dos acontecimentos de 1968 no âmbito do país. Os heróis dessa geração que queriam virar o mundo pelo avesso, seus dramas e paixões, suas lutas e vitórias estão descritos neste relato fundamental para a compreensão do Brasil contemporâneo."

segunda-feira, abril 14, 2008

Conceitos de padrões de projeto de software

Projeto de software orientado a objetos reutilizável:

  • identificar objetos pertinentes

  • fatorar os objetos em classes

  • definir interfaces

  • definir hierarquia de herança

  • estabelecer as relações-chave entre objetos

A grande dificuldade é tentar desenvolver sistemas específicos que ao mesmo tempo sejam genéricos afim de que no futuro os componentes modelados possam ser reutilizado.

Boas soluções precisam ser reutilizadas repetidamente, ou seja, padrões de classes e de comunicação entre elas devem ser repassados entre diferentes projetos, dessa forma os projetos orientados a objetos tornam-se mais flexíveis.

Padrões de projetos tornam mais fácil reutilizar projetos e arquiteturas. Os padrões de projetos ajudam a escolher alternativas de projeto que tornam um sistema reutilizável.

Segundo Christopher Alexander “cada padrão descreve um problema no nosso ambiente e o cerne de sua solução, de tal forma que você possa usar essa solução mais de um milhão de vezes, sem nunca faze-lo da mesma maneira” [AIS+ 77]. Para Erich Gamma padrões de projeto “são descrições de objetos e classes comunicantes que precisam ser personalizadas para resolver um problema geral de projeto num contexto particular. Um padrão de projeto nomeia, abstrai, e identifica aspectos-chave de uma estrutura de projeto comum para torna-lo útil para a criação de um projeto orientado a objetos reutilizável” [G193].

Um padrão possui 4 elementos essenciais:

  1. O nome do padrão: vocabulário de projeto.

  2. O problema: descreve em que situação aplicar o padrão.

  3. A solução: elementos que compõe o padrão de projeto (relacionamentos, responsabilidades e colaborações)

  4. As consequências: resultados e análise das vantagens e desvantagens da aplicação do padrão. As consequências de um padrão incluem o seu impacto sobre a flexibilidade, a extensibilidade ou a portabilidade de um sistema.

sábado, janeiro 26, 2008