Visual Languages and Human-Centric Computing September 9, 2004 Managing Duplicated Code with Linked Editing Michael Toomim, Andrew Begel and Susan L. Graham.

Slides:



Advertisements
Similar presentations
Productivity Tools For SAS . SAS ® users today ASAP ™Enhancement complementSoft introduces ASAP ™ an innovative productivity tool for SAS ® Diagramming.
Advertisements

Test-Driven Development José Almeida, Microsoft
System Analysis & Design Methods V Extreme Programming XP/dX.
Principles of Information Systems, Sixth Edition The Internet, Intranets, and Extranets Chapter 7.
Alternate Software Development Methodologies
Spoken Language Support for Software Development Andrew Begel University of California, Berkeley Advisor: Prof. Susan L. Graham.
Chapter 13 Programming Languages and Program Development
September 28, 2004 Programming By Voice Andrew Begel Advisor: Prof. Susan L. Graham University of California, Berkeley VL/HCC 2004.
Agile Methods and Extreme Programming CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 23, 2007.
Introduction to z/OS Basics © 2006 IBM Corporation Chapter 8: Designing and developing applications for z/OS.
XP and Refactoring David Talby. Development Methodologies The Software Crisis – 84% of software projects are not on time – 31% of software projects never.
1 Computing for Todays Lecture 22 Yumei Huo Fall 2006.
Academic Services Interactive Media Managing the Web with Java JA-SIG Winter 2002 Robert Sherratt Academic Services, Interactive Media.
Microsoft Office Illustrated Inserting Illustrations, Objects, and Media Clips.
Computer Skills Preparatory Year Presented by: L.Obead Alhadreti.
COP 2800 Lake Sumter State College Mark Wilson, Instructor.
WebQuilt and Mobile Devices: A Web Usability Testing and Analysis Tool for the Mobile Internet Tara Matthews Seattle University April 5, 2001 Faculty Mentor:
Evaluate the Usability of a User Interface Tool or Toolkit Assignment 1 Assignment 1 Evaluate the Usability of a User Interface Tool or Toolkit T. H Ranasinghe.
Your Interactive Guide to the Digital World Discovering Computers 2012.
Act! emarketing. 2 Increase the Value of Act! Integrated Marketing Easily access contacts, lookups, groups, and companies right from within Act!
Programming Languages: Telling the Computers What to Do Chapter 16.
Aurora: A Conceptual Model for Web-content Adaptation to Support the Universal Accessibility of Web-based Services Anita W. Huang, Neel Sundaresan Presented.
Software Concepts. Software & Hardware? Computer Instructions or data, anything that can be stored electronically is Software. Hardware is one that is.
AS Computing Software definitions.
Created by the Community for the Community BizTalk & Build.
Computer Science Victoria University of Wellington Copyright: david streader, Victoria University of Wellington Simple Design COMP
Office Live Workspace Visio 2007 Outlook 2007 Groove 2007 Access 2007 Excel 2007 Word 2007.
Testing in Extreme Programming
Usability Issues Documentation J. Apostolakis for Geant4 16 January 2009.
Programming Languages 1.07a.  A computer program is a series of instructions that direct a computer to perform a certain task.  A programming language.
Computer Programming A program is a set of instructions a computer follows in order to perform a task. solve a problem Collectively, these instructions.
HTML_Generators WB_HTML_Generators. What method are you going to choose to build your web page? MethodWrite Convert Html IssuesHTML HTML Editors Tool.
T-unit: Tcl Unit Test Package Automated Unit Test Package For Tcl Procedures Final Presentation Joseph Boyle Loyola Marymount University.
1 An Assessment of a Speech-Based Programming Environment Andrew Begel Microsoft Research (formerly UC Berkeley)
1.8History of Java Java –Based on C and C++ –Originally developed in early 1991 for intelligent consumer electronic devices Market did not develop, project.
DATABASE DEVELOPMENT Overview. Definitions A Database is a structured collection of related data (not necessarily electronic) A Relational database is.
Portfolio v1.0 Products. Benefits Scalable Fast Full interface via web services Fully integrated with Microsoft SharePoint Easy navigation Competence.
MSFC Avionics Department Flight Software Group CMM Level 2 Certified Automated Software Coding Standards System Development Team Assessment Team Luis Trevino.
Alcatel-Lucent CDC Workshop, Coaching & Knowledge Transfer Coding.
C++ and Ubuntu Linux Review and Practice CS 244 Brent M. Dingle, Ph.D. Game Design and Development Program Department of Mathematics, Statistics, and.
CASE Tools Union Palenshus. In the early days… ► Software engineering tools consisted solely of translators, compilers, assemblers, linkers, loaders,
Module 2: Using Microsoft Visual Studio.NET. Overview Overview of Visual Studio.NET Creating an ASP.NET Web Application Project.
Microsoft Visual Studio 2010 Teacher: Ms. Olifer.
Elucidative Programming Kurt Nørmark Aalborg University Denmark SIGDOC September 2000.
Sample School Website. What is wrong with the existing School Webspace Site? Can only host static pages – no dynamic content possible. Can not be edited.
Refactoring 101 William C. Wake
Principles of Information Systems, Sixth Edition 1 The Internet, Intranets, and Extranets Chapter 7.
Design and Implementation of a Rationale-Based Analysis Tool (RAT) Diploma thesis from Timo Wolf Design and Realization of a Tool for Linking Source Code.
Intro to Programming Web Design ½ Shade Adetoro. Programming Slangs IDE - Integrated Development Environment – the software in which you develop an application.
CS251 – Software Engineering Lectures 18: Intro to DP Slides by Rick Mercer, Christian Ratliff, Oscar Nierstrasz and others 1 و ابتغ فيما آتاك الله الدار.
CSE 403 Lecture 27 Course Wrap-up Discussion slides created by Marty Stepp
Programming Languages
Mephisto Backup for Linux. By: Phillip Tribble.. Overview ➲ Purpose. ➲ What is Mephisto ? ➲ Feature List. ➲ What makes it different ? ➲ Links and documentation.
Ontology domain & modeling extensions. Modeling enhancements: overview Enhancements: – Increased expressivity in ontology – Increased expressivity in.
1 Auto GUI Generation Ali Adams Bournemouth University, 1999
UNDERSTANDING YOUR OPTIONS FOR CLIENT-SIDE DEVELOPMENT IN OFFICE 365 Mark Rackley
XML 2002 Annotation Management in an XML CMS A Case Study.
How to program Or, how to write better programs. Inspired by ● 'The pragmatic programmer' by Andrew Hunt and David Thomas –
Computer Science Victoria University of Wellington Copyright: david streader, Victoria University of Wellington Simple Design COMP
XP Creating Web Pages with Microsoft Office
CS 501: Software Engineering Fall 1999 Lecture 23 Design for Usability I.
Manifesto for Agile Software Development
Ashima Wadhwa Assistant Professor(giBS)
Web Routing Designing an Interface
System And Application Software
Ada – 1983 History’s largest design effort
eXtreme Programming (XP) and eXtreme Modeling (XM)
Prototype using PowerPoint
Continuous Integration
Presentation transcript:

Visual Languages and Human-Centric Computing September 9, 2004 Managing Duplicated Code with Linked Editing Michael Toomim, Andrew Begel and Susan L. Graham Harmonia Research Group University of California at Berkeley

2 Duplicated Code is Bad

3 Extreme Programming Explained – Kent Beck “ The [simplest] system must contain no duplicate code ”

4 “ #1 in the stink parade is – Martin Fowler Refactoring duplicated code. ”

5 – Andrew Hunt and David Thomas “ DRY: Don’t Repeat Yourself ” The Pragmatic Programmer

6 Duplicated Code is Bad Causes verbosity/bloat, viscous edits, inconsistency, difficult maintainability But it will always exist Linked Editing makes it easy to work with

7 Abstraction. How do they manage it? The solution to duplication.

8 50 Years of Abstraction Functions, macros, objects, templates, aspects, generative programs, traits… –Language abstractions since Fortran Tools to help programmers find and refactor duplication –16 duplication finding algorithms published in last 14 years –Refactoring supported in mainstream IDE’s

9 Duplication is Everywhere [1] Baker (1995) 19% duplicated 1 X Window System: [2] Antoniol (2002) 20% duplicated 2 Linux Kernel: [3] Kamiya (2002) 25% duplicated 3 Sun Java JDK: [4] Ducasse (1999) 60% duplicated 4 Private payroll server:

10 Why We Duplicate Code Abstractions have usability problems –Difficult to create –Can make code worse –Can be impossible to express Programmers have no other alternative

11 Solution: Linked Editing Editor provides enhanced interaction: –Visualization, navigation, simultaneous editing of duplication Addresses the problems of duplication without the costs of abstraction Implemented in editor called Codelink

12 User Study 13 subjects (novice to expert) –Programming tasks with both Codelink and functional abstraction Measurements: –Time to abstract or link duplicated code –Benefits of the abstraction or link during programming tasks (rated by subjects)

13 Results: Creating a Link 13:06Mean abstraction time:13:06 minutes 22Mean link time:00:22 seconds ! Linking code took… 2.7% …of the abstraction time

14 Working with Linked Code Much Better Moderately Better Slightly Better Same Slightly Worse Maintainability Understandability Changeability Speed Effort Rated benefits of abstraction and Codelink over duplicated code

15 Linked Editing Worked Provided benefits comparable to abstraction …but required very little programming time

16 Future Research Directions Improved difference analysis Integrate with refactoring systems –Find duplicated code automatically –Refactor linked code automatically Linked Editing of other digital documents –Spreadsheets, web sites, music scores, these PowerPoint slides…

17 Contributions Linked Editing: –Manages duplicated code effectively –Easy to learn and use –Applicable in many domains

18 Michael Toomim: