human-centered methods for improving api usabilitynatprog/papers/myers wapi 2017... ·...

39
Human-Centered Methods for Improving API Usability Brad A. Myers Human-Computer Interaction Institute School of Computer Science Carnegie Mellon University http://www.cs.cmu.edu/~bam [email protected] 1 © 2017 – Brad A. Myers

Upload: others

Post on 26-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

  • Human-Centered Methods for Improving API Usability

    Brad A. MyersHuman-Computer Interaction InstituteSchool of Computer ScienceCarnegie Mellon Universityhttp://www.cs.cmu.edu/[email protected]

    1© 2017 – Brad A. Myers

    http://www.cs.cmu.edu/%7Ebammailto:[email protected]

  • APIs

    • Application Programming Interfaces• Includes: libraries, toolkits, frameworks,

    software development kits (SDKs), etc.• Today: web services, “middleware”• Also: internal APIs for large software systems• Provides some functionality for reuse by other

    developers© 2017 – Brad A. Myers

    2

  • Stakeholders &Their Goals• [Myers, Stylos, CACM , 2016]

    © 2017 – Brad A. Myers

    3

  • Why APIs?• Some design goals for APIs:

    • Information Hiding – hide implementation• Provide device independence• Enable future changes to low level without requiring changes to application code• Protection of critical resources• Consistency for product consumer – toolkit can provide commonality• More robust code – toolkit implemented correctly• Run-time efficiency: provide services in an efficient way• Code reuse: Provide useful services only once• Programmer Productivity• …

    © 2017 – Brad A. Myers

    My Goal: Allow API usability to be a first-class quality metric considered by API designers 4

  • APIs are Important and Valuable

    • www.programmableweb.com – 17,508 APIs• Apigee says 77% of companies rating APIs

    “important” to making their systems and data available• Total market for API Web

    middleware was $5.5 billion in 2014

    • Google recently boughtApigee for $625M

    © 2017 – Brad A. Myers

    5

    http://www.programmableweb.com/

  • Why Apply Human-Centered Techniques?

    • Programming is a human activity• Take the human into account

    • “DevX” – like UX for User Experience• APIs are the “interface” between the programmer and the functionality• Design should be close to user’s plan

    • “Programming is the process of transforming a mental plan into one that is compatible with the computer.” — Jean-Michel Hoc

    • Closeness of mapping — Green and Petre• If an API cannot be used effectively by developers, it doesn’t work!

    • Even if it provides the right functionality• Using APIs incorrectly has resulted in bugs and security problems• Usability and quality are key influencers for the decision about which APIs to use

    © 2017 – Brad A. Myers

    6

  • “Human Centered Methods” ̶̶More Than Just Lab User Studies

    © 2017 – Brad A. Myers

    7

    • Contextual Inquiry• Contextual Analysis• Paper prototypes• Think-aloud protocols• Heuristic Evaluation• Affinity diagrams• Personas• Wizard of Oz• Task analysis• A/B testing• Cognitive Walkthrough• Cognitive Dimensions • KLM and GOMS (CogTool)• Video prototyping

    • Body storming• Expert interviews• Questionnaires• Surveys• Interaction Relabeling• Log analysis• Storyboards• Focus groups• Card sorting• Diary studies• Improvisation• Use cases• Scenarios• “Speed Dating”• …

  • Human Centered Approaches Across the Lifecycle

    Exploratory Studies Contextual Inquiries Interviews Surveys Lab Studies Corpus data mining

    Evaluative Studies Expert analyses Usability Evaluation Formal A/B Lab Testing

    Design Practices “Natural programming” Graphic & Interaction

    Design Prototyping

    Field Studies Logs & error reports

    [Myers, Ko, LaToza, Yoon. IEEE Computer, 2016]

    © 2017 – Brad A. Myers

    8

  • HCI Techniques We Have Used for APIs• “Contextual Inquiry” & Field Studies

    • What are the real problems & barriers that developers face?• “Natural Programming Elicitation”

    • Let programmers express how they expect the functionality to be provided• How should this API be designed?

    • Expert analyses• What are some potential problems with this API?• Heuristic Analysis – evaluate based on guidelines• Cognitive walkthrough – how hard will this specific task be to learn?

    • Lab studies of programmers using an API• Does my API work for programmers?• What problems do the target developers have with my API?• Is this design better than that one?

    © 2017 – Brad A. Myers

    9

  • “Natural Programming” Elicitation• Technique developed by my group to elicit developer’s

    “natural” expressions• Mental models of tasks, vocabulary, etc.

    • Blank paper tests• Must prompt for the tasks in a way that doesn’t bias the

    answers• Examples:

    • API Architecture• Words used• Which methods are on which classes

    © 2017 – Brad A. Myers

    10

  • Context:Natural Programming Project• Researching better tools for programming since 1978• Natural Programming project started in 1995 • Make programming easier and more correct by making it more natural

    • Closer to the way that people think about algorithms and solving their tasks• Methodology – human-centered approach

    • Perform studies to inform design• Provide new knowledge about what people do and think, & barriers

    • Guide the designs from the data• Design of programming languages and environments

    • Iteratively evaluate and improve the tools• Target novice, expert and end-user programmers

    © 2017 – Brad A. Myers

    11

    http://www.cs.cmu.edu/%7ENatProg/index.htmlhttp://www.cs.cmu.edu/%7ENatProg/index.html

  • End User Programming• People whose primary job is not programming• [Scaffidi, Shaw and Myers 2005]

    • 90 million computer users at work in US• 55 million will use spreadsheets or databases at work (and therefore may

    potentially program)• 13 million will describe themselves as programmers• 3 million professional programmers

    • All of these people use APIs!

    © 2017 – Brad A. Myers

    90,000,000

    55,000,000

    13,000,0006,000,000 3,000,000

    0

    20,000,000

    40,000,000

    60,000,000

    80,000,000

    100,000,000

    Users Spreadsheets andDBs

    Self-DescribedProgrammers

    Scientists &Engineers

    ProfessionalProgrammers

    12

  • Program Complexity and Sophistication

    Goal: Gentle Slope Systems

    Difficultyof

    Use

    Goal

    Flash

    ActionScript

    C Programming

    Visual Basic

    Basic

    C or C# ProgrammingSwing

    Java

    LowThreshold

    HighCeiling

    13© 2017 – Brad A. Myers

    Web Development

    CSS & HTML

    JavaScript

    editor

    Server-side

  • Our Studies of APIs• Our work started with Jeff Stylos’s PhD, 2005-2009

    • Interned in Microsoft’s API Usability group with Steven Clarke, et. al.• Which programming patterns are most usable?• Measures: learnability, errors, preferences• Studied:

    • Required parameters in constructors• Factory pattern• Object design• SAP’s APIs

    • Tools to help with APIs• New work: API designers’ needs

    © 2017 – Brad A. Myers

    14

  • What can be addressed?

    • All API designdecisions

    • Tools &documentationfor APIs

    © 2017 – Brad A. Myers

    15[Stylos & Myers, VL/HCC ‘2007]

  • Required Constructors Study• Compared create-set-call (default constructor)

    var foo = new FooClass();foo.Bar = ;foo.Use();

    • vs. required constructors (immutable classes):var tempBar = ;var foo = new FooClass(tempBar);foo.Use();

    • All participants assumed there would be a default constructor• Required constructors interfered with learning

    • Users wanted to experiment with what kind of object to use first• Preferred to not use temporary variables• Tradeoff with the security and reliability of immutable classes

    • See [Coblenz, Nelson, Aldrich, Myers, Sunshine: “Glacier: Transitive Class Immutability for Java”], Wed @ 11:00© 2017 – Brad A. Myers

    16

    [Stylos & Clarke, ICSE ‘2007]

  • “Factory” Pattern Study• Instead of “normal” creation: Widget w = new Widget();• Objects must be created by another class:

    AbstractFactory f = AbstractFactory.getDefault();Widget w = f.createWidget();

    • Used frequently in Java (>61) and .Net (>13) and SAP• Results:

    • When asked to design on “blank paper”, no one designed a factory• Time to develop using factories took 2.1 to 5.3 times longer compared

    to regular constructors (20:05 v. 9:31, 7:10 v. 1:20)• All subjects had difficulties getting using factories in APIs

    © 2017 – Brad A. Myers

    17

    [Ellis. Stylos & Myers, ICSE ‘2007]

  • Object Method Placement Study• Where to put functions when doing object-oriented

    design of APIs when multiple classes work together• mail_Server.send( mail_Message )

    vs.mail_Message.send( mail_Server )

    • When desired method is on the class that they start with, users were between 2.4 and 11.2 times faster (p < 0.05)

    • Starting class can bepredicted based on user’s tasks

    • More general terms should beused most commonly• Mail vs. Mail_server class• Java File class

    © 2017 – Brad A. Myers

    18

    Time to Find a Method

    0

    5

    10

    15

    20

    Email Task Web Task Thingies TaskTi

    me

    (min

    )

    Methods onExpected ObjectsMethods onHelper Objects

    [Stylos & Myers, FSE 2008]

    Chart2

    Email TaskEmail Task

    Web TaskWeb Task

    Thingies TaskThingies Task

    Methods on Expected Objects

    Methods on Helper Objects

    Time (min)

    Time to Find a Method

    1

    11.2

    2

    15.2

    2

    6.8

    Sheet1

    Average Time in Minutes to Find a Method (FSE paper) (p < 0.05)Email TaskWeb TaskThingies Task

    Methods on Expected Objects122

    Methods on Helper Objects11.215.26.8

    Average Time in Minutes to Construct (Factory Pattern) (p < 0.05)Sockets TaskThingies Task

    Using a Default Constructor9.51666666671.3333333333

    Using a Factory Pattern20.08333333337.1666666667

    Sheet1

    Methods on Expected Objects

    Methods on Helper Objects

    Time (min)

    Time to Find a Method

    Sheet2

    Using a Default Constructor

    Using a Factory Pattern

    Time (min)

    Time to Construct Objects

    Sheet3

  • Study of APIs for SAP

    • Study APIs for Enterprise Service-Oriented Architectures (“Web Services”)

    • Naming problems:• Too long• Not understandable• Differences in middle are frequently missed

    © 2017 – Brad A. Myers

    19

    [Jeong, Xie, Beaton, Myers, Stylos, Ehret, Karstens, Efeoglu, Busse, IS-EUD'2009]

  • eSOA Documentation Results

    • Multiple paths: unclear which one to use• Some paths were dead ends• Inconsistent look and feel

    caused immediate abandonmentof paths

    • Hard to find required information• Business background helped• Many other studies have reported

    documentation problems

    © 2017 – Brad A. Myers

    20

    (IS-EUD'2009)

  • Usability study of an API from SAP• Jeff Stylos as summer intern at SAP• SAP “Business Rules Framework Plus” API (BRFplus)• Interviews with users

    • Identified a mismatch of abstraction level• API was very flexible, but users had simple use cases

    • Natural programming techniques to identify expected designs

    • User studies of redesigned APIs• Showed were successful

    • Three months total work© 2017 – Brad A. Myers

    21

    [Stylos, Busse, Graf, Ziegler, Ehret, Karstens, VL/HCC’2008]

  • Evaluation based on Guidelines

    • Nielsen’s Heuristics, Cognitive Dimensions• Also Cognitive Walkthroughs• Example: consistency violation:

    © 2017 – Brad A. Myers

    22javax.xml.stream.XML.StreamWriter – [Rama, Kak, 2013]

  • SAP’s NetWeaver® Gateway Developer Tools

    • Plug-in to Visual Studio 2010 for developing using certain SAP APIs

    • We used the HCI methods of heuristic evaluation and cognitive walkthroughs to evaluate early prototypes

    • Our recommendations were quickly incorporated due to agile software development process

    © 2017 – Brad A. Myers

    23

  • Automated Tools (by Others)• Apply nine metrics to APIs

    [Rama, G.M. and Kak, A. Some structural measures of API usability. Software: Practice and Experience 45, 1 (Jan. 2013), 75–110]

    • E.g., consistency; avoid lists of strings; factory pattern; generic exceptions; …

    • API Concepts Framework takes uses of APIs into account[Scheller, T. and Kuhn, E. Automated measurement of API usability: The API concepts framework. Information and Software Technology 61 (May 2015), 145–162]

    • Interface Complexity; Implementation Complexity;Setup Complexity

    © 2017 – Brad A. Myers

    24

  • Our Tools to Help with APIs• If cannot change API, then fix the documentation and tools

    © 2017 – Brad A. Myers

    25

    • Mica

    • Jadeite

    • Calcite

    • Dacite

    • Euklas

    • Graphite

    • Apatite

    http://images.google.com/imgres?imgurl=http://www.orientaljadejewelry.com/DSCN0187.JPG&imgrefurl=http://www.orientaljadejewelry.com/bangles.htm&h=480&w=640&sz=33&hl=en&start=80&usg=__8TwN8oO0hOBrRBDl-NNOisyBsi4=&tbnid=7Hnu7F-4FzBLHM:&tbnh=103&tbnw=137&prev=/images?q=jadeite&start=60&ndsp=20&hl=en&rls=IBMA,IBMA:2006-17,IBMA:en&sa=Nhttp://images.google.com/imgres?imgurl=http://www.orientaljadejewelry.com/DSCN0187.JPG&imgrefurl=http://www.orientaljadejewelry.com/bangles.htm&h=480&w=640&sz=33&hl=en&start=80&usg=__8TwN8oO0hOBrRBDl-NNOisyBsi4=&tbnid=7Hnu7F-4FzBLHM:&tbnh=103&tbnw=137&prev=/images?q=jadeite&start=60&ndsp=20&hl=en&rls=IBMA,IBMA:2006-17,IBMA:en&sa=N

  • Mica Tool to Help Find Examples

    • MICA: Makes Interfaces Clear and Accessible

    • Use Google to find relevant pages• Match pages with Java keywords• Also notes which pages contain

    example code or definitions

    © 2017 – Brad A. Myers

    26

    [Stylos, Myers VL/HCC’2006]

  • Jadeite: Improved JavaDoc• JADEITE: Java API Documentation with Extra

    Information Tacked-on for Emphasis• http://www.cs.cmu.edu/~jadeite

    • Mine the web for usage of Java APIs• Fix JavaDoc to help address problems

    • Focus attention on most popular packagesand classes using font size

    • “Placeholders” for methods that userswant to exist

    • Automatically extracted code examplesfor how to createclasses

    • Related classes© 2017 – Brad A. Myers

    27

    [Stylos, Faulring, Yang, Myers, VL/HCC’2009]

    http://www.cs.cmu.edu/%7Ejadeitehttp://images.google.com/imgres?imgurl=http://www.orientaljadejewelry.com/DSCN0187.JPG&imgrefurl=http://www.orientaljadejewelry.com/bangles.htm&h=480&w=640&sz=33&hl=en&start=80&usg=__8TwN8oO0hOBrRBDl-NNOisyBsi4=&tbnid=7Hnu7F-4FzBLHM:&tbnh=103&tbnw=137&prev=/images?q=jadeite&start=60&ndsp=20&hl=en&rls=IBMA,IBMA:2006-17,IBMA:en&sa=Nhttp://images.google.com/imgres?imgurl=http://www.orientaljadejewelry.com/DSCN0187.JPG&imgrefurl=http://www.orientaljadejewelry.com/bangles.htm&h=480&w=640&sz=33&hl=en&start=80&usg=__8TwN8oO0hOBrRBDl-NNOisyBsi4=&tbnid=7Hnu7F-4FzBLHM:&tbnh=103&tbnw=137&prev=/images?q=jadeite&start=60&ndsp=20&hl=en&rls=IBMA,IBMA:2006-17,IBMA:en&sa=N

  • Calcite: Eclipse Plugin for Java• CALCITE: Construction And Language Completion

    Integrated Throughout Eclipse• http://www.cs.cmu.edu/~calcite

    • UI = Code completion in Eclipse since familiar and usable• Code completion in Eclipse augmented with Jadeite’s

    information• How to create

    objects of specificclasses?SSLSocket s = ???

    © 2017 – Brad A. Myers

    28

    [Mooty, Faulring, Stylos, Myers, VL/HCC’2010]

    |

    http://www.cs.cmu.edu/%7Ecalcite

  • Dacite: API Designer Annotates• DACITE: Design Annotations for Complementing Interfaces Targeting Effectiveness• Visiting Professor André L. Santos from University Institute of Lisbon, Portugal• Use Java annotations to declare properties of APIs

    • Instead of needing to search the web for them• More accurate & works for APIs with small user bases

    • Processed by Eclipse plugin to help with API discoverability• Unifies what Calcite did through crawling the web:

    • Supports static factories, factory methods, object builders, helper methods• Also adds additional patterns: decorators and composite classes• API designers know better what

    should be annotated

    • Lab user study showed effective• Twice as many tasks finished© 2017 – Brad A. Myers

    29

    [Santos, Myers, Journal of Systems & Software, April, 2017]

  • Euklas: Eclipse Plugin for JavaScript

    • EUKLAS: Eclipse Users’ Keystrokes Lessened by Attaching from Samples• http://www.cs.cmu.edu/~euklas

    • Postdoc Christian Dörner• Brings Java-like analysis to

    JavaScript• People often copy from examples

    in documentation• Auto-correct uses copy source

    context for errors due to copy &paste

    © 2017 – Brad A. Myers

    [Dörner, Faulring, Myers, PLATEAU'2014]

    30

    http://www.cs.cmu.edu/%7Eeuklas

  • Graphite: Eclipse Plugin for Literals

    • GRAPHITE: GRAphical Palettes Help Instantiate Types in the Editor.

    • Pop up a custom palette forspecialized constants (literals)in Eclipse• Regular

    expressions• Color palettes

    • Customizable© 2017 – Brad A. Myers

    31

    [Omar, Yoon, LaToza, Myers, ICSE'2012]

  • Apatite Documentation Tool

    • APATITE: Associative Perusing ofAPIs That Identifies Targets Easily• http://www.cs.cmu.edu/~apatite

    • Start with verbs (actions) andproperties and find whatclasses implement them

    • Find associated items• E.g., classes that are often used together• Classes that implement or are used by

    a method© 2013 – Brad A. Myers

    32

    [Eisenberg, Stylos, Faulring, Myers, VL/HCC'10]

    http://www.cs.cmu.edu/%7Eapatite

  • New Project• Funded by a grant from Google• Interview and survey API designers

    • Processes used• Barriers to high usability• Information needs about API users• Appropriate signals of API usability

    • Preliminary discussions with Google, IBM, Amazon, Bloomberg, Microsoft• Appear to have quite different processes• Different levels of sensitivity to API Usability

    • Starting next week!© 2017 – Brad A. Myers

    33

  • Open Challenges

    • What other design patterns in APIs are problematic or beneficial for usability?

    • How to make coordinating multiple APIs easier?• What other design or evaluation methods are

    needed?

    © 2017 – Brad A. Myers

    34

  • Open Challenges• Identify best practices in API Design

    • How to insure that usability is a key quality metric that API designers always consider?

    • What process results in the most usable APIs?• What kinds of testing should be done on APIs for usability?• How should the API design team be organized?

    • What guidelines should be followed?• Does having guidelines even work?• Level of specificity of guidelines?

    • E.g., Smith and Mosier’s 1986, 486 pages of guidelines, vs. Nielsen’s 10

    © 2017 – Brad A. Myers

    35

  • A Few Resources• Brad A. Myers and Jeffrey Stylos, "Improving API

    Usability", Communications of the ACM, vol 59, No. 6, June, 2016, pp. 62-69, Official ACM DL entry; html or local pdf.

    • www.apiusability.org• http://www.cs.cmu.edu/~NatProg/apiusability.html

    • https://www.programmableweb.com/

    © 2017 – Brad A. Myers

    36

    http://dl.acm.org/authorize?N03391http://cacm.acm.org/magazines/2016/6/202645-improving-api-usability/fulltexthttp://www.cs.cmu.edu/%7Enatprog/papers/p62-myers-CACM-API_Usability.pdfhttp://www.apiusability.org/http://www.cs.cmu.edu/%7ENatProg/apiusability.htmlhttps://www.programmableweb.com/

  • Euklas: EclipseUsers’ Keystrokes Lessened by Attaching from Samples

    Acronyms are fun!And there are lots of Gemstones!! C32CMU's

    Clever and Compelling Contribution to Computer Science in CommonLisp which is Customizable and Characterized by a Complete Coverage of Code and Contains a Cornucopia of CreativeConstructs, because it Can Create Complex, Correct Constraints that are Constructed Clearly and Concretely, andCommunicated using Columns of Cells, that are Constantly Calculated so they Change Continuously, and Cancel Confusion

    PebblesPDAs for Entry of Both Bytes and Locations from External Sources

    GARNETGenerating anAmalgam ofReal-time,NovelEditors andToolkits

    For more, see: www.cs.cmu.edu/~bam/acronyms.html

    Azurite:AddingZest toUndoing and Restoring ImprovesTextual Exploration

    Fluorite:Full ofLow-levelUserOperations Recorded InTheEditor

    Apatite: Associative Perusing of APIsThatIdentifies TargetsEasily

    Graphite: GRAphical PalettesHelpInstantiate Types in the Editor

    Calcite: Construction AndLanguage Completion Integrated Throughout

    Jadeite:JavaAPIDocumentation with ExtraInformationTacked-on for Emphasis

    Mica:Makes InterfacesClear and Accessible

    Jasper:JavaAid withSets of Pertinent Elements for Recall

    Crystal:Clarifications Regarding YourSoftware using aToolkit, Architecture and Language

    Euclase:EndUserCentered Language, APIsSystem and Environment

    Aquamarine: AllowingQuickUndoing ofAnyMarksAndRepair Improving NovelEditing

    Gneiss: GatheringNovelEnd-userInternetServices usingSpreadsheets

    GlacierGreatLanguagesAllowClass Immutability EnforcedReadily

    Variolite: Variations Augment Real Iterative Outcomes Letting Information Transcend Exploration

    SugiliteSmartphone UsersGenerating Intelligent LikeableInterfaces ThroughExamples

    © 2017 – Brad A. Myers

    37

    http://www.pebbles.hcii.cmu.edu/index.phphttp://www.pebbles.hcii.cmu.edu/index.phphttp://www.cs.cmu.edu/%7Ebam/acronyms.htmlhttp://images.google.com/imgres?imgurl=http://www.orientaljadejewelry.com/DSCN0187.JPG&imgrefurl=http://www.orientaljadejewelry.com/bangles.htm&h=480&w=640&sz=33&hl=en&start=80&usg=__8TwN8oO0hOBrRBDl-NNOisyBsi4=&tbnid=7Hnu7F-4FzBLHM:&tbnh=103&tbnw=137&prev=/images?q=jadeite&start=60&ndsp=20&hl=en&rls=IBMA,IBMA:2006-17,IBMA:en&sa=Nhttp://images.google.com/imgres?imgurl=http://www.orientaljadejewelry.com/DSCN0187.JPG&imgrefurl=http://www.orientaljadejewelry.com/bangles.htm&h=480&w=640&sz=33&hl=en&start=80&usg=__8TwN8oO0hOBrRBDl-NNOisyBsi4=&tbnid=7Hnu7F-4FzBLHM:&tbnh=103&tbnw=137&prev=/images?q=jadeite&start=60&ndsp=20&hl=en&rls=IBMA,IBMA:2006-17,IBMA:en&sa=N

  • Thanks to:

    © 2017 – Brad A. Myers

    38

    • Funding:• NSF under IIS-1116724, IIS-0329090, CCF-0811610, IIS-0757511 (Creative-IT),

    ITR CCR-0324770 as part of the EUSES Consortium• SAP• Adobe• IBM• Microsoft Research• Yahoo! InMind• Google

    • >38 students & visitors: Htet Htet Aung Jack Beaton Ruben Carbonell John R. Chang Kerry S. Chang Polo Chau Luis J. Cota Michael Coblenz

    Christian Dörner Dan Eisenberg Brian Ellis Andrew Faulring Aristiwidya B. (Ika)

    Hardjanto Erik Harpstead Amber Horvath Sae Young (Sophie)

    Jeong Mary Beth Kery

    Andy Ko Thomas LaToza Joonhwan Lee Toby Li Leah Miller Steven Moore Mathew Mooty Gregory Mueller Yoko Nakano Stephen Oney John Pane

    Sunyoung Park Michael Puskas Chotirat (Ann)

    Ratanamahatana André L. Santos Christopher Scaffidi Jeff Stylos David A. Weitzman Yingyu (Clare) Xie Zizhuang (Zizzy) Yang YoungSeok Yoon

    http://www.nsf.gov/http://www.nsf.gov/

  • Human-Centered Methods for Improving API Usability

    Brad A. MyersHuman-Computer Interaction InstituteSchool of Computer ScienceCarnegie Mellon Universityhttp://www.cs.cmu.edu/[email protected]

    39© 2017 – Brad A. Myers

    http://www.cs.cmu.edu/%7Ebammailto:[email protected]

    Human-Centered Methods for Improving API UsabilityAPIsStakeholders &�Their GoalsWhy APIs?APIs are Important and ValuableWhy Apply Human-Centered Techniques?“Human Centered Methods” ̶̶ � More Than Just Lab User StudiesHuman Centered Approaches Across the LifecycleHCI Techniques We Have Used for APIs“Natural Programming” ElicitationContext:�Natural Programming ProjectEnd User ProgrammingGoal: Gentle Slope SystemsOur Studies of APIsWhat can be addressed?Required Constructors Study“Factory” Pattern StudyObject Method Placement StudyStudy of APIs for SAPeSOA Documentation ResultsUsability study of an API from SAPEvaluation based on GuidelinesSAP’s NetWeaver® Gateway Developer Tools Automated Tools (by Others)Our Tools to Help with APIsMica Tool to Help Find ExamplesJadeite: Improved JavaDocCalcite: Eclipse Plugin for JavaDacite: API Designer AnnotatesEuklas: Eclipse Plugin for JavaScriptGraphite: Eclipse Plugin for LiteralsApatite Documentation ToolNew ProjectOpen ChallengesOpen ChallengesA Few ResourcesAcronyms are fun!Thanks to:Human-Centered Methods for Improving API Usability