FEES - CBSoft 2013 - Universidade de Brasília
Transcrição
FEES - CBSoft 2013 - Universidade de Brasília
congresso Brasileiro de Software: Teoria e Prática 29 de setembro a 04 de outubro de 2013 Brasília-DF Anais FEES 2013 Fórum de Educação em Engenharia de Software FEES 2013 Fórum de Educação em Engenharia de Software 02 e 03 de outubro de 2013 Brasília-DF, Brasil ANAIS Volume 01 ISSN: 2175-9677 COORDENAÇÃO DO CBSOFT 2013 Genaína Rodrigues – UnB Rodrigo Bonifácio – UnB Edna Dias Canedo - UnB Realização Universidade de Brasília (UnB) Departamento de Ciência da Computação (DIMAp/UFRN) Promoção Sociedade Brasileira de Computação (SBC) Patrocínio CAPES, CNPq, Google, INES, Ministério da Ciência, Tecnologia e Inovação, Ministério do Planejamento, Orçamento e Gestão e RNP Apoio Instituto Federal Brasília, Instituto Federal Goiás, Loop Engenharia de Computação, Secretaria de Turismo do GDF, Secretaria de Ciência Tecnologia e Inovação do GDF e Secretaria da Mulher do GDF FEES 2013 October 2 to 3, 2013 Brasília-DF, Brazil PROCEEDINGS Volume 01 ISSN: 2175-9677 CBSOFT 2013 gENERAL CHAIRS Genaína Rodrigues – UnB Rodrigo Bonifácio – UnB Edna Dias Canedo - UnB ORGANIZATION Universidade de Brasília (UnB) Departamento de Ciência da Computação (DIMAp/UFRN) PROMOTION Brazilian Computing Society (SBC) SPONSORS CAPES, CNPq, Google, INES, Ministério da Ciência, Tecnologia e Inovação, Ministério do Planejamento, Orçamento e Gestão e RNP SUPPORT Instituto Federal Brasília, Instituto Federal Goiás, Loop Engenharia de Computação, Secretaria de Turismo do GDF, Secretaria de Ciência Tecnologia e Inovação do GDF e Secretaria da Mulher do GDF Autorizo a reprodução parcial ou total desta obra, para fins acadêmicos, desde que citada a fonte FEES 2013 Apresentação O Fórum de Educação em Engenharia de Software (FEES) tem como objetivo expor, analisar e debater sobre as particularidades e dificuldades do ensino e da aprendizagem de Engenharia de Software, propondo e discutindo estratégias de apoio às atividades educacionais. O FEES é um fórum anual vinculado ao Simpósio Brasileiro de Engenharia de Software (SBES) desde 2008. As edições anteriores do FEES foram realizadas em Natal (2012), São Paulo (2011), Salvador (2010), Fortaleza (2009) e Campinas (2008). O FEES 2013 tem como tema central “Educação Aberta: Desafios e Oportunidades para a Educação em Engenharia de Software”. O termo Educação Aberta busca combinar, de forma efetiva, facilidade de acesso à educação, qualidade de instrução, menor custo e escalabilidade ilimitada. Como a educação e o treinamento em Engenharia de Software podem se beneficiar desse modelo? E quais são os desafios associados? Neste contexto, o programa do FEES 2013 inclui a palestra intitulada “Os dilemas didáticos da engenharia de software: nós no pódio e ... eles nas nuvens” a ser apresentada pela Profa. Itana Maria Gimenes. O comitê de programa do FEES 2013 contou com a participação de 21 pesquisadores brasileiros. Foram submetidos 15 artigos ao Fórum, provenientes de diversas regiões do país, sendo que 7 foram aceitos para apresentação e publicação nos anais. Cada artigo foi avaliado por, pelo menos, três membros do Comitê de Programa, segundo critérios pré-estabelecidos. Os coordenadores tomaram a decisão final a partir de análise dos comentários dos avaliadores e da relevância do tema do artigo para o Fórum. Finalmente, o programa do FEES 2013 inclui uma oficina de trabalho, sob a coordenação do Prof. Daltro Nunes, para discutir e trabalhar aspectos dos currículos de graduação em Engenharia de Software. Gostaríamos de agradecer aos membros do comitê de programa e revisores pelo trabalho cuidadoso realizado, e aos professores Itana Gimenes e Daltro Nunes, por aceitar nosso convite e enriquecer nosso Fórum com sua valiosa experiência na área. Agradecemos, finalmente, a todos os autores de trabalhos, patrocinadores e membros do comitê organizador local do CBSOFT 2013, e aos professores Hilmer Neri e Wander Cleber Silva pelo apoio e contribuição para o sucesso do FEES 2013. Esperamos que o Fórum seja uma experiência positiva para todos. Brasília, Outubro de 2013. Christina Chavez e Regina Braga Coordenadoras do Comitê de Programa do FEES 2013 5 FEES 2013 Foreword The Forum on Software Engineering Education (FEES) aims to expose, analyze and discuss the particularities and difficulties of teaching and learning Software Engineering, proposing and discussing strategies to support educational activities. The FEES is an annual forum co-located with the Brazilian Symposium on Software Engineering (SBES) since 2008. The previous FEES editions were held in Natal (2012), São Paulo (2011), Salvador (2010), Fortaleza (2009) and Campinas (2008). The central theme of FEES 2013 is “Open Education: Challenges and Opportunities for Software Engineering Education”. The term Open Education seeks to combine, effectively, easy access to education, education quality, lower cost and unlimited scalability. How education and training in software engineering can benefit from this model? And what are the associated challenges? In this context, the FEES 2013 program includes an invited talk entitled “The dilemmas of teaching software engineering: we are on the podium and ... they are in the clouds “ to be presented by Prof. Itana Maria Gimenes. In 2013, the FEES program committee included 21 Brazilian researchers. 15 papers were submitted to the Forum, from different regions of the country, and 7 were accepted for presentation and publication in the proceedings. Each paper was evaluated by at least three members of the Program Committee, according to pre-established criteria. The program chairs took the final decision from the analysis of the comments of the evaluators and the relevance of the theme of the article to the Forum. Finally, the program FEES 2013 includes a workshop, under the coordination of Prof. Daltro Nunes, to discuss and work on aspects of undergraduate curricula in software engineering. We would like to thank the members of the program committee and reviewers for their careful work, Prof. Itana Gimenes and Prof. Daltro Nunes, for accepting our invitation and enriching our Forum with their valuable experience in the field. Finally, we thank the authors, sponsors and members of the local organizing committee of CBSoft 2013, Prof. Hilmer Neri and Prof. Wander Cleber Silva, for their support and contribution to the success of FEES 2013. We hope that the Forum is a positive experience for everyone. Brasília, October 2013. Christina Chavez and Regina Braga FEES 2013 Program Chairs 6 FEES 2013 Biografia dos coordenadores / FEES 2013 Chairs Short Biographies Christina von Flach Garcia Chavez Christina von Flach Garcia Chavez é Professora Associada no Departamento de Ciência da Computação (DCC) da Universidade Federal da Bahia (UFBA) desde 1990. É Doutora em Informática pela Pontifícia Universidade Católica do Rio de Janeiro (2004), Mestre em Ciência da Computação pela Universidade Estadual de Campinas (1992) e Bacharel em Ciência da Computação pela Universidade Federal da Bahia (1987). Atualmente, coordena o curso de Doutorado do Programa de Pós-graduação Multiinstitucional em Ciência da Computação (PMCC). Participa do Laboratório de Engenharia de Software da UFBA (LES @ UFBA) e coordena o grupo de pesquisa em Design e Evolução de Software da UFBA (aSide @ UFBA). Atua como pesquisadora e líder do grupo de Arquitetura de Software no Fraunhofer Project Center – UFBA (FPC-UFBA). Seus interesses de pesquisa incluem diversos tópicos relacionados a arquitetura e evolução de software e educação em engenharia de software. Christina von Flach Garcia Chavez is an Associate Professor at the Department of Computer Science (DCC) of the Federal University of Bahia (UFBA) since 1990. She has PhD in Computer Science from the Pontifical Catholic University of Rio de Janeiro (2004), Master in Computer Science from the State University of Campinas (1992) and BS in Computer Science from the Federal University of Bahia (1987). She is currently coordinating the Ph.D. Graduate Program in Computer Science (PMCC) at UFBA. She participates in the Software Engineering Laboratory of UFBA (LES @ UFBA) and coordinates the research group on Software Design and Evolution at UFBA (aside @ UFBA). She works as a researcher and team leader in Software Architecture at the Fraunhofer Project Center - UFBA (FPC-UFBA). Her research interests include various topics related to software architecture and evolution, and software engineering education. Regina Maria Maciel Braga Regina Braga é professora associada da Universidade Federal de Juiz de Fora desde 2004. Graduada em Ciência da Computação pela Universidade Federal de Juiz de Fora (1991). É doutora em Engenharia de Sistemas e Computação pela Universidade Federal do Rio de Janeiro (2000). Recebeu o título de mestre em Engenharia de Sistemas e Computação pela Universidade Federal do Rio de Janeiro em 1995. Atualmente trabalha na graduação em Ciência da Computação e é coordenadora do mestrado em Ciência da Computação. Tem experiência em ciência da computação, com ênfase em engenharia de software e banco de dados, especificamente nos seguintes tópicos: ontologias, integração de dados, LPS e workflows científicos. Professor Braga is an associate professor at the Federal University of Juiz de Fora since 2004. Graduated in Computer Science from Federal University de Juiz de Fora (1991). She is Ph.D. in Computer Science and Systems Engineering form Federal University of Rio de Janeiro ( 2000) and received her master degree in Computer and Systems Engineering from Federal University of Rio de Janeiro in 1995. She currently works on the undergraduate program in Computer Science and is the coordinator of the Master Program of Computer Science. Braga has experience in computer science, with emphasis on software engineering and databases, specifically in the following topics: ontologies, data integration, SPL and scientific workflows. 7 FEES 2013 Comitês Técnicos / Technical Committees Ana Regina Rocha, COPPE/UFRJ Andréa Mendonça, IFAM Christiane Gresse von Wangenheim, UFSC Christina Chavez,UFBA Claudia Werner, COPPE/UFRJ Dalton Dario Serey Guerrero, UFCG Daltro Nunes, UFRGS Eduardo Almeida, UFBA Eduardo Figueiredo, UFMG Ellen Francine Barbosa, ICMC-USP Fernanda Campos, UFJF Heitor Costa, UFLA Itana Maria de Souza Gimenes, UEM Jair Leite, UFRN José Maria David, UFJF Julio Leite, PUC-Rio Rafael Prikladnicki, PUCRS Regina Braga, UFJF Roberto de Almeida Bittencourt, UEFS Tayana Conte, UFAM Vera Werneck, UERJ Comitê organizador / Organizing Committee COORDENAÇÃO GERAL Genaína Nunes Rodrigues, CIC, UnB Rodrigo Bonifácio, CIC, UnB Edna Dias Canedo, CIC, UnB COMITÊ LOCAL Diego Aranha, CIC, UnB Edna Dias Canedo, FGA, UnB Fernanda Lima, CIC, UnB Guilherme Novaes Ramos, CIC, UnB Marcus Vinícius Lamar, CIC, UnB George Marsicano, FGA, UnB Giovanni Santos Almeida, FGA, UnB Hilmer Neri, FGA, UnB Luís Miyadaira, FGA, UnB Maria Helena Ximenis, CIC, UnB 8 FEES 2013 Palestrante convidada / invited keynote Itana Maria de Souza Gimenes Universidade Estadual de Maringá (UEM) Os dilemas didáticos da engenharia de software: nós no pódio e ... eles nas nuvens / Dilemmas of teaching software engineering: we are on the podium and...they are in the clouds Resumo: Partimos de problemas vivenciados atualmente no ensino superior ilustrando com exemplos da engenharia de software, fazendo uma análise da relação entre professor aluno e o eventual efeito, por exemplo, na qualidade de software. O cenário vai mostrar a necessidade de uma evolução, até retórica, que já atingiu uma crise. Como refletir sobre esse cenário e usar os recursos atuais disponíveis para motivar e melhorar a educação. O que há de novo que já pode ser utilizado em engenharia de software? Como agir em comunidade, colaborar, compartilhar e promover conhecimento? Summary: We start from problems experienced in higher education currently illustrating with examples of software engineering, making an analysis of the relationship between teacher and student, and the possible effect, for example, on software quality. The scenario will show the need for an evolution, even rhetorical, which has reached a crisis. How to reflect on this scenario and use the current resources available to motivate and improve education? What are the advances that can already be used in software engineering? How to act in community, collaborate, share and promote knowledge? 9 FEES 2013 Biografia da palestrante / keynote Short Biographie Itana Maria de Souza Gimenes é professora titular em engenharia de software na Universidade Estadual de Maringá (UEM), Paraná, Brazil. Ela fez estágio de pós-doutorado senior na Open University, Reino Unido (2011) em uma pesquisa relacionada a projeto de aprendizagem aplicada a engenharia de software. Em 2005, fez pós-doutorado na School of Computer Science, University of Waterloo, ON, Canada onde a pesquisa concentrou-se em linha de produto de software. Ela tem PhD em Ciência da Computação na University of York, Department of Computer Science, UK (1992). Foi Presidente da Comissão Especial de Engenharia de Software da Sociedade Brasileira de Computação (SBC) em 20072008 e 1998-1999. Atualmente é coordenadora local (UEM) do Instituto Nacional de Tecnologia para Sistemas Embarcados Críticos, um projeto estratégico do CNPq coordenado pelo ICMC/USP. Itana tem experiência em vários projetos nacionais e internacionais. Itana Maria de Souza Gimenes is a professor in software engineering at the State University of Maringá (UEM), Paraná, Brazil. Her senior postdoctoral training was held at the Open University, UK (2011) in a research related to learning projects applied to software engineering. In 2005, she held a post-doctorate at the School of Computer Science, University of Waterloo, ON, Canada in which her research focused on software product lines. She has a PhD in Computer Science at the University of York, Department of Computer Science, UK (1992). She was the Chairman of the Special Committee on Software Engineering of the Brazilian Computer Society (SBC) in 2007-2008 and 1998-1999. She is currently the local coordinator (at UEM) of the National Technology Institute for Critical Embedded Systems, a strategic CNPq project coordinated by the ICMC / USP. Itana has experience in various national and international projects. 10 FEES 2013 Índice de Artigos / Table of Contents Proposta e Avaliação de um Curso Aberto em Engenharia de Software 12 Juliana Pereira (Federal University of Minas Gerais (UFMG)), Lucas Garcia (UFMG), Eduardo Figueiredo (Federal University of Minas Gerais (UFMG)) SimulES-W: Retroalimentação Evolutiva num Jogo para Ensino na Engenharia de Software 20 Elizabeth Monsalve (Puc-Rio), Vera Werneck (Universidade do Estado do Rio de Janeiro), Julio Leite (Pontificia Universidade Catolica do Rio de Janeiro) Jogos digitais como instrumentos no processo de avaliação formativa da aprendizagem na disciplina de Engenharia de Software 38 Glauber Araujo (Universidade Federal do Rio Grande do Norte), Eduardo Aranha (Universidade Federal do Rio Grande do Norte) Uma Abordagem para o Ensino de Engenharia de Software no Desenvolvimento de Jogos Digitais 36 Emanuel Coutinho (Universidade Federal do Ceará (UFC), Carla Ilane Moreira Bezerra (Universidade Federal do Ceará - UFC) Learning Software evolution: curriculum, approaches and an experience report 44 Debora Nascimento (Federal University of Sergipe), Christina Chavez (Universidade Federal da Bahia), Roberto Bittencourt (Universidade Estadual de Feira de Santana) Tecnologia Social: A influência das empresas juniores na academia e na indústria de software 52 Nadja Rodrigues (Instituto Federal de Educação, Ciência e Tecnologia da Paraíba) Uma Experiência de Integração de Design Thinking e Metodologias Ágeis para o Desenvolvimento de Software Cleidson de Souza (UFPA), Mylena Ferreira (UFPA), Fagner Pantoja (UFPA), Mayara Figueiredo (Universidade Federal do Pará) 11 60 Proposta e Avaliação de Educação Aberta para Engenharia de Software Juliana Alves Pereira, Lucas Garcia, Eduardo Figueiredo Laboratório de Engenharia de Software (LabSoft), Departamento de Ciência da Computação (DCC), Universidade Federal do Minas Gerais (UFMG) Belo Horizonte – MG – Brasil {juliana.pereira, lucas.sg, figueiredo}@dcc.ufmg.br Abstract. Massive Open Online Course (MOOC) is an emerging method of online lecturing whose application in education is not bounded by space and location constraints. The successful implementation of MOOCs requires conceptual changes in how instructors and students behave in an open unbounded education environment. There are some emerging MOOC initiatives for Software Engineering. However, the knowledge about the best practices for learning Software Engineering processes, methods, and tools in such an open environment is still limited. This paper presents a MOOC, based on a face-to-face course, for introductory Software Engineering courses. Over 60 students are taking this MOOC, which is composed of 44 video lectures, 60 questions in 6 quizzes, and several discussion topics. To evaluate the proposed MOOC, we (i) compared students’ performance in online vs. face-to-face courses and (ii) applied a questionnaire to the students taking the course. Resumo. Curso Aberto Disponível na Internet (CADI) é um método emergente de ensino online que não é limitado por restrições de espaço e localização. A implantação bem sucedida de um CADI exige mudanças conceituais na forma como professores e alunos se comportam em um ambiente aberto de ensino. Existem algumas iniciativas emergentes de CADIs para a Engenharia de Software. No entanto, ainda é limitado o conhecimento sobre as melhores práticas de Engenharia de Software para o ensino de processos, métodos e ferramentas em tal ambiente aberto. Este artigo apresenta um CADI para um curso introdutório de Engenharia de Software proposto a partir de um curso presencial. Mais de 60 estudantes estão participando deste CADI, que é composto de 44 aulas em vídeo, 60 perguntas em 6 questionários de revisão e vários tópicos de discussão. Para avaliar o CADI proposto: (i) foi comparado o desempenho de alunos no curso online e em cursos presenciais e (ii) foi aplicado um questionário para os alunos que participam do curso online. 1. Introdução Curso Aberto Disponível na Internet (CADI) é um método emergente de ensino online que não é limitado por restrições de espaço e localização [4]. Atualmente, várias universidades dos principais centros influentes em educação ao redor do mundo criaram ou estão criando CADIs com suporte total ou parcial via internet. Os exemplos são significativos. A Universidade de Harvard e o MIT (Massachusetts Institute of 12 Technology), por exemplo, estão investindo na criação de vários CADIs por meio do portal edX1. Outras mais de 80 universidades americanas e européias, entre elas Princeton e Stanford, estão envolvidas na criação de centenas de CADIs em diversas áreas pelo portal Coursera2. Muitos outros cursos similares estão sendo criados, com bastante sucesso, como os do portal Udacity3 e, no Brasil, o Veduca4. A implantação bem sucedida de um CADI exige mudanças conceituais na forma como professores e alunos se comportam em um ambiente aberto de ensino [4]. Adeptos desse tipo de curso argumentam que o suporte de material disponível na Internet para que os alunos possam acompanhar o curso no seu próprio ritmo e horário constitui uma ferramenta importante no processo de aprendizagem. Tal inovação em termos de educação permite, por exemplo, que o tempo em sala de aula seja predominantemente voltado para discussões, soluções de dúvidas e atividades de interação mais próximas entre alunos e o professor. Portanto, é de fundamental importância que profissionais de educação experimentem e analisem CADIs de modo a entender como e se de fato tais cursos podem ser usados para aprimorar o processo de aprendizagem. Existem algumas iniciativas emergentes de CADIs para a Engenharia de Software, como o curso de Arquitetura de Software Orientada a Serviços [6] e Software como Serviços [9]. Apesar de o potencial impacto de CADIs sobre a educação em Engenharia de Software ainda ser desconhecida, tais cursos não podem ser ignorados se quisermos que o impacto seja positivo. Por exemplo, jogos educacionais [5] [7] têm sido usados para apoiar o ensino de Engenharia de Software, tanto em cursos presenciais quanto em CADIs. Entretanto, ainda é limitado o conhecimento sobre quais as melhores práticas para o ensino de processos, métodos e ferramentas de Engenharia de Software em um curso aberto na Internet. Neste contexto, este artigo apresenta um CADI para um curso introdutório de Engenharia de Software. O curso foi proposto a partir de um curso presencial da Universidade Federal de Minas Gerais (UFMG) que atende anualmente mais de 100 alunos em 4 turmas (duas turmas por semestre). Este CADI é atualmente composto de 44 aulas em vídeo, 60 perguntas em 6 questionários de revisão e vários tópicos para discussão em formato de fórum. Neste estudo piloto, 35 alunos da UFMG estavam academicamente matriculados e outros 28 alunos (externos) se registraram no curso online; totalizando 63 alunos matriculados no CADI até a presente data. O material usado no curso (e.g., livro texto, apresentações, exercícios, etc.) é exatamente o mesmo tanto para os alunos presenciais quanto para os alunos externos. Entretanto, além das aulas virtuais do CADI, os alunos academicamente matriculados também podem assistir às aulas presenciais. Este artigo apresenta também uma avaliação preliminar do CADI de Engenharia de Software proposto. Nesta avaliação, foi comparado o desempenho de alunos no curso online (2013) com o desempenho de alunos no curso presencial do ano anterior (2012) no qual o CADI não era oferecido. Os resultados indicam que o desempenho médio dos alunos melhorou no curso atual (2013). Vale ressaltar que os alunos do ano de 2013 1 http://www.edx.org/ http://www.coursera.org/ 3 http://www.udacity.com 4 http://www.veduca.com.br/ 2 13 também tiveram aulas presenciais, além do material disponível no CADI. Em outra dimensão de avaliação, foi aplicado um questionário para que os alunos se manifestassem sobre os pontos positivos e negativos do curso online. O restante do artigo está organizado da seguinte forma. A Seção 2 discute algumas iniciativas para educação aberta, com foco em cursos para a Engenharia de Software. A Seção 3 propõe um CADI em Engenharia de Software para alunos brasileiros e a Seção 4 apresenta uma avaliação preliminar deste CADI. A Seção 5 conclui este artigo e propõe direções para trabalhos futuros. 2. Educação Aberta em Engenharia de Software A Internet tem se tornado uma importante ferramenta capaz de revolucionar a educação por meio dos Cursos Abertos Disponíveis na Internet (CADIs). Diversas universidades de grande prestígio estão oferecendo CADIs que têm atraído interesse de centenas de milhares alunos ao redor do mundo [10]. Dentre algumas das principais iniciativas de CADIs, podemos citar o Coursera, edX e Udacity. O Coursera2, por exemplo, foi lançado a partir de uma parceria entre quatro prestigiadas universidades dos Estados Unidos: Stanford, Princeton, Pennsylvania e Michigan. Assim como em outras iniciativas de sucesso, os CADIs do Coursera são oferecidos de forma semelhante às disciplinas presenciais das respectivas universidades. Além de aulas em vídeo, os alunos registrados em um CADI podem participar de exercícios práticos e serem avaliados. Em alguns casos, o aluno que concluir o curso com sucesso pode obter um certificado. Há também iniciativas brasileiras de CADIs. Por exemplo, o Veduca4 foi recentemente lançado como uma alternativa para estudantes em idioma português. O portal reúne conteúdo de centenas de cursos em ensino superior organizado por áreas de conhecimento. Os cursos são selecionados a partir de variadas universidades, sobretudo dos EUA, com adição de legendas em português. Há também material de universidades brasileiras, como USP, Unesp e Unicamp. Além do Veduca, podemos citar algumas outras iniciativas brasileiras, como a FGV Online5 e a Univesp TV6, que oferecem CADIs em diversas áreas do conhecimento. Vale ressaltar que essas plataformas não fornecem volume significativo de conteúdo para disciplinas de Computação e, até onde vai nosso conhecimento, são poucas as iniciativas de CADI para Engenharia de Software no Brasil. Além disso, praticamente inexiste avaliação destes cursos para verificar se eles realmente apoiam o aprendizado de Engenharia de Software. Apesar de poucas iniciativas no Brasil, educação aberta para Engenharia de Software é um tema que vem ganhando crescente atenção mundial. Por exemplo, um trabalho [3] publicado recentemente em Communications of the ACM aborda o tema. Este trabalho relata o uso de técnicas de desenvolvimento ágil para ministrar um curso presencial com mais de 100 alunos na Universidade de Berkeley. Os autores [3] também discutem suas experiências ao ofertarem a primeira parte do curso no formato de CADI para mais de 50.000 alunos, a maioria dos quais trabalham no setor de TI com 5 a 10 anos de formados. Entretanto, o artigo não apresenta nenhuma avaliação para verificar os pontos positivos e negativos do CADI no aprendizado dos alunos. 5 6 http://www5.fgv.br/fgvonline/ http://univesptv.cmais.com.br/ 14 Diferentemente de tal artigo [3], o nosso trabalho busca oferecer conteúdo abrangente para uma disciplina introdutória de Engenharia de Software. O ambiente disponível para os alunos (Seção 3) conta com aulas em vídeo, fóruns de discussões, questionários, dentre outros recursos interativos. Mais importante, este trabalho apresenta um estudo comparativo entre o desempenho de alunos que cursaram a mesma disciplina em diferentes modalidades (Seção 4): aulas integralmente presenciais e aulas que combinam atividades presenciais com atividades online. 3. Uma Proposta Brasileira de CADI para Engenharia de Software Todos os anos o curso de Engenharia de Software tem sido ministrado presencialmente para mais de 100 alunos da Universidade Federal de Minas Gerais (UFMG). Entretanto, com a popularização dos CADIs e aumento do número de alunos matriculados em função do REUNI, o professor, a estagiária em docência e o monitor da disciplina – coletivamente chamados instrutores – decidiram criar um curso aberto e implantá-lo em 2013 (a partir de março). Assim, a proposta de CADI para Engenharia de Software [1] foi gradativamente materializada ao longo do primeiro semestre de 2013. A Seção 3.1 apresenta algumas características do curso criado. A Seção 3.2 discute o perfil dos 63 alunos atualmente registrados no curso. 3.1. Características do Curso O CADI para Engenharia de Software (acessível em [1]) foi implantado no ambiente Udemy. Udemy é uma plataforma de aprendizagem online e gerência de conteúdo que permite aos instrutores criarem cursos pagos ou gratuitos. O CADI para Engenharia de Software é um curso gratuito. Utilizando o Udemy, os instrutores disponibilizaram aulas em vídeo, apresentações, questionários e arquivos complementares para a criação do curso. A plataforma permite ainda que os alunos participem e interajam com os instrutores através de fóruns de discussão. Na verdade, os estudantes possuem uma série de recursos para apoiar o aprendizado, como fazer anotações durante os vídeos das aulas e acesso ao conteúdo utilizando dispositivos móveis. O objetivo inicial do curso foi disponibilizar aos alunos da UFMG academicamente matriculados um ambiente online para assistir as aulas perdidas ou revisar a matéria da disciplina. Portanto, os alunos teriam normalmente as 4 horas de aulas presenciais por semana, além do conteúdo online. Entretanto, com o andamento do semestre, alguns alunos - autorizados pelo professor - optaram por não frequentarem as aulas presenciais, acompanhando o curso apenas pelo CADI. Além disso, pelo perfil aberto e gratuito do curso, vários alunos se registraram no CADI apesar de não estarem academicamente matriculados na disciplina presencial correspondente. O material usado no curso (e.g., livro texto, apresentações, exercícios, etc.) é exatamente o mesmo tanto para os alunos academicamente matriculados quanto para os alunos externos. Entretanto os alunos matriculados fazem provas presenciais. O CADI possui atualmente 44 aulas em vídeo totalizando mais de 20 horas de conteúdo gravado, além de 6 questionários de revisão com 60 perguntas e 14 tópicos para discussão no formato de fórum. Cada questionário foi respondido por pelo menos 20 alunos e os tópicos para discussão possuem quase 1000 postagens no total. Estes números mostram, não somente a relevância do conteúdo disponível, mas também o engajamento dos 15 alunos no curso. Dos seis alunos que avaliaram o curso no portal, cinco atribuíram 5 estrelas (melhor avaliação) e um atribuiu 4 estrelas para o curso em uma escala de 0 a 5 estrelas [1]. 3.2. Os Alunos Matriculados O CADI para Engenharia de Software possui atualmente 63 estudantes registrados, sendo 35 academicamente matriculados na disciplina presencial e 28 externos. O baixo número de estudantes externos está relacionado à dois fatores principais: (i) o curso foi criado a apenas 4 meses e (ii) o curso não foi divulgado publicamente até o momento. Os estudantes academicamente matriculados pertencem principalmente a dois cursos de graduação (bacharelado): Sistemas de Informação e Ciência da Computação. A Figura 1 mostra uma visão geral do perfil dos alunos registrados no CADI. Figura 1. Perfil e curso dos estudantes matriculados no CADI Como apresentada na Figura 1, apesar da não divulgação do curso, o percentual de estudantes academicamente matriculados é apenas 8% maior que o de alunos externos. Os instrutores optaram pela não divulgação neste primeiro semestre para que houvesse um maior controle na avaliação do curso (Seção 4). A Figura 1 mostra que os alunos academicamente matriculados pertencem a quatro diferentes cursos de graduação. Entretanto, aproximadamente 75% dos estudantes são de Sistemas de Informação ou Ciência da Computação, pois a disciplina de Engenharia de Software é obrigatória para estes cursos. A disciplina é optativa para os outros cursos. 4. Avaliação do Curso Esta seção apresenta uma avaliação do CADI para Engenharia de Software proposto. A Seção 4.1 discute o engajamento dos estudantes por meio de estatísticas de acesso e indicadores de participação. A Seção 4.2 confronta o desempenho dos alunos do curso atual com o desempenho de alunos em anos anteriores nos quais não havia o CADI. Finalmente, a Seção 4.3 resume a opinião dos alunos em relação ao curso. 4.1. Estatísticas de Acesso e Envolvimento dos Alunos Segundo informações da ferramenta Google Analytics7, a página principal do CADI teve mais de 3000 visualizações no período de março a junho de 2013. A Figura 2 7 http://www.google.com/analytics/ 16 mostra a estatística de visualizações à página principal do curso no mês de abril de 2013. Pelos dados desse gráfico, observa-se que as visualizações aumentam gradativamente a partir do dia 20/04 com ápice no dia no dia 24/04. No dia 24/04 foi aplicada a primeira prova da disciplina e, portanto, o gráfico confirma que os alunos usaram o ambiente virtual com forma de revisar a matéria para prova. Figura 2. Visualizações do curso no mês de abril. A Figura 3 mostra a taxa de acerto dos alunos que responderam aos seis questionários de revisão. Pelo menos 20 estudantes responderam cada questionário. O primeiro questionário teve o maior número de respondentes (34) enquanto o último teve o menor número de respondentes (20). É interessante observar que, exceto pelo Questionário 1, a porcentagem de acertos sempre aumentou de um questionário para o seguinte. Este resultado sugere um crescente engajamento dos estudantes no decorrer do curso. Figura 3. Relação de erros e acertos por questionário de revisão 4.2. Comparação entre o Curso Puramente Presencial e com Apoio do CADI Esta seção realizada uma comparação entre o desempenho dos alunos no curso atual (2013) e no 1º semestre do ano anterior (2012). Esses cursos foram lecionados pelo mesmo professor. Entretanto, no ano anterior o curso foi puramente presencial. Não foram usados dados de semestres consecutivos para minimizar distorções causadas por alunos repetentes. Para auxiliar essa comparação, duas questões da primeira prova de 2013 – denominadas questões idênticas Q1 e Q2 – foram extraídas da prova equivalente no ano anterior. As demais questões da prova não estão sendo usados nesta análise. Portanto, garantimos que a grau de dificuldade era exatamente o mesmo para os alunos em ambas as turmas (2012 e 2013). Utilizamos nesta análise o teste-t [8] para verificar se a média de dois grupos é significativamente diferente. O teste-t pode utilizar métodos diferentes para observações: pareadas e não pareadas [8]. Neste trabalho, faremos uma análise de observação não pareada, pois temos amostras independentes de cada uma de duas populações. Ou seja, grupos distintos de estudantes foram submetidos a duas metodologias de ensino distintas. A Tabela 1 sumariza as médias, desvios padrão, 17 variância e tamanhos amostrais (N) para ambas as amostras. Utilizando-se da distribuição t, obtemos que o intervalo de confiança (IC) é de 90%. Este resultado mostra que, com o nível de significância de 90%, as médias das notas dos alunos submetidos aos dois tipos de metodologia são diferentes. Tabela 1. Dados das amostras para os anos de 2012 e 2013 Sumarização Média Desvio Padrão Variância N 2012 5,9 1,6 2,7 56 2013 7,0 1,4 1,9 35 Para verificar se a frequência dos alunos em aulas presenciais no ano de 2013 foi fator determinante para boas notas, aplicamos a regressão linear [8]. A Figura 4 mostra gráficos de dispersão dos pontos considerando a nota dos alunos nas questões idênticas (eixo x) e a sua frequência (eixo y). O modelo de regressão é mostrado por uma linha reta. Pelos dados da Figura 4 (esquerda), a regressão linear explica 50% das notas tiradas pelos alunos de 2012 em função da frequência. Por outro lado, a Figura 4 (direita) mostra que a regressão linear explica somente 7% das notas tiradas pelos alunos de 2013 em função da frequência. Este resultado sugere que a frequência dos alunos em aulas presenciais não é fator determinante para suas respectivas notas curso com CADI. Figura 4. Gráficos de Dispersão com Regressão Linear da Juliana 4.3. Opinião dos Alunos sobre o Curso Foi aplicado um questionário para que os alunos se manifestassem sobre os pontos positivos e negativos do curso online. Os alunos discutiram como o curso disponível na internet contribui para o aprendizado de Engenharia de Software em comparação ao curso tradicional, i.e., inteiramente presencial. Foi possível observar que 82% dos alunos avaliaram as aulas em vídeo e os questionários como contribuições essenciais para o aprendizado. Ou seja, no geral os alunos se mostraram muito satisfeitos com o material disponível online. Entretanto, 27% dos alunos responderam que a disciplina presencial não poderia ser substituída por um curso completamente online. 18 5. Conclusões e Trabalhos Futuros Este artigo apresentou um Curso Aberto Disponível na Internet (CADI) para Engenharia de Software proposto a partir de um curso presencial da Universidade Federal de Minas Gerais (UFMG). Este CADI é composto de 44 aulas em vídeo, 60 perguntas em 6 questionários de revisão e tópicos para discussão em formato de fórum. Em um estudo preliminar, o CADI foi avaliado em função de 35 alunos da UFMG academicamente matriculados. Os resultados do estudo sugerem que (i) os alunos se mostraram engajados e motivados a participarem do curso online, especialmente como forma de revisar para provas, (ii) as notas dos alunos no curso presencial com apoio do CADI são estatisticamente maiores do que as notas de alunos cursando a mesma disciplina puramente presencial, e (iii) a frequência dos alunos no curso com apoio do CADI não foi fator determinante para as suas boas notas. Como trabalhos futuros, pretende-se (i) melhor a qualidade de som e imagem das aulas em vídeo, (ii) incluir novos exercícios de revisão e atividades práticas no curso, e (iii) elabora novas dimensões de avaliação. Agradecimentos Este trabalho recebeu apoio financeiro da PROGRAD UFMG processo PIQEG2013-41; do CNPq processo 485235/2011-0; e da FAPEMIG processos APQ-02376-11 e APQ-02532-12. Referências [1] Engenharia de Software. http://www.udemy.com/engenharia-de-software-ufmg/ [2] Derwin, E. (2009) Critical Thinking in Online vs. Face-to-Face Higher Education. Media Psychology Review, vol. 2(1). [3] A. Fox and D. Patterson. (2012) Crossing the Software Education Chasm. Communications of the ACM, 55(5), 44–49. [4] K. Masters. (2011) A Brief Guide to Understanding MOOCs. The Internet Journal of Medical Education, 1. [5] L. Meirelles et al. (2011) “Uso de Jogos para o Ensino de Engenharia de Software”. Anais do V Fórum de Educação em Engenharia de Software (FEES). [6] Pattern-Oriented Software Architectures. https://www.coursera.org/course/posa [7] H. Potter e M. Schots. (2011) InspectorX: Um Jogo para o Aprendizado em Inspeção de Software. Anais do V Fórum de Educação em Engenharia de Software (FEES). [8] R. Jain, J. Wiley and Sons. (1991). “The Art of Computer System Performance Analysis: Techniques for Experimental Design, Measurement, Simulation and Modeling”. ISBN: 0-471-50336-3. [9] Software as a Service (SaaS). http://www.edx.org/course/uc-berkeley/cs1691x/software-service/691 [10] N. Tillmann et al. (2013) "Teaching and Learning Programming and Software Engineering via Interactive Gaming". In Int'l Conf. on Software Eng. (ICSE). 19 SimulES-W: Retroalimentação Evolutiva em um Jogo para Ensino na Engenharia de Software Elizabeth Suescún Monsalve1, Vera Maria B. Werneck2, Julio Cesar Sampaio do Prado Leite1 1 Pontifícia Universidade Católica de Rio de Janeiro (PUC-Rio), Rio de Janeiro, Brasil 2 Universidade do Estado do Rio de Janeiro (UERJ), Rio de Janeiro, Brasil [email protected], [email protected], www.inf.puc-rio.br/~julio Abstract. In the context of software engineering teaching the feedback is the materialization of ideas and suggestions that students make in order to improve the learning process. With this in mind, this paper presents the development of a game for software engineering teaching called SimulES-W in which we use this strategy to its evolution and improvement, based on experiments using the game on board and digital version. Resumo. No contexto do ensino da engenharia de software a retroalimentação é a materialização de ideias e sugestões que os estudantes fazem visando a melhoria do processo do aprendizado. Com isto em mente, este trabalho apresenta a evolução de um jogo para ensino na engenharia de software chamado de SimulES-W no qual utilizamos esta estratégia para sua evolução e aprimoramento com base numa experimentação que usa o jogo em tabuleiro e digital. 1. Introdução A aceitação dos jogos como uma prática habitual no ensino é cada vez maior. Esta vem sendo motivada pela massificação da tecnologia e ferramentas cada vez mais accessíveis em ambientes cada vez mais realistas. Desta forma o uso de jogos no ensino permite treinar, ensinar, aprender e identificar elementos que não são fornecidos com métodos tradicionais. Jogos para ensino têm, também, um potencial de serem melhoradores do processo no qual estão inseridos, por estarem em constante evolução visando incorporar as melhoras e sugestões dos usuários destas ferramentas. No ensino da Engenharia de Software devem ser considerados tanto os conceitos teóricos quanto aspectos práticos que visam o desenvolvimento de software de qualidade com profissionais cada vez mais competitivos. Neste contexto têm surgido propostas de ensino através de projetos (Pressman, 2006), (Claypool e Claypool, 2005) e (Sweedyk e Keller, 2005) e de alguns jogos de tabuleiros, de cartas e simuladores (Baker, 2003), (SESAM, 2009), (Jain e Boehm, 2006), (Birkhoelzer et al, 2005) para apoiar o ensino de aspectos práticos de engenharia de software. E finalmente temos o SimulES-W (Monsalve, 2010), um jogo computacional com tabuleiro e cartas para ensino de Engenharia de Software. A evolução do SimulES-W é o resultado do análise de retroalimentações de estudantes nas aulas de classes. 20 Com o SimulES-W visamos a principio o aprimoramento do jogo para depois utilizá-lo no ensino da engenharia de software. Neste contexto, a retroalimentação é visualizada como um processo que nos fornece informação, descrevendo o pensamento, o sentimento e a forma de atuar dos estudantes, além de promover a participação ativa de todos os envolvidos. No uso do SimulES-W, a retroalimentação tem permitido conhecer como é o desempenho e as falhas do jogo, além de fornecer ideias de como melhorar e evoluir o SimulES-W. O objetivo do trabalho é apresentar a retroalimentação como uma estratégia de aprimoramento do uso do SimulES-W, além de verificar possíveis mudanças que não foram incorporadas nesta versão Web. Por outro lado, esta é a primeira vez que usamos as duas versões (tabuleiro e digital) numa mesma atividade e com isso pretende-se verificar também se no uso do tabuleiro existem conceitos melhor explorados ou não. Este artigo está dividido em cinco seções. Na seção 2 apresentamos uma resenha do Jogo SimulES-W. Na seção 3 relatamos uma experiência com o SimulES-W na versão digital e na versão do tabuleiro. Na seção 4 relatamos as melhorias realizadas no SimulES-W com base nas retroalimentações dos alunos e na observação das atividades. Finalmente na seção 5 as conclusões e trabalhos futuros são abordados. 2. Visão Geral do SimulES-W As primeiras versões do jogo foram compiladas num jogo do tabuleiro conhecido como SimulES (Figueiredo, 2007). Ele está direcionado para o ensino de engenharia de software e foi concebido a partir da evolução do jogo "Problems and Programmers" (PnP) (Baker, 2003). A evolução do SimulES para um software que roda na Web, foi chamado de SimulES-W. Esta evolução foi realizada com base num estudo de literatura sobre jogos educacionais na engenharia de software e nas experiências de uso do jogo (Serrano et al 2007), (Monsalve, 2010), (Monsalve, Werneck e Leite, 2010), (Monsalve, Werneck e Leite, 2011) entre outras. As diferentes versões do jogo conservam a filosofia geral, que é construir um produto de software baseado num projeto comum para todos os jogadores (objetivo principal do jogo). Para isso o aluno assume o papel de gerente de projeto e deve lidar com o orçamento, contratação e demissão de engenheiros de software, e construção de diversos artefatos necessários para término do projeto, entre outras atividades. O jogador deve criar uma estratégia que irá melhorar o seu jogo em relação à dos seus adversários, ao mesmo tempo deve fazer jogadas que desestabilizem os jogos de seus adversários. Mas os adversários podem responder com conceitos de engenharia de software e bloquear o ataque de um jogador com uns artefatos chamados de Cartas Conceito e Problema. A partida é ganha quando um jogador constrói todos os artefatos necessários para completar o projeto e se estes têm a qualidade estipulada. Ou seja, para vencer o jogo, é preciso completar os módulos do projeto definidos no cartão de projeto selecionado no início do jogo com a qualidade exigida. Após serem construídos os artefatos estes devem ser empacotados em uma instância do jogo chamada Rodada de Ações e depois submetidos como produto final. Para contextualizar descreveremos brevemente cada uma das rodadas das quais dispõe o jogo: A primeira é a jogada de inicio nela é escolhido aleatoriamente o projeto que deve ser tratado durante todo o jogo, como também o primeiro Engenheiro de 21 Software para cada um dos jogadores. A segunda é a jogada de ações que começa com o lançamento do dado e de acordo com o número tirado, retira 1 a 3 Cartas Conceito ou Cartas Problema e se o valor do dado for mais de 4 pode pegar também (dado–3) Cartas de Engenheiro de Software. A terceira, a jogada de ações nela o jogador da vez deve escolher a subatividade de construir, inspecionar ou empacotar os artefatos dispostos no tabuleiro individual. Na construção pode retirar novas Cartas de Artefato dependendo da complexidade do projeto e da habilidade de sua equipe de Engenheiros de Software. A habilidade determina quantos “pontos de tempo” o Engenheiro de Software tem e, portanto, quantas ações ele pode desempenhar por vez. Analogamente, ele pode inspecionar dependendo, também, da habilidade da sua equipe. A seguir vem a jogada de conceitos e tratamento de problemas, onde os jogadores podem ser atacados e atacam seus adversários usando as Cartas Conceitos e Cartas Problemas com conceitos típicos da engenharia de software. Por último, a submissão do produto, onde o primeiro jogador a chegar nesta instância sem defeitos em seu produto de software e que não tenha penalidade alguma a ser resolvida ganha o jogo. Ressaltarmos que as jogada de ações, jogada de conceitos e tratamento de problemas vão se repetindo até terminar o jogo. Para ilustrar, a Figura 1 apresenta a tela principal do SimulES-W onde são dispostas as mensagens trocadas entre os jogadores e as informações sobre jogadas e estado do jogo. Nesta tela temos também as informações de projeto escolhido para a jogada e os jogadores on-line, e finalmente a lista das jogadas aceitadas ou não entre os jogadores. Figura 1. Tela principal de SimulES-W Na Figura 2 temos o Tabuleiro Individual em duas situações: a) Construção de Artefato onde o jogador tem os Engenheiros de Software contratados para a construção dos diferentes artefatos, cada um deles com um link que apresenta as informações dos 22 Engenheiros de Software. Na parte a dessa figura as cartas de artefato brancas e as cartas de artefato cinza aparecem sem terem sido desviradas. Na parte inferior desta tela aparecem, também, as operações possíveis a serem realizadas dentro do tabuleiro. A Figura 2 parte b apresenta uma situação de Inspeção de Artefatos, pois o jogador já construiu o artefato (parte a) e ele pode inspecioná-lo. Nessa segunda parte da Figura 2 é ilustrado o resultado de uma inspeção quando o artefato tem erro e quando não tem. SimulES-W aleatoriamente escolhe a qualidade da carta de artefato branca ou carta cinza, sendo que as cartas brancas têm menos possibilidades de terem erro que as cartas cinzas entretanto estas custam o dobro da outra. Uma das características principais do SimulES-W é a possibilidade de edição das cartas de problemas e das cartas de conceitos, fazendo portanto que o material a ser enfatizado pelo curso seja customizado pelo professor. 3. Relatando uma experiência do Uso do SimulES-W No período 2012-2 na Universidade Estadual Rio de Janeiro (UERJ) foi realizada uma atividade com estudantes do curso de ciência da computação dos três primeiros semestres. No total 15 estudantes (13 homens e 2 mulheres) participaram da atividade onde eles utilizaram SimulES-W e SimulES (jogo de tabuleiro). Distribuídos assim: um primeiro grupo de 8 estudantes jogaram SimulES do tabuleiro, estes ficaram em grupos de duas pessoas, ou seja, o jogo foi utilizado com 4 tabuleiros individuais. Um segundo grupo de 7 estudantes jogou SimulES-W onde foram criados 3 grupos de 2 estudantes e um estudante jogou sozinho. O objetivo da atividade era observar os estudantes jogando e visualizar os diferentes comportamentos tanto na versão do tabuleiro como na versão digital do jogo. Outro propósito era, também identificar elementos de melhoria vindo de retroalimentação dos estudantes e da observação da atividade. Para isso analisamos os dados guardados no jogo e os questionários preenchidos pelos estudantes. Figura 2. Tabuleiro Individual nas situações de Construção de Artefato e Inspeção de Artefato (Monsalve, 2010) Os estudantes foram instruídos sobre a atividade, com uma apresentação e explicação do jogo. Durante a atividade os estudantes preencheram um questionário sobre o tipo de aprendizado dinâmico que eles preferiam. Na Figura 3 vemos uma clara preferência dos estudantes pela utilização de atividades que envolvam cooperação com um 67% ou seja, 10 estudantes, seguido de um aprendizado competitivo 27%, 4 23 estudantes. Finalmente, um estudante reportou que preferia um aprendizado individual, isso representou 6% da mostra. Figura 3. Preferência do Tipo de da Atividade de Aprendizado A seguir os estudantes foram perguntados sobre o nível de instrução em processos de engenharia de software. Como eram estudantes dos primeiros semestres do curso era de esperar a representação que vemos na Figura 4. 46% dos estudantes tinham recebido insuficiente instrução (7 estudantes), seguida de nenhuma, não conhece ou na responderam com um 27% (4 estudantes), e finalmente, suficiente 27% (4 estudantes). Figura 4. Nível de instrução recebido em processos e princípios de engenharia de software Os estudantes também reportaram quais eram as mídias preferidas por eles num curso de ensino. Eles podiam escolher um ou vários itens da lista. O item preferido por eles foram laboratórios (10 escolhas), seguido de jogos (7 escolhas), depois tutoriais (6 escolhas), finalmente palestras (4 escolhas). Casos de estudo baseados em artigos e outros não foram escolhidos. Algumas perguntas abertas foram formuladas (Tabela 1) dentro das respostas fornecidas pelos estudantes queremos ressaltar: Na pergunta um (1) sobre os objetivos dentro do jogo, os estudantes reportaram que o jogo passa a ideia de desenvolvimento de software e suas dificuldades, além do conceito da contratação e representação de possíveis eventos que podem acontecer nos projetos. Para a pergunta dois (2) sobre o objetivo do jogo, eles identificaram este como: otimizar o processo de desenvolvimento de um projeto, minimizar riscos e visar a entrega no menor tempo possível e com qualidade. Na pergunta três (3) eles identificaram os processos de análise, modelagem e codificação. Na pergunta quatro (4) sobre que aspectos da vida real foram identificados dentro do jogo, forma obtidas as seguintes repostas: o jogo reflete aspectos humanos dos engenheiros de software, e essas características podem afetar positiva e negativamente os projetos; o uso da internet de forma inadequada; planejar e fazer testes são elementos fundamentais para um bom desenvolvimento; e o jogo passa a ideia do processo de criação de um software. Na pergunta cinco (5) os estudantes falaram que jogos podem 24 ser usados para analisar riscos de projeto e que do jogo eles levariam para sua vida profissional os conceitos de processo, preocupação com inspeção e a importância de testar os softwares. Na pergunta seis (6), os seguintes aspectos colaborativos foram identificados: trabalhar em equipe para desenvolver um software; colaborar para atribuir problemas aos outros; e colaborar na solução dos próprios problemas. Além disso, eles observaram que trabalhar em equipe ajuda a pensar em vários alternativas de solução e a discutir com os colegas qual é a melhor decisão a ser tomada. Na pergunta sete (7) os aspectos de competitividade identificados foram: terminar o projeto quanto antes; equipes mais avançadas tendem a ser prejudicadas pelas equipes em maior desvantagens; retardar o desenvolvimento do adversário. Na pergunta oito (8) os estudantes apontaram como mais motivador: o fato de enviar problemas para os adversários, fazer inspeção e descobrir que não tinha erro (bugs), terminar o projeto rápido, contratar um engenheiro muito bom. Figura 5. Mídias de preferência num curso de ensino Tabela 1. Perguntas abertas sobre o SimulES-W Opinião sobre o SimulES-W e a atividade. 1. Descrever o objetivo dentro Jogo 2. Descrever o objetivo do Jogo 3. Descreva aspectos do desenvolvimento de software identificados no jogo 4. Descreva que elementos da vida real dos projetos de desenvolvimento foram identificados no jogo. 5. Que elementos da atividade você utilizaria no seu futuro profissional 6. Que aspectos colaborativos dentro da atividade foram identificados 7. Que aspectos de competitividade dentro da atividade foram identificados 8. Que parte da atividade foi mais motivadora 9. Que parte da atividade achou mais cansativa 10. Que melhoria faria no jogo Em suma, com este tipo de atividade foi possível aprimorar o jogo para seu uso e tornar os estudantes sejam mais ativos no processo de aprendizagem. Porém acreditamos que através deste jogo esse processo pode ser mais interativo e lúdico, estimulando a curiosidade e o trabalho em equipe, simulando de algum modo elementos da engenharia de software na tomada de decisões e resolução de problemas. Com estas informações recopiladas que os estudantes transmitiram através das suas opiniões, foi considerado que o objetivo do jogo está sendo atendido. 25 4. Retroalimentação no processo evolutivo do SimulES-W As perguntas nove (9) e dez (10) da Tabela 1 foram deixadas para esta seção, pois elas estão diretamente relacionadas com as melhorias que podem se refletir no SimulES-W. Além do escrito pelos estudantes há, também, aspectos observados nas atividades consideradas nesta seção. Na pergunta nove (9), sobre os aspectos mais cansativos da atividade, os estudantes reportaram que a escolha do problema para ser jogado para outros jogadores pode ser cansativo, e as rodadas e as regras parecem muito repetitivas. Assim como também, muitos problemas fazem o jogo se atrasar. Já na pergunta (10) os estudantes mencionaram que gostariam de ver no jogo fatores econômicos como: aquisição de um empréstimo, financiamento por algum tipo de empresa, uso de features, open-source e outsourcing. Estes últimos poderiam estar representados em cartas ou objetos dentro do jogo. Os estudantes gostariam que na tela de jogar problemas ficassem visíveis, também, os Tabuleiros Individuais dos outros jogadores e assim tornaria mais rápido a definição de que problema enviar para os outros. Eles também falaram que as cartas (conceito e problema) são boas, no entanto, seria mais interessante criar cartas deste tipo que fossem mais divertidas, mais reais e aumentar a diversidade das mesmas. Em síntese, a retroalimentação vinda das atividades aqui apresentadas tem influenciando diretamente a tomada de decisões para a melhoria e atualização do jogo, como resultado temos considerado as seguintes melhorias: (i) os jogadores devem jogar no mínimo em dupla. Assim fica mais interessante a atividade, pois os jogadores discutem entre eles os conteúdos das cartas e também fica menos tediosa a espera dos jogadores e, com efeito, eles ficam discutindo as possibilidades e analisando as cartas até chegar sua vez. Além de se identificar que nas atividades com o SimulES-W os jogadores preferem aprender cooperando entre eles. (ii) o número de problemas que um jogador esteja atendendo não deve ser maior do que dois, assim como também a quantidade de problemas que possa enviar para os outros não deve ser superior a essa mesma quantidade, ou seja, limitar a dois problemas a serem submetidos por jogador. De fato, enviar problemas e atender problemas demora muito a rodada de conceitos e os outros jogadores ficam parados aguardando para realizar suas jogadas. (iii) Por ultimo, se deveria ter a possibilidade que o engenheiro de software contratado possa ser utilizado imediatamente depois de ele ser contratado e não ter que aguardar até a próxima rodada. 5. Conclusões e Trabalhos Futuros Um dos processos menos usados dentro da avaliação educativa é a retroalimentação. Isso é compreensível pois se deve levar em consideração uma quantidade importante de itens. Sem retroalimentação não é possível identificar se estamos no rumo certo. Por conseguinte, com o uso de SimulES-W desde sua concepção até a data de hoje foi identificado que a retroalimentação é um mecanismo vital que ajuda na validação se os objetivos planejados estão sendo conseguidos. Além demais, essa atividade tem permitido aperfeiçoar e corrigir elementos da ferramenta e da atividade que envolvem ele. Assim a retroalimentação deveria ser um processo permanente no contexto de ensino-aprendizagem, O uso de jogos possibilita que a retroalimentação seja realizada 26 pelos estudantes, servindo de mecanismo de melhoria no processo de ensino. Avaliar a qualidade do ensino é difícil, no entanto, jogos podem ser usados pelos estudantes para expressar a eficácia e propor melhorias naquelas atividades que eles participam. Os estudantes se sentem agradecidos quando são estimulados a fornecer suas opiniões sem dificuldades em externá-las pois estão numa atividade lúdica. Referências Baker, A. (2003). “Problems and Programmers”. Honors Thesis, Department of Informatics, School of Information and Computer Science, University of California, Irvine, CA. Birkhoelzer, T., Navarro, E. e Van Der Hoek, A. (2005). “Teaching by Modeling instead of by Models”, Proceedings of the 6th International Workshop on Software Process Simulation and Modeling, MO. Claypool, K. e Claypool, M. (2005). “Teaching software engineering through game design”. ACM SIGCSE Bulletin, v.37 n.3. Figueiredo, Eduardo; Lobato, Cidiane; Dias, Klessis; Leite, Julio e Lucena, Carlos. (2007). “Um Jogo para o Ensino de Engenharia de Software Centrado na Perspectiva de Evolução” em Workshop sobre Educação em Computação (WEI – 2007), 15, Rio de Janeiro, , 37-46. Jain, A. e Boehm, B. (2006). “SimVBSE: Developing a Game for Value-Based Software Engineering. Proceedings 19th Conference on Software Engineering Education and Training”. 103 -114. Monsalve, E. S. (2010), “Construindo um Jogo Educacional com Modelagem Intencional Apoiado em Princípios de Transparência”, Dissertação de Mestrado, PUC–Rio, Março de 2010. Monsalve, E.; Werneck, V.; Leite, J.C.S.P. (2010a), “Evolución de un Juego Educacional de Ingeniería de Software a través de Técnicas de Elicitación de Requisitos”, Proceedings of XIII Workshop on Requirements Engineering (WER’2010), Cuenca, Ecuador, Abril 2010, 12–23. Monsalve, E.; Werneck, V.; Leite, J.C.S.P. (2010b). SimulES-W: Um Jogo para o Ensino de Engenharia de Software. FEES, SBES, Bahia. Monsalve, E., Werneck, V. & Leite, J.C.S.P. (2011). Teaching Software Engineering with SimulESW. Proceedings of XXIV Conference on Software Engineering Education and Training (CSEE&T 2011), Hawaii, USA. (pp. 31–40). Pressman, Roger (2006). “Software Engineering: A Practitioner's Approach”, 7ª Edição, Mc Graw Hill. Serrano, M.; Serrano, M.; Napolitano, B.; Soares, B. (2007). “Evolução do SimulES Versão 2.0”, Monografia em Ciências da Computação, Departamento de Informática. PUC–Rio. Software Engineering Simulation by Animated Models (SESAM) (2009), Stuttgart, Alemanha, Disponível em: <http://www.iste.unistuttgart.de/se/research/sesam/overview/index_e.html> acesso em 7 de abril. Sweedyk, Elizabeth e Keller, Robert M., (2005), “Fun and games: a new software engineering course”, Proceedings of the 10th annual SIGCSE. 27 Jogos digitais como instrumentos no processo de avaliação formativa da aprendizagem na disciplina de Engenharia de Software Glauber G. de Araujo1, Eduardo Henrique da S. Aranha1 1 Departamento de Informática e Matemática Aplicada (DIMAp) – Universidade Federal do Rio Grande do Norte (UFRN) Avenida Senador Salgado Filho, 3000 - 59072-970 - Natal, RN – Brasil [email protected], [email protected] Abstract. Formative assessment of learning is a process that verifies that the pedagogical actions have produced effective results in apprentices. However, some teachers under the argument of complexity reject this evaluation function. In addition, its conventional instrumentation becomes an obstacle with the tedious forms and difficult logistics. The practice in the teaching of software engineering is not different from the others and has difficulties in this aspect. In this sense, this paper presents a proposal for formative assessment Instrumentation in games as an effort to discuss solutions to the problems presented. This proposal was instantiated as a proof of concept and still needs evaluations through experiments. Resumo. A avaliação formativa da aprendizagem é um processo que verifica se as ações pedagógicas produziram resultados nos aprendizes. Entretanto, essa avaliação é rejeitada por muitos professores por serem complexas. Além disso, sua instrumentação convencional torna-se um entrave com seus formulários maçantes e de logística difícil. A prática no ensino de engenharia de software não é diferente das demais e também tem suas dificuldades nesse aspecto. Nesse sentido, este artigo apresenta uma proposta de instrumentação da avaliação formativa em jogos digitais como um esforço de discutir soluções para a problemática apresentada. Essa proposta foi instanciada apenas como prova de conceito e necessita ainda ser avaliada através de experimentos. 1. Introdução No contexto da Educação, a construção do conhecimento do aprendiz precisa ser regulada a partir de uma avaliação da sua formação ao longo do processo ensinoaprendizagem [Perrenoud, 1999]. A regulação da aprendizagem é um modo de garantir que o aprendiz receba o apoio do professor para sanar possíveis deficiências de aprendizagem ainda durante o processo de ensino-aprendizagem mediante informações coletadas das avaliações formativas [Perrenoud, 1999]. Até a aferição dos resultados dessa avaliação, é necessário um acompanhamento qualitativo, que no contexto de qualquer ação pedagógica, deve ser contínua e sistemática, concentrando-se especialmente nas funções da avaliação com concepções centradas na melhoria do processo ensino-aprendizagem [Jorba; Sanmarti, 2003]. 28 Não obstante, alguns obstáculos dificultam a avaliação formativa, como as avaliações que se preocupam apenas com a classificação conceitual dos aprendizes e são estas as mais arraigadas entre os professores [Hadji, 2001]. Sob outro ângulo, faltam aos professores recursos pedagógicos suficientemente diversificados que os auxiliem na geração de dados e tempo para interpretá-los, como também a realização das intervenções regulatórias no momento apropriado [Perrenoud, 1999; Quinquer, 2003]. Avaliar sistematicamente durante todo o processo ensino-aprendizagem não é uma tarefa fácil, ainda mais avaliar individualmente os aprendizes, em meio a turmas grandes e heterogêneas. Ademais, avaliar ainda é a "prática pedagógica que menos motiva os professores e mais aborrece", "ao mesmo tempo que para os alunos é a atividade mais temida e menos gratificante" [Veslin apud Jorba, Sanmarti, 2003]. A instrumentação convencional da avaliação formativa é também um entrave à sua prática. Entende-se por instrumentação todos os meios que geram dados de conhecimento do aprendiz, como provas, portfólios, entrevistas, relatórios e questionários. O processo realizado com questionários impressos, por exemplo, aplicados várias vezes ao longo do período letivo, são maçantes para os aprendizes e têm uma logística difícil para o professor. Nesse contexto de busca por superação dos entraves à avaliação formativa, há iniciativas que a aplicam em ambiente computacional (presencial e a distância) que conseguem atender à dinâmica desse tipo de avaliação minimizando o problema da complexa logística do processo. Ainda assim, essas iniciativas continuam sendo cansativas, porque apenas transportam o questionário impresso para um computador. Essa problemática motivou um estudo organizado em duas etapas. A primeira no mestrado, no qual foi desenvolvido um framework conceitual, instanciado apenas como prova de conceito, no domínio da avaliação da aprendizagem, para apoiar avaliações formativas da aquisição de conhecimento instrumentadas em jogos digitais. A segunda no doutorado, no qual serão desenvolvidos os jogos digitais e realizados os experimentos e estudos de casos para verificar e validar a consistência do framework. A prática pedagógica no contexto do ensino de engenharia de software não é diferente das demais e também tem suas dificuldades. O ensino é fundamentado em “apresentar e vivenciar os principais conceitos e práticas utilizadas e estudadas na área [...] fornecendo uma visão geral de como desenvolver softwares sistematicamente”. A realização de trabalhos práticos que queiram “abranger todas ou grande parte das técnicas difundidas [...] é além de impraticável, tedioso [SILVA, 2004]. Nesse sentido a área necessita de abordagens que apoiem a avaliação da aprendizagem dos alunos de modo sistemático e contínuo, mas também que reduza o tédio ao qual estão expostos os aprendizes devido ao grande volume de informações que precisam assimilar e formas de avaliação maçantes e nada estimulantes. O framework, ora proposto, une a instrumentação da avaliação formativa em ambiente computacional com os elementos lúdicos presentes nos jogos digitais. A finalidade é tornar a tarefa de avaliar a formação na disciplina de engenharia de software mais estimulante para o aprendiz e mais factível para o professor. Mais estimulante porque permite a imersão dos alunos em jogos que oferecem desafios constantes, que quando solucionados classificam o aluno em um ranking visível a todos do grupo. É 29 mais factível para o professor porque não baseia a avaliação cotidiana somente em aspectos intuitivos e subjetivos, presentes na observação em sala de aula. Para a melhor compreensão do contexto onde se insere esse artigo, seguem os fundamentos teóricos que o norteiam. 1.1. Avaliação da aprendizagem Para avaliar é necessário ter clareza do que fazer com as informações que são coletadas no processo, fazendo da avaliação e da tomada de decisões a partir dos resultados, questões-chaves para melhorar o conhecimento dos aprendizes [Parcerisa, 2003]. Embora a avaliação ainda seja amplamente utilizada apenas como instrumento de medição para seleção e classificação, crescem as concepções que defendem outra lógica emergente da avaliação, e a concebem com a finalidade de "ajudar a melhorar o processo de aprendizagem dos alunos e ser útil para aprimorar o ensino" [Parcerisa, 2003]. Nesse sentido, Jorba e Sanmarti (2003) defende que a avaliação tem duas funções básicas: (a) uma de seleção e classificação, que ocorre depois do ensino, conhecida como somativa; (b) outra de ajuste do processo de ensino-aprendizagem, de reconhecimento das mudanças, representadas por duas avaliações conhecidas por diagnóstica e formativa e que ocorrem antes e durante o ensino, respectivamente. A avaliação formativa da aprendizagem gera dados úteis para a adequação das atividades de ensino-aprendizagem às necessidades dos aprendizes [Jorba, Sanmarti, 2003] e, dessa maneira, melhora a qualidade do ensino, aproximando-se mais das necessidades de cada aluno, considerando a sua singularidade, procurando superar a perspectiva de um modelo de ensino "tamanho único" que é demais para alguns e insuficiente para outros. 1.2. Aprendizado baseado em jogos digitais As concepções sobre jogos são várias e abordam desde elementos de entretenimento, passando por elementos pedagógicos até elementos culturais. A história da contribuição dos jogos nas outras áreas do conhecimento é longa e continua com maior ênfase com os jogos digitais suportados pelas novas tecnologias, não só com o apoio lúdico, como também com o apoio computacional e mais recentemente com o apoio na concepção de projetos (por exemplo, administração e educação) através dos princípios que regem o desenvolvimento e o funcionamento dos jogos: a gamificação. Entende-se por gamificação a aplicação das dinâmicas de jogos a situações cotidianas das áreas do conhecimento. Nesse sentido, jogos digitais podem ser mediadores de aprendizagem e podem contribuir para o despertar de competências, habilidades e melhor compreensão dos conteúdos em diversas áreas. Para Huizinga (2000), "todo jogo é capaz, a qualquer momento, de absorver inteiramente o jogador" em uma espécie de imersão, o que Caillois (1990) corrobora afirmando que "o jogo é essencialmente uma ocupação separada, cuidadosamente isolada do resto da existência". 30 Segundo Mattar (2010), jogar games "desenvolve a capacidade de deduzir regras pela observação e manipular sistemas complexos, características essenciais para o trabalho em ciências". A atenção e o raciocínio lógico, principalmente em jogos de estratégia, são também elementos estimulados com o uso de jogos digitais. O exercício da atenção nos jogos provoca a imersão do jogador, um estado de extrema concentração na tarefa que está desempenhando. 2. Trabalhos correlatos Uma pesquisa bibliográfica foi realizada no sentido de localizar trabalhos que tratassem especificamente sobre avaliação formativa e jogos digitais. Um total de vinte e cinco trabalhos entre artigos e iniciativas foram encontrados com títulos apontando nessa direção. Contudo, ao ler os resumos, apenas três artigos foram selecionados [Araujo, 2013], como segue: O trabalho desenvolvido por Cuomo (2011) “Full Formative Assessment based on Educacional Video Games”, trata de uma portal na internet (PlayLearn) para exploração de jogos educativos a longo prazo e testes online. O portal registra os parâmetros de aprendizagem para análise em tempo real pelos professores com o objetivo de melhorar o processo de aprendizagem. O jogo é baseado na "jornada do herói", no qual o personagem do jogador deve recolher diamantes ao longo da jornada enquanto responde a questões sobre o conteúdo estudado. Em “Web-based quiz-game-like formative assessment: Development and evaluation” [Wang, 2007], é apresentado um sistema de múltipla escolha baseada em Web quiz-jogo como avaliação formativa chamado de GAM-WATA. Também compara a eficácia de três diferentes tipos de avaliação formativa em um ambiente de e-Learning: teste de papel e lápis (PPT), teste normal baseado na Web (NWBT) e GAM-WATA. Participaram da pesquisa 165 alunos do ensino fundamental em Taiwan central. Gonçalves (2011), em seu trabalho “Avaliação da aprendizagem em Experimentos com Jogo educativo de engenharia de requisitos”, apresenta uma forma de avaliar alunos de engenharia de requisitos utilizando o jogo educativo ilha dos requisitos. O objetivo do jogo é ajudar o personagem, a fugir da ilha dos requisitos − uma ilha habitada por tribos canibais que tem um vulcão prestes a entrar em erupção. O jogador deve enfrentar uma série de desafios relacionados ao conteúdo da disciplina de engenharia de requisitos. Para avaliar as hipóteses sobre a efetividade de aprendizagem do jogo a pesquisa se utiliza do teste estatístico não paramétrico de Mann-Whitney. Os artigos analisados tratam de avaliação formativa utilizando jogos, mas não definem um método sistemático que qualifica e mede a aquisição de conhecimento dos alunos de modo a subsidiar as ações do professor. É nesse ponto que o framework, ora proposto, pode contribuir com essa discussão de um modo efetivo. Outros artigos foram encontrados com o contexto próximo ao pesquisado, como os relacionados a seguir: O ludismo e avaliação da aprendizagem: possibilidades para o ensino de química [Cavalcanti, 2010]. A evolução dos jogos de física, a avaliação formativa e a prática reflexiva do professor [Ferreira; Carvalho, 2004]. 31 Avaliação da aprendizagem por meio do jogo didático "Jogando Limpo", nas aulas de Ciências [Souza-Lomba et al, 2010]. Tratam apenas da aprendizagem baseada em jogos, seja refletindo sobre as possibilidades ou apresentando experiências com a sua utilização. O foco maior é no ensino de conteúdos por meio do jogo digital sem um procedimento claro sobre a avaliação da aprendizagem. 3. Framework conceitual de avaliação formativa Com base nos estudos de IHC (Interação Humano Computador), um framework conceitual é um conjunto de ideias e conceitos que se inter-relacionam para descrever como um sistema deve se comportar, se parecer e ser compreendido pelos usuários da maneira pretendida [Preece et al, 2005]. O framework conceitual, ora proposto, apoia a instrumentação da avaliação formativa no ambiente computacional do jogo digital. Sua função é sistematizar o processo de avaliação de modo que respostas, competências e habilidades dos alunos sejam coletadas e analisadas para subsidiar as ações pedagógicas do professor. Sua estrutura consiste em quatro componentes que desempenham funções específicas que se inter-relacionam em um fluxo cíclico contínuo: (a) instrumentar; (b) coletar; (c) analisar e; (d) regular, conforme são descritos a seguir. 3.1 Instrumentar Instrumentar é o componente que consiste na forma do questionamento aos aprendizes e do registro das respostas. Pode explorar os vários tipos de instrumentos avaliativos conhecidos que se adaptam às situações de ensino e de aprendizagem propostas pelo professor, como também pode explorar os vários gêneros de jogos digitais como instrumentos de verificação de competências e habilidades. A forma de questionamento pode ser explícita ou tácita. A primeira estimula respostas diretas do aprendiz por meio de questões acerca do conteúdo estudado. Consiste de alguns tipos de instrumentações convencionais, como provas, entrevistas e questionários. A segunda forma captura “respostas” do aprendiz sem que este seja questionado diretamente sobre qualquer conteúdo estudado. Consiste no uso de alguns gêneros de jogos (por exemplo: Casuais, Simulação, Esportes, Adventure, RPG, Estratégia, Puzzle) que estimulam a prática de habilidades capazes de expressar competências para a solução de desafios nos domínios da linguagem, da matemática e dos fenômenos naturais, bem como o enfrentamento de situações-problema, a construção de argumentações consistentes e a elaboração de propostas que atentem para as questões sociais, como preconizam os Parâmetros Curriculares Nacionais [BRASIL, 1997]. 3.2 Coletar Coletar é o componente que consiste na captura das respostas registradas pelo instrumento de avaliação. A coleta é realizada mediante o atendimento a critérios que expressam os objetivos almejados pelo professor e as respostas coletadas precisam ser valoradas segundo indicadores quantificadores que expressam os critérios. 32 O processo inicia pela definição da relação entre as capacitações do domínio do conhecimento e do domínio dos processos cognitivos, conforme a taxonomia de Bloom revisada [Anderson et al, 2001], chamada de critério formativo [Araujo, 2013]. O critério formativo deve expressar qualitativamente os objetivos pedagógicos almejados pelo professor. Por exemplo, para o objetivo no qual o aluno deverá ser capaz de: Reconhecer os aspectos da qualidade de um software, o critério formativo emitido será: Estabelecer relações entre os aspectos da qualidade e as métricas de software utilizadas no processo de engenharia e controle de qualidade e entre suas partes que as fazem funcionar em conjunto (conceitual) por meio do domínio sobre a produção da informação certa a partir da memória (lembrar) [Araujo, 2013]. A segunda etapa do processo é a definição dos indicadores formativos que quantificam os critérios formativos emitidos a partir das respostas coletadas nas formas de questionamentos. Por exemplo, a partir das respostas coletadas no instrumento de avaliação “questionário” os indicadores formativos que atendem ao critério formativo no exemplo anterior podem ser: Número de erros, Número de acertos, Número de acertos consecutivos e Número de abstenções [Araujo, 2013]. 3.3 Analisar O componente analisar é fundamental para verificar se os dados coletados conforme os critérios e indicadores formativos e submetidos às métricas expressam e como expressam a aquisição de conhecimento dos alunos. As métricas utilizadas devem ser capazes de analisar os indicadores definidos para cada critério formativo submetido e encontrar resultados que sejam legíveis para o professor, que é o analista desses dados. Por exemplo, analisando os números de acertos e erros coletados no exemplo anterior e considerando que questões acerca dos conceitos-chaves estudados (por exemplo: qualidade de um software) aparecem repetidamente em todas as atividades de avaliação formativa desenvolvidas pelo professor, pode-se verificar por meio de gráficos a evolução da aquisição do conhecimento individual e em grupo dos alunos naqueles conceitos-chaves ao longo do processo ensino-aprendizagem. Desde que as medidas de desempenhos dos alunos nas atividades tenham sido ponderadas. 3.4 Regular A regulação da aprendizagem é desenvolvida pelo professor a partir dos resultados emitidos pelas análises de dados realizadas, com a finalidade de sanar possíveis deficiências detectadas em tempo de processo ensino-aprendizagem. Alguns relatórios orientam as ações do professor no sentido de reverter essas deficiências. As ações pedagógicas ainda durante o processo ensino-aprendizagem é vital para que o aprendiz não chegue ao final do período letivo com acúmulos de dificuldades nos conceitos. 3.5 Ambiente computacional do Jogo Digital O jogo digital é o ambiente computacional que apoia o instrumento de avaliação formativa em suas duas formas de questionamento. Fornece a ele não só os recursos computacionais como também o ambiente lúdico para a imersão do aprendiz e permite a 33 coleta de dados da interação do jogador com o jogo e do desempenho do aprendiz nas soluções dadas nas formas de questionamentos. Em tese, qualquer gênero de jogo digital pode ser utilizado para instrumentação de avaliações formativas. O framework, ora proposto, pode orientar a concepção de jogos digitais quando incluído no seu projeto de desenvolvimento. 4. Conclusão A pesquisa ora apresentada surge na interface entre ciência da computação e a educação. Compreende, por um lado, a importância dos jogos digitais no contexto educacional, tendo em vista a estreita relação dos aprendizes com o universo das tecnologias da informação e da comunicação na atualidade. Por outro, evidencia as dificuldades em se avaliar continuamente o conhecimento, considerando o universo complexo, amplo e heterogêneo de alunos, com os quais os educadores têm que lidar cotidianamente. Assim sendo, o presente artigo destaca um aspecto da pesquisa cujo intuito é contribuir para o trabalho de avaliação do professor durante suas ações pedagógicas na área de engenharia de software, a fim de que o processo ensinoaprendizagem obtenha resultados mais coerentes com os seus propósitos iniciais. Com base nos pesquisadores da área da educação, fica clara a complexidade do ato de avaliar continuamente. Para o enfrentamento de um aspecto tão importante quanto difícil do processo ensino-aprendizagem, é necessária a utilização de várias ferramentas. Para tanto, é preciso destacar que nessa pesquisa, envolvem-se a concepção de um framework conceitual que se propõe a apoiar jogos digitais contendo instrumentos de avaliação. A intenção é que, trabalhado com uma metodologia que envolva várias ferramentas, auxilie o professor a melhorar a qualidade e o controle do nível de aquisição de conhecimento dos alunos, uma vez que será possível mensurar, de forma não manual, o domínio dos conceitos-chaves que ele, professor, definiu como importante para os seus aprendizes internalizarem. O conjunto de conceitos propostos no framework, integrados ao instrumento de avaliação formativa utilizados em jogos digitais podem contribuir para romper com as dificuldades frequentes relacionadas pelos professores na medida em que conseguem dá a esses professores informações efetivas acerca do conhecimento dos seus alunos individualmente e antes que finde o período letivo, ou seja, no decorrer do processo ensino-aprendizagem, que de fato é o momento no qual essas informações fazem mais sentido e efeito. 5. Referências Bibliográficas ANDERSON et al. A Taxonomy for Learning, Teaching and Assessing: a revision of Bloom's taxonomy of educational objectives. New York: Addison Wesley Longman, 2001. ARAUJO, Glauber G. Um Framework Conceitual para apoiar a instrumentação da Avaliação Formativa da Aprendizagem em Jogos Digitais. 2013. Dissertação de Mestrado – Universidade Federal do Rio Grande do Norte, Natal. BRASIL. Secretaria de Educação Fundamental. Introdução ao parâmetros curriculares nacionais. Brasília: MEC/SEF, 1997. 34 CAILLOIS, Roger. Os jogos e os Homens. trad. José Garcez Palha. Lisboa: Edições Cotovia, 1990. CAVALCANTI, Eduardo L. D. et al. O ludismo e avaliação da aprendizagem: possibilidades para o ensino de química. In: XV Encontro Nacional de Ensino de Química (XV ENEQ). Brasília: UNB, 2010. CUOMO, Salvatore et al. Full Formative Assessment based on Educacional Video Games. 2011. Disponível em: http://weblab.dmi.unisa.it/weblab/images/.../det102.pdf. Acesso em: 26/01/2013. FERREIRA, Marli Cardoso; CARVALHO, Lizete Maria Orquiza. A evolução dos jogos de Física, a avaliação formativa e a prática reflexiva do professor. Revista Brasileira de Ensino de Física, v. 26, n. 1, p. 57-61 (2004). GONÇALVES, Rafael Q. et al. Avaliação da aprendizagem em Experimentos com Jogo educativo de engenharia de requisitos. 2011. Disponível em: http://www.lbd.dcc.ufmg.br/colecoes/sbqs/2011/SBQS2011-TT14_82900_1.pdf. Acesso em: 19/06/2012. HADJI,C. Avaliação desmistificada. Porto Alegre: Artes Médicas, 2001. HUIZINGA, Johan. Homo Ludens. trad. João Paulo Monteiro. São Paulo: Ed. Perspectiva, 2000. JORBA, Jaume; SANMARTÍ, Neus. A função pedagógica da avaliação. In: BALLESTER, Margarida (Org.). Avaliação como apoio à aprendizagem. trad. Valério Campos. Porto Alegre: Artmed, 2003. Pág. 23-45. MATTAR, João. Games em Educação: Como os nativos digitais aprendem. São Paulo: Editora Pearson Prentice Hall, 2010. PARCERISA, Artur. Introdução. In: BALLESTER, Margarida (Org.). Avaliação como apoio à aprendizagem. trad. Valério Campos. Porto Alegre: Artmed, 2003. Pág. 11. PERRENOUD, Philippe. Avaliação: da excelência à regulação das aprendizagens entre duas lógicas. trad. Patrícia Chittoni Ramos. Porto Alegre: Artmed, 1999. PREECE, J.; ROGERS, I.; SHARP, H. Design de Interação: Além da Interação Humano-Computador; Porto Alegre: Bookman, 2005. QUINQUER, Dolors. Modelos e enfoques sobre a avaliação: O modelo comunicativo. In: BALLESTER, Margarida (Org.). Avaliação como apoio à aprendizagem. trad. Valério Campos. Porto Alegre: Artmed, 2003. Págs. 15-22. SILVA, Lyrene F.; LEITE, Julio Cesar S. do Prado; BREITMAN, Karin K. Ensino de Engenharia de Software: Relato de Experiências. In: XII WEI-Workshop de Educação em Informática (XXIV SBC). Salvador: UFBA, 2004. SOUZA-LOMBA Fernanda Cristina M. et al. Avaliação da aprendizagem por meio do jogo didático "Jogando Limpo", nas aulas de Ciências. In: II Congresso Internacional de Educação. Ponta Grossa: 2010. WANG, Tzu-Hua. Web-based quiz-game-like formative assessment: Developmet and avaluation. 2007. Disponível em: http://www.sciencedirect.com/science/article/. Acesso em: 26/03/2013. 35 Uma Abordagem para o Ensino de Engenharia de Software no Desenvolvimento de Jogos Digitais Emanuel Ferreira Coutinho1 , Carla Ilane Moreira Bezerra2 1 Instituto UFC Virtual Universidade Federal do Ceará (UFC) Fortaleza – CE – Brasil 2 Universidade Federal do Ceará (UFC) Quixadá – CE – Brasil [email protected],[email protected] Abstract. The discipline of Software Engineering is commonly taught in undergraduate courses in areas related to Computer Science. However the way in which it is taught is not often adherent to certain kinds of developments, such as digital games. The development of digital games has got peculiarities that usually are not found in books on Software Engineering, as the Game Design Document (GDD) and the platforms aware development style. In this context, this work proposes an approach to facilitate the teaching of Software Engineering for digital game development, with a focus on engineering and management activities. Finally, an evaluation of the approach is performed in a Software Engineering course. Resumo. A disciplina de Engenharia de Software é comumente ministrada em cursos de graduação de áreas relacionadas à Ciência da Computação. Porém muitas vezes a maneira na qual ela é ministrada não se adere a certo tipos de desenvolvimentos, como é o caso dos jogos digitais. O desenvolvimento de jogos digitais possui peculiaridades que normalmente não encontradas nos livros de Engenharia de Software, como o Game Design Document (GDD) e o estilo de desenvolvimento orientado à plataformas. Neste contexto, este trabalho propõe uma abordagem para facilitar o ensino de Engenharia de Software no desenvolvimento de jogos digitais, com foco nas atividades de engenharia e gestão. Ao final do trabalho, é realizada uma avaliação da abordagem na aplicação desta em uma disciplina de Engenharia de Software. 1. Introdução Engenharia de Software é uma disciplina normalmente ministrada em cursos de computação. Muitas vezes essa disciplina é ministrada de maneira tradicional, como normalmente é descrito em [Sommerville 2011] e [Pressman 2011], referências básicas geralmente adotadas nestes cursos. Porém, a maneira na qual é ministrada atualmente a disciplina de Engenharia de Software muitas vezes se adéqua apenas a ciclos de vida mais tradicionais como o cascata. O desenvolvimento de outros sistemas, por exemplo jogos digitais, não se adéqua à metodologia de ensino tradicional de Engenharia de Software. Sendo assim, uma adaptação 36 para o ensino de Engenharia de Software para o desenvolvimento de jogos digitais é necessária para a correta adequação à realidade desse tipo de desenvolvimento. Neste contexto, este artigo propõe uma abordagem para o ensino de Engenharia de Software no desenvolvimento de jogos digitais. Não é intenção deste trabalho elaborar uma metodologia para o desenvolvimento de jogos digitais que resolva todas as peculiaridades deste tipo de produto, e sim apenas facilitar o entendimento dos conceitos de Engenharia de Software de forma aplicada a esse tipo de desenvolvimento, focando apenas no ensino. O presente trabalho possui a seguinte estrutura, além desta introdução: na Seção 2, trabalhos relacionados são discutidos, a abordagem proposta é descrita na Seção 3, na Seção 4 uma avaliação da abordagem é apresentada, e finalmente na Seção 5, conclusões e trabalhos futuros são apresentados. 2. Trabalhos Relacionados Diversas ferramentas foram propostas para o ensino de alguma atividade de Engenharia de Software, mas poucas são relacionadas ao desenvolvimento de jogos digitais. Em [Sousa et al. 2012] uma ferramenta, o iTestLearning, foi desenvolvida para ensinar sobre especificamente a atividade de testes. Nesta ferramenta o objetivo é o aprendizado das atividades de um processo de testes de software. Em [Morales and Nelson 2007] foi proposto um processo de desenvolvimento de jogos móveis de acordo com o processo de design de jogos. Dessa forma, o processo funciona mais como um guia de criação de jogos móveis do que um processo de desenvolvimento propriamente dito. O processo de desenvolvimento do produto integrado é composto de cinco passos, os quais são: 1) geração e avaliação de idéias; 2) desenvolvimento de modelo de negócios e caso de negócios; 3) aspectos legais; 4) projeto de pesquisa de mercado e experiência do usuário e 5) Implementação. Os testes são realizados na fase de implementação onde o software é construı́do. Uma lista com os dispositivos móveis relevantes para o mercado alvo é elaborada desde cedo no projeto. Dessa forma, os testes são feitos diretamente nos dispositivos móveis alvo e conduzidos por planos de teste padronizados e protocolos de testes. Outro trabalho identificado na literatura descreve o uso de desenvolvimento de jogos móveis como ferramenta motivacional para envolver os alunos no inı́cio de cursos de computação, descrevendo uma abordagem para desenvolvimento. Isso porque, segundo os autores, comparado ao desenvolvimento de jogo tradicional, a programação de jogos móveis é menos complexa, permitindo alunos com pouca experiência em programação criar jogos móveis [Kurkovsky 2009]. Em [Rodrigues et al. 2010] é apresentada uma proposta de Modelo de Processo para o desenvolvimento de jogos para aplicação na área de saúde para desenvolver um serious game para educação em higiene bucal de adulto. O modelo de processo desenvolvido se baseia na estrutura do RUP e possui um conjunto de quatro fases (Concepção, PréProdução, Produção e Pós-Produção) e dez disciplinas, estas divididas em sete disciplinas de criação (Análise de Mercado, Projeto Pedagógico-Educacional, Game Design, Projeto Técnico, Implementação, Teste e Distribuição) e três disciplinas de apoio (Gerência de Configuração e Mudanças, Gerência de Projeto e Ambiente). 37 3. Abordagem para o Ensino de Engenharia de Software no Desenvolvimento de Jogos Digitais A adaptação para o ensino de Engenharia de Software visando o desenvolvimento de jogos digitais é uma atividade que depende muito do ferramental utilizado. Caracterı́sticas de mercado muitas vezes influenciam no processo de desenvolvimento de um tipo de software, pois muitas caracterı́sticas dos projetos são dependentes de ferramentas, plataformas de software e hardware, e prazos de lançamento de produtos. Considerando estas restrições foi proposta neste trabalho uma abordagem para o ensino de Engenharia de Software no desenvolvimento de jogos digitais. Nesta abordagem, diversos conceitos tradicionais da Engenharia de Software podem ser trabalhados juntamente com as caracterı́sticas inerentes ao desenvolvimento de jogos digitais. Para a construção da abordagem foi utilizado como base as atividades descritas por [Flynt and Salem 2005]. A abordagem tem o foco no ensino, portanto muitos pontos considerados importantes e comumente utilizados no desenvolvimento comercial não serão abordados. Sendo assim, as atividades da abordagem são: Especificar Requisitos, Projetar Produtos, Implementar Produtos e Testar Produtos. Atividades relacionadas à gestão também serão introduzidas na abordagem, especificamente Gerenciar Projetos e Gerenciar Configuração. A Figura 1 descreve a abordagem de maneira gráfica e ao longo do tempo. Figura 1. Visualização da abordagem proposta em alto nı́vel A abordagem segue um modelo de ciclo de vida cascata para facilitar a adaptação à disciplina. Essa versão da abordagem é bastante simplificada em relação a um projeto de desenvolvimento de software tradicional, pois possui apenas fins didáticos. Porém, a abordagem só será aplicada após serem ministradas as aulas de ciclo de vida, modelos de processo e fases do processo. O professor atuará como cliente, mas também agirá como suporte ao processo e gestão. Espera-se com a realização dessas atividades que se possa adicionar o conhecimento de Engenharia de Software ao desenvolvimento de jogos de maneira que não mude as caracterı́sticas da área e que possa se beneficiar da utilização de atividades básicas de Engenharia de Software. Em geral, o desenvolvimento de jogos segue um Game Design Document (GDD). Normalmente este documento possui elementos do ambiente, narrativa, tecnologia e 38 mecânica. Este, por sua vez, não é suficiente para o desenvolvimento tradicional de sistemas, aplicado pela Engenharia de Software. Então, na atividade Especificar Requisitos, os alunos devem elaborar User Stories ou requisitos funcionais em alto nı́vel para complementar os requisitos do GDD. Como o GDD não é completo do ponto de vista de projeto, alguns elementos são adicionados para facilitar o projeto do jogo. Na atividade Projetar Produtos, um protótipo de telas ou do próprio jogo devem ser desenvolvidos, um diagrama de atividades também pode ser elaborado para facilitar a navegabilidade ou ações, e a arquitetura é descrita. Muitas vezes a arquitetura é dependente da ferramenta/plataforma de desenvolvimento utilizada no projeto, como o Unity3D1 . Nesse caso, a arquitetura acaba sendo orientada à plataforma. No caso de uma aplicação web, a arquitetura segue as tecnologias da plataforma utilizada, como java ou C#. No caso de desenvolvimento de aplicações móveis, a arquitetura também segue as caracterı́sticas da tecnologias envolvidas, como Android ou iOS. Em Implementar Produtos, o desenvolvimento dos produtos de trabalho ocorre orientado à arquitetura definida na atividade anterior, gerando o código fonte do jogo, testado de maneira individual (testes unitários), e as unidades integradas. Finalmente, na atividade Testar Produtos, os produtos desenvolvidos são testados. Os alunos realizam seus testes, e o professor testa todos os jogos desenvolvidos, a nı́vel de testes funcionais. Para isso, casos de teste são elaborados e utilizado para realizar o aceite final do produto. Apenas duas atividades de gestão foram consideradas: Gerenciar Projetos e Gerenciar Configuração. Na atividade de Gerenciar Projetos, o professor juntamente com os alunos irá elaborar o planejamento do projeto, definindo as fases e os produtos a serem construı́dos. Cada projeto deverá definir datas de entrega parciais com produtos. O professor irá realizar um acompanhamento dos projetos semanalmente. Caso haja necessidade de replanejamento, as datas poderão ser revistas. No caso de dificuldades, o professor poderá mediar a resolução do problema, semelhante ao gerenciamento de impedimentos do SCRUM. Na atividade Gerenciar Configuração é utilizado o Dropbox como repositório de artefatos, permitindo a controle de acesso através de login/senha, compartilhamento dos artefatos, controle de versão e controle de mudanças. O produto final (jogo completo e documentação) deverá ser armazenado em pasta especı́fica para facilitar os testes. Também deverá ser adicionado ao repositório um manual de instalação e configuração do jogo, assim como arquivos necessários. A Tabela 1 descreve cada uma das atividades de engenharia e gestão propostas de maneira resumida. 4. Avaliação da Abordagem Como estudo de caso, a abordagem foi empregada na disciplina de Engenharia de Software do curso de graduação Sistemas e Mı́dias Digitais (SMD)3 da Universidade Federal do Ceará. O SMD possui a disciplina de Engenharia de Software para as habilitações de Sistemas de Informação Multimı́dia (SIM) e Jogos Digitais. Para a habilitação de SIM, 1 3 Unity3D - http://unity3d.com/ Sistemas e Mı́dias Digitais - http://smd.virtual.ufc.br/ 39 Tabela 1. Resumo das atividades da abordagem proposta. Atividade Especificar Requisitos Projetar Produtos Implementar Produtos Testar Produtos Gerência de Projetos Gerência de Configuração Descrição Elaborar GDD para o projeto e adicionar algum requisito complementar. Desenvolver a arquitetura jogo, orientada à plataforma de desenvolvimento. Desenvolver os produtos especificados. Testar os produtos desenvolvidos conforme especificados. Elaborar o planejamento do projeto, definindo fases e produtos a serem construı́dos. Utilização do Dropbox2 como repositório para atividades de gestão de configuração. a disciplina de Engenharia de Software é idêntica a que tradicionalmente oferecida em cursos de computação em geral. Para a habilitação em Jogos Digitais, o graduado terá perfil de: designer de jogos, desenvolvedor de jogos para computadores e consoles de video game, desenvolvedor de jogos para dispositivos móveis (celulares, tablets, etc), desenvolvedor de jogos para TV digital interativa, programador de sistemas para simulação computacional, projetista de aplicações para entretenimento eletrônico, dentre outras. A disciplina de Engenharia de Software foi ofertada no semestre 2012.2 para as duas habilitações. Para a habilitação de SIM a abordagem não foi aplicada, pois o foco da turma era desenvolvimento de sistemas comerciais tradicionais. Para a habilitação de jogos a turma utilizou a abordagem. Apenas 5 alunos estavam matriculados nessa disciplina, porém todos desenvolvem jogos digitais e já possuem experiência em projetos de desenvolvimento de jogos digitais em plataformas diferentes. O plano de aula da disciplina foi baseado nos cursos de Engenharia de Software e composto pelos seguitnes módulos: processos, modelos, requisitos, análise e projeto, implementação, testes, homologação, implantação, manutenção, metodologias ágeis, gerência de configuração, gerência de projeto e gerência de qualidade. 4.1. Aplicação da Abordagem A disciplina segue uma ementa tradicional de cursos de Engenharia de Software. Os conceitos mais utilizados foram explicados e exemplificados. Após algumas aulas os alunos já possuiam um conhecimento mı́nimo sobre processo de software, e então a abordagem foi apresentada. No trabalho final da disciplina, os alunos teriam que elaborar uma documentação alinhada com a abordagem e ter um jogo digital desenvolvido. A documentação consistia da elaboração de um GDD com a adição de requisitos funcionais mais formalizados, porém em alto nı́vel, a descrição da arquitetura, casos de teste, e o executável. Os alunos teriam cerca de dois meses para cumprir todas as etapas da abordagem e também deveriam realizar acompanhamentos com o professor semanais e utilizar gerência de configuração no desenvolvimento. Na atividade Especificar Requisitos todos os alunos entregaram um GDD, vari- 40 ando apenas o artefato de requisito complementar, que foram casos de uso e lista de requisitos em alto nı́vel, geralmente uma lista com requisitos funcionais e não funcionais. Em Projetar Produtos, os alunos entregaram a arquitetura do jogo, composta por diagramas arquiteturais com visões diferentes (visão em camadas, visão de implantação, etc). Muitas vezes foi totalmente orientada à plataforma de desenvolvimento. Adicionalmente, diagramas de classe foram elaborados para todos os jogos. Diagramas de sequência, atividades e telas foram desenvolvidos em alguns jogos. Na atividade Implementar Produtos, os códigos fonte foram desenvolvidos e realizados testes de unidade. Como a maioria dos jogos era dependente da plataforma utilizada pelos alunos, as tecnologias (linguagem de programação, componentes e padrões) também eram limitadas ao que a plataforma fornecia. Em Testar Produto, um pacote de instalação do jogo foi produzido. A exceção de uma aplicação Android para celular, todos foram disponibilizados para instalação na web. Casos de teste foram elaborados para que o professor avaliasse o jogo, assim como manuais de instalação e configuração. As atividades de gestão foram realizadas durante as aulas ou por email. Estas atividades demandaram um esforço maior no inı́cio da disciplina para o planejamento de tarefas, quais produtos seriam desenvolvidos e os prazos de entrega. Em paralelo o ambiente de desenvolvimento foi preparado e disponibilizado no ambiente de gestão de configuração. O Dropbox foi utilizado por todos os alunos durante a disciplina. O acompanhamento do projeto foi orientado à produtos e tarefas, e realizado a cada aula, com identificação de problemas, e os devidos ajustes realizados conforme necessidade. Alguns alunos necessitaram de um acompanhamento mais rı́gido, pois tiveram dificuldade em cumprir os prazos estabelecidos e dificuldade na elaboração de alguns artefatos. Porém, essas dificuldades foram resolvidas com a elaboração de artefatos alternativos que descreviam aspectos estáticos e dinâmicos do jogo. A Figura 2 exibe alguns jogos desenvolvidos pelos alunos durante a disciplina. Figura 2. Jogos desenvolvidos na disciplina 4.2. Dificuldades e Lições Aprendidas A experiência de utilizar uma abordagem adaptada ao desenvolvimento de jogos digitais permitiu identificar diversos benefı́cios e dificuldades conforme os itens descritos a seguir: • Atividades da Engenharia de Software: O desenvolvimento de jogos baseado em um GDD é mais narrativo do que gráfico. Assim, alguns aspectos da Engenharia de Software são perdidos. Alguns alunos trabalham em empresas de desenvolvimento de jogos, e não se sentiram confortáveis com alguns artefatos, como casos de uso e cronogramas. No inı́cio da disciplina os alunos sentiram dificuldades em relação aos modelos de ciclo de vida. Devido aos alunos serem usuários 41 de ferramentas de desenvolvimento de jogos, com foco em programação, eles não entendiam a utilidade da documentação de requisitos funcionais e não funcionais. Uma dificuldade que os alunos tiveram foi a descrição da arquitetura dos jogos quando mudava a plataforma das quais eles estavam acostumados a desenvolver. Uma prática comum no deenvolvimento de jogos são testes parciais (“beta” ou “demo”). Percebeu-se que o processo de implantação de um jogo pode ser ajustado como ocorre atualmente em muitas plataformas de desenvolvimento de jogos. Os alunos se identificaram com esta atividade, pois já haviam trabalhado anteriormente. A distribuição através de uma mı́dia fı́sica ou de um download, com as atualizações obtidas através da internet também foram situações descritas pelos próprios alunos. Tais atividades serão exploradas em turmas posteriores. • Experiência Docente: Uma dificuldade de aplicação da disciplina foi a pouca experiência do professor em desenvolvimento jogos digitais, apesar do professor possuir experiência no ensino de Engenharia de Software e Desenvolvimento de Sistemas. Livros para Engenharia de Software tradicional, como Sommerville [Sommerville 2011] e Pressman [Pressman 2011], adotados nos cursos de computação descrevem um processo de desenvolvimento especı́fico para jogos digitais, nem situações de jogos como exemplos ou artefatos comumente utilizados no desenvolvimento de jogos, como o GDD. Apenas um livro especı́fico para Engenharia de Software para jogos foi encontrado, que foi adotado na disciplina [Flynt and Salem 2005]. Por outro lado, com a experiência de aplicação da abordagem, foi possı́vel adquirir uma quantidade razoável de artefatos utilizados no processo de desenvolvimento de exemplos de jogos digitais, como: arquiteturas, modelos de desenvolvimento, requisitos e GDD. Um benefı́cio da abordagem foi a conclusão de que o GDD não é suficiente para o desenvolvimento, pois diversos aspectos não estavam claros ou não existiam no documento, como exemplo as atividades de testes. Outra dificuldade foi encontrar exemplos de modelagem de jogos que seguissem aspectos mı́nimos da Engenharia de Software. Os exemplos foram construı́dos pelos próprios alunos ao longo do semestre. • Identificação com RAD e Metodologias Ágeis: Os alunos não se interessaram no inı́cio por modelos de ciclo de vida. Porém ao estudarem o modelo de ciclo de vida Rapid Application Development (RAD), perceberam que era o que eles mais consideraram alinhado para o desenvolvimento de jogos devido a sua natureza de equipes multidisciplinares trabalhando em paralelo maneira independente, não necessariamente somente equipes de desenvolvimento, e ao final, uma fase para a integração. Normalmente exemplos de equipes são: programação, arte, design e som. As metodologias ágeis, especificamente o SCRUM, se justificam na colaboração ao desenvolvimento de jogos pela natureza prática do desenvolvimento de jogos e pela divisão de tarefas que podem ser distribuı́das em pequenos incrementos (sprints). Uma dificuldade foi a utilização de fases e ciclos de desenvolvimento durante o trabalho, o que não ocorreu. Pretende-se adaptar a abordagem para que em futuras versões ela suporte o desenvolvimento com ciclos. • Abordagem de Desenvolvimento: Muitos dos itens citados anteriormente foram identificados devido a aplicação da abordagem proposta. O maior benefı́cio da abordagem foi o conhecimento por parte do professor de práticas comuns ao desenvolvimento de jogos, e para os alunos, conceitos de Engenharia de Software aplicados a jogos digitais, que eles normalmente utilizam, mas de maneira dife- 42 rente, seja com uma ferramenta, seja com um artefato de nomenclatura diferente. Ao final da disciplina foi realizada uma pequena discussão sobre a abordagem. Os alunos, que a princı́pio não estavam confortáveis com a utilização dos conceitos, se mostraram mais flexı́veis na utilização das práticas pois perceberam a aplicabilidade de diversos conceitos, desde que orientados à realidade do desenvolvimento de jogos. 5. Conclusão Este trabalho propôs uma abordagem para o ensino de Engenharia de Software no desenvolvimento de jogos digitais. Essa necessidade se dá devido ao fato de que certos tipos de aplicações necessitam de uma adaptação das práticas da Engenharia de Software para que possam ter a devida utilidade, eficiência e produtividade. Foi realizado uma avaliação da abordagem, mas ainda de forma limitada aos alunos de uma turma de Engenharia de Software do curso de Sistemas e Mı́dias Digitais, cujo foco foi o desenvolvimento de jogos. Como primeira avaliação e primeira versão da abordagem o resultado foi satisfatório em relação ao desempenho dos alunos, porém ainda são necessários vários ajustes para que a abordagem tenha um melhor desempenho. O fato de ter sido a primeira vez em que a disciplina foi ofertada no curso teve um impacto nos objetivos da disciplina, que deverão ser ajustados em novas versões da abordagem. Como trabalhos futuros é necessário refinar e praticar mais as atividades definidas na abordagem. A utilização de metodologias ágeis de forma mais presente na abordagem também pode colaborar com o aumento no desempenho na turma. A utilização de ferramentas pelos alunos no auxı́lio tanto do projeto quanto da gestão é outro trabalho futuro a ser executado. Por fim, a aplicação da abordagem em outras turmas de Engenharia de Software. Referências Flynt, J. P. and Salem, O. (2005). Software Engineering for Game Developers. Thomson/Course Technology. Kurkovsky, S. (2009). Engaging students through mobile game development. In Proceedings of The 2009 Technical Symposium on Computer Science Education (SIGCSE 2009), Chattanooga, TN. Morales, C. and Nelson, D. (2007). Mobile 3D Games: From Start to Market. Charles River Media. Pressman, R. (2011). Engenharia de Software. McGraw-Hill Interamericana do Brasil, 7a. edition. Rodrigues, H. F., Machado, L. S., and Valença, A. M. G. (2010). Definição e aplicação de um modelo de processo para o desenvolvimento de serious games na Área de saúde. In Proceedings of the CSBC 2010 - Workshop de Informática Médica, Belo Horizonte, MG. Sommerville, I. (2011). Engenharia de Software. Addison Wesley, 9a. edition. Sousa, V., Bezerra, C. I. M., Coutinho, E. F., and Santos, I. S. (2012). itest learning: Um jogo para o ensino do planejamento de testes de software. In CBSoft2012 - SBES FEES 2012, Natal - RN. 43 Learning Software Evolution: Curriculum, Approaches and an Experience Report Debora Maria Coelho Nascimento1 , Christina Chavez2 , Roberto Almeida Bittencourt 3 1 2 3 Federal University of Sergipe (UFS) São Cristovão – SE – Brazil Federal University of Bahia (UFBA) Salvador – BA – Brazil State University of Feira de Santana (UEFS) Feira de Santana – BA – Brazil [email protected], [email protected], [email protected] Abstract. Software evolution tasks impose increasing challenges and require huge investments from industry and software engineers seem to be not prepared properly to deal with them. One possible way to handle this problem is teaching software evolution in graduate and undergraduate courses. To this end, several reference materials have been proposed and some courses try to implement them to achieve improved competencies for their students. This paper presents preliminary results of an investigation we have performed on how software evolution topics have been approached within reference curricula and some academic courses, and also reports our own experience within a graduate course on software evolution. 1. Introduction Literature provides reports of studies where software evolution accounts for more than 65% of the total software cost [Petrenko et al. 2007]. In case of systems with a long lifetime, software maintenance and evolution (SME) activities account for up to 50-75% of total software life-cycle costs [Koskinen 2011]. Thus, it is usual for software engineers in industry to spend a majority of their time understanding and evolving legacy software [McCartney et al. 2012]. These statistics provide evidence on the importance of these activities in the field of Software Engineering (SE). Evolving a large software product is a challenging task [van Deursen et al. 2003]. One needs to comprehend and modify a system that was mostly developed by others, that many users depend upon, and which is frequently complex and poorly structured. Often there is no other documentation apart from the source code, or the documentation is outdated. Previous research has been performed to facilitate such activities. However, there is still little impact of this research on software industry practices, which are frequently performed as a craft activity, without the support of proper methods. Furthermore, despite the availability of tools, software engineers were not trained for them and do not know how to interpret their outputs [van Deursen et al. 2003]. Beyond this, we can add the fact that maintaining a software system is usually the first activity assigned for recent graduates in their first jobs. Consequently, it is their first responsibility. 44 At the university, most SE courses overly emphasize software construction as opposed to maintenance and evolution [McCartney et al. 2012]. Students are trained in developing small programs, in size and complexity, starting from scratch, and are barely exposed to software change tasks on more realistic software projects [van Deursen et al. 2003]. Evolving large and complex software systems comprises: (i) understanding documentation; (ii) recovering and understanding the architecture; (iii) understanding some part of the source code; (iv) locating changes; (v) performing impact analysis, among other activities. These activities are quite challenging, both for industrial and academic settings. Mens et al [Mens et al. 2005] described some research challenges in software evolution, emphasizing that “one of the best ways to place change and evolution in the center of the development process is to educate future generations of software engineers”. In this context, one challenging question is how software evolution topics can be properly approached in software engineering curricula. This paper presents the preliminary results of an investigation we have performed on how software evolution has been dealt within some reference curricula. We have provided some examples of courses and also reported our own experience on a graduate course on software evolution. This document is organized as follows. Section 2 presents a brief summary on how important reference curricula treat this topic. Section 3 presents some interesting academic initiatives that work with software evolution topics. Section 4 reports our own onesemester initiative on teaching software evolution topics and Section 5 discusses some topics. Finally, Section 6 presents some concluding remarks. 2. Software Evolution in the Curriculum In order to better understand how software evolution is treated within the curriculum, we first analysed some reference curricula and guidelines, and their account of this subject area. Later, we provide examples of curricula implementation from undergraduate courses offered by three Brazilian universities. The Association for Computing Machinery (ACM) and the IEEE Computer Society have published the Computing Curricula Series [ACM and IEEE 2006], providing recommendations to five undergraduate programs, described below. In the 2010 Information Systems (IS) Curriculum [ACM and AIS 2010], the term “maintenance” is used at the discipline scope, but no specific course, topic or unit was proposed. “Systems Analysis & Design” is defined as a core course and “Application Development” as an elective course. While the former focuses on requirements, the latter focuses on design, implementation and testing. Both courses are foundations to one career track called “Application Developer”, what reveals the importance assigned to software development, in contrast to SME. In the 2008 Computer Science (CS) Curriculum [ACM and IEEE 2008a], “Software Evolution” is a core topic within the “Software Engineering” knowledge area (KA). The topic must have a minimum core coverage time of 3 hours, handling software maintenance, features of maintainable software, reengineering legacy systems, refactoring and software reuse. “Maintenance” is also mentioned in the “Software Processes” and “Spe- 45 cialized Systems” topics. In the 2008 Information Technology Curriculum [ACM and IEEE 2008b], only one KA, “System Administration and Maintenance”, references the term “maintenance”. However, it is not related to SE and covers topics such as operating systems, applications, and administrative activities and domains. The SE 2004 Curriculum Guidelines for Software Engineering [ACM and IEEE 2004b] states that “evolution is a broad concept that expands upon the traditional notion of software maintenance” and defines “Software Evolution” as a KA with a minimum coverage time of 10 hours. But the term “maintenance” is also mentioned in the “Software Process” and “Software Quality” KAs, and a topic is included in the “Software Management” KA. The Computer Engineering (CE) Curriculum [ACM and IEEE 2004a] describes two units: the “Software Maintenance” unit within the “Computer Systems Engineering” KA and “Software Evolution” within the “Software Engineering” KA, both with a minimum core coverage time of 2 hours. However, the topics specified for these two units have some overlapping content, such as software maintenance, impact analysis and reuse. ACM also provides recommendations for the graduate degree in SE [iSSEc Project 2009]. In this case, “Software Maintenance” is a unit within the “Software Engineering” KA, which is subdivided into topics about maintenance fundamentals, processes and techniques. There is also another unit called “Operation, Maintenance and Supporting” within the “Systems Engineering” KA, but the topics are not described. The text emphasizes that it is a mistake to view the other development KAs as independent areas of software maintenance and to focus on development from scratch. Finally, the SWEBOK – Software Engineering Body of Knowledge Guide – currently in the public review phase of its third version [IEEE 2013], provides a reference to Lehman’s Laws of Evolution, defining that “maintenance is evolutionary development” and “maintenance is continued development”. The guide sets software maintenance as one of the fifteen knowledge areas (KA) that provide the foundational knowledge for SE, thus reinforcing the relevance of the subject for the software engineer’s background. In Brazil, the Brazilian Computer Society (SBC) has also produced recommendations for four undergraduate programs. The 2003 IS curriculum [SBC 2003] mentions “maintenance” as an activity in the software development process, with no emphasis at all. On the other hand, the CS and CE Curricula are described in a single document, available since 2005 [SBC 2005]. This document treats maintenance, reverse engineering and reengineering as topics in the “Software Engineering” subject matter within the “Computing Technology” core. In the Computing Education reference curriculum [SBC 2002], it is recommended that the area of SE should be comprehensively studied with emphasis on developing environments and systems for use in learning and other educational processes. The reference curriculum for Software Engineering has not been yet completed. The proposal for curricular guidelines from the Brazilian Ministry of Education (MEC) [MEC 2012] cites the term “evolution” when describing the expected competencies for CS, SE or IS graduates. However, the topic “software evolution” only shows up in the SE curriculum. 46 The Federal University of Sergipe offers three undergraduate programs: IS, CS and CE. Software maintenance is one topic within the “Software Development III” course, only in the CS Undergraduate Curriculum. For the other two curricula, there is no reference to software maintenance or evolution [UFS 2008]. However, faculty responsible for the courses on SE report that they address the topic in, at least, one lecture. The State University of Feira de Santana offers the Computer Engineering Undergraduate program. By insistence of some faculty, the “Software Evolution and Maintenance” was added as an optional course [UEFS 2012]. Finally, the Federal University of Bahia also offers three undergraduate programs: CS, IS and Computing Education [UFBA 2013]. In the CS course, since 2007, the “Software Evolution” elective course is provided every year. In the other two curricula, maintenance is one topic in the “Software Engineering” course. 3. Some Initiatives El-Ramly described an experience whose goal was to provide MSc. students with basic knowledge and training in reengineering [El-Ramly 2006]. The course covered reverse engineering and the forward engineering aspect of reengineering. Their approach used lectures, discussion classes, and computer labs with some tools where students had to work in a project to practice and expand on what they had learned. Among the lessons learned reported in their study, we highlight the need to cover practical tools and some industrial case studies and the use of few tools to reduce students’ workload. Petrenko et al. offered a course to senior undergraduates and first-year graduate students, in which they learnt about tasks, tools and techniques of an evolution process and practiced on software systems of considerable size [Petrenko et al. 2007]. Students had introductory lectures about software change process and tools, and had to perform required changes of increasing difficulty in an open source project. Koskinen [Koskinen 2011] used systematic seminars to teach software maintenance and evolution. The seminars were organized as part of a “Software Engineering” course, usually taken during the second year for undergraduate students in computing. Before the seminars, the instructor introduced the related area by means of lectures. Students had to form groups autonomously, and each group had to analyze one scientific paper and present its analysis at the seminar, write a careful summary report of the paper, serve as the opponent to another group, and listen to the presentations of other groups. The first two papers emphasized the importance of the students participating in practical projects, especially in projects closer to industrial reality, while the last one emphasized the use of seminars to provide a broad scientific view of the area to students. 4. Our Experience In this section, we report our experience in teaching software evolution to graduate students. Two authors of this paper were responsible for the ”Topics in Software Engineering 1” course, in an elective course from the Computer Science Graduate Program at the Federal University of Bahia. 4.1. Methodology The topics covered in our course were basic concepts of evolution and maintenance, laws of software evolution, software aging, software comprehension, reverse engineer- 47 ing, change requests, change classification, concept location, impact analysis, refactoring, tests in the change context and the mining of software repositories. Since the audience was composed of graduate students, we decided for a research approach. Students had to discuss concepts and trends in the area of software evolution based on scientific papers. They also had to use techniques and tools to study attributes of one software project during its evolution and present the results of the analysis. The topics were presented in lectures or individual seminars. Except for the first class, students had to prepare critical reviews for one or two scientific articles suggested. The goal was to generate discussion about the theme and the quality of the articles. A list of themes was suggested for the seminars, so that each student could choose one with better fit to his/her background and interests. A set of papers about each theme was also provided, but the student could research other sources and tools to support activities related to the chosen theme. The seminar was an individual task. To add a more practical view of the research, students, in pairs or in groups of three, had to produce research on mining software repositories related to evolution or maintenance for one or more available software projects chosen by the students. Thus, students had to identify issues, define research questions and methodology, perform the data collection, and analyze the results. The study proposal was initially validated by the faculty. Finally, students had to present the work in an oral session and write a report. The faculty effort was distributed into planning and leading. The effort during planning was reduced because of the previous experience in similar courses. Most of the time was used to define the themes and pre-select papers related to them, and also to define the evaluation criteria. Leading, time was needed to read the suggested papers and assessing the critical reviews, seminars and practical projects. 4.2. Students’ Perspective To obtain student’s appraisal on course relevance and methodology, they were asked to fill an anonymous web survey, which had 8 responses in an universe of 11 students. Since the students were graduate students, we decided to characterize their experience in industry. Only one student did not have any work experience and most (75%) of them had more than five years experience. For those, 57% had 50% of their time working with maintenance activities and 43% had 75% of their time. When the students were questioned if they had previously studied software evolution, 50% answered that had never done it, while 10% had studied at a company, 10% on their own, and only 30% had studied it in college. However, 100% considered important that the theme be addressed in computer courses in academy, from that 50% considers that should exist a dedicated course for the theme. The opinion about this importance was changed after their participation in this course, for 75% of the students. Regarding the used methodology, 88% considered the duration appropriate, 100% considered the content appropriate, of whom 38% considered the content very important and 25% considered it important for a software engineer working in industry. Only 12.5% considered inappropriate the approach using seminars and practical projects, while 50% considered it good and 37.5% found it very good. In a self-assessment, 12.5% found their 48 learning less than satisfactory, 12.5% found it satisfactory and 75% found it good. From open questions, students could suggest improvements and indicate what they liked best. Some improvements suggested were: reducing the number of assignments of critical reviews, more feedback about the reviews, dedicating more time to discussions; faculty should discuss the seminar with the student preparing it before the oral presentations, for better quality and more uniform contents; the project should start at the beginning of the course, with more discussion about it, during the whole course. Students especially appreciated: the diversity of content that allowed a broad view of the maintenance and evolution area; the free choice of theme for seminars and practical project; knowledge and experience of students and faculty allowed enriching discussions; the practical project that allowed the comprehension of some aspects related with software evolution; and finally the critical reading of the scientific papers reported in the reviews. 4.3. Faculty’s Perspective The faculty answered an evaluation questionnaire. The third author of this study was in charge of elaborating and evaluating answers of both questionnaires to avoid bias. Analyzing the students’ results, the instructors considered: (i) good results for critical reviews, with quality increase after the first results, although some students insisted on not do a critical analysis and only summarized the articles; (ii) for seminars, the results were regular, a few were very good, some were good, but many failed; and (iii) for the projects, the results were very good, surprising the instructors. In general, they considered having good results. Regarding the methodology, they considered that the success was partial. On the one hand, seminars turn students more active and cover a broad view of topics, on the other hand, when it fails, all students are harmed, since the topic is not covered in adequate way anywhere else. The tool demonstrations were mostly incomplete, reducing the potential practical impact on the students’ daily work. Although the critical reviews increased the students’ workload, they stimulated the discussions in class. In general, the practical projects were very good, providing students some experience in performing research and a view of evolution from the perspective of mining repositories. Regarding class time, it was adequate for a graduate course, where it is required more individual and extra-class work from students. Reflecting about what could be better, they concluded that is necessary: (i) to increase the monitoring of the projects, setting some milestones during the execution phase; (ii) to assure the content coverage with more lectures and assuring that the seminars have appropriate depth; and (iii) to improve the use of tools, maybe by adopting tutorials. 5. Discussion In the beginning of this study, we discussed the relevance of the software evolution area. This fact was supported by our survey results, where all graduate students participating in this study that had already worked at industry used at least 50% from their work time with maintenance activities. Despite this involvement, 75% of the students changed their opinion about the importance of teaching software maintenance and evolution, only after studying it in our course. One possible cause for this lack of awareness could be the 49 relative lack of knowledge about the techniques to evolve or maintain software systems. Perhaps, this is because teaching maintenance in college, most of the times is focused on the maintenance process, prioritization and impact analysis. And, as we mentioned, lots of concepts, processes and techniques must be covered. Regarding computing curricula, starting with ACM recommendations, we noticed the absence of coverage of the subject in the IS Curriculum, regardless of the large number of legacy systems existing in companies that must be maintained. For the CS and CE Curricula, the minimum core coverage time specified only allows a shallow learning of concepts. To practice the techniques, extra time is needed. Considering the SBC and MEC recommendations and the relevance of the theme, from our point of view, the matter has been neglected. In practice, using three Brazilian universities as examples, we identified that, in present, the coverage of this area depends on faculty staff’s interests, even though this interest has increased in recent years. In our opinion, to introduce SME in the curriculum by a more traditional approach, there should exist one core course for SE and IS undergraduate programs, and one elective course for CS and CE programs. In a more revolutionary approach, following recently ideas [Rajlich 2013], the SE discipline could be introduced using a software evolution approach. Since SME covers important aspects of the software engineering area and corresponds to majority of activities which graduates will perform in their future jobs. 6. Conclusion In this study, we aimed to highlight the relevance of teaching and learning software evolution, so that universities can better prepare computing professionals to the challenges of industry of maintaining important software systems. Therefore, craft activities need to be replaced by proper methods. However, we noticed some failed coverage of SME in university-level, on the examples studied, possibly reflecting the importance found in curricula references. One solution would be raising faculty awareness about the relevance of evolving and maintaining a software system, activities as important as developing new systems from scratch, as it typically happens in most colleges and universities. Studies like this can help in this task. Teaching software maintenance and evolution is not an easy task, but there are some interesting initiatives that can be followed and adapted for different contexts. In this study, we reported our experience in teaching software evolution in a graduate course. The methodology used critical reviews, seminars and a practical project and was deemed satisfactory in this case. Beyond the adoption of the improvements suggested in the next graduate course, we are planning one undergraduate course that will be offered in the second term of the present academic year. The approach will be different, because, in this case, the practical project should reflect activities found in industry. References ACM and AIS (2010). IS 2010: Curriculum Guidelines for Undergraduate Degree Programs in Information Systems. ACM and IEEE (2004a). Computer Engineering 2004: Curriculum Guidelines for Undergraduate Degree Programs in Computer Engineering. 50 ACM and IEEE (2004b). Software Engineering 2004: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering. ACM and IEEE (2006). Computing Curricula 2005: The Overview Report. ACM and IEEE (2008a). Computer Science Curriculum 2008: An Interim Revision of CS 2001. ACM and IEEE (2008b). Information Technology 2008: Curriculum Guidelines for Undergraduate Degree Programs in Information Technology. El-Ramly, M. (2006). Experience in Teaching a Software Reengineering Course. In Proc. of the 28th Int. Conf. on Software engineering - ICSE ’06, page 699. IEEE (2013). SWEBOK V3 Review: Guide to the Software Engineering Body of Knowledge. iSSEc Project (2009). Graduate Software Engineering 2009: Curriculum Guidelines for Graduate Degree Programs in Software Engineering. Koskinen, J. (2011). Seminars on Software Maintenance and Evolution An Empirical Study of the Background Factors Affecting Student Success. McCartney, R., Gokhale, S. S., and Smith, T. M. (2012). Evaluating an Early Software Engineering Course with Projects and Tools from Open Source Software. In Proc. 9th International Computing Education Research - ICER ’12, page 5. MEC (2012). Parecer CNE/CES No :136/2012 - Diretrizes Curriculares Nacionais para os cursos de graduação em Computação. Mens, T., Wermelinger, M., Ducasse, S., Demeyer, S., Hirschfeld, R., and Jazayeri, M. (2005). Challenges in Software Evolution. In Proc. of 8th Int. Workshop on Principles of Software Evolution, page 10. Petrenko, M., Poshyvanyk, D., Rajlich, V., and Buchta, J. (2007). Teaching Software Evolution in Open Source. Computer, 40(11):25–31. Rajlich, V. (2013). Teaching Developer Skills in the First Software Engineering Course. In Proc. of the 35th Int. Conf. on Software engineering - ICSE 2013, page 8. SBC (2002). Currı́culo de Referência para Cursos de Licenciatura em Computação. SBC (2003). Currı́culo de Referência da SBC para Cursos de Bacharelado em Sistemas de Informação - Versão 2003. SBC (2005). Currı́culo de Referência para Cursos de Graduação em Bacharelado em Ciência da Computação e Engenharia da Computação. UEFS (2012). Resolução CONSEPE 206/2012. UFBA (2013). Departamento de Ciência da Computação - UFBA - Graduação. http://wiki.dcc.ufba.br/DCC/EnsinoGraduacao. UFS (2008). Resolução n. 50/2008/CONEPE. van Deursen, A., Favre, J.-M., Koschke, R., and Rilling, J. (2003). Experiences in Teaching Software Evolution and Program Comprehension. In Proc. Int. Symposium on Micromechatronics and Human Science - MHS2003., pages 283–284. 51 Tecnologia Social: A Influência das Empresas Juniores na Academia e na Indústria de Software Nadja N. Rodrigues Instituto Federal de Educação, Ciência e Tecnologia da Paraíba (IFPB) – Campus João Pessoa – PB – Brasil [email protected] Abstract. Understanding the influence of Junior Companies (JC) in computing education and technology centers foundation, especially in technologically disadvantaged regions, this article presents aspects of the project of creating a JC in the Hinterland of Paraíba. The main contributions of the project are the dissemination of EJ implantation, as academic and technical resources, the support for the professional training of students and the value added to these through the use of the best industry practices, as well as the generation of quality products at affordable costs to society. Resumo. Entendendo a influência das Empresas Juniores (EJ) no ensino de computação e na formação de pólos de tecnologia, especialmente em regiões tecnologicamente desfavorecidas, este artigo relata aspectos do projeto de criação de uma EJ no Sertão da Paraíba. As principais contribuições do projeto são a disseminação de implantação das EJ, enquanto recursos acadêmicos e técnicos, o apoio à formação profissional dos alunos e o valor agregado a estes, através do uso das boas práticas da indústria, além da geração de produtos de qualidade, a custos acessíveis, para a sociedade. 1. Introdução O Brasil tem passado, em especial nas últimas décadas, por inúmeras transformações econômicas, sociais, políticas e tecnológicas, o que tem provocado um repensar na sociedade, visando à definição de responsabilidades e a adoção de atitudes proativas perante as principais questões sociais [Novo e Melo 2003]. As Instituições de Ensino Superior (IES), em virtude de serem essencialmente baseadas em ensino, pesquisa e extensão, devem ser vistas como elementos imprescindíveis para definir as mudanças que devem ser promovidas no mundo. Pode-se afirmar que ao longo da história da humanidade, poucas instituições contribuíram tanto e de forma tão marcante no processo de construção do futuro como a universidade [Novo e Melo 2003]. Uma educação de qualidade é tema de constante debate na mídia. Mas quais são as medidas de ação que vinculam de melhor forma o aprendizado e a experiência [Maciel et al. 2007]? Reconhecendo que as mudanças do mundo globalizado estão cada vez mais profundas e velozes, as IES também vêm promovendo reflexões, com vistas ao encontro de alternativas, para que por meio de seus segmentos de ensino, pesquisa e extensão possam promover a construção de um futuro melhor, aliando produção e disseminação do conhecimento ao desenvolvimento da cidadania e melhoria da qualidade de vida da sociedade [Novo e Melo 2003]. Para Novo e Melo (2003), o estreitamento das relações entre a universidade e o setor produtivo surge da necessidade de criação de uma nova concepção de 52 universidade, a Universidade Empreendedora. Um exemplo são as EJ de Computação, especialmente aquelas inseridas em regiões tecnologicamente desfavorecidas. Em uma era onde as tecnologias e os sistemas movem o mundo, ainda existem lugares onde esses recursos são escassos, por sua inexistência, ou por preços elevados, muitas vezes fora dos padrões vividos pela comunidade. A ideia é que os alunos mudem esses cenários, com as EJ de tecnologia. Vivencia-se nas últimas décadas a evolução da tecnologia computacional e suas aplicações em vários setores da sociedade. A informação adquiriu importância econômica e a revolução tecnológica é um dos fatores para as transformações sociais, culturais, políticas e econômicas da atualidade [Vieira 2011]. Este trabalho retrata o projeto de criação e desenvolvimento da EJ do Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas (CSTADS) do IFPB – Cajazeiras. Este projeto se propôs a promover a inserção da EJ enquanto recurso acadêmico, para professores e alunos, e como referência empresarial, em uma região onde não existiam empresas de Análise e Desenvolvimento de Sistemas (ADS). A EJ se encaixou como instrumento para ensino aplicado, estágios, e se tornou a empresa de ADS da cidade, representando um estímulo à criação de pólos de tecnologia na região. Este artigo apresenta, na seção II, o referencial teórico do trabalho; na seção III, a metodologia; na seção IV, os resultados obtidos; na seção V, as considerações finais. 2. Referencial Teórico 2.1. Empresas Juniores: Laboratórios de Aprendizagem Prática A preocupação com a capacitação técnica dos egressos das IES está refletida nos esforços em agregar, à grade curricular dos cursos de graduação, atividades de extensão universitária, com o objetivo de desenvolver competências e proporcionar aprendizagem profissional aos acadêmicos. Através das teorias repassadas ao aluno, possibilita-se uma nova visão e atuação no processo produtivo das organizações e, principalmente, compreender e interagir com o meio em que vive [Dal Piva et al. 2006]. Criar espaços e oportunidades que resultem em melhor qualificação dos universitários deve ser iniciativa das instituições, dos professores e principalmente dos alunos [Pazzetto e Assad 2006]. Para Novo e Melo (2003), um meio de alunos interagirem com o mundo e que sustenta a criação e o desenvolvimento de empresas é a EJ. As EJ têm sido vistas como laboratórios de aprendizagem prática, e a dinâmica de praticar a teoria vista tem acontecido em tempo real [Pazzetto e Assad 2006]. A EJ é uma empresa de verdade, só que com alunos de perfil empreendedor ocupando os cargos hierárquicos de uma companhia, orientados por professores que assinam projetos de verdade, dando consultoria para pequenos e microempresários do mundo real [Maciel et al. 2007]. A prática de administrar uma empresa durante o curso de graduação desenvolve habilidades como responsabilidade, autoconfiança, iniciativa, criticidade, visão interdisciplinar e empreendedorismo [Pazzetto e Assad 2006]. Uma EJ representa um laboratório prático onde, diferentemente da maioria dos estágios convencionais, os alunos têm um alto grau de liberdade de pensar nos processos, e soluções criativas são construídas mais facilmente. Para Dal Piva et al. (2006), com a visão da teoria à prática, o acadêmico tem acesso às últimas tendências tecnológicas, observando as empresas. Com isso as organizações participam da formação prática dos alunos, permitindo o aumento do nível de competência dos acadêmicos envolvidos no 53 laboratório de aprendizagem. Aproximando o acadêmico da realidade das organizações, as empresas também melhoram seus arranjos produtivos. Maciel et al. (2007) explicam que as EJ objetivam ampliar o conhecimento acadêmico e técnico de seus colaboradores, por meio da elaboração de projetos que contribuam com o desenvolvimento socioeconômico da comunidade, além de estimular o espírito empreendedor de seus colaboradores, em especial dos discentes. 2.2. Empresas Juniores: Mecanismos de Integração com a Sociedade As IES estão se defrontando com inúmeras mudanças e estão inseridas em um espaço caracterizado como um ambiente de construção do conhecimento e da busca de como facilitar a integração entre academia e mundo empresarial [Dal Piva et al. 2006]. Para Romanó (2006), IES devem ampliar sua ação formadora em direção às necessidades do mundo empresarial, reduzindo a distância entre realidade das empresas e conhecimentos adquiridos em sala de aula. Para Cunha (1999), cabe à universidade se aproximar das empresas, identificar suas demandas e supri-las, contribuindo para o crescimento da empresa, da própria universidade e da sociedade. Novas necessidades estão surgindo e é preciso identificá-las e canalizá-las para as competências da universidade [Cunha 1999]. Uma vez que teoria e prática representam instrumentos para o desenvolvimento da sociedade, a parceria universidade-empresa apresenta-se como um investimento para crescimento mútuo. Empresas e universidades, diante da complexidade natural do processo de cooperação, criaram uma série de mecanismos que vêm permitindo ampliar e melhorar o entendimento e o fluxo entre as parcerias [Novo e Melo 2003]. Esses mecanismos permitiram maior fluidez nas relações com a sociedade, e um deles é a EJ. Para Flores e Flores (2009), na EJ o aluno tem a oportunidade do primeiro emprego, vivenciando as relações de trabalho, cumprimento de metas, trabalho em equipe, negociações de projetos, e o professor aplica conhecimentos teóricos em caso real e desenvolve pesquisas. Para Maciel et al. (2007), a IES pode disseminar seu nome e escalar o ranking do MEC. As EJ conseguem, com um custo relativamente baixo, desenvolver soluções muito similares às do mercado corporativo, utilizando as mesmas tecnologias e garantindo qualidade para os produtos desenvolvidos [Romanó 2006]. Para Oliveira (2013), a ideia da EJ contempla o tripé da universidade. Em relação ao ensino, as atividades são monitoradas e orientadas por docentes, que estabelecem uma relação continua de teoria e prática, através de consultorias e assessorias para as organizações; para realizar tanto a organização técnica como administrativa, os alunos deverão utilizar pesquisa e investigação contínua para constituição e desenvolvimento da EJ; em relação à extensão, sua principal missão é estender à região serviços especializados que contribuam para ações bem planejadas, em busca de resultados efetivos para construção de uma sociedade mais digna de se viver. 2.3. A Indústria de Análise e Desenvolvimento de Sistemas Assim como qualquer processo produtivo, o desenvolvimento de software necessita de sistematização [Rodrigues e Estrela 2012a]. Sommerville (2011) explica que a ES se preocupa com os aspectos da produção de software, desde os estágios iniciais até a manutenção. Os Processos de Desenvolvimento de Software (PDS) constituem o elo entre métodos e ferramentas, apresentando uma sequencia de atividades que leva a um produto de software [Rodrigues e Estrela 2012a]. 54 Os PDS se dividem em prescritivos (tradicionais), e não prescritivos (ágeis, tentam simplificar o PDS). Teles (2006) classifica os PDS como tradicionais (baseiamse no desenvolvimento em cascata) ou ágeis (iterativos e simplificados, em termos de esforços técnicos). Rodrigues e Estrela (2012a) explicam que cada modelo tem suas características definidas de acordo com cenários indicados para sua aplicação, podendo ser utilizados por completo, ou vistos como frameworks para a definição de novos PDS. A indústria apresenta diversos modelos de PDS, e à medida que esses são instanciados, novos modelos surgem pela necessidade de adaptação das suas práticas aos novos cenários de desenvolvimento [Rodrigues e Estrela 2012b]. Além dos PDS, outros conhecimentos e boas práticas em ES têm contribuído para o refinamento da construção de softwares. Neste conjunto de recursos, alguns têm sido vistos como referência, na indústria ou na academia: Project Management Body of Knowledge (PMBoK) - conjunto de técnicas, métodos e processos que apoia o gerenciamento de projetos sob a ótica de várias áreas de conhecimento [PMBoK 2013]; Scrum - framework que pode empregar diversos processos e técnicas e usa uma abordagem iterativa e incremental, otimizando previsão e controle dos riscos [Schwaber 2004]; Rational Unified Process (RUP) - processo que apoia a iteração, ilustra boas práticas e fornece abordagem disciplinada para tarefas, cobrindo o ciclo de vida inteiro do desenvolvimento de software [Kruchten 2003]; eXtreme Programming (XP) - o XP é incremental, composto por valores e boas práticas [Teles 2006], como Cliente Presente, Programação em Par e Releases Curtos; XP1 [XP1 2013] e easY Process (YP)[Garcia et al. 2004] - exemplos de PDS ágeis utilizados em ambientes universitários. 3. Metodologia Quanto aos objetivos, a pesquisa realizada é exploratória- descritiva, no que se refere aos seus aspectos de investigação: como criar e desenvolver uma EJ; como preparar tecnicamente esta EJ para trabalhar com desenvolvimento de software; como derivar desta EJ recursos para ensino prático de Computação, especialmente em Engenharia de Software Aplicada (ESA). Quanto aos procedimentos técnicos, a pesquisa é bibliográfica, fazendo um apanhado teórico acerca dos principais conceitos das EJ, dos cenários de desenvolvimento e boas práticas da indústria de software. Além disso, a pesquisa contempla aspectos relacionados à observação na EJ e investigação documental, como dados quantitativos sobre recursos da empresa (pessoas, projetos, propostas) e qualitativos sobre projetos (especificações técnicas, por exemplo). 4. Resultados e Análises 4.1. Criação e desenvolvimento da Empresa Júnior Para que uma EJ seja criada e desenvolvida, devem ser executados passos burocráticos como registro no Cadastro Nacional de Pessoas Jurídicas (CNPJ), definição de produtos, prospecção de mercado, entre outros. Nessa etapa, os alunos mantiveram contato com agentes do cenário empresarial (como PB Júnior e Brasil Júnior), desenvolvendo teoria e prática referentes aos conhecimentos e habilidades em empreendedorismo, gestão e negócio, e obtendo desenvolvimento técnico e interpessoal. O desenvolvimento da EJ vem se dando através da sua integração ao Movimento de Empresas Juniores (MEJ), na busca de conhecimento, e ainda da orientação dos professores no desenvolvimento das rotinas organizacionais e dos projetos técnicos. A equipe inicial da EJ foi composta por 55 dezessete alunos e uma professora de ADS. Com o tempo, ficaram mais evidentes os aspectos multidisciplinares do projeto e o quadro de consultores da EJ passou a ter um professor de Administração e três ligados a subáreas diferentes de ADS. 4.2. Preparação técnica para a área de Análise e Desenvolvimento de Sistemas Referente à preparação técnica da EJ, os alunos avaliaram recursos da indústria e da academia, suas características e seus contextos de aplicação, de forma a definir um PDS próprio para a EJ, baseado nas boas práticas da ES e adequado à realidade dos seus projetos. Através da revisão bibliográfica, esses alunos puderam perceber que os cenários prescritivos se mostraram complexos, recomendando o uso de muitos elementos (atividades, papéis e artefatos) e de vários relacionamentos entre eles. Por outro lado, esses cenários apresentaram-se mais cautelosos com relação ao desenvolvimento de sistemas. Os cenários ágeis se mostraram mais simples, apresentando apenas o que consideraram imprescindível para os projetos. As escolhas dos elementos do PDS buscaram adaptá-lo às particularidades da EJ: alta rotatividade; a equipe não tem o mesmo horário e não dispõe de 8h diárias de trabalho. Nesse contexto foi criado o Simple Way Process (SWP) [Rodrigues e Estrela 2012b], um PDS que sugere o desenvolvimento iterativo e incremental, visando obter feedback e poder fazer entregas rápidas de releases. O SWP sugere os papéis de gerente de projetos, líderes de grupo, analista, desenvolvedor, testador e cliente. Papéis diversificados viabilizam a entrada de alunos dos primeiros aos últimos semestres, proporcionando diferentes contribuições à EJ, e ao desenvolvimento de cada aluno. O SWP sugere tanto práticas prescritivas como ágeis, visando acomodá-las às necessidades da EJ, como exemplo, ter que manter registros dos projetos bem documentados, em virtude da alta rotatividade da equipe. Por outro lado, a necessidade de entregas rápidas é incompatível com um processo complexo. O SWP tenta equilibrar esses aspectos. O SWP envolve atividades referentes às disciplinas Modelagem de Negócio, Requisitos, Análise e Projeto, Implementação, Testes, Implantação, Gerência de Projetos, Gerência de Mudanças e Ambiente. O SWP sugere a execução do processo no tempo e define procedimentos (orientações para atividades), templates (modelos de artefatos) e ferramentas (sugeridas para o PDS), de forma a apoiar a sua sistematização. Para apoiar a execução dos projetos, os alunos criaram um ambiente na web (site) para usuários autorizados, com estrutura de navegação simples, beneficiando usuários iniciais e apresentando os elementos do SWP, a partir das seguintes páginas: “O que...”, (atividades); “Quem...” (papéis); “Quando...” (atividades no tempo); “Como...” (com links para subpáginas “Procedimentos”, “Templates” e “Ferramentas”). O SWP trouxe mais sistematização à EJ. O trabalho técnico, antes apoiado pelo XP1 e ajustado com dificuldade (pela simplificação de papéis, carência de templates adequados e falta de padronização de ferramentas e procedimentos), passou a ser guiado pelo SWP, tendo os papéis e elementos necessários para a execução do projeto. Para dar início às atividades da EJ e testar infraestrutura, PDS e habilidades técnicas dos alunos, foram desenvolvidos dois projetos pilotos (Sistema Bibliotecário e Sistema de Refeitório - demandas internas do Campus). Através de análise do mercado percebeu-se que algumas demandas de software na região estariam relacionadas a tecnologias que não constavam nos planos de ensino do CSTADS. Neste caso, treinamento dos alunos e acompanhamento dos projetos foram realizados por consultores com expertise técnica. 56 4.3. Empresa Júnior enquanto recurso acadêmico A EJ favoreceu a prática de atividades ligadas ao ensino, pesquisa e extensão. Em relação à pesquisa, os alunos puderam se envolver em projetos voltados à resolução de problemas práticos. Os alunos se envolveram na definição do SWP, e assim puderam conhecer diversas teorias e práticas da ES ligadas à academia e à indústria, e analisá-las de forma crítica, conforme citado anteriormente. Um segundo projeto, referente à melhoria de processos de software em pequenas empresas está em andamento e prevê a realização de um estudo de caso na EJ para validação dos seus produtos. Espera-se que as demandas da EJ continuem a estimular a investigação contínua junto aos alunos. Quanto ao ensino, a EJ apoiou a redefinição de metodologias, especialmente para as disciplinas ESA e Estágio Supervisionado [Rodrigues e Estrela 2012a], favorecendo a aplicação de práticas espelhadas nas rotinas técnicas do SWP e com base no seu ambiente. Alguns projetos da disciplina foram subprojetos reais da EJ. Na execução dos projetos, os alunos, integrantes da EJ ou não, puderam imergir nesta e viver a rotina de trabalho em uma empresa de ADS, desenvolvendo projetos em grupo, compartilhando conhecimento e respeitando o rodízio entre papéis, atividades e artefatos do SWP, para que pudessem se familiarizar com as diversas etapas da construção de software. Os alunos de estágio também fizeram uso do SWP e do seu ambiente. Durante o estágio, os alunos receberam parte do escopo de um projeto real e para este passaram pelas disciplinas do SWP. A execução dos projetos nas aulas e no estágio foi orientada por docentes, visando estabelecer relação continua de teoria vista em academia e prática da indústria, ambas cooperando para melhoria contínua de seus alicerces. Uma metodologia direcionada ao ensino de Qualidade de Software [Rodrigues 2013] também foi definida com base no SWP e testada nas aulas de ESA. Em relação à extensão, a EJ oferece à comunidade, especialmente, sistemas de software, trabalhando com tecnologias da indústria, de acordo com as demandas dos clientes. Antes de fechar contratos externos, conforme explicado, a EJ desenvolveu projetos para o Campus, visando testar e afinar recursos e diretrizes de trabalho, preparando-se para demandas externas. Esses projetos se encontram em produção, com demandas de manutenção referentes à sua evolução. A EJ já respondeu a diversos pedidos de propostas para desenvolvimento de sistemas e em 2012 a empresa entregou seu primeiro projeto externo, um Sistema de Gerenciamento de Conteúdo de Maçonaria. Os benefícios multilaterais promovidos a partir da parceria entre EJ e seus stakeholders podem ser acompanhados de forma quantitativa. Indicadores da parceria com a IES, referentes a ensino, pesquisa e extensão, podem ser vistos na Tabela 1. Tabela 1 – Indicadores referentes a ações de ensino, pesquisa e extensão Indicador Coleta de Dados Número de projetos de pesquisa do CSTADS desenvolvidos a partir da EJ = 3 Dados quantitativos referentes aos projetos desenvolvidos entre 2010 e 2012. Número de projetos de extensão do CSTADS desenvolvidos a partir da EJ = 1 Dados quantitativos referentes aos projetos desenvolvidos entre 2010 e 2012. Número de instrumentos voltados ao ensino e desenvolvidos a partir da EJ = 3 (2 metodologias de ensino; 1 ambientes de apoio ao ensino) Dados quantitativos referentes às turmas 2011.1, 2011.2 e 2012.1. Número de disciplinas envolvidas diretamente com as atividades da EJ = 2 (ESA e Estágio) Dados quantitativos referentes às turmas 2011.1, 2011.2 e 2012.1. 57 Número de alunos que utilizaram o SWP (e seu ambiente) nas aulas de ESA = 42 Dados quantitativos referentes às turmas 2010.2, 2011.1, 2011.2, 2012.1. Número de alunos que realizaram o estágio na EJ = 8 Dados quantitativos de Estágio Supervisionado–CSTADS Número de projetos desenvolvidos no estágio na EJ=2 Dados quantitativos referentes às turmas 2011.1 e 2011.2. % de alunos que fizeram o estágio supervisionado na EJ e baseado no SWP = 100% Dados quantitativos referentes às turmas 2011.1 e 2011.2. Indicadores de resultados ligados aos benefícios voltados à EJ, e promovidos a partir da parceria entre esta empresa e a IES, podem ser vistos na Tabela 2: Tabela 2 – Indicadores referentes ao desenvolvimento da EJ Coleta de Dados Indicador Número de produtos (projetos de software) da EJ gerados com o apoio do SWP = 3 Dados quantitativos referentes aos desenvolvidos na EJ, entre 2010 e 2012. projetos % de projetos da EJ gerados com o apoio do SWP = 100% Dados quantitativos referentes aos desenvolvidos na EJ, entre 2010 e 2012. projetos Número de integrantes da EJ que se basearam no SWP para a geração dos seus projetos = 22 Dados quantitativos referentes aos alunos envolvidos em projetos da EJ, entre 2010 e 2012. % de integrantes da EJ que se basearam no SWP para a geração dos seus projetos = 100% Dados quantitativos referentes aos alunos envolvidos em projetos da EJ, entre 2010 e 2012. Número de produtos (projetos de software) da EJ gerados a partir do Estágio Supervisionado = 2 Dados quantitativos referentes às turmas 2011.1 e 2011.2. % de produtos (projetos de software) da EJ gerados a partir do Estágio Supervisionado = 66,7% Dados quantitativos referentes às turmas 2011.1 e 2011.2. Número de consultores (professores do CSTADS) que apoiam diretamente as atividades da EJ = 4 Dados quantitativos referentes ao ano 2012. Número de solicitações de propostas da comunidade externa para novos projetos: 09 (aproximadamente) Dados quantitativos referentes às solicitações de propostas recebidas pela EJ, entre 2010 e 2012. Referente às dificuldades para implantação da EJ, um dos problemas foi a falta de conhecimento em gestão organizacional pela equipe (alunos e professores), inicialmente, uma vez que os integrantes eram da área de Informática. Percebida essa fragilidade, convidou-se uma professora de Administração para compor o grupo de consultores, que passou a ser multidisciplinar. Para a geração dos projetos da EJ, o problema percebido foi o receio de integrar a empresa, nos alunos dos últimos semestres do curso, em virtude da alta carga de projetos das disciplinas nesses semestres. Visando mitigar esse problema, buscou-se o envolvimento dos demais professores e do coordenador do curso com a EJ, no sentido de que projetos desta fossem direcionados às disciplinas, quando possível. 5. Considerações Finais Este artigo pretendeu mostrar a importância das EJ, especialmente em localidades onde as tecnologias ainda são emergentes. O projeto vislumbrou a EJ sob dois aspectos: enquanto recurso acadêmico, favorecendo o apoio à formação profissional dos alunos, e o valor agregado a estes, através do uso das boas práticas da indústria; enquanto recurso técnico, viabilizando a geração de produtos de qualidade, a custos acessíveis, para a sociedade. Para mostrar a viabilidade desses cenários, foi apresentada a criação da EJ do CSTADS, sua preparação técnica e estratégias associadas a ensino, pesquisa e extensão,baseadas nesta EJ. Associados à EJ vieram diversos resultados diretos, como a preparação desta empresa para a indústria de software, o contato dos alunos com o conhecimento técnico e 58 em gestão organizacional, além dos sistemas de informação entregues e em produção. Referente às atividades de ensino, pesquisa e extensão, a EJ viabilizou o desenvolvimento de ações integradas no tripé das IES, a partir de demandas da empresa. Essas ações referenciam projetos de pesquisa e extensão desenvolvidos, e instrumentos de ensino (como metodologias e ambiente) aplicados com foco na prática a partir de recursos da EJ (inclusive projetos reais). Ainda podem ser citados resultados indiretos associados à EJ, como incentivo ao perfil empreendedor dos alunos, que recentemente aprovaram projeto em edital para incubar uma empresa em ADS na cidade. A EJ proporcionou a oportunidade de integrar a indústria a vários alunos, obtendo valorização profissional. A cidade ganhou uma empresa especializada em ADS com produtos de qualidade, a preços acessíveis. Como trabalho futuro espera-se criar um projeto multidisciplinar para avaliar o envolvimento direto das demais disciplinas do CSTADS com a EJ, de forma a ampliar o escopo das ações de ensino, pesquisa e extensão relacionadas a esta empresa. Referências Cunha, N. C. V. (1999). Mecanismos de Interação Universidade-Empresa e seus Agentes. REAd: Revista Eletrônica de Administração, UFRGS, Ed. 09, v. 5, n. 1, mar./abr. 1999. Dal Piva, A. R. et al. (2006). “Empresa Júnior: Um Laboratório de Aprendizagem como Diferencial para a Formação Acadêmica”. Anais do XIII Simpep, Bauru - SP, 2006. Flores,L., Flores,R.(2009).Empresa Júnior Elemento da Cooperação Empresa–Universidade. IX Colóquio Internacional sobre Gestão Universitária na América do Sul,Florianópolis-SC, 2009. Garcia, F. P. et al. (2004). easYProcess: Um Processo de Desenvolvimento para Uso no Ambiente Acadêmico. XII WEI, XXIV CSBC, Salvador - BA, 2004. Kruchten, P. (2003). Introdução ao RUP: Rational Unified Process, Ciência Moderna. Maciel, M. M. et al. (2007). Do Conhecimento Acadêmico às Práticas Empresarias: O Caso da Empresa Júnior de Administração da UFPB. Anais do IX Enex, UFPB, 2007. Novo, L. F., Melo, P. A. (2003). Universidade Empreendedora. III Conferência Internacional sobre Gestão Universitária na América do Sul. Buenos Aires, Argentina, 2003. Oliveira, E. M. (2013). Empreendedorismo Social e Empresa Júnior no Brasil. FAE Centro Universitário.http://www.fae.edu/publicacoes/pdf/iiseminario/politicas/politicas_04.pdf.Abril. Pazzetto, V., Assad R. (2006). Empresa Júnior - Realidade Cada Vez Mais Presente na Vida Acadêmica. Gestão:Revista Científica de Administração e SI,Curitiba, v.7, n.7,jul./dez 2006. PMBok (2013). Project Management Body of Knowledge. PMBoK GUIDE. Rodrigues, N. N. (2013). “Praticando Qualidade de Software: Ensinando e Aprendendo seus Valores através de Ambiente Real”. IX SBSI, João Pessoa - PB, 2013. Rodrigues, N. N., Estrela, N. (2012a). “Simple Way: Ensino e Aprendizagem de Engenharia de Software Aplicada através de Ambiente e Projetos Reais”. VIII SBSI, São Paulo – SP, 2012. Rodrigues, N. N., Estrela, N. (2012b). “SimpleWayProcess: Da Academia à Indústria de Software”. XXXII CSBC. XX WEI. Curitiba – PR, 2012. Romanó, R. S. (2006). Empresa Júnior no Curso de Sistemas de Informação da Faculdade Expoente. Gestão: Revista Científica de Administração e SI, Curitiba, v.7, n7, jul./dez. 2006. Schwaber, K. (2004). Agile Project Management with Scrum,. Microsoft Press. Sommerville, I (2011). Engenharia de Software, 8ª ed.SP: Pearson. Teles, V. M. (2006). Extreme Programming: aprenda como encantar seus usuários desenvolvendo software com alta qualidade, SP: Novatec. Vieira, M. F. (2011). 25 ANOS DE INFORMÁTICA NA EDUCAÇÃO BRASILEIRA: avanços e retrocessos. Anais do XXII SBIE - XVII WIE, Aracajú - SE, 2011. XP1 (2013). “XP1: Um Processo de Desenvolvimento”. http://dsc.ufcg.edu.br/~jacques/projetos/common/xp1/xp1.html. Março. 59 Uma Experiência de Integração de Design Thinking e Metodologias Ágeis para o Desenvolvimento de Software Cleidson R. B. de Souza, Mylena R. Ferreira, Fagner L. Pantoja, Mayara Figueiredo Universidade Federal do Pará (UFPA) Belém – PA – Brasil [email protected], [email protected], [email protected], [email protected] Resumo. Este artigo apresenta uma experiência no ensino de engenharia de software através de uma proposta de integração de técnicas de Design Thinking com Metodologias Ágeis. Esta experiência foi conduzida com alunos de Bacharelado em Ciência da Computação cursando uma disciplina de Engenharia de Software visando avaliar a proposta desenvolvida, e, principalmente, a melhoria da qualidade dos sistemas desenvolvidos pelos alunos. 1. Introdução Metodologias Ágeis (MA) surgiram como uma resposta às metodologias tradicionais prescritivas e baseadas em planos. Elas procuram acelerar a produção de software, porém possuem técnicas limitadas para extração dos desejos e necessidades do cliente para elaboração do produto [Hildenbrand e Meyer 2012]. Com isso, Design Thinking (DT) [Brown, 2008], ao dispor de técnicas para elaboração de ideias e busca por insights, pode ser uma alternativa para preencher esta lacuna das Metodologias Ágeis. Em contrapartida, as Metodologias Ágeis podem se apresentar como uma ferramenta de complementação para implementar as ideias obtidas pelo processo de ideação e inovação geradas durante o processo de Design Thinking. Em resumo, a integração destas duas abordagens visa o complemento mútuo de ambas a fim de estruturarmos um processo de desenvolvimento de software, focado primeiramente nas técnicas e ferramentas do Design Thinking e gradualmente redirecionando para as Metodologias Ágeis. Este artigo apresenta brevemente a proposta de integração que está em desenvolvimento pelos autores e detalha como a mesma foi avaliada com alunos de graduação em ciência da computação durante o primeiro semestre de 2012. 2. Design Thinking O termo design possui o estereótipo de se referir apenas à estética, contudo a essência original do design é transformar a situação existentente em algo melhor, analisando sua concepção, propósito e funcionalidade [Brown, 2008 e 2009]. Steve Jobs descreve o design da seguinte forma: “Design não é somente o que se vê ou o que se sente. Design é também como funciona” [Isacson, 2011]. Ao alicerçar o design à gestão e análise, ou seja, aliar a inovação com a divisão de tarefas e funções tem-se como resultado um produto ou serviço de alto valor para o público alvo, algo que seja desejável, além de ser uma necessidade [Pinheiro e Alt 2011]. 60 Deste modo, o Design Thinking propõe uma forma diferente de lidar com problemas e de propor soluções para resolvê-los. A DT tem como característica principal o foco diferenciado na relação entre pessoas, desde a forma de coleta de dados, passando pela relação com a equipe de desenvolvimento, até a prototipação. É uma abordagem que pode ser implantada na coleta de requisitos e criação de ideias, pois enfatiza o estímulo à criatividade. Empatia, colaboração e curiosidade são características-chave para o sucesso no Design Thinking. Desta forma, é possível solucionar problemas, reduzir chances de fracasso, além de deixar o produto/serviço mais desejável ao cliente, bonito e mais planejado [Pinheiro e Alt 2011]. Essa forma diferenciada de lidar com situações pode ser melhor entendida e aplicada se forem analisados os quatro pilares do DT: (1) a empatia, para compreender o público; (2) a colaboração, entre a equipe de trabalho no desenvolvimento de ideias; (3) a prototipação, quando estas ideias são testadas; e a (4) realização ou implementação, na qual a equipe trabalhará diretamente no desenvolvimento do produto [Brown, 2008 e 2009]. Os dois primeiros pilares são também referenciados como imersão e ideação respectivamente, pois a empatia faz com que a equipe seja inserida no universo do cliente (como em uma imersão), e a colaboração suscita criação de ideias (daí o termo “ideação”). Estas são justamente as duas etapas mais importantes e que podem ser integradas aos métodos ágeis de desenvolvimento de software visando minimizar as formas limitadas de extração dos desejos e necessidades do cliente para elaboração do produto que existem nos métodos ágeis [Hildenbrand e Meyer 2012]. 3. Integração entre Design Thinking e Metodologias Ágeis Técnicas que tem por objetivo extrair as necessidades do usuário para transformá-las em requisitos para o produto são pouco exploradas pelo desenvolvimento de software [Hildenbrand e Meyer 2012]. Por outro lado, Design Thinking tem sua ênfase justamente na organização dos insights e ideias para a criação de produtos. Nesse sentido, DT pode ser um apoio ao desenvolvimento de software, mais especificamente no contexto de métodos ágeis. Sendo assim, visando uma maior integração entre essas duas abordagens, algumas das ferramentas do DT foram selecionadas para integrar o pensamento criativo à exigência industrial de prazos e qualidade embutida, que é uma das necessidades que as Metodologias Ágeis buscam suprir. Ao mesmo tempo, algumas práticas de MA foram selecionadas para viabilizar a fase de realização do DT. Para ser mais especifico, a proposta de integração prevê a utilização de ferramentas de Design Thinking no processo inicial de desenvolvimento de software e ferramentas dos métodos ágeis são usadas na etapa de “implementação” de Design Thinking. Esta integração é relativamente simples dado o caráter iterativo de ambas as abordagens. As ferramentas de DT selecionadas são: pesquisa exploratória, personas, shadowing e prototipação em papel; enquanto que as “ferramentas” de MA são o quadro kanban e desenvolvimento incremental. Esta integração está representada na Figura 1 abaixo. Infelizmente, por questões de espaço estes conceitos não podem ser definidos neste artigo. Mais detalhes podem ser encontrados em [Ferreira et. al, 2013]. Durante as etapas de imersão e ideação ideias são coletadas, organizadas e selecionadas como possíveis requisitos para o software. Isto é feito através de técnicas como shadowing – que consiste na observação dos usuários, atuais ou futuros, de um sistema de software para entender os problemas que os mesmos enfrentam – a pesquisa exploratória – que visa definir os perfis estatísticos destes usuários (sexo, idade, poder 61 aquisitivo, grau de educação, etc) – e as personas que são usuários prototípicos de um sistema de software. Cada um destes passos informa ao próximo, por exemplo, as personas são definidas somente após a pesquisa exploratória cujos resultados são usados para informar o número de personas e as características das mesmas. Posteriormente, é necessário apresentar estas ideias ao cliente, que irá verificar se estas ideias estão de acordo com suas necessidades, bem como validar a implementação delas. Para essa validação do produto pelo cliente é proposta a técnica da prototipação em papel, que instancia fisicamente as ideias coletadas durante as fases de ideação. A seleção das ideias que darão origem a protótipos é feita levando em consideração questões como relevância dentro do projeto e complexidade. Figura 1. Representação esquemática da integração entre MA e DT. A prototipação em papel apresenta pontos positivos à equipe responsável pela implementação do software na medida em que, ao projetar os protótipos, as ideias começam a tonar-se mais claras, familiarizando a equipe com o produto que será desenvolvido. A justificativa pela escolha da prototipação em papel se dá pelo fato desta demandar um tempo relativamente pequeno se comparado a outras formas de validação, como por exemplo, a prototipação em formato digital ou a codificação de telas não funcionais. Por outro lado, a prototipação em papel também é interessante para o cliente, pois ao interagir com o protótipo ele pode avaliá-lo, o que pode gerar insumos para evolução e aperfeiçoamento do produto assim como gerar novas ideias. Os protótipos são elaborados para os itens presentes no mapa conceitual que apresentem alta complexidade e/ou são itens de alto valor para o produto. Depois de prontos, os protótipos são levados para os usuários do sistema e/ou cliente validarem, se o protótipo receber aprovação ele será um item a ser adicionado ao product backlog. Caso o protótipo seja reprovado na validação, a equipe deve corrigir os erros encontrados e submetê-lo a uma nova validação. Como o processo de desenvolvimento ágil é essencialmente iterativo, é de se esperar que nem todos os requisitos estejam ainda claramente definidos e, assim, alguns protótipos em papel sejam reprovados. Assim, a prototipação pode ser uma atividade realizada não somente antes da elaboração do product backlog, mas também em qualquer momento que uma nova ideia surgir, mesmo que o processo de implementação do produto já tenha sido iniciado, inclusive a elaboração e validação deste protótipo podem ser consideradas como tarefas a serem realizadas dentro do sprint. Dessa maneira, a prototipação em papel pode também servir como uma técnica que vai validar 62 os itens que entrarão na próxima iteração do desenvolvimento. 4. Avaliação da Proposta de Integração Durante o primeiro semestre de 2012, a proposta de integração acima foi apresentada a uma turma de 16 alunos de graduação em Ciência da Computação da Universidade Federal do Pará. Os alunos estavam formalmente matriculados na disciplina Laboratório de Engenharia de Software com carga horaria de 90 h semestrais. Esta disciplina é ofertada após duas disciplinas (Engenharia de Software I e II), cada uma com 60 horas onde os conceitos básicos e teóricos de engenharia de software são apresentados. Desta forma, esta disciplina mostrava-se adequada à realização da avaliação da proposta de integração apresentada na seção anterior. Os alunos foram divididos em 4 equipes de 4 alunos e, durante um semestre letivo, desenvolveram 4 sistemas computacionais diferentes definidos por eles mesmos. Aproximadamente a primeira metade do semestre foi dedicada às técnicas de Design Thinking enquanto que a segunda metade foi dedicada ao desenvolvimento ágil. Os alunos tiveram aulas presenciais sobre cada um dos assuntos vistos em sala de aula com especialistas nos tópicos abordados. Após cada aula, os alunos eram responsáveis pela realização das atividades associadas ao tópico abordado dentro e/ou fora de sala de aula. Ao final das atividades, os alunos apresentavam os resultados obtidos sendo que eram sempre orientados para enfatizar como as atividades realizadas informaram o design do seu sistema computacional. Por exemplo, os alunos apresentavam o protótipo em papel inicialmente desenvolvido e depois o protótipo modificado após a apresentação deste protótipo aos usuários finais. A ideia era fazer com que eles refletissem e avaliassem como cada tópico abordado produzia resultados significativos e importantes para o sistema em desenvolvimento. É importante mencionar, que os alunos executaram diversas etapas do processo descrito na seção anterior, a saber: pesquisa exploratória, shadowing, personas, prototipação em papel, entre outras1. Uma das preocupações dos autores era a reação dos alunos às técnicas apresentadas, visto que as mesmas não são tradicionalmente vistas em cursos de ciência da computação. Pôde-se observar que este não foi um problema, visto que os alunos foram capazes de discutir o valor de cada nova técnica em suas apresentações da disciplina. Ao final do semestre, um questionário foi entregue aos alunos visando obter a opinião dos mesmos, de maneira anônima, sobre a disciplina. A análise dos mesmos sugere que o resultado foi positivo, pois as técnicas ensinadas mostraram-se úteis aos alunos. De fato, dos 4 grupos da disciplinas, dois deles deram continuidade aos seus projetos: um grupo pretende abrir uma empresa para comercializar o produto desenvolvido, enquanto que o outro ainda está explorando possíveis modelos de negócio para o projeto desenvolvido. É importante ressaltar que os autores reconhecem as limitações desta primeira avaliação desenvolvida, visto que a mesma não foi rigorosa. Justamente por isto, o titulo deste artigo enfatiza apenas a descrição de uma experiência. Pretende-se resolver estas limitações nas próximas turmas da disciplina, conforme descrito na próxima seção. 1 Devido a limites de tempo, não foi possível apresentar todas as etapas propostas neste trabalho. 63 5. Conclusões e Trabalhos Futuros Este artigo apresentou brevemente uma proposta de integração de técnicas de Design Thinking com técnicas provenientes das Metodologias Ágeis. O motivo para tal integração é o apoio limitado às técnicas que visam entender as necessidades dos usuários existentes na engenharia de software [Hildenbrand e Meyer 2012]. A integração proposta pelos autores foi desenvolvida e apresentada em uma disciplina para alunos de graduação em ciência da computação da Universidade Federal do Pará. O resultado da disciplina foi bastante positivo, visto que os alunos avaliaram a disciplina e a experiência de utilização das técnicas de Design Thinking de maneira bastante positiva. Durante o primeiro semestre de 2013, esta disciplina está sendo ofertada para uma nova turma de alunos. Neste caso, entrevistas com os alunos têm sido realizadas de maneira periódica visando entender em mais detalhes como esta integração pode ser positiva para o ensino da engenharia de software. Além disso, pretende-se apresentar todas as etapas da proposta para se obter uma avaliação mais adequada. Agradecimentos Este trabalho tem apoio financeiro do CNPq através de uma bolsa de iniciação científica a segunda autora. Referências Brown, T. 2008. “Design Thinking.” Harvard Business Review, June: 84-92. Brown. T. 2009. Change by Design: How Design Thinking Transforms Organization and Inspires Knnovation. New York: Harper Collins. Cohn, M. (2011). “Desenvolvimento de software com scrum – Aplicando métodos ágeis com sucesso.”, Editora Bookman. Ferreira, M., Pantoja, F., Figueireido, M., de Souza, C. R. B. Integração de Design Thinking e Metodologias Ágeis para o Desenvolvimento de Software, Relatório de Atividades, Programa de Bolsas de Iniciação Cientifica PIBIC-CNPq, Universidade Federal do Pará, 2013. Hildenbrand, T., Meyer, J. (2012). “Intertwining Lean and Design Thinking: Software Product Development from Empathy to Shipment”. Software for People, Management for Professionals, 217 DOI 10.1007/978-3-642-31371-4_13, # Springer-Verlag, 2012 Isaacson, W. (2011) “Steves Jobs – A biografia”, Companhia das Letras, Brasil. Pinheiro, T. Alt, L. (2012), “Design Thinking Brasil: empatia, colaboração e experimentação para pessoas, negócios e sociedade”, Elsevier, 1ª edição. 64