Jump to content

End-user development: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m Disambiguated: open sourceOpen-source model
Citation bot (talk | contribs)
m Alter: template type, isbn. Add: chapter, volume, pages, date, series, citeseerx, isbn. Removed parameters. | You can use this bot yourself. Report bugs here. | User-activated.
Line 1: Line 1:
{{Programming paradigms}}
{{Programming paradigms}}


'''End-user development''' ('''EUD''') or '''end-user programming''' ('''EUP''') refers to activities and tools that allow [[User (computing)|end-user]]s – people who are not professional software developers – to [[Computer programming|program computers]]. People who are not professional developers can use EUD tools to create or modify ''software artifacts'' (descriptions of automated behavior) and complex data objects without significant knowledge of a [[programming language]]. In 2005 it was estimated (using statistics from the U.S. [[Bureau of Labor Statistics]]) that by 2012 there would be more than 55 million end-user developers in the United States, compared with fewer than 3 million professional programmers.<ref>{{Cite journal|last=Scaffidi|first=C.|last2=Shaw|first2=M.|last3=Myers|first3=B.|date=2005-09-01|title=Estimating the numbers of end users and end user programmers|url=http://ieeexplore.ieee.org/document/1509505/|journal=2005 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC'05)|pages=207–214|doi=10.1109/VLHCC.2005.34}}</ref> Various EUD approaches exist, and it is an active [[Discipline (academia)|research topic]] within the field of [[computer science]] and [[human-computer interaction]]. Examples include [[natural language programming]],<ref>Little, Greg, and Robert C. Miller. "[https://pdfs.semanticscholar.org/b740/08688a029d7c48a2153a7905e7fa65fea72f.pdf Translating keyword commands into executable code]." Proceedings of the 19th annual ACM symposium on User interface software and technology. ACM, 2006.</ref><ref>Bruckman, Amy, and Elizabeth Edwards. "[http://www.cc.gatech.edu/~asb/papers/conference/edwards-bruckman-chi99.pdf Should we leverage natural-language knowledge? An analysis of user errors in a natural-language-style programming language]." Proceedings of the SIGCHI conference on Human Factors in Computing Systems. ACM, 1999.
'''End-user development''' ('''EUD''') or '''end-user programming''' ('''EUP''') refers to activities and tools that allow [[User (computing)|end-user]]s – people who are not professional software developers – to [[Computer programming|program computers]]. People who are not professional developers can use EUD tools to create or modify ''software artifacts'' (descriptions of automated behavior) and complex data objects without significant knowledge of a [[programming language]]. In 2005 it was estimated (using statistics from the U.S. [[Bureau of Labor Statistics]]) that by 2012 there would be more than 55 million end-user developers in the United States, compared with fewer than 3 million professional programmers.<ref>{{Cite book|last=Scaffidi|first=C.|last2=Shaw|first2=M.|last3=Myers|first3=B.|date=2005-09-01|title=Estimating the numbers of end users and end user programmers|url=http://ieeexplore.ieee.org/document/1509505/|journal=2005 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC'05)|pages=207–214|doi=10.1109/VLHCC.2005.34|isbn=978-0-7695-2443-6}}</ref> Various EUD approaches exist, and it is an active [[Discipline (academia)|research topic]] within the field of [[computer science]] and [[human-computer interaction]]. Examples include [[natural language programming]],<ref>Little, Greg, and Robert C. Miller. "[https://pdfs.semanticscholar.org/b740/08688a029d7c48a2153a7905e7fa65fea72f.pdf Translating keyword commands into executable code]." Proceedings of the 19th annual ACM symposium on User interface software and technology. ACM, 2006.</ref><ref>Bruckman, Amy, and Elizabeth Edwards. "[http://www.cc.gatech.edu/~asb/papers/conference/edwards-bruckman-chi99.pdf Should we leverage natural-language knowledge? An analysis of user errors in a natural-language-style programming language]." Proceedings of the SIGCHI conference on Human Factors in Computing Systems. ACM, 1999.
APA
APA
</ref> [[spreadsheet]]s,<ref name="encyclopedia"/> scripting languages (particularly in an office suite or art application), [[Visual programming language|visual programming]], trigger-action programming and [[programming by example]].
</ref> [[spreadsheet]]s,<ref name="encyclopedia"/> scripting languages (particularly in an office suite or art application), [[Visual programming language|visual programming]], trigger-action programming and [[programming by example]].


The most popular EUD tool is the [[spreadsheet]].<ref name="encyclopedia">{{cite web|url=http://www.interaction-design.org/encyclopedia/end-user_development.html|first1=Margaret M.|last1=Burnett|author1-link=Margaret Burnett|first2=Christopher|last2=Scaffidi|title=End-User Development|publisher=Interaction-Design.org}} at "Encyclopedia of Human-Computer Interaction".</ref><ref name="Empowering Users">{{cite web|url=http://www.uxmatters.com/mt/archives/2009/08/empowering-users-to-create-their-own-software.php|title=Empowering Users to Create Their Own Software|first=Peter |last=Hornsby |date=2009-08-03 |accessdate=2014-01-31 |website=UXmatters}}</ref> Due to their unrestricted nature, spreadsheets allow relatively un-sophisticated computer users to write programs that represent complex data models, while shielding them from the need to learn lower-level programming languages.<ref>{{cite book |last=Abraham |first=R. |last2=Burnett |first2=M |last3=Erwig |first3=M |year=2009 |chapter=Spreadsheet programming |title=Wiley Encyclopedia of Computer Science and Engineering |pages=1–10}}</ref> Because of their common use in business, spreadsheet skills are among the most beneficial skills for a graduate employee to have, and are therefore the most commonly sought after<ref>Kruck, S. & Sheetz, S., 2001. [http://www.pucrs.br/ciencias/viali/tic_literatura/artigos/planilhas/KRUCK-SHEETZ_SpreadsheetAccTheory.pdf Spreadsheet accuracy theory]. Journal of Information Systems Education.</ref> In the United States of America alone, there are an estimated 13 million end-user developers programming with spreadsheets<ref>Scaffidi, C., Shaw, M. & Myers, B., 2005. [http://web.engr.oregonstate.edu/~cscaffid/papers/eu_20050923_vlhcc.pdf Estimating the Numbers of End Users and End User Programmers]. 2005 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC’05), pp.207–214.</ref>
The most popular EUD tool is the [[spreadsheet]].<ref name="encyclopedia">{{cite book|url=http://www.interaction-design.org/encyclopedia/end-user_development.html|first1=Margaret M.|last1=Burnett|author1-link=Margaret Burnett|first2=Christopher|last2=Scaffidi|title=End-User Development|publisher=Interaction-Design.org}} at "Encyclopedia of Human-Computer Interaction".</ref><ref name="Empowering Users">{{cite web|url=http://www.uxmatters.com/mt/archives/2009/08/empowering-users-to-create-their-own-software.php|title=Empowering Users to Create Their Own Software|first=Peter |last=Hornsby |date=2009-08-03 |accessdate=2014-01-31 |website=UXmatters}}</ref> Due to their unrestricted nature, spreadsheets allow relatively un-sophisticated computer users to write programs that represent complex data models, while shielding them from the need to learn lower-level programming languages.<ref>{{cite book |last=Abraham |first=R. |last2=Burnett |first2=M |last3=Erwig |first3=M |year=2009 |chapter=Spreadsheet programming |title=Wiley Encyclopedia of Computer Science and Engineering |pages=1–10}}</ref> Because of their common use in business, spreadsheet skills are among the most beneficial skills for a graduate employee to have, and are therefore the most commonly sought after<ref>Kruck, S. & Sheetz, S., 2001. [http://www.pucrs.br/ciencias/viali/tic_literatura/artigos/planilhas/KRUCK-SHEETZ_SpreadsheetAccTheory.pdf Spreadsheet accuracy theory]. Journal of Information Systems Education.</ref> In the United States of America alone, there are an estimated 13 million end-user developers programming with spreadsheets<ref>Scaffidi, C., Shaw, M. & Myers, B., 2005. [http://web.engr.oregonstate.edu/~cscaffid/papers/eu_20050923_vlhcc.pdf Estimating the Numbers of End Users and End User Programmers]. 2005 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC’05), pp.207–214.</ref>


The [[programming by example]] (''PbE'') approach reduces the need for the user to learn the abstractions of a classic programming language. The user instead introduces some examples of the desired results or operations that should be performed on the data, and the PbE system infers some abstractions corresponding to a program that produces this output, which the user can refine. New data may then be introduced to the automatically created program, and the user can correct any mistakes made by the program in order to improve its definition. [[Low-code development platforms]] are also an approach to EUD.
The [[programming by example]] (''PbE'') approach reduces the need for the user to learn the abstractions of a classic programming language. The user instead introduces some examples of the desired results or operations that should be performed on the data, and the PbE system infers some abstractions corresponding to a program that produces this output, which the user can refine. New data may then be introduced to the automatically created program, and the user can correct any mistakes made by the program in order to improve its definition. [[Low-code development platforms]] are also an approach to EUD.
Line 20: Line 20:
==Definition==
==Definition==
Lieberman et al. propose the following definition:<ref>Lieberman, H., Paternò, F., Klann, M., and Wulf, V. (2006). End-User Development: An Emerging Paradigm. In: End-User Development, Lieberman, H., Paternò, F., and Wulf, V. (eds.), Springer Netherlands, 2006, ser. Human-Computer Interaction Series, vol. 9, Chapter 1, pp. 1-7, {{doi|10.1007/1-4020-5386-X_1}}</ref>
Lieberman et al. propose the following definition:<ref>Lieberman, H., Paternò, F., Klann, M., and Wulf, V. (2006). End-User Development: An Emerging Paradigm. In: End-User Development, Lieberman, H., Paternò, F., and Wulf, V. (eds.), Springer Netherlands, 2006, ser. Human-Computer Interaction Series, vol. 9, Chapter 1, pp. 1-7, {{doi|10.1007/1-4020-5386-X_1}}</ref>
<blockquote>End-User Development can be defined as a set of methods, techniques, and tools that allow users of software systems, who are acting as non-professional software developers, at some point to create, modify or extend a software artifact.</blockquote>Ko et al. propose the following definition:<ref>{{Cite journal|last=Ko|first=Andrew J.|last2=Abraham|first2=Robin|last3=Beckwith|first3=Laura|last4=Blackwell|first4=Alan|last5=Burnett|first5=Margaret|last6=Erwig|first6=Martin|last7=Scaffidi|first7=Chris|last8=Lawrance|first8=Joseph|last9=Lieberman|first9=Henry|date=2011-04-01|title=The State of the Art in End-user Software Engineering|url=http://doi.acm.org/10.1145/1922649.1922658|journal=ACM Comput. Surv.|volume=43|issue=3|pages=21:1–21:44|doi=10.1145/1922649.1922658|issn=0360-0300}}</ref>
<blockquote>End-User Development can be defined as a set of methods, techniques, and tools that allow users of software systems, who are acting as non-professional software developers, at some point to create, modify or extend a software artifact.</blockquote>Ko et al. propose the following definition:<ref>{{Cite journal|last=Ko|first=Andrew J.|last2=Abraham|first2=Robin|last3=Beckwith|first3=Laura|last4=Blackwell|first4=Alan|last5=Burnett|first5=Margaret|last6=Erwig|first6=Martin|last7=Scaffidi|first7=Chris|last8=Lawrance|first8=Joseph|last9=Lieberman|first9=Henry|date=2011-04-01|title=The State of the Art in End-user Software Engineering|journal=ACM Comput. Surv.|volume=43|issue=3|pages=21:1–21:44|doi=10.1145/1922649.1922658|issn=0360-0300|citeseerx=10.1.1.159.8597}}</ref>


<blockquote>End-user programming is programming to achieve the result of a program primarily for personal, rather [than] public use.</blockquote>
<blockquote>End-user programming is programming to achieve the result of a program primarily for personal, rather [than] public use.</blockquote>
Line 35: Line 35:
* [[Computer animation|Animation]] scripts used by graphic artists to describe characters, environments and how characters move to produce an intended animation
* [[Computer animation|Animation]] scripts used by graphic artists to describe characters, environments and how characters move to produce an intended animation
* [[Configuration file]]s that blur the line between programs and data (e.g., [[E-mail filtering|email filters]] are sequenced lists of criteria and actions to take)
* [[Configuration file]]s that blur the line between programs and data (e.g., [[E-mail filtering|email filters]] are sequenced lists of criteria and actions to take)
* [[Example-Centric Programming]] tools<ref>{{cite journal|last1=Scaffidi|first1=Christopher|last2=Brandt|first2=Joel|last3=Burnett|first3=Margaret|last4=Dove|first4=Andrew|last5=Myers|first5=Brad|title=SIG: end-user programming|journal=CHI '12 Extended Abstracts on Human Factors in Computing Systems|date=2012|pages=1193–1996|doi=10.1145/2212776.2212421|url=http://dl.acm.org/citation.cfm?id=2212776.2212421&coll=DL&dl=GUIDE&CFID=597181533&CFTOKEN=26959364}}</ref>
* [[Example-Centric Programming]] tools<ref>{{cite book|last1=Scaffidi|first1=Christopher|last2=Brandt|first2=Joel|last3=Burnett|first3=Margaret|last4=Dove|first4=Andrew|last5=Myers|first5=Brad|title=SIG: end-user programming|journal=CHI '12 Extended Abstracts on Human Factors in Computing Systems|date=2012|pages=1193–1996|doi=10.1145/2212776.2212421|url=http://dl.acm.org/citation.cfm?id=2212776.2212421&coll=DL&dl=GUIDE&CFID=597181533&CFTOKEN=26959364|isbn=9781450310161|series=Chi Ea '12}}</ref>
* Arguably, contributions to [[Open-source model|open source]] projects where users of a software package contribute their own code for inclusion in the main [[Software package (installation)|package]] — in some cases, end-users participate as full-fledged developers
* Arguably, contributions to [[Open-source model|open source]] projects where users of a software package contribute their own code for inclusion in the main [[Software package (installation)|package]] — in some cases, end-users participate as full-fledged developers
* [[Mod (computer gaming)|Game modifications]] to introduce users' own characters, environments, etc. — many recent games are distributed with modification in mind
* [[Mod (computer gaming)|Game modifications]] to introduce users' own characters, environments, etc. — many recent games are distributed with modification in mind
Line 45: Line 45:
* Simulations created using [[Software prototyping#Application definition or simulation software|application definition software]]
* Simulations created using [[Software prototyping#Application definition or simulation software|application definition software]]
* [[Simultaneous editing]] of many related items either through a [[Batch processing|batch process]] specified by the end user or by [[Direct manipulation interface|direct manipulation]], like those available in the [[Lapis (text editor)|Lapis text editor]] and [http://blogs.gnome.org/jessevdk/2009/11/15/new-gedit-plugin-multi-edit/ multi edit].
* [[Simultaneous editing]] of many related items either through a [[Batch processing|batch process]] specified by the end user or by [[Direct manipulation interface|direct manipulation]], like those available in the [[Lapis (text editor)|Lapis text editor]] and [http://blogs.gnome.org/jessevdk/2009/11/15/new-gedit-plugin-multi-edit/ multi edit].
* [[Spreadsheets|Spreadsheet]] models, e.g., used for budgeting, risk analysis, interactive [[machine learning]],<ref name=spreadsheet_machinelearning>{{cite journal|last1=Sarkar|first1=Advait|last2=Blackwell|first2=Alan|last3=Jamnik|first3=Mateja|last4=Spott|first4=Martin|title=Teach and Try: A simple interaction technique for exploratory data modelling by end users|journal=2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC 2014)|pages=53–56|doi=10.1109/VLHCC.2014.6883022|url=http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6883022}}</ref> or [[electronic circuit design]]<ref name="haynes1985fall">{{cite news | url=https://archive.org/stream/byte-magazine-1985-11/1985_11_BYTE_10-11_Inside_the_IBM_PCs#page/n145/mode/2up | title=Circuit Design with Lotus 1-2-3 | work=BYTE | date=Fall 1985 | accessdate=19 March 2016 | author=Haynes, John L. | pages=143–156}}</ref>
* [[Spreadsheets|Spreadsheet]] models, e.g., used for budgeting, risk analysis, interactive [[machine learning]],<ref name=spreadsheet_machinelearning>{{cite book|last1=Sarkar|first1=Advait|last2=Blackwell|first2=Alan|last3=Jamnik|first3=Mateja|last4=Spott|first4=Martin|title=Teach and Try: A simple interaction technique for exploratory data modelling by end users|journal=2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC 2014)|pages=53–56|doi=10.1109/VLHCC.2014.6883022|url=http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6883022|date=July 2014|isbn=978-1-4799-4035-6|citeseerx=10.1.1.695.2025}}</ref> or [[electronic circuit design]]<ref name="haynes1985fall">{{cite news | url=https://archive.org/stream/byte-magazine-1985-11/1985_11_BYTE_10-11_Inside_the_IBM_PCs#page/n145/mode/2up | title=Circuit Design with Lotus 1-2-3 | work=BYTE | date=Fall 1985 | accessdate=19 March 2016 | author=Haynes, John L. | pages=143–156}}</ref>
* [[Visual programming language|Visual programming]] in the form of visual languages such as [[AgentSheets]], [[LabVIEW]], [[Scratch (programming language)]] or [[LEGO Mindstorms]].
* [[Visual programming language|Visual programming]] in the form of visual languages such as [[AgentSheets]], [[LabVIEW]], [[Scratch (programming language)]] or [[LEGO Mindstorms]].
* End-user mobile app development tools such as [[App Inventor]]
* End-user mobile app development tools such as [[App Inventor]]
* [[Web page]]s - plain HTML or HTML and scripting
* [[Web page]]s - plain HTML or HTML and scripting
* [[Wiki]]s - a collaborative end-user development process {{Citation needed|date=May 2010}}
* [[Wiki]]s - a collaborative end-user development process {{Citation needed|date=May 2010}}
* [[Mashup (web application hybrid)|Web Mashups]] in the form of visual languages.<ref>{{Cite journal | ref=harv
* [[Mashup (web application hybrid)|Web Mashups]] in the form of visual languages.<ref>{{Cite book | ref=harv
| last=Roy Chowdhury | first=Soudip
| last=Roy Chowdhury | first=Soudip
| last2=Rodriguez | first2=Carlos
| last2=Rodriguez | first2=Carlos
Line 56: Line 56:
| last4=Casati | first4=Fabio
| last4=Casati | first4=Fabio
| year=2010
| year=2010
| title=Wisdom-aware computing: on the interactive recommendation of composition knowledge | url=http://dl.acm.org/citation.cfm?id=1987701
| title=Wisdom-aware computing: on the interactive recommendation of composition knowledge | pages=144–155 | url=http://dl.acm.org/citation.cfm?id=1987701
| isbn=9783642193934 | series=Icsoc'10 }}</ref>
}}</ref>


==Cost-benefit modeling==
==Cost-benefit modeling==
According to [[Alistair Sutcliffe|Sutcliffe]],<ref>{{cite journal
According to [[Alistair Sutcliffe|Sutcliffe]],<ref>{{cite journal
| last = [[Alistair Sutcliffe|Sutcliffe, Alistair]]
| last = [[Alistair Sutcliffe|Sutcliffe, Alistair]]
| first =
|date=July 2005
|date=July 2005
| title = Evaluating the costs and benefits of end-user development
| title = Evaluating the costs and benefits of end-user development
Line 69: Line 68:
| issue = 4
| issue = 4
| pages = 1–4
| pages = 1–4
| publisher = [[Association for Computing Machinery|ACM]]
| doi = 10.1145/1082983.1083241
| doi = 10.1145/1082983.1083241
| url = http://portal.acm.org/citation.cfm?id=1082983.1083241
| url = http://portal.acm.org/citation.cfm?id=1082983.1083241
Line 93: Line 91:
Many end-user development activities are collaborative in nature, including collaboration between professional developers and end-user developers and collaboration among end-user developers.
Many end-user development activities are collaborative in nature, including collaboration between professional developers and end-user developers and collaboration among end-user developers.


Mutual development<ref>{{Cite journal|last=Andersen|first=Renate|last2=Mørch|first2=Anders I.|date=2009-03-02|title=Mutual Development: A Case Study in Customer-Initiated Software Product Development|url=https://link.springer.com/chapter/10.1007/978-3-642-00427-8_3|journal=End-User Development|language=en|publisher=Springer, Berlin, Heidelberg|pages=31–49|doi=10.1007/978-3-642-00427-8_3}}</ref> is a technique where professional developers and end-user developers work together in creating software solutions. In mutual development, the professional developers often “under design” the system and provide the tools to allow the “owners of problems<ref>{{Cite book|url=https://link.springer.com/chapter/10.1007/978-3-662-03035-6_23|title=User-Centred Requirements for Software Engineering Environments|last=Fischer|first=Gerhard|date=1994-01-01|publisher=Springer, Berlin, Heidelberg|pages=297–306|language=en|doi=10.1007/978-3-662-03035-6_23}}</ref>" to create the suitable solution at use time for their needs, objectives and situational contexts.<ref>{{Cite book|url=https://link.springer.com/chapter/10.1007/1-4020-5386-X_19|title=End User Development|last=Fischer|first=Gerhard|last2=Giaccardi|first2=Elisa|date=2006-01-01|publisher=Springer Netherlands|isbn=9781402042201|editor-last=Lieberman|editor-first=Henry|series=Human-Computer Interaction Series|pages=427–457|language=en|doi=10.1007/1-4020-5386-x_19|editor-last2=Paternò|editor-first2=Fabio|editor-last3=Wulf|editor-first3=Volker}}</ref> Then the communication between professional developers and end-user developers can often stimulate formalizing ad hoc modifications by the end users into software artifacts, transforming end-user developed solutions into commercial product features with impacts beyond local solutions.
Mutual development<ref>{{Cite book|last=Andersen|first=Renate|last2=Mørch|first2=Anders I.|date=2009-03-02|title=Mutual Development: A Case Study in Customer-Initiated Software Product Development|journal=End-User Development|volume=5435|language=en|pages=31–49|doi=10.1007/978-3-642-00427-8_3|series=Lecture Notes in Computer Science|isbn=978-3-642-00425-4|citeseerx=10.1.1.598.9066}}</ref> is a technique where professional developers and end-user developers work together in creating software solutions. In mutual development, the professional developers often “under design” the system and provide the tools to allow the “owners of problems<ref>{{Cite book|title=User-Centred Requirements for Software Engineering Environments|last=Fischer|first=Gerhard|date=1994-01-01|publisher=Springer, Berlin, Heidelberg|pages=297–306|language=en|doi=10.1007/978-3-662-03035-6_23|chapter = Putting the Owners of Problems in Charge with Domain-oriented Design Environments|isbn = 978-3-642-08189-7|citeseerx = 10.1.1.310.8814}}</ref>" to create the suitable solution at use time for their needs, objectives and situational contexts.<ref>{{Cite book|title=End User Development|last=Fischer|first=Gerhard|last2=Giaccardi|first2=Elisa|date=2006-01-01|publisher=Springer Netherlands|isbn=9781402042201|editor-last=Lieberman|editor-first=Henry|series=Human-Computer Interaction Series|pages=427–457|language=en|doi=10.1007/1-4020-5386-x_19|editor-last2=Paternò|editor-first2=Fabio|editor-last3=Wulf|editor-first3=Volker}}</ref> Then the communication between professional developers and end-user developers can often stimulate formalizing ad hoc modifications by the end users into software artifacts, transforming end-user developed solutions into commercial product features with impacts beyond local solutions.


In this collaboration, various approaches such as the Software Shaping Workshop<ref>{{Cite book|url=https://link.springer.com/chapter/10.1007/1-4020-5386-X_1|title=End User Development|last=Lieberman|first=Henry|last2=Paternò|first2=Fabio|last3=Klann|first3=Markus|last4=Wulf|first4=Volker|date=2006-01-01|publisher=Springer Netherlands|isbn=9781402042201|editor-last=Lieberman|editor-first=Henry|series=Human-Computer Interaction Series|pages=1–8|language=en|doi=10.1007/1-4020-5386-x_1|editor-last2=Paternò|editor-first2=Fabio|editor-last3=Wulf|editor-first3=Volker}}</ref> are proposed to bridge the communication gap between professional developers and end-user developers. These approaches often provide translucency according to the social translucence model,<ref>{{Cite journal|last=Erickson|first=Thomas|last2=Kellogg|first2=Wendy A.|date=2000-03-01|title=Social Translucence: An Approach to Designing Systems That Support Social Processes|url=http://doi.acm.org/10.1145/344949.345004|journal=ACM Trans. Comput.-Hum. Interact.|volume=7|issue=1|pages=59–83|doi=10.1145/344949.345004|issn=1073-0516}}</ref> enabling everyone in the collaboration to be aware of changes made by others and to be held accountable of their actions because of the awareness.
In this collaboration, various approaches such as the Software Shaping Workshop<ref>{{Cite book|title=End User Development|last=Lieberman|first=Henry|last2=Paternò|first2=Fabio|last3=Klann|first3=Markus|last4=Wulf|first4=Volker|date=2006-01-01|publisher=Springer Netherlands|isbn=9781402042201|editor-last=Lieberman|editor-first=Henry|series=Human-Computer Interaction Series|pages=1–8|language=en|doi=10.1007/1-4020-5386-x_1|editor-last2=Paternò|editor-first2=Fabio|editor-last3=Wulf|editor-first3=Volker}}</ref> are proposed to bridge the communication gap between professional developers and end-user developers. These approaches often provide translucency according to the social translucence model,<ref>{{Cite journal|last=Erickson|first=Thomas|last2=Kellogg|first2=Wendy A.|date=2000-03-01|title=Social Translucence: An Approach to Designing Systems That Support Social Processes|journal=ACM Trans. Comput.-Hum. Interact.|volume=7|issue=1|pages=59–83|doi=10.1145/344949.345004|issn=1073-0516}}</ref> enabling everyone in the collaboration to be aware of changes made by others and to be held accountable of their actions because of the awareness.


Besides programming collaboration platforms like GitHub, which are mostly utilized by expert developers due to their steep learning curve, collaborations among end-user developers often take place on wiki platforms where the software artifacts created are shared. End-user development is also often used for creating automation scripts or interactive tutorials for sharing “how-to” knowledge. Examples of such application include CoScripter<ref>{{Cite journal|last=Leshed|first=Gilly|last2=Haber|first2=Eben M.|last3=Matthews|first3=Tara|last4=Lau|first4=Tessa|date=2008-01-01|title=CoScripter: Automating & Sharing How-to Knowledge in the Enterprise|url=http://doi.acm.org/10.1145/1357054.1357323|journal=Proceedings of the SIGCHI Conference on Human Factors in Computing Systems|series=CHI '08|location=New York, NY, USA|publisher=ACM|pages=1719–1728|doi=10.1145/1357054.1357323|isbn=9781605580111}}</ref> and HILC.<ref>{{Cite journal|last=Intharah|first=Thanapong|last2=Turmukhambetov|first2=Daniyar|last3=Brostow|first3=Gabriel J.|date=2017-01-01|title=Help, It Looks Confusing: GUI Task Automation Through Demonstration and Follow-up Questions|url=http://doi.acm.org/10.1145/3025171.3025176|journal=Proceedings of the 22Nd International Conference on Intelligent User Interfaces|series=IUI '17|location=New York, NY, USA|publisher=ACM|pages=233–243|doi=10.1145/3025171.3025176|isbn=9781450343480}}</ref> In such applications, user can create scripts for tasks using pseudo-natural language or via programming by demonstration. The users can choose to upload the script to a wiki style repository of scripts. On this wiki, users can browse available scripts and extend existing scripts to support additional parameters, to handle additional conditions or to operate on additional objects.
Besides programming collaboration platforms like GitHub, which are mostly utilized by expert developers due to their steep learning curve, collaborations among end-user developers often take place on wiki platforms where the software artifacts created are shared. End-user development is also often used for creating automation scripts or interactive tutorials for sharing “how-to” knowledge. Examples of such application include CoScripter<ref>{{Cite book|last=Leshed|first=Gilly|last2=Haber|first2=Eben M.|last3=Matthews|first3=Tara|last4=Lau|first4=Tessa|date=2008-01-01|title=CoScripter: Automating & Sharing How-to Knowledge in the Enterprise|journal=Proceedings of the SIGCHI Conference on Human Factors in Computing Systems|series=CHI '08|location=New York, NY, USA|publisher=ACM|pages=1719–1728|doi=10.1145/1357054.1357323|isbn=9781605580111}}</ref> and HILC.<ref>{{Cite book|last=Intharah|first=Thanapong|last2=Turmukhambetov|first2=Daniyar|last3=Brostow|first3=Gabriel J.|date=2017-01-01|title=Help, It Looks Confusing: GUI Task Automation Through Demonstration and Follow-up Questions|journal=Proceedings of the 22Nd International Conference on Intelligent User Interfaces|series=IUI '17|location=New York, NY, USA|publisher=ACM|pages=233–243|doi=10.1145/3025171.3025176|isbn=9781450343480}}</ref> In such applications, user can create scripts for tasks using pseudo-natural language or via programming by demonstration. The users can choose to upload the script to a wiki style repository of scripts. On this wiki, users can browse available scripts and extend existing scripts to support additional parameters, to handle additional conditions or to operate on additional objects.


Online and offline communities of end-user developers have also been formed, where end-user developers can collaboratively solve EUD problems of shared interest or for mutual benefit. In such communities, local experts spread expertise and advice. Community members also provide social support for each other to support the collaborative construction of software.<ref>{{Cite journal|last=Fischer|first=G.|last2=Giaccardi|first2=E.|last3=Ye|first3=Y.|last4=Sutcliffe|first4=A. G.|last5=Mehandjiev|first5=N.|date=2004-09-01|title=Meta-design: A Manifesto for End-user Development|url=http://doi.acm.org/10.1145/1015864.1015884|journal=Commun. ACM|volume=47|issue=9|pages=33–37|doi=10.1145/1015864.1015884|issn=0001-0782}}</ref>
Online and offline communities of end-user developers have also been formed, where end-user developers can collaboratively solve EUD problems of shared interest or for mutual benefit. In such communities, local experts spread expertise and advice. Community members also provide social support for each other to support the collaborative construction of software.<ref>{{Cite journal|last=Fischer|first=G.|last2=Giaccardi|first2=E.|last3=Ye|first3=Y.|last4=Sutcliffe|first4=A. G.|last5=Mehandjiev|first5=N.|date=2004-09-01|title=Meta-design: A Manifesto for End-user Development|journal=Commun. ACM|volume=47|issue=9|pages=33–37|doi=10.1145/1015864.1015884|issn=0001-0782}}</ref>


==Criticism==
==Criticism==
Line 106: Line 104:
<blockquote>It’s simply unfathomable that we could expect security... from the vast majority of software applications out there when they’re written with little, if any, knowledge of generally accepted good practices such as specifying before coding, systematic testing, and so on.... How many X for Complete Idiots (where "X" is your favorite programming language) books are out there? I was initially amused by this trend, but recently I’ve become uneasy thinking about where these dabblers are applying their newfound knowledge.</blockquote>
<blockquote>It’s simply unfathomable that we could expect security... from the vast majority of software applications out there when they’re written with little, if any, knowledge of generally accepted good practices such as specifying before coding, systematic testing, and so on.... How many X for Complete Idiots (where "X" is your favorite programming language) books are out there? I was initially amused by this trend, but recently I’ve become uneasy thinking about where these dabblers are applying their newfound knowledge.</blockquote>


This viewpoint assumes that all end users are equally naive when it comes to understanding software, although Pliskin and Shoval argue this is not the case, that sophisticated end users are capable of end-user development.<ref>{{cite journal |url=http://portal.acm.org/citation.cfm?id=1017817 |first=Nava |last=Pliskin |author2=Shoval, Peretz |title=End-user prototyping: sophisticated users supporting system development |journal=ACM SIGMIS Database |volume=4 |issue=4 |pages=7–17|year=1987|doi=10.1145/1017816.1017817|accessdate=2008-05-29 }}</ref> However, compared with expert programmers, end-user programmers rarely have the time or interest in systematic and disciplined software engineering activities,<ref>{{Cite journal|last=Brandt|first=Joel|last2=Guo|first2=Philip J.|last3=Lewenstein|first3=Joel|last4=Klemmer|first4=Scott R.|date=2008-01-01|title=Opportunistic Programming: How Rapid Ideation and Prototyping Occur in Practice|url=http://doi.acm.org/10.1145/1370847.1370848|journal=Proceedings of the 4th International Workshop on End-user Software Engineering|series=WEUSE '08|location=New York, NY, USA|publisher=ACM|pages=1–5|doi=10.1145/1370847.1370848|isbn=9781605580340}}</ref> which makes ensuring the quality of the software artifact produced by end-user development particularly challenging.
This viewpoint assumes that all end users are equally naive when it comes to understanding software, although Pliskin and Shoval argue this is not the case, that sophisticated end users are capable of end-user development.<ref>{{cite journal |url=http://portal.acm.org/citation.cfm?id=1017817 |first=Nava |last=Pliskin |author2=Shoval, Peretz |title=End-user prototyping: sophisticated users supporting system development |journal=ACM SIGMIS Database |volume=4 |issue=4 |pages=7–17|year=1987|doi=10.1145/1017816.1017817|accessdate=2008-05-29 }}</ref> However, compared with expert programmers, end-user programmers rarely have the time or interest in systematic and disciplined software engineering activities,<ref>{{Cite book|last=Brandt|first=Joel|last2=Guo|first2=Philip J.|last3=Lewenstein|first3=Joel|last4=Klemmer|first4=Scott R.|date=2008-01-01|title=Opportunistic Programming: How Rapid Ideation and Prototyping Occur in Practice|journal=Proceedings of the 4th International Workshop on End-user Software Engineering|series=WEUSE '08|location=New York, NY, USA|publisher=ACM|pages=1–5|doi=10.1145/1370847.1370848|isbn=9781605580340}}</ref> which makes ensuring the quality of the software artifact produced by end-user development particularly challenging.


In response to this, the study of '''end-user software engineering''' has emerged. It is concerned with issues beyond end-user development, whereby end users become motivated to consider issues such as reusability, security and verifiability when developing their solutions.<ref>{{cite web |url=http://eusesconsortium.org/findings.php |title=End-User Software Engineering: Empirical Findings| publisher=End Users Shaping Effective Software Consortium | accessdate=2008-05-28 }}</ref>
In response to this, the study of '''end-user software engineering''' has emerged. It is concerned with issues beyond end-user development, whereby end users become motivated to consider issues such as reusability, security and verifiability when developing their solutions.<ref>{{cite web |url=http://eusesconsortium.org/findings.php |title=End-User Software Engineering: Empirical Findings| publisher=End Users Shaping Effective Software Consortium | accessdate=2008-05-28 }}</ref>
Line 124: Line 122:


==Further reading==
==Further reading==
* {{cite book |last= Cypher |first= Allen |others= Contributor Daniel C. Halbert |title= Watch What I Do: Programming by Demonstration |publisher= Publisher: MIT Press |url= http://www.acypher.com/wwid/ |isbn=0-262-03213-9 |year= 1993}}
* {{cite book |last= Cypher |first= Allen |others= Contributor Daniel C. Halbert |title= Watch What I Do: Programming by Demonstration |publisher= Publisher: MIT Press |url= http://www.acypher.com/wwid/ |isbn=978-0-262-03213-1 |year= 1993}}
* {{cite book |last= Lieberman |first= Henry |others= Contributor Ben Shneiderman |title= Your Wish is My Command: Programming By Example |publisher= Publisher: Morgan Kaufmann |url= http://web.media.mit.edu/~lieber/PBE/Your-Wish/ |isbn=1-55860-688-2 |year= 2001}}
* {{cite book |last= Lieberman |first= Henry |others= Contributor Ben Shneiderman |title= Your Wish is My Command: Programming By Example |publisher= Publisher: Morgan Kaufmann |url= http://web.media.mit.edu/~lieber/PBE/Your-Wish/ |isbn=978-1-55860-688-3 |year= 2001}}
* F. Paternò (2013) [http://www.hindawi.com/isrn/se/2013/532659/ End User Development: Survey of an Emerging Field for Empowering People], ISRN Software Engineering, vol. 2013, Article ID 532659, 11 pages, 2013. doi:10.1155/2013/532659, 2013
* F. Paternò (2013) [http://www.hindawi.com/isrn/se/2013/532659/ End User Development: Survey of an Emerging Field for Empowering People], ISRN Software Engineering, vol. 2013, Article ID 532659, 11 pages, 2013. doi:10.1155/2013/532659, 2013
* B. Guo, D. Zhang, M. Imai. Enabling User-Oriented Management for Ubiquitous Computing: The Meta-Design Approach, Computer Networks, Elsevier, Vol. 54, No. 16, 2010.
* B. Guo, D. Zhang, M. Imai. Enabling User-Oriented Management for Ubiquitous Computing: The Meta-Design Approach, Computer Networks, Elsevier, Vol. 54, No. 16, 2010.
* Burnett, Margaret M. and Scaffidi, Christopher (2011): [http://www.interaction-design.org/encyclopedia/end-user_development.html End-User Development]. In: Soegaard, Mads and Dam, Rikke Friis (eds.). "Encyclopedia of Human-Computer Interaction".
* Burnett, Margaret M. and Scaffidi, Christopher (2011): [http://www.interaction-design.org/encyclopedia/end-user_development.html End-User Development]. In: Soegaard, Mads and Dam, Rikke Friis (eds.). "Encyclopedia of Human-Computer Interaction".
* [[Kierkegaard, Patrick]](2011) {{cite journal|url=http://www.springerlink.com/content/3k78608106533074/ |title= Beefing Up End User Development: Legal Protection and Regulatory Compliance |journal=End-user Development. Lecture Notes in Computer Science| volume=6654/2011 | year=2011 | doi=10.1007/978-3-642-21530-8_16 | pages=203–217|series=Lecture Notes in Computer Science|last1=Kierkegaard|first1=Patrick|isbn=978-3-642-21529-2 }}
* [[Kierkegaard, Patrick]](2011) {{cite book|url=http://www.springerlink.com/content/3k78608106533074/ |title= Beefing Up End User Development: Legal Protection and Regulatory Compliance |journal=End-user Development. Lecture Notes in Computer Science| volume=6654/2011 | year=2011 | doi=10.1007/978-3-642-21530-8_16 | pages=203–217|series=Lecture Notes in Computer Science|last1=Kierkegaard|first1=Patrick|isbn=978-3-642-21529-2 }}


==External links==
==External links==

Revision as of 22:38, 21 January 2019

End-user development (EUD) or end-user programming (EUP) refers to activities and tools that allow end-users – people who are not professional software developers – to program computers. People who are not professional developers can use EUD tools to create or modify software artifacts (descriptions of automated behavior) and complex data objects without significant knowledge of a programming language. In 2005 it was estimated (using statistics from the U.S. Bureau of Labor Statistics) that by 2012 there would be more than 55 million end-user developers in the United States, compared with fewer than 3 million professional programmers.[1] Various EUD approaches exist, and it is an active research topic within the field of computer science and human-computer interaction. Examples include natural language programming,[2][3] spreadsheets,[4] scripting languages (particularly in an office suite or art application), visual programming, trigger-action programming and programming by example.

The most popular EUD tool is the spreadsheet.[4][5] Due to their unrestricted nature, spreadsheets allow relatively un-sophisticated computer users to write programs that represent complex data models, while shielding them from the need to learn lower-level programming languages.[6] Because of their common use in business, spreadsheet skills are among the most beneficial skills for a graduate employee to have, and are therefore the most commonly sought after[7] In the United States of America alone, there are an estimated 13 million end-user developers programming with spreadsheets[8]

The programming by example (PbE) approach reduces the need for the user to learn the abstractions of a classic programming language. The user instead introduces some examples of the desired results or operations that should be performed on the data, and the PbE system infers some abstractions corresponding to a program that produces this output, which the user can refine. New data may then be introduced to the automatically created program, and the user can correct any mistakes made by the program in order to improve its definition. Low-code development platforms are also an approach to EUD.

One evolution in this area has considered the use of mobile devices to support end-user development activities. In this case previous approaches for desktop applications cannot be simply reproposed, given the specific characteristics of mobile devices. Desktop EUD environments lack the advantages of enabling end users to create applications opportunistically while on the move.[9]

More recently, interest in how to exploit EUD to support development of Internet of Things applications has increased. In this area trigger-action programming seems a promising approach.[10]

Lessons learned from EUD solutions can significantly influence the software life cycles for commercial software products, in-house intranet/extranet developments and enterprise application deployments.

Application specific low code development platforms

Roughly 40 vendors now offer solutions targeted at end users designed to reduce programming efforts. These solutions do not require traditional programming and may be based around relatively narrow functionality, e.g. contract management, customer relationships management, issue and bug tracking. Often referred to as low code development platforms, web based interactions guide a user to develop an application in as little as 40-80 hours.[11][better source needed]

Definition

Lieberman et al. propose the following definition:[12]

End-User Development can be defined as a set of methods, techniques, and tools that allow users of software systems, who are acting as non-professional software developers, at some point to create, modify or extend a software artifact.

Ko et al. propose the following definition:[13]

End-user programming is programming to achieve the result of a program primarily for personal, rather [than] public use.

Artifacts defined by end users may be objects describing some automated behavior or control sequence, such as database requests or grammar rules,[14] which can be described with programming paradigms such as programming by demonstration, programming with examples, visual programming, or macro generation.[15] They can also be parameters that choose between alternative predefined behaviors of an application.[16] Other artifacts of end-user development may also refer to the creation of user-generated content such as annotations, which may be or not computationally interpretable (i.e. can be processed by associated automated functions).[17]

Examples

Examples of end-user development include the creation and modification of:

Cost-benefit modeling

According to Sutcliffe,[22] EUD essentially outsources development effort to the end user. Because there is always some effort to learn an EUD tool, the users' motivation depends on their confidence that it will empower their work, save time on the job or raise productivity. In this model, the benefits to users are initially based on marketing, demonstrations and word-of-mouth. Once the technology is put into use, experience of actual benefits becomes the key motivator.

This study defines costs as the sum of:

  • Technical cost: the price of the technology and the effort to install it
  • Learning cost: the time taken to understand the technology
  • Development cost: the effort to develop applications using the technology
  • Test and debugging cost: the time taken to verify the system

The first and second costs are incurred once during acquisition, whereas the third and fourth are incurred every time an application is developed. Benefits (which may be perceived or actual) are seen as:

  • Functionality delivered by the technology
  • Flexibility to respond to new requirements
  • Usability of applications produced
  • Overall quality of the applications produced

Collaborations in end-user development

Many end-user development activities are collaborative in nature, including collaboration between professional developers and end-user developers and collaboration among end-user developers.

Mutual development[23] is a technique where professional developers and end-user developers work together in creating software solutions. In mutual development, the professional developers often “under design” the system and provide the tools to allow the “owners of problems[24]" to create the suitable solution at use time for their needs, objectives and situational contexts.[25] Then the communication between professional developers and end-user developers can often stimulate formalizing ad hoc modifications by the end users into software artifacts, transforming end-user developed solutions into commercial product features with impacts beyond local solutions.

In this collaboration, various approaches such as the Software Shaping Workshop[26] are proposed to bridge the communication gap between professional developers and end-user developers. These approaches often provide translucency according to the social translucence model,[27] enabling everyone in the collaboration to be aware of changes made by others and to be held accountable of their actions because of the awareness.

Besides programming collaboration platforms like GitHub, which are mostly utilized by expert developers due to their steep learning curve, collaborations among end-user developers often take place on wiki platforms where the software artifacts created are shared. End-user development is also often used for creating automation scripts or interactive tutorials for sharing “how-to” knowledge. Examples of such application include CoScripter[28] and HILC.[29] In such applications, user can create scripts for tasks using pseudo-natural language or via programming by demonstration. The users can choose to upload the script to a wiki style repository of scripts. On this wiki, users can browse available scripts and extend existing scripts to support additional parameters, to handle additional conditions or to operate on additional objects.

Online and offline communities of end-user developers have also been formed, where end-user developers can collaboratively solve EUD problems of shared interest or for mutual benefit. In such communities, local experts spread expertise and advice. Community members also provide social support for each other to support the collaborative construction of software.[30]

Criticism

Commentators have been concerned that end users do not understand how to test and secure their applications. Warren Harrison, a professor of computer science at Portland State University, wrote:[31]

It’s simply unfathomable that we could expect security... from the vast majority of software applications out there when they’re written with little, if any, knowledge of generally accepted good practices such as specifying before coding, systematic testing, and so on.... How many X for Complete Idiots (where "X" is your favorite programming language) books are out there? I was initially amused by this trend, but recently I’ve become uneasy thinking about where these dabblers are applying their newfound knowledge.

This viewpoint assumes that all end users are equally naive when it comes to understanding software, although Pliskin and Shoval argue this is not the case, that sophisticated end users are capable of end-user development.[32] However, compared with expert programmers, end-user programmers rarely have the time or interest in systematic and disciplined software engineering activities,[33] which makes ensuring the quality of the software artifact produced by end-user development particularly challenging.

In response to this, the study of end-user software engineering has emerged. It is concerned with issues beyond end-user development, whereby end users become motivated to consider issues such as reusability, security and verifiability when developing their solutions.[34]

An alternative scenario is that end users or their consultants employ declarative tools that support rigorous business and security rules at the expense of performance and scalability; tools created using EUD will typically have worse efficiency than those created with professional programming environments. Though separating functionality from efficiency is a valid separation of concerns, it can lead to a situation where end users will complete and document the requirements analysis and prototyping of the tool, without the involvement of business analysts. Thus, users will define the functions required before these experts have a chance to consider the limitations of a specific application or software framework. Senior management support for such end-user initiatives depends on their attitude to existing or potential vendor lock-in.

See also

References

  1. ^ Scaffidi, C.; Shaw, M.; Myers, B. (2005-09-01). Estimating the numbers of end users and end user programmers. pp. 207–214. doi:10.1109/VLHCC.2005.34. ISBN 978-0-7695-2443-6. {{cite book}}: |journal= ignored (help)
  2. ^ Little, Greg, and Robert C. Miller. "Translating keyword commands into executable code." Proceedings of the 19th annual ACM symposium on User interface software and technology. ACM, 2006.
  3. ^ Bruckman, Amy, and Elizabeth Edwards. "Should we leverage natural-language knowledge? An analysis of user errors in a natural-language-style programming language." Proceedings of the SIGCHI conference on Human Factors in Computing Systems. ACM, 1999. APA
  4. ^ a b Burnett, Margaret M.; Scaffidi, Christopher. End-User Development. Interaction-Design.org. at "Encyclopedia of Human-Computer Interaction".
  5. ^ Hornsby, Peter (2009-08-03). "Empowering Users to Create Their Own Software". UXmatters. Retrieved 2014-01-31.
  6. ^ Abraham, R.; Burnett, M; Erwig, M (2009). "Spreadsheet programming". Wiley Encyclopedia of Computer Science and Engineering. pp. 1–10.
  7. ^ Kruck, S. & Sheetz, S., 2001. Spreadsheet accuracy theory. Journal of Information Systems Education.
  8. ^ Scaffidi, C., Shaw, M. & Myers, B., 2005. Estimating the Numbers of End Users and End User Programmers. 2005 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC’05), pp.207–214.
  9. ^ Paternò F., 2013, ISRN Software Engineering, End User Development: Survey of an Emerging Field for Empowering People
  10. ^ Ghiani, G., Manca, M., Paternò, F., Santoro, C.: Personalization of Context-dependent Applications through Trigger-Action Rules. ACM Transactions on Computer-Human Interaction, Vol.24, Issue 2, Article N.14, April 2017.
  11. ^ Low-code development platforms
  12. ^ Lieberman, H., Paternò, F., Klann, M., and Wulf, V. (2006). End-User Development: An Emerging Paradigm. In: End-User Development, Lieberman, H., Paternò, F., and Wulf, V. (eds.), Springer Netherlands, 2006, ser. Human-Computer Interaction Series, vol. 9, Chapter 1, pp. 1-7, doi:10.1007/1-4020-5386-X_1
  13. ^ Ko, Andrew J.; Abraham, Robin; Beckwith, Laura; Blackwell, Alan; Burnett, Margaret; Erwig, Martin; Scaffidi, Chris; Lawrance, Joseph; Lieberman, Henry (2011-04-01). "The State of the Art in End-user Software Engineering". ACM Comput. Surv. 43 (3): 21:1–21:44. CiteSeerX 10.1.1.159.8597. doi:10.1145/1922649.1922658. ISSN 0360-0300.
  14. ^ H. Lieberman, B. A. Nardi, and D. Wright. Grammex: Defining grammars by example. In ACM conference on Human Factors in Computing Systems (Summary, Demonstrations) (CHI ’98), Los Angeles, California, USA, pages 11–12. ACM Press, Apr. 1998.
  15. ^ Maria Francesca Costabile, Daniela Fogli, Piero Mussio, Antonio Piccinno. End-user development: the software shaping workshop approach. In Lieberman, H., Paternò, F., Wulf, V. (Eds) (2004) End User Development - Empowering People to Flexibly Employ Advanced Information and Communication Technology, © 2004 Kluwer Academic Publishers, Dordrecht, The Netherlands.
  16. ^ Costabile, M.F., Fogli, D., Letondal, C., Mussio, P., Piccinno, A., Domain -Expert Users and their Needs of Software Development", UAHCI Conference, Crete, June 22–27, 2003, 232-236.
  17. ^ Gerhard Fischer End-User Development and Meta-Design: Foundations for Cultures of Participation. End-User Development Lecture Notes in Computer Science, 2009, Volume 5435/2009, 3-14,
  18. ^ Scaffidi, Christopher; Brandt, Joel; Burnett, Margaret; Dove, Andrew; Myers, Brad (2012). SIG: end-user programming. Chi Ea '12. pp. 1193–1996. doi:10.1145/2212776.2212421. ISBN 9781450310161. {{cite book}}: |journal= ignored (help)
  19. ^ Sarkar, Advait; Blackwell, Alan; Jamnik, Mateja; Spott, Martin (July 2014). Teach and Try: A simple interaction technique for exploratory data modelling by end users. pp. 53–56. CiteSeerX 10.1.1.695.2025. doi:10.1109/VLHCC.2014.6883022. ISBN 978-1-4799-4035-6. {{cite book}}: |journal= ignored (help)
  20. ^ Haynes, John L. (Fall 1985). "Circuit Design with Lotus 1-2-3". BYTE. pp. 143–156. Retrieved 19 March 2016.
  21. ^ Roy Chowdhury, Soudip; Rodriguez, Carlos; Daniel, Florian; Casati, Fabio (2010). Wisdom-aware computing: on the interactive recommendation of composition knowledge. Icsoc'10. pp. 144–155. ISBN 9783642193934. {{cite book}}: Invalid |ref=harv (help)
  22. ^ Sutcliffe, Alistair (July 2005). "Evaluating the costs and benefits of end-user development" (PDF). ACM SIGSOFT Software Engineering Notes. 30 (4): 1–4. doi:10.1145/1082983.1083241. Retrieved 2008-05-29.
  23. ^ Andersen, Renate; Mørch, Anders I. (2009-03-02). Mutual Development: A Case Study in Customer-Initiated Software Product Development. Lecture Notes in Computer Science. Vol. 5435. pp. 31–49. CiteSeerX 10.1.1.598.9066. doi:10.1007/978-3-642-00427-8_3. ISBN 978-3-642-00425-4. {{cite book}}: |journal= ignored (help)
  24. ^ Fischer, Gerhard (1994-01-01). "Putting the Owners of Problems in Charge with Domain-oriented Design Environments". User-Centred Requirements for Software Engineering Environments. Springer, Berlin, Heidelberg. pp. 297–306. CiteSeerX 10.1.1.310.8814. doi:10.1007/978-3-662-03035-6_23. ISBN 978-3-642-08189-7.
  25. ^ Fischer, Gerhard; Giaccardi, Elisa (2006-01-01). Lieberman, Henry; Paternò, Fabio; Wulf, Volker (eds.). End User Development. Human-Computer Interaction Series. Springer Netherlands. pp. 427–457. doi:10.1007/1-4020-5386-x_19. ISBN 9781402042201.
  26. ^ Lieberman, Henry; Paternò, Fabio; Klann, Markus; Wulf, Volker (2006-01-01). Lieberman, Henry; Paternò, Fabio; Wulf, Volker (eds.). End User Development. Human-Computer Interaction Series. Springer Netherlands. pp. 1–8. doi:10.1007/1-4020-5386-x_1. ISBN 9781402042201.
  27. ^ Erickson, Thomas; Kellogg, Wendy A. (2000-03-01). "Social Translucence: An Approach to Designing Systems That Support Social Processes". ACM Trans. Comput.-Hum. Interact. 7 (1): 59–83. doi:10.1145/344949.345004. ISSN 1073-0516.
  28. ^ Leshed, Gilly; Haber, Eben M.; Matthews, Tara; Lau, Tessa (2008-01-01). CoScripter: Automating & Sharing How-to Knowledge in the Enterprise. CHI '08. New York, NY, USA: ACM. pp. 1719–1728. doi:10.1145/1357054.1357323. ISBN 9781605580111. {{cite book}}: |journal= ignored (help)
  29. ^ Intharah, Thanapong; Turmukhambetov, Daniyar; Brostow, Gabriel J. (2017-01-01). Help, It Looks Confusing: GUI Task Automation Through Demonstration and Follow-up Questions. IUI '17. New York, NY, USA: ACM. pp. 233–243. doi:10.1145/3025171.3025176. ISBN 9781450343480. {{cite book}}: |journal= ignored (help)
  30. ^ Fischer, G.; Giaccardi, E.; Ye, Y.; Sutcliffe, A. G.; Mehandjiev, N. (2004-09-01). "Meta-design: A Manifesto for End-user Development". Commun. ACM. 47 (9): 33–37. doi:10.1145/1015864.1015884. ISSN 0001-0782.
  31. ^ Harrison, Warren (July–August 2004). "The Dangers of End-User Programming" (PDF). IEEE Software. 21 (4): 5. doi:10.1109/MS.2004.13. Retrieved 2009-03-02.
  32. ^ Pliskin, Nava; Shoval, Peretz (1987). "End-user prototyping: sophisticated users supporting system development". ACM SIGMIS Database. 4 (4): 7–17. doi:10.1145/1017816.1017817. Retrieved 2008-05-29.
  33. ^ Brandt, Joel; Guo, Philip J.; Lewenstein, Joel; Klemmer, Scott R. (2008-01-01). Opportunistic Programming: How Rapid Ideation and Prototyping Occur in Practice. WEUSE '08. New York, NY, USA: ACM. pp. 1–5. doi:10.1145/1370847.1370848. ISBN 9781605580340. {{cite book}}: |journal= ignored (help)
  34. ^ "End-User Software Engineering: Empirical Findings". End Users Shaping Effective Software Consortium. Retrieved 2008-05-28.

Further reading

External links