Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
DrProject: A Software Project Management Portal to Meet Educational Needs Karen L. Reid Gregory V. Wilson Dept. of Computer Science University of Toronto Dept. of Computer Science University of Toronto reid@cs.utoronto.ca gvwilson@cs.utoronto.ca ABSTRACT DrProject is a web-based software project management portal that integrates revision control, issue tracking, mailing lists, a wiki, and other features. Unlike other such systems, DrProject is specifically tailored to the needs of undergraduate teaching and team programming assignments. We describe the pedagogical motivations for DrProject and our experiences with it to date. Categories and Subject Descriptors K.3 [Computing Milieux]: Computers and Education; D.2.6 [Software]: Software Engineering, Programming Environments General Terms Management Keywords Education, Software tools, Software Engineering, Courseware 1. INTRODUCTION Real-world software engineering is a collaborative activity: programs are designed, developed, and maintained by teams. Learning how to work productively with others should be a central part of undergraduate education in software engineering [2, 4]. Project teams in industry, academia, and the open source community are increasingly reliant on web-based project management portals [5]. The best known of these, SourceForge [10], currently hosts over one hundred thousand projects and over a million users. It, and imitators like GForge, CollabNet, and CodeHaus, are now as important to developers as IDEs like Eclipse. Learning how to use such portals should therefore be a central element of software engineering education. In classroom settings, these tools help students coordinate their Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. SIGCSE’07, March 7–10, 2007, Covington, Kentucky, USA. Copyright 2007 ACM 1-59593-361-1/07/0003 ...$5.00. efforts and use their time more efficiently. They give instructors a concrete environment in which to teach basic teamwork skills such as time management and communication, as well as a hands-on starting point for teaching larger software engineering issues such as maintenance and release management. More importantly, these tools encourage truly collaborative work. Many student teams divide the work into pieces, then toil away individually until a “big bang” integration shortly before the due date. By helping students see that software development is a social activity, rather than an antisocial one, use of collaborative tools may help attract and retain students from at-risk groups [7]. The only way for students to master these tools is through practice. However, the setup overheads of industrial-strength tools are often intimidating. What’s more, many of their features are over-engineered for six-week assignments undertaken part-time by teams of three to five students. As a result, many students come away from their first contact with these types of tools believing that they make life more difficult, rather than less. Conversely, existing systems lack capabilities that are crucial in classroom settings: there is no easy way to create dozens of similar projects at once, and many systems do not hide any information, for the simple reason that “open” projects don’t need to do so. We therefore decided to build a portal that would be for teams what DrJava [1] and BlueJ [8] are for individuals: simple enough to learn in an hour, but with the key components of full-featured systems. Our goal was not to build a course management system—grading, lecture notes, and so on are well handled by existing courseware—but rather to create a simplified, realistic, and above all compelling alternative to full-strength software project management systems. 2. REQUIREMENTS Software project management portals offer a common core of features [3]: • A version control system is a tool that coordinates changes to shared files, such as source code, while recording the history of those changes. Most such systems keep the master copies of the files in a networked central repository; developers work in personal mirrors of this while periodically synchronizing with the repository. We have successfully introduced version control into our second-year programming courses as a first step in learning tools to support good working practices [9]. Most industrial-strength portals include a repository browser that allows users to see the current and past state of files, change sets, etc. This is almost always read-only, since allowing people to update and commit through their web browser raises security issues. Users check out and commit files to the repository using separate standard tools. • An issue tracking system is used to store bug reports, change requests, ideas for enhancements, and general to-do items in a central database. These systems typically allow users to classify entries (often called “tickets”) by priority, keep track of who is supposed to be working on them, and so on. They usually also allow users to associate tickets with deadlines, so that project members can quickly get an overview of what needs to be done by when. • A wiki, which acts as a shared online whiteboard for the project. • Mailing lists, so that team members can communicate. • A search engine to help users find project-specific information. • Some form of account management. Most systems support self-registration; some also allow users to join projects on their own, while others leave that in the hands of the project administrator. • Extra features, such as status dashboards showing project progress over time, continuous build systems that recompile code and rerun tests every time a change is checked in, and per-project blogs. These features are all as useful in courses as they are in real life, with the exception of account management. Educational institutions typically have well-developed systems for creating student accounts, checking the strengths of passwords, locking down accounts when courses are finished, and so on. These systems also typically handle access control issues, for example by ensuring that student accounts are in the right Unix groups for particular courses. We therefore decided that account creation and management should not be part of our system: users are required to have an account on the underlying host in order to use DrProject. However, industrial-strength systems lack some features required for classroom use. The first is customizable roles and permissions. Most open source projects divide the world into administrators, developers, and viewers. In courses, however, we need to differentiate between professors, TAs, students working on particular projects, students who can view those projects but not alter them, students for whom those projects are opaque, and so on. More importantly, we need to be able to customize these permissions to fit the pre-existing rules of different educational institutions. Another key feature that we needed was an automation interface. An instructor may need to create several dozen identical projects at the beginning of the term, something that doesn’t happen in an industrial setting. An instructor may also want to assign the same work item to each team in the course, to commit the same handful of files to every team’s repository, or set the same milestones in each project. 3. SYSTEM EVOLUTION Web-based project management systems are invariably built using a three-tier architecture. The user’s web browser communicates with a web server, which passes HTTP requests to a CGI or servlet “engine” that uses a relational database for persistent storage. The engine integrates with a pre-existing version control system, such as CVS or Subversion; depending on the system’s capabilities, it may also integrate with a mail transfer agent, authentication services such as LDAP or Kerberos, and so forth. In 2003-04 we developed three prototypes of DrProject using this architecture: one from scratch using Java Server Pages, a second that modified GForge, and a third (also from scratch) using Hibernate, Tapestry, and other “New Standard Model” Java tools. These experiences were disappointing: the Java tools’ learning curve was so steep that it would have been impossible to maintain the system with student labor, while there were so many security problems in GForge that further work seemed pointless. We started over in 2005, using a young open source tool created by Jonas Borgström and Daniel Lundin called Trac [11] as our starting point. Trac consisted of roughly 11,000 lines of Python, plus a further 3000 lines of HTML templates. Five undergraduate students worked full-time on the project in the summer of 2005; progress was rapid, and we deployed the system in three courses in the fall of that year. Further work was done in January 2006, and two more undergraduates worked on it again in the summer of 2006. DrProject 1.1, released in September 2006, contains 21,250 lines of Python source (including blank lines, comments, and embedded documentation strings), a further 13,000 lines of test code, and 3600 lines of HTML templates. It is built on top of a Postgres database and Subversion repositories. As the screenshot in Figure 1 shows, it offers all of the key features identified earlier, as well as tagging (to facilitate search) and a timeline of recent events. 4. DRPROJECT FEATURES Each project in DrProject 1.1 has the following components: Wiki The wiki ties all the components of DrProject together. Using wiki syntax, links can easily be created to refer to a specific ticket, changeset, mail message, or wiki page. Subversion repository Each project has a separate Subversion repository. This helps isolate projects from one another and also simplifies revision numbering. Tickets We tried to minimize the number of fields in a ticket to make it as easy as possible to use while still providing the key features. For example, tickets can be in only two states, open or closed. We eliminated other possibilities such as rejected, completed, and reopened, on the grounds that students were unlikely to see the value in these distinctions in a short-lived project. Mailing list The mailing list is simply a relay plus an archive. Users white-list the email addresses they want to send from, and set an address for receiving email. Roadmap Users (or instructors) can set milestones with either a fixed date or a symbolic name, and assign Figure 1: The Ticket Summary View in DrProject tickets to a milestone. The “Roadmap” view shows how many tickets assigned to each milestone have been completed and how many remain. Tags Tags can be assigned to tickets and wiki pages. This allows users to group items according to keywords. The “Tag cloud” view shows all the tags in a project sized according to frequency. A cross-project tag cloud shows all the tags in all the projects sized according to frequency and coloured by the tag’s appearance in the current project. Clicking on a tag in the cloud takes the user to a list of links for that tag. Users only see links from projects that they have permissions to view. Administrative Interface Administration is done using either a command-line tool or a web interface. The command-line tool makes it easy to create projects, add users, assign users to projects, load wiki pages, assign tickets to all projects, and collect information about the project. The web interface simplifies small changes such as moving a user from one project to another, adding a new user or project, and locking or suspending permissions on a project. 5. BENEFITS TO STUDENTS As stated earlier, most real software development is done in teams, so learning the tools and techniques needed for effective teamwork should be an integral part of computer science education. In the past, we used the same “sink or swim” approach as most schools: senior students were given large projects to do in groups, and a few lectures on software process, but left to figure out tooling and day-to-day operations themselves. DrProject corrects this by making it easier for students to “do the right thing”. Like any other tool, DrProject encourages its users to work a certain way: to communicate through a searchable mailing list instead of point-to-point, to keep track of who’s responsible for what by assigning and closing tickets, and so on. In teaching students how to use DrProject, we are also teaching them how to divide up work, manage time, coordinate with others—in short, how to tackle large projects systematically. The result from the students’ point of view is that they are able to do more, and better, than before: fewer “dropped balls” and overwritten files translates directly into higher grades (and lower stress). Using DrProject also makes students better prepared for careers in both research and in industry, where coordination tools of this kind have become the norm. Finally, DrProject makes it easier for student teams to exchange and inherit projects. This has been a key part of our software engineering course for many years [6]: part way through the term, each team must choose another team’s project and continue working with their code for the rest of the course. Teams get bonus marks each time their code is used by another team. Having all the key information about the project in one (searchable) place makes it easier for students to investigate other projects, and encourages teams to present a well-organized and documented system to their peers. 6. BENEFITS TO INSTRUCTORS DrProject makes it easy for instructors to create project spaces for student groups, move students between groups, perform batch operations on all groups such as adding files to all repositories, or filing tickets against all groups, or send an email message to all the members of a group. This in turn makes it possible for instructors to set more ambitious goals for project courses, since it frees up time that would otherwise have to be spent on administrative duties. Tools like DrProject have been used elsewhere to give instructors insight into what the students are doing at intermediate points in the project, and a way to spot teams that are struggling early on [12]. We are now studying the data collected by DrProject to learn more about how our students work together, which we hope will in turn tell us aspects of teamwork they need more training in. One other benefit of DrProject has been the experience we have gained from supervising its construction. Having several students adding features to DrProject every term helps us stay current with new technologies, while giving the students an opportunity to work on a project with a real customer. More importantly, it gives us “war stories” to tell in class. Quotes from textbooks about how important it is to start testing early, or how much time deployment can take, are one thing; pointing at a system students are using, and telling them what went wrong as it was being built, is quite another. 7. EXPERIENCES TO DATE We have used DrProject in three different fourth year courses and one third year course: CSC408 (Software Engineering), CSC488 (Compilers and Interpreters), a pair of research project courses (CSC494/495), and CSC369 (Operating Systems). In the first two terms that we used DrProject, we were reluctant to rely on it too heavily. Despite this, students used it continuously throughout the year, and as we report below, their experiences were generally very positive. Figure 2 shows the number of tickets, version control checkins and wiki edits by each group in the CSC408 and CSC488 courses. Within each course, the groups in the graph are sorted by the number of tickets filed. We felt that the ticket system usage was a better indicator of how much students relied on DrProject than version control check-ins, since (a) students could interact with the version control system using other tools, and (b) in some cases, they had to check in their code in order to receive a grade. CSC408, a required course, covers project management and the software development process. Students work in teams of four or five on a term-long project. Part way through the term, the teams swap code and continue working on another group’s code. In a survey at the end of the term, approximately half the respondents reported that they relied on DrProject to some extent, while the other half relied on it very little. Two-thirds of the students found it easy to learn to use DrProject. A few students commented that more tutorial information on DrProject would be helpful; we have accordingly produced a short screencast demonstrating its most important features. In each instance of CSC408, nearly half the groups made non-trivial use of the DrProject, filing more than twenty tickets over the first 7 weeks. New projects were created for them within DrProject after they swapped code with another group. The usage rate following the swap followed the same pattern as before the swap. CSC488 (Compilers and Interpreters) is optional, and had a smaller enrollment. Students reported that they found the ticket system overkill for the size of their projects, but usage patterns indicated that they still took advantage of the ticket system. Five out of the seven groups in the Compilers course made significant use of DrProject. We believe there are three reasons why students used DrProject more in this course than in the Software Engineering course: as an optional and challenging fourth year course, it has a higher proportion of our top students; most of the students in the course had previous experience with software project management tools from their employment; and the TAs were more enthusiastic about DrProject. DrProject was most heavily used in CSC494/495, a project course where students work individually or in small teams on a project in close collaboration with a faculty member. Since the second author of the paper was the primary supervisor of these projects, students in this course received more training in how to use DrProject, and therefore used it more effectively than in the other courses. Students working on solo projects tended not to use DrProject very much, but as the team size increased the number of transactions on DrProject also increased, showing that students were using DrProject to coordinate their team work. This term, we began using DrProject in CSC369 (Operating Systems) primarily to take advantage of the easy setup for the Subversion repositories. Students work in teams of two or three on an OS simulator and also have one individual assignment (leading to the creation of more than 75 projects within DrProject). We have been using the tickets to give students a formal mechanism to identify weaknesses or remaining flaws in their code. The ease of updating multiple repositories with new starter code and managing group permissions were enough to convince us to keep using DrProject in future offerings of this course. Looking at general usage patterns, we find that some groups use the wiki a great deal. It is interesting that these groups are not always the ones who also use the ticket system. This shows that some students found value in having an unstructured space for collaboration. By looking for imbalances in usage patterns within each team, we can identify teams that may be running into difficulty. We expect to see even greater use of DrProject this year, as instructors and TAs become more familiar with the system. The performance and feature improvements over the summer will also improve the uptake. DrProject is now in use at Queen’s University, and is being evaluated for inhouse use at several local companies. 8. FUTURE WORK Now that we have a robust system, we plan to conduct more empirical studies into how our students approach teamwork, and how we can better support their work. We also plan to gather feedback to determine if we have chosen the right set of features, and what other features would most help the students. By providing more tutorial material, and training students to use DrProject more effectively, we hope to improve the fraction of students using DrProject in each course. We know that we need to encourage students to write more documentation. To this end we have two new features planned. The first is a team blog which could be used in a variety of ways. For example, students could write a journal about their team experience, write tutorials on bits of technology they are using, or publish design ideas. The second feature is a trigger to automatically generate Javadoc or other automatically formatted documentation and display it within DrProject. We hope that if students can easily view the documentation for their system, they will be more inspired to write the documentation early, and follow a standard format. Documentation generation is the first step toward including continuous integration tools. We would like students to be able to build and test their code automatically upon check-in. Determining how to protect the server from malicious attacks is the thorny problem we need to solve to implement true continuous integration. Currently, DrProject authenticates users against the system password file (/etc/password). We are working on de- Tickets Checkins Wiki Edits 120 100 80 60 40 20 0 900 750 600 450 300 150 0 90 75 60 45 30 15 0 CSC408 Fall CSC408 Winter CSC488 Fall Figure 2: DrProject usage by project group for three courses in 2005/2006. In each course the bars are ordered by number of tickets filed. veloping other authentication mechanisms to make it easier to deploy DrProject in different environments. 9. AVAILABILITY DrProject is an open source project under a liberal BSDstyle license. We actively encourage other instructors to adopt it in their courses. Please contact one of the authors, or see http://www.drproject.org. 10. ACKNOWLEDGMENTS We wish to thank the students who worked on DrProject, and the faculty who have adopted it. We also wish to thank the Natural Sciences and Engineering Research Council of Canada (NSERC), the Jonah Group, Perforce Inc., Idée Inc., IBM’s Eclipse Innovation Grants programme, the University of Toronto’s Instructional Technology Courseware Development Fund (ITCDF), and Prof. Steve Easterbrook for their support. 11. REFERENCES [1] Eric Allen, Robert Cartwright, and Charles Reis: “Production Programming in the Classroom”, Proc. SIGCSE 2003 , pp. 89-93. See also http://drjava.sourceforge.net/papers/index.shtml (viewed October 5, 2005). [2] David Coppit: “Implementing Large Projects in Software Engineering Courses”, Journal of Computer Science Education, 16(1), March 2006. [3] Matthew B. Doar: Practical Development Environments. O’Reilly, 2005. [4] Sally Fincher, Marian Petre, and Martyn Clark (eds.): Computer Science Project Work . Springer, 2005. [5] Karl Fogel: Producing Open Source Software. O’Reilly, 2005. [6] J.J. Horning and D.B. Wortman: “Software Hut: A Computer Program Engineering Project in the Form of a Game”. IEEE Transactions on Software Engineering, 3(4), July 1977 pp. 325-30. [7] Jane Margolis and Allan Fisher: Unlocking the Clubhouse: Women in Computing. MIT Press, 2002. [8] Michael Mölling, Bruce Quig, Andrew Patterson, and John Rosenberg: “The BlueJ system and its pedagogy”, Journal of Computer Science Education, 13(4), December 2003. See also http://www.bluej.org/papers/ (viewed September 3, 2006). [9] Karen L. Reid, and Gregory V. Wilson: “Learning by Doing: Introducing Version Control as a Way to Manage Student Assignments”, Proc. SIGCSE 2005 , pp. 272-276. [10] SourceForge: http://www.sourceforge.net (viewed September 3, 2006). [11] Trac: http://trac.edgewall.org (viewed September 3, 2006). [12] K. Wong, W. Blanchet, Y. Liu, C. Schofield, E. Stroulia, and Z. Xing: “JRefleX: Towards supporting small student software teams”, Proc. Eclipse Technology Exchange Workshop, pp. 56-60, OOPSLA 2003.