Top Banner
END-USER SOFTWARE ENGINEERING Andrew Rosene
42

End-User Software Engineering

Jan 17, 2016

Download

Documents

karlyn

End-User Software Engineering. Andrew Rosene. Introduction. End-User Software Engineering… i s an activity that has been around for a while. is continually growing in usage. is very misunderstood and stereotyped. Topics outline. Define Key Terminology - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: End-User Software Engineering

END-USER SOFTWARE ENGINEERING

Andrew Rosene

Page 2: End-User Software Engineering

INTRODUCTION

End-User Software Engineering…

1. is an activity that has been around for a while.

2. is continually growing in usage.

3. is very misunderstood and stereotyped.

Page 3: End-User Software Engineering

TOPICS OUTLINE

1. Define Key Terminology

2. How End-User Software Engineering is different from Professional Software Engineering

3. Why Researching End-User Software Engineering is Important

4. Tools that can aid End-User Software Engineering

5. Conclusion

Page 4: End-User Software Engineering

DEFINING KEY TERMINOLOGY

Topic 1 of 5

Page 5: End-User Software Engineering

DEFINITIONS

To fully understand this topic it is essential that these terms have there common definition broadened:

Program

Software Engineering

End-User Programming

End-User Software Engineering

Page 6: End-User Software Engineering

PROGRAM

There are many different definitions for a program.

According to Dictionary.com a program is “the precise sequence of instructions enabling a computer to solve a problem.” [14]

According to the Computer Dictionary, a program is “a single, complete and more-or-less self-contained list of instructions, often stored in a single file.” [16]

The definition we will be using is that a program is “a collection of specifications that may take variable inputs and that can be executed (or interpreted by a device with computational capabilities.” [5]

Page 7: End-User Software Engineering

SOFTWARE ENGINEERING

There are many definitions for Software Engineering. Therefore, the definition that we will be using is that of the IEEE (the Institute of Electrical and Electronics Engineers) which defines Software Engineering as…

“the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software” [3].

Page 8: End-User Software Engineering

END-USER PROGRAMMING

End-UserAnyone who uses a computer [5].

End-User ProgrammerProgramming done by anyone using a computer.

End-User ProgrammingProgramming to achieve the result of a program primarily for personal, rather than public use” [5].

Page 9: End-User Software Engineering

END-USER SOFTWARE ENGINEERING (EUSE)The only way to properly define End-User Software Engineering is to note it is a form of Software EngineeringBecause of this, end-user programmers face many of the same software engineering challenges.

However, there are many differences that clearly separate EUSE from Professional Software Engineering.

Page 10: End-User Software Engineering

HOW IS EUSE DIFFERENT FROM

PROFESSIONAL SETopic 2 of 5

Page 11: End-User Software Engineering

Goal of Professional Engineer

Seeking payment for developing and maintaining programs over time In other words, the programs being developed are being created to make a task easier for someone else. NOT THEMSELVES.

Goal of End-User Software Engineer

Developing programs that support some goal that exists in there domain of expertise [5]. In other words, End-User Programmers develop program to make some task easier for THEMSELF.

EUSE VS. PROFESSIONAL SEThe main difference between End-User SE and Professional SE is their goals.

Page 12: End-User Software Engineering

People who participate in EUSE

Activity Performing

Secretaries Excel Tables

Accountants Excel Tables

Teachers Excel Tables

Scientists MATLAB Scripts

It is obvious that many different people participate in EUSE.

The only condition that must be met is that the intent of the programming must be that of accomplishing a PERSONAL GOAL.

• Even expert programmers can fall under this category.

EUSE VS. PROFESSIONAL SE, CONTINUED

Page 13: End-User Software Engineering

EUSE VS. PROFESSIONAL SE, CONTINUEDIntent is not the only difference between End-User Software Engineering and Professional Software Engineering. To fully separate these two we need to examining the actions taken during different phases of the software development lifecycle.

The areas we will be focusing on are:

• Requirements Gathering

• Design and Specification

• Testing and Verification

• Debugging

Page 14: End-User Software Engineering

Professional Software Engineers• Perception of Requirements• Gathering requirements is crucial to the success of the program.• If not thorough it is almost impossible to build

not only the system right, but the right system.

• Source of Requirements• Customer

• Time spent• Tons of time is spent in gathering requirements.

End-User Software Engineers

• Perception of Requirements• Requirements are not gathered, or recorded.• They are more easily understood

• Source of Requirements• Themselves

• Time Spent• No time spent gathering requirements

REQUIREMENTS GATHERING

Page 15: End-User Software Engineering

Professional Software Engineers

• Perception of Design and Design Specification• The purpose of design specifications is to

specify the systems internal behavior.• Also, allows you to determine what

implementation constraints exist.

• Uses for Design Specifications• Design specifications are used to lay out

the implementation strategy for ensuring that the system metes all of the requirements.• Done by assigning appropriate priorities to each

requirement so that the highest priority requirements are taken care of before the low priority ones.

End-User Software Engineers

• Perception of Design and Design Specification• This phase is difficult for End-Users because

they often are unable to translate their requirements into a working program.• This is because they don’t have the training or

experience

• Uses for Design Specification• They often see little to no benefit to it.• Once again, this is do to there lack of experience and

training.

• Often come to realize what constraints exist on their programs’ implementations while they write it.

DESIGN AND DESIGN SPECIFICATION

Page 16: End-User Software Engineering

Professional Software Engineers• Perception of Testing and

Verification• It is an essential part of the Software Development Lifecycle• It is the way in which SE’s ensure the proper execution of the program.

• How is this implemented?• JUnit tests, regression testing, embedded test cases, etc.• By running these tests it helps in bug

identification and in verifying proper execution of the program.

End-User Software Engineers

• Perception of Testing and Verification• Testing is intermingled with debugging, if it

is done at all.

• How is it implemented?• It is done by way of trial and error.

• Reason for this?• The priorities of the end-user programmer

frequently lead to overconfidence in their programs correctness.• To no one’s surprise, studies show that in spite of

high error rates in spreadsheets, the developers of the spreadsheets are carelessly confident about its correctness.

TESTING AND VERIFICATION

Page 17: End-User Software Engineering

Professional Software Engineering• Perception of Debugging• It is an essential activity to ensure requirements are being met.

• Time Spent Debugging• Debugging is the most time consuming activity undergone.

• To be successful requires a high level of understanding of the code. It allows you to identify areas that could have caused the problem.

End-User Software Engineering

• Perception of Debugging• End-Users frequently prioritize their external goals over software reliability, they often rely on debugging strategies such as making code changes until it appears to work as expected.

• Time Spent Debugging• Debugging may not even be possible for many end-users.• This is because end-user programmers often

lack accurate knowledge and understanding about their programs execution. Therefore the root-cause is very hard for them to conceive.

DEBUGGING

Page 18: End-User Software Engineering

WHY IS RESEARCHING END-USER SOFTWARE

ENGINEERING IMPORTANT?Topic 3 of 5

Page 19: End-User Software Engineering

IMPORTANCE OF FURTHER RESEARCH• Increase in the number of end-users using EUSE to achieve

personal goals comes an increase in the risk of an error• This is a direct result of the lack of quality procedures.

• How bad can a bug in an End-Users program be?

Page 20: End-User Software Engineering

EXAMPLE 1: MYSQL ERROR

An employee working at a big bank firm is responsible, on a daily basis, for removing entries in the bank’s MySQL database that reference loans that have been sold to other banks. Noticing that all of the records that need to be removed have two things in common the employee begins to explore possible ways in which this process can be automated. After scouring the internet the employee discovers a bit of code that, based on the attached documentation, appears to be to complete the goal with only slight modification.

Page 21: End-User Software Engineering

CODING SAMPLE BEFORE EDITING

This is the sample code that the bank employee found on the internet.

Page 22: End-User Software Engineering

CODING SAMPLE AFTER EDITING

As you can see above, the bank employee has made the changes but has made one crucial mistake.

Page 23: End-User Software Engineering

ERRORIn MySQL the first line of this will execute because it is valid. It will terminate at the end of this line resulting the database table with the given name having all of its tables dropped.

Page 24: End-User Software Engineering

EXAMPLE 2: BASH SCRIPT MISTAKEAn experienced Linux user decides to change the organization of his/her pictures. To save time the user decides to write a script. The script is fairly simple, it moves into a directory and copies all of the files into another directory. After having copied all of the files, the script then deletes the folder.

Page 25: End-User Software Engineering

BASH SCRIPT WRITTEN BY THE

USERThe above code has one crucial error.

Page 26: End-User Software Engineering

ERROR The error is in the lack of error checking.

Page 27: End-User Software Engineering

EXAMPLE 3: EXCEL ERROR

An employee for a Texas oil and gas company is responsible for performing spreadsheet calculations to determine whether it is cost effective to acquire another company. After performing the operations it is determined that the acquisition would be very lucrative. Based on this determination, they went ahead with the acquisition. Soon afterwards it was discovered that this acquisition was a huge mistake. The company lost millions of dollars due to an error in the spreadsheet.

Page 28: End-User Software Engineering

TOOLS THAT AID IN EUSE

Topic 4 of 5

Page 29: End-User Software Engineering

TOOLS

There are many tools available whose main purpose is integrating software quality principles used by professional software engineers into end-user software engineering.

The tools that will be discussed are:

1. Topes

2. What You See Is What You Test(WYSIWYT)

3. Whyline

Page 30: End-User Software Engineering

TOPES

What is topes? Topes is a model and supporting system with the purpose of supporting validation and

reuse of small, human readable data in programs created by end-users More specifically, users define string-based data types which can then be used to verify the validity of both data

and operations in the programming languages that store information as strings.

By support the design of custom data types, end-user programmers are able to easily process and validate information.

Topes is a model and supporting system with the purpose of supporting validation and reuse of small, human-readable data in programs created by end-user programmers’ [1]. More specifically, users define string-based data types which can then be used to verify the validity of both data and operations in programming languages that store information as strings [5]. By supporting the design of custom data types, end-user programmers are able to easily process and validate information [5].

Page 31: End-User Software Engineering

TOPES, CONTINUED

Users create a “tope” that describes the rules for recognizing and formatting a specific kind of data, such a birth date, phone numbers, etc and then associate a tope with spreadsheet cells, or other String fields.

The values are then automatically checked and transformed at runtime.

Studies have shown that end-users are capable of validating data more rapidly and precisely with Topes than with other existing tools.

Page 32: End-User Software Engineering

WHAT YOU SEE IS WHAT YOU TEST(WYSIWYT)What is the purpose of WYSIWYT?To help users test their spreadsheets while they are in the process of creating them, in an incremental and systematic fashion.

How is this done?At any point in the development process of the spreadsheet, the end-user can validate any value that he/she observes as accurate [1].

Each validation done by the end-user is processed, in the background, and used to measure the quality of the testing being done in terms of a test adequacy criterion that is based on data dependencies [5].

The measurements are then projected to the user by means of several different visual devices to assist in directing their testing activities [5].

Page 33: End-User Software Engineering

WHAT YOU SEE IS WHAT YOU TEST,

CONTINUED

As shown above. You check the boxes to validate the data that you have entered as correct. Based on the a testing percentage is displayed.

Page 34: End-User Software Engineering

WHYLINE

What is Whyline?Whyline is a debugging tool that allows the end-user programmer to ask a question of the type “Why did” and “Why didn’t” regarding outputs generated by their program.

The program chooses from a set of questions that are automatically generated by Whyline, through the use of static and dynamic analysis, and Whyline is then able to provide different answers in terms of the runtime events that could have caused the desired result.

Page 35: End-User Software Engineering

• Whyline was originally prototyped in the Alice Programming environment.

• Results of studies done measuring the amount of time users spent debugging using Whyline compared to those who did not use Whyline produced startling results.• End-user programmers using Whyline where able

to debug the same bug as end-user programmers not using Whyline in one eighth of the time [1].

Based on the results of this study it is not only clear that this tool has profound benefits to the end-user programmer, but that the benefits are in the form of higher software quality.

WHYLINE, CONTINUED

Page 36: End-User Software Engineering

CONCLUSION Topic 5 of 5

Page 37: End-User Software Engineering

CONCLUSION

• The number of end-users participating in end-user software engineering is continuing to rapidly increase.

• As the number of end-users participating in EUSE increases so does the probability that an issue will occur resulting from lacking quality processes.

• If more research isn’t done into and awareness isn’t raised about tools like Topes, WYSIWYT, and Whyline then these risks will continue to go unchecked.

Page 38: End-User Software Engineering

REFERENCES

[1] Aung, H. (2011, November 29). Resources on End-User Software Engineering. End Users Shaping Effective Software. Retrieved October 29, 2012, from http://eusesconsortium.org/resources.php

[2] Fischer, G., & Giaccardi, E. (2006). Meta-design: A framework for the future of end-user development. End User Development Empowering People to Flexibily Employ Advanced Information and Communication Technology, 427–457.

[3] Guide to the software engineering body of knowledge 2004 version : SWEBOK. (2004). Los Alamitos, Calif: IEEE Computer Society Press.

[4] Hendry, D. G., & Green, T. R. G. (1994). Creating, comprehending, and explaining spreadsheets: A cognitive interpretation of what discretionary users think of the spreadsheet model. International Journal of Human Computer Studies, 40(6), 1033–1066.

[5] Ko, A. J., Abraham, R., Beckwith, L., Blackwell, A., Burnett, M., Erwig, M., Scaffidi, C., et al. (2011). The state of the art in end-user software engineering. ACM Computing Surveys (CSUR), 43(3), 21.

Page 39: End-User Software Engineering

REFERENCES, CONTINUED

[6] Ko, A. J., DeLine, R., & Venolia, G. (2007). Information needs in collocated software development teams. Proceedings of the International Conference on Software Engineering (pp. 344–353).

[7] Lawrence, J., Clarke, S., Burnett, M., & Rothermel, G. (2005). How well do professional developers test with code coverage visualizations? An empirical study. Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing (pp. 53–60).

[8] Leventhal, L. M., Teasley, B. E., & Rohlman, D. S. (1994). Analyses of factors related to positive test bias in software testing. International Journal of Human-Computer Studies, 41(5), 717–749.

[9] Myers, B., Park, S., Nakano, Y., Mueller, G., & Ko, A. J. (2008). How designers design and program interactive behaviors. Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing (pp. 177–184).

[10] Panko, R. (1995). Finding spreadsheet errors: Most spreadsheet models have design flaws that may lead to long-term miscalculations. Information Week, May(100). Retrieved from http://www.informationweek.com/529/29uwfw.htm

Page 40: End-User Software Engineering

REFERENCES, CONTINUED

[11] Panko, R. (1998). What we know about spreadsheet errors. Journal of Organizational and End User Computing (JOEUC), 10(2), 15–21.

[12] Panko, R. (2000). Spreadsheet Errors: What We Know. What we think we can do. Proceedings of the Spreadsheet Risk Symposium.

[13] Petre, M., & Blackwell, A. F. (2007). Children as unwitting end-user programmers. Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing (pp. 239–242).

[14] Program. Dictionary.com. Retrieved October 29, 2012, from http://dictionary.reference.com/browse/program

[15] Segal, J. (2007). Some problems of professional end user developers. Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing (pp. 111–118). +.

Page 41: End-User Software Engineering

REFERENCES, CONTINUED

[16] Software. (2002, July 21).Computer Dictionary Online. Retrieved October 29, 2012, from http://www.computer-dictionary-online.org/index.asp?q=software

[17] Teasley, B., & Leventhal, L. (1994). Why software testing is sometimes ineffective: Two applied studies of positive test strategy. Journal of Applied Psychology, 79(1), 142.

[18] Wiedenbeck, S. (2005). Facilitators and inhibitors of end-user development by teachers in a school environment. IEEE Symposium on Visual Languages and Human-Centric Computing (pp. 215–222).

[19] (2012) Retrieved from http://eusesconsortium.org/screenshots/WYSIWYT-XL-Quinnbk1.gif

[20] (2012) Retrieved from http://www.cs.cmu.edu/~marmalade/images/whyline.jpg

Page 42: End-User Software Engineering

QUESTIONS?