End-user development

From Wikipedia, the free encyclopedia
Jump to: navigation, search

End-user development (EUD) or end-user programming (EUP) refers to end-users – people who are not professional software developers – programming 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. Various approaches exist, and it is an active research topic within the field of computer science and human-computer interaction. Examples include spreadsheets, scripting languages (particularly in an office suite or art application), and programming by example.

The most popular EUD tool is the spreadsheet.[1] [2] 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.[3]  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[4] In the United States of America alone, there are an estimated 13 million end user developers programming with spreadsheets[5]

Early attempts in End-user development were centered around adding simple scripting programming languages 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.[citation needed] 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.

Definition[edit]

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

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,[7] which can be described with programming paradigms such as programming by demonstration, programming with examples, visual programming, or macro generation.[8] They can also be parameters that choose between alternative predefined behaviors of an application.[9] 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).[10]

Examples[edit]

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

Cost-benefit modeling of end-user development[edit]

According to Sutcliffe,[13] 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

Criticism[edit]

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:[14]

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.[15]

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.[16]

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.

See also[edit]

References[edit]

  1. ^ Margaret M. Burnett and Christopher Scaffidi. "End-User Development". Interaction-Design.org.  at "Encyclopedia of Human-Computer Interaction".
  2. ^ Hornsby, Peter (2009-08-03). "Empowering Users to Create Their Own Software". UXmatters. Retrieved 2014-01-31. 
  3. ^ Abraham, R.; Burnett, M; Erwig, M (2009). "Spreadsheet programming". Wiley Encyclopedia of Computer Science and Engineering. pp. 1–10. 
  4. ^ Kruck, S. & Sheetz, S., 2001. Spreadsheet accuracy theory. Journal of Information Systems Education.
  5. ^ 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.
  6. ^ Lieberman, H., Paternò, F. and Wulf, V. (2006). End User Development.
  7. ^ 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.
  8. ^ 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.
  9. ^ 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.
  10. ^ 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, doi:10.1007/978-3-642-00427-8_1
  11. ^ Roy Chowdhury, Soudip; Rodriguez, Carlos; Daniel, Florian; Casati, Fabio (2010). Wisdom-aware computing: on the interactive recommendation of composition knowledge. 
  12. ^ Soylu, Ahmet; Giese, Martin; Jimenez-Ruiz, Ernesto; Kharlamov, Evgeny; Zheleznyakov, Dmitry; Horrocks, Ian (2013). OptiqueVQS – Towards an Ontology-based Visual Query System for Big Data. 
  13. ^ Sutcliffe, Alistair (July 2005). "Evaluating the costs and benefits of end-user development" (PDF). ACM SIGSOFT Software Engineering Notes (ACM) 30 (4): 1–4. doi:10.1145/1082983.1083241. Retrieved 2008-05-29. 
  14. ^ 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. 
  15. ^ 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. 
  16. ^ "End-User Software Engineering: Empirical Findings". End Users Shaping Effective Software Consortium. Retrieved 2008-05-28. 

External links[edit]

Further reading[edit]