+6

Porque devemos projetar? (parte 1)

criado por Éverton Antônio Ribeiro em 03/09/2002 4:00pm
Todos nós sabemos o quanto é difícil para um programador sentar por horas, dias, meses ou até anos, em volta de uma mesa com uma caneta e papel projetando todo um sistema. Em empresas de médio e grande porte isso não é problema pois existe o analista de sistemas que projeta e ajuda na confecção de softwares ou de páginas, mas e quando trabalhamos sozinhos ou em pequenas empresas? Como devemos agir?

Somos levados na maioria das vezes pelo impulso de começar a ver a coisa funcionado. Queremos sentar na frente da máquina e começar a digitar, a ver o nosso software desempenhando seu papel. Para o meu joguinho de pac-man ou minha página pessoal, isso pode até funcionar, mas será que isso irá funcionar quando eu for fazer um programa de controle financeiro, ou um portal para a minha cidade?

Se me perguntassem o quão grande é necessário que um programa ou uma página seja para que seja feito um projeto, eu diria que se ele tivesse mais que 10 linhas de código e fosse necessário mais que um dia para implementá-lo, seria necessário um projeto. Mas será que um projeto é tão necessário assim? Será que eu não poderia simplesmente fazer o programa e pronto?

Para podermos responder a essas perguntas podemos citar um pequeno exemplo: Imagine você elaborando um sistema de controle para uma empresa, seja ele em PHP, C/C++, COBOL e tantas outras linguagens e sistema diferentes. Depois de dois meses de trabalho você já criou praticamente todo o sistema, a maior parte do sistema está na sua cabeça já que você não usou nenhum projeto. Você conta com mais ou menos 70 classes em todo o sistema, uns 150 arquivos, 40 ou 60 mil linhas de código e grande parte delas digitas por você mesmo, dependendo de qual sistema você está usando isso pode variar muito.

Imagine agora que você gotaria de alterar a parte do sistema que calcula estoque e mercadorias fabricadas, sô que você não se lembra mais onde está e qual classe faz isso pra você. E agora, como descobrir? Depurar o código!? Não seria nada fácil - umas duas ou três semanas de depuração e você encontraria a tão desejada classe. Isso porque foi você que fez, agora imagina que se fosse outra pessoa. Tornaria-se praticamente impossível de ser realizado.

E isso não se aplica somente à grandes projetos, pois o mesmo poderia acontecer com uma simples criação de um componente, a diferença e a confusão de encontrar a classe seria bem menor, mas de qualquer maneira traria confusão.

Então podemos concluir que, se o sistema poderá vir a ser modificado futuramente ou que vai se contar com mais de uma pessoa, não tenha dúvida que o projeto é necessário. Isso muitas das vezes é difícil para o programador iniciante e também para o experiente. Mas com muita leitura e prática todo mundo aprende a fazer isso.

E claro que não devemos pensar que um programa pode ser feito de uma vez só quando ele foi bem projetado, podemos citar um pedaço do livro de um analista e programador que considero um mestre, apesar de não conhecê-lo:

“A análise e o projeto orientados a objetos são interativos. Quando desenvolvemos software, percorremos repetidamente o processo inteiro de análise, projeto, implementação e teste à medida que nos esforçamos para aprimorar a compreensão dos requisitos. O projeto guia a implementação, mas os detalhes que são descobertos durante a implementação alimentam de volta o projeto. Mas sobretudo, não tentamos desenvolver qualquer projeto relativamente grande em uma única e inflexível linha reta; em vez disso, interamos sobre as partes do projeto, constantemente aprimorando nosso projeto e refinando nossa implementação”.

Jesse Liberty nos mostra nesse pequeno trecho tirado do seu livro “C++ de A a Z”, que um programa não é feito unicamente de projeto, mas os dois devem caminhar lado a lado para que possamos ter o resultado devido. Se soubermos discernir entre o projeto e a sua implementação (construção do projeto na linguagem ou sistema escolhido), teremos a inteligência e a força para fazermos o que bem quisermos.

Comentários:

Mostrando 1 - 10 de 20 comentários
Poxa, depois de todos esses comentários estou curioso para ver um projeto.

Na loja virtual que eu estou desenvolvendo até fiz um pequeno projeto, mas não gostei muito, acho que talvez deveria ser implementado mais, pois eu vou adicionando recursos enquanto vou programando.

O projeto sem dúvida deve ser feito por alguém experiente com o assunto.
04/12/2002 9:39pm (~21 anos atrás)

Caro Everton, quero lhe dar os parabéns pelo seu artigo, gostei mesmo, claro, simples porém muito inteligente!
23/09/2002 12:42pm (~21 anos atrás)

Contanto que essa página não fassa parte de um site maior. Tudo bem!!

Tudo bem que um projeto que so vc entenda ajude, mas eu não recomendaria esse tipo de projeto, pois no fim ele se torna o inverso do que eu falei.

E quando ouver a necessidade de alguem modificar o que vc criou?

E evidende que já e valido mais de qualquer maneira devemos sempre tentar criar um projeto que seja legivel por qualquer outro ser humano. E se possivel ate para et's, mais isso já é uma outra história !!
20/09/2002 11:46am (~21 anos atrás)

Buenas !

Concordo, pois nem soh de maravilhas vivem os programadores, se tudo fosse tao facil e de facil acesso que graca teria...temos que pensar e molhorar cada vez mais nosso projetos...pois assim estaremos sempre evoluindo...

Valeu,

Gordo
17/09/2002 12:05pm (~21 anos atrás)

Infelizmente esse método mais simples seria muito dificil de se elabora pois, quanto mais simples as coisas mais complexas de serem elaboradas elas são e mais sujeita a erros elas estão.

Um exemplo: Qual o sistema mais simples em termos de operação? Logicamente o Windows. Mais ao mesmo tempo ele foi e é o um sistema muito complexo em termos de projeto e apresenta o maior número de erros do mercado de Sistema Operacionais(incluido o Internet Explorer o responsavel pela maioria dos erros).

As vezes facilidade não combinão com peformace e estabilidade e no caso de projetos a facilidade gera um sistema impotente em suas funções.

Mais o que não quer dizer que você esteja errado afinal o homem tem que evoluir e se pensarmos "É difícil de mais, não vamos fazer" estaremos dando um passo atrais e não a frente. Mas para que tudo sai de maineira desejada temos que para e pensar se de fato temos a necessidade de um sitema mais simples que e a UMl(por exemplo) para projetar software.
16/09/2002 12:21pm (~21 anos atrás)

Outro simples mais muito bom e o:

http://umlsculptor.sourceforge.net/
12/09/2002 12:17pm (~21 anos atrás)

Lyma disse:
O artigo abre uma discurssão importantíssima para qualquer tipo de programador.
Maioria das pessoas são extremamente imediatistas e querem iniciar a codificação sem nem saber exatamente o rumo... mesmo com toda a técnica, sem o planejamento vai tudo por água abaixo, e se o projeto é GPL então aí que a coisa complica mesmo.

Excelente artigo. Espero ansioso pela continuação.

[s]
Lyma
http://www.lymas.com.br
11/09/2002 7:13am (~21 anos atrás)

Você pode achar uma em http://argouml.tigris.org

--Joao
10/09/2002 2:48pm (~21 anos atrás)

George V. Oba disse:
Parabéns!!! Essa matéria foi muito boa!!!
Gostaria de fazer uma colocação: Quando estudamos engenharia de software, utilizamos exemplos para estudo que estão um pouco fora do nosso cotidiano. O que eu quero dizer é que nos apegamos a aplicações comuns (ex: lojas, cartões via e-mails, portais etc).
Em se tratando de projeto de sistemas a recomendação é a mesma. Ampliar a visão se projetista de sistemas, analista de sistemas ou engenheiro de SW não é uma tarefa tão fácil assim, porém estudando a BASE fortalecemos os conceitos desejáveis.
10/09/2002 7:36am (~21 anos atrás)

joseph disse:
Sempre eh bom fazer projetos, indentificar classes e arquivos em um arquivo separado dizendo o que cada um representa em um script ou programa de grande porte.

Mas parece que o pessoal da Microsoft naum fez isso com o windows(hehehe brincadeirinha... :))
08/09/2002 10:41pm (~21 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)