University of California, Irvine (UCI) - Informatics Department

INF 219 – Software Environments

Professor

Marco Aurélio Gerosa

http://www.ime.usp.br/~gerosa

mgerosa@uci.edu

Office: DBH 5228

Logistics

Room: ICS 180

Lectures: Monday and Wednesday, 2pm - 3:20pm

Website: http://www.ime.usp.br/~gerosa/classes/uci/inf219

Additional resources: http://eee.uci.edu

Class mail list: inf219-S14@classes.uci.edu

Online forum: http://piazza.com/uci/spring2014/inf219/home

Random selection: site

Description

Catalogue description: Study of the requirements, concepts, and architectures of comprehensive, integrated, software development and maintenance environments. Major topics include process support, object management, communication, interoperability, measurement, analysis, and user interfaces in the environment context.

This edition: This edition highlights human and social aspects of software engineering, as well as information mining from software repositories. We are going to discuss how software environments can be improved considering these elements.

Educational approach

The classes will be very participatory and discussion-oriented. Students will (i) read several papers and engage in active discussions about the topics; (ii) work in groups to present a seminar about one of the course topics (see the schedule below); and (iii) work on a practical research project on a topic of their choice and write an academic paper about it. More details in the following.

Papers Discussions

Students must read papers before most of the classes and prepare a set of slides that summarizes each paper. In the beginning of the class, one student will be randomly selected to give an 8-10 min presentation about the paper using his/her own slides, which must be previously submitted in the EEE Dropbox.

How to prepare the presentation: focus more on the motivation, applicability, and results of the study. You can talk very briefly about the research method and related work. Conclude with your opinion about the paper, with a critical view on its positive and negative aspects. In addition, state questions and problems to be further discussed in the classroom.

Discussions: Some special dynamics will be used to foster discussions. For example, sometimes, students will be split into groups with special roles (e.g. criticize or defend a paper). More details to come.

Update: As we decided in class, as the in-class discussions have been very intense, we are going to substitute the paper presentations by pre online discussion on the Piazza tool. You need to read the assigned papers and post your opinions to answer the proposed questions or post additional questions to be discussed. Vote in the questions and answers that you would like to discuss more in depth, we will focus on them in the class.

Students Seminars

Students will work in groups to prepare a 30 min seminar about a topic of the course. In this seminar, they must give an overview of the state-of-the-art and of-the-practice about the topic. In the References, there are some papers and other material to be considered for the seminar. However, these are initial suggestions, the group must search the literature of the area for additional references. The group must post the slides and a categorized bibliography about the topic before the presentation.

After the 30 min presentation, a discussion about the topic will begin. Thus, the group must bring some questions to foster discussion.

Additionally, the group must choose one or two papers for the entire class to read. These papers should be announced at least one week before the seminar. Before the seminar starts, one random student will give the 8-10 min presentation about the papers.

Term Project

Students will develop in groups a research project and write an academic paper about it.

Topic: Substantial latitude will be allowed to choose the topic, but all topics must be related to software environments and consider human and social aspects of software development. The topic must be approved in advance by the instructor. Students can undertake different kinds of project. They may propose and evaluate an innovative feature to software environments in order to solve a current software development problem or they may conduct a mining software repository (MSR) study using data from software environments.

Project proposal: The project proposal consists in a document with a preliminary description of the project to be undertaken. It should describe the idea to be investigated and how the research will be conducted (e.g. the research question and methods). Since this is a preliminary description, changes are allowed as the research progresses. However, radical changes, e.g. selecting a new topic, are highly discouraged.

Feedback on the project: Some classes will be used to present partial results of the project (topics and empirical evaluation, proposed solutions, and prototypes). All the students are expected to give constructive feedback during classes and/or in the online discussion. Presenters may explicitly ask for specific feedback, as well as disclosure open problems. For instance, presenters might use this opportunity to present and articulate their ideas; ask for suggestions on how to solve certain problems; and ask for recommendations regarding related work.

Paper: Students must prepare an academic paper about the research project conducted. The length of the paper must have between 4 and 6 single spaced pages following the ACM template. The paper must present the motivation, objectives, hypotheses and/or research questions, survey related work, describe the solution/research conducted, show usage examples and an evaluation of the solution, the main findings, threats to validity, lessons learned, and future directions. The software and research design decisions must be detailed and discussed, preferably based on the literature. In the case that a tool is developed, the URL of a demo video should be provided in the paper. The paper must be submitted through the EasyChair website. Of course, students are encouraged to produce a high quality paper and later submit it to a scientific venue.

The source code and the data that you use in your study must be versioned in a public repository, such as GitHub . Include the reference in the paper.

Peer-review: The peer-review process will be conducted along the lines of most scientific conferences. Students will be assigned as reviewers of selected papers. The reviews will be considered as part of the reviewer’s grade, but will not affect negatively the grade of the authors of the papers. Therefore, the reviews can be critical (but always in a constructive way) without the worry of prejudicing colleagues.

See the schedule for the due dates.

Groups

Groups will likely comprise 2 students (or 3 depending on the number of enrolled students). The groups must be defined in the first week of the course and reported in the shared Google Doc. The topics for the seminar will be assigned in a first to come first to serve basis, so act quickly.

Each student must deliver by the end of the course a document stating clearly the participation of each member of the group in the activities and the URL of the shared GitHub repository. This information will be considered for grading purposes. It is expected that real collaboration takes place in the group (not just the split of the tasks). It is also expected a balanced work load for each member.

Participation in class

The presence and active participation in the classes are considered very important in this course and will also be considered for grading purposes.

Grades

All students enrolled in the course will earn a letter grade based upon: (a) their demonstrated understanding of the class topics, (b) class attendance and participation, (c) the critical opinions, questions, and challenges shared with the class on the discussions, (d) the feedback provided to their peers, and (e) the term project and the other course activities.

Schedule

The schedule and assignments below are tentative and subject to change.

DATA

DESCRIPTION

DELIVERABLES

1.       M 03/31

Introduction to the course

(lecture)

 

2.       W 04/02

Understanding a problem: Empirical Evaluation of Software Environments

(Paper presentation + lecture)

- Summary Slides

- Topic and groups

3.       M 04/07

A historical perspective

(Papers presentations + discussion)

- Summary Slides

4.       W 04/09

Eclipse IDE & Other modern IDEs

(Papers presentations & analysis of a current tool)

- Summary Slides

- P: Topic proposal

5.       M 04/14

Supporting coding and testing

(Students seminar 1: Christian and Namrata)

- Summary Slides

6.       W 04/16

Project: Presentation of the topics and Empirical Evaluation (Parte I)

(8 min for each group)

- P: Empirical Evaluation

7.       M 04/21

Project: Presentation of the topics and Empirical Evaluation (Parte II)

(8 min for each group)

- Improved slides

8.       W 04/23

Under the hood: Building and Extending IDEs

(Students seminar 2: Vaibhav and Aftab)

- Online discussion

- P: Related Work

9.       M 04/28

Supporting software analysis and design

(Paper discussions)

- Online discussion

10.  W 04/30

Project: Presentation of the proposed solutions

(8 min for each group)

- P: Solution proposed

11.  M 05/05

Mining software repositories

(Students seminar 4: Matías and Shriti)

- Online discussion

12.  W 05/07

Software analytics

(Students seminar 5: Saurabh and Rohan)

- Online discussion

13.  M 05/12

Software visualization

(Students seminar 6: Christina)

- Online discussion

14.  W 05/14

Project: Presentation of the prototype

(8 min for each group)

 

15.  M 05/19

Integrating IDEs and Social Media

(Papers discussion)

- Online discussion

16.  W 05/21

Distributed Software Environments, IDEs @ the Cloud + Crowd development

(Students seminar 8: Sivabalan and Rohan)

- Online discussion

17.  M 05/26

NO CLASS. Memorial Day

 

18.  W 05/28

Panel on Research Directions and the Future of Software Environments

Panelists: Andre van der Hoek, James Jones, and Dick Taylor

19.  M 06/02

Final presentations

- P: Paper

20.  W 06/04

Final presentations

- P: Peer review of the papers

21.  M 06/09

NO CLASS – Instructions ended

 

22.  W 06/11

NO CLASS

- P: Camera-ready paper

 

References

In the following, there are some references for the subjects covered in the course. It is not supposed that every student read all them. For each topic, a few papers will be selected to be read by the entire class. The group assigned to each topic will delve into more details on the literature of that specific topic.

Topic

Resources

Introduction

Slides of the class (pptx) (pdf)

Understanding a problem

Slides of the class (pptx) (pdf)

Readings for the class

·  Greenberg & Buxton: Usability evaluation considered harmful (some of the time) (CHI 2008)

·  Easterbrook, Singer, Storey, & Damian: Selecting Empirical Methods for Software Engineering Research (Guide to Advanced Empirical Software Engineering 2008)

Further readings

·  Kitchenham et al.: Preliminary guidelines for empirical research in software engineering (TSE 2002)

·  Basili: The Past, Present, and Future of Experimental Software Engineering (JBCS 2006)

·  More references in the list compiled by LaToza and Myers (2011)

A historical perspective

Readings for the class:

Group A:

·   Teitelman & Masinter: The Interlisp Programming Environment (IEEE Computer 1981)

·   Kadia: Issues Encountered in Building a Flexible Software Development Environment (SDE 1992)

Group B:

·   Thomas & Nejmeh: Definitions of Tool Integration for Environments (IEEE Software 1992)

·   Dart, Ellison, Feiler, & Habermann: Overview of Software Development Environments (1992)

Further readings:

·   Dolotta & Mashey: An Introduction to the Programmer’s Workbench (ICSE 1976)

·   Rich & Waters: Automatic Programming: Myths and Prospects (IEEE Computer 1988)

·   Swinehart, Zellweger, Beach, & Hagmann: A Structural View of the Cedar Programming Environment (TOPLAS 1986)

·   Reps & Teitelbaum: The Synthesizer Generator (SDE 1984)

·   Taylor et al.: Foundations for the Arcadia Environment Architecture (SDE 1988)

·   Harel et al.: STATEMATE: A Working Environment for the Development of Complex Reactive Systems (ICSE 1988)

·   Robbins, Hilbert, & Redmiles: Extending Design Environments to Software Architecture Design (KBSEC 1996)

·   Reiss: The Desert environment (TOSEM 1999)

Eclipse IDE & Moderns IDEs

Readings for the class:

·  des Rivičres & Wiegand: Eclipse: A Platform for Integrating Development Tools (IBM Systems J. 2004)

·  Murphy, Kersten, & Findlater: How Are Java Software Developers Using the Eclipse IDE? (IEEE Software 2006)

·  Eclipse Community Surveys: 2012 & 2013

Supporting coding and testing

Readings for the class:

·  Ko, Andrew J., and Brad A. Myers. "Finding causes of program output with the Java Whyline." In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, pp. 1569-1578. ACM, 2009.

·  Goldman, Max, Greg Little, and Robert C. Miller. "Collabode: collaborative coding in the browser." In Proceedings of the 4th international workshop on Cooperative and human aspects of software engineering, pp. 65-68. ACM, 2011.

Further readings:

·  Ballance, Graham, & Van de Vanter: The Pan Language-Based Editing System for Integrated Development Environments (TR 1990)

·  Omar, Yoon, LaToza, & Myers: Active Code Completion (ICSE 2012)

·   Myers, Pane, & Ko: Natural Programming Languages and Environments (CACM 2004)

·  Bragdon et al.: Code bubbles: rethinking the user interface paradigm of integrated development environments (ICSE 2010)

·  LaToza & Myers: Hard-to-Answer Questions about Code (PLATEAU 2010)

·  Osenkov: Designing, implementing and integrating a structured C# code editor (PhD Thesis 2007)

·  M. Fowler: Language Workbenches: The Killer-App for Domain Specific Languages? (Blog Post 2005)

·  Infoworld: Exploring the deep structure of code (2005)

·  Ko, Aung, & Myers: Eliciting design requirements for maintenance-oriented IDEs: a detailed study of corrective and perfective maintenance tasks (ICSE 2005)

·  Kersten & Murphy: Using task context to improve programmer productivity (FSE 2006)

·  More references in the list compiled by LaToza and Myers (2011)

Under the hood: Building and extending IDEs

Readings for the class:

·  Yoon & Myers: Capturing and analyzing events low level event from the code editor (PLATEAU 2011)

·  van der Lingen, & van der Hoek: An Experimental, Pluggable Infrastructure for Modular Configuration Management Policy Composition (ICSE 2004)

Further readings:

·  Ossher & Harrison: Support for Change in RPDE3 (SDE 1990)

·  Clemm & Osterweil: A Mechanism for Environment Integration (TOPLAS 1990)

·  Reiss: Connecting Tools Using Message Passing in the Field Environment (IEEE Software 1990)

·  Grundy, Mugridge, & Hosking: Constructing Component-based Software Engineering Environments: Issues and Experiences (IST 2000)

·  Software Engineering Radio: Episode 80: OSGi with Peter Kriens and BJ Hargrave (2007)

·  http://www.osgi.org

·  https://www.eclipse.org/articles/Article-Plug-in-architecture/plugin_architecture.html

A classical view:

·  Tarr & Clarke: Pleiades: An Object Management System for Software Engineering Environments (SIGSOFT 1993)

·  Anderson, Taylor, & Whitehead: Chimera: Hypermedia for Heterogeneous Software Development Environments (TOIS 2000)

·  Heineman & Kaiser: An architecture for Integrating Concurrency Control into Environment Frameworks (ICSE 1995)

·  Bandinelli, Di Nitto, & Fuggetta: Supporting Cooperation in the SPADE-1 Environment (TSE 1996)

·  Nentwich, Emmerich, & Finkelstein: Consistency Management with Repair Actions (ICSE 2003)

·  Boudier, Gallo, Minot, & Thomas: An Overview of PCTE & PCTE+ (SDE 1989)

Supporting software analysis and design

Readings for the class:

·  Wu, Graham, Smith: A Study of Collaboration in Software Design (ISESE 2003)

· Cherubini, Venolia, DeLine, & Ko: Let’s Go to the Whiteboard: How and Why Software Developers Use Drawings

·  Mangano & van der Hoek: A tool for distributed software design collaboration (video) (CSCW 2012) - (see the video in the "Source materials tab")

Further readings:

·  Mangano, LaToza, Petre, van der Hoek: Supporting Informal Design with Interactive Whiteboards (CHI 2014)

·  Medvidovic, Rosenblum, & Taylor: A Language and Environment for Architecture-Based Software Development and Evolution (ICSE 1999)

·  Kersten & Murphy: Mylar: a degree-of-interest model for IDEs (AOSD 2005)

·  Sullivan, Griswold, Cai, & Hallen, The Structure and Value of Modularity in Software Design (FSE 2001)

·  http://www.architexa.com

·  More references in the list compiled by LaToza and Myers (2011)

Mining software repositories

Readings for the class:

·  Hemmati et al.: The MSR Cookbook: Mining a Decade of Research (MSR 2013)

·  Gerosa: Mining Sociotechnical Information from Software Repositories (slides)

Further readings:

·  Ball et al. If Your Version Control System Could Talk... (ICSE 1997)

·  Zimmermann, Weißgerber, Diehl, & Zeller: Mining Version Histories to Guide Software Change (ICSE 2004)

·  Zimmerman, Premraj & Zeller: Predicting Defects for Eclipse (PROMISE 2007)

·  Bird et al.: The promises and perils of mining Git (MSR 2009)

·  Bajracharya, Ossher & Lopes: Sourcerer: An infrastructure for large-scale collection and analysis of open-source code (SCP 2014)

·  Thummalapenta & Xie: Alattin: Mining Alternative Patterns for Detecting Neglected Conditions (ASE 2009)

·  Dang et al.: XIAO: Tuning Code Clones at Hands of Engineers in Practice (ACSAC 2012)

·    Zeller, Zimmermann, & Bird: Failure is a Four-Letter Word: A Parody in Empirical Research (PROMISE 2011)

·    Aranda & Venolia: The secret life of bugs: Going past the errors and omissions in software repositories (ICSE 2009)

·    Bird et al: Fair and balanced?: bias in bug-fix datasets (FSE 2009)

·  Gerosa: Mining Sociotechnical Information from Software Repositories (slides) (video) (2014)

·  Working Conference on Mining Software Repositories proceedings (MSR). It is worth to notice that every edition has a mining challenge with a specific data set, which usually results in good ideas about the applications of MSR techniques.

·  GitHub data challenge

·  www.hackystat.org

Software analytics

Readings for the class:

·    Begel & Zimmerman: Analyze This! 145 Questions for Data Scientists in Software Engineering (ICSE 2014)

·  Buse & Zimmermann: Analytics for Software Development (FoSER 2010)

Further readings:

·  Zhang et al.: Software Analytics as a Learning Case in Practice: Approaches and Experiences (MALETS 2011)

·  Hassan & Xie: Software intelligence: the future of mining software engineering data (FoSER 2010)

·  Hassan, Hindle, Runeson, Shepperd, Devanbu, & Kim: What’s Next in Software Analytics (IEEE Software 2013)

·  Other papers from the IEEE Software Special Edition on Software Analytics: So What? Menzies & Zimmermann (eds) (2013) - see also video

·  Other papers from the IEEE Software Special Edition on The Many Faces of Software Analytics, Menzies & Zimmermann (eds) (2013)

·  Zimmerman keynote slides: Software Analytics = Sharing Information (2013) and Analytics for Smart Software Development (2012)

·  Gall: Replication and Benchmarking in Software Analytics (BENEVOL 2013 slides)

·  Brandtner, Giger, & Gall: Supporting continuous integration by mashing-up software quality information (CSMR 2014)

·  http://www.sonarqube.org/

Software visualization 

 

Readings for the class:

·  Ghanam & Carpendale: A Survey Paper on Software Architecture Visualization (TR 2008)

·  Jones et al.: Visualization of Test Information to Assist Fault Localization (ICSE 2002)

Further readings:

·  Wettel & Lanza: Visualizing Software Systems as Cities (VISSOFT 2007)

·  Ducasse & Lanza: The Class Blueprint: Visually Supporting the Understanding of Classes (TSE 2005)

·  Price, Baecker, & Small: A Principled Taxonomy of Software Visualization (JVLC 1993)

·  Storey et al.: On the use of visualization to support awareness of human activities in software development: a survey and a framework (SoftVis 2005)

·  LaToza & Myers: Visualizing call graphs (VL/HCC 2011)

·  More references in the list compiled by LaToza and Myers (2011)

Integrating IDEs and Social Media

Readings for the class:

·    Storey: The evolution of the social programmer (MSR 2012 Keynote slides)

·    Parnin, Treude, Grammel, and Storey: Crowd Documentation: Exploring the Coverage and the Dynamics of API Discussions on Stack Overflow (2012)

·    Khalid, Shihab, Nagappan, & Hassan: What Do Mobile App Users Complain About? A Study on Free iOS Apps (IEEE Software 2014)

·    Guzzi, Pinzger, & Deursen: Combining micro-blogging and IDE interactions to support developers in their quests (ICSM 2010)

Further readings:

·    Storey et al.: The impact of Social Media on software Engineering Practices and Tools (FOSER 2010)

·    Harman, Jia, & Zhang: App store mining and analysis: MSR for app stores (MSR 2012)

·    Park & Maurer: The role of blogging in generating a software product vision (CHASE 2009)

·    Pagano and Maalej: How do developers blog?: an exploratory study (MSR 2011)

·    Treude: The Role of Social Media Artifacts in Collaborative Software Development (PhD Thesis 2012)

·    Parnin & Treude: Measuring API Documentation on the Web (web2SE 2011)

·    Mamykina, Manoim, Mittal, Hripcsak, & Hartmann: Design lessons from the fastest Q&A site in the west (CHI 2011)

·    http://meta.stackoverflow.com/questions/134495/academic-papers-using-stack-exchange-data

·    Reinhardt: Communication is the key – support durable knowledge sharing in SE by microblogging (SENSE 2009)

·    Storey: The love-hate relationship developers have with Twitter! (2013)

Distributed Software Environments

IDEs @ the Cloud

Readings for the class:

·  Herbsleb: Global Software Engineering: The Future of Socio-technical Coordination (FOSE '07)

·  Explore koding.com

Further readings:

·  Ben-Shaul & Kaiser: A Paradigm for Decentralized Process Modeling and its Realization in the Oz Environment (ICSE 1994)

·  Augustin, Bressler, & Smith: Accelerating Software Development Through Collaboration (ICSE 2002)

·  Hall, Heimbigner, & Wolf: A Cooperative Approach to Support Deployment Using the Software Dock (ICSE 1999)

·  Lautamaki et al. Cored: Browser-based collaborative real-time editor for java web applications (CSCW 2012)

·  Wang, Wagstrom, Duesterwald, & Redmiles: New opportunities for extracting insights from cloud based IDEs (ICSE 2014)

·  Herbsleb & Mockus An empirical study of speed and communication in globally-distributed software development (TSE 2003)

·  Mistrík, Grundy, van der Hoek, Collaborative Software Engineering, Springer

·  Zimmermann & Bird: Collaborative Software Development in Ten Years: Diversity, Tools, and Remix Culture (FSD 2012)

·  Cloud9 IDE

·  Goldman, Little, & Miller: Collabode: collaborative coding in the browser (CHASE 2011)

·  More references in the list compiled by LaToza and Myers (2011)

·  LaToza, Towne, van der Hoek, & Herbsleb: Crowd development (CHASE 2013) (see also poster)

·  http://sdcl.ics.uci.edu/research/crowd-development

Other topics      

In the following, some topics related to the course, but possibly not covered in this edition, are presented.

Topic

Resources

Supporting debugging

·  View references in the list compiled by LaToza and Myers (2011)

Version Control Systems & Configuration Management

·  Estublier: Software Configuration Management: a Roadmap (ICSE 2000)

·  O’Sullivan: Making sense of revision-control systems (CACM 2009)

·  Estublier et al.: Impact of Software Engineering Research on the Practice of Software Configuration Management (TOSEM 2005)

·  Spinellis: Version Control Systems (IEEE Software 2005)

·  Prudęncio, Murta, Werner, & Cepeda: To lock, or not to lock: That is the question (JSS 2012)

·  Mens: A State-of-the-Art Survey on Software Merging (TSE 2002)

·  Appleton, Berczuk, Cabrera, & Orenstein: Streamed Lines: Branching Patterns for Parallel Software Development (PLoP 1998)

Search-based IDEs

·  Brandt et al.: Example-Centric Programming: Integrating Web Search into the Development Environment (CHI 2010)

·  Edwards: Example Centric Programming (OOPSLA 2004)

·  http://code.ohloh.net/ 

·  http://corp.krugle.com

·  Mandelin, Xu, Bodík, Kimelman: Jungloid Mining: Helping to Navigate the API Jungle (PLDI 2005)

·  Lemos et al.: Using Thesaurus-Based Tag Clouds to Improve Test-Driven Code Search (SBCARS 2013)

·  Ossher & Lopes: Applying Program Analysis to Code Retrieval (Springer, 2013)

·  Bajracharya & Lopes: Analyzing and mining a code search engine usage log (ESE 2010)

·  Lemos et al.: A test-driven approach to code search and its application to the reuse of auxiliary functionality (IST 2011)

·  Wightman, Ye, Brandt, & Vertegaal: SnipMatch: Using Source Code Context to Enhance Snippet Retrieval and Parameterization (UIST 2012)

·  Proceedings of Search-Based Software Engineering Conference

Supporting productivity in IDEs

·  Melo, Cruzes, Kon, Conradi, Interpretative case studies on agile team productivity and management, IST 2013

·  Mark, Iqbal, Czerwinski, Johns: Bored Mondays and Focused Afternoons: The Rhythm of Attention and Online Activity in the Workplace (CHI 2014)

·  Greenberg: Toolkits and Interface Creativity (JMTA 2007)

Software environments for reuse

·  Lisboa, Garcia, Lucredio, Almeida, Meira & Fortes: A Systematic Review of Domain Analysis Tools (JIST 2010)

·  Braga, Werner & Mattoso: Odyssey: A Reuse Environment based on Domain Models (ASSET 1999)

·  Lüer & Rosenblum: Wren—An Environment for Component-Based Development (FSE 2001)

·  Habermann: Programming Environments for Reuse (1988)

·  More references in the list compiled by LaToza and Myers (2011)

Supporting awareness and coordination

·  Sarma, Noroozi, van der Hoek. Palantir: Raising Awareness among Configuration Management Workspaces (2003)

·  Cataldo, Mockus, Roberts, & Herbsleb: Software Dependencies, Work Dependencies, and Their Impact on Failures (TSE 2009)

·  Kraut & Streeter Coordination in software development (CACM 1995)

·  Halverson, Ellis, Danis, & Kellogg: Designing task visualizations to support the coordination of work in software development (CSCW '06)

·  More references in the list compiled by LaToza and Myers (2011)

Supporting development processes into IDEs

·  View references in the list compiled by LaToza and Myers (2011)

API Usage

·  Zhong, Xie, Zhang, Pei, & Mei: MAPO: Mining and Recommending API Usage Patterns (ECOOP 2009)

·  Souza & Redmiles: On The Roles of APIs in the Coordination of Collaborative Software Development (CSCW 2009)

·  More references in the list compiled by LaToza and Myers (2011)

Bug prevention

 

·  Zeller, Zimmermann & Bird: Failure is a Four Letter Word – A parody in Empirical Research (see also video presentation)

·  Aranda & Venolia: The secret life of bugs (ICSE 2009)

·  Bird et al.: Fair and balanced?: bias in bug-fix datasets (ESEC/FSE 2009)

·  Nagappan, Ball, & Zeller: Mining Metrics to Predict Component Failures (ICSE 2006)

·  More references in the list compiled by LaToza and Myers (2011)

Gamification

·  Lewis & Whitehead: The Whats and the Whys of Games and Software Engineering (GAS 2011)

·  Dietl et al. Verification Games: Making Verification Fun (FTfJP  2012)  (video)

·  Snipes, Nair, & Murphy-Hill: Experiences Gamifying Developer Adoption of Practices and Tools (ICSE 2014)

Repositories of repositories

·  Dabbish, Stuart, Tsay, & Herbsleb: Social coding in GitHub: transparency and collaboration in an open software repository (CSCW 2012)

Exploring Code

·  Treude & Storey: Work Item Tagging: Communicating Concerns in Collaborative Software Development (TSE 2012)

·  Storey et al.: How Software Developers Use Tagging to Support Reminding and Refinding (TSE 2009)

·  Singer, Elves, & Storey: Navtracks: Supporting navigation in software maintenance (ICSM 2005)

·  Storey et al.: How Programmers can Turn Comments into Waypoints for Code Navigation (ICSM 2007)

·  More references in the list compiled by LaToza and Myers (2011)

IDEs for end users Software Engineering

· Ko et al. The State of the Art in End-User Software Engineering (ACM Computing Surveys 2010) 

·  Burnett: What Is End-User Software Engineering and Why Does It Matter? (IS-EUD 2009)

·  Brad Myers, Future of Design & SW Development (video)

·  More references in the list compiled by LaToza and Myers (2011)

Other topics

·  Supporting deployment

·  IDE for workflows

·  IDEs for Ultra Large Scale Systems & Systems of Systems

·  IDEs for Mobile Apps, Social Apps, and Internet of Things

·  Provenance and traceability

·  Mockus & Herbsleb: Expertise Browser: A Quantitative Approach to Identifying Expertise

·  Cubranic, Murphy, Singer & Booth: Hipikat: A Project Memory for Software Development

·  Henkel & Diwan: CatchUp! Capturing and Replaying Refactorings to Support API Evolution

·  Van der Westhuizen, Chen & van der Hoek: Emerging Design: New Roles and Uses for Abstraction

Policies

Disabilities: Any student who feels he or she may need an accommodation based on the impact of a disability should contact the instructor and the Disability Services Center as soon as possible.

Copyright: The documents made available aim to ensure timely dissemination of scholarly and technical work on a non-commercial basis and are for the sole use of students enrolled in this class. Copyright and all rights therein are maintained by the authors or by other copyright holders. It is understood that all persons copying the files will adhere to the terms and constraints invoked by each author's copyright. These works may not be reposted without the explicit permission of the copyright holder.

Cheating. The UCI academic honesty policy applies. Content copied from the literature needs to be quoted and the source must be given.

Acknowledgements

This course is based on other courses from André van der Hoek, Susan Elliott Sim, Myers and LaToza, and Leonardo Murta. I also would like to thank the feedback received from David Redmiles, Yi Wang, Andre van der Hoek, Thomas LaToza, Gustavo Oliva, Igor Steinmacher, and Igor Wiese.