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.