A METHOD FOR TEACHING A SOFTWARE PROCESS BASED ON THE PERSONAL SOFTWARE PROCESS Zeljka Car University of Zagreb Faculty of Electrical Engineering and Computing Department of Telecommunications Zagreb, Croatia
ABSTRACT The paper presents a method in teaching software process at under-graduate level, based on the Personal Software Process (PSP). The goal is to inform students about the process and to allow practical experience in the implementation of the defined and measured personal process. During the course, personal baseline and planning processes are implemented while completing programming and report exercises. In the article a tool is presented, that have been built to reduce student time and effort in learning software process. The results of the method implementation are presented for the nonexperienced student programmer.
KEY WORDS: education, software engineering course, personal software process 1. Introduction Software development projects are troubled with quality problems, cost overruns, and schedule exceeding. In part, these problems are rooted at the individual level [1]. It is widely accepted that the quality of a product is related to the quality of the process used to develop that product. Software processes are complex, inter-related, and often reflect large bodies of information. Small changes may affect many parts of a process description. Software processes must be continuously updated to remain relevant. New technologies, new customers and new knowledge change the software products and tools, and software processes must facilitate adoption of the changes. It may be learnt more about a process by changing it. Process approach in software engineering is oriented toward the software process views and understanding the practices of making software. Software organizations are evaluated today in terms of the maturity of their software process. Processes are not really standardized and each process is more or less adapted to the needs of the organization. It is important to teach the idea of the
process and not the process itself for the above reasons [2]. The teaching and learning of programming requires equal attention to syntax related activities and to the earlier tasks of problem formulation, solution planning, and solution design [3]. Students tend to focus on the programming aspects of a project, without considering the process. Practice shows that students develop a base of programming languages, acquire some practice in different design, and learn how to develop programs that can perform a single task. Unfortunately, these programs often cannot be reused, maintained, or extended. In order to become a skilled programmer or software engineer, a student must have a good understanding of proper programming practices and good design skills. Typically, the first thing a student does is start hacking out code, resulting in the fact that they spend a disproportionate time in a vicious cycle of coding and debugging [4]. A well-planned and executed software process course can provide a sound foundation for instruction and stimulate students to the need for discipline approach in software development [5]. In this work we propose an approach in teaching students a software process based on the Personal Software Process (PSP). It is a technology developed by the Software Engineering Institute (SEI) that brings discipline to individual software engineers, improving the quality, predictability, and cycle time of softwareproducts. The Personal Software Process is presented via structured set of forms and standards, and its main objective is to offer methods for increasing the product quality and productivity of a software engineer. The overall goals of the PSP adoption in our course are to give insight to the use of processes in software development and to introduce students to the concepts of proper design. The objectives are also that an individual student learns how to work according to a well-defined process and how to analyze measurement data for improving estimation, defect removal, and defect prevention. The paper is organized as follows: first Personal Software Process (PSP) basic principles are stated. Then
our method is described. A PSP supporting tool is introduced and first results of the method implementation are presented.
2. Personal Software Process The Personal Software Process (PSP) methodology for improving the software process was introduced in 1995 by Watts Humphrey [6]. PSP is an application of the principles of the Capability Maturity Model (CMM) on the level of an individual software engineer. The Personal Software Process (PSP) is a defined and measured software process designed to be used by individual software practioners. Its aim is to guide the planning and development of software modules. Software products are developed by using a disciplined, structured approach. Developers follow a defined process, and afterward plan, measure, and track their work, manage product quality, and apply quantitative feedback to improve their personal work processes. The main goal of the PSP is to provide individual software practitioners with a method that allows them to predictably and continuously improve the quality of their work and their ability to accurately estimate and achieve schedules [8]. PSP improves performance in size and effort estimation accuracy, software reusability, product quality while maintaining or increasing overall productivity. Originally, PSP is supported with a textbook and an introductory course [6]. The full Personal Software Process is intended to be taught in a full-semester, graduate-level programming course. A simplified version of this process also can be taught [7]. It is designed as a supplementary text for a programming course with short, easy-to-read chapters. Ideally the material is spread across a two-semester programming sequence, which provides more opportunity to apply the process to programming assignments [8]. The PSP introduces process concepts in a series of steps. Each step has a set of associated scripts, forms, and templates. During the course, students/developers use the processes to complete the programming and report exercises. PSP involves completing a variety of logs to track time spent in various categories of the software development process, the defects found in programs and process phases where they were found and removed. As students/developers learn to measure their work, analyze these measures, and set and meet improvement goals, they should notice the benefits of using defined methods and should be motivated to consistently use them. The given PSP exercise programs are rather small: the first eight average 100 LOC and the last two average 200 and 300 LOC, respectively. Completing these programs still requires significant student time and efforts. When properly taught, the PSP demonstrates personal process principles, assists engineers in making accurate
plans, determines the steps engineers can take to improve product quality and establishes benchmarks to measure. One of the main objectives of teaching the Personal Software Process is to develop in students a professional attitude towards producing software. PSP teaches students skills for increasing the estimation accuracy of the size of a project and of the time necessary to accomplish it, the value of reuse and the benefits of early defect detection and prevention [10]. The primary learning mechanism is the student’s experience in completing the exercises.
3. PSP Adoption in Teaching a Software Process At our Department of Telecommunications the adopted PSP is taught in an elective software engineering course. Students for these particular course previously complete several introductory courses on general information systems concepts, networking and telecommunications, systems analysis and design, database, and various electives in these and other areas. A subset of the Personal Software Process has also been suggested as appropriate for beginning students in introductory programming courses [8]. The goal of this PSP adoption is to acquaint student to the idea that a software project has the greatest probability of success if it follows a disciplined approach to development. Also, the aim is to give insight to the use of processes in software development and how the development can be predicted, measured, analyzed and improved. The author claims [8] that after the completion of this course, the student should be able to follow a defined development process. The student should also be able to define a software development process and to define process in general, as well as software product measurements. The intention is to show him in practice, on his own processes how to properly collect data, analyze them and to find potential process bottlenecks from the obtained results. A practical understanding of the relation between product quality and process performances should be provided. Further, the student should understand that the development process is a basis for both project management and cooperation in software engineering. Learning the PSP methodology requires an immense effort. Most industrialists consider a reduced PSP variant (Introduction) far too expensive to learn in terms of time [11]. In our adoption, the instruction time is significantly shortened, and the self-discipline requirements are moderate. Training based on Personal Software Process provides a step-by-step framework that demonstrates the methods of disciplined software engineering. The PSP offers the advantages of being reasonably well defined, having interest in academic and industry, and being validated as improving engineering skills [4].
Figure 1. PSP tool interface In our PSP adoption the more advanced parts of the PSP have been removed, while the design and review aspects have been remained. Some of the details that originally have to be recorded have been simplified to suit the main goals of the PSP adoption: (1) giving students the possibility to become aware of their own development process; (2). using disciplined and structured development process, (3) practicing in personal process measurement, data collection and analysis. Within the software engineering lectures, adopted PSP course lasts for one month, which includes oral presentations of the basic PSP principles, introduction of necessary forms and logs, and presentation of the PSP supporting tool that have to be used in the process. This time period also includes available time for writing given exercise programs. Student is required to follow the PSP and to produce time and defect metric reports for five exercise programs. Student is expected to implement the PSP at the baseline process (PSP0) and planning process levels (PSP1). This involves recording of time and defects, measuring size, and the production of summary reports. From the basic metrics collection about what one is doing while creating a program and after the program completion, the evaluation of own work is possible in terms of the following questions: Where did I spend most of my time? What were the major problems faced? What caused these problems and what can be done to fix these problems? [4] Each student designs five exercise programs during the course. These exercises are denoted with 1A to 5A in the [6]. The first program is used to baseline the individual's current process. It should be the process currently used to write software and includes design, code, compile and test phase done in a way that student feel as the most appropriate. Then the student is incrementally introduced to the new process steps to capture data required for improvement. Coding standard and size measurements are introduced, as well as a form providing a structured way to record process problems and experiences. PSP1 presents personal planning process and includes size estimating and test reports. Last achieved process in our method is PSP1.1 including task and schedule planning. For the initial trial of teaching the adopted Personal Software Process, two logs (Time Recording Log and Defect Recording Log) were selected as the forms the students would fill out during programming assignments.
They also have to fill out Project Plan Summary for particular PSP level. Proposed adoption of PSP is specific due to several factors. First of all, the emphasis is on the student’s individual work. There is no classic PSP instructor later in the PSP implementation, instructor is important at the beginning while PSP principles are introduced and for the description of the data recording. Of course, the instructor is available all the time but in the form of the advisor if some problem or misunderstanding occurs. Further, students are encouraged to individually analyze recorded and collected data and to come to certain conclusions about their own processes. Also they are required to comment how does adopted PSP impact in getting knowledge about their own development process and is there any improvement after the course.
4. Tool For Supporting PSP Adoption Method Although the Humphrey book chapters are relatively short and easy-to-read, a major problem encountered has been that a good number of students do not complete the forms correctly [8]. A software tool is developed at our Department [9] so that students do not record and calculate metrics manually. The tool is implemented in Borland C++. Its interface is very simple and it is shown in the figure 1. Having determined that paper forms are not adequate and since they are effort and time consuming, the tool contains Excel sheets presenting PSP forms for each PSP level, records data, and also performs some useful calculations where necessary. Still it is required that student performs some calculations in support of learning objectives, because from the practice it is obvious that automated tools do not motivate learning [5]. Although our adoption of PSP in teaching software process encompasses processes till the level PSP1.1, the idea of the tool is to be generally applicable through the whole PSP. (For example, PSP2 form is shown in the figure 2.) It means that all the forms up through PSP3 level are implemented. Forms for PSP0 contain a time recording log, defect recording log, and a project plan summary. Forms for
Figure 2. PSP2 form PSP0.1 contains all the forms from PSP0 level, modified Project Plan Summary and Process Improvements Proposal, and so forth. Finally, according to [6], PSP3 contains forms from all lower levels, Cycle Summary and PSP Issue Tracking Log.
Monash University [12]. The tool currently supports the baseline personal process and enhanced baseline personal process. It is built using Borland C++ Builder and has transportable Paradox database integrated. Templates for quality, project and test plans are kept in MS Word. It also support teams as well as individuals.
Related Tools Humphrey [7] includes PSP support software in the form of a set of Excel spreadsheets. These spreadsheets have been designed for educational instruction. Students use these on a weekly basis, and can view time summaries of the current week, compared to the previous week. The support is specifically designed for a course structure of 15 weeks and includes a set of 15 weekly files for time recording. PSP Studio [12] is another case tool supporting the PSP, as introduced by Humphrey. It supports all levels of the PSP for the individual and, is a database application. This tool further incorporates templates for quality plans, project plans and test plans [12]. PSP-EAT tool [10] uses redesigned Excel worksheets that upgrade original worksheets from the PSP book. In general, every new concept taught is manually calculated by students in the first assignment where they need to apply it. However, in subsequent assignments, the tool will automatically perform the same calculation. Personal Assistant for Software Engineers (PASE) is tool designed to assist in the teaching of the PSP at
PSP Data Repository and Presentation System (PSPDROPS) is an automated Web based tool to support teaching PSP [13]. Using it, students receive on-line instruction for recording data and analyzed results are presented graphically via Internet. A subset of PSP forms is selected and customized into a form suitable for the approach for teaching PSP. All these above mentioned tools are specific for particular adoption of PSP that they support. The tool described in this paper is also specific since it is developed to be incorporated into the general application for supporting both PSP and TSP - Team Software Process [16] adopted methods. This general application is currently under construction and will provide basis for student practical acquainting of both personal and team processes. Also, this application will support the process of the of the student work assignment. This application is Web oriented and should support implementation of both PSP and TSP adoptions in the software engineering course. The applications should contain methods descriptions and should gradually lead through all activities, programming tasks and metrics required for the method adoption. Concerning PSP, the idea is that the application guide student through the basic theoretical
2
180
Mean time[min] /LOC
Mean number of defects/KLOC
200
160 140 120 100 80 60 40 20 0
1,8 1,6 1,4 1,2 1 0,8 0,6 0,4 0,2 0
0
1
2
3
4
5
Exercises programs
6
0
1
2
3
4
5
6
Exercises programs
Defects revealed in compiling and testing
Design
Compiling
Coding
Testing
Figure 4. Defect rate for the defects revealed in compiling and testing
Figure 5. Time needed for accomplishing particular process phases
principles, to give descriptions and practical examples how forms and logs should be fulfilled, and to contain all the requirements for programming tasks. Within the application forms should be locally fulfilled and stored. The application should also allow data analysis and submission to the instructor in order to verify student project success.
him a lot to get the idea and practical experience how to work according to a well-defined process, how to collect and analyze measurement data, and how to affect his own process. According to his experience the method is sufficiently simple to allow novice students to struggle with the algorithms and language syntax while following adopted PSP at the same time.
5. First Results of the Method Implementation
Conclusion
Although the main objective of the adopted and shortened PSP method in our approach is to provide insight to the use of processes in software development, some improvements may be noticed for non-experienced student-programmer even for the small number of completed exercise programs. Here are presented the results after the completion of the five given exercise programs in C++ for a novice programmer. The larger group of students could not be examined since the course with described PSP adoption lasted during the time of the paper submission. Also we plan to compare the results of the ‘PSP students’ with the results of the students who skipped it. Figure 4 shows decrease in a defect rate for the defects revealed during compiling and testing phase. Time needed for accomplishing particular process phases is shown in the figure 5. Although our method for teaching software process shortens PSP process significantly, from these results it is obvious that even non-experienced studentprogrammer after the course completion starts to focus more on the program design before compiling and testing. Non-quantifiable results expressing the major benefit of the method implementation were obtained informally by interviewing a student. He claimed that a method helped
In this paper a method for teaching software process based on Personal Software Process is presented. Adoption of PSP and using appropriate tool support informs students about the process and allow practical experience in the implementation of the defined and measured personal process. A goal in adoption PSP is to enable students assess and change their own processes. From the first experience, the method is sufficiently simple to allow novice students to learn a programming language and to follow adopted PSP at the same time, what is a basic precondition of accepting structured and disciplined programming approach. Future work will incorporate tool for supporting PSP in a general application for teaching both personal and team software processes.
References [1] X. Zhong, N. H. Madhavji, K. El Emam. Critical Factors Affecting Personal Software Process. IEEE Software, Vol. 17, No. 6, November/December 2000. pp. 71-75 [2] P. N. Robillard, Teaching Software Engineering through a Project-Oriented Course. Proceedings of the 9th
Conference on Software Engineering Education and Training (CSEET’96), April 21 - 24, 1996, Daytona, Florida. [3] F. P. Deek, The Software Process: A Parallel Approach through Problem Solving and Program Development. Computer Science Education, Vol.9, No. 1, 1999, pp. 43-70 [4] J. Hong, ESP: The Educational Software Process. Currently available at: http://www.cs.berkeley.edu/~jasonh/research/esp/ [5] D. A. Umphress, J. A. Hamilton, Software Process as a Foundation for Teaching, Learning and Accrediting. Proceedings of the 15th Conference on Software Engineering Education and Training (CSEET’02), February 25 - 27, 2002 Covington, Kentucky. [6] W. S. Humphrey, A Discipline for Software Engineering. Addison-Wesley, 1995. [7]. W. S. Humphrey, Introduction to the Personal Software Process. Addison-Wesley, 1997. [8] S. K. Lisack, The Personal Software Process in the Classroom: Student Reactions (An Experience Report). Proceedings of the Thirteenth Conference on Software Engineering Education & Training, March 06 - 08, 2000, Austin, Texas [9] S. Raus, Personal Software Process. Diploma Thesis (in Croatian). University of Zagreb, 2002.
[10] D. Rosca, C. Li, K. Moore, M. Stephan, S. Weiner, PSP-EAT – Enhancing a Personal Software Process Course. Proceedings of the 31st ASEE/IEEE Frontiers in Education Conference, October 10 - 13, 2001 Reno, Nevada [11] L. Prechelt, Accelerating Learning from Experience: Avoiding Defects Faster. IEEE Software, Vol. 18, No. 6, November/December 2001, pp. 56-61. [12] M. Postema, M. Dick, J. Miller, S. Cuce, Tool Support for Teaching the Personal Software Process. Computer Science Education, Vol. 10, No. 2, 2000, pp. 179-193. [13] I. Syu, A. Salimi, M. Towhidnejad, T. Hilburn, A Web-Based System for Automating a Disciplined Personal Software Process (PSP). Proceedings of the 10th Conference on Software Engineering Education and Training (CSEET '97), April 13 - 16, 1997, Virginia Beach, VA. [14] W. S. Humphrey, Using a Defined and Measured Personal Software Process. IEEE Software. Vol. 13, No. 3, May 1996, pp. 77-88. [15] W. S. Humphrey, The Personal Software Process: Status and Trends. IEEE Software, Vol. 17, No. 6, November/December 2000. pp. 71-75. [16] W. S. Humphrey, Introduction to the Team Software Process. Addison-Wesley, 2000.