Você está na página 1de 60

UNIVERSIDADE FEDERAL DE PERNAMBUCO

CENTRO DE INFORMÁTICA
GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO

SANDRINE VENTURA MARTINS

EM DIREÇÃO A UMA PROPOSTA PRÁTICA PARA O
ENSINO DA ENGENHARIA DE SOFTWARE NO
CENTRO DE INFORMÁTICA
Trabalho de Graduação

RECIFE
2016

SANDRINE VENTURA MARTINS

EM DIREÇÃO A UMA PROPOSTA PRÁTICA PARA O
ENSINO DA ENGENHARIA DE SOFTWARE NO
CENTRO DE INFORMÁTICA

Trabalho apresentado ao curso de Sistemas de
Informação da Universidade Federal de
Pernambuco como requisito parcial para
obtenção do grau de Bacharel em Sistemas de
Informação.
Orientador: Vinicius Cardoso Garcia

RECIFE
2016

SANDRINE VENTURA MARTINS

EM DIREÇÃO A UMA PROPOSTA PRÁTICA PARA O
ENSINO DA ENGENHARIA DE SOFTWARE NO
CENTRO DE INFORMÁTICA

Trabalho apresentado ao curso de Sistemas de
Informação da Universidade Federal de
Pernambuco como requisito parcial para
obtenção do grau de Bacharel em Sistemas de
Informação.
Aprovada em: ____/____/____.
BANCA EXAMINADORA

____________________________________________________

Vinicius Cardoso Garcia
Universidade Federal de Pernambuco

____________________________________________________

Simone Cristiane dos Santos
Universidade Federal de Pernambuco

Dedico aos meus pais e amigos.

Agradecimentos
Agradeço primeiramente a Deus, reconhecendo que tudo é dEle, por Ele e para Ele.
Em especial agradeço aos meus pais, Etiene Martins e Samuel Martins, e aos meus
irmãos, Maxwell Martins e Suelen Martins por nunca medirem esforços para me
apoiar e ajudar em cada etapa da minha vida, e sempre estarem ao meu lado,
mesmo que a distância nos separe fisicamente.
A todos os professores que me acompanharam por esta jornada e me
ensinaram mais que os conteúdos de suas disciplinas, me ensinaram a ser uma
pessoa e uma profissional excelente. Em especial ao professor Vinicius Garcia pelo
interesse, confiança, empolgação e tempo dedicado a realização deste trabalho.
A Jorge Linhares, meu namorado, que durante toda a graduação esteve do
meu lado, me dando todo e qualquer apoio necessário.
Por fim, agradeço aos meus amigos, em especial Yasmine Santos, Beatriz
Arruda, Filipe Epifanio, Bruno Andrade, Priscila Thyfani, Ruan Pablo e Rayelle Vera
Cruz pelas palavras de incentivo ao longo desses 4 anos.

Resumo
A educação em Engenharia de Software, ao longo dos anos, tem incorporado novas
abordagens e técnicas visando à melhoria na qualidade do seu processo de
ensino-aprendizagem utilizando: integração entre disciplinas, jogos, projetos reais
de software, entre outras. Na maioria dos casos, entretanto, essas experiências no
ambiente universitário não refletem as necessidades da indústria e não despertam
interesse nos alunos. Ao considerar essa conjuntura, verifica-se a necessidade de
se estudar as referências curriculares para o ensino da engenharia de software e
aplicá-la em seus contextos variados. Com o objetivo de melhor explorar esse
cenário, este trabalho apresenta os resultados de pesquisa realizada para averiguar
se as disciplinas de Engenharia de Software do Centro de Informática da
Universidade Federal de Pernambuco em Recife - Brasil, tem recebido a devida
importância quanto ao processo de ensino-aprendizagem de suas áreas de
conhecimento, carga horária apropriada e se refletem a necessidade da indústria.
Palavras-chave​: engenharia de software, educação,
graduação, indústria de software, área de conhecimento.

ensino-aprendizagem,

Abstract
Over the years, education in Software Engineering had incorporated new
approaches and techniques in order to improve the quality of the teaching-learning
process by using: integration between disciplines, games, real software projects,
among others. In most cases, however, these experiences in the university
environment do not reflect the needs of the industry and do not arouse interest
among students. By considering this scenario, there is a necessity of studying the
curriculum references for the teaching of Software Engineering and apply them in
their various situations. With the purpose of better explore this context, this paper
presents the results of a research carried out to ascertain if the Software Engineering
disciplines, that are taught at Centro de Informática at Universidade Federal de
Pernambuco, in Recife - Brazil, have been receiving proper importance in the
process of teaching-learning at their areas of knowledge, appropriate workload, and
if these disciplines reflect the industry demands.
Keywords: ​software engineering, education, teaching-learning, undergraduate,
software industry, knowledge area.

Lista de Figuras
Figura 1 - Áreas da engenharia de software nos currículos de referência

20

Figura 2 - Porcentagem dos tópicos das áreas da engenharia de software

21

Figura 3 - Enfoques teóricos de ensino-aprendizagem

23

Figura 4 - Engenharia de software no primeiro ano

30

Figura 5 - Engenharia de software no segundo ano

31

Figura 6 - Sequências de ensino da engenharia de software

31

Figura 7 - Estrutura curricular geral para um curso de computação

32

Lista de Gráficos
Gráfico 1 - Currículos de referência adotados para ensino da engenharia de

40

software
Gráfico 2 - Relevância das áreas de conhecimento da engenharia de software

40

Gráfico 3 - Abordagens de ensino

41

Gráfico 4 - Mecanismos de avaliação

42

Gráfico 5 - Principais desafios no ensino da engenharia de software

42

Gráfico 6 - Ferramentas didáticas

43

Gráfico 7 - Percentual de aprendizagem por área de conhecimento

44

Gráfico 8 - Áreas de conhecimento que deveriam receber maior ênfase

45

Gráfico 9 - Principais problemas que influenciam negativamente no aprendizado

46

Gráfico 10 - Importância das áreas de engenharia de software

47

Gráfico 11 - Áreas que devem receber maior atenção quanto ao seu ensino na

49

graduação
Gráfico 12 - Correlação entre maior relevância e aprendizagem

51

Gráfico 13 - Correlação entre menor relevância e aprendizagem

52

Lista de Tabelas
Tabela 1 - Principais fontes de mudança nas práticas da engenharia de software

21

Tabela 2 - Teorias da aprendizagem e suas características

25

Tabela 3 - Fatores que afetam o processo de ensino

26

Tabela 4 - Técnicas de ensino e suas características

28

Tabela 5 - Questões e opções de respostas para os professores

36

Tabela 6 - Questões e opções de respostas para os alunos

36

Tabela 7 - Questões e opções de respostas para os profissionais de engenharia

37

de software
Tabela 8 - Gap de conhecimento das áreas de engenharia de software

47

Tabela 9 - Importância dos tópicos de engenharia de software em relação a

49

outras pesquisas

Sumário
Introdução
Motivação
Objetivos
Estrutura do Trabalho

12
12
13
14

Evolução do Currículo da Engenharia de Software
Diretrizes Curriculares Nacionais
Ministério da Educação
Sociedade Brasileira de Computação
Diretrizes Curriculares Internacionais
Association for Computing Machinery (ACM)
Engenharia de Software
Engenharia da Computação
Ciência da Computação
Sistemas de Informação
SWEBOK
Considerações Finais

15
15
15
16
16
16
16
17
18
18
19
22

Processo de Ensino-aprendizagem aplicado à Engenharia de Software
Processo de Aprendizagem
Processo de Ensino
Engenharia de Software em vários contextos
Considerações Finais

23
24
26
29
33

Metodologia
Planejamento e Aplicação do Survey
Público-alvo
Questionários
Survey com professores das disciplinas de engenharia de software
Survey com alunos concluintes de alguma disciplina de engenharia de software
Survey com profissionais da área de engenharia de software
Os participantes do Survey

34
34
34
35
35
36
37
38

Resultados dos Questionários
Professores
Planejamento pedagógico das disciplinas de engenharia de software
Conteúdo programático das disciplinas de engenharia de software
Carga Horária das disciplinas de engenharia de software e aptidão dos alunos
Currículos de Referência adotados na ementa de engenharia de software
Áreas de conhecimento contempladas na ementa de Engenharia de Software
Abordagens de Ensino das disciplinas de engenharia de software

39
39
39
39
39
39
40
41

Desafios do ensino em Engenharia de Software
42
Alunos
43
Carga horária e Habilidade em desenvolvimento de software
43
Ferramentas Didáticas das disciplinas de engenharia de software
43
Aprendizagem em Engenharia de Software
44
Desafios do Aprendizado em Engenharia de Software
45
Profissionais
46
Importância geral das áreas de Engenharia de Software
46
Importância dada às áreas de conhecimento de Engenharia de Software no ensino
da graduação
47
Importância de se aprender mais sobre as áreas de conhecimento da Engenharia de
Software na graduação
48
Importância dos tópicos em relação a outras pesquisas
49
Discussões dos Resultados Obtidos
50
Sobre a adoção de currículos de referência
50
Sobre a relevância dos tópicos
50
Considerações Finais
52
Conclusão
Trabalhos Futuros

53
54

Referências Bibliográficas

55

1.

Introdução
1.1.

Motivação

O termo “Engenharia de Software” começou a ser usado no final da década de 60
em uma conferência organizada pelo ​Science Committee of the North Atlantic Treaty
Organization (NATO), em que os membros da comissão estavam preocupados com
a crise de software e os problemas que eles haviam testemunhado na preparação
de sistemas militares, e estavam convencidos de que era necessário o rigor da
engenharia no desenvolvimento de software. Nos anos que seguiram a conferência,
cientistas da computação expandiram os conceitos e ferramentas fundamentais da
engenharia de software e incluíram cinco passos ao ciclo de desenvolvimento de
software: especificação de sistema, projeto de sistema, programação do sistema,
depuração do sistema e manutenção de sistema.
Em 1997, começou a ser escrito o ​Guide to the Software Engineering Body of
Knowledge(SWEBOK) através de uma parceria entre a IEEE Computer Society e a
Association for Computing Machinery(ACM) e iniciado pela Software Engineering
Coordinating Committee (SWECC), tendo seu primeiro protótipo apresentado em
1998.
Já em 2004, a IEEE Computer Society formalmente aprovou e publicou o
SWEBOK - antes disso, em 2001, uma versão de teste já havia sido publicada - a
fim de definir melhor a engenharia de software como uma profissão, e que tem
como público-alvo gerentes, engenheiros de software, sociedades profissionais,
estudantes, professores e instrutores. Para sua versão atual, v3.0, contou com a
revisão de 150 profissionais de 33 países para sumarizar conceitos de 15 áreas de
conhecimento, e continua com a sua reputação de 20 anos como o mais confiável
guia de profissão de engenharia de software. No entanto, deve-se deixar claro que o
SWEBOK não é para ditar tudo que os engenheiros de software devem saber - isso
deve ser de responsabilidade de organizações e iniciativas envolvidas no
licenciamento e certificação de profissionais -, mas para identificar o que constitui o
núcleo da engenharia de software e embasar currículos.
A engenharia de software (ES), de forma ampla, é a área do conhecimento
que fornece toda a estrutura para o desenvolvimento e manutenção de software
(IEEE, 2004). Esta área está preocupada principalmente com a aplicação de teoria,
conhecimento e prática para o desenvolvimento efetivo e eficiente de sistemas de
software, visando a implementação de produtos de qualidade, econômicos, úteis e
no prazo esperado, cujos resultados devem satisfazer os requisitos dos usuários
(ACM/IEEE, 2008). Em relação a engenharia de software como disciplina,
Sommerville (2011) afirma que ela é uma disciplina da computação relacionada com

12

a produção de software de alta qualidade, respeitando os requisitos e as restrições
de tempo e custo.
A formação de profissionais qualificados na área de engenharia de software
está ligada a qualidade da educação que esses profissionais receberam enquanto
alunos, que deve incluir além de conhecimentos básicos na área de computação, o
ensino de conceitos, processos e técnicas para definição, desenvolvimento e
manutenção de software( ACM/IEEE, 2008).
A praticidade é uma das características e requisitos representativos da
educação em engenharia de software. Assim, é importante que seu ensino possa
ser personalizado para refletir as necessidades da indústria. A grande diferença
existente entre a educação universitária e as necessidades do mercado é, pelo
menos em parte, responsável pelas críticas feitas por parte dos empregadores de
que os cursos não qualificam os alunos para o trabalho real.
O processo de ensino-aprendizagem tradicional da engenharia de software
vem sendo questionado pela sua dificuldade de, a partir do conhecimento adquirido
na disciplina, o profissional aplicar os conceitos aprendidos num ambiente real;
baixa motivação dos alunos para estudar conceitos teóricos; e muito conteúdo em
pouco tempo. A partir desse questionamento, Gimenes(2012) cita elementos
contextuais como as modalidades de educação – presencial, a distância e híbrida; e
o tripé da Universidade: ensino, pesquisa e extensão; que diante destes, a
engenharia de software como disciplina, deve apropriar-se das teorias e práticas
pedagógicas contemporâneas e conscientizar-se do perfil de seus estudantes, para
planejar as práticas de ensino-aprendizagem com o uso eficiente de ferramentas de
tecnologias da informação e comunicação.
Neste contexto, a presente pesquisa tem por motivação averiguar se as
práticas de ensino utilizadas pelos professores do Centro de Informática são
focadas nos tópicos considerados relevantes para a formação profissional dos
alunos egressos das disciplinas de engenharia de software.

1.2.

Objetivos

O objetivo deste trabalho é fazer uma revisão das referências curriculares e técnicas
de ensino propostas para engenharia de software, a fim de sugerir uma referência
curricular para as disciplinas de engenharia de software do Centro de Informática,
considerando os seus diferentes cursos e seus respectivos propósitos distintos
(Ciência da Computação, Engenharia da Computação e Sistemas de Informação) e
o alinhamento com as necessidades do mercado, em especial do Arranjo Produtivo
Local de Recife - PE.
Esse objetivo se destrincha nos seguintes objetivos específicos que
apresentam como enfoque :
● Estudar as principais referências curriculares para engenharia de software;

13

● Analisar as características das práticas de ensino-aprendizagem utilizadas
em disciplinas de engenharia de software;
● Identificar os desafios do ensino da engenharia de software;
● Analisar as metodologias de ensino utilizadas em disciplinas de engenharia
de software ministradas no Centro de Informática da UFPE;
● Identificar as necessidades do mercado para um profissional de engenharia
de software;
● Por fim, fazer uma comparação objetiva entre os métodos e técnicas
descritos.

1.3.

Estrutura do Trabalho

Este trabalho foi dividido em 6 capítulos, incluindo este primeiro que apresenta de
forma introdutória a pesquisa realizada e os objetivos do estudo. Os capítulos
seguintes estão descritos abaixo:
● Capítulo 2 – ​é descrita a evolução do currículo da engenharia de software
dentro das diretrizes curriculares nacionais e internacionais.
● Capítulo 3 – ​apresenta ​a contextualização teórica em relação ao processo de
ensino-aprendizagem e demonstra como a engenharia de software pode ser
inserida em vários contextos.
● Capítulo 4 – ​exibe a metodologia utilizada para realizar a pesquisa
● Capítulo 5 - ​são demonstrados os resultados e discussões da investigação.
● Capítulo 6 – fornece as conclusões sobre o que foi discutido neste trabalho,
bem como são descritos os possíveis trabalhos futuros.

14

2.

Evolução do Currículo da Engenharia de Software

Para entender como a evolução da engenharia de software é tratada dentro dos
currículos acadêmicos, começaremos pela análise conjunta das diretrizes
curriculares que ajudarão a treinar os futuros profissionais da computação.

2.1.

Diretrizes Curriculares Nacionais
2.1.1.

Ministério da Educação

A proposta para as diretrizes curriculares nacionais para os cursos de graduação
em computação começou a ser estruturada em 1999 e foi aprovada em 2005, como
resultado das contribuições recebidas da Secretaria de Educação Superior1 (SESu)
e das discussões realizadas no âmbito da Sociedade Brasileira de Computação2
(SBC).
Segundo esta diretriz “​O ensino de Engenharia de Software em cursos de
graduação pode dar origem a várias disciplinas com diferentes ênfases. A origem
dessas disciplinas pode ter como motivação diferentes classificações didáticas:
aspectos gerenciais, aspectos técnicos, aspectos teóricos e aspectos experimentais.
A ênfase pode se dar em diferentes etapas do processo de desenvolvimento e
manutenção de software: engenharia de requisitos, análise, arquitetura e projeto,
programação, testes, manutenção, garantia de qualidade e gestão do processo de
software”. A diretriz ainda cita que deve-se assegurar que o estudante adquira
experiência na aplicação destes conceitos através da prática em laboratórios e
estágios.
Embora a proposta de 2005 ainda fosse considerada atual, em 2010
decidiu-se avaliar e atualizar as diretrizes, devido a rápida evolução tecnológica e ao
desenvolvimento de uma nova área de atividades que acabou por criar uma nova
alternativa de formação por meio do curso de engenharia de software. Essa diretriz,
que fornece orientações para os cursos de ciência da computação, sistemas de
informação, engenharia da computação, licenciatura em computação e engenharia
de software, foi aprovada em 8 de março de 2012.
A engenharia de software consta nesta diretriz como um conteúdo que
permeia todos os cursos, mas não há uma especificação dos assuntos que podem
ser vistos dentro desta área como uma disciplina. E para o curso de engenharia de
software, alguns dos conteúdos específicos listados são: paradigmas e ferramentas
para a construção de software; requisitos, arquitetura e desenho de software;
gerência de projetos e de configuração; evolução de software; engenharia de
qualidade; tratamento de informação; e planejamento e controle do software.
1
2

"SESu - Ministério da Educação." <​http://portal.mec.gov.br/sesu/​>
"Sociedade Brasileira de Computação." <​http://www.sbc.org.br/​>

15

2.1.2.

Sociedade Brasileira de Computação

Em julho de 1999, a Assembléia Geral da Sociedade Brasileira de Computação
(SBC) aprovou uma proposta de currículo de referência para os cursos de
graduação na área de Computação e Informática, referenciado como CR99. Após a
aprovação, as revisões foram separadas entre os cursos de sistemas de
informação, que teve sua revisão feita em 2003, e os cursos de ciência da
computação e engenharia da computação com revisão feita no ano de 2005.
Para ciência da computação e engenharia da computação, as disciplinas
estão organizadas em seis núcleos, sendo eles: fundamentos da computação,
tecnologia da computação, matemática, ciências básicas, eletrônica e contexto
social e profissional. A engenharia de software se encontra no núcleo de tecnologia
da computação tendo seus principais tópicos listados a seguir: processo de
desenvolvimento de software; ciclo de vida de desenvolvimento de software;
qualidade de software; técnicas de planejamento e gerenciamento de software;
gerenciamento de configuração de software; engenharia de requisitos; métodos de
análise e de projeto de software; garantia de qualidade de software; verificação,
validação e teste; manutenção; padrões de desenvolvimento; engenharia reversa;
reengenharia; e ambientes de desenvolvimento de software.
Para sistemas de informação, a proposta afirma que as matérias que
compõem o currículo de sistemas de informação ​“podem ser abordadas com
profundidade ou em abrangência. Uma matéria abordada com profundidade
proporciona ao estudante o domínio sobre conceitos, métodos, técnicas e
ferramentas daquela matéria de forma que possa aplicá-los na sua atuação direta
como profissional de Sistemas de Informação”. Para a disciplina de engenharia de
software, que é referenciada nesta diretriz como uma disciplina de formação
tecnológica, recomenda-se que seus tópicos como processo de desenvolvimento de
software (análise, projeto, construção, testes, conversão e manutenção),
gerenciamento de projetos de software e qualidade de software devam ser
abordados com profundidade.

2.2.

Diretrizes Curriculares Internacionais
2.2.1.

Association for Computing Machinery (ACM)

2.2.1.1.

Engenharia de Software

Nas décadas desde os anos 1960 a ​Association for Computing Machinery (ACM) e
a ​Computer Society of the Institute for Electrical and Electronic Engineers (IEEE-CS)
produziram recomendações curriculares para enfrentar os desafios da rápida
mudança da paisagem tecnológica da computação. Juntos, eles têm publicado
diretrizes curriculares para as seguintes áreas: Ciência da Computação, Engenharia

16

da Computação, Sistemas de Informação, Tecnologia da Informação e Engenharia
de Software.
O primeiro conjunto de orientações para os currículos de engenharia de
software foi publicado em 2004. A Diretriz Curricular SE2004 para Engenharia de
Software (ACM/IEEE, 2004) afirma que o desenvolvimento de um currículo de
engenharia de software deve ser sensível às mudanças nas tecnologias, práticas e
aplicações, novos desenvolvimentos em pedagogia, e a importância da
aprendizagem ao longo da vida. Para um campo que evolui tão rapidamente quanto
engenharia de software, as instituições de ensino devem adotar estratégias
explícitas para responder à mudança e procurar preparar os alunos para toda vida.
Para a construção desta diretriz, foram selecionadas áreas de conhecimento
baseadas no ​Guide to the Software Engineering Body of Knowledge (SWEBOK) que será detalhado adiante - para a criação do ​Software Engineering Education
Knowledge (SEEK). O SEEK não representa o currículo, mas fornece a base para a
concepção, implementação e entrega das unidades educacionais que compõem um
currículo de engenharia de software. As dez áreas de conhecimento que compõem
o SEEK são: computação essencial; matemática e fundamentos de engenharia;
prática profissional; modelagem e análise de software; design de software;
verificação e validação de software; evolução de software; processos de software;
qualidade de software; e gestão de software .
Em 2010, uma força-tarefa foi nomeada pela ACM e IEEE-CS para
determinar se eram necessárias atualizações no SE2004. Em um workshop,
realizado em 2013, na ​Conference on Software Engineering Education and Training
(CSEE&T), eles apresentaram um esboço inicial da proposta de revisão do SEEK e
outras áreas das diretrizes curriculares. Em 2014, foi publicado o SE2014. Esta
versão aumenta a visibilidade dos requisitos de software e de segurança de
software, já que o interesse e preocupação sobre estes temas aumentaram.
2.2.1.2.

Engenharia da Computação

A Diretriz Curricular CE2004 para Engenharia da Computação (ACM/IEEE, 2004)
trata a engenharia de software como uma de suas áreas de conhecimento que se
preocupa com a aplicação da teoria, conhecimento e prática para construir sistemas
de softwares eficazes e eficientes que satisfaçam as exigências das partes
interessadas. Como uma área de conhecimento, ela é quebrada em módulos
temáticos individuais que são: história e visão geral; processos de software;
requisitos e especificações de software; design de software; teste e validação de
software; evolução de software; ferramentas e ambientes de software;
gerenciamento de projetos de software e tolerância a falhas de software.
Já na sua versão de 2016, CE2016, a área de conhecimento em engenharia
de software não está explícita, mas seus módulos temáticos antes listados
permeiam as áreas de conhecimento de sistemas e projetos de engenharia e design

17

de software. Esta versão também afirma que com a tendência de crescimento em
engenharia da computação à medida que a computação e tecnologias eletrônicas
se tornam mais complexas, este crescimento pode assumir muitas formas, incluindo
a colaboração com a disciplina de engenharia de software em projetos com foco em
aplicativos.
2.2.1.3.

Ciência da Computação

A Diretriz Curricular CC2001 para Ciência da Computação (ACM/IEEE, 2001) traz a
engenharia de software como uma de suas 14 áreas que juntas compõem o corpo
de conhecimento para a ciência da computação, e afirma que os elementos da
engenharia de software são aplicáveis ao desenvolvimento de software em qualquer
domínio de aplicação de computação, onde o profissionalismo, a qualidade,
cronograma e custo são importantes na produção de um sistema de software. Entre
seus módulos temáticos estão: design de software; uso de APIs; ferramentas e
ambientes de software; processos de software; requisitos e especificações de
software; validação de software; evolução de software e gerenciamento de projetos
de software.
Com a necessidade de criação de novas áreas de conhecimento, em 2010
começou-se a trabalhar na atualização da diretriz curricular para ciência da
computação resultando na diretriz curricular CS2013. As áreas de conhecimento
passaram de 14 para 18, continuando a engenharia de software como uma dessas
áreas e seus módulos temáticos atualizados para: processo de software;
gerenciamento de projetos de software; ferramentas e ambientes de software;
requisitos de software; design de software; construção de software; verificação e
validação de software; evolução de software; confiabilidade de software e métodos
formais. Destaca-se ainda nessa diretriz, que os estudantes podem aplicar o que
será aprendido através da participação em um projeto, e este deve exigir que os
estudantes trabalhem em equipe para desenvolver um sistema de software, e usem
técnicas de engenharia de software eficazes para desenvolver e praticar suas
habilidades de comunicação com as partes interessadas.
2.2.1.4.

Sistemas de Informação

A Diretriz Curricular IS2002 para Sistemas de Informação foi feita em parceria com a
ACM, a ​Association for Information Systems (AIS) ​- ​que é formada por docentes em
sistemas de informação - e a ​Association of Information Technology Professionals
(AITP). Esta diretriz está organizada em um conjunto de áreas e cada uma dessas
áreas tem uma ou mais disciplinas.
Os tópicos de engenharia de software estão inseridos na área de
Desenvolvimento de Sistemas de Informação, onde os alunos irão trabalhar em
equipes para analisar problemas, projetar e implementar sistemas de informação.
Ainda dentro desta área, há a disciplina de Análise e Projeto Lógico onde os
tópicos de engenharia listados são: determinação de requisitos, projeto lógico,

18

projeto físico, e planejamento de implementação; habilidades interpessoais; análise
de risco e viabilidade; e gerenciamento de projetos, desenvolvimento de aplicações
conjunta, e orientações estruturadas.
Na disciplina Projeto Físico e Implementação em Ambientes Emergentes,
ainda na área de Análise e Projeto Lógico, os tópicos de engenharia de software
são: testes de software; garantia de qualidade de software; implementação de
sistema; gerenciamento de configurações; e manutenção.
Na disciplina Gerenciamento e Prática de Projeto, que está na área de
Implantação de Sistemas de Informação e Processos de Gestão, alguns dos tópicos
de engenharia de software são: gerenciamento do ciclo de vida do sistema,
determinação de requisitos, design, implementação; análise de custo-eficácia;
gerenciamento de mudanças; ferramentas de software para rastreamento e
monitoramento do projeto.
A Diretriz Curricular IS2010 para Sistemas de Informação foi feita em parceria
com a ACM e a ​Association for Information Systems (AIS). Esta diretriz especifica
um curso geral (Fundamentos de Sistemas de Informação) para fornecer uma
compreensão e habilidades relacionadas aos Sistemas de Informação adequados
para todos os alunos.
Esta diretriz está organizada em sete disciplinas básicas e um subconjunto
de disciplinas eletivas. A engenharia de software tem seus tópicos listados na
disciplina de Gerenciamento de Projeto de Sistemas de informação. Esta disciplina
abrange uma metodologia sistemática para a iniciação, planejamento, execução,
controle e encerramento projetos. Seus tópicos são: introdução ao gerenciamento
de projeto; gerenciamento de ciclo de vida; gerenciamento de equipes de projeto;
gerenciamento de comunicação; iniciação e planejamento de projeto; gestão do
escopo do projeto; gerenciamento de preparação de projeto; gerenciamento de
recursos; qualidade do projeto; riscos do projeto; e gerenciamento da execução,
controle e encerramento do projeto.

2.3.

SWEBOK

Finalmente, o ​Guide to the Software Engineering Body of Knowledge(SWEBOK)
atualmente em sua versão V3.0 (IEEE, 2004), fornece uma referência importante
para o estabelecimento da engenharia de software como uma disciplina reconhecida
de engenharia. Ele é dividido em 15 áreas de conhecimento(KA) para engenharia de
software e 7 disciplinas que se cruzam com a engenharia de software. Suas áreas
de conhecimento com uma breve descrição das mesmas serão listadas a seguir:
● Requisitos de Software: está preocupada com a elicitação, análise,
especificação e validação de requisitos de software, bem como a gestão de
requisitos durante todo o ciclo de vida do produto de software;
● Design de Software: é a atividade do ciclo de vida da engenharia de software
em que os requisitos de software são analisados a fim de produzir uma

19



descrição da estrutura interna do software que servirá como base para a sua
construção;
Construção de Software: está ligada a todas as outras áreas de
conhecimento, mas é mais fortemente ligada ao Design de software e ao
Teste de Software porque o processo de construção de software envolve
design de software e testes;
Teste de Software: consiste na verificação dinâmica de que um programa
fornece o comportamento esperado sobre um conjunto finito de casos de
testes;
Manutenção de Software: conjunto de atividades necessárias para fornecer
suporte de baixo custo para o software;
Gerenciamento de Configuração de Software: é um processo do ciclo de vida
do software que beneficia as atividades de gerenciamento de projetos,
desenvolvimento e manutenção, atividades de garantia de qualidade, bem
como as partes interessadas;
Gerenciamento da Engenharia de Software: aplicação de gestão de
atividades de planejamento, coordenação, medição, monitoramento, controle
e emissão de relatórios para garantir que os produtos de software e serviços
de engenharia de software serão entregues de forma eficiente, eficaz e em
benefício das partes interessadas;
Processos de Engenharia de Software: está preocupada com as atividades
de trabalho realizadas por engenheiros de software para desenvolver, manter
e operar o software;
Modelos e Métodos de Engenharia de Software: modelos fornecem uma
abordagem para a resolução de problemas e métodos proporcionam uma
abordagem para a especificação sistemática, concepção, construção, teste e
verificação do produto final e produtos de trabalho associados;
Qualidade de Software: refere-se às características desejáveis de produtos
de software e aos processos, ferramentas e técnicas utilizadas para alcançar
essas características;
Prática Profissional em Engenharia de Software: está relacionada com os
conhecimentos, habilidades e atitudes que engenheiros de software devem
possuir para a prática da engenharia de software de uma forma profissional,
responsável e ética;
Economia de Engenharia de Software: está preocupada com o alinhamento
das decisões técnicas de software com os objetivos dos negócios da
organização;
Fundamentos de Computação: abrange o desenvolvimento e o ambiente
operacional em que o software evolui é executado;
Fundamentos de Matemática: está preocupada com o entendimento dos
conceitos básicos de lógica entre os engenheiros de software, que por sua
vez será traduzida em código de linguagem de programação;

20

● Fundamentos de Engenharia: está preocupada com os fundamentos de
engenharia que se aplicam a engenharia de software e outras disciplinas de
engenharia.
Usando como base as áreas de conhecimento do SWEBOK, a Figura 1
mostra quais áreas permeiam as diretrizes curriculares mais recentes citadas neste
capítulo, e a Figura 2 mostra qual a porcentagem de tópicos relacionadas a cada
área.

Figura 1 - Áreas da engenharia de software nos currículos de referência
Fonte: Autor

Figura 2 - Porcentagem dos tópicos das áreas da engenharia de software
Fonte: Autor

21

Para mostrar de forma sucinta a evolução da engenharia de software, a
tabela a seguir mostra algumas das principais fontes de mudança que afetaram as
práticas da engenharia de software ao longo de 7 décadas, baseada na pesquisa
feita por Barry Boehm, 2006.

Tabela 1 - Principais fontes de mudança nas práticas da engenharia de software
Fonte: Adaptado de Boehm (2006)

2.4.

Considerações Finais

O aumento da velocidade da mudança continua a acelerar, assim como a
complexidade dos sistemas de software que necessitam ser manipulados
inteligentemente. E isto apresenta muitos desafios para a educação de engenharia
de software, que inclui:
● Manter os cursos e material didático continuamente atualizados;
● Antecipar as tendências e preparar os alunos para lidar com elas;
● Monitoramento de princípios e práticas atuais;
● Utilizar de experiências educacionais de pequena escala de formas que se
apliquem a projetos de grande escala;
● Oferecer oportunidades de aprendizagem ao longo da vida, para que
engenheiros de software continuem a exercer a sua profissão
A partir desse cenário, surge a preocupação com o ensino da engenharia de
software e como ela pode ser aplicada em diferentes contextos dentro dos cursos
de graduação em computação. Seu ensino exige um grau muito grande de
abstração e conceitos teóricos que, muitas vezes, torna o ensino dos seus
conteúdos um verdadeiro desafio para quem leciona e para quem aprende.
Em sua essência, o uso de exemplos práticos para explicar conceitos e
motivar a aprendizagem dos alunos parece ser o método mais eficiente de aumentar
o aproveitamento da disciplina, mas há diversas formas de abordá-la. Com isso em
mente, o próximo capítulo aborda enfoques teóricos do processo de
ensino-aprendizagem e como a engenharia de software pode ser abordada em
vários contextos.

22

3.

Processo de Ensino-aprendizagem aplicado à
Engenharia de Software

Neste capítulo será apresentada a caracterização pedagógica do processo de
ensino-aprendizagem e uma breve discussão sobre o ensino da engenharia de
software.
Em relação às habilidades de um engenheiro de software, a ACM/IEEE
(2013) afirma que engenheiros de software tem que selecionar e aplicar técnicas e
práticas adequadas a um determinado esforço de desenvolvimento, a fim de
maximizar seu valor. E para saber como fazê-lo, eles precisam estudar os
elementos da engenharia de software. Já em relação a estratégia de ensino no
âmbito acadêmico, ressalta que os estudantes podem melhor aprender a aplicar
grande parte do material definido na área de conhecimento de engenharia de
software através da participação em um projeto, que deve exigir que os estudantes
trabalhem em equipe para desenvolver um software por meio do seu ciclo de vida,
da forma como for possível. Apesar da organização e execução de um projeto
nesse âmbito ser um desafio, continua sendo a melhor maneira de aprender e
aplicar os conhecimentos da engenharia de software.
Entretanto, abordagens alternativas podem ajudar os alunos a aprender de
maneira mais efetiva, como por exemplo: a substituição de aulas expositivas por
discussão de casos práticos (Gnatz et al, 2003), dinâmicas de grupo, uso de jogos
(Wangenheim e Shull, 2009) e ​Capstone projects (um esforço em grupo em que
alunos executam um projeto do início ao fim) (IEEE/ACM, 2004).
A importância do processo de ensino-aprendizagem tem gerado a
necessidade de o professor ter, não apenas conhecimentos sólidos na área em que
pretende lecionar, mas também de habilidades pedagógicas suficientes para tornar
o aprendizado mais eficaz. As principais correntes de estudo sobre os enfoques
teóricos de ensino- aprendizagem, suas ideias chaves e principais teóricos podem
ser visto através da Figura 3:

23

Figura 3: Enfoques teóricos de ensino-aprendizagem
Fonte: Adaptado de Guedes (2009)

3.1.

Processo de Aprendizagem

Bordenave e Pereira (2004) afirmam que assim como o problema de um médico é
conseguir que seus pacientes fiquem curados, o problema do professor é conseguir
que seus alunos aprendam. Aprender é uma atividade que acontece no aluno e que
é realizada pelo aluno.
Para Piaget (1971), biólogo e filósofo suíço, o pensamento é a base em que
se assenta a aprendizagem, é a maneira de a inteligência manifestar-se, e a
inteligência, por sua vez, é um fenômeno biológico condicionado pela base
neurônica do cérebro e do corpo inteiro, sujeito ao processo de maturação do
organismo. A inteligência desenvolve uma estrutura e um funcionamento, e o
próprio funcionamento vai modificando a estrutura. Isto é, a estrutura não é fixa e
acabada, mas dinâmica, um processo de construção contínua. A construção se faz
mediante a interação do organismo com seu meio ambiente, visando adaptar-se a
ele para sobreviver e realizar o potencial vital deste organismo. Piaget ainda afirma
que a aprendizagem se processa através de dois movimentos simultâneos e
integrados, mas de sentido contrário: a assimilação e a acomodação.
Para a assimilação, o organismo explora o ambiente, toma parte dele,
transformando-o e incorporando-o a si. A mente assimila o mundo exterior, através
de um processo de percepção, de interpretação, de assimilação a própria estrutura.
Para a acomodação, o organismo transforma sua própria estrutura para
adequar-se a natureza dos objetos que serão apreendidos. Pela acomodação a
mente aceita as imposições da realidade.
Gagné (1971), destaca a importância de uma hierarquia de tipos de
aprendizagem que vão da simples associação de estímulos à complexidade da
solução de problemas, onde qualquer habilidade intelectual pode ser analisada em
termos da combinação de habilidades mais simples para produzir a sua
aprendizagem. Essa classificação indica a necessidade de diferentes tipos de
ensino para cada uma delas. Ele ainda afirma que a aprendizagem ​“é uma mudança
de estado interior que se manifesta por meio da mudança de comportamento e na
persistência dessa mudança. Um observador externo pode reconhecer que houve
aprendizagem quando observa a ocorrência de uma mudança comportamental e
também a permanência desta mudança”.
As teorias de aprendizagem buscam reconhecer a dinâmica envolvida nos
atos de ensinar e aprender, partindo do reconhecimento da evolução cognitiva do
homem, e tentam explicar a relação entre o conhecimento pré-existente e o novo
conhecimento (Santos; Santoro e Borges,1999). A Tabela a seguir apresenta as
características básicas de algumas das principais teorias da aprendizagem:

24

Teorias da Aprendizagem

Características

Epistemologia Genética de
Piaget (1950)

● O ponto central é a estrutura cognitiva do
organismo.
● Níveis diferentes de desenvolvimento
cognitivo.
● Desenvolvimento facilitado pela oferta de
atividades e situações desafiadoras.
● Interação social e troca entre indivíduos
funcionam como estímulo ao processo de
aquisição de conhecimento.

Teoria
Sociocultural
Vygotsky (1987)

● Desenvolvimento cognitivo é limitado a um
determinado potencial para cada intervalo
de
idade
(Zona
Proximal
de
Desenvolvimento)
● Desenvolvimento cognitivo completo requer
interação social

de

Aprendizagem baseada em
problemas
/
Instrução
ancorada (Howard Barrows,
1970)

● Aprendizagem se inicia com um problema a
ser resolvido (âncora ou foco).
● Centrada no aprendiz e contextualizada.

Cognição
Distribuída
(Vygotsky (1978) e Minsky
(1985)

● Interação entre indivíduo, ambiente e
artefatos culturais.
● Ensinamento recíproco.
● Importante papel da tecnologia.

Cognição Situada (Brown;
Col-lins e Duguid’s,1989)

● Aprendizagem ocorre em função da
atividade, contexto e cultura e ambiente
social na qual está inserida.
● Interação social e colaboração são
componentes críticos para aprendizagem
(comunidade de prática).

Aprendizagem
Auto-regulada/Metacognição
(Klauer, (1996)

● Controle e monitoramento da própria
cognição pelo sujeito.
● Auto-observação,
auto-julgamento,
auto-reação.

Aprendizagem
por
observação (Bandura, 1962)

● Não ação, não participação.
● Ouvir ou assistir libera a realização de
outros processos mentais.
● Utilização da memória.
● Obtenção de informações em um diálogo.

Tabela 2 - Teorias da aprendizagem e suas características
Fonte: Adaptado de Santos; Santoro e Borges, 1999

25

3.2.

Processo de Ensino

De acordo com Bordenave e Pereira (2004), existem diversos fatores que afetam o
processo de ensino, relacionados com o tripé aluno-professor-conteúdo, e este
processo consiste no manejo desses fatores e da sua dinamização em uma
sequência mais ou menos planejada ou sistemática. Esses fatores são
apresentados a seguir:
Aluno

Assunto

Professor

Motivação

Situação estimuladora ambiental

Conhecimentos
prévios

Comunicação verbal de instrução

Relação com
professor
Atitude
com
disciplina

Estrutura: componentes e
relações
Informação ao aluno sobre os
o
seus progressos
Tipos de aprendizagem
requeridos
Relacionamento com o aluno
a
Ordem de apresentação Atitude com a matéria ensinada
Tabela 3 - Fatores que afetam o processo de ensino
Fonte: Bordenave e Pereira, 2004

Partindo da pergunta “Como os alunos e os membros do corpo docente
podem melhorar o ensino?”, Chickering e Gamson (1987), desenvolveram sete
princípios para a boa prática na educação de Ensino Superior, que apresenta o
COMO ensinar, mas não O QUE ensinar, reconhecendo a complexa interação entre
pedagogia e conteúdo. Estes princípios foram criados com o objetivo de ajudar no
atendimento às mudanças educacionais necessárias no ensino superior dos
Estados Unidos e de outros países do mundo.
Princípio nº 1: A boa prática encoraja o contato entre o aluno e o professor
Professores que encorajam o contato com os estudantes, tanto dentro como fora da
sala de aula, obtêm alunos mais motivados, comprometidos intelectualmente e com
melhor desenvolvimento pessoal.
Princípio nº 2: A boa prática encoraja a cooperação entre os alunos
O processo de aprendizagem é mais favorecido quando resulta de um esforço de
equipe do que quando é resultante de um trabalho isolado. Trabalhar com outras
pessoas normalmente aumenta o envolvimento com a aprendizagem, e dividir as
próprias idéias com os colegas ou responder às ações destes, afia o raciocínio e
aprofunda o entendimento.

26

Princípio nº 3: A boa prática encoraja a aprendizagem ativa
Os alunos devem falar e escrever sobre o que estão aprendendo, fazer relações
com experiências anteriores e saber como aplicar o aprendido na vida prática. Isto
significa que eles precisam reconhecer o que está sendo ensinado como importante
e tornar isso parte deles mesmos.
Princípio nº 4: A boa prática fornece feedback imediato
Os alunos precisam checar constantemente sua performance para obter um melhor
aproveitamento num determinado curso. Para isso, buscam por contínuos
feedbacks que possam indicar-lhes o que sabem e o que não sabem, ajudando-os a
focar melhor os objetivos da aprendizagem.
Princípio nº 5: A boa prática enfatiza o tempo da tarefa
Aprender como usar bem o tempo é crítico tanto para os alunos como para os
professores. As decisões tomadas pelos professores sobre a alocação e o
gerenciamento do tempo afetam diretamente a aprendizagem dos alunos. Assim
como os estudantes necessitam de ajuda para gerenciar o tempo necessário para
uma aprendizagem efetiva, a alocação realística do tempo pelo professor lhe
proporcionará atingir a eficácia do ensino.
Princípio nº 6: A boa prática comunica altas expectativas
A manutenção de altas expectativas é importante para todos os tipos de alunos,
tanto para os menos preparados e/ou motivados, como para os mais brilhantes e
interessados. As expectativas e esforços (formais e informais) dos professores
criam um clima que pode ser desafiador para o aluno ou exigir pouco dele.
Princípio nº 7: A boa prática respeita os diversos talentos e as diferentes
formas de aprendizagem.
Este princípio enfatiza a necessidade de o professor reconhecer os diferentes
talentos e estilos de aprendizagem que os alunos trazem consigo para a faculdade.
Portanto, o professor deverá buscar variar constantemente as suas
técnicas/métodos de ensino visando atender aos diferentes estilos de aprendizagem
dos alunos e, ainda, ser sensível às diferenças existentes entre os estudantes,
respeitando sempre as suas individualidades.
Em relação aos métodos de ensino e algumas ferramentas didáticas que os
docentes utilizam no processo de ensino-aprendizagem, Bordenave e Pereira
(2007) destacam:

27

Técnica

Descrição

Aula Expositiva

Aula
ministrada
nos moldes tradicionais,
normalmente, conduzida pelo docente responsável
pela disciplina.

Aula Prática

Aula realizada em ambiente de laboratório
utilizando alguma ferramenta computacional

Desenvolvimento
Projetos

Um ou mais projetos são propostos à turma para
serem desenvolvidos ao longo da disciplina. O
projeto pode ser trabalhado individualmente ou em
grupo dependendo da sua complexidade e do
tempo disponível, havendo casos em que um
de projeto transcende o tempo de vida de uma
disciplina.

Estudo de Caso

Uma situação real é trazida para o ambiente
acadêmico no sentido de discutir e vivenciar a
experiência original ocorrida no caso em estudo.

Mini-teste

Testes mínimos feitos ao longo da disciplina,
possibilitando a realização de um modelo de
avaliação contínua, sem marcação prévia, com o
intuito de forçar a turma a estudar continuamente
os conteúdos ministrados.

Um problema é proposto à turma e o docente faz a
mediação em busca da solução mais apropriada. A
PBL (Aprendizagem técnica PBL tem semelhanças com o estudo de
baseada em Problemas)
caso.

Trabalho em Grupo

Técnica que pode ser combinada com outras,
visando dar experiência em questões específicas
do trabalho em equipe, permitindo vivenciar a
prática no gerenciamento de tarefas, cumprimento
de prazos, liderança de equipes, gestão de
conflitos etc.

Seminário

Temas pertencentes à disciplina são distribuídos
entre os membros da turma e eles fazem
apresentações no âmbito da turma ou mais geral
sobre o assunto, podendo ser uma atividade
individual ou em grupo.

Experimentação

Os alunos são envolvidos com projetos de
pesquisas científicas, visando introduzi-los no

28

mundo científico através dessa integração entre o
ensino e a pesquisa.
Tabela 4 - Técnicas de ensino e suas características
Fonte: Adaptado de Bordenave e Pereira, 2007

Dentre as ferramentas citadas anteriormente, merece destaque em relação
ao ensino da engenharia de software, o projeto, pois na abordagem de
desenvolvimento de projetos, as atividades são centradas nos alunos que
produzem, documentam e avaliam artefatos intermediários, que podem ter sido
produzidos pelo próprio aluno ou pelos demais alunos da turma, para a conclusão
do projeto. Os alunos são estimulados a refletir, formular questões e expressar
dúvidas sobre os artefatos produzidos e o professor atua como um orientador dos
projetos.

3.3.

Engenharia de Software em vários contextos

A engenharia de software está relacionada tanto com a ciência da computação,
como com a engenharia de computação e sistemas de informação. Nesse contexto
(ACM/IEEE,2004 e Sommerville,2011) apresentam essa relação da seguinte forma:
● Ciência da computação: se preocupa com as teorias e métodos que são a
base dos sistemas de software, enquanto a engenharia de software está
preocupada com os problemas práticos da produção de software, como a
viabilidade de desenvolvimento e entrega de um software útil. É esperado
que os graduado em ciência da computação esteja apto a executar técnicas
básicas de engenharia de software, mas não há a necessidade de um
conhecimento profundo como é exigido em áreas como a teoria da
computação, por exemplo.
● Engenharia da computação: está preocupada com a concepção e
construção de computadores e sistemas baseados em computadores.
Engenharia de software é parte deste processo mais geral. Os graduados
são capazes de praticar técnicas de engenharia de software com foco em
software para dispositivos digitais e suas interfaces com os usuários e outros
dispositivos.
● Sistemas de Informação: ​se preocupa com a integração de soluções de
tecnologia da informação e processos de negócios para satisfazer as
necessidades de informação das empresas através do uso de processos da
engenharia de software. Os graduados são capazes de desempenhar um
papel fundamental na determinação dos requisitos para os sistemas de
informação da organização e ser ativo em sua especificação, design e
implementação.

29

Sommerville3 ainda afirma que não faz sentido pensar em engenharia de
software como um "suplemento" para cursos de ciência da computação. Se o
objetivo for cobrir a diversidade na disciplina, então isso só pode ser feito no âmbito
de um curso dedicado que apresenta todas as abordagens para o desenvolvimento
de software.
Para melhor ilustrar como a engenharia de software pode ser vista em vários
contextos, o currículo SE2004 (ACM/IEEE)4 fornece padrões de como suas áreas de
conhecimento podem ser aplicadas em diferentes cursos e em diferentes fases do
curso (primeiro ou segundo ano). Para o primeiro ano, ele afirma que essa
abordagem mais cedo ensina ao aluno o hábito de pensar sobre tudo que é
necessário para desenvolver um sistema grande, desde o início. O aluno é
apresentado as duas disciplinas, SE101 e SE102 que introduzem a engenharia de
software, em conjunto com alguma programação e outros conceitos de ciência da
computação.

Figura 4 - Engenharia de Software no primeiro ano

● SE101 Introdução à Engenharia de Software e Computação
Uma primeira disciplina de engenharia de software e computação para a
engenharia de software. Introduz conceitos fundamentais de programação,
bem como conceitos básicos de engenharia de software.
● SE102 Engenharia de Software e Computação II
Uma segunda disciplina de engenharia de software que aprofunda os
conceitos em engenharia de software e apresenta fundamentos de ciência da
computação.
● SE200 Engenharia de Software e Computação III
Continua uma ampla introdução aos conceitos de engenharia de software e
computação.
Para a abordagem do segundo ano, onde os alunos são apresentados
primeiro a disciplinas de ciência da computação, o SE2004 afirma que a
programação é uma habilidade fundamental exigida por todos os engenheiros de
software; ela também é uma habilidade que é preciso muita prática para se tornar
um bom programador. Neste contexto, o aluno começa com uma das sequências
iniciais de disciplinas de ciência da computação e a disciplina de engenharia de
software começa no segundo ano.
3
4

"Systems, software and technology." <​http://iansommerville.com/systems-software-and-technology/​>
"SE2004, Software Engineering 2004 - IEEE Computer Society." <​http://sites.computer.org/ccse/​>

30

Figura 5 - Engenharia de Software no segundo ano

● SE201 Introdução à Engenharia de Software
Esta é uma disciplina central, apresentando os princípios e conceitos básicos
de engenharia de software. Após a conclusão desta disciplina, os alunos
serão capazes de fazer modelagem e projeto básico, especialmente usando
Linguagem de Modelagem Unificada (UML). Eles também terão uma
compreensão básica de requisitos, arquitetura de software e testes.
Após a introdução dos tópicos de engenharia do software no primeiro
ou no segundo ano, o SE2004 apresenta duas sequências de disciplinas
essenciais para que o ensino da engenharia de software seja eficaz. O
objetivo de separar duas sequências essenciais se dá ao fato de que
algumas instituições podem ter disciplinas que já se encaixem em um dos
pacotes e que gostaria de reutilizar o máximo possível. Por exemplo, o
pacote I possui um campo de requisitos, enquanto o pacote II distribui este
assunto em outras disciplinas. O pacote II, no entanto, tem um campo de
testes puro, enquanto o pacote I tem uma disciplina que abrange tanto os
testes como a garantia da qualidade.

Figura 6 - Sequências de ensino da engenharia de software

● SE211 Construção de Software
Abrange questões de design de baixo nível, incluindo abordagens formais.
● SE212 Abordagem de Interação Humano-Computador
Abrange uma ampla variedade de temas relacionados com a concepção e
avaliação de interfaces de usuário, bem como uma base psicológica
necessária para entender as pessoas.
● SE311 Projeto e Arquitetura de Software
Design de software avançado, em particular os aspectos relacionados com
sistemas distribuídos e arquitetura de software.

31

● SE321 Garantia de Qualidade e Testes de Software
Ampla cobertura de qualidade e teste de software.
● SE322 Análise de Requisitos de Software
Cobertura ampla de requisitos de software, aplicado a uma variedade de
tipos de software.
● SE323 Gestão de Projetos de Software
Disciplina aprofundada sobre gerenciamento de projetos. Supõe-se que pelo
tempo da disciplina(ela ocupa a carga horária que seria relativa a duas
disciplinas), os alunos vão ter uma compreensão ampla e profunda de outros
aspectos da engenharia de software.
O SE2004 ainda afirma que uma disciplina essencial para a
engenharia de software é o SE400 ​Capstone Project, que fornece aos alunos
uma significativa experiência de projeto no qual eles podem integrar o que
aprenderam anteriormente, trabalhando em grupos. Esta disciplina deve ter
duração de dois semestres. A seguir é apresentada uma estrutura geral para
um curso de computação.
1° ano


semes semes
tre
tre

2° ano


semes
semestre tre

3° ano

4°ano


semes
tre


semes
tre


semes
tre


semes
tre

Sequência de introdução à
Computação
CS

CS

CS

SE400

SE400

CS

CS

MA

MA

MA

SE

SE

TE

CS

TE

SE200/20
1
SE

SE

SE

TE

TE

TE

TE

CS

CS

TE

TE

TE

SE

Disciplinas técnicas (TE)

Núcleo de disciplinas relacionadas ao curso vigente

Disciplinas de Matemática
(MA)
Núcleo de disciplinas de matemática
Disciplinas de Engenharia Núcleo de disciplinas relacionadas a engenharia de
de Software (SE)
software
Disciplinas
Computação (CS)

de Núcleo de disciplinas de fundamentos de engenharia,
computação essencial e ciência da computação
Figura 7 - Estrutura geral para um curso de computação
Fonte: Adaptado de ACM/IEEE (2004)

32

3.4.

Considerações Finais

A engenharia de software, ao contrário da ciência da computação, precisa de
pensamento divergente, onde múltiplas respostas são possíveis e os alunos devem
encontrar uma solução que é única quando comparada com soluções de outros
alunos. O pensamento divergente é incentivado através da atribuição de problemas
que têm muitas soluções. A engenharia é uma disciplina extremamente
colaborativa, e os estudantes de engenharia de software são melhor ensinados com
a aprendizagem colaborativa (Jeff Offutt, 2013). Os alunos devem ser encorajados a
trabalhar para resolver os problemas em conjunto, e aprender juntos.
Na engenharia de software a noção de sucesso varia muitas vezes de acordo
com o contexto e isto sugere que os docentes devem utilizar avaliações
diferenciadas. Levando isto em consideração, Jeff Offutt diz que “​Em vez de cada
estudante tentar acumular exatamente os mesmos pontos para os mesmos
requisitos, nós [como educadores] ​poderíamos oferecer um menu de recursos
potenciais e atributos para os alunos escolherem, cada um dos quais acumula um
certo número de pontos”.
Há um consenso de que o ensino da engenharia de software, tradicional e
focado em metodologias, deve ser transformado para refletir a demanda por
software mais complexo (Bakeret al., 2005). Os métodos de ensino podem ser
ajustados para casos particulares e várias áreas. No caso da engenharia de
software, se precisa de elementos complementares que envolvem
princípios(conceitos que fundamentam a área), prática(técnicas de resolução de
problemas), aplicações(áreas de conhecimento em que os princípios e práticas
encontram a sua melhor expressão) e matemática(a base formal que torna possível
compreender todo o resto).
No Centro de Informática da Universidade Federal de Pernambuco, a
disciplina de Engenharia de Software é ensinada no curso em que a computação é
uma atividade-meio(Sistemas de Informação) e nos cursos cuja computação é uma
atividade-fim (Ciência da Computação e Engenharia de Computação). Para
caracterizar as habilidades dos alunos egressos das disciplinas de engenharia de
software e revelar os desafios e limitações do ensino da mesma, o capítulo a seguir
pretende fazer uma descrição do cenário atual do centro.

33

4.

Metodologia

A presente pesquisa é caracterizada como descritiva, já que por meio de técnicas
padronizadas de coleta de dados, foram extraídos conhecimentos sobre o ensino da
engenharia de software no Centro de Informática (CIn) da Universidade Federal de
Pernambuco. Como definido por Gil (2008), o uso de questionário é uma técnica de
investigação composta por um conjunto de questões que são submetidas a pessoas
com o propósito de obter informações sobre conhecimentos, crenças, sentimentos,
valores, interesses, expectativas, aspirações, temores, comportamento presente ou
passado, etc. Construir um questionário consiste basicamente em traduzir objetivos
da pesquisa em questões específicas. As respostas a essas questões é que irão
proporcionar os dados requeridos para descrever as características da população
pesquisada.
Por fim, a abordagem adotada na análise dos dados é de caráter quantitativa
e qualitativa. Quantitativa porque o questionário disponibilizado apresenta questões
objetivas, e nesta abordagem foram usadas análises estatísticas nos dados
coletados. A abordagem qualitativa foi usada para entender como ocorre o processo
de ensino-aprendizagem no CIn.

4.1.

Planejamento e Aplicação do S
​ urvey

Um ​survey não é apenas um instrumento para a coleta de informações, ele é um
método de pesquisa abrangente para a coleta de informações que visam descrever,
comparar ou explicar conhecimentos, atitudes e comportamentos (Kitchenham e
Pfleeger, 2008). A finalidade de um survey é produzir estatísticas, ou seja,
descrições quantitativas ou numéricas de alguns aspectos da população de estudo.
A partir disto, este survey pretende coletar informações sobre as opiniões de
alunos e professores do Centro de Informática e dos profissionais da área de
engenharia de software em Recife-PE, representados por uma amostra, em relação
ao que se é ensinado e aprendido nos cursos de graduação.

4.2.

Público-alvo

Como público-alvo do ​survey, definiu-se:
● Professore(a)s que lecionam/lecionaram disciplinas de engenharia de
software no Centro de Informática da UFPE;
● Aluno(a)s concluintes de alguma disciplina de engenharia de software no
Centro de Informática da UFPE; e
● Profissionais que atuem em alguma área relacionada a engenharia de
software em Recife, Pernambuco.

34

Foram excluídos os participantes que não atendiam estes critérios ou que não
estavam motivados a participar da pesquisa. Estes critérios de inclusão e
exclusão foram divulgados no protocolo do survey.

4.3.

Questionários

Foram utilizados como instrumentos para aplicação do ​survey 3 (três) questionários
auto administrados, com questões de pesquisa que tinham um conjunto de
respostas pré-definidas. As questões de pesquisa, principalmente para o
questionários administrado aos profissionais de engenharia de software, foram
fortemente baseadas no ​survey aplicado por Lethbridge(2000). Revisando os
currículos de referência da ACM/IEEE(2014) e o SWEBOK(2004), identificaram-se
15 áreas de conhecimento: ​1) Requisitos de Software 2) Design de Software
3)Construção de Software 4)Teste de Software 5)Manutenção de Software
6)Gerenciamento de Configuração 7)Gerenciamento de Engenharia de Software
8)Processos de Engenharia de Software 9)Modelos e Métodos de Engenharia de
Software 10)Qualidade de Software 11)Prática Profissional de Engenharia de
Software
12)Economia de Engenharia de Software
13)Fundamentos de
Computação 14)Fundamentos de Matemática 15)Fundamentos de Engenharia.
Para as abordagens do ensino de engenharia de software, identificou-se o
trabalho de Prikladnicki (2009), que destaca os principais métodos de ensino e
abordagens de avaliação adotadas nas disciplinas de Engenharia de Software no
Brasil. Tomando esta pesquisa como base, foram selecionadas para análise os
seguintes elementos de ensino: ​A) Abordagens de Ensino; e B) Estratégias de
Avaliação.
Estes questionários foram disponibilizados na web,utilizando a ferramenta
Google Forms, que permite a coleta de informações através de uma pesquisa
personalizada que é automaticamente ligada a uma planilha. Sua divulgação foi
realizada em listas de e-mails, grupos da área de engenharia de software e em
redes sociais.
4.3.1.

Survey com professores das disciplinas de engenharia de
software

A Tabela 5 mostra as 3 principais questões de pesquisa feita aos professores das
disciplinas de engenharia de software a fim de identificar quais áreas de
conhecimento e abordagens de ensino estão sendo adotadas.

35

Questão

Opções de Resposta

Q1. Quais currículos de referência são
adotados na definição da ementa da
sua disciplina de engenharia de
software?

() Curriculum Guidelines da ACM/IEEE
() Currículo de Referência da SBC
()Currículo de Referência do MEC
() Outro

Q2. Quais dessas áreas de
conhecimento você contemplou na
ementa da sua disciplina de Engenharia
de Software?

Para cada uma das 15 áreas de
conhecimento do SWEBOK o professor
deveria marcar se ela foi ou não
contemplada.

Q3. Quais processos de ensino você
adotou na sua disciplina de Engenharia
de Software?

A. Abordagens de ensino(aulas
expositivas, uso de jogos,etc);
B. Estratégias de avaliação(provas
objetivas, confecção de artigos,
implementação de projeto, etc)

Tabela 5 - Questões e opções de respostas para os professores

4.3.2.

Survey com alunos concluintes de alguma disciplina de
engenharia de software

A Tabela 6 mostra as 3 principais questões de pesquisa feita aos alunos concluintes
das disciplinas de engenharia de software.
Questão

Opções de Resposta

Q1. Quais as áreas de conhecimento
da Engenharia de Software que você
mais aprendeu ao longo da(s)
disciplina(s)

Dentro das 15 áreas de conhecimento
do SWEBOK o aluno deveria responder
em quais obteve maior conhecimento.

Q2. Quais os principais problemas que
você pode destacar que influenciaram
negativamente seu aprendizado em
Engenharia de Software?

Algumas das opções de respostas
eram:
A. Distância entre o que se ensina
e a realidade existente no
mercado de trabalho
B. Pouco interesse do professor e
aulas puramente teóricas
C. Pouco tempo para muito
conteúdo

Q3. Quais as áreas de conhecimento
você acha que deveriam receber maior
ênfase na(s) disciplina(s) de
Engenharia de Software?

Dentro das 15 áreas de conhecimento
do SWEBOK o aluno deveria responder
quais deveriam receber maior ênfase
por parte do professor.

Tabela 6 - Questões e opções de respostas para os alunos

36

4.3.3.

Survey com profissionais da área de engenharia de
software

A Tabela 7 mostra as 4 principais questões de pesquisa feita aos profissionais de
engenharia de software. Estas questões foram retiradas de um questionário
utilizado por (Lethbridge, 2000) que visava descobrir qual conhecimento é
importante para um profissional de software.
Questão

Opções de Resposta

Q1. Quanto você aprendeu sobre os
tópicos de engenharia de software
durante a graduação?

Para cada uma das 10 áreas de
conhecimento do SWEBOK, o
profissional deveria responder:
0. Aprendi nada
1. Tornei-me vagamente familiar
2. Aprendi o básico
3. Me tornei funcional
(conhecimento moderado)
4. Aprendi muito
5. Aprendi em profundidade, me
tornei um especialista (aprendi
quase tudo)

Q2. Qual o seu atual conhecimento
sobre isso, considerando que você
aprendeu isso no emprego e quanto
você esqueceu-se desde a sua
graduação?

Para cada uma das 10 áreas de
conhecimento do SWEBOK, o
profissional deveria responder:
0. Sei nada
1. Estou vagamente familiarizado
2. Sei o básico
3. Estou funcional (conhecimento
moderado)
4. Sei muito
5. Sei em profundidade, Sou um
especialista (sei quase tudo)

Q3. Este assunto específico foi útil pra
você na sua carreira?

Para cada uma das 10 áreas de
conhecimento do SWEBOK, o
profissional deveria responder:
0. Completamente inútil
1. Quase nunca usei
2. Ocasionalmente útil
3. Moderadamente útil - em
determinadas atividades
4. Muito útil
5. Essencial

Q4. Quanto seria útil aprender mais

Para cada uma das 10 áreas de

37

sobre este assunto na graduação?

conhecimento do SWEBOK, o
profissional deveria responder:
0. Inútil
1. Dificilmente útil
2. Possivelmente útil
3. Moderadamente útil
4. Importante aprender mais
5. Essencial aprender mais

Tabela 7 - Questões e opções de respostas para os profissionais de engenharia de software

4.4.

Os participantes do S
​ urvey

Os dados foram coletados durante o período de 28 de outubro a 26 de novembro de
2016. Durante esse período, recebeu-se respostas completas de 41 participantes,
sendo 5 professores, 32 alunos e 4 profissionais.
Quanto ao curso de graduação onde os professores lecionam ou lecionaram
disciplinas de engenharia de software, 60% se referem ao curso de ciência da
computação e 40% ao curso de engenharia da computação. Em relação ao
semestre em que a disciplina foi lecionada, o semestre mais antigo foi 2000.1 e o
mais atual 2016.2. 80% dos professores possuem mais de 6 anos de atividade
docente, enquanto 20% possuem atividade docente que vai de 4 a 6 anos.
Para os alunos participantes, 65,6% são do curso de sistemas de informação,
21,9% de engenharia da computação e 12,5% de ciência da computação. Em
relação ao semestre em que foi cursada a disciplina de engenharia de software, o
semestre mais antigo foi 2012.1 e o mais atual 2016.2. Dos 32 alunos, 53,1%
responderam que tinham pouca habilidade em desenvolvimento de software antes
de cursar alguma disciplina de engenharia de software.
Para os profissionais, 50% vieram do curso de sistemas de informação, 25%
do curso de ciência da computação e 25% de outros cursos relacionado a área de
tecnologia da informação. Em relação o tempo de atuação na área de engenharia
de software, 25% têm menos de 1 ano de atuação, 50% tem de 2 a 3 anos e 25%
tem mais de 5 anos na área.

38

5.

Resultados dos Questionários
5.1.

Professores
5.1.1.

Planejamento pedagógico das disciplinas de engenharia de
software

Em relação a etapa do planejamento pedagógico adotado pelos professores que
lecionam disciplinas em que há pré-requisitos entre 2 disciplinas D1 e D2
ministradas por 2 docentes P1 e P2, 100% dos professores responderam que o
planejamento ocorre levando em conta os conteúdos das 2 disciplinas (D1 e D2) de
forma isolada por cada um dos responsáveis (P1 e P2) pelas disciplinas
respectivamente.
5.1.2.

Conteúdo programático das disciplinas de engenharia de
software

Quando questionados se o conteúdo programático previsto para a disciplina de
engenharia de software é trabalhado com a qualidade desejada e necessária, 80%
dos professores responderam que não e 20% dos professores responderam que
estão satisfeitos com a qualidade da disciplina.
5.1.3.

Carga Horária das disciplinas de engenharia de software e
aptidão dos alunos

A média semestral de horas da(s) disciplina(s) ensinada(s) na área de engenharia
de software é de até 60h para 60% dos professores, de até 75h para 20% dos
professores e mais de 75h para 20% dos professores.
Para 80% dos professores esta carga horária é vista como suficiente para
que se trabalhe os conteúdos necessários, e 20% acham que essa carga horária é
insuficiente.
Com relação a aptidão dos alunos para atuarem como engenheiros de
software, 80% dos professores acreditam que os alunos ainda não estão aptos, mas
com um pouco mais de aperfeiçoamento isto será possível, e 20% dos professores
acreditam que definitivamente os alunos não estão aptos a atuar na área.
5.1.4.

Currículos de Referência
engenharia de software

adotados

na

ementa

de

Em relação aos currículos de referência adotados pelos professores, observa-se
que 40% utilizam o currículo de referência da SBC, 40% utilizam o Curriculum
Guidelines da ACM/IEEE e 20% indicou que não utiliza currículo algum. Também foi

39

dada como possível resposta, o currículo de referência do MEC, mas nenhum
professor indicou utilizá-lo.

Gráfico 1 - Currículos de referência adotados para ensino da engenharia de software

5.1.5.

Áreas de conhecimento contempladas na ementa de
Engenharia de Software

Há várias formas de destacar a relevância de uma área de conhecimento, mas
neste survey, a forma usada será a quantidade de adoção de uma área,
considerando-se como relevantes as áreas que são adotadas por mais de 60% dos
professores. No Gráfico 2, observa-se que as áreas Requisitos de Software, Design
de Software, Construção de Software e Teste de Software são consideradas as
áreas de maior relevância. Também observa-se que as áreas de Economia de
Engenharia de Software, Fundamentos de Matemática e Fundamentos de
Engenharia são as áreas consideradas de menor relevância.

Gráfico 2 - Relevância das áreas de conhecimento da engenharia de software

40

5.1.6.

Abordagens de Ensino das disciplinas de engenharia de
software

Em relação ​às abordagens de ensino utilizadas pelos professores, 60% dos
professores adotam abordagens de ensino que focam nos alunos, como
execução de projetos, 40% adotam o uso de analogias, 20% usam jogos, 20%
utilizam dinâmicas de grupo, 40% adotam discussão de casos práticos; 80% adotam
abordagens onde o professor é o principal fornecedor da informação, como aulas
expositivas e 40% adotam aulas de laboratório. O Gráfico 3 apresenta os processos
de ensino que poderiam ser escolhidos pelos professores e suas porcentagens de
escolha.

Gráfico 3 - Abordagens de ensino

Quanto aos mecanismos de avaliação utilizados ao longo da disciplina, o
Gráfico 4 demonstra que os mais relevantes, levando em consideração a
quantidade de adoção são provas subjetivas e implementação de projetos. É
importante ressaltar que enquanto 60% dos professores veem o projeto de software
como forma de ensino, 100% deles o veem como um mecanismo de avaliação.

41

Gráfico 4 - Mecanismos de avaliação

5.1.7.

Desafios do ensino em Engenharia de Software

Em relação aos principais desafios de ensino enfrentados pelos professores,
observa-se no Gráfico 5 que mais da metade deles (60%) informaram que o
desinteresse dos alunos, por conta das aulas teóricas dificulta o ensino. Dentre os
desafios que foram marcados como “Outros”, estão: dificuldade de encontrar
clientes reais para levantamento de requisitos e fazer com que os alunos vejam o
valor prático do que está sendo apresentado a eles, já que os problemas que a
engenharia de software ataca surgem muito mais naturalmente em contextos que é
extremamente difícil emular em sala de aula.

Gráfico 5 - Principais desafios no ensino da engenharia de software

42

5.2.

Alunos
5.2.1.

Carga horária
software

e

Habilidade em desenvolvimento de

Em relação a habilidade em desenvolvimento de software depois de cursar a(s)
disciplina(s) de engenharia de software, 46,9% afirmaram que sua habilidade
passou a ser boa, 40,6% adquiriu habilidade regular, 6,3% afirmaram possuir pouca
habilidade, 3,1% nenhuma habilidade e 3,1% grande habilidade.
Quanto a carga horária para as disciplinas de engenharia de software, 75%
dos alunos afirmaram que o tempo não é suficiente para adquirir um bom
aprendizado, e 25% afirmaram que estão satisfeitos com a carga horária.
5.2.2.

Ferramentas Didáticas das disciplinas de engenharia de
software

Quanto ​às ​ferramentas didáticas utilizadas pelos professores, agora vistas pela
percepção dos alunos, o Gráfico 6 mostra que 100% dos professores utilizam
projetos ao longo da disciplina, 90,6% utilizam aulas expositivas e 62,2% adotam
aulas práticas.

Gráfico 6 - Ferramentas Didáticas

Em relação aos projetos desenvolvidos ao longo das disciplinas de
engenharia de software, 71,9% informaram que o projeto serviu apenas para obter a
nota da disciplina, 15,6% afirmaram que o projeto serviu para viabilizar um produto
que foi para o mercado e 12,5% indicaram que o projeto teve outras finalidades,
como complementar as atividades e os conhecimentos adquiridos no decorrer da
disciplina, e conceder uma experiência mínima no desenvolvimento de uma
aplicação.

43

5.2.3.

Aprendizagem em Engenharia de Software

Observa-se que a área de Requisitos de Software possui a maior porcentagem de
aprendizado contando com 90,6% dos alunos assinalando que esta foi a área que
mais aprenderam ao longo das disciplinas.
Conforme é apresentado no Gráfico 7, observa-se que, além da área de
Requisitos de Software, as áreas de Modelos e Métodos de Engenharia de
Software, Processos de Engenharia de Software e Teste de Software possuem
grande aprendizagem, acima de 50%. Já as áreas de Prática Profissional de
Engenharia de Software, Fundamentos de Computação e Fundamentos de
Engenharia apresentam menor aprendizagem, abaixo de 20%.

​Gráfico 7 - Percentual de aprendizagem por área de conhecimento

Sobre as áreas de conhecimento em que o aluno obtiveram maior nível de
aprendizagem, 68,8% deles afirmaram acreditar que estas são as principais áreas
em que um engenheiro de software deve ter conhecimento, e 31,1% acreditam que
o seu maior nível de aprendizagem foi em uma área considerada como não sendo
principal para um engenheiro de software.
Em relação a estar apto a entrar no mercado de trabalho levando em
consideração os conteúdos aprendidos, 68,8% informaram estarem aptos contra
31,1% que informaram não estarem aptos. Ainda com relação aos conteúdos de
engenharia de software, 50% informaram que possuem um bom domínio do
conteúdo, 37,5% disseram ter um domínio regular, 9,4% apontaram seu domínio de
conteúdo como ruim e 3,1% informaram não ter domínio algum dos conteúdos de
engenharia de software.
Conforme é apresentado no Gráfico 8, observa-se que 71,9% dos alunos
acreditam que a área de Qualidade de Software deveria receber maior ênfase por

44

parte dos professores, seguida pelas áreas de Teste de Software(65,6%) e
Construção de Software(62,1%).

Gráfico 8 - Áreas de conhecimento que deveriam receber maior ênfase

5.2.4.

Desafios do Aprendizado em Engenharia de Software

Em relação aos principais desafios do aprendizado enfrentados pelos alunos,
observa-se no Gráfico 9, que mais da metade deles (78,1%) informaram que o
pouco tempo para muito conteúdo é o principal problema que influencia
negativamente no aprendizado, seguido pela distância entre o que se ensina e a
realidade existente no mercado de trabalho(34,4%).
Dentre os desafios marcados como “Outros” estão: os alunos foram
obrigados a aprender uma nova linguagem em pouco tempo para implementar um
sistema, e por isso não obtiveram êxito na implementação do mesmo; poucas
disciplinas de engenharia de software, sendo que esta área é muito mais aderente
ao que será visto no mercado de trabalho, contra muitas disciplinas de áreas menos
aderentes; resolução de problemas próprios quando engenheiros de software
resolvem problemas de outras pessoas; e falta de resumos, summaries e Cheat
Sheets que os profissionais usam no dia a dia durante a fase de aprendizado.

45

Gráfico 9 - Principais problemas que influenciam negativamente no aprendizado

5.3.

Profissionais

Como a amostra dos profissionais que responderam ao questionários não é tida
como considerável (4 participantes), os resultados aqui apresentados são tratados
como “amostras não probabilísticas”, onde há o risco da amostra ser parcial, ou
seja, não pode ser representativa do público-alvo (Kitchenham e Pfleeger, 2008).
Assim, seus resultados não podem ser usados para a obtenção de conclusões
realísticas​.
5.3.1.

Importância geral das áreas de Engenharia de Software

A importância das áreas de conhecimento foi calculada sobre a proporção de
respostas dos participantes, que receberam três pontos (indicando, que a utilidade
do tópico era no mínimo moderada) ou mais para a questão 3: Este assunto
específico foi útil pra você na sua carreira? No Gráfico 10 é mostrada a ordem das
áreas de conhecimento por importância.

46

Gráfico 10 - Importância das áreas de engenharia de software

5.3.2.

Importância dada às áreas de conhecimento de Engenharia
de Software no ensino da graduação

Kitchenham (2005) definiu o gap de conhecimento como a diferença entre a
educação formal e a importância do tópico. Usando esta definição, definimos o gap
de conhecimento na graduação como sendo: Gap de Conhecimento =
(porcentagem de respostas da pergunta Q1 que receberam três pontos ou mais) (porcentagem das respostas da pergunta Q3 que receberam três pontos ou mais).
Assim, um valor negativo indica que a graduação deixou a desejar em relação à
importância dada à área de conhecimento.
Área de Conhecimento

Rank de Importância

Gap de conhecimento
(Q1-Q3)

7

-75

Economia de Engenharia
de Software

12

-75

Prática Profissional em
Engenharia de Software

4

-50

Fundamentos de
Matemática

15

-50

Fundamentos de
Computação

6

-50

Design de Software

47

Gerenciamento de
Configuração

8

-50

Teste de Software

10

-50

Construção de Software

1

-25

Manutenção de Software

2

-25

Gerenciamento de
Engenharia de Software

9

-25

Fundamentos de
Engenharia

11

-25

Modelos e Métodos de
Engenharia de Software

14

-25

Processos de Engenharia
de Software

5

0

Requisitos de Software

3

0

Qualidade de Software

13

0

Tabela 8 - Gap de conhecimento das áreas de engenharia de software

5.3.3.

Importância de se aprender mais sobre as áreas de
conhecimento da Engenharia de Software na graduação

Em relação às áreas que os profissionais da engenharia de software
acreditam que devem receber maior atenção quanto ao seu ensino na graduação,
que receberam 3 pontos (indicando, que a importância de se aprender mais é no
mínimo moderada) ou mais, se destacam as áreas de Prática Profissional da
Engenharia de Software, Design de Software, Manutenção de Software, Teste de
Software, Gerenciamento de Configuração, Gerenciamento de Engenharia de
Software, Economia de Engenharia de Software e Qualidade de Software que são
unanimidade em importância com 100% cada uma.

48

Gráfico 11 - Áreas que devem receber maior atenção quanto ao seu ensino na graduação

5.3.4.

Importância dos tópicos em relação a outras pesquisas

Para analisar esta questão, foi feita uma comparação e classificação dos
tópicos ordenados pela importância da pesquisa aqui mostrada, com a classificação
das pesquisas realizadas por Lethbridge,2000 e Kitchenham, 2005. Entretanto, é
importante ressaltar que a importância foi avaliada de forma diferente em cada uma
das pesquisas. No presente estudo, assim como no estudo de Kitchenham, a
importância foi calculada sobre a proporção de respostas dos participantes, que
receberam três pontos (indicando, que a utilidade do tópico era no mínimo
moderada) ou mais para a questão 3.
No estudo de Lethbridge, várias maneiras de avaliar a importância foram
aplicadas (Lethbridge, 2000). No entanto, a apresentação da lista completa dos
tópicos está disposta pelo cálculo do valor médio das respostas das questões 3 e 4.
Outro aspecto a ser considerado é a variação dos tópicos considerados em
cada uma das pesquisas. Em razão da quantidade diferente de tópicos nas
pesquisas, foram considerados os tópicos de engenharia de software que estavam
entre os 5 mais importantes da pesquisa de Lethbridge, e os tópicos que estavam
entre os ​5 mais importantes com relação aos resultados aqui apresentados, e os de
Kitchenham.
Lethbridge, 2000

Kitchenham et al., 2005

Design de software geral

Concepção essencial de
subsistema

Construção de Software

Métodos de engenharia
de software

Gerenciamento de
software

Manutenção de Software

49

Gerenciamento de
software

Métodos de engenharia
de software

Requisitos de Software

Concepção essencial de
subsistema

Design de software geral

Prática Profissional de
Engenharia de Software

Técnicas de aplicação
especializadas

Técnicas de aplicação
especializadas

Processo de Software

Tabela 9 - Importância dos tópicos de engenharia de software em relação a outras pesquisas

5.

Discussões dos Resultados Obtidos
5.2.1.

Sobre a adoção de currículos de referência

Em relação a adoção de currículos de referência, observa-se que 80% dos
professores adota algum currículo de referência para guiar sua ementa nas
disciplinas de engenharia de software. É de grande importância o uso destes
currículos, pois eles são elaborados por órgãos de grande representatividade na
área, como a ACM e IEEE Computer Society. Além disso, eles tem o intuito de
enfrentar os desafios da rápida mudança da paisagem tecnológica da computação e
fornecer uma referência importante para o estabelecimento da engenharia de
software como uma disciplina reconhecida de engenharia, além de definir o perfil
profissional e acadêmico esperado para os estudantes da área. Também
apresentam uma estruturação e detalhamento das matérias, como carga horária,
tópicos a serem abordados e aprendizagens esperadas para cada um destes
tópicos. Sem a referência destes currículos, os professores podem criar ementas
que não condizem com as diretrizes nacionais e internacionais de ensino, e
possivelmente, seus alunos não atenderão as demandas do mercado e não
possuirão o conhecimento que se espera para a área.
5.2.2.

Sobre a relevância dos tópicos

Identificando as 5 áreas de conhecimento mais adotadas pelos professores nas
ementas das disciplinas de engenharia de software, é possível correlacionar o
percentual de áreas relevantes com o percentual de aprendizagem dos alunos,
conforme pode ser visto no Gráfico 12.

50

Gráfico 12 - Correlação entre maior relevância e aprendizagem

Acredita-se que a relevância da área de Requisitos de Software se deve ao
fato de que essa área representa as necessidades reais dos usuários, clientes e
outras partes interessadas afetadas por um sistema. Para que essas necessidades
sejam atendidas, o profissional de engenharia de software deverá ter conhecimento
em elicitação e análise das necessidades das partes interessadas e a criação de
uma descrição adequada do comportamento e qualidades do sistema desejado,
juntamente com restrições e suposições relevantes. Neste contexto, pode ser
inserido a segunda áreas mais relevante, Testes de Software.
Uma propriedade essencial de um requisito de software é que deve ser
possível validar que o produto acabado o satisfaz. Requisitos que não podem ser
validados são apenas "desejos". Uma tarefa importante é, portanto, o planejamento
de como testar cada requisito. Na maioria dos casos, a concepção de testes de
aceitação faz isso para a forma de como os usuários finais tipicamente realizam
negócios usando o sistema [SWEBOK, 2004].
A terceira área mais relevante, Design de software, consiste em duas
atividades que se encaixam entre a áreas de Requisitos de Software e a Construção
de Software. São elas: desenho arquitetônico de software (às vezes chamado
design de alto nível), que desenvolve estrutura e organização de alto nível do
software e identifica os vários componentes; e design detalhado do software, que
especifica cada componente em detalhes suficientes para facilitar sua construção.
[SWEBOK, 2004].
Por fim, Modelos e Métodos de Engenharia de Software usa técnicas para
ajudar engenheiros de software a entenderem e comunicarem aspectos do software
para os stakeholders, como também fornece uma abordagem organizada e
sistemática para o desenvolvimento de softwares que permite ao engenheiro de

51

software visualizar os detalhes do software e, finalmente, transformar a
representação em um conjunto de trabalho de código e dados.
Assim, como é possível correlacionar as áreas mais relevantes, também é
possível correlacionar o percentual de áreas menos relevantes com o
percentual de baixa aprendizagem dos alunos, como mostra o Gráfico 13.

Gráfico 13 - Correlação entre menor relevância e aprendizagem

O fato das áreas de Manutenção de Software, Fundamentos de Computação
e Prática Profissional de Engenharia de Software serem consideradas menos
relevantes para os professores, impacta diretamente na aprendizagem dos alunos,
que demonstram baixa aprendizagem , 25%, 12,5% e 6,3% respectivamente.

5.1.

Considerações Finais

Neste capítulo foram abordados aspectos dos processo de ensino-aprendizagem no
Centro de Informática (CIn). Por meio dos resultados obtidos, certificou-se que a
relevância dada pelos professores a determinadas áreas de conhecimento da
engenharia de software impacta diretamente no grau de aprendizagem dos alunos.
Devido a não obtenção de quantidade de respostas considerável no
questionário dos profissionais da área de engenharia de software, e visto que a
quantidade de alunos excluídos, cerca de 1200, foi maior que a amostra obtida, isto
impactou diretamente a abrangência e o resultado do survey. Uma amostra
inadequada pode levar a resultados que não são estatisticamente significativos. O
próximo capítulo conclui a pesquisa, fazendo uma comparação objetiva do cenário
atual do CIn com os métodos e técnicas descritos.

52

6.

Conclusão

Com o estudo realizado foi possível verificar que embora a maior parte dos
professores acreditem que a carga horária da sua disciplina seja suficiente, eles não
conseguem trabalhar seu conteúdo da forma desejada. Isso pode dever-se ao fato
de que os contextos em que a engenharia de software se insere, seja difícil de
trabalhar em sala de aula, o que torna as aulas teóricas de difícil entendimento e
não desperta interesse nos alunos. Embora abordagens alternativas de ensino que
foquem nos alunos e os ajudam a aprender de maneira mais efetiva sejam
fortemente recomendadas para o ensino da engenharia de software, os professores
costumam utilizar estas abordagens como forma de avaliação e não de ensino.
A pesquisa também averiguou que as 5 áreas de conhecimento consideradas
relevantes são totalmente complementares, sendo possível correlacionar seus
tópicos. Os professores tendem a ministrar mais adequadamente os tópicos ligados
a essas áreas porque estes são mais compreensíveis do que os tópicos de outras
áreas (como Economia de Engenharia de Software). Para as estratégias de ensino,
deve-se ter uma atenção maior para os tópicos de Manutenção de Software e
Prática Profissional de Engenharia de Software que apesar de consideradas
relevantes pelos profissionais da área, apresentaram um baixo índice de
aprendizagem pelos alunos entrevistados.
Este estudo visou ainda fazer uma comparação objetiva entre os métodos e
técnicas descritos. Esta comparação será apresentada a seguir:
● Enquanto a média de horas para as disciplinas de engenharia de software
apresentadas no currículo da ACM/IEEE, 2014 é de 46,7h, a média de horas
das disciplinas ministradas no Centro de Informática(CIn) é de 67h. Apesar
da média de horas do CIn ser maior, há uma grande diferença quanto à
importância dada a determinadas áreas de conhecimento. Por exemplo,
enquanto a disciplina de qualidade de software na ACM/IEEE, 2014 dispõe
de apenas 10h, no Centro de Informática esta disciplina é ministrada em até
60h.
● O uso de projetos (ACM/IEEE, 2004) para ensinar e/ou avaliar os alunos, é
comumente usado no Centro de Informática. Porém, sua duração é de
apenas um semestre, quando o indicado é que o projeto seja desenvolvido
nos dois últimos semestres do curso de graduação, para que o aluno tenha
tempo suficiente para praticar as habilidades e aplicar o conhecimento
adquirido ao longo do curso. Para disciplinas de engenharia de software que
ocorram antes do último ano do curso de graduação, é indicado o uso de
atividades baseadas em projetos, onde algumas atividades de aprendizado
devem ser criadas para imitar projetos típicos da indústria.

53

● Os alunos por sua vez, precisam ter a visão de que, como os engenheiros de
software, eles têm de produzir artefatos de utilidade genuína(ACM/IEEE,
2004) e não apenas para receber uma nota. Com isso em mente, a
experiência da disciplina se torna mais rica e ajuda a criar um ambiente que é
favorável à produção de graduados de alta qualidade.
Embora tenhamos de ter muito cuidado ao interpretar os resultados, devido
ao pequeno tamanho da amostra e a sua restrição a profissionais, os resultados
podem ser relevantes como base para reexaminar as competências profissionais
necessárias que devem ser aprendidas na graduação para se ter sucesso na área
de engenharia software.

6.1.

Trabalhos Futuros

Para melhorar o cenário de ensino identificado neste survey, recomenda-se para
trabalhos futuros relacionados ao tema, uma proposta para a integração eficaz de
conceitos e práticas no ensino da engenharia de software , a fim de diminuir o gap
de conhecimento, desenvolver práticas de ensino que foquem nos tópicos
considerados relevantes para a formação profissional dos alunos e que realmente
desenvolvam competências e habilidades profissionais, e que reflitam a realidade do
contexto no qual os alunos atuarão quando ingressarem no mercado de trabalho.
Como trabalho futuro, também recomenda-se o uso de inteligência artificial
para a criação de um bot assistente que auxilie os estudantes com questões de
rotina da disciplina de engenharia de software, fazendo lembretes de datas de
entrega de trabalhos e sendo um apoio aos monitores e professores.

54

7.

Referências Bibliográficas

ACM/IEEE. “Computer Engineering Curriculum. Guidelines for Undergraduate
Degree Programs in Computer Engineering”, 2004.
ACM/IEEE. “Computer Science Curriculum. Guidelines for Undergraduate Degree
Programs in Computer Science”, 2008.
ACM/IEEE. “Computer Science Curriculum.Guidelines for Undergraduate Degree
Programs in Computer Science”, 2013.
ACM/IEEE. “Information Systems Curriculum. Guidelines for Undergraduate Degree
Programs in Informations Systems”, 2006.
ACM/IEEE. “Information Systems Curriculum. Guidelines for Undergraduate Degree
Programs in Informations Systems”, 2010.
ACM/IEEE. “Software Engineering Curriculum. Guidelines for Undergraduate Degree
Programs in Software Engineering, 2004.
ACM/IEEE. “Software Engineering Curriculum. Guidelines for Undergraduate Degree
Programs in Software Engineering”, 2014.
BACH, J. “SE Education: We’re on Our Own”, 1997.
BANDURA, A. “A modificação do Comportamento”. Trad. do original de 1969 por
Eva Nick e Luciana Peotta 1 ed., Rio de Janeiro:Interamericana, 1979.
BAKER, A., NAVARRO, E., HOEK, A. “An Experimental Card Game for Teaching
Software Engineering Processes”. In: Journal of Systems and Software, 2005.
BARROWS, H.S. “A taxonomy of problem based learning methods”. Medical
Education, 1986.
BAVOTA, G., LUCIA, A., FASANO, F., OLIVETO, R., ZOTTOLI, C. “Teaching
Software Engineering and Software Project Management: An Integrated and
Practical Approach”, 2012.
BOEHM, B. “A View of 20th and 21st Century Software Engineering”, 2006

55

BORDENAVE, J, D; PEREIRA, A. M. “Estratégias de ensino-aprendizagem”. 25 ed.
Petrópolis: Vozes, 2004.
BORDENAVE, J, D.; PEREIRA, A. M. “Estratégias de ensino-aprendizagem”. 28. ed.
Petrópolis:Vozes, 2007.
BROWN, J. S.; COLLINS, A.; DUGUID, P. “Situated cognition and the culture of
learning”. Educational Researcher, v. 18, n. 1, 1989.
CARVER, J., JACCHERI, L., MORASCA, S., SHULL, F. “Issues in Using Students in
Empirical Studies in Software Engineering Education”, 2003
CHICKERING, A.W., GAMSON, Z.F. “Seven Principles For Good Practice in
Undergraduate Education”, 1987.
FLOWERS, J.G. “Improving the Capstone Project Experience: A Case Study in
Software Engineering”, 2008.
GAGNÉ, R.M. “Como se realiza a aprendizagem”, Rio de Janeiro: Livros Técnicos e
Científicos, 1971.
GIL, A.C. “Métodos e Técnicas de Pesquisa Social”. 6ª Ed. São Paulo: Atlas, 2008
GIMENES, ITANA M. S. ; BARROCA, LEONOR ; BARBOSA, E. F. . “The future of
human resources qualifications in Software Engineering meeting demands from
industry and benefiting from educational and technological advances”. Anais do 26°.
Simpósio Brasileiro de Engenharia de Software (SBES) - Trilha Especial. USA:
IEEE, 2012.
GNATZ, M., KOF. L., PRILMEIER, F., SEIERT, T. “A Practical Approach of Teaching
Software Engineering”, Proc. 16th Conf. Software Eng. Education and Training,
2003.
GRIER, D. A. “Software Engineering: History”, 2011.
GUEDES, S.S. “Teorias da Aprendizagem”. Técnicas Instrumentais de Didática
Contemporânea – TIDC, 2009
IEEE COMPUTER SOCIETY. “SWEBOK: guide to the software engineering body of
knowledge”, 2004.

56

JIANGUO, L. “Combination of Research and Teaching in Software Engineering
Education” , WASE International Conference on Information Engineering, 2009.
KITCHENHAM, B., BUDGEN, D., BRERETON, P., WOODALL P. “An investigation
of software engineering curricula” , 2005.
KITCHENHAM, B., PFLEEGER, S. “Personal Opinion Surveys”, In: Guide to
Advanced Empirical Software Engineering, Springer, 2008.
KLAUER, K. “Training of inductive reasoning: A developmental program of
higher-order cognitive skills”. Simpósio Formação da Mente através da Educação,
Geneve, Switzerland, 1996.
LETHBRIDGE, T.C. “A Survey of the Relevance of Computer Science and Software
Engineering Education”, 2000
LETHBRIDGE, T.C., SINGER, J., SIM, S.E. “Software Engineering Data Collection
for Field Studies”, 2008.
LI, P.L., KO, A.J., ZHU, J. “What Makes A Great Software Engineer?” IEEE/ACM 37°
IEEE International Conference on Software Engineering, 2015.
MELO, C.O., FERRAZ, R., PARSONS, R.J., “Brazil and the Emerging Future of
Software Engineering”, 2016.
MEYER, B. “Software Engineering in the Academy”, 2001.
MINISTÉRIO DA EDUCAÇÃO. “Diretrizes Curriculares de Cursos da Área de
Computação e Informática”, 2012.
MINSKY, M. “The society of mind”. London: Picador, 1986.
OFFUTT, Jeff. “Putting the Engineering into Software Engineering Education”, 2013.
OLISKOVICZ, K., PIVA, C.D. “Estratégias Didáticas no Ensino Superior”, 2014.
OSMAN, R., DIAS-NETO, A.C. “Motivating by examples: An empirical study of
teaching an introductory software engineering course in Brazil”, 2014.
PARNAS, D.L. “ Software Engineering Programs Are Not Computer Science
Programs”, 1999.

57

PIAGET, J. A epistemologia genética. Trad. Nathanael C. Caixeira. Petrópolis:
Vozes, 1971
PRIKLADNICKI, Rafael et al. “Ensino de Engenharia de Software:
desafios,estratégias de ensino e lições aprendidas”, 2009.
Disponível em:http://fees.inf.puc-rio.br/FEESArtigos/FEES09/FEES_2.pdf.
SANTOS, R.E.S., MAGALHÃES, C.V.C., CORREIA-NETO, J.S., SOUZA, E.P.R.,
VILAR, G. “Ferramentas, métodos e experiências no ensino de Engenharia de
Software: um Mapeamento sistemático”. Anais do 25° Simpósio Brasileiro de
Informática na Educação, SBIE 2014.
SANTOS, M. S.; SANTORO, N.; BORGES, F. M. “Um framework para estudo de
ambientes de suporte à aprendizagem cooperativa” . Revista Brasileira de
Informática na Educação, UFSC, Florianópolis, 1999.
SÉGUIN, N., ABRAN, A., DUPUIS, R. “Software Engineering Principles: A Survey
and an Analysis”, 2010.
SHAW, M. “Software Engineering Education: A Roadmap”, 2000.
SHULL, F., SINGER, J., SJOBERG, D.I.K. “Guide to Advanced Empirical Software
Engineering” 2008.
SHUKLA, R., SUREKA, A., JOSHI, R., MALL, R. “A Report on Software Engineering
Education Workshop”, 2012.
SILVA, L. F.; LEITE, J. C. S. P.; BREITMAN, K. K. Ensino de Engenharia de
software: Relato de Experiências. Anais do XII Workshop de Educação em
Informática (WEI). Salvador, 2004.
SOMMERVILLE, I. “​Engenharia de Software”, 9ª Edição. Pearson Education,

2011.
STEVENS, K.T., “Experiences Teaching Software Engineering for the First Time”,
2001.
TOMAYKO, J.E “Teaching a Project-Intensive Introduction to Software Engineering”,
1987.
TOMAYKO, J.E., SHAW, M. “Models for undergraduate project courses in software
engineering”, 1991.

58

VYGOTSKY, L.S. “Pensamento e linguagem”​. São Paulo: Martins Fontes, 1987.
(Coleção Psicologia e Pedagogia)
X.X. Li. "Research and Practice of Model Based Case Utilized Teaching", Computer
Education, vol. 2, 2006.
WANGENHEIM, C. G. v., SHULL, F. “To Game or Not to Game?”, IEEE Software,
2009.
ZHANG, J., LI, J. “Teaching Software Engineering Using Case Study”, 2010.

59