End-user development (EUD) or end-user programming (EUP) refers to activities and tools that allow
end-user
In product development, an end user (sometimes end-user) is a person who ultimately uses or is intended to ultimately use a product. The end user stands in contrast to users who support or maintain the product, such as sysops, system administrat ...
s – 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
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
. In 2005 it was estimated (using statistics from the U.S.
Bureau of Labor Statistics
The Bureau of Labor Statistics (BLS) is a unit of the United States Department of Labor. It is the principal fact-finding agency for the U.S. government in the broad field of labor economics and statistics and serves as a principal agency of t ...
) 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. Various EUD approaches exist, and it is an active
research topic
Research is " creative and systematic work undertaken to increase the stock of knowledge". It involves the collection, organization and analysis of evidence to increase understanding of a topic, characterized by a particular attentiveness ...
within the field of
computer science
Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to Applied science, practical discipli ...
and
human-computer interaction. Examples include
natural language programming
Natural-language programming (NLP) is an ontology-assisted way of programming in terms of natural-language sentences, e.g. English. A structured document with Content, sections and subsections for explanations of sentences forms a NLP documen ...
,
spreadsheet
A spreadsheet is a computer application for computation, organization, analysis and storage of data in tabular form. Spreadsheets were developed as computerized analogs of paper accounting worksheets. The program operates on data entered in cel ...
s,
scripting languages (particularly in an office suite or art application),
visual programming
In computing, a visual programming language (visual programming system, VPL, or, VPS) is any programming language that lets users create programs by manipulating program elements ''graphically'' rather than by specifying them ''textually''. A VP ...
, trigger-action programming and
programming by example In computer science, programming by example (PbE), also termed programming by demonstration or more generally as demonstrational programming, is an end-user development technique for teaching a computer new behavior by demonstrating actions on conc ...
.
The most popular EUD tool is the
spreadsheet
A spreadsheet is a computer application for computation, organization, analysis and storage of data in tabular form. Spreadsheets were developed as computerized analogs of paper accounting worksheets. The program operates on data entered in cel ...
.
[ at "Encyclopedia of Human-Computer Interaction".] 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. 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 In the United States of America alone, there are an estimated 13 million end-user developers programming with spreadsheets
The
programming by example In computer science, programming by example (PbE), also termed programming by demonstration or more generally as demonstrational programming, is an end-user development technique for teaching a computer new behavior by demonstrating actions on conc ...
(''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
A low-code development platform (LCDP) provides a development environment used to create application software through a graphical user interface. A low-coded platform may produce entirely operational applications, or require additional coding for s ...
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.
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.
Lessons learned from EUD solutions can significantly influence the
software life cycles for
commercial software products, in-house
intranet
An intranet is a computer network for sharing information, easier communication, collaboration tools, operational systems, and other computing services within an organization, usually to the exclusion of access by outsiders. The term is used in c ...
/
extranet
An extranet is a controlled private network that allows access to partners, vendors and suppliers or an authorized set of customers – normally to a subset of the information accessible from an organization's intranet. An extranet is similar to a ...
developments and
enterprise application
Enterprise software, also known as enterprise application software (EAS), is computer software used to satisfy the needs of an organization rather than individual users. Such organizations include businesses, schools, interest-based user groups, ...
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.
Definition
Lieberman et al. propose the following definition:
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:
End-user programming is programming to achieve the result of a program primarily for personal, rather han
Han may refer to:
Ethnic groups
* Han Chinese, or Han People (): the name for the largest ethnic group in China, which also constitutes the world's largest ethnic group.
** Han Taiwanese (): the name for the ethnic group of the Taiwanese p ...
public use.
Artifacts defined by end users may be objects describing some automated behavior or control sequence, such as database requests or grammar rules, which can be described with programming paradigms such as
programming by demonstration
In computer science, programming by demonstration (PbD) is an end-user development technique for teaching a computer or a robot new behaviors by demonstrating the task to transfer directly instead of programming it through machine commands.
The te ...
,
programming with
examples,
visual programming
In computing, a visual programming language (visual programming system, VPL, or, VPS) is any programming language that lets users create programs by manipulating program elements ''graphically'' rather than by specifying them ''textually''. A VP ...
, or
macro generation. They can also be parameters that choose between alternative predefined behaviors of an application. 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).
Examples
Examples of end-user development include the creation and modification of:
*
Animation
Animation is a method by which image, still figures are manipulated to appear as Motion picture, moving images. In traditional animation, images are drawn or painted by hand on transparent cel, celluloid sheets to be photographed and exhibited ...
scripts used by graphic artists to describe characters, environments and how characters move to produce an intended animation
*
Configuration file
In computing, configuration files (commonly known simply as config files) are computer file, files used to configure the Parameter (computer programming), parameters and Initialization (programming), initial settings for some computer programs. T ...
s that blur the line between programs and data (e.g.,
email filters are sequenced lists of criteria and actions to take)
*
Example-Centric Programming tools
*
Game modifications to introduce users' own characters, environments, etc. — many recent games are distributed with modification in mind
* Interaction scripts used in
CRM call centres
* Mobile app development tools such as
App Inventor
MIT App Inventor is a web application integrated development environment originally provided by Google, and now maintained by the Massachusetts Institute of Technology (MIT). It allows newcomers to computer programming to create application softw ...
* Process models used in
workflow application
A workflow application is a software application which automates, to at least some degree, a process or processes. The processes are usually business-related but can be any process that requires a series of steps to be automated via software. Some ...
s
*
Prototypes
A prototype is an early sample, model, or release of a product built to test a concept or process. It is a term used in a variety of contexts, including semantics, design, electronics, and software programming. A prototype is generally used to ...
and domain-specific programs written by businesspeople, engineers, and scientists to demonstrate or test specific theories
* Robot behaviour
* Scientific models used in
computer simulation
Computer simulation is the process of mathematical modelling, performed on a computer, which is designed to predict the behaviour of, or the outcome of, a real-world or physical system. The reliability of some mathematical models can be dete ...
* Scripts and macros added to extend or automate
office productivity suites and
graphics applications.
* Simulations created using
application definition software
*
Simultaneous editing
In human–computer interaction, simultaneous editing is an end-user development technique allowing a user to make multiple simultaneous edits of text in a multiple selection at once through direct manipulation.
Multiple selections and cursors ...
of many related items either through a
batch process specified by the end user or by
direct manipulation
In computer science, human–computer interaction, and interaction design, direct manipulation is an approach to interfaces which involves continuous representation of objects of interest together with rapid, reversible, and incremental actions ...
, like those available in the
Lapis text editor an
multi edit
*
Spreadsheet
A spreadsheet is a computer application for computation, organization, analysis and storage of data in tabular form. Spreadsheets were developed as computerized analogs of paper accounting worksheets. The program operates on data entered in cel ...
models, e.g., used for budgeting, risk analysis, interactive
machine learning
Machine learning (ML) is a field of inquiry devoted to understanding and building methods that 'learn', that is, methods that leverage data to improve performance on some set of tasks. It is seen as a part of artificial intelligence.
Machine ...
,
or
electronic circuit design Electronic circuit design comprises the analysis and synthesis of electronic circuits.
Methods
To design any electrical circuit, either analog or digital, electrical engineers need to be able to predict the voltages and currents at all places withi ...
*
Visual programming
In computing, a visual programming language (visual programming system, VPL, or, VPS) is any programming language that lets users create programs by manipulating program elements ''graphically'' rather than by specifying them ''textually''. A VP ...
in the form of visual languages such as
AgentSheets
AgentSheets was one of the first modern block-based programming language for kids. The idea of AgentSheets was to overcome syntactic challenges found in common text-based programming languages by using drag and drop mechanisms conceptualizing com ...
,
LabVIEW
Laboratory Virtual Instrument Engineering Workbench (LabVIEW) is a system-design platform and development environment for a visual programming language from National Instruments.
The graphical language is named "G"; not to be confused with G-co ...
,
Scratch (programming language)
Scratch is a high-level block-based visual programming language and website aimed primarily at children as an educational tool for programming, with a target audience of ages 8 to 16. Users on the site, called Scratchers, can create projects ...
or
LEGO Mindstorms
Lego Mindstorms is a hardware and software structure which develops programmable robots based on Lego building blocks. Each version includes computer Lego bricks, a set of modular sensors and motors, and Lego parts from the Technic line to ...
.
*
Web pages - plain HTML or HTML and scripting
*
Wiki
A wiki ( ) is an online hypertext publication collaboratively edited and managed by its own audience, using a web browser. A typical wiki contains multiple pages for the subjects or scope of the project, and could be either open to the pu ...
s - a collaborative end-user development process
*
Web Mashups in the form of visual languages.
*
3D models created with end-user oriented tools and apps such as
Sketchup
SketchUp is a suite of subscription products that include SketchUp Pro Desktop, a 3D modeling Computer-Aided Design (CAD) program for a broad range of drawing and design applications — including architectural, interior design, industrial an ...
Cost-benefit modeling
According to
Sutcliffe, 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 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" to create the suitable solution at use time for their needs, objectives and situational contexts. 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 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, 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 and HILC. 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.
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:
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. However, compared with expert programmers, end-user programmers rarely have the time or interest in systematic and disciplined software engineering activities, 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.
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
In computer science, separation of concerns is a design principle for separating a computer program into distinct sections. Each section addresses a separate '' concern'', a set of information that affects the code of a computer program. A concern ...
, it can lead to a situation where end users will complete and document the
requirements analysis
In systems engineering and software engineering, requirements analysis focuses on the tasks that determine the needs or conditions to meet the new or altered product or project, taking account of the possibly conflicting requirements of the ...
and
prototyping
A prototype is an early sample, model, or release of a product built to test a concept or process. It is a term used in a variety of contexts, including semantics, design, electronics, and software programming. A prototype is generally used to ...
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
Application may refer to:
Mathematics and computing
* Application software, computer software designed to help the user to perform specific tasks
** Application layer, an abstraction layer that specifies protocols and interface methods used in a c ...
or
software framework
In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard ...
. Senior management support for such end-user initiatives depends on their attitude to existing or potential
vendor lock-in
In economics, vendor lock-in, also known as proprietary lock-in or customer lock-in, makes a customer dependent on a vendor for products, unable to use another vendor without substantial switching costs.
The use of open standards and alternative ...
.
See also
*
Automatic programming
In computer science, the term automatic programming identifies a type of computer programming in which some mechanism generates a computer program to allow human programmers to write the code at a higher abstraction level.
There has been little ...
*
End-user computing
End-user computing (EUC) refers to systems in which non-programmers can create working applications. EUC is a group of approaches to computing that aim to better integrate end users into the computing environment. These approaches attempt to reali ...
*
Low-code development platforms
A low-code development platform (LCDP) provides a development environment used to create application software through a graphical user interface. A low-coded platform may produce entirely operational applications, or require additional coding for s ...
*
Natural language programming
Natural-language programming (NLP) is an ontology-assisted way of programming in terms of natural-language sentences, e.g. English. A structured document with Content, sections and subsections for explanations of sentences forms a NLP documen ...
*
Situational application
In computing, a situational application is "good enough" software created for a narrow group of users with a unique set of needs. The application typically (but not always) has a short life span, and is often created within the group where it is us ...
*
Software engineering
Software engineering is a systematic engineering approach to software development.
A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
References
Further reading
*
*
* F. Paternò (2013
End User Development: Survey of an Emerging Field for Empowering People ISRN Software Engineering, vol. 2013, Article ID 532659, 11 pages, 2013. , 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.
* Burnett, Margaret M. and Scaffidi, Christopher (2011)
In: Soegaard, Mads and Dam, Rikke Friis (eds.). "Encyclopedia of Human-Computer Interaction".
*
Kierkegaard, Patrick(2011)
External links
Second International Symposium on End User DevelopmentEUSES Consortium, a collaboration that researches end user computing*
ttps://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
{{DEFAULTSORT:End-User Development
Computer programming
Software features
Software design
Human–computer interaction