Teaching disciplined software development

Discipline is an essential prerequisite for the development of large and complex software-intensive systems. However, discipline is also important on the level of individual development activities. A major challenge for teaching disciplined software development is to enable students to experience the benefits of discipline and to overcome the gap between real professional scenarios and scenarios used in software engineering university courses. Students often do not have the chance to internalize what disciplined software development means at both the individual and collaborative level. Therefore, students often feel overwhelmed by the complexity of disciplined development and later on tend to avoid applying the underlying principles. The Personal Software Process (PSP) and the Team Software Process (TSP) are tools designed to help software engineers control, manage, and improve the way they work at both the individual and collaborative level. Both tools have been considered effective means for introducing discipline into the conscience of professional developers. In this paper, we address the meaning of disciplined software development, its benefits, and the challenges of teaching it. We present a quantitative study that demonstrates the benefits of disciplined software development on the individual level and provides further experience and recommendations with PSP and TSP as teaching tools.

[1]  Mark C. Paulk,et al.  The Capability Maturity Model , 1991 .

[2]  David A. Carrington,et al.  PSP/sup SM/ in the large class , 2001, Proceedings 14th Conference on Software Engineering Education and Training. 'In search of a software engineering profession' (Cat. No.PR01059).

[3]  Ellen R. Girden,et al.  ANOVA: Repeated Measures , 1991 .

[4]  Watts S. Humphrey,et al.  A discipline for software engineering , 2012, Series in software engineering.

[5]  William Hayes,et al.  The Personal Software Process (PSPSM): An Empirical Study of the Impact of PSP on Individual Engineers. , 1997 .

[6]  Anders Wesslén,et al.  A Replicated Empirical Study of the Impact of the Methods in the PSP on Individual Engineers , 2000, Empirical Software Engineering.

[7]  Watts S. Humphrey,et al.  Teaching Teamwork , 2002, IEEE Softw..

[8]  Victor R. Basili,et al.  A Methodology for Collecting Valid Software Engineering Data , 1984, IEEE Transactions on Software Engineering.

[9]  David Carrington,et al.  PSP in the large class , 2001 .

[10]  Watts S. Humphrey PSP(sm): A Self-Improvement Process for Software Engineers (Sei Series in Software Engineering) , 2005 .

[11]  Philip M. Johnson,et al.  A Critical Analysis of PSP Data Quality: Results from a Case Study , 1999, Empirical Software Engineering.

[12]  J. Allen The challenge of teaching. , 1971, Journal of dental education.

[13]  Graham K. Rand,et al.  Quantitative Applications in the Social Sciences , 1983 .

[14]  Donald R. McAndrews,et al.  The Team Software Process (TSP): An Overview and Preliminary Results of Using Disciplined Practices , 2000 .

[15]  Watts S. Humphrey TSP(SM)-Coaching Development Teams , 2006 .

[16]  Jürgen Börstler,et al.  Teaching the PSP: Challenges and Lessons Learned , 2002, IEEE Softw..

[17]  David Carrington,et al.  PSPSM in the Large Class , 2001 .

[18]  Lionel C. Briand,et al.  Practical guidelines for measurement-based process improvement , 1996, Softw. Process. Improv. Pract..

[19]  Watts S. Humphrey,et al.  Introduction to the Team Software Process , 1999 .

[20]  Watts S. Humphrey,et al.  Introduction to the Personal Software Process , 1996 .