need 4 speed fi

of 64/64
NEXT GENERATION IDE HOW CROWDSOURCING (IN) YOUR IDE SPEEDS UP YOUR SOFTWARE DEVELOPMENT PROCESSES

Post on 09-Jul-2015

222 views

Category:

Technology

4 download

Embed Size (px)

TRANSCRIPT

  • NEXT GENERATION IDEHOW CROWDSOURCING (IN) YOUR IDE SPEEDS UP

    YOUR SOFTWARE DEVELOPMENT PROCESSES

  • About me Project Lead of Eclipse Code Recommenders Eclipse Committer since 2010 Plug-in Developer for 10 years (Eclipse 2.1) Member of the Eclipse Architecture Council Co-Lead of Java User Group Darmstadt Speaker at JUGs, EclipseCon, JAX, JavaOne PhD in Computer Science CEO of Codetrails

    Passion to improve developers day-to-day work with intelligent and practical tools - mostly using Data Mining on Big (Software Engineering) Data.

    2

    @marcelbruchMarcel Bruch

  • About Codetrails The company behind Eclipse Code Recommenders Software Tool Developers Data Mining Specialists Eclipse RCP Experts & Consultants Research Spin-off Darmstadt University of Technology

    3

  • NEXT GENERATION IDEHOW CROWDSOURCING (IN) YOUR IDE SPEEDS UP

    YOUR SOFTWARE DEVELOPMENT PROCESSES

  • Back in 1995

    5

  • 6Your Software{ }

    Developer

  • { }

    7

    Your Software{ }Developer

    Your Software

  • { }

    8

    Your Software

    { }

    Developer

    Your Software

  • Your Software

    Your Software

    9

    Framework Developer

    { }

    { }

    DeveloperApplicationDeveloper

    ?

    !

  • Here the problems begin

    10Docume

    ntation

    { }

    docs are missing!

    there are no code

    examples!

    api is bloated!

    code has many bugs!

    docs are outdated!

    is the api easy?

    is documentation

    good? does it work?

    are there bugs?

    where to improve?

    where do you struggle?

    what do you use?

    what can I remove?

  • How to leverage the crowd?

    11

    Docume

    ntation

    Framework Developer

    { } { }{ }{ }

    Application Developers

  • How to leverage the crowd?

    12

    Framework Developer

    { } { }{ }{ }

    { }

    { }

    { } { }

    Application Developers

    { }{ }

    { }

    { }

  • By integrating with your IDE

    13

    Usedframeworks

    Source code

    Debugging instructions

    Viewed documentation

    Runtime errors and stacktraces

    Selected proposals

  • Bad JavadocIn good documentation we trust

  • In API documentation we trust

    15

    /** * Rollsback the transaction if any and clears different lists to * start with an empty resource again. * Note that the super.doUnload is not called because that clears * the list resulting in all kinds of undesirable inverseremoves. */@Overrideprotected void doUnload() { super.doUnload();}

    No? Are you sure?

  • In those situations you wish you could

    16

    /** * Rollsback the transaction if any and clears different lists to * start with an empty resource again. * Note that the super.doUnload is not called because that clears * the list resulting in all kinds of undesirable inverseremoves. */@Overrideprotected void doUnload() { super.doUnload();}

  • and let the committers know

    17

    Hello committers, we received a user feedback for TYPE com.your.class. The user rated the overall documentation quality as NOT_AT_ALL_HELPFUL. In particular he/she said:

    1. UNCLEAR_INFORMATION

    The user provided the following comment: The class is deprecated but no pointers are given which other class to use instead. Please provide a hint in the class javadoc. Thanks, Frederik

    Thank you for caring.

    Your friendly Javadoc Feedback Inbox

    The class is deprecated but no pointers are given which other class to use instead. Please provide a hint in the class javadoc. Thanks, Frederik

    Customer case study & prototype at Codetrails.

  • No examplesA snippet says more than thousand words

  • These Ive a great idea moments

    19

    { }Application Developer

    Product Manager

  • How we learn about it

    20

    { }Application Developer

  • public class HelpExample extends WizardPage {

    |

    But if we just could have asked Eclipse

    21Eclipse Code Recommenders Snipmatch See http://eclipse.org/recommenders/manual/#snipmatch

  • Creating snippets for the community

    22

  • Sharing with the community

    23

  • Integrating Snippets into API docs

    24

    public class MyDialog extends Dialog { @Override protected Control createDialogArea(Composite parent) {

    (automatically, of course)

  • Codesearch reloadedMore than just Find References in your Workspace

  • How do I

    26

    void showHelp() { // How do I get the help system? IWorkbenchHelpSystem help = |}

  • You should ask your IDE

  • obtain an instance of X?

    28

    void showHelp() { // How do I get the help system? IWorkbenchHelpSystem help = |

  • which arguments to fill in?

    29

  • about frequent usage patterns?

    30

  • Where does that data come from?

    31Codetrails Connect Codesearch, currently closed beta

    (i) eclipse workspace (ii) maven repository

  • Overwhelming APIsWhat do you think of when you hear bloated API?

  • One example

    33

    @Overridepublic void create(JPanel parent) {

    JButton button = new JButton(); button.|

    Which method will you call next in this situation?

  • 1 of 389?

  • A fairly trivial exampleStringBuilder sb = new StringBuilder();sb.|

    35

  • StringBuilder sb = new StringBuilder();sb.|

    36

    { }Application Developer

    {type: StringBuilder,completion: append(String)}

    What if wed just count clicks?

  • We could crowdsource code completion!

    37

    StringBuilder sb = new StringBuilder();sb.|

    Codetrails Connect Community Edition, Install from http://www.codetrails.com/connect

  • How about argument completions?

    38

    @Overrideprotected Control createControl(final Composite parent) {

    textWidget = new Text(parent, SWT.BORDER);textWidget.addListener(eventType, listener)

    Codetrails Connect Community Edition, Install from http://www.codetrails.com/connect

  • And when extending a framework base class?

    39

    public class MyDialog extends Dialog {

    |

    Codetrails Connect Community Edition, Install from http://www.codetrails.com/connect

  • Successfully concluded sessions

    40

    crowdsourced79,5

    JDT66,5

    JDT as-is vs. crowdsourced

    13% less terminated sessions, measured in over 400.000

    sessions

  • Bug detection, crowd-style99.5% of all developers didnt do it like you. So

  • Costs fixing a bug between code and production

    42

    Relat

    ive c

    ost o

    f a b

    ugfix

    Req Design Code Acceptance Production

    25x

    10x

    1x0x0x

    http://www.abeacha.com/NIST_press_release_bugs_cost.htm

  • Whats wrong with this code?

    43

    @Overridepublic void createControl(Composite parent) {

    Composite container = new Composite(parent, SWT.NONE);container.setLayout(new GridLayout());

    TableViewer tableViewer = new TableViewer(container);tableViewer.setUseHashlookup(false);tableViewer.addSelectionChangedListener(listener);Table table = tableViewer.getTable();tableViewer.setCellEditors(editors);tableViewer.setColumnProperties(columnProperties);tableViewer.setLabelProvider(labelProvider);tableViewer.setInput(input);

    tableViewer.setContentProvider(provider);}

  • Findbugs crowd ed. would find it

    44Codetrails Findbugs, currently closed alpha

  • If no one dared to do it like this

    45

  • Rethinking StacktracesPeople who bought this NullPointerException typically fixed this by...

  • Automated Error Reporting in Eclipse Mars

    47https://www.eclipse.org/community/eclipse_newsletter/2014/november/article1.php

  • 48

  • Committers get notified about new bugs

    49

  • Reporters get immediate feedback

    50

    Your report has been matched against an existing bug which was closed as FIXED with comment: Please update to the latest version. See Bug 446841 for details.

  • 51Eclipse Committer Dashboard of the Automated Error Reports plugin

  • org.eclipse.swt.SWTException: Invalid Thread access at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.SWT.error(SWT.java:3770) at org.eclipse.swt.widgets.Widget.error(Widget.java:463) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355) at org.eclipse.swt.widgets.ProgressBar.setSelection(ProgressBar.java:317) at org.eclipse.recommenders.stacktraces.Demo.run(Demo.java:23) at java.lang.Thread.run(Thread.java:619)

    Finding similar errors (aka duplicates)

    52

    + java version + bundle/jar versions + installed extensions + thread dumps +

  • How can we support you in writing software?Automated error reporting is nice, but

    53

  • Debugging the old way

    54

    Exception in thread Thread-0 org.eclipse.swt.SWTException: Invalid Thread access at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.SWT.error(SWT.java:3770) at org.eclipse.swt.widgets.Widget.error(Widget.java:463) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355) at org.eclipse.swt.widgets.ProgressBar.setSelection(ProgressBar.java:317) at org.eclipse.recommenders.stacktraces.Demo.run(Demo.java:23) at java.lang.Thread.run(Thread.java:619)

  • Getting help the old way

    55

  • But usually you get

    56

  • How about sharing exceptions thatoccurred at development time?

    57

    Exception in thread Thread-0 org.eclipse.swt.SWTException: Invalid Thread access at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.SWT.error(SWT.java:3770) at org.eclipse.swt.widgets.Widget.error(Widget.java:463) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355) at org.eclipse.swt.widgets.ProgressBar.setSelection(ProgressBar.java:317) at org.eclipse.recommenders.stacktraces.Demo.run(Demo.java:23) at java.lang.Thread.run(Thread.java:619)

  • The SWTException Invalid thread access you experienced is caused by calling an UI widgets methods from a non-ui thread. See knowledge base entry #341 for further details.

    Found a match!

    We found a knowledge base entry that matches your stacktrace.

    Telling your users what went wrong

    58A concept yet, no prototype.

  • How about stacktraces.org?

    59

  • Take aways?

    60

  • The crowd is here to stay!

    61

  • The IDE is your browser - lets learn to use it as such

    62

    Usedframeworks

    Source code

    Debugging instructions

    Viewed documentation

    Runtime errors and stacktraces

    Selected proposals

  • Thank You.

    @marcelbruchmarcelbruch [email protected]

  • Contact Us

    64

    Codetrails GmbH Robert-Bosch-Str. 7 64293 Darmstadt, Germany

    www: codetrails.com phone: 06151 / 2767 092 email: [email protected]

    Dr. Marcel Bruch CEO

    mobile: 0179 / 1317 721 email: [email protected]