A curriculum for agile software development methodologies

129 downloads 328024 Views 359KB Size Report
May 2, 2011 - Agile software development methodologies are proliferating in software development organizations. Agile techniques can handle changing.
ACM SIGSOFT Software Engineering Notes

Page 1

May 2011 Volume 36 Number 3

A Curriculum for Agile Software Development Methodologies Alok Mishra, Deepti Mishra Department of Computer Engineering, Atilim University, Incek 06836, Turkey.

[email protected], [email protected]

Agile software development, Curriculum, Education, Methodology.

The objective of the course is to provide a thorough understanding of the principles and practices used in agile software development and to analyze these techniques by solving real life problems. This course articulates the rapid attainment of system value through disciplined, iterative and incremental software development techniques, and lightweight documentation. Studies will include Agile Methods, Scrum, Extreme Programming, Pair Programming, Lean, Crystal Methods, Dynamic Systems Development Method (DSDM), and Feature-driven Development (FDD). These methods promote teamwork, rich and precise communication, and the iterated delivery of running tested systems comprising the highest priority customer features. Examples of agile adoption in software industry should be discussed as case studies to provide its applications in different areas. Additional topics in the course including team dynamics, collaboration, co-ordination, software quality, and metrics for agile based projects should also be a part of the curriculum.

1. INTRODUCTION

2.1 Course Objectives

ABSTRACT Agile software development methodologies are proliferating in software development organizations. Agile techniques can handle changing business requirements, schedule, cost, personnel turnover in an effective way in organizations. Here, major components of agile software development curriculum are discussed along with suggestions towards making it a successful course of software engineering curriculum.

Categories and Subject Descriptors D.2.m [Software Engineering]: Miscellaneous – Rapid prototyping.

General Terms Design, Theory.

Keywords

Agile methodology as a relatively novel concept to software engineering is becoming popular in both industry and academia [6]. Agile methodology is a broad class of techniques for software engineering [5]. The Agile Software Development paradigm has become increasingly popular in the last few years, since it claims lower costs, better productivity, better quality and better business satisfaction [9]. Agile software methodologies are quickly becoming widely used in a variety of industry projects; their flexibility provides the means to address many common problems (like budget, schedule, availability of skilled developers etc.) faced in the development of software systems [7]. Agile methods are pertinent for market-driven software development as market driven software products are often developed in several consecutive releases. This is in sync with the philosophy of Agile Methods which states software should be developed in an incremental and iterative way with high priority requirements to be included in initial releases and working software is seen as a sign of progress [10]. Hazzan and Dubinsky [4] proposed ten reasons why it is important, suitable and timely to introduce agile software development into software engineering programs in the academia. Stapel et al. [11] presented the properties based on their XP lab experience to include while designing an eXtreme Programming course and lab. Hanks et al. [2] found that the benefits of including agile methods in curriculum has increased students’ confidence and successful project delivery thus indicating that agile methods can be applied fruitfully in the curriculum. Recently, Hazzan and Dubinsky [3] presented a framework and its application in one-semester software engineering course on agile software development. Therefore including agile methodologies in curriculum will increase the job placements of students.

The course objective is to learn the fundamental principles and practices associated with each of the agile development methods: Lean, Scrum, eXtreme Programming (XP), Crystal, Feature-driven Development (FDD), Kanban, Dynamic Systems Development Method (DSDM), Architecture and design issues in agile software methods.

It has been observed that teaching agile methodology in the software engineering curriculum has attracted attention from many faculty members and results of their studies and surveys are encouraging [1][8]. Agile methodology originated in 2001 to classify a number of new lightweight software development methodologies. Four major characteristics that are fundamental to all agile methodologies are adaptive, iterative, straightforward and promote communication [7].

2.2.1 Assignment and Presentations

2. CURRICULUM OF AGILE SOFTWARE DEVELOPMENT METHODS DOI: 10.1145/1968587.1968608

The following topics are included in the curriculum:



Agile Development Methods Overview



Scrum – Introduction, Estimating and Planning



eXtreme Programming (XP)



Crystal Methodologies



Open and Agile Unified Process



Test Driven Development



Feature-Driven Development and Kanban



Architecture and Design Issues in Lean Development



Dynamic Systems Development Method (DSDM)



Enterprise Agility , Team Dynamics and Collaboration

2.2 Course Assessment This course evaluation can be based on assignment presentations and projects apart from one examination. More emphasis, in terms of weight-age, should be given on earlier two components along with lab sessions. Research papers, industrial case studies should be assigned to students to review the application of the principles and practices of agile software development. To perform in-depth explorations into various aspects of agile development quiz, seminar, presentation and discussion should be encouraged.

2.2.2 Projects A project will require students to apply the practices learned during the course to a real life or simulated project. Teams should be made up of 2-6 students. Each team will be required to deliver a final project

http://doi.acm.org/10.1145/1968587.1968608

ACM SIGSOFT Software Engineering Notes

Page 2

report in the required format and to present and discuss project progress on assigned schedule. All team members are expected to contribute to the team project and team members will evaluate their peers’ performance in the project.

3. SIGNIFICANT ISSUES OF THE COURSE Based on literature review and experience, following salient points should be considered while designing and implementing course on agile methods.

May 2011 Volume 36 Number 3

[6] Lu, B., and DeClue, T. 2011. Teaching agile methodology in a software engineering capstone course. available at db.grinnell.edu/ccsc/ccsc-p2011/.../viewAcceptedProposal.pdf? [7] Maher, P. (2009. Weaving agile software development techniques into a traditional computer science curriculum. in Proc. 6th Int. Conf. Inf. Technol., New Generations, Las Vegas, NV, Apr. 27–29, 2009, pp. 1687–1688.

a) Agile methods should be included as core course in software

[8] Melnik, G., and Maurer, F. 2003. Introducing Agile Methods in Learning Environments: Lessons Learnt. Proceedings XP Agile Universe, Springer.

b) In student’s evaluation it is important to give more weight-age to

[9] Mishra, D., and Mishra, A. 2011. Complex software project development: agile methods adoption. Journal of Software Maintenance and Eolution: Research and Practice, DOI: 10.1002/smr.528

c) Students should be able to appreciate which agile methods will be

[10] Mishra, D., and Mishra, A. 2010. Managing requirements in market-driven software Project: agile methods view. Technical Gazette– Tehnicki Vjesnik 2010; 17(2):223–229.

engineering curriculum as based on number of studies and surveys it is becoming a prominent way of software development in small and medium organizations all over the world. project, class discussion based on reviewing the published papers and case studies of the software development organizations. appropriate in different situations and requirements during software development.

d) To assess individual contribution to group projects, the students are required to submit confidential peer evaluations.

[11] Stapel, K., Lubke, D., Knauss, E. 2008. Best practices in extreme programming course design. In Proceedings of the 30th international conference on Software engineering (ICSE '08). ACM, New York, NY, USA, 769-776.

e) Automated testing tools, web-based collaboration tools, open source agile modeling and planning tools application in this course assignments and projects should be encouraged.

f) A comparative review of major agile software development methods should be provided.

g) The relative merits of the agile software development methods, conventional methods and hybrid ones should be appreciated by the students.

h) Students should have a sound background of software development, object-oriented concepts and languages like Java, C++.

4. CONCLUSION Introducing Agile methodology course is challenging but beneficial for students as it provides exposure of this novel way of software development process in developing software projects which is becoming prominent in small and medium organizations. Teaching agile methodology also poses challenges to instructors however with careful planning, these can be overcome and successful course can be implemented.

5. REFERENCES [1] Alfonso, M.I., and Botia, A. 2005. An Iterative and Agile Process Model for Teaching Software Engineering. cseet, pp.9-16, 18th Conference on Software Engineering Education & Training (CSEET'05). [2] Hanks, B., Wellington, C., Reichlmayr, T., and Coupal, C. 2008. Integrating agility in the cs curriculum: practices through values. In Proceedings of the 39th SIGCSE technical symposium on Computer science education (SIGCSE '08), ACM, New York, NY, USA, 19-20. [3] Hazzan, O., and Dubinsky, Y. 2010. A HOT --- Human, Organizational and Technological --- framework for a software engineering course. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1 (ICSE '10), Vol. 1. ACM, New York, NY, USA, 559-566. [4] Hazzan, O., and Dubinsky, Y. 2007. Why software engineering programs should teach agile software development. SIGSOFT Softw. Eng. Notes 32, 2 (March 2007), 1-3. [5] Koster, B. 2006. Agile methods fix software engineering course. J. Comput. Small Coll. 22, 2 (December 2006), 131-137.

DOI: 10.1145/1968587.1968608

http://doi.acm.org/10.1145/1968587.1968608