Desmistificando a análise de sistemas

Prefácio

Nada como uma linda manhã de Domingo para estar inspirado e escrever um novo artigo. O título foi a ultima coisa a ser definida. Terminado mais um ano, em 04/01/2015 completei mais um aniversário na Totvs, são 16 anos completos, com muitos desafios, sempre vistos como oportunidade de crescimento, e muitas realizações, cada uma com um sabor especial. Agora estou curtindo alguns dias de férias, recarregando as baterias para entrar no 17o ano, com mais desafios, aprendizados e compartilhamento de experiências, buscando novas realizações.

Hoje o post não têm códigos de máquina, nenhum programa. Em um post anterior, “Desmistificando a programação”, eu tentei em algumas palavras mostrar que programar um computador é mais simples do que parece a primeira vista. O post de hoje complementa o artigo inicial, e estende a sua abrangência até a análise de sistemas. Novamente, afirmo que isto não é um bicho de 7 cabeças 🙂

Introdução

No último século, nunca houve tanta evolução em comparação com qualquer outro período da história da humanidade. Não me refiro apenas a informática, computação ou tecnologia da informação, mas em todas as áreas. A conquista do espaço, os avanços da medicina, o estudo do genoma humano, erradicação de algumas doenças, globalização, a revolução industrial, muita coisa para colocar em apenas um parágrafo.

O uso da eletricidade e as pesquisas realizadas para descobrir mais formas de utilizá-la levaram a um avanço desproporcional da tecnologia da informação e a outras ferramentas e recursos utilizados em todas as áreas. Pra ser um pouco mais específico, após a descoberta de materiais semicondutores, capazes de modular corrente elétrica em baixa voltagem e com tamanho cada vez mais reduzido, foram criados os mais diversos tipos de equipamentos. E estes evoluiram assustadoramente nos ultimos 50 anos.

Computadores

Um computador que ocupava um andar de um prédio, foi reduzido até ficar do tamanho de um fogão doméstico, e foi crucial para completar com sucesso a primeira missão tripulada para o espaço, que conseguiu sair da órbita da Terra, chegar até a lua, descer no asteroide, voltar novamente ao espaço e retornar em segurança de volta à Terra. Outro dia assisti a um documentário da History Channel que abordou os detalhes dessa proeza, inclusive entrevistou algumas pessoas ainda vivas atualmente, que participaram direta ou indiretamente neste projeto.

Cada equipe envolvida tinha desafios inéditos e realmente difíceis para fazer o projeto dar certo. Desafios de concepção, testes, validações e integrações, um universo de possibilidades a ser avaliado, muitas das soluções encontradas tiveram que ser re-feitas várias vezes, até que fosse encontrada uma alternativa funcional, e torná-la viável. Mas todas elas tinham um ponto em comum: Foi estabelecido um alvo, uma meta a ser realizada. E, a partir dela, quais as etapas necessárias para que esta meta fosse atingida. Primeiro definimos o que queremos como resultado, para então trabalhar em como fazer este resultado ser atingido.

Cozinhar arroz

E esta linha de raciocínio aplica-se praticamente a toda e qualquer realização, para qualquer objetivo. Partindo de um exemplo simples, vamos determinar um objetivo: Eu quero arroz no almoço de hoje. Detalhando um pouco mais o objetivo, deve ser arroz branco comum, não parbolilizado ou integral, apenas arroz tipo 1, e é para o almoço de hoje, e necessariamente eu quero cozinhar esse arroz. Para fazer esta tarefa, eu preciso enumerar os insumos necessários para cozinhar arroz, e as etapas necessárias para uso destes insumos, para no final da execução de todas as etapas, meu resultado seja “arroz cozido”.

Logo, vou precisar pelo menos de um recipiente de preparo (panela), uma fonte de calor (fogão), acessórios de preparo (copo para medida, uma colher), e é claro, vou precisar de arroz, água e temperos. E, na lista de tarefas para preparar o arroz, eu preciso definir todas as etapas de preparo, como lavar o arroz, ferver água, misturar o arroz com os temperos, colocar para cozinhar, etc. São todos procedimentos simples, mas é necessário saber cada um deles e executá-los corretamente para que o resultado seja arroz branco soltinho e apetitoso.

E, como todo o problema simples esconde um universo de problemas menores, qualquer etapa trocada ou mal executada interfere no resultado. Se a quantidade de água não for correta, ou o arroz fica cru ou fica “empapado”, se a panela não for tirada do fogo na hora certa o arroz fica cru ou queima no fundo. E, se faltar algum insumo ou algum recurso usado para fazer o arroz apresentar problema, você nem chega perto do resultado… Por exemplo, o fogão quebrou durante o cozimento, ou acabou o gás, ou não têm arroz no armário e o mercado está fechado.

Da cozinha pro teclado

Qualquer semelhança entre fazer arroz, escovar os dentes, e projetar um sistema informatizado não é mera coincidência. Tirando o uso final do resultado (você não vai colocar o sistema em um prato e almoçá-lo), as etapas básicas são as mesmas de qualquer atividade. O que fatalmente muda é a quantidade de etapas e os tipos de insumos aplicados.

Todas estas tarefas têm em comum a necessidade de levantar o que precisa ser feito, como deve ser feito, e se todos os insumos necessários existem, estão disponíveis e em condições de uso, e podem envolver um plano de contingência para cobrir as maiores possibilidades de fracasso da tarefa. Se o arroz der errado, é bom você ter um miojo guardado no armário, para não ficar com fome.

Projetando, analisando e desenvolvendo

Na construção de um um sistema informatizado, ou apenas no desenvolvimento de uma funcionalidade de um sistema, primeiro você precisa saber exatamente qual é o resultado esperado, depois avaliar as possibilidades de obter este resultado, verificar se a possibilidade escolhida é aplicável, analisar e aplicar a possibilidade escolhida. Dado o número de varíaveis, procedimentos, fluxo da informação e componentes deste processo, a atividade de análise e desenvolvimento de sistemas pode parecer num primeiro momento muito complexo, mas cada etapa e cada necessidade pode ser dividida em fases e etapas menores, onde algumas etapas podem ser feitas ao mesmo tempo, e quando se tem mais de uma pessoa no mesmo projeto, algumas etapas podem ser paralelizadas.

Esta lógica é praticamente instintiva, nós aplicamos ela sem perecber em muitas atividades corriqueiras do nosso cotidiano. Sim, a tal da lógica de programação, é tão simples quanto isso. Para escovar os dentes, precisamos conhecer as etapas do processo, experimentar o processo, fazer alguns ajustes na forma de execução ou na sequência ou no tempo de cada etapa, após algumas tentativas, a execução do processo torna-se tão natural, que nós nem precisamos mais pensar nas etapas, elas são realizadas naturalmente. Nós não nascemos sabendo escovar os dentes, nós aprendemos isso. Em um determinado momento, nós apredemos o que é a escova, pra que serve, qual é a maneira certa de segurar a escova, o que precisamos para usá-la, e como usá-la da melhor forma. Não é nada diferente das etapas de análise e desenvolvimento, ou aprendizagem e uso de uma linguagem de programação. O que pode tornar este aprendizado naturalmente mais difícil é a quantidade de elementos envolvidos e a quantidade de propriedades destes elementos.

Conclusão

Desde o princípio da informática, um bit têm apenas dois valores lógicos: 0 (desligado) ou 1 (ligado), e a utilização de uma corrente elétrica para a representação binária em um ponto de um circuito é este ponto estar energizado (1) ou não estar energizado (0). Os conceitos de processo, sistemas operacionais, interface, memórias (temporaria e persistente) não mudou desde a sua origem. Tudo o que temos hoje é resultado da evolução deste model-base. Conhecendo bem a base deste modelo, definitivamente torma mais fácil entender o que ele é e como ele funciona.

A cada novo avanço da tecnologia da informação, a utilização de aplicações em computadores têm se tornado cada vez mais intuitiva, você não precisa aprender ou endender muito como o seu celular funciona por dentro, para ser capaz de fazer uma ligação, outirar uma foto e publicá-la no Facebook, ou para jogar nele. Então, cada vez menos pessoas sabem o que acontece por trás da tela do computador, celular ou tablet. Muitos cursos de informática ensinam como você opera algumas aplicações dentro de um sistema operacional, ou mesmo como operar um sistema operacional, mas poucos entram nos méritos de como isso acontece por dentro do equipamento.

Se você vai ser um operador da máquina ou de seus aplicativos, você não precisa efetivamente saber disso em maior profundidade, mas para programar um equipamento, é necessário aprofundar-se um pouco mais, e isto realmente abre seus horizontes e a sua forma de enxergar um sistema informatizado, e eu garanto que absorver este conheicmento faz muita diferença. Normalmente você estuda estes aspectos em maior profundidade fazendo um curso superior de tecnologia em análise e desenvolvimento de sistemas, e em maior profundidade em ciência da computação.

Quanto mais você conhece como o equipamento funciona, e quais são as melhores práticas de como utilizá-lo, as escolhas das alternativas para a solução que você busca tornam-se mais fáceis. Um desenvolvedor de sistemas deve gostar de aprender e não ter medo de desafios, pois cada novo desafio envolve novos aprendizados e extensões do seu conhecimento.

Até o próximo post, pessoal 😉

Anúncios

2 comentários sobre “Desmistificando a análise de sistemas

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s