Human-Centered Approach to Static-Analysis-Driven Developer Tools: The future depends on good HCI
Pages 68 - 95
Abstract
Complex and opaque systems do not scale easily. A human-centered approach for evolving tools and practices is essential to ensuring that software is scaled safely and securely. Static analysis can unveil information about program behavior, but the goal of deriving this information should not be to accumulate hairsplitting detail. HCI can help direct static-analysis techniques into developer-facing systems that structure information and embody relationships in representations that closely mirror a programmer's thought. The survival of great software depends on programming languages that support, rather than inhibit, communicating, reasoning, and abstract thinking.
References
[1]
Altmann, E. M. 2001. Near-term memory in programming: a simulation-based analysis. International Journal of Human-Computer Studies 54(2), 189?210; https://www.sciencedirect.com/science/article/abs/pii/S1071581900904075.
[2]
Asay, M. 2016. Open source is not to blame for a lack of industry standards. TechRepublic; https://www.techrepublic.com/article/open-source-is-not-to-blame-for-a-lack-of-industry-standards/.
[3]
Automatic Proof Search (Auto). 2017. Agda; https://agda.readthedocs.io/en/v2.5.3/tools/auto.html.
[4]
Brandt, J., Guo, P. J., Lewenstein, J., Klemmer, S. R. 2008. Opportunistic programming: how rapid ideation and prototyping occur in practice. Proceedings of the 4th International Workshop on End-user Software Engineering, 1?5; https://doi.org/10.1145/1370847.1370848.
[5]
Claburn, T. 2021. Accused murderer wins right to check source code of DNA testing kit used by police. The Register (February 4); https://www.theregister.com/2021/02/04/dna_testing_software/.
[6]
Codd, E. F. 1970. A relational model of data for large shared data banks. Communications of the ACM 13 (6), 377-387; https://dl.acm.org/doi/10.1145/362384.362685.
[7]
Czaplicki, E. 2015. Compiler errors for humans. Elm; https://elm-lang.org/news/compiler-errors-for-humans.
[8]
Gardner, M. 1970. The fantastic combinations of John Conway's new solitaire game "life." Scientific American 223, 120?123; https://web.stanford.edu/class/sts145/Library/life.pdf.
[9]
Grove, A. S. 1995. High-Output Management, 2nd edition. Vintage.
[10]
Guo, P. 2020. Philip Guo - UC San Diego. https://pg.ucsd.edu/.
[11]
Harel, D. 1987. Algorithmics: The Spirit of Computing. Addison-Wesley.
[12]
Henley, A. Z. 2021. Why is it so hard to see code from 5 minutes ago? Hacker News; https://web.eecs.utk.edu/~azh/blog/yestercode.html.
[13]
International Organization for Standardization. 2018. ISO 9241-11:2018: Ergonomics of human-system interaction?Part 11: Usability: definitions and concepts; https://www.iso.org/standard/63500.html.
[14]
Jacko, J. A., ed. 2012. Human?Computer Interaction Handbook, 3rd edition. CRC Press.
[15]
Karimi, H., Masoudi Alavi, N. 2015. Florence Nightingale: the mother of nursing. Nursing and Midwifery Studies 4(2), e29475; https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4557413/.
[16]
Knuth, D. E. 1984. Literate programming. The Computer Journal 27(2), 97?111; https://academic.oup.com/comjnl/article/27/2/97/343244.
[17]
Lamb, G. 2001. Improve your UI design process with object-oriented techniques. Microsoft Developer Network, Visual Basic Developer; https://web.archive.org/web/20130814153652/http://msdn.microsoft.com/en-us/library/aa227601(v=vs.60).aspx.
[18]
Lambdabot. 2021. Haskell; https://wiki.haskell.org/Lambdabot.
[19]
Mark, G., Gonzalez, V. M., Harris, J. 2005. No task left behind? Examining the nature of fragmented work. Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, 321?330; https://dl.acm.org/doi/abs/10.1145/1054972.1055017.
[20]
Mou, B. 1999. The structure of the Chinese language and ontological insights: a collective-noun hypothesis. Philosophy East and West 49(1), 45?62; https://www.jstor.org/stable/1400116.
[21]
Naveh-Benjamin, M., Guez, J. (2000). Effects of divided attention on encoding and retrieval processes: assessment of attentional costs and a componential analysis. Journal of Experimental Psychology: Learning, Memory, and Cognition 26(6), 1461-82; https://psycnet.apa.org/record/2000-12254-009.
[22]
Nielsen, J. 1994. 10 usability heuristics for user interface design. Nielsen Norman Group; https://www.nngroup.com/articles/ten-usability-heuristics/.
[23]
Norman, D. 2013. The Design of Everyday Things. New York, NY: Basic Books.
[24]
O'Conaill, B., Frohlich, D. 1995. Timespace in the workplace: dealing with Interruptions. Conference Companion on Human Factors in Computing Systems, 262-263; https://doi.org/10.1145/223355.223665.
[25]
Python Tutor. (n.d.). Visualize Code Execution; http://pythontutor.com/.
[26]
Rust-analyzer. (n.d.); https://rust-analyzer.github.io/.
[27]
Safety Research & Strategies Inc. 2013. Toyota unintended acceleration and the big bowl of "spaghetti" code (November 7); https://www.safetyresearch.net/toyota-unintended-acceleration-and-the-big-bowl-of-spaghetti-code/.
[28]
Sierra, K. 2013. Your app makes me fat. Serious Pony (July 24); http://seriouspony.com/blog/2013/7/24/your-app-makes-me-fat.
[29]
Weinschenk, S. 2012. The true cost of multi-tasking. Psychology Today (September 18); https://www.psychologytoday.com/us/blog/brain-wise/201209/the-true-cost-multi-tasking.
Recommendations
Human-centered methods for improving API usability
WAPI '17: Proceedings of the 1st International Workshop on API Usage and EvolutionApplication programming interfaces (APIs) are the way that developers reuse functionality supplied in libraries, software development kits (SDKs), toolkits, frameworks, etc. By adapting a variety of user-centered methods from human-computer interaction (...
Comments
Information & Contributors
Information
Published In
Copyright © 2021 ACM.
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]
Publisher
Association for Computing Machinery
New York, NY, United States
Publication History
Published: 16 September 2021
Published in QUEUE Volume 19, Issue 4
Check for updates
Qualifiers
- Research-article
- Popular
- Editor picked
Contributors
Other Metrics
Bibliometrics & Citations
Bibliometrics
Article Metrics
- 0Total Citations
- 14,816Total Downloads
- Downloads (Last 12 months)2,256
- Downloads (Last 6 weeks)262
Reflects downloads up to 24 Dec 2024
Other Metrics
Citations
View Options
View options
View or Download as a PDF file.
PDFeReader
View online with eReader.
eReaderMagazine Site
View this article on the magazine site (external)
Magazine SiteLogin options
Check if you have access through your login credentials or your institution to get full access on this article.
Sign in