Content deleted Content added
→Definition: The Ko et al. article cited here does include the quotation as written, but if you read the article, the authors clearly intended to sat "rather [than] public use," since they go on to say "the distinction here is that [the] program itself is not primarily intended for use by a large number of users with varying needs". I also added a blockquote to match the above style. |
→Collaborations in end-user development: On this wiki → ... on such wikis |
||
(43 intermediate revisions by 27 users not shown) | |||
Line 1:
'''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
{{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.
APA
</ref> [[spreadsheet]]s,<ref name="encyclopedia"/> [[scripting
The most popular EUD tool is the [[spreadsheet]].<ref name="encyclopedia">{{cite
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.<ref>[http://www.hindawi.com/journals/isrn/2013/532659/ Paternò F., 2013, ISRN Software Engineering, End User Development: Survey of an Emerging Field for Empowering People]</ref>
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.<ref>[https://dl.acm.org/ft_gateway.cfm?id=3057861&ftid=1868975&dwn=1&CFID=15395619&CFTOKEN=88b71644acac92dd-68065E67-C078-832A-D6A5CF54EBDFA5C9/ 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.]</ref>
Lessons learned from EUD solutions can significantly influence the [[Software release life cycle|software life cycles]] for [[Software product management|commercial software products]], in-house [[intranet]]/[[extranet]] developments and [[Enterprise resource planning|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
==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>
<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|
<blockquote>End-user programming is programming to achieve the result of a program primarily for personal, rather [than] public use.</blockquote>
Line 32 ⟶ 30:
Examples of end-user development include the creation and modification of:
* [[3D modeling|3D models]] created with end-user oriented tools and apps such as [[Sketchup]]▼
* [[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)
* [[Example-Centric Programming]] tools<ref>{{cite
* [[Mod (computer gaming)|Game modifications]] to introduce users' own characters, environments, etc. — many recent games are distributed with modification in mind
* Interaction scripts used in [[Call centre|CRM call centres]]
* Process models used in [[workflow application]]s
* [[Software prototyping|Prototypes]] and ___domain-specific programs written by businesspeople, engineers, and scientists to demonstrate or test specific theories
* Robot behaviour<ref>{{cite book|last1=Leonardi|first1=Nicola|last2=Manca|first2=Marco|last3=Paternò|first3=Fabio|last4=Santoro|first4=Carmen |title=Proceedings of the 2019 CHI Conference on Human Factors in Computing Systems |chapter=Trigger-Action Programming for Personalising Humanoid Robot Behaviour |date=2019|pages=1–13 |doi=10.1145/3290605.3300675|isbn=978-145035970-2|s2cid=140220651 }}</ref>
* Scientific models used in [[computer simulation]].
* Scripts and macros added to extend or automate [[Office suite|office productivity suites]] and [[Graphics software|graphics applications]].
* 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].
* [[Spreadsheets|Spreadsheet]] models, e.g., used for budgeting, risk analysis, interactive [[machine learning]],<ref name=spreadsheet_machinelearning>{{cite
* [[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]]
* [[Web page]]s - plain HTML or HTML and scripting
* [[Wiki]]s - a collaborative end-user development process <ref>{{
* [[Mashup (web application hybrid)|Web Mashups]] in the form of visual languages.<ref>{{Cite book | last1=Roy Chowdhury | first1=Soudip | last2=Rodriguez | first2=Carlos | last3=Daniel | first3=Florian | last4=Casati | first4=Fabio | year=2010 | title=Wisdom-aware computing: on the interactive recommendation of composition knowledge | pages=[https://archive.org/details/serviceorientedc0000maxi/page/144 144–155] | url=https://archive.org/details/serviceorientedc0000maxi/page/144 | isbn=9783642193934 | series=Icsoc'10 }}</ref>
▲* [[3D modeling|3D models]] created with end-user oriented tools and apps such as [[Sketchup]]
==Cost-benefit modeling==
According to [[Alistair Sutcliffe|Sutcliffe]],<ref>{{cite journal
| last =
| author-link = Alistair Sutcliffe
|date=July 2005
| title = Evaluating the costs and benefits of end-user development
Line 69 ⟶ 60:
| issue = 4
| pages = 1–4
| doi = 10.1145/1082983.1083241
}}</ref> 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.
Line 93 ⟶ 80:
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
In this collaboration, various approaches such as the Software Shaping Workshop<ref>{{Cite book
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
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|
==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:<ref>{{cite journal
<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
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 |
An alternative scenario is that end users or their consultants employ [[Declarative programming|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 [[Software prototyping|prototyping]] of the tool, without the involvement of [[Business analysis|business analysts]]. Thus, users will define the functions required before these experts have a chance to consider the limitations of a specific [[Application software|application]] or [[software framework]]. Senior management support for such end-user initiatives depends on their attitude to existing or potential [[vendor lock-in]].
Line 124 ⟶ 111:
==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=
* {{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-
* 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
* 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".
*
==External links==
Line 135 ⟶ 122:
* [http://eusesconsortium.org EUSES Consortium, a collaboration that researches end user computing]
* [https://www.springer.com/west/home/generic/search/results?SGWID=4-40109-22-85672321-0&referer=www.springeronline.com&SHORTCUT=www.springer.com/sgw/cda/frontpage/0,11855,4-40109-22-85672321-0,00.html The End User Development book]
* [http://giove.cnuce.cnr.it/eud-net.htm The European Commission Network of Excellence on End-User Development] {{Webarchive|url=https://web.archive.org/web/20160303191133/http://giove.cnuce.cnr.it/eud-net.htm |date=2016-03-03 }}
* [https://web.archive.org/web/20120402234145/http://www.iisi.de/international-symposium-on-end-user-development/conference-series/ Conference Series International Symposium on End-User Development]
▲{{Programming paradigms navbox}}
{{DEFAULTSORT:End-User Development}}
|