análise de sistemas

Uma análise do Filme Matrix com a orientação a objetos

Fonte: webpages.charter.net

Crédito da imagem: webpages.charter.net

Já assistiu ao filme Matrix? Se você está lendo isso é porque provavelmente sim. Matrix foi um filme que revolucionou uma época e se tornou um clássico explorando um tema complexo ao compararmos a temática das maiorias dos filmes. De tudo que você já leu, ouviu ou viu sobre ele, já observou os vários conceitos da computação que estão presentes, particularmente, da programação orientada a objetos (POO)? Parece que não, mas existem! Para mostrar isso, permitam-me “viajar” um pouco na história do filme, sua temática e personagens.

Matrix é apresentada como um programa que foi feito para manter a mente dos humanos em pleno funcionamento, de modo que fosse cumprida a nossa função como fonte de energia para as máquinas. O mundo “real” na verdade não existia, ele era apenas uma simulação criada pelo programa em que todas as mentes humanas estavam conectadas. Os primeiros conceitos de POO que podemos encontrar no filme são de quando Morpheu apresentou a Neo o que é a Matrix pelo denominado “programa de carregamento”.  Lá, dentro de um espaço vazio sem fim, ele falou e demonstrou a criação de cada coisa dentro do programa, como um sofá, roupas, televisão e.. eles próprios! Cada uma dessas coisas eram objetos instanciados de uma classe. Neo, Morpheu e cada uma das pessoas na Terra eram apenas representações (objetos) de uma classe (Humanos).

Outros conceitos importantes também foram apresentados enquanto a tripulação estava dentro da nave Nabucodonosor. Em uma das cenas, a tripulação estava comendo o que eles mesmos chamavam de “gororoba”. Mouse, um dos tripulantes, começou a discutir qual seria o real gosto do “trigo gostoso” ou mesmo de um frango, já que o gosto era simulado pelo programa. Cypher, durante a reunião com o agente Smith, também volta a questionar o assunto quando divagou sobre o sabor do carne e da atribuição “suculenta” de seu gosto. Do que estamos falando aqui? Dos atributos de uma coisa. Atributos que, nestes casos, determinavam o gosto das coisas. Ainda dentro da nave, e em uma das cenas mais legais do filme, Neo se preparava para lutar contra Morpheu em um programa de simulação de combate. Para isso, ele começou a absorver várias técnicas (métodos) de combate de forma instantânea. Que conceito seria esse? A herança, que permitiu que Neo absorvesse as técnicas de combate da classe dos mestres em artes marciais.

Muita viagem? Pois bem, para finalizar ela temos mais adiante no filme a apresentação de outros conceitos básicos do POO como o encapsulamento, as interfaces e os Bugs (este último não especificamente do POO, mas presente em todos os paradigmas).

Durante uma cena clássica do filme, vemos Neo, que esperava ser recebido pelo Oráculo, interagindo com outros candidatos a escolhidos. Um deles, especificamente, um menino que entortava uma colher diz ao Neo, que procurava realizar o mesmo: “É impossível entortar a colher, você é que deve se entortar”. Ou seja, era impossível alterar os atributos de outro objeto sem um método deste declarado para isso, pois a colher havia sido implementada com o conceito de  encapsulamento. Os atributos (a consistência, no caso) da colher eram protegidos.

Por fim, falamos sobre as interfaces dos objetos dentro da Matrix. Com uso de interfaces pode-se publicar os métodos das classes sem dar os detalhes de sua implementação.  A interação com o mundo na Matrix era explicado pelo uso dessas interfaces. Detalhes das regras do funcionamento como da gravidade e da própria morte são “invisíveis” e não podem ser alteradas. Desta forma, mesmo os agentes (que possuíam atributos altíssimos de força, agilidade e velocidade) eram sujeitos a essas regras de interação com o meio.  A única exceção a isso seria um Bug – um mau funcionamento na Matrix – representado no filme pelo próprio escolhido: Neo.

Vocês observaram outros conceitos da programação orientada a objetos ou mesmo da computação?

Esse post foi inspirado por uma aula ministrada pelo grande Cecílio Cosag Fraguas.

5 erros comuns dos que afirmam: “ah…isso não é importante, é apenas a documentação do sistema”

Primeiramente, é importante entender que modelagem não é documentação. Entendendo-se isso, abaixo são descritos cinco erros comuns daqueles que ainda concluem que a documentação, ou melhor, a modelagem não é importante:

1 – A ausência de rastreabilidade dos requisitos e aprovação de sua linha de base dificulta a identificação das mudanças de escopo. Clientes podem solicitar novas funcionalidades ou mudanças naquelas já construídas e sem uma linha de base com os requisitos, há retrabalho na construção de novas versões do aplicativo em que o fornecedor, invariavelmente, arca com todo o custo.

2- O valor de um erro aumenta conforme se avança no projeto. Partindo-se diretamente para a construção o cliente irá validar o seu pedido, ou parte dele, apenas na homologação, onde ele pode apontar erros que foram provocados, em sua maioria, pelo entendimento incorreto da necessidade. A fase de modelagem possui artefatos textuais e visuais, como os protótipos, que fornecem formas valiosas para identificação de erros incorridos pela má interpretação da necessidade. O custo associado ao encontrar um erro na fase de modelagem é, conforme dito, muito menor do que quando encontrado na fase de homologação da solução.

3- “Pular” a fase de modelagem não significa economia de tempo. O tempo dispensado na modelagem provoca o encontro de erros pelo cliente apenas na fase de homologação. Retrabalho na fase de construção pode significar o gasto de um tempo, por vezes, até maior do que o planejado para a fase de modelagem.

4 – A modelagem proporciona a evolução da maturidade da solução conforme o avanço no desenho dos artefatos. Os diagramas por muitas vezes se completam e uma descoberta em, por exemplo, um diagrama de sequência provoca uma nova versão no diagrama de classes que provoca novas versões dos diagramas consequentes e, assim, até uma versão aprovada e definitiva.

5- Apesar de modelagem ser diferente de documentação, a modelagem gera sim importantes artefatos que, no final, documentam o que foi construído, o como foi construído e motivo pelo o qual foi construído. Sem ela, toda essa informação acaba concentrada em recursos ou empresas terceiras que pode gerar uma dependência desnecessária e muitas vezes prejudicial. Ainda falando sobre esse tópico, a ausência de uma documentação do legado pode provocar profundos impactos para a empresa. Há inúmeros exemplos de projetos gigantescos com o objetivo de levantar, por engenharia reversa, a documentação do legado, importante principalmente, para projetos de fusão e/ou incorporação e também projetos de migração para novas plataformas.

O que vocês acham? A fase de modelagem é ou não importante em um projeto de software?

Dell Studio XPS – Um Review

Meu perfil e necessidades: Além de nerd e hardcore eu também sou exigente. Preciso de uma máquina potente pois faço mestrado em otimização de algoritmos, gosto de jogar e, vira e mexe, edito fotos grandes e vídeos maiores ainda.

Meu dia-adia inclui atividades como compilar um algoritmo que faz uso intenso da CPU para cálculos e deixar ele executando durante horas a fio, para medir seu desempenho, melhorar ele e colocar para rodar outra vez. Para vocês terem uma idéia, vejam o gráfico abaixo do uso do meu PC durante uma dessas brincadeiras (com mais de seis horas de duração):

Deu pra perceber que o sistema passa por maus bocados, certo? O sistema de refrigeração tem de ser bom o bastante para aguentar essa carga, os componentes tem que trabalhar bem entre sí… entre outras coisas… Por exemplo, é comum eu também deixá-lo ligado (fazendo downloads, por exemplo) por dias (ou semanas) sem interrupção – e eu espero que ela não perca desempenho por causa disso.

Além disso, gosto de testar softwares e acabo brincando bastante com máquinas virtuais, o que também exige um sistema estável.

Então, minha máquina precisa REALMENTE ser muito potente, estável e confiável.

A história: Sempre gostei de montar minhas próprias máquinas. O pessoal do Fórum do Clube do Hardware sabe. É uma espécie de passatempo para mim e o resultado final é sempre mais vantajoso, pois, via de regra, termina com uma máquina muito mais potente do que uma “pronta” de marca pelo mesmo preço.

Entretanto, essa atividade acaba sempre consumindo bastante tempo: pesquisa de configurações, benchmarks, pesquisa de preços, espera pela entrega das peças, a montagem em sí, testes com o computador montado, o período de configurações e estabilização da configuração… Dependendo da máquina a brincadeira pode durar entre semanas e alguns meses até se atingir o resultado esperado. E desta vez, tempo era um luxo que eu não possuía.

No começo eu estava decidido a montar minha própria máquina, mas durante as pesquisas acabei decidindo dar uma chance às maquinas prontas, e comecei a estudá-las… E no fim acabei escolhendo (e comprando) um Dell Studio XPS, o que foi uma surpresa até para mim, mas que valeu a pena.

A venda: Fiz todo o processo online, na comodidade da minha mesa. No Site da Dell você pode comparar e personalizar o modelo inicial do PC escolhido por você (o que é muito legal!) e tirar dúvidas com os atendentes via telefone ou chat. Claro que eu escolhi o chat. São todos muito atenciosos e você tem, inclusive, a opção de falar sempre com a mesma pessoa, para manter o histórico da conversa.

Depois de personalizar minha máquina (pela enésima vez em vários dias) entrei no chat para tirar algumas dúvidas e fechei a conta por lá mesmo, passando alguns dados e o cartão de crédito.

Isso mesmo: não precisei preencher nenhum formulário. Comprei na base da conversa, literalmente. Foi uma experiência bastante positiva e tudo, PC, entrega e monitor de 24″ de LED, não saiu por mais de R$ 4 mil. Também vieram vários softwares originais, como o prórpio Windows 7, Office Home n Student, Roxio DVD burner e muitos outros, já incluso no preço.

Depois da compra, o processo de pós venda também foi muito bom: pelo site pude acompanhar o status da máquina, a cada passo da entrega, desde o processo de montagem, até o transporte, passando pelo aeroporto, países e locais por onde o brinquedo passou.

Ela veio muito bem embalada, num pacote intuitivo de abrir e bonito também, bem acabado, com uma boa lógica para desempacotar. Mesmo alguém não nerd não teria problemas para montar a máquina, apesar de a Dell oferecer uma opção para que um profissional vá até sua casa, monte o computador novo e migre os dados do seu PC antigo para você. Mamão com açucar.

Outro ponto que me ajudou a escolher foi a garantia: um ano e três meses à domicílio e mais dois anos na assistência técnica. Os mais “micreiros” podem falar: “ah, mas pra garantia valer você vai ter que ficar 3 anos sem dar upgrade na máquina. Impossível.” Errado. A Dell trabalha com o modelo de arquitetura aberta: eu posso, à qualquer momento, abrir minha máquina e fazer modificações sem perder a garantia. Show de bola né?

Sem falar no design: a máquina é muito bonita (tendo em vista que eu não sou grande fã de cases com neon e derivados, mas que até compraria um case mod do R2D2). Ela é branca, com um painel preto na frente e um “porta trecos” em cima, próximo das duas portas usb frontais e da saída para fones de ouvido e microfone. Ela é, inclusive, bonita até por dentro. Dêem uma olhada na galeria abaixo:

Este slideshow necessita de JavaScript.

O veredito: Sim, a máquina vale muito a pena. É muito estável e parruda e até hoje NUNCA travou, mesmo rodando várias aplicações pesadas ao mesmo tempo (e vários jogos também). Isso só acontece em máquinas com peças de ótima qualidade em que os componentes trabalhem muito bem juntos. E esse resultado você só obtem depois de pesquisas, testes e trabalho duro. A Dell está de parabéns em ter conseguido montar um computador potente e com um belo design ao mesmo tempo.

Então, caso você leitor precise de uma máquina para rodar os jogos mais exigentes, programar, editar vídeos ou fotos, eu recomendo um Dell Studio XPS!

Maiores detalhes:

Meu objetivo aqui foi criar um relato para aqueles que querem uma máquina parruda, mas sem muita dor de cabeça ou trabalho. Não vou postar resultados de testes, como 3D Mark e similares, pois acho que não vai agregar muito mais além dos fatos que eu já mencionei: sou um usuário hard core, uso meu processador, memória e placa de vídeo ao máximo para testar a otimização de algoritmos pesados de cálculo e empacotamento de sólidos.

Também gosto de jogar, e jogos como Star Craft II, The Sims Medieval, Crysis, Civilization 5, Ragnarok, Diablo II e vários outros rodam muito bem na minha máquina.

Atualmente estou editando uma foto de 2GB no photoshop, que nem faz cócegas no desempenho e recentemente renderizei um vídeo full HD de alguns GB com duração de 5min que também rodou suavemente na máquina. Processei o render com um algoritmo mixto, usando a placa de vídeo e processador. O resultado: um uso equilibrado de ambos, sem penalizar muito o desempenho geral da máquina. Dêem uma olhada no gráfico abaixo:

Configuração do sistema:

A configuração abaixo é a mesma que veio quando eu comprei o PC da Dell, exceto pelos sistemas operacionais (só o Windows veio de fábrica), o segundo monitor e o sistema de som surround, que eu já tinha.

Sistemas Operacionais (sem contar os da máquina virtual): Windows 7 Home Premium (principal / dia-a-dia) | Mac OS X Snow Leopard | Ubuntu 11.04
Processador: Intel Core I7 860
Memória RAM: 4GB DDR 3 a 1333mhz
HD: 2TB em RAID 0 (2x1TB SATA 3Gb/s 7200rpm HDDS)
Placa de Vídeo: nVidia GeForce GTX 260 | Monitor 1: Dell de 24″ Wide Full HD de LED | Monitor 2: Sansung de 17″
Placa de Rede: Aqui são duas. Uma Broadcom NetLink para Gigabit / Ethernet e uma DW1525 para wireless com suporte aos procolos 802.11a até 802.11n
Som: Realtech 5.1, com qualidade profissional | Caixas de Som: 5.1 c/ sub-woofer
Portas USB: Duas frontais, 8 traseiras.
Leitor de Cartões: Sim. Todos os modelos.
Leitor / Gravador de CDs e DVDs: Sim. Não peguei com leitor de BD pois ainda acho muito caro e sem necessidade (para mim), mas quem quiser pode adquirir já de fábrica.

No mais, dêem uma olhada no site para mais informações.