sexta-feira, 19 de novembro de 2010

Modelagem de Problema X Modelagem de Software

"Modelagem de problema computável" é o mesmo que "modelagem de software"?

Todos os problemas são solúveis por algoritmos? Sabemos que não. Nas disciplinas de algoritmos trabalhamos somente com "problemas computáveis", ou seja, problemas solúveis por dispositivos computacionais. Sinônimos de problema computável: problema solúvel, problema decidível, problema tratável e problema algorítimico.

No contexto da computação podemos encontrar dois tipos de modelagem que as vezes se confundem: "modelagem de programa (software)" e "modelagem de problema (computável)".

(1) Modelagem de Software. Sabemos que quando um software é desenvolvido é porque se pretende resolver um problema também. Neste caso utiliza-se a modelagem para compreender o problema, organizar as informações, estruturar o desenvolvimento, etc. Uma forma comum de modelagem de programas procedurais (não orientados a objeto) é através de fluxogramas, enquanto que a modelagem de programas orientados a objeto normalmente usam UML. Notem que também podemos utilizar este recurso para desenvolver ou compreender um algoritmo, principalmente fluxograma. Neste contexto de modelagem de sistemas também encontramos: DFD (Diagrama de Fluxos de Dados), DER (Diagrama Entidade-Relacionamento), organograma, diagrama de blocos, etc.

(2) Modelagem de Problema Computável. No contexto de desenvolvimento de algoritmo, modelar um problema signfica encontrar um modelo formal que "substitui" o problema do mundo real para ser "introduzido" na máquina (computador). Neste caso, uma fez que temos o modelo o passo seguinte é necessário encontrar um ALGORITMO para resolver o modelo. Exemplo de modelos formais: programação matemática, grafos e equações matemáticas. Este tipo de modelagem também tem sido chamado de Modelagem Computacional (http://pt.wikipedia.org/wiki/Modelagem_computacional)

Em (1) o modelo auxilia a compreender o problema real enquanto que em (2) o modelo substitui o problema real. No caso (1) o modelo irá auxíliar o programador na implementação, ou seja, é para ser utilizado por "ser humano", já no caso (2) o modelo é para ser utilizado pela máquina (computador), ou seja, o computador irá utilizar o algoritmo para solucionar o modelo. Em (1) o modelo é para humano, mas em (2) é para máquina.

Sabemos que existem ferramentas que o programador pode fazer a modelagem gráfica a partir do qual o código é gerado automaticamente em alguma linguagem. Mas isso é só para facilitar a vida do programador (humano), logo entra no caso (1) acima.

Nenhum comentário:

Quem sou eu

Minha foto
Professor Titular do Departamento de Informática da Universidade Estadual de Maringá - Paraná, foi pesquisador visitante na University of Nottingham, UK. Bolsista produtividade em desenvolvimento tecnológico e inovação pelo CNPq (órgão federal). Membro do conselho técnico do Núcleo de Inovação Tecnológica da UEM.