api evolution and usability
DESCRIPTION
Presentation I did at the Master Course (UFBA/UEFS) about (1) the role of refactoring and (2) usability in the evolution of APIs. Feel free to download it, so you can see the notes (almost everything is in portuguese, sorry about that )TRANSCRIPT
![Page 1: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/1.jpg)
Thiago Colares@thicolaresUFBA / UEFS
![Page 2: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/2.jpg)
MotivationAPIsEvolutionUsabilityFinal thoughts
![Page 3: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/3.jpg)
![Page 4: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/4.jpg)
![Page 5: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/5.jpg)
http://net.tutsplus.com/articles/news/the-increasing-importance-of-apis-in-web-development/
![Page 6: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/6.jpg)
http://net.tutsplus.com/articles/news/the-increasing-importance-of-apis-in-web-development/
![Page 7: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/7.jpg)
http://net.tutsplus.com/articles/news/the-increasing-importance-of-apis-in-web-development/
![Page 8: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/8.jpg)
![Page 9: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/9.jpg)
![Page 10: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/10.jpg)
![Page 11: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/11.jpg)
![Page 12: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/12.jpg)
String locale = context.getResources().getConfiguration().locale.getDisplayName();
String locale = context.getResources().getConfiguration().locale.getDisplayName();
![Page 13: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/13.jpg)
![Page 14: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/14.jpg)
![Page 15: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/15.jpg)
![Page 16: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/16.jpg)
![Page 17: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/17.jpg)
What this API does?Main entities?How those entities communicates?
![Page 18: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/18.jpg)
AbstractFactory f = AbstractFactory.getDefault();
Widget w = f.createWidget();
AbstractFactory f = AbstractFactory.getDefault();
Widget w = f.createWidget();
Widget w = Widget.create(); Widget w = Widget.create();
![Page 19: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/19.jpg)
![Page 20: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/20.jpg)
![Page 21: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/21.jpg)
![Page 22: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/22.jpg)
![Page 23: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/23.jpg)
![Page 24: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/24.jpg)
![Page 25: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/25.jpg)
BrowseSelectReadNavigateSearchSwitchUseBacktrack
![Page 26: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/26.jpg)
Discovering Relevant DependenciesQuery FormulationExceptionsWeb versus Documentation
![Page 27: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/27.jpg)
…To regard the design refactoring…To review documentation…To improve de development tools
“Usability of software tools impacts developer efficiency”
Steven Clarke
![Page 28: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/28.jpg)
The results also suggest the need of new software en- gineering tools that detect and correct inconsistent program updates when developers apply refactorings.
Number of bug fixes increases after refactorings while the time taken to fix bugs decreases after refactorings.
API usability can be a significant barrier for programmers Scenario-based design / User-centered designYou don’t need expensive usability labsBut time, patience, willing participants, and a framework
with which to understand the results of your analysis.
![Page 29: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/29.jpg)
Kim, Miryung, Dongxiang Cai, and Sunghun Kim. "An empirical investigation into the role of API-level refactorings during software evolution." Software Engineering (ICSE), 2011 33rd International Conference on. IEEE, 2011.
Brian Ellis, Jeffrey Stylos, and Brad Myers. 2007. The Factory Pattern in API Design: A Usability Evaluation. In Proceedings of the 29th international conference on Software Engineering (ICSE '07). IEEE Computer Society, Washington, DC, USA, 302-312. DOI=10.1109/ICSE.2007.85 http://dx.doi.org/10.1109/ICSE.2007.85
Jeffrey Stylos and Steven Clarke. 2007. Usability Implications of Requiring Parameters in Objects' Constructors. In Proceedings of the 29th international conference on Software Engineering (ICSE '07). IEEE Computer Society, Washington, DC, USA, 529-539. DOI=10.1109/ICSE.2007.92 http://dx.doi.org/10.1109/ICSE.2007.9
J. Stylos and S. Clarke, “Usability implications of requir- ing parameters in objects’ constructors,” in Proceedings of the 29th International Conference on Software Engineering, 2007, pp. 529–539.
Ubo Icons Theme 0.1alpha, http://gnome-look.org/content/show.php/Ubo+Icons+Theme?content=122078
![Page 30: API Evolution and Usability](https://reader036.vdocuments.mx/reader036/viewer/2022081518/5549396db4c9050a4d8b4a66/html5/thumbnails/30.jpg)
@thicolares