oopsla 05 amiram yehudai a subjective report. 2 program invited speakers invited speakers technical...

71
OOPSLA 05 OOPSLA 05 Amiram Yehudai A subjective report A subjective report

Post on 20-Dec-2015

222 views

Category:

Documents


2 download

TRANSCRIPT

OOPSLA 05OOPSLA 05

Amiram Yehudai

A subjective reportA subjective report

22

ProgramProgram

Invited speakersInvited speakers Technical papersTechnical papers Practitioner reportsPractitioner reports Expert panelsExpert panels DemonstrationsDemonstrations Educational symposiaEducational symposia WorkshopsWorkshops TutorialsTutorials The Onward! track The Onward! track PostersPosters ……

33

Educators' SymposiumEducators' Symposium

Agile TeachingAgile Teaching Monday, 8:30, 1 hour 30 minutes, San Diego RoomMonday, 8:30, 1 hour 30 minutes, San Diego Room

Teaching TechniquesTeaching Techniques Monday, 10:30, 1 hour 30 minutes, San Diego RoomMonday, 10:30, 1 hour 30 minutes, San Diego Room

Keynote AddressKeynote Address Monday, 13:30, 1 hour 30 minutes, San Diego RoomMonday, 13:30, 1 hour 30 minutes, San Diego Room

Teaching ToolsTeaching Tools Monday, 15:30, 45 minutes, San Diego RoomMonday, 15:30, 45 minutes, San Diego Room

Looking to the FutureLooking to the Future Monday, 16:15, 1 hour 15 minutes, San Diego RoomMonday, 16:15, 1 hour 15 minutes, San Diego Room

Demos and PostersDemos and Posters Monday, 8:30, 9 hours, San Diego RoomMonday, 8:30, 9 hours, San Diego Room

44

Educators' Symposium Educators' Symposium Agile Teaching Agile Teaching The symposium begins with an The symposium begins with an

interactive presentation that illustrates interactive presentation that illustrates agility in the classroom via a Scrum agility in the classroom via a Scrum sprint with student apprentices. sprint with student apprentices.

Opening RemarksOpening Remarks Eugene WallingfordEugene Wallingford

Apprenticeship Agility in Apprenticeship Agility in AcademiaAcademia David West, Pam RostalDavid West, Pam Rostal

55

Apprenticeship Agility in Apprenticeship Agility in AcademiaAcademia David West, Pam Rostal, New Mexico Highlands UniversityDavid West, Pam Rostal, New Mexico Highlands University This presentation will use multimedia and scripted This presentation will use multimedia and scripted

theater to illustrate a typical development iteration as theater to illustrate a typical development iteration as practiced by the apprentices of the NMHU Software practiced by the apprentices of the NMHU Software Development Apprenticeship Program. Seven students Development Apprenticeship Program. Seven students and one faculty member will conduct a thirty-minute and one faculty member will conduct a thirty-minute Scrum sprint using minutes instead of days or hours Scrum sprint using minutes instead of days or hours as our unit of measure. By sharing our insights into as our unit of measure. By sharing our insights into overcoming the disruptions, distractions, and overcoming the disruptions, distractions, and impediments of the academic environment, we hope impediments of the academic environment, we hope to convey ideas that will be useful to all professional to convey ideas that will be useful to all professional software developers and educators who must respond software developers and educators who must respond to the challenge of teaching and experiencing agile to the challenge of teaching and experiencing agile software development techniques in an "inhospitable" software development techniques in an "inhospitable" environment.environment.

66

Educators' SymposiumEducators' Symposium Teaching TechniquesTeaching Techniques

A Laboratory for Teaching Object-Oriented A Laboratory for Teaching Object-Oriented Language and Design Concepts with TeachletsLanguage and Design Concepts with Teachlets Axel SchmolitzkyAxel Schmolitzky

Teaching OO Methodology in a Project-Driven Teaching OO Methodology in a Project-Driven CS2 CourseCS2 Course Barry Kurtz, Frank Barry, James WilkesBarry Kurtz, Frank Barry, James Wilkes

Modeling OO DesignModeling OO Design Robert RistRobert Rist

Roles of Variables in Object-Oriented Roles of Variables in Object-Oriented ProgrammingProgramming Petri Gerdt, Pauli Byckling, Jorma SajaniemiPetri Gerdt, Pauli Byckling, Jorma Sajaniemi

77

A Lab for Teaching OO A Lab for Teaching OO Concepts with Concepts with Teachlets Teachlets A Laboratory for Teaching Object-Oriented Language A Laboratory for Teaching Object-Oriented Language

and Design Concepts with Teachlets and Design Concepts with Teachlets Axel Schmolitzky, HamburgAxel Schmolitzky, Hamburg Teachlets are a new method originally developed to Teachlets are a new method originally developed to

teach design patternsteach design patterns. . Based on executable code, a Based on executable code, a problem is set that is to be solved collaboratively and problem is set that is to be solved collaboratively and interactively by all the participants of a teaching unitinteractively by all the participants of a teaching unit. . A moderator is on hand to operate the computer, the A moderator is on hand to operate the computer, the development environment and video projector when development environment and video projector when called upon to do socalled upon to do so. . While deployable in themselves While deployable in themselves as an innovative teaching method, teachlets can also as an innovative teaching method, teachlets can also be used as a design object in seminarbe used as a design object in seminar--like workshop like workshop eventsevents. . In the course on advanced concepts of objectIn the course on advanced concepts of object--oriented programming described here, the oriented programming described here, the participants themselves developed and used teachlets participants themselves developed and used teachlets in a soin a so--called teachlet laboratorycalled teachlet laboratory. .

88

Teaching OO Teaching OO Methodology in a Methodology in a Project-Driven CS2 Project-Driven CS2 CourseCourse Barry Kurtz, Frank Barry, James Wilkes, Appalachian Barry Kurtz, Frank Barry, James Wilkes, Appalachian

State UniversityState University After we adopted an objects-first approach in CS1, we After we adopted an objects-first approach in CS1, we

realized this meant redesigning our CS2 and data realized this meant redesigning our CS2 and data structures courses. This paper reports on our efforts to structures courses. This paper reports on our efforts to develop a project-driven CS2 course that expands on the develop a project-driven CS2 course that expands on the object-oriented methodology introduced in the CS1 object-oriented methodology introduced in the CS1 course. We omitted some traditional data structures course. We omitted some traditional data structures materials, such as pointer implementations of linked materials, such as pointer implementations of linked lists, and concentrated on using Java Collections. Our lists, and concentrated on using Java Collections. Our focus on using data structures in meaningful, large-scale focus on using data structures in meaningful, large-scale projects helped students understand why these projects helped students understand why these structures are important before concentrating on structures are important before concentrating on implementation in the subsequent data structures and implementation in the subsequent data structures and algorithms course. algorithms course.

C. Horstmann, Big Java + W. Savitch, Absolute JavaC. Horstmann, Big Java + W. Savitch, Absolute Java CS1 Use Blue J, CS2 Dr. JavaCS1 Use Blue J, CS2 Dr. Java

99

Roles of Variables in Roles of Variables in OOPOOP Petri GerdtPetri Gerdt, , Pauli BycklingPauli Byckling, , Jorma SajaniemiJorma Sajaniemi, ,

University of Joensuu, University of Joensuu, Roles can be assigned to occurrences of Roles can be assigned to occurrences of

variables in programs according to a small variables in programs according to a small number of patterns of use that are both number of patterns of use that are both language- and algorithm-independent. Studies on language- and algorithm-independent. Studies on explicitly teaching roles of variables to novice explicitly teaching roles of variables to novice students have shown that roles are an excellent students have shown that roles are an excellent pedagogical tool for clarifying the structure and pedagogical tool for clarifying the structure and meaning of programs. This paper describes the meaning of programs. This paper describes the results of an investigation designed to test the results of an investigation designed to test the understandability and acceptability of the role understandability and acceptability of the role concept and of the individual roles in novice-level concept and of the individual roles in novice-level object-oriented programming. object-oriented programming.

1010

Roles of Variables in Roles of Variables in OOP (cont)OOP (cont) The investigation consisted of a short tutorial on roles, The investigation consisted of a short tutorial on roles,

a brief training session on assigning roles to variables, a brief training session on assigning roles to variables, a test evaluating the subjects' ability to assign roles, a test evaluating the subjects' ability to assign roles, and a set of open questions concerning their opinions and a set of open questions concerning their opinions of roles. The responses of 43 computer science of roles. The responses of 43 computer science educators were analyzed. Every role was identified at educators were analyzed. Every role was identified at least by 50% accuracy, and in typical uses of variables least by 50% accuracy, and in typical uses of variables by 70-100% accuracy. Subjects' comments on the role by 70-100% accuracy. Subjects' comments on the role concept in general were mostly positive. The role set concept in general were mostly positive. The role set used in the investigation turned out to be suitable for used in the investigation turned out to be suitable for describing variable usage in novice-level programming describing variable usage in novice-level programming with some supplements. The study suggests that with some supplements. The study suggests that more roles are needed in novice-level object-oriented more roles are needed in novice-level object-oriented programming than in novice-level procedural programming than in novice-level procedural programming. programming.

http://www.cs.joensuu.fi/~saja/var_roles/http://www.cs.joensuu.fi/~saja/var_roles/

1111

Educators' SymposiumEducators' SymposiumKeynote: Keynote: Ward Ward CunninghamCunningham

This year, we are honored to have as our This year, we are honored to have as our keynote speaker Ward Cunningham. Ward has keynote speaker Ward Cunningham. Ward has pioneered so many of the ideas and tools we all pioneered so many of the ideas and tools we all use today: object-oriented programming, CRC use today: object-oriented programming, CRC cards, patterns, wiki, extreme programming, cards, patterns, wiki, extreme programming, test-first design, and FIT. In his talk, Ward will test-first design, and FIT. In his talk, Ward will offer some advice for how we can recognize offer some advice for how we can recognize good ideas in their humility, how to nurture good good ideas in their humility, how to nurture good ideas to fruition, and how we might teach these ideas to fruition, and how we might teach these skills in our courses. skills in our courses.

Nurturing the Feeble SimplicityNurturing the Feeble Simplicity

1212

Educators' SymposiumEducators' SymposiumTeaching ToolsTeaching Tools This session consists of a paper session and a panel. The This session consists of a paper session and a panel. The

papers explore ways that educators are using two of Ward's papers explore ways that educators are using two of Ward's innovations, CRC cards and FIT tests, in the classroom. The innovations, CRC cards and FIT tests, in the classroom. The panel looks to the future of OO education, in particular panel looks to the future of OO education, in particular seemingly never-ending tug-of-war around language and seemingly never-ending tug-of-war around language and programming style in the first-year courses. Both of these programming style in the first-year courses. Both of these subsessions will be contain ample time for the authors, subsessions will be contain ample time for the authors, panelists, and attendees to discuss the ideas under panelists, and attendees to discuss the ideas under consideration. consideration.

Improving CRC-Card Role-Play with Role-Play Improving CRC-Card Role-Play with Role-Play DiagramsDiagrams Jürgen BörstlerJürgen BörstlerMonday, 15:30, 20 minutes, San Diego RoomMonday, 15:30, 20 minutes, San Diego Room

The Practice of Specifying Requirements Using The Practice of Specifying Requirements Using Executable Acceptance Tests in Computer Science Executable Acceptance Tests in Computer Science CoursesCourses Grigori Melnik, Frank MaurerGrigori Melnik, Frank MaurerMonday, 15:50, 20 minutes, San Diego RoomMonday, 15:50, 20 minutes, San Diego Room

1313

Improving CRCImproving CRC--Card Card RoleRole--Play w/ RolePlay w/ Role--Play Play DiagramsDiagrams Jürgen BörstlerJürgen Börstler, Umeä University, Umeä University CRC cards are a lightweight approach to collaborative objectCRC cards are a lightweight approach to collaborative object--oriented oriented

modellingmodelling. . They have been adopted by many educators and trainers They have been adopted by many educators and trainers to teach early objectto teach early object--oriented designoriented design. . Reports in the literature are Reports in the literature are generally positivegenerally positive. . So is our own experienceSo is our own experience. . However, over the years, However, over the years, we have noticed many subtle problems and issues that have largely we have noticed many subtle problems and issues that have largely gone unnoticed in the literaturegone unnoticed in the literature. .

In this paper, we discuss the problems and issues we experienced In this paper, we discuss the problems and issues we experienced when teaching CRC cards to novices. Two major sources of problems when teaching CRC cards to novices. Two major sources of problems can be traced back to CRC card role play. One is the usage of CRC can be traced back to CRC card role play. One is the usage of CRC cards as substitutes for actual objects during the scenario role-play cards as substitutes for actual objects during the scenario role-play and the other the difficulty to document or trace the scenario role-and the other the difficulty to document or trace the scenario role-play "on the fly". We propose a new type of diagram to support the play "on the fly". We propose a new type of diagram to support the role play activities and to overcome these problems. Our experience role play activities and to overcome these problems. Our experience so far is quite positive. Novices have fewer problems with role-play so far is quite positive. Novices have fewer problems with role-play activities when using these diagrams. Teaching and learning the new activities when using these diagrams. Teaching and learning the new type of diagram adds only little overhead to the overall CRC type of diagram adds only little overhead to the overall CRC approach. approach.

We also provide general guidelines for CRC card usage. Although our We also provide general guidelines for CRC card usage. Although our improvements are aimed at novices, we believe that the proposed improvements are aimed at novices, we believe that the proposed diagram is useful even for professional software development. diagram is useful even for professional software development.

1414

Requirements Using Requirements Using Executable Acceptance Executable Acceptance Tests in CS CoursesTests in CS Courses The Practice of Specifying Requirements Using The Practice of Specifying Requirements Using

Executable Acceptance Tests in Computer Science Executable Acceptance Tests in Computer Science CoursesCourses

Grigori MelnikGrigori Melnik, , Frank MaurerFrank Maurer, University of Calgary, University of Calgary

This report describes the practice of using executable This report describes the practice of using executable acceptance testing for specifying programming acceptance testing for specifying programming assignments in software engineering courses. We assignments in software engineering courses. We summarize experiences from two courses introduced in summarize experiences from two courses introduced in two academic institutions over four semesters—both from two academic institutions over four semesters—both from students' and instructors' perspectives. Examples of students' and instructors' perspectives. Examples of projects and the discussion of the assignment flows are projects and the discussion of the assignment flows are given. The paper highlights testing as an all-given. The paper highlights testing as an all-encompassing activity in software development projects. encompassing activity in software development projects. It also contains recommendations for academics thinking It also contains recommendations for academics thinking of incorporating executable acceptance testing into their of incorporating executable acceptance testing into their courses. courses.

1515

Educators' SymposiumEducators' SymposiumLooking to the FutureLooking to the Future The symposium closes with a panel discussion and an The symposium closes with a panel discussion and an

open-mike session. The panel looks to the future of open-mike session. The panel looks to the future of OO education, in particular seemingly never-ending OO education, in particular seemingly never-ending tug-of-war around language and programming style in tug-of-war around language and programming style in the first-year courses. The open-mike session session the first-year courses. The open-mike session session gives participants a chance to share their best gives participants a chance to share their best teaching ideas and their ideas for future Educators's teaching ideas and their ideas for future Educators's Symposia. Symposia.

Are We Doomed? Reframing the DiscussionAre We Doomed? Reframing the Discussion Robert Biddle, Alistair Cockburn, Brian Marick, Alan Robert Biddle, Alistair Cockburn, Brian Marick, Alan O'Callaghan, Eugene Wallingford, moderatorO'Callaghan, Eugene Wallingford, moderatorMonday, 16:15, 1 hour, San Diego RoomMonday, 16:15, 1 hour, San Diego Room

Closing SessionClosing Session Eugene WallingfordEugene WallingfordMonday, 17:15, 15 minutes, San Diego RoomMonday, 17:15, 15 minutes, San Diego Room

1616

Panel: Are We Panel: Are We Doomed? Reframing Doomed? Reframing the Discussion the Discussion Robert BiddleRobert Biddle, Carleton University, Carleton University Alistair CockburnAlistair Cockburn, Humans and Technology, Humans and Technology Brian MarickBrian Marick, Independent Consultant, Independent Consultant Alan O'CallaghanAlan O'Callaghan, De Montfort University, De Montfort University Eugene Wallingford, moderatorEugene Wallingford, moderator, U. of Northern , U. of Northern

IowaIowa

At universities around the world, interest in computer At universities around the world, interest in computer science has plummeted. Is this decline part of a science has plummeted. Is this decline part of a cyclical trend, or a reflection of a change in the world cyclical trend, or a reflection of a change in the world in which computing operates? This panel discussion in which computing operates? This panel discussion will discuss the state of computer science education will discuss the state of computer science education and what we as computer science educators can do to and what we as computer science educators can do to redefine university computing education. The redefine university computing education. The audience will participate in the discussion! audience will participate in the discussion!

1717

Panel: Are We Panel: Are We Doomed? – some Doomed? – some points mentionedpoints mentioned Teach about design.Teach about design. Ruby on rails - Rails is a fullRuby on rails - Rails is a full--stack, stack,

openopen--source web framework in source web framework in Ruby for writing realRuby for writing real--world world applications applications with joy and less with joy and less codecode than most frameworks than most frameworks spend doing XML sit-upsspend doing XML sit-ups– http://www.rubyonrails.com/ http://www.rubyonrails.com/ – moviemovie

1818

Panel: Are We Panel: Are We Doomed? – what to Doomed? – what to teach?teach? What do educated people need to What do educated people need to

know about CS (course by B. know about CS (course by B. Kernighan)Kernighan)

Give students a working project, Give students a working project, replace pieces.replace pieces.

User interaction designUser interaction design Team work, comm. skillsTeam work, comm. skills Look at performance arts curriculumLook at performance arts curriculum

1919

2020

Educators' SymposiumEducators' SymposiumDemos and PostersDemos and Posters A Pattern-based Approach for Introducing Object-Oriented Analysis A Pattern-based Approach for Introducing Object-Oriented Analysis

and Design in Undergraduate Coursesand Design in Undergraduate Courses Haitham HamzaHaitham Hamza

Double Dispatch for Two-Tiered Type CheckingDouble Dispatch for Two-Tiered Type Checking Adair DingleAdair Dingle

Green: A Pedagogically Customizable Round-tripping UML Class Green: A Pedagogically Customizable Round-tripping UML Class Diagram Eclipse Plug-inDiagram Eclipse Plug-in Carl Alphonce, Blake MartinCarl Alphonce, Blake Martin

Implementing Operating Systems the Object-Oriented WayImplementing Operating Systems the Object-Oriented Way Juan Carlos Guzman, Patrick BobbieJuan Carlos Guzman, Patrick Bobbie

KlassroomSwing: A GUI Package for StudentsKlassroomSwing: A GUI Package for Students Dean SandersDean Sanders

Teaching Web Services with WaterTeaching Web Services with Water Matt Kendall, Ed GehringerMatt Kendall, Ed Gehringer

Virtual PC: Letting Your Students Install and Explore Without FearVirtual PC: Letting Your Students Install and Explore Without Fear Joe HummelJoe Hummel

Visual OS: An Object-Oriented Approach to Teaching Operating Visual OS: An Object-Oriented Approach to Teaching Operating System ConceptsSystem Concepts James Hill, Aniruddha GokhaleJames Hill, Aniruddha Gokhale

2121

invited speakersinvited speakers

Robert HassRobert Hass Gerald Jay Gerald Jay SussmanSussman, Why Programming is , Why Programming is

a Good Medium for Expressing Poorly a Good Medium for Expressing Poorly Understood and Sloppily Formulated Understood and Sloppily Formulated IdeasIdeas

David P. ReedDavid P. Reed Martin FowlerMartin Fowler Grady Grady BoochBooch Jimmy WalesJimmy Wales, Wikipedia in the Free , Wikipedia in the Free

Culture RevolutionCulture Revolution Mary Beth Mary Beth RossonRosson

2222

invited speakerinvited speaker

CreativityCreativity Robert HassRobert Hass, Chancellor of The , Chancellor of The

Academy of American PoetsAcademy of American Poets safety vs. freedomsafety vs. freedom memory/ knowledge preservation vs. memory/ knowledge preservation vs.

innovationinnovation vietnamese saying "spit streight up – vietnamese saying "spit streight up –

learn something"learn something" book by Arthur Kestler on creativity??book by Arthur Kestler on creativity??

2323

invited speakerinvited speaker

Designing Croquet's TeaTime Designing Croquet's TeaTime - - A RealA Real--time, Temporal time, Temporal Environment for Active Object Environment for Active Object CooperationCooperation

David P. ReedDavid P. Reed,, Co-architect of CroquetCo-architect of Croquet

2424

invited speakerinvited speaker

Finding Good DesignFinding Good Design Martin FowlerMartin Fowler, Chief Scientist, , Chief Scientist,

ThoughtWorksThoughtWorks

2525

Martin FowlerMartin Fowler

Martin Fowler was best described by Brian Martin Fowler was best described by Brian Foote as "an intellectual jackal with good Foote as "an intellectual jackal with good taste in carrion". He's not come up with great taste in carrion". He's not come up with great languages or tools, built major companies or languages or tools, built major companies or found academic success. He's an author who found academic success. He's an author who has struggled with understanding what good has struggled with understanding what good design might be and how to communicate it. design might be and how to communicate it. His books on patterns, refactoring, UML, and His books on patterns, refactoring, UML, and agile development reflect this question and agile development reflect this question and his struggles to find an answer. He hasn't his struggles to find an answer. He hasn't succeeded yet, but is happy to share his succeeded yet, but is happy to share his current position, lost in a maze of twisty current position, lost in a maze of twisty objects, all alikeobjects, all alike

2626

Martin Fowler:Martin Fowler: Finding Good DesignFinding Good Design Don’t separate design from ProgrammingDon’t separate design from Programming Most important principle: avoid Most important principle: avoid

duplicationduplication Separate UI code from all else – imagine Separate UI code from all else – imagine

you need two different UIsyou need two different UIs Performance problems come from the DBPerformance problems come from the DB The network is never transparatentThe network is never transparatent Patterns are a “chunking mechanisms” Patterns are a “chunking mechanisms” Books should be written so that one does Books should be written so that one does

not need to read them end to end.not need to read them end to end.

2727

invited speakerinvited speaker

On Creating a Handbook of On Creating a Handbook of Software ArchitectureSoftware Architecture

Grady BoochGrady Booch, Free Radical, IBM, Free Radical, IBM

2828

Grady BoochGrady BoochOn Creating a Handbook of On Creating a Handbook of Software ArchitectureSoftware Architecture It is a sign of maturity for any given engineering It is a sign of maturity for any given engineering

discipline when we can name, study, and apply discipline when we can name, study, and apply the patterns relevant to that domain. In civil the patterns relevant to that domain. In civil engineering, chemical engineering, mechanical engineering, chemical engineering, mechanical engineering, electrical engineering, and now even engineering, electrical engineering, and now even genomic engineering, there exist libraries of genomic engineering, there exist libraries of common patterns that have proven themselves common patterns that have proven themselves useful in practice. Unfortunately, no such useful in practice. Unfortunately, no such architectural reference yet exists for software-architectural reference yet exists for software-intensive systems. Although the patterns intensive systems. Although the patterns community has pioneered the vocabulary of community has pioneered the vocabulary of design patterns through the work of the Hillside design patterns through the work of the Hillside Group and the Gang of Four, our industry has no Group and the Gang of Four, our industry has no parallel to the architecture handbooks found in parallel to the architecture handbooks found in more mature design disciplines. more mature design disciplines.

2929

Grady BoochGrady BoochOn Creating a Handbook of On Creating a Handbook of Software ArchitectureSoftware Architecture Following the work of Bruce Anderson, who Following the work of Bruce Anderson, who

over a decade ago conducted a series of over a decade ago conducted a series of workshops at OOPSLA, I've begun an effort to workshops at OOPSLA, I've begun an effort to fill this void in software engineering by fill this void in software engineering by codifying a the architecture of a large collection codifying a the architecture of a large collection of interesting software-intensive systems, of interesting software-intensive systems, presenting them in a manner that exposes their presenting them in a manner that exposes their essential patterns and that permits comparison essential patterns and that permits comparison across domains and architectural styles. across domains and architectural styles.

In this presentation, we'll examine the nature In this presentation, we'll examine the nature of architectural patterns and the process of of architectural patterns and the process of conducting architectural digs to harvest them, conducting architectural digs to harvest them, and then examine a few of the systems studied and then examine a few of the systems studied thus far. thus far.

3030

invited speakerinvited speakerOnwardOnward! ! KeynoteKeynote: : The End of UsersThe End of Users Mary Beth RossonMary Beth Rosson,, Pennsylvania State UniversityPennsylvania State University

3131

Mary Beth Rosson Mary Beth Rosson The End of UsersThe End of Users Over the past 20 years, user interface Over the past 20 years, user interface

designers and usability engineers have studied designers and usability engineers have studied and refined human-computer interaction and refined human-computer interaction techniques with the goal of improving people's techniques with the goal of improving people's productivity and experience. But the target of productivity and experience. But the target of these efforts "the end-user" is fast becoming a these efforts "the end-user" is fast becoming a thing of the past. Many people now construct thing of the past. Many people now construct software on their own, building artifacts that software on their own, building artifacts that range from email filters to spreadsheet range from email filters to spreadsheet simulations to interactive web applications. simulations to interactive web applications. These individuals are use-developers: they These individuals are use-developers: they build ad hoc solutions to everyday computing build ad hoc solutions to everyday computing needs. needs.

3232

Mary Beth Rosson Mary Beth Rosson The End of UsersThe End of Users Will use-developers help to resolve the software crisis? Will use-developers help to resolve the software crisis?

Given the right tools, people and groups may be able Given the right tools, people and groups may be able to rapidly develop custom solutions to many context-to rapidly develop custom solutions to many context-specific computing requirements, eliminating the wait specific computing requirements, eliminating the wait for IT professionals to analyze and engineer a solution. for IT professionals to analyze and engineer a solution. Or are these individuals a danger to society? Use-Or are these individuals a danger to society? Use-developers are informal programmers with no training developers are informal programmers with no training in software construction methods or computing in software construction methods or computing paradigms. They have little intrinsic motivation to test paradigms. They have little intrinsic motivation to test their products for even basic concerns like correctness their products for even basic concerns like correctness or safety. In this talk I argue that the transformation of or safety. In this talk I argue that the transformation of end-user to use-developer is well underway and end-user to use-developer is well underway and discuss the prospects for maximizing the benefits to discuss the prospects for maximizing the benefits to society while addressing the risks. society while addressing the risks.

3333

Research papersResearch papers

Research papers form the heart of the OOPSLA Research papers form the heart of the OOPSLA experienceexperience. . Research papers describe substantiated Research papers describe substantiated new research or novel technical results, advance the new research or novel technical results, advance the state of the art, or report on significant experience or state of the art, or report on significant experience or experimentationexperimentation. . The 29 technical papers were The 29 technical papers were selected after a rigorous peer review of 142 selected after a rigorous peer review of 142 submissions by an international program committee submissions by an international program committee consisting of 28 experts representing the spectrum of consisting of 28 experts representing the spectrum of object technologyobject technology. . Each paper was assigned to at Each paper was assigned to at least three reviewers with many reviewed by more, least three reviewers with many reviewed by more, and one by nineand one by nine. . The committee met faceThe committee met face--toto--face for face for two days in Los Angeles, Californiatwo days in Los Angeles, California. . The papers The papers selected for presentation at this conference should selected for presentation at this conference should advance the state of the art of object technology in advance the state of the art of object technology in significant wayssignificant ways. .

3434

Research papersResearch papers

Type TypesType Types Analysis AnalyzedAnalysis Analyzed Archetypal ArchitecturesArchetypal Architectures Language LingoLanguage Lingo Adaptation AdaptedAdaptation Adapted Machine MachineryMachine Machinery Tracing TracesTracing Traces Concurrency || ConcurrencyConcurrency || Concurrency Exceptional ExceptionsExceptional Exceptions

3535

Research papersResearch papersType TypesType Types Associated Types and Constraint PropaAssociated Types and Constraint Propa

gation for Mainstream Object-Oriented gation for Mainstream Object-Oriented GenericsGenerics Jaakko Järvi, Jeremiah Willcock, Andrew Jaakko Järvi, Jeremiah Willcock, Andrew LumsdaineLumsdaine

Generalized Algebraic Data Types Generalized Algebraic Data Types and Object-Oriented Programmingand Object-Oriented Programming

Andrew Kennedy, Claudio RussoAndrew Kennedy, Claudio Russo Scalable Component AbstractionsScalable Component Abstractions

Martin Odersky, Matthias ZengerMartin Odersky, Matthias Zenger

3636

Associated Types and Associated Types and Constraint Propagation Constraint Propagation …… Support for object-oriented programming has become an integral Support for object-oriented programming has become an integral

part of mainstream languages, and more recently generic part of mainstream languages, and more recently generic programming has gained widespread acceptance as well. A programming has gained widespread acceptance as well. A natural question is how these two paradigms, and their underlying natural question is how these two paradigms, and their underlying language mechanisms, should interact. One particular design language mechanisms, should interact. One particular design option, that of using subtyping to constrain the type parameters of option, that of using subtyping to constrain the type parameters of generic functions, has been chosen for the generics extensions to generic functions, has been chosen for the generics extensions to Java and C#. Certain shortcomings have previously been identified Java and C#. Certain shortcomings have previously been identified in using subtyping for constraining parametric polymorphism in in using subtyping for constraining parametric polymorphism in the context of generic programming. To address these, we the context of generic programming. To address these, we propose the expansion of object-oriented interfaces and subtyping propose the expansion of object-oriented interfaces and subtyping to include associated types and constraint propagation. Associated to include associated types and constraint propagation. Associated types are type members of interfaces and classes. Constraint types are type members of interfaces and classes. Constraint propagation allows certain constraints on type parameters to be propagation allows certain constraints on type parameters to be inferred from other constraints on those parameters and their use inferred from other constraints on those parameters and their use in base class type expressions. The paper demonstrates these in base class type expressions. The paper demonstrates these extensions in the context of Generic C# and presents a formalism extensions in the context of Generic C# and presents a formalism proving their safety. The formalism is applicable to other proving their safety. The formalism is applicable to other mainstream OO languages supporting F-bounded polymorphism, mainstream OO languages supporting F-bounded polymorphism, such as Java. such as Java.

3737

Generalized Algebraic Generalized Algebraic Data Types and OOPData Types and OOP Generalized algebraic data types Generalized algebraic data types ((GADTsGADTs) ) have received have received

much attention recently in the functional programming much attention recently in the functional programming communitycommunity. . They generalize the typeThey generalize the type--parameterized parameterized datatypes of ML and Haskell by permitting constructors to datatypes of ML and Haskell by permitting constructors to produce different typeproduce different type--instantiations of the same datatypeinstantiations of the same datatype. . GADTs have a number of applications, including strongly GADTs have a number of applications, including strongly typed evaluators, generic prettytyped evaluators, generic pretty--printing, generic traversals printing, generic traversals and queries, and typed LR parsingand queries, and typed LR parsing. . We show that existing We show that existing objectobject--oriented programming languages such as Java and C# oriented programming languages such as Java and C# can express GADT definitions, and a large class of GADTcan express GADT definitions, and a large class of GADT--manipulating programs, through the use of generics, manipulating programs, through the use of generics, subclassing, and virtual dispatchsubclassing, and virtual dispatch. . However, some programs However, some programs can be written only through the use of redundant runcan be written only through the use of redundant run--time time castscasts. . We propose a generalization of the type constraint We propose a generalization of the type constraint mechanisms of C# and Java to avoid the need for such casts, mechanisms of C# and Java to avoid the need for such casts, present a Visitor pattern for GADTs, and describe a switch present a Visitor pattern for GADTs, and describe a switch construct as an alternative to virtual dispatch on datatypesconstruct as an alternative to virtual dispatch on datatypes. . We formalize both extensions and prove a type soundness We formalize both extensions and prove a type soundness resultresult. .

3838

Scalable Component Scalable Component AbstractionsAbstractions We identify three programming language We identify three programming language

abstractions for the construction of reusable abstractions for the construction of reusable componentscomponents: : abstract type members, explicit abstract type members, explicit selftypes, and symmetric mixin compositionselftypes, and symmetric mixin composition. . Together, these abstractions enable us to Together, these abstractions enable us to transform an arbitrary assembly of static transform an arbitrary assembly of static program parts with hard references between program parts with hard references between them into a system of reusable componentsthem into a system of reusable components. . The transformation maintains the structure of The transformation maintains the structure of the original systemthe original system. . We demonstrate this We demonstrate this approach in two case studies, a approach in two case studies, a subjectsubject//observer framework and a compiler observer framework and a compiler frontfront--endend. .

Scala languageScala language

3939

Research papersResearch papersAnalysis AnalyzedAnalysis Analyzed Demand-Driven Points-to Analysis for JavDemand-Driven Points-to Analysis for Jav

aa Manu Sridharan, Denis Gopan, Lexin Manu Sridharan, Denis Gopan, Lexin Shan, Rastislav BodikShan, Rastislav Bodik

Deriving Object Deriving Object TypestatesTypestates in the Presence of Inter-Object Reference in the Presence of Inter-Object Referencess Mangala Gowri Nanda, Christian Grothoff, Mangala Gowri Nanda, Christian Grothoff, Satish ChandraSatish Chandra

Micro Patterns in Java CodeMicro Patterns in Java Code Joseph (Yossi) Gil, Itay MamanJoseph (Yossi) Gil, Itay Maman

4040

Research papersResearch papers Archetypal ArchitecturesArchetypal Architectures ArchMatEArchMatE

: From Architectural Styles to Object-Oriented Models t: From Architectural Styles to Object-Oriented Models through Exploratory Tool Supporthrough Exploratory Tool Support J. Andrés Díaz Pace, Marcelo R. CampoJ. Andrés Díaz Pace, Marcelo R. Campo

Modeling Architectural Patterns Using Architectural PriModeling Architectural Patterns Using Architectural Primitivesmitives Uwe Zdun, Paris AvgeriouUwe Zdun, Paris Avgeriou

Parametric Polymorphism for Software Component ArcParametric Polymorphism for Software Component Architectureshitectures Cosmin Oancea, Stephen WattCosmin Oancea, Stephen Watt

Using Dependency Models to Manage Complex SoftwaUsing Dependency Models to Manage Complex Software Architecturere Architecture Neeraj Sangal, Ev Jordan, Vineet Sinha, Daniel JacksonNeeraj Sangal, Ev Jordan, Vineet Sinha, Daniel Jackson

4141

Research papersResearch papers Language LingoLanguage Lingo ClassboxClassbox

/J: Controlling the Scope of Change in J/J: Controlling the Scope of Change in Javaava Alexandre Bergel, Stéphane Ducasse, Alexandre Bergel, Stéphane Ducasse, Oscar NierstraszOscar Nierstrasz

Interaction-Based Programming Interaction-Based Programming with Classageswith Classages Yu David Liu, Scott SmithYu David Liu, Scott Smith

Javari: Adding Reference Javari: Adding Reference Immutability to JavaImmutability to Java Matthew S. Tschantz, Michael D. ErnstMatthew S. Tschantz, Michael D. Ernst

4242

ClassboxClassbox//JJ: : Controlling Controlling the Scope of Change in the Scope of Change in JavaJava Unanticipated changes to complex software systems can Unanticipated changes to complex software systems can

introduce anomalies such as duplicated code, suboptimal introduce anomalies such as duplicated code, suboptimal inheritance relationships and a proliferation of runinheritance relationships and a proliferation of run--time time downcastsdowncasts. . Refactoring to eliminate these anomalies may Refactoring to eliminate these anomalies may not be an option, at least in certain stages of software not be an option, at least in certain stages of software evolutionevolution. . Classboxes are modules that restrict the visibility Classboxes are modules that restrict the visibility of changes to selected clients only, thereby offering more of changes to selected clients only, thereby offering more freedom in the way unanticipated changes may be freedom in the way unanticipated changes may be implemented, and thus reducing the need for convoluted implemented, and thus reducing the need for convoluted design anomaliesdesign anomalies. . In this paper we demonstrate how In this paper we demonstrate how classboxes can be implemented in staticallyclassboxes can be implemented in statically--typed typed languages like Javalanguages like Java. . We also present an extended case We also present an extended case study of Swing, a Java GUI package built on top of AWT, and study of Swing, a Java GUI package built on top of AWT, and we document the ensuing anomalies that Swing introduceswe document the ensuing anomalies that Swing introduces. . We show how ClassboxWe show how Classbox//J, a prototype implementation of J, a prototype implementation of classboxes for Java, is used to provide a cleaner classboxes for Java, is used to provide a cleaner implementation of Swing using local refinement rather than implementation of Swing using local refinement rather than subclassingsubclassing. .

4343

Javari: Adding Javari: Adding Reference Reference Immutability to Java Immutability to Java This paper describes a type system that is capable of expressing and This paper describes a type system that is capable of expressing and

enforcing immutability constraintsenforcing immutability constraints. . The specific constraint expressed The specific constraint expressed is that the abstract state of the object to which an immutable is that the abstract state of the object to which an immutable reference refers cannot be modified using that referencereference refers cannot be modified using that reference. . The The abstract state is abstract state is ((part ofpart of) ) the transitively reachable statethe transitively reachable state: : that is, the that is, the state of the object and all state reachable from it by following state of the object and all state reachable from it by following referencesreferences. . The type system permits explicitly excluding fields or The type system permits explicitly excluding fields or objects from the abstract state of an objectobjects from the abstract state of an object. . For a statically typeFor a statically type--safe safe language, the type system guarantees reference immutabilitylanguage, the type system guarantees reference immutability. . If the If the language is extended with immutability downcasts, then runlanguage is extended with immutability downcasts, then run--time time checks enforce the reference immutability constraintschecks enforce the reference immutability constraints. . This research This research builds upon a previous research in language support for reference builds upon a previous research in language support for reference immutabilityimmutability. . Improvements that are new in this paper include Improvements that are new in this paper include distinguishing the notions of assignability and mutability; integration distinguishing the notions of assignability and mutability; integration with Java 5's generic types and with multiwith Java 5's generic types and with multi--dimensional arrays; a dimensional arrays; a mutability polymorphism approach to avoiding code duplication; typemutability polymorphism approach to avoiding code duplication; type--safe support for reflection and serialization; and formal type rules for safe support for reflection and serialization; and formal type rules for a core calculusa core calculus. . Furthermore, it retains the valuable features of the Furthermore, it retains the valuable features of the previous dialect, including usability by humans previous dialect, including usability by humans ((as evidenced by as evidenced by experience with 160,000 lines of Javari codeexperience with 160,000 lines of Javari code) ) and interoperability with and interoperability with Java and existing JVMsJava and existing JVMs..

4444

Research papersResearch papers Adaptation AdaptedAdaptation Adapted Fine-Grained Interoperability through MirrFine-Grained Interoperability through Mirr

ors and Contractsors and Contracts Kathryn Gray, Robert Findler, Matthew Kathryn Gray, Robert Findler, Matthew FlattFlatt

Pluggable AOP: Designing Aspect Pluggable AOP: Designing Aspect Mechanisms for Third-party Mechanisms for Third-party CompositionComposition Sergei Kojarski, David LorenzSergei Kojarski, David Lorenz

Refactoring Support for Class Library Refactoring Support for Class Library MigrationMigration Ittai Balaban, Frank Tip, Robert FuhrerIttai Balaban, Frank Tip, Robert Fuhrer

4545

Pluggable AOPPluggable AOP: : Designing Aspect Designing Aspect Mechanisms for ThirdMechanisms for Third--party Compositionparty Composition Studies of AspectStudies of Aspect--Oriented Programming Oriented Programming ((AOPAOP) )

usually focus on a language in which a specific usually focus on a language in which a specific aspect extension is integrated with a base aspect extension is integrated with a base languagelanguage. . Languages specified in this manner Languages specified in this manner have a fixed, nonhave a fixed, non--extensible AOP functionalityextensible AOP functionality. . In this paper we consider the more general In this paper we consider the more general case of integrating a base language with a set case of integrating a base language with a set of domain specific thirdof domain specific third--party aspect party aspect extensions for that languageextensions for that language. . We present a We present a general mixingeneral mixin--based method for implementing based method for implementing aspect extensions in such a way that multiple, aspect extensions in such a way that multiple, independently developed, dynamic aspect independently developed, dynamic aspect extensions can be subject to thirdextensions can be subject to third--party party composition and work collaborativelycomposition and work collaboratively. .

4646

Refactoring Support Refactoring Support for Class Library for Class Library MigrationMigration As objectAs object--oriented class libraries evolve, classes are oriented class libraries evolve, classes are

occasionally deprecated in favor of others with occasionally deprecated in favor of others with roughly the same functionalityroughly the same functionality. . In Java's standard In Java's standard libraries, for example, class Hashtable has been libraries, for example, class Hashtable has been superseded by HashMap, and Iterator is now preferred superseded by HashMap, and Iterator is now preferred over Enumerationover Enumeration. .

Migrating client applications to use the new idioms is Migrating client applications to use the new idioms is often desirable, but making the required changes to often desirable, but making the required changes to declarations and allocation sites can be quite labor-declarations and allocation sites can be quite labor-intensive. Moreover, migration becomes complicatedintensive. Moreover, migration becomes complicated—and sometimes impossible—if an application —and sometimes impossible—if an application interacts with external components, if a deprecated interacts with external components, if a deprecated class is not completely equivalent to its replacement, class is not completely equivalent to its replacement, and if multiple interdependent types must be and if multiple interdependent types must be migrated simultaneously. migrated simultaneously.

4747

Refactoring Support for Refactoring Support for Class Library Migration Class Library Migration (cont.)(cont.)

We present an approach in which mappings We present an approach in which mappings between legacy types and their replacements between legacy types and their replacements are specified by the programmer. Then, an are specified by the programmer. Then, an analysis based on type constraints analysis based on type constraints determines where declarations and allocation determines where declarations and allocation sites can be updated. The method was sites can be updated. The method was implemented in Eclipse, and evaluated on a implemented in Eclipse, and evaluated on a number of Java applications. On average, our number of Java applications. On average, our tool could migrate more than 90% of the tool could migrate more than 90% of the references to legacy types in these references to legacy types in these benchmarks. benchmarks.

4848

Research papersResearch papers Machine MachineryMachine Machinery Automating Vertical ProfilingAutomating Vertical Profiling

Matthias Hauswirth, Amer Diwan, Peter Matthias Hauswirth, Amer Diwan, Peter Sweeney, Michael MozerSweeney, Michael Mozer

Improving Virtual Machine Performance Improving Virtual Machine Performance Using a Cross-Run RepositoryUsing a Cross-Run Repository Matthew Arnold, Adam Welc, V.T. RajanMatthew Arnold, Adam Welc, V.T. Rajan

Quantifying the Performance of Garbage Quantifying the Performance of Garbage Collection vs. Explicit Memory Collection vs. Explicit Memory ManagementManagement Matthew Hertz, Emery BergerMatthew Hertz, Emery Berger

Runtime Specialization With Optimistic Runtime Specialization With Optimistic Heap AnalysisHeap Analysis Ajeet Shankar, Rastislav Bodik, Subramanya Ajeet Shankar, Rastislav Bodik, Subramanya Sastry, James SmithSastry, James Smith

4949

Garbage Collection vsGarbage Collection vs. . Explicit Memory Explicit Memory ManagemntManagemnt Garbage collection yields numerous software Garbage collection yields numerous software

engineering benefits, but its quantitative engineering benefits, but its quantitative impact on performance remains elusiveimpact on performance remains elusive. . One One can measure the cost of conservative garbage can measure the cost of conservative garbage collection relative to explicit memory collection relative to explicit memory management in Cmanagement in C//CC++ ++ programs by linking in programs by linking in an appropriate collectoran appropriate collector. . This kind of direct This kind of direct comparison is not possible for languages comparison is not possible for languages designed for garbage collection designed for garbage collection ((ee..gg.., Java, Java)), , because programs in these languages naturally because programs in these languages naturally do not contain calls to freedo not contain calls to free. . Thus, the actual Thus, the actual gap between the timegap between the time--space performance of space performance of explicit memory management and precise, explicit memory management and precise, copying garbage collection remains unknowncopying garbage collection remains unknown. .

5050

Garbage Collection vsGarbage Collection vs. . Explct Mem Mngemnt Explct Mem Mngemnt (cont)(cont) We take the first steps towards quantifying the We take the first steps towards quantifying the

performance of precise garbage collection versus performance of precise garbage collection versus explicit memory management. We present a novel explicit memory management. We present a novel experimental methodology that lets us treat unaltered experimental methodology that lets us treat unaltered Java programs as if they used explicit memory Java programs as if they used explicit memory management. Our system generates exact object management. Our system generates exact object reachability information by processing heap traces reachability information by processing heap traces with the Merlin algorithm. It then re-executes the with the Merlin algorithm. It then re-executes the program, invoking free on objects just before they program, invoking free on objects just before they become unreachable. Since this point is the latest that become unreachable. Since this point is the latest that a programmer could explicitly free objects, our a programmer could explicitly free objects, our approach conservatively approximates explicit approach conservatively approximates explicit memory management. By executing inside an memory management. By executing inside an architecturally-detailed simulator, this ``oracular'' architecturally-detailed simulator, this ``oracular'' memory manager eliminates the effects of trace memory manager eliminates the effects of trace processing while measuring the costs of calling malloc processing while measuring the costs of calling malloc and free. and free.

5151

Garbage Collection vsGarbage Collection vs. . Explct Mem Mngemnt Explct Mem Mngemnt (cont)(cont) We compare explicit memory management to both We compare explicit memory management to both

copying and non-copying garbage collectors across a copying and non-copying garbage collectors across a range of benchmarks, and include non-simulated runs range of benchmarks, and include non-simulated runs that validate our results. Our results quantify the time-that validate our results. Our results quantify the time-space tradeoff of garbage collection: with five times as space tradeoff of garbage collection: with five times as much memory, the Appel-style generational garbage much memory, the Appel-style generational garbage collector matches the performance of explicit memory collector matches the performance of explicit memory management. With only three times as much memory, management. With only three times as much memory, it runs on average 17% slower than explicit memory it runs on average 17% slower than explicit memory management. However, with only twice as much management. However, with only twice as much memory, garbage collection degrades performance by memory, garbage collection degrades performance by nearly 70%. When physical memory is scarce, paging nearly 70%. When physical memory is scarce, paging causes garbage collection to run an order of causes garbage collection to run an order of magnitude slower than explicit memory management. magnitude slower than explicit memory management.

5252

Runtime Specialization Runtime Specialization With Optimistic Heap With Optimistic Heap AnalysisAnalysis Runtime specialization is an optimization process that can Runtime specialization is an optimization process that can

provide significant speedups by exploiting a program's runtime provide significant speedups by exploiting a program's runtime statestate. . Existing specializers employ a staged model that statically Existing specializers employ a staged model that statically identifies specialization code regions and constant heap identifies specialization code regions and constant heap locations, and then optimizes them at runtime once the locations, and then optimizes them at runtime once the constants are knownconstants are known. . This paper describes a dynamic program This paper describes a dynamic program specializer that is transparent, and thus does not require any specializer that is transparent, and thus does not require any static components such as programmer annotations or prestatic components such as programmer annotations or pre--runtime analysisruntime analysis. . The specializer uses The specializer uses ((11) ) a novel store profile to a novel store profile to identify constant heap locations that a staged system cannot, identify constant heap locations that a staged system cannot, such as constants present in an interpreted programsuch as constants present in an interpreted program. . This This information is used in tandem with information is used in tandem with ((22) ) a new algorithm for a new algorithm for finding specialization starting points based on a notion of finding specialization starting points based on a notion of influence to create specializationsinfluence to create specializations. (. (33) ) An automatic invalidation An automatic invalidation transformation efficiently monitors assumptions about heap transformation efficiently monitors assumptions about heap constants, and is able to deactivate specialized traces even if constants, and is able to deactivate specialized traces even if they are on the stackthey are on the stack. . An implementation of the specializer in An implementation of the specializer in Jikes RVM has low overhead in practice, selects specialization Jikes RVM has low overhead in practice, selects specialization points that would be chosen manually, and produces speedups points that would be chosen manually, and produces speedups of 1.2x to 6.3x on a variety of benchmarksof 1.2x to 6.3x on a variety of benchmarks. .

5353

Research papersResearch papers Tracing TracesTracing Traces Adding Trace Matching with Free Variables to Adding Trace Matching with Free Variables to

AspectJAspectJ Chris Allan, Pavel Avgustinov, Aske Simon Chris Allan, Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Christensen, Laurie Hendren, Sascha Kuzins, Ondrej Lhoták, Oege de Moor, Damien Sereni, Ondrej Lhoták, Oege de Moor, Damien Sereni, Ganesh Sittampalam, Julian TibbleGanesh Sittampalam, Julian Tibble

Finding Application Errors Using PQL: A Finding Application Errors Using PQL: A Program Query LanguageProgram Query Language Michael Martin, Benjamin Livshits, Monica LamMichael Martin, Benjamin Livshits, Monica Lam

Relational Queries Over Program TracesRelational Queries Over Program Traces Simon Goldsmith, Robert O'Callahan, Alex Simon Goldsmith, Robert O'Callahan, Alex AikenAiken

5454

Research papersResearch papersConcurrency || Concurrency || ConcurrencyConcurrency FormalisingFormalising

Java RMI with Explicit Code Mobility Java RMI with Explicit Code Mobility Alexander Ahern, Nobuko YoshidaAlexander Ahern, Nobuko Yoshida

Lifting Sequential Graph Lifting Sequential Graph Algorithms for Distributed-Algorithms for Distributed-Memory Parallel ComputationMemory Parallel Computation Douglas Gregor, Andrew LumsdaineDouglas Gregor, Andrew Lumsdaine

Safe Futures for JavaSafe Futures for Java Adam Welc, Suresh Jagannathan, Adam Welc, Suresh Jagannathan, Antony HoskingAntony Hosking

5555

Research papersResearch papersExceptional ExceptionsExceptional Exceptions Combining the Robustness of Checked ExcepCombining the Robustness of Checked Excep

tions with the Flexibility of Unchecked Excepttions with the Flexibility of Unchecked Exceptions using Anchored Exception Declarationsions using Anchored Exception Declarations Marko van Dooren, Eric SteegmansMarko van Dooren, Eric Steegmans

Incrementalization Across Object Incrementalization Across Object AbstractionAbstraction Annie Liu, Scott Stoller, Michael Gorbovitski, Annie Liu, Scott Stoller, Michael Gorbovitski, Tom Rothamel, Yanni LiuTom Rothamel, Yanni Liu

PolyD: A Flexible Dispatching PolyD: A Flexible Dispatching FrameworkFramework Antonio Cunei, Jan VitekAntonio Cunei, Jan Vitek

5656

… … Anchored Exception Anchored Exception DeclarationsDeclarations Combining the Robustness of Checked Combining the Robustness of Checked

Exceptions with the Flexibility of Unchecked Exceptions with the Flexibility of Unchecked Exceptions using Anchored Exception Exceptions using Anchored Exception DeclarationsDeclarations

Ever since their invention 30 years ago, Ever since their invention 30 years ago, checked exceptions have been a point of checked exceptions have been a point of much discussionmuch discussion. . On the one hand, they On the one hand, they increase the robustness of software by increase the robustness of software by preventing the manifestation of preventing the manifestation of unanticipated checked exceptions at rununanticipated checked exceptions at run--timetime. . On the other hand, they decrease the On the other hand, they decrease the adaptability of software because they must adaptability of software because they must be propagated explicitly, and must often be be propagated explicitly, and must often be handled even if they cannot be signalledhandled even if they cannot be signalled..

5757

… … Anchored Exception Anchored Exception DeclarationsDeclarations We show that the problems with checked We show that the problems with checked

exceptions are caused by a lack of expressiveness exceptions are caused by a lack of expressiveness of the exceptional return type of a method, which of the exceptional return type of a method, which currently dictates a copy & paste style. We add the currently dictates a copy & paste style. We add the required expressiveness by introducing anchored required expressiveness by introducing anchored exception declarations, which allow the exceptional exception declarations, which allow the exceptional behavior of a method to be declared relative to behavior of a method to be declared relative to that of others. We present the formal semantics of that of others. We present the formal semantics of anchored exception declarations, along with the anchored exception declarations, along with the necessary rules for ensuring compile-time safety, necessary rules for ensuring compile-time safety, and give a proof of soundness. We show that and give a proof of soundness. We show that anchored exception declarations do not violate the anchored exception declarations do not violate the principle of information hiding when used properly, principle of information hiding when used properly, and provide a guideline for when to use them.and provide a guideline for when to use them.

We have implemented anchored exception We have implemented anchored exception declarations in Cappuccino, which is an extension declarations in Cappuccino, which is an extension to the ClassicJava programming language.to the ClassicJava programming language.

5858

Incrementalization Incrementalization Across Object Across Object AbstractionAbstraction Object abstraction supports the separation of Object abstraction supports the separation of

what operations are provided by systems and what operations are provided by systems and components from how the operations are components from how the operations are implemented, and is essential in enabling the implemented, and is essential in enabling the construction of complex systems from construction of complex systems from componentscomponents. . Unfortunately, clear and modular Unfortunately, clear and modular implementations have poor performance when implementations have poor performance when expensive query operations are repeated, while expensive query operations are repeated, while efficient implementations that incrementally efficient implementations that incrementally maintain these query results are much more maintain these query results are much more difficult to develop and to understand, because difficult to develop and to understand, because the code blows up significantly and is no longer the code blows up significantly and is no longer clear or modularclear or modular. .

5959

Incrementalization Incrementalization Across Object Across Object Abstraction (cont)Abstraction (cont) This paper describes a powerful and systematic This paper describes a powerful and systematic

method that first allows the "what" of each component method that first allows the "what" of each component to be specified in a clear and modular fashion and to be specified in a clear and modular fashion and implemented straightforwardly in an object-oriented implemented straightforwardly in an object-oriented language; then analyzes the queries and updates, language; then analyzes the queries and updates, across object abstraction, in the straightforward across object abstraction, in the straightforward implementation; and finally derives the sophisticated implementation; and finally derives the sophisticated and efficient "how" of each component by and efficient "how" of each component by incrementally maintaining the results of repeated incrementally maintaining the results of repeated expensive queries with respect to updates to their expensive queries with respect to updates to their parameters. Our implementation and experimental parameters. Our implementation and experimental results for example applications in query optimization, results for example applications in query optimization, role-based access control, etc. demonstrate the role-based access control, etc. demonstrate the effectiveness and benefit of the method.effectiveness and benefit of the method.

(??) Can this be done with aspects?? Topic for MS??? (??) Can this be done with aspects?? Topic for MS??? Examples for classes ??? Examples for classes ???

6060

PolyDPolyD: : A Flexible A Flexible Dispatching Dispatching Framework Framework The standard dispatching mechanisms built into The standard dispatching mechanisms built into

programming languages are sometimes inadequate to programming languages are sometimes inadequate to the needs of the programmerthe needs of the programmer. . In the case of Java, the In the case of Java, the need for more flexibility has led to the development of need for more flexibility has led to the development of a number of tools, including visitors and multia number of tools, including visitors and multi--method method extensions, that each add some particular extensions, that each add some particular functionality, but lack the generality necessary to functionality, but lack the generality necessary to support usersupport user--defined dispatching mechanismsdefined dispatching mechanisms. . In this In this paper we advocate a more modular approach to paper we advocate a more modular approach to dispatching, and we present a tool, PolyD, that allows dispatching, and we present a tool, PolyD, that allows the programmer to design custom dispatching the programmer to design custom dispatching strategies and to parametrize many aspects of the strategies and to parametrize many aspects of the dispatching processdispatching process. . PolyD exhibits excellent PolyD exhibits excellent performance and compares well against existing toolsperformance and compares well against existing tools. .

6161

PanelsPanels

Aspects: Passing Fad or New Foundation?Aspects: Passing Fad or New Foundation? Steve Berczuk (Chair), Matthew Webster, Jack Greenfield, Steve Berczuk (Chair), Matthew Webster, Jack Greenfield, Ivar Jacobson, Gregor Kiczales, Dave ThomasIvar Jacobson, Gregor Kiczales, Dave Thomas

Fostering Software Robustness in an Increasingly Hostile WoFostering Software Robustness in an Increasingly Hostile World rld

Steven Fraser (Chair), Djenana Campara, Carl Chilley, Steven Fraser (Chair), Djenana Campara, Carl Chilley, Richard Gabriel, Ricardo Lopez, Dave Thomas, Greg UtasRichard Gabriel, Ricardo Lopez, Dave Thomas, Greg Utas

The Agile PanelThe Agile Panel Linda Rising (Chair), Mary Lynn Manns (Chair), Angela Linda Rising (Chair), Mary Lynn Manns (Chair), Angela Martin, Kevlin Henney, Alan O'Callaghan, Rebecca Wirfs-Martin, Kevlin Henney, Alan O'Callaghan, Rebecca Wirfs-BrockBrock

Echoes: Structured Design and Modern Software Practices Echoes: Structured Design and Modern Software Practices Steven Fraser (Chair), Kent Beck, Grady Booch, Larry Steven Fraser (Chair), Kent Beck, Grady Booch, Larry Constantine, Brian Henderson-Sellers, Steve McConnell, Constantine, Brian Henderson-Sellers, Steve McConnell, Rebecca Wirfs-Brock, Ed YourdonRebecca Wirfs-Brock, Ed Yourdon

Living With Legacy: Love It or Leave It?Living With Legacy: Love It or Leave It? Steve Berczuk (Chair), Steven Fraser, Bill Opdyke, Michael Steve Berczuk (Chair), Steven Fraser, Bill Opdyke, Michael Feathers, Dennis ManclFeathers, Dennis Mancl

6262

Panel - AspectsPanel - Aspects: : Passing Passing Fad or New Foundation?Fad or New Foundation? Matthew WebsterMatthew Webster, IBM, IBM

Jack GreenfieldJack Greenfield, Microsoft Corporation, Microsoft CorporationIvar JacobsonIvar Jacobson, Ivar Jacobson International & Jaczone, Ivar Jacobson International & JaczoneGregor KiczalesGregor Kiczales, University of British Columbia, University of British ColumbiaDave ThomasDave Thomas, Bedarra Research Labs, Carleton University, , Bedarra Research Labs, Carleton University, University of QueenslandUniversity of Queensland

Aspect-oriented software development (AOSD) has a lot of interest in Aspect-oriented software development (AOSD) has a lot of interest in the research community. It has also found early adopters in the research community. It has also found early adopters in application development and middleware. This panel discusses the application development and middleware. This panel discusses the potential expansion and use of AOP into mainstream software potential expansion and use of AOP into mainstream software development. development.

This question is not just directed to the aspect research community, This question is not just directed to the aspect research community, but also to practicing software development teams and organizations. but also to practicing software development teams and organizations. The panel will explore the appropriate position and awareness of The panel will explore the appropriate position and awareness of aspect-orientation amidst other advances in software engineering; aspect-orientation amidst other advances in software engineering; how to prepare organizations for adoption; and what additional how to prepare organizations for adoption; and what additional research and development is necessary. The panel discussion will research and development is necessary. The panel discussion will help the OO community to understand the appropriate use of aspect-help the OO community to understand the appropriate use of aspect-orientation. It will also highlight areas where additional efforts by orientation. It will also highlight areas where additional efforts by AOSD researchers and professionals are required. AOSD researchers and professionals are required.

6363

PanelPanel

The Agile PanelThe Agile Panel Linda Rising (Chair), Mary Lynn Linda Rising (Chair), Mary Lynn Manns (Chair), Angela Martin, Manns (Chair), Angela Martin, Kevlin Henney, Alan O'Callaghan, Kevlin Henney, Alan O'Callaghan, Rebecca Wirfs-BrockRebecca Wirfs-Brock

6464

PanelPanel

Echoes: Structured Design and MEchoes: Structured Design and Modern Software Practices odern Software Practices

Steven Fraser (Chair), Kent Beck, Steven Fraser (Chair), Kent Beck, Grady Booch, Larry Constantine, Grady Booch, Larry Constantine, Brian Henderson-Sellers, Steve Brian Henderson-Sellers, Steve McConnell, Rebecca Wirfs-Brock, McConnell, Rebecca Wirfs-Brock, Ed YourdonEd Yourdon

6565

Panel on Structured Panel on Structured Design Design Echoes: Structured Design and Modern Echoes: Structured Design and Modern

Software Practices Software Practices Rebecca Wirfs-Brock Rebecca Wirfs-Brock Brian Henderson Brian Henderson Larry Constantine Larry Constantine Ed Yourdon Ed Yourdon Kent Beck Kent Beck Grady Booch Grady Booch chaired by Steven Fraser, Qualcomm chaired by Steven Fraser, Qualcomm Link to Link to WikiWiki

6666

PanelPanel

Living With Legacy: Love It or LeaLiving With Legacy: Love It or Leave It?ve It? Steve Berczuk (Chair), Steven Steve Berczuk (Chair), Steven Fraser, Bill Opdyke, Michael Fraser, Bill Opdyke, Michael Feathers, Dennis ManclFeathers, Dennis Mancl

6767

Practitioner ReportsPractitioner Reports

Removing duplication from Removing duplication from javajava..ioio: : a case study using Traits a case study using Traits

Emerson MurphyEmerson Murphy--HillHill, , Philip Philip QuitslundQuitslund,,Andrew BlackAndrew Black, , Portland State UniversityPortland State University

6868

Removing duplication Removing duplication from javafrom java..ioio: : a case a case study using Traitsstudy using Traits Code duplication is a serious problem with no Code duplication is a serious problem with no

easy solution, even in industrial-strength code. easy solution, even in industrial-strength code. Single inheritance cannot provide for effective Single inheritance cannot provide for effective code reuse in all situations, and sometimes code reuse in all situations, and sometimes programmers are driven to duplicate code using programmers are driven to duplicate code using copy and paste. A language feature called traits copy and paste. A language feature called traits enables code to be shared across the enables code to be shared across the inheritance hierarchy, and claims to permit the inheritance hierarchy, and claims to permit the removal of most duplication. We attempted to removal of most duplication. We attempted to validate this claim in a case study of the java.io validate this claim in a case study of the java.io library. Detecting duplication was more complex library. Detecting duplication was more complex than we had imagined, but traits were indeed than we had imagined, but traits were indeed able to remove all that we found. able to remove all that we found.

6969

Demos: PatternStudio Demos: PatternStudio - - A A New Tool for Design Pattern New Tool for Design Pattern ManagementManagement While design patterns have been widely accepted as best practices in design While design patterns have been widely accepted as best practices in design

for a decade, their use is still limited owing to lack of a flexible supporting for a decade, their use is still limited owing to lack of a flexible supporting tooltool. . Many tools are built; however, they have technical restrictions that limit Many tools are built; however, they have technical restrictions that limit their use at largetheir use at large. . For example, they require developers to use a builtFor example, they require developers to use a built--in in programming language, which may not suit the developers' skills and programming language, which may not suit the developers' skills and preferencespreferences. . They use nonThey use non--standard serialization techniques; as a result, standard serialization techniques; as a result, developers cannot exchange patterns freely across different platformsdevelopers cannot exchange patterns freely across different platforms. . Lastly, they are not designed to be easily extendable; developers cannot Lastly, they are not designed to be easily extendable; developers cannot make any enhancement to match their needsmake any enhancement to match their needs. . We have developed a tool We have developed a tool that supports design patterns, called PatternStudio, as proposed in our that supports design patterns, called PatternStudio, as proposed in our OOPSLA'04 posterOOPSLA'04 poster. . The tool is an integrated environment specially designed The tool is an integrated environment specially designed to be languageto be language--neutral neutral ((multiple code templates can be supplied to generate multiple code templates can be supplied to generate code in different languagescode in different languages). ). It supports pattern interchange It supports pattern interchange ((patterns are patterns are serialized in the XML Metadata Interchange formatserialized in the XML Metadata Interchange format) ) and it is extendable and it is extendable ((the the tool itself is an Eclipse plugtool itself is an Eclipse plug--in and can be further extendedin and can be further extended). ). Moreover, the Moreover, the tool implements the concept of design verification; it checks whether a tool implements the concept of design verification; it checks whether a derivative model conforms to its originated patternderivative model conforms to its originated pattern. . In this demonstration, In this demonstration, we will describe how the tool is created from open technologies ewe will describe how the tool is created from open technologies e..gg. . Eclipse Eclipse Modeling Framework Modeling Framework ((EMFEMF)), Graphical Editing Framework , Graphical Editing Framework ((GEFGEF)), Java Emitter , Java Emitter Templates Templates ((JETJET)), and XML Schema , and XML Schema ((XSDXSD) ) and show how to work with patterns and show how to work with patterns ee..gg. . define a new pattern, verify a model against a pattern, and generate define a new pattern, verify a model against a pattern, and generate pattern code in different languagespattern code in different languages. . Also, we will explain how developers can Also, we will explain how developers can make enhancement by extending the toolmake enhancement by extending the tool. .

7070

Other eventsOther events

10 years of Sun10 years of Sun 2020thth OOPSLA OOPSLA

7171

SourcesSources

httphttp://://wikiwiki..cscs..uiucuiuc..eduedu//OOPSLA05OOPSLA05 http://www.oopsla.org/2005/http://www.oopsla.org/2005/