End user development
Encyclopedia
End-user development is a research topic within the field of computer science
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 models
    3D modeling
    In 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 Sketchup
    SketchUp
    SketchUp is a 3D modeling program marketed by Google and designed for architectural, civil, and mechanical engineers as well as filmmakers, game developers,...

  • Animation
    Computer animation
    Computer 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 file
    Configuration file
    In 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 filters
    E-mail filtering
    Email 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 source
    Open source
    The 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 package
    Software 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 modifications
    Mod (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 centres
    Call centre
    A 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 application
    Workflow application
    A 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
  • Prototypes
    Software 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 simulation
    Computer simulation
    A 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 suites
    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...

     and graphics applications
    Graphics software
    In 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 process
    Batch processing
    Batch 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 programming
    Visual programming language
    In 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 AgentSheets
    AgentSheets
    AgentSheets 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...

    , LabVIEW
    LabVIEW
    LabVIEW 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 Mindstorms
    Lego Mindstorms
    The 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 page
    Web page
    A 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
  • Wiki
    Wiki
    A 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 Mashups
    Mashup (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! Pipes
    Yahoo! Pipes
    Yahoo! 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...

.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK