190 research outputs found

    Automating Source Code Refactoring in the Classroom

    Full text link
    Refactoring is the practice of improving software quality without altering its external behavior. Developers intuitively refactor their code for multiple purposes, such as improving program comprehension, reducing code complexity, dealing with technical debt, and removing code smells. However, no prior studies have exposed the students to an experience of the process of antipatterns detection and refactoring correction, and provided students with toolset to practice it. To understand and increase the awareness of refactoring concepts, in this paper, we aim to reflect on our experience with teaching refactoring and how it helps students become more aware of bad programming practices and the importance of correcting them via refactoring. This paper discusses the results of an experiment in the classroom that involved carrying out various refactoring activities for the purpose of removing antipatterns using JDeodorant, an Eclipse plugin that supports antipatterns detection and refactoring. The results of the quantitative and qualitative analysis with 171 students show that students tend to appreciate the idea of learning refactoring and are satisfied with various aspects of the JDeodorant plugin's operation. Through this experiment, refactoring can turn into a vital part of the computing educational plan. We envision our findings enabling educators to support students with refactoring tools tuned towards safer and trustworthy refactoring

    Implementing Project Managers in the Software Engineering Classroom

    Get PDF
    Project management is a discipline that spans many industries and has undeniable benefits in its application. Sometimes, however, it can be difficult to convey its importance and application in the classroom environment. Many process and project management classes cover the core concepts, but fail to provide students with the opportunity to experience both the dynamics and leadership elements so core to project management as both a leader and a team member. This paper describes an innovative approach to using project managers (PMs) in the classroom that has had measured effects in several areas, including individual student participation, group project disposition, and in-class presentations. Results have been encouraging, with student feedback (from both PMs and group members) indicating positive effects on interest in the field and application of project management, improved group dynamics, and more individual participation in the outcome of group projects. Specifically included in the paper are examples of PM inclusion in both the class curriculum and main project from beginning to end and how they have been applied to a process and project management course in the past. Areas explored include the PM selection process, class attendance improvement via the PM-led group dynamic, PM-specific activities and evaluation, and the inclusion of a final presentation as a product in a normally process and project heavy course. For context, a description of the class curriculum, some related work, and relevant quantitative and qualitative student feedback are included as well. The concepts and examples have been successfully implemented as part of a software engineering curriculum, but they could easily be applied to any classroom that wishes to expand project management instruction beyond a simple explanation of process and project management to an immersive experience with both practical and pedagogical benefits

    Learning and Activity Patterns in OSS Communities and their Impact on Software Quality

    Get PDF
    This paper presents a framework to identify and analyse learning and activity patterns that characterise participation and collaboration of individuals in Open Source Software (OSS) communities.  It first describes how participants’ activities enable and drive a learning process that occurs in individual participants as well as in the OSS project community as a whole. It then explores how to identify and analyse learning patterns at both individual level and community level. The objective of such analysis is to determine the impact of these patterns on the quality of the OSS product and define a descriptive approach to quality that is concerned less with standards than with the facts of OSS peer-review and peer-production

    Critiquing Antipatterns In Novice Code

    Get PDF
    Students in introductory computer science courses, are learning to program. Indeed, most students perceive that learning to code is the central topic explored in the courses. Students spend an enormous amount of time struggling to learn the syntax and understand semantics of a particular language. Instructors spend a similar amount of time reading student code and explaining the meaning of the cryptic error messages displayed by compilers. Messages provided by compilers are intended to give feedback on the adherence of one’s code to the language specification and conventions. Unfortunately, these message are geared towards experts who have a clear understanding of the language syntax and semantics and a deep model of what comprises a program and how a program is developed. These students are novices who lack fundamental understanding of the structure of a program and have no basic mental model of how a program works. Novices make different kinds of mistakes than experts. Instructors need to spend a lot of time simply assisting novices in using compilers and understanding their output. In addition to mastering the syntax and semantics of their first programming language, novices are exposed to the question of what constitutes good design. Instructors can identify virtuous design choices and articulate areas of improvement. But contact time with students is limited, and waiting for in-person feedback or replies to personal messages can be a critical delay. Novices, still struggling to use the compiler, have not yet developed the sophisticated analytical processes employed by experts and this is reflected in their design choices and the kinds of mistakes they make. When a novice approaches an instructor with a question, the instructor must often provide a balanced critique that assists the student with understanding both the structure and the design aspects of their own code. My research has focused on whether we can identify examples of early programming antipatterns that have arisen from our teaching experience, and describe different ways of detecting them automatically. Novice students may produce code that is close to a correct solution but contains syntactic errors; code critiquers attempt to salvage the promising portions of the students submission and suggest repairs in ways more meaningful than typical compiler error messages. Alternatively, a student misunderstanding may result in well-formed code that passes unit tests yet contains clear design flaws; through additional analysis, code critiquers can detect and flag these flaws. Finally, certain types of antipatterns can be anticipated and flagged by the instructor, based on the context of the course and the programming activity; code critiquers allow for customizable critique triggers and messages. This dissertation presents several key contributions to our understanding of novice misconceptions and their representation, diagnosis and repair using antipatterns. My research focuses on identifying antipatterns and detecting them in novice code, then using this information to provide the student with a meaningful critique of their work. I have developed WebTA, a tool to critique student programs in introductory computer science courses. WebTA is used to teach students test-driven agile development methods through small cycles of teaching, coding integrated with testing, and immediate feedback.Through the use of WebTA in introductory computer science courses since 2014, I have amassed a significant corpus of novice programmer submission data. Lastly, I have compiled a library of antipatterns found in novice code

    Pattern languages in HCI: A critical review

    Get PDF
    This article presents a critical review of patterns and pattern languages in human-computer interaction (HCI). In recent years, patterns and pattern languages have received considerable attention in HCI for their potential as a means for developing and communicating information and knowledge to support good design. This review examines the background to patterns and pattern languages in HCI, and seeks to locate pattern languages in relation to other approaches to interaction design. The review explores four key issues: What is a pattern? What is a pattern language? How are patterns and pattern languages used? and How are values reflected in the pattern-based approach to design? Following on from the review, a future research agenda is proposed for patterns and pattern languages in HCI

    A Systematic Method for Identification of Anti-patterns in Service Oriented System Development

    Get PDF
    Service-Oriented Architecture is one of the popular software architecture's patterns used for developing lots of modern systems. However, it has been involved in many failures. Anti-patterns are solutions which have good view, but in fact they are wrong solutions that cause failure of systems. There are a lot of anti-patterns for SOA and new anti-patterns are revealed every day. Anti-patterns have their own reasons for being formed and also they are appeared in special area of the problem. As human's mind is restricted and it can process a limited number of states (piece of information) therefore identification of anti-patterns will be difficult for architects. In this paper, we propose a systematic method based on repository of anti-patterns along with a check list to identify anti-patterns of SOA. This method will assist architects to easily detect and avoid anti-patterns in development process and so escape from risks which related to anti-patterns. Furthermore, in this paper, we present a repository of forty five general anti-patterns in SOA. Reviewing these anti-patterns will help developers to work with clear understanding of patterns in phases of software development and so avoid from many potential problems. Also, our method is evaluated in action.DOI:http://dx.doi.org/10.11591/ijece.v4i1.409

    The 10th Jubilee Conference of PhD Students in Computer Science

    Get PDF
    • …
    corecore