• Nenhum resultado encontrado

2.4 Resolução de Problemas no Contexto de Programação

2.4.3 Pólya e o Processo de Desenvolvimento de Software

Como descrevemos na Seção 2.3, o modelo de resolução de problemas de Pólya é composto de quatro fases: (1) entender o problema; (2) estabelecer um plano; (3) executar o plano; e, (4) examinar a solução obtida.

Nós observamos uma relação entre estas fases do modelo de Pólya e o processo de desenvolvi- mento de software. De modo geral, podemos compreender o processo de desenvolvimento de soft- ware como sendo composto da definição dos requisitos, projeto de software, implementação, testes e manutenção [IEEE 2004].

Definir os requisitos que um projeto de software deve atender é a etapa inicial do processo de desenvolvimento de software e é uma fase significativa para o entendimento do problema. Nesta fase são realizadas a definição do escopo e objetivo do problema, assim como a definição dos requisitos que o software deve atender. Há, portanto, uma correspondência entre a definição dos requisitos e a primeira fase do modelo de Pólya – entender o problema.

2.4 Resolução de Problemas no Contexto de Programação 24

O projeto de software diz respeito ao processo de definir a arquitetura, os componentes, interfaces e outras característica do sistema. O projeto de software tem correspondência com a segunda fase do modelo de Pólya que é estabelecer um plano para alcançar a solução.

A implementação diz respeito a construção do software por meio da utilização de uma combi- nação de recursos de desenvolvimento, tais como, linguagem e ambiente de programação, sistemas de controle de versões, entre outros. A implementação corresponde à fase de execução do plano, no modelo de Pólya.

Os testes permitem aferir a qualidade do software. A manutenção refere-se a modificações no software para corrigir defeitos, melhorar sua performance ou outros atributos que se façam necessários. Testes e manutenção têm correspondência com a última fase do modelo de Pólya, que é a de examinar a solução obtida.

No Quadro 2.8, nós apresentamos uma síntese das relações entre o modelo de Pólya e o processo de desenvolvimento de software. É importante destacarmos que essas fases são iterativas e não se- qüenciais. Isto significa que as atividades em cada fase podem ser refinadas até que o objetivo seja alcançado.

Embora tenhamos feito uma descrição evidenciando todas as fases, nosso trabalho tem como ênfase a fase de entendimento do problema (segundo o modelo de Pólya) ou a definição de requisitos (se considerarmos o processo de desenvolvimento de software).

Quadro 2.8: Relação entre o modelo de Pólya e o processo de desenvolvimento de software.

Pólya Processo de Desenvolvimento de Software

Entender o Problema: identificar os dados relevan-

tes do problema.

Definição de Requisitos: identificar e definir os re-

quisitos que o software deve atender.

Estabelecer um Plano: decompor o problema em

partes e produzir estratégias para alcançar uma solução.

Projeto de software: definir a arquitetura, os compo-

nentes, interfaces e outras característica do sistema.

Executar o Plano: construir uma solução. Implementação: construir o software.

Examinar a Solução: avaliar a solução obtida. Testes e Manutenção: aferir a qualidade do software

Capítulo 3

Programação Orientada ao Problema

Programação Orientada ao Problema (POP) é uma metodologia de ensino que contempla um con-

junto de atividades a serem inseridas em disciplinas introdutórias de programação a fim de auxiliar os estudantes da especificação dos requisitos ao programa.

Da perspectiva do ensino, POP combina atividades de Engenharia de Software e Programação; possibilita a realização de atividades em grupos e individuais; e pode ser utilizada desde a resolução de problemas simples até problemas mais complexos.

Da perspectiva da aprendizagem, POP proporciona aos estudantes uma visão mais realista do processo de desenvolvimento de software, permitindo-lhes conhecer e exercitar, em conjunto com a programação, outras atividades de Engenharia de Software, tais como, elicitação e especificação de requisitos e testes. Além da prática dessas atividades, os estudantes desenvolvem habilidades de diálogo, negociação e escrita.

Neste capítulo, nós descrevemos os princípios que fundamentam POP, seus participantes e pa- péis, e atividades desenvolvidas pelos estudantes para a resolução de problemas. Para orientarmos os docentes na aplicação de POP, nós disponibilizamos no Apêndice A os guidelines e material de su- porte. Esses materiais também encontram-se disponíveis no site http://sites.google.com/ site/joinpop/.

3.1

Princípios Pedagógicos e Técnicos

Os princípios pedagógicos e técnicos que fundamentam POP são:

• Assumir Programação como parte da Engenharia de Software;

3.1 Princípios Pedagógicos e Técnicos 26

• Adotar um ciclo1 de resolução de problemas que vai da especificação dos requisitos ao pro-

grama;

• Produzir, como resultado do ciclo de resolução de problemas, especificação, programa e testes,

ao invés de um único artefato – o programa;

• Adotar problemas mal definidos como parte integrante dos problemas propostos em disciplinas

de programação;

• Adotar testes desde o início da disciplina, tanto para descobrir e/ou confirmar requisitos, quanto

para aferir a qualidade do programa.

Como enfatizamos no Capítulo 1, programação resulta em um produto de software e, como tal, produz artefatos que devem atender necessidades de um cliente e cuja qualidade precisa ser aferida. Não há, portanto, como dissociá-la da própria Engenharia de Software.

Por concebermos programação como descrito acima, acreditamos que a forma de resolver pro- blemas na disciplina introdutória de programação deve ser a mais realista possível, permitindo que os estudantes tenham uma compreensão de como os problemas são resolvidos no contexto de de- senvolvimento de software. Neste contexto, os problemas são mal definidos e, para solucioná-los, os desenvolvedores precisam ir da especificação dos requisitos ao programa. Esta experiência de

desenvolvedor deve ser vivenciada pelos estudantes de programação.

Os princípios de POP são apoiados pelas diretrizes curriculares para a área de Computação e Informática, as quais recomendam que o ensino de programação enfatize outras habilidades além do raciocínio lógico e da construção de programas. No Brasil, as diretrizes curriculares sugeridas pela Secretária de Educação Superior [MEC/SESU 1999] definem programação de computadores como sendo “uma atividade voltada à resolução de problemas. Nesse sentido ela está relacionada

com uma variada gama de outras atividades como especificação, projeto, validação, modelagem e estruturação de programas e dados, utilizando-se das linguagens de programação propriamente ditas, como ferramentas” [MEC/SESU 1999, p. 5].

A Joint Task Force on Computing Curricula [IEEE/ACM 2001], ao tratar especificamente sobre cursos introdutórios de programação, afirma que “estes cursos freqüentemente simplificam o pro-

cesso de programação para torná-los mais acessíveis aos estudantes iniciantes, dando pouco peso

1Ciclo é definido como um conjunto de fatos ou ações que se sucedem no tempo, marcando uma diferença

entre o estágio inicial e o estágio conclusivo. Esta definição foi extraída do dicionário Houaiss da Língua Portuguesa, disponível em http://houaiss.uol.com.br/ e acessada em outubro de 2010.