4 research outputs found
Recommended from our members
Investigating Remote Pair Programming In Part-Time Distance Education
Pair programming promotes immediate, informal collaboration over coding activities. The driving developer writes the code and controls the keyboard and mouse; the navigating developer checks the code as it is written by the driver; the developers swap their roles frequently. In agile development, programmers often code in pairs, in order to detect errors faster, produce higher code quality and discover better solutions.There is substantial research providing evidence of enhanced self-confidence and programming and communication skills if pair programming is used in teaching. However, the use of pair programming in higher education is mostly in co-located settings at campus-based universities. Our overall objective is to investigate how the benefits of pair programming can be brought to students learning to program online at a distance.This paper presents two initial studies looking at remote pair programming (RPP) also called distributed pair programming, in a part-time distance education setting, where students typically follow an unscheduled self-study style, have little interaction with each other, and have little time for extra activities. We investigated: whether readily available generic communication tools, instead of purpose-built academic prototypes, were sufficient for RPP; whether student pairs ‘jelled’ (learned to function well together) quickly; whether the ways in which the partners interact, or existing programming experience, affected jelling; and whether students felt positive about, and saw benefits in RPP, despite the overhead on their limited study time.In the paper, after describing particular challenges encountered, we present and discuss our findings and make recommendations for future implementation. The findings support the use of remote pair programming in teaching, with the majority of students considering it to be beneficial
Recommended from our members
Evaluating the Impact of Live Programming on Collaborative Software Development
Collaboration is tricky, but often beneficial in the context of numerous software related activities, from learning core concepts, to the design and implementation of large software products. The growth of online classes, from small structured seminars to massive open online courses (MOOCs), and the isolation and impoverished learning experience some students report in these, points to an urgent need for tools that support remote pair programming in a distributed educational setting. In “the real world” software developers and designers work together to solve common problems, and meaningful and effective designer-developer collaboration improves the user experience. Supporting these with today’s often distributed work model presents important challenges.Two key techniques which are believed to be effective in promoting better coordination and collaboration are collaborative coding and live programming. Collaborative coding allows all the team members to get involved in the development process, and live programming enables them to see what they are building effortlessly and in real time.In this work, we first describe Jimbo, an integrated development environment (IDE) based on collaborative and live programming techniques, and a set of user studies aimed at evaluating whether these techniques are effective in promoting better coordination and collaboration in two different settings; distance learning and design-focused software development. Our results show that these techniques can improve the learning experience through pair programming and a tight code-artifact feedback loop. We will show how collaborative coding and live programming can help designers and developers bridge their knowledge and language gaps and develop mutual understanding, allowing designers to join the development process as first-class citizens – not dependent on the coders to compile and share output – or being forced to become coders.Keywords: pair programming, collaborative learning, collaboration, educational tools, live programming, remote pair-programming, programming environment, MOOC, IDE, distance learning, designer-developer collaboration, collaborative software developmen
Live Collaboration in App Development
Real-time collaborative editing systems are increasing in popularity, having moved
from document editing software to the world of software development. Live collaboration
(or real-time collaboration) refers to a synchronous cooperation mechanism, allowing for
concurrent changes to be made to the same object by multiple individuals. In recent
years, many traditional software development tools have started to incorporate live collaboration.
The motivation behind this fast expansion comes from a series of specific use
cases propelled even more by the current COVID-19 pandemic, which forces people to
stay at home and work in a remote manner. This hinders the possibilities for cooperation
between team members during the development of a software project. In this work, we
address this problem in the context of the OutSystems low-code platform, and we aim
to determine how collaborative features, including real-time collaboration, can be implemented
in OutSystems tools to enhance its collaborative experience for users developing
applications. In this context, collaboration is defined as the processes and actions that
take place between people during software development projects with the OutSystems
platform, when trying to execute their work tasks.
To test the ideal experience for collaborative features, such as real-time collaboration,
in the OutSystems ecosystem, we analyzed the current state of the art of the research done
in the fields of CSCW (Computer-supported CooperativeWork) and UX (User Experience)
and experimented with other industry standard software to analyze their collaborative
features. Because features are made for people, we then moved to the end-users and
interviewed several users of the OutSystems platform to understand their issues when
cooperating with other people, and finally we generated a series of designs to try to
address their issues. These designs were conceptualized and materialized into actual
mockups that were part of several usability tests, done with OutSystems users, to realize
their potential in enhancing the collaboration experience when using OutSystems.Os sistemas de edição colaborativa em tempo-real estão a ganhar popularidade, tendo
transitado do mundo do software da edição de documentos para o mundo do desenvolvimento
de software. O título do documento, "Live collaboration in app development",
refere-se a mecanismos de colaboração síncrona, que permitem alterações concorrentes a
um mesmo objecto por parte de vários intervenientes. Nos últimos anos, várias ferramentas
tradicionais de desenvolvimento de software começaram a incorporar colaboração em
tempo-real. Esta rápida expansão é motivada por vários casos de uso, que ganham uma
maior relevância na atualidade devido à pandemia da COVID-19, em que muitas pessoas
têm de trabalhar de forma remota a partir de casa. Esta situação dificulta as possibilidades
de cooperação entre colegas de equipa num projeto de desenvolvimento de software. Este
trabalho aborda estes problemas no contexto da plataforma de low-code da OutSystems e
pretende-se determinar se e como certas funcionalidades colaborativas, como colaboração
em tempo-real, podem ser implementadas na plataforma da OutSystems de forma a
melhorar a experiência colaborativa para os seus utilizadores. Neste contexto, colaboração
refere-se aos processos e ações que ocorrem entre as pessoas durante os projetos de
desenvolvimento de software com a plataforma da OutSystems.
Para definir e testar a experiência ideal destas funcionalidades colaborativas, como
colaboração em tempo-real, no ecossistema OutSystems, analisámos o estado da arte atual
da investigação feita nas áreas de CSCW (Computer-supported CooperativeWork) e UX (User
Experience) e experimentámos outros programas disponíveis no mercado para analisar
as suas funcionalidades colaborativas. Como o software é feito para pessoas, entrevistámos
vários utilizadores da plataforma OutSystems para compreender os seus problemas
ao cooperarem com outras pessoas no contexto OutSystems e conceptualizámos várias
ideias para tentar resolver esses problemas. Essas ideias foram depois materializadas em
protótipos reais que fizeram parte de vários testes de usabilidade para perceber o seu
potencial em melhorar a experiência de colaboração em OutSystems
Multi-objective Search-based Mobile Testing
Despite the tremendous popularity of mobile applications, mobile testing still relies heavily on manual testing. This thesis presents mobile test automation approaches based on multi-objective search. We introduce three approaches: Sapienz (for native Android app testing), Octopuz (for hybrid/web JavaScript app testing) and Polariz (for using crowdsourcing to support search-based mobile testing). These three approaches represent the primary scientific and technical contributions of the thesis. Since crowdsourcing is, itself, an emerging research area, and less well understood than search-based software engineering, the thesis also provides the first comprehensive survey on the use of crowdsourcing in software testing (in particular) and in software engineering (more generally). This survey represents a secondary contribution. Sapienz is an approach to Android testing that uses multi-objective search-based testing to automatically explore and optimise test sequences, minimising their length, while simultaneously maximising their coverage and fault revelation. The results of empirical studies demonstrate that Sapienz significantly outperforms both the state-of-the-art technique Dynodroid and the widely-used tool, Android Monkey, on all three objectives. When applied to the top 1,000 Google Play apps, Sapienz found 558 unique, previously unknown crashes. Octopuz reuses the Sapienz multi-objective search approach for automated JavaScript testing, aiming to investigate whether it replicates the Sapienz’ success on JavaScript testing. Experimental results on 10 real-world JavaScript apps provide evidence that Octopuz significantly outperforms the state of the art (and current state of practice) in automated JavaScript testing. Polariz is an approach that combines human (crowd) intelligence with machine (computational search) intelligence for mobile testing. It uses a platform that enables crowdsourced mobile testing from any source of app, via any terminal client, and by any crowd of workers. It generates replicable test scripts based on manual test traces produced by the crowd workforce, and automatically extracts from these test traces, motif events that can be used to improve search-based mobile testing approaches such as Sapienz