terça-feira, 6 de outubro de 2009

Iniciando no desenvolvimento de Software

Conforme prometido, vou falar hoje sobre como iniciei no desenvolvimento de software e explicar alguns conceitos importantes tanto de arquitetura quanto de programação.

Bom iniciei no desenvolvimento de software há dois anos e meio, como muitos vim do meio acadêmico e infelizmente nas faculdades e cursos que encontramos não temos as matérias de desenvolvimento de software de maneira integrada, com isso tive matérias como Banco de Dados, Engenharia de Software e Programação de forma independente e com poucas ligações entre elas.

Isso dificulta muito para aqueles que estão começando a entender todo o ciclo de desenvolvimento de software, como os conceitos e matérias aprendidas se complementam, assim fiquei por um bom tempo tentando aplicar esse conhecimento que obtive na faculdade sem conseguir, pois não sabia como um Diagrama de Classes de Negócio se relacionava a um Modelo ER e mesmo quando ou como ligar tudo isso na interface Gráfica.

Somente após começar a estagiar na área e ter meus primeiros contatos com programação, comecei a entender como se realiza o desenvolvimento de um software e o uso dos conceitos e ideias que aprendi na faculdade.

Durante o processo de concepção de um software surge a importância da Engenharia de Software e das Metodologias de Desenvolvimento, pois são elas que ajudam o desenvolvedor ou a equipe de desenvolvimento a mensurar e acompanhar todas as fases do desenvolvimento, lidando com os imprevistos e medindo o progresso das etapas.

Cada empresa que trabalhei até agora tem a sua própria estrutura e metodologia, cada uma adapta a sua realidade e usa até o nível que seus processos permitem. Isso é interessante, pois na faculdade vemos um mundo perfeito, onde tudo é entregue no prazo e todas as metodologias e idéias são obvias e ‘fáceis’ de serem aplicadas, quando entramos no mercado de trabalho é que verificamos que nem tudo são flores.

É interessante lembrar que no desenvolvimento de software existem diversas fases e a primeira e principal delas é a fase de Análise, nessa fase é importantíssimo entender e mapear todos os conceitos e as regras do negócio,  entender o que o software precisa fazer,  pois fazendo isso de forma correta você vai evitar muitos problemas futuros.

A partir desse momento que entendemos os requisitos e usamos alguma metodologia de desenvolvimento (explicarei melhor em outros posts) você vai conseguir ter segurança, para dar um prazo e principalmente para elaborar uma arquitetura e pensar em uma maneira de iniciar o desenvolvimento do seu software.

Como você pode perceber a linguagem de programação e a plataforma de desenvolvimento ainda não foram comentadas, pois essa é uma das últimas etapas que verificamos, o essencial é termos uma análise profunda dos problemas que estamos querendo solucionar e das possiveis soluções que podemos propor.

É importante também pensar em coisas como: O Sistema vai ser Web? Vou ter comunicação com outros sistemas? O Software terá um sistema central e vários secundários? Essas perguntas, ajudam a pensar na arquitetura do seu software, em como cada parte dele vai cuidar das funcionalidades, por exemplo um sistema PDV que realiza pedidos e emite esses pedidos para um sistema central que faz o controle do estoque, da reposição, da entrega, da nota fiscal.

Com isso começamos a entender qual é o núcleo do sistema e pensar nesse núcleo, no caso do exemplo do PDV, a primeira coisa a fazer é pensar em como gerar o pedido, pois solucionando isso, automaticamente você vai estar definindo uma arquitetura, as outras funcionalidades como relatório e cadastros serão mais fáceis de implementar e menos sujeitas a mudanças.

Isso é importante pois as vezes acreditamos que montando as telas de cadastro vamos estar começando bem o software, mas vamos pensar um pouco, se eu montar essa tela e mais para frente descobrir que vou precisar de um campo a mais, além de ter que alterá-la, não vou ter definido arquitetura nenhuma, não vou estar cobrindo o núcleo do sistema.

Sempre lembre-se de que todo software tem seus riscos, o sistema de PDV vai usar um leitor de cheque? Um leitor de cartão de crédito? Você conhece como esse processo é feito? Isso são riscos que devem ser atacados logo no começo quando pensamos nessa arquitetura, no núcleo do sistema, senão podemos avançar até certo ponto no projeto e pararmos por não termos feito uma análise correta.

Após esse processo de análise, de conhecer o núcleo do sistema e desenvolver uma arquitetura para ele, ai sim começamos a pensar na plataforma de desenvolvimento, na linguagem de programação e começarmos a programar alguma coisa.

Enfim, esses são os passos iniciais para quem quer iniciar no desenvolvimento de software, existem outras coisas que serão comentadas em outros posts, mais seguindo essas dicas e esses procedimentos os conhecimentos adquiridos no meio acadêmico vão fazendo sentido e te auxiliando a iniciar nesse mundo tão interessante e cheio de possibilidades.

quarta-feira, 30 de setembro de 2009

Processo de Desenvolvimento de Software

Oi, meu nome é Hugo Laércio e vou começar a partir de agora publicar algumas ideias sobre desenvolvimento de software, programação, usabilidade e tendências que observo.

Agradeço a todos que me acompanharem a partir de agora e como primeiro post quero falar sobre o processo de desenvolvimento de software.

Desenvolver software é uma das coisas mais interessantes e misteriosas que existe, a capacidade de cada pessoa demostrar seu intelecto e sua forma de pensar através de comandos como IF , WHILE , FOREACH, nossa capacidade de observar, analisar, criar novos produtos e trabalhar sobre produtos ou ferramentas existentes.

Todos nós desenvolvemos algo, em cada campo de nossas vidas e em desenvolvimento de software acabamos levando um pouco de nossas idéias, preconceitos, idealismos para o código, para a arquitetura do produto, para o design final do mesmo, para o relacionamento com os outros membros da equipe, assim vamos deixando nossas marcas em cada linha de código, em cada método, evento e classe que criamos.

Muitos se perguntam como começar a desenvolver software, os primeiros passos, desafios, coisas que agregam valor em seu software e tendências e técnicas que melhoram sua programação e seu processo de análise, vamos começar a conversar sobre cada um destes itens, neste e nos próximos posts.

Desenvolver software é basicamente análisar uma determinada situação, como por exemplo a organização de uma livraria e pensar nos processos envolvidos, na devolução, no empréstimo, as informações que são necessárias e trocadas entre o sistema e os usuários do mesmo.

Analisar os caminhos e os passos que o usuário necessita para concluir uma etapa (por exemplo: cadastrar um livro) o que normalmente ele faz, e como analista e desenvolvedor o que você pode melhorar no processo. Melhorar o processo é algo que leva tempo e que requer conhecimento profundo do processo ou uma análise muito apurada para verificar o que pode ser alterado.

Muitas vezes esse processo de melhoria pode ser realizado com coisas simples, uma interface mais amigavel, uma mensagem melhor elaborada, a posição correta de um botão ou mesmo um pequeno tooltip que indique ao usuario o que significa aquela informação que ele precisa inserir no seu sistema.

Assim vamos iniciando nosso processo de aprendizado e de troca de conhecimento, vou preparar um próximo post falando sobre como comecei a desenvolver e com isso ir explicando idéias de metodologias de desenvolvimento e arquitetura, DAO, Mapeamento Objeto Relacional e Orientação a Objeto.

Obrigado pela leitura.