Understanding the tenets of agile software engineering: lecturing, exploration and critical thinking

The use of agile principles and practices in software development is becoming a powerful force in today's workplace. In our quest to develop better products, therefore, it is imperative that we strive to learn and understand the application of agile methods, principles and techniques to the software development enterprise. Unfortunately, in many educational institutions, courses and projects that emphasize agile software development are minimal. At best, students have only limited exposure to the agile philosophy, principles and practices at the graduate and undergraduate levels of education. In an effort to address this concern, we offered an advanced graduate-level course entitled "Agile Software Engineering" in the Department of Computer Science at Virginia Tech. The primary objectives of the course were to introduce the values, principles and practices underlying the agile philosophy, and to do so in an atmosphere that encour-ages debate and critical thinking. The course was designed around three central components: (1) teaching the essentials of how one develops a product within an agile framework, (2) having invited talks by notable industry experts, and (3) having students present and discuss current agile research topics and issues. This paper describes our experiences during the offering of that course, and in particular, the unique perspectives of the class instructor, the teaching assistant and a student who was enrolled in the course.

[1]  David B. Anderson,et al.  CMMI ® or Agile: Why Not Embrace Both! , 2008 .

[2]  Kent Beck,et al.  Extreme Programming Explained: Embrace Change (2nd Edition) , 2004 .

[3]  K. Beck,et al.  Extreme Programming Explained , 2002 .

[4]  James D. Arthur,et al.  Determining the Applicability of Agile Practices to Mission and Life-Critical Systems , 2007, 31st IEEE Software Engineering Workshop (SEW 2007).

[5]  Susan K. Land Jumpstart CMM/CMMI Software Process Improvements : Using IEEE Software Engineering Standards , 2005 .

[6]  Jeff Sutherland,et al.  Manifesto for Agile Software Development , 2013 .

[7]  Mary Poppendieck,et al.  Lean Software Development: An Agile Toolkit , 2003 .

[8]  Barry W. Boehm,et al.  A spiral model of software development and enhancement , 1986, Computer.

[9]  Laurie A. Williams,et al.  Teaching software development methods: the case of extreme programming , 2004, SIGCSE.

[10]  Roger S. Pressman,et al.  Software Engineering: A Practitionerʼs Approach, 7/e , 2009 .

[11]  Renée A. McCauley Agile development methods poised to upset status quo , 2001, SGCS.

[12]  K. Todd Stevens,et al.  Examining the Foundations of Agile Usability with eXtreme Scenario-Based Design , 2009, 2009 Agile Conference.

[13]  Peter Henderson,et al.  Why Large IT Projects Fail , 2010 .

[14]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[15]  R. Likert “Technique for the Measurement of Attitudes, A” , 2022, The SAGE Encyclopedia of Research Design.

[16]  James D. Arthur,et al.  A Structured Framework for Assessing the "Goodness" of Agile Methods , 2010, 2011 18th IEEE International Conference and Workshops on Engineering of Computer-Based Systems.

[17]  Roger S. Pressman,et al.  Software Engineering: A Practitioner's Approach , 1982 .

[18]  James D. Arthur,et al.  A Soft-Structured Agile Framework for Larger Scale Systems Development , 2009, 2009 16th Annual IEEE International Conference and Workshop on the Engineering of Computer Based Systems.

[19]  W. W. Royce,et al.  Managing the development of large software systems , 1970 .

[20]  Dean Leffingwell,et al.  Scaling Software Agility: Best Practices for Large Enterprises (The Agile Software Development Series) , 2007 .