Presentation on theme: "END-USER SOFTWARE ENGINEERING Andrew Rosene. INTRODUCTION End-User Software Engineering… 1.is an activity that has been around for a while. 2.is continually."— Presentation transcript:
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.
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
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
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.”  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.”  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.” 
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” .
END-USER PROGRAMMING End-User Anyone who uses a computer . End-User Programmer Programming done by anyone using a computer. End-User Programming Programming to achieve the result of a program primarily for personal, rather than public use” .
END-USER SOFTWARE ENGINEERING (EUSE) The only way to properly define End-User Software Engineering is to note it is a form of Software Engineering Because 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.
HOW IS EUSE DIFFERENT FROM PROFESSIONAL SE Topic 2 of 5
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 . In other words, End-User Programmers develop program to make some task easier for THEMSELF. EUSE VS. PROFESSIONAL SE The main difference between End-User SE and Professional SE is their goals.
People who participate in EUSEActivity Performing SecretariesExcel Tables AccountantsExcel Tables TeachersExcel Tables ScientistsMATLAB 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
Intent 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
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 T ons 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
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
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
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
WHY IS RESEARCHING END-USER SOFTWARE ENGINEERING IMPORTANT? Topic 3 of 5
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?
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.
CODING SAMPLE BEFORE EDITING This is the sample code that the bank employee found on the internet.
CODING SAMPLE AFTER EDITING As you can see above, the bank employee has made the changes but has made one crucial mistake.
ERROR In 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.
EXAMPLE 2:BASH SCRIPT MISTAKE An 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.
BASH SCRIPT WRITTEN BY THE USER The above code has one crucial error.
ERROR The error is in the lack of error checking.
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.
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
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’ . 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 . By supporting the design of custom data types, end-user programmers are able to easily process and validate information .
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.
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 . 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 . The measurements are then projected to the user by means of several different visual devices to assist in directing their testing activities .
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.
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.
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 . 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
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.
REFERENCES  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  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.  Guide to the software engineering body of knowledge 2004 version: SWEBOK. (2004). Los Alamitos, Calif: IEEE Computer Society Press.  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.  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.
REFERENCES, CONTINUED  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).  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).  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.  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).  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
REFERENCES, CONTINUED  Panko, R. (1998). What we know about spreadsheet errors. Journal of Organizational and End User Computing (JOEUC), 10(2), 15–21.  Panko, R. (2000). Spreadsheet Errors: What We Know. What we think we can do. Proceedings of the Spreadsheet Risk Symposium.  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).  Program. Dictionary.com. Retrieved October 29, 2012, from http://dictionary.reference.com/browse/program  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). +.
REFERENCES, CONTINUED  Software. (2002, July 21).Computer Dictionary Online. Retrieved October 29, 2012, from http://www.computer-dictionary-online.org/index.asp?q=software  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.  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).  (2012) Retrieved from http://eusesconsortium.org/screenshots/WYSIWYT-XL- Quinnbk1.gif  (2012) Retrieved from http://www.cs.cmu.edu/~marmalade/images/whyline.jpg http://www.cs.cmu.edu/~marmalade/images/whyline.jpg