End user development
Encyclopedia
End-user development is a research topic within the field of computer science
and human-computer interaction, describing activities or techniques that allow end-user
s 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
. The most popular EUD tool is the spreadsheet
.
Early attempts in End-user development were centered around adding simple scripting programming language
s to extend and adapt an existing application, such as an office suite
.
More recent research tries to bring programming closer to the needs of end users. 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 and/or operations that should be performed on the data, and the PbE system infers the correct abstractions corresponding to a program that produces this output. 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.
There are two basic reasons why EUD has become popular. One is because organizations are facing delays on projects and using EUD can effectively cut the time of completion on a project. The second reason is that software tools are more powerful and easier to use.
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.
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
, programming with
examples
, visual programming, 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).
This study defines costs as the sum of:
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:
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.
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 (and/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 a 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
.
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...
and human-computer interaction, describing activities or techniques that allow end-user
User (computing)
A user is an agent, either a human agent or software agent, who uses a computer or network service. A user often has a user account and is identified by a username , screen name , nickname , or handle, which is derived from the identical Citizen's Band radio term.Users are...
s to program computers
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...
. 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
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
. The most popular EUD tool is the spreadsheet
Spreadsheet
A spreadsheet is a computer application that simulates a paper accounting worksheet. It displays multiple cells usually in a two-dimensional matrix or grid consisting of rows and columns. Each cell contains alphanumeric text, numeric values or formulas...
.
Early attempts in End-user development were centered around adding simple scripting programming language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
s to extend and adapt an existing application, such as an office suite
Office suite
In computing, an office suite, sometimes called an office software suite or productivity suite is a collection of programs intended to be used by knowledge workers...
.
More recent research tries to bring programming closer to the needs of end users. The Programming by example
Programming by example
In computer science, programming by example , also known as 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 concrete examples...
(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 and/or operations that should be performed on the data, and the PbE system infers the correct abstractions corresponding to a program that produces this output. 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.
There are two basic reasons why EUD has become popular. One is because organizations are facing delays on projects and using EUD can effectively cut the time of completion on a project. The second reason is that software tools are more powerful and easier to use.
Lessons learned from EUD solutions can significantly influence the software life cycles for commercial software products
Software product management
Software product management is the process of managing software that is built and implemented as a product, taking into account life-cycle considerations and generally with a wide audience. It is the discipline and business process which governs a product from its inception to the market or...
, in-house intranet
Intranet
An intranet is a computer network that uses Internet Protocol technology to securely share any part of an organization's information or network operating system within that organization. The term is used in contrast to internet, a network between organizations, and instead refers to a network...
/extranet
Extranet
An extranet is a computer network that allows controlled access from the outside, for specific business or educational purposes. An extranet can be viewed as an extension of a company's intranet that is extended to users outside the company, usually partners, vendors, and suppliers...
developments and enterprise application
Enterprise resource planning
Enterprise resource planning systems integrate internal and external management information across an entire organization, embracing finance/accounting, manufacturing, sales and service, customer relationship management, etc. ERP systems automate this activity with an integrated software application...
deployments.
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 artefact.[sic]
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
Programming by demonstration
In computer science, programming by demonstration is an End-user development technique for teaching a computer or a robot new behaviors by demonstrating the task totransfer directly instead of programming it through machine commands....
, programming with
examples
Programming by example
In computer science, programming by example , also known as 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 concrete examples...
, visual programming, 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:- 3D models3D modelingIn 3D computer graphics, 3D modeling is the process of developing a mathematical representation of any three-dimensional surface of object via specialized software. The product is called a 3D model...
created with end-user oriented tools and approaches such as SketchupSketchUpSketchUp is a 3D modeling program marketed by Google and designed for architectural, civil, and mechanical engineers as well as filmmakers, game developers,... - AnimationComputer animationComputer animation is the process used for generating animated images by using computer graphics. The more general term computer generated imagery encompasses both static scenes and dynamic images, while computer animation only refers to moving images....
scripts used by graphic artists to describe characters, environments and how characters move to produce an intended animation - Configuration fileConfiguration fileIn computing, configuration files, or config files configure the initial settings for some computer programs. They are used for user applications, server processes and operating system settings. The files are often written in ASCII and line-oriented, with lines terminated by a newline or carriage...
s that blur the line between programs and data (e.g., email filtersE-mail filteringEmail filtering is the processing of email to organize it according to specified criteria. Most often this refers to the automatic processing of incoming messages, but the term also applies to the intervention of human intelligence in addition to anti-spam techniques, and to outgoing emails as well...
are sequenced lists of criteria and actions to take) - Arguably, contributions to open sourceOpen sourceThe term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
projects where users of a software package contribute their own code for inclusion in the main packageSoftware package (installation)In package management systems, which are commonly used with Linux-based operating systems, a package is a specific piece of software which the system can install and uninstall....
— in some cases, end-users participate as full-fledged developers - Game modificationsMod (computer gaming)Mod or modification is a term generally applied to personal computer games , especially first-person shooters, role-playing games and real-time strategy games. Mods are made by the general public or a developer, and can be entirely new games in themselves, but mods are not standalone software and...
to introduce users' own characters, environments, etc. — many recent games are distributed with modification in mind - Interaction scripts used in CRM call centresCall centreA call centre or call center is a centralised office used for the purpose of receiving and transmitting a large volume of requests by telephone. A call centre is operated by a company to administer incoming product support or information inquiries from consumers. Outgoing calls for telemarketing,...
- Process models used in workflow applicationWorkflow applicationA workflow application is a software application which automates, at least to some degree, a process or processes. The processes are usually business-related, but it may be any process that requires a series of steps that can be automated via software...
s - PrototypesSoftware prototyping*Software prototyping, refers to the activity of creating prototypes of software applications, i.e., incomplete versions of the software program being developed...
and domain-specific programs written by businesspeople, engineers, and scientists to demonstrate or test specific theories - Scientific models used in computer simulationComputer simulationA computer simulation, a computer model, or a computational model is a computer program, or network of computers, that attempts to simulate an abstract model of a particular system...
- Scripts and macros added to extend or automate office productivity suitesOffice suiteIn computing, an office suite, sometimes called an office software suite or productivity suite is a collection of programs intended to be used by knowledge workers...
and graphics applicationsGraphics softwareIn computer graphics, graphics software or image editing software is a program or collection of programs that enable a person to manipulate visual images on a computer....
. - Simulations created using application definition software
- Simultaneous editing of many related items in a batch processBatch processingBatch processing is execution of a series of programs on a computer without manual intervention.Batch jobs are set up so they can be run to completion without manual intervention, so all input data is preselected through scripts or command-line parameters...
specified by the end user. - Spreadsheet models, e.g., used for budgeting or risk analysis
- Visual programmingVisual programming languageIn computing, a visual programming language is any programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually. A VPL allows programming with visual expressions, spatial arrangements of text and graphic symbols, used...
in the form of visual languages such as AgentSheetsAgentSheetsAgentSheets is an educational Cyberlearning tool to create Web-based simulation games. AgentSheets is used worldwide to teach students programming and related information technology skills through game design...
, LabVIEWLabVIEWLabVIEW is a system design platform and development environment for a visual programming language from National Instruments. LabVIEW provides engineers and scientists with the tools needed to create and deploy measurement and control systems.The graphical language is named "G"...
or LEGO MindstormsLego MindstormsThe LEGO Mindstorm series of kits contain software and hardware to create small, customizable and programmable robots. They include a programmable 'Brick' computer that controls the system, a set of modular sensors and motors, and LEGO parts from the Technics line to create the mechanical...
. - Web pageWeb pageA web page or webpage is a document or information resource that is suitable for the World Wide Web and can be accessed through a web browser and displayed on a monitor or mobile device. This information is usually in HTML or XHTML format, and may provide navigation to other web pages via hypertext...
s - plain HTML or HTML and scripting - WikiWikiA wiki is a website that allows the creation and editing of any number of interlinked web pages via a web browser using a simplified markup language or a WYSIWYG text editor. Wikis are typically powered by wiki software and are often used collaboratively by multiple users. Examples include...
s - a collaborative end-user development process - Web MashupsMashup (web application hybrid)In Web development, a mashup is a Web page or application that uses and combines data, presentation or functionality from two or more sources to create new services...
in the form of visual languages such as Yahoo! PipesYahoo! PipesYahoo! Pipes is a web application from Yahoo! that provides a graphical user interface for building data mashups that aggregate web feeds, web pages, and other services, creating Web-based apps from various sources, and publishing those apps...
.
Cost-benefit modeling of end-user development
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 and/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
Security
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.
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 (and/or their consultants) employ declarative
Declarative programming
In computer science, declarative programming is a programming paradigm that expresses the logic of a computation without describing its control flow. Many languages applying this style attempt to minimize or eliminate side effects by describing what the program should accomplish, rather than...
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 a professional programming environments. Though separating functionality from efficiency is a valid separation of concerns
Separation of concerns
In computer science, separation of concerns is the process of separating a computer program into distinct features that overlap in functionality as little as possible. A concern is any piece of interest or focus in a program. Typically, concerns are synonymous with features or behaviors...
, it can lead to a situation where end-users will complete and document the requirements analysis
Requirements analysis
Requirements analysis in systems engineering and software engineering, encompasses those tasks that go into determining the needs or conditions to meet for a new or altered product, taking account of the possibly conflicting requirements of the various stakeholders, such as beneficiaries or users...
and prototyping
Software prototyping
*Software prototyping, refers to the activity of creating prototypes of software applications, i.e., incomplete versions of the software program being developed...
of the tool, without the involvement of business analysts
Business Analysis
Business analysis is the discipline of identifying business needs and determining solutions to business problems. Solutions often include a systems development component, but may also consist of process improvement, organizational change or strategic planning and policy development...
. Thus, users will define the functions required before these experts have a chance to consider the limitations of a specific application
Application software
Application software, also known as an application or an "app", is computer software designed to help the user to perform specific tasks. Examples include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with...
or software framework
Software framework
In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...
. Senior management support for such end-user initiatives depends on their attitude to existing or potential vendor lock-in
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 and services, unable to use another vendor without substantial switching costs...
.