ACM SIGSOFT Software Engineering Notes
Page 1
January 2013 Volume 38 Number 1
A Curriculum for Large Scale Software Development Alok Mishra, Deepti Mishra Department of Computer Engineering, Atilim University, Incek 06836, Turkey.
[email protected],
[email protected] ABSTRACT Large scale software developments are becoming common in software development organizations. Getting exposure to work on similar projects is very significant for this course. Here, major components of large scale software development curriculum are discussed along with suggestions towards making it a successful course of software engineering curriculum.
Categories and Subject Descriptors D.2.10 [Software Engineering]: Design
General Terms Design, Theory.
Keywords Large scale Methodology.
software
development,
Curriculum,
Education,
1. INTRODUCTION Advanced technologies and the increasing importance of software in daily life make these environments more sophisticated and complex [6]. The quality of the SE workforce is a direct reflection of the quality of the SE education (SEE) [7].Teaching large-scale software development is not a matter of teaching programming and software design. The only way in which students can really learn to develop large scale software systems is in the form of projects, where they work together and are forced to cooperate and to experience all the problems related to large software projects [2]. Largescale complex projects face dynamic changes in requirements and timeto-market pressure [5]. Wohlin [2] suggested following unique features in meeting the challenge of large scale software development course: The students execute the software developed on real life project at the end of the course
The data collected from the course are fed into experience base, which will be available to students during forthcoming years to improve planning and control of the projects in the course. Evaluating the projects and organization using Capability Maturity Model Integration (CMMI) approach in large scale software development course.
The most recent ACM model curricula [1] recognized the different perspectives of academia and industry. They recommended teaching subjects in SE curricula and providing technical and non-technical skills required for large software development. In this respect, it is also suggested that skills be demonstrated “to an appropriate range of applications and case studies that connect theory and skills learned in academia to real-world occurrences to explicate their relevance and utility” [1]. Students should be provided the opportunities to experience in real world practice whenever possible as smaller the gap between software engineering education and real world practice, the easier students adapt to industry after they graduate [8].
2. CURRICULUM OF LARGE SOFTWARE DEVELOPMENT DOI: 10.1145/2413038.2413042
SCALE
The objective of the course is to provide a thorough understanding of the principles and practices used in large scale software development and to analyze these techniques by solving real life problems. The students need hands-on-experience, where they have to work together in a large scale software development project using industrial tools and can actually execute their software on a real piece of hardware. This course is meant for final year undergraduate or graduate students in software engineering program. Both software architecture and detailed design are important activities with in large scale software development. It should also include architectural styles, concept of architectural tactics, concept of design patterns, component based software design, aspect-oriented design, object-oriented design and patterns. J2EE architecture can be discussed as reference architecture as it is simple well known and students appreciate its applicability [4]. Deploying realworld professional software development tools in their assignments and projects, which are tightly coupled with lecture material, is an effective way to shorten the distance between academic education and industry demands [8]. Many software organizations have reported that there is gap between what experience and good engineering practice suggest they should do [3]. It is not possible that all concepts can be properly explained and illustrated with complete examples in class duration. Therefore building a repository of exemplary problems for architectural styles, software patterns, quality attributes etc. will be helpful to students understand these concepts in an effective way. Additional topics in the course including team dynamics, collaboration, coordination, software quality, and metrics for large scale software projects should also be a part of the curriculum.
2.1 Course Objectives The objective of this course is to involve students in real-life problems and theory of large scale software development and encourage teamwork through real-life projects. The following topics are included in the curriculum:
The nature and development lifecycle for large-scale software (LLS) projects
Roles of the Software Architect
Software Architecture and the Development Process
System Context and Domain Analysis
Component Design and Modeling
Subsystem Design
Transaction and Data Design
Process and Deployment Design
Architecture Techniques
Applying the Viewpoints
Social side of large scale software development
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.
http://doi.acm.org/10.1145/2413038.2413042
ACM SIGSOFT Software Engineering Notes
Page 2
January 2013 Volume 38 Number 1
2.2.1 Assignment and Presentations Research papers, industrial case studies should be assigned to students to review the application of the principles and practices of large scale software development. To perform in-depth explorations into various aspects of large scale software 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 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 large scale software development.
a) This course should be project based where most of the work should be carried out in projects form, either individual projects or in project group.
b) In student’s evaluation it is important to give more weightage to project, class discussion based on reviewing the published papers and case studies of the large scale software development in organizations.
[3] Easterbrook S.M. and Arvanitis T.N. Preparing students for software engineering. In Proc. of the Third International Workshop on Software Engineering Education (IWSEE3), (Berlin, Germany, March 1996). [4] Karam, O.; Qian, K.; Diaz-Herrera, J. 2004., "A model for SWE course "software architecture and design"," Frontiers in Education, 2004. FIE 2004. 34th Annual , vol., no., pp. F2C- 4-8 Vol. 2, 20-23 Oct. 2004, doi: 10.1109/FIE.2004.1408593 [5] 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 [6] Mishra, A., Nergiz, E.C., & Özkan, K. (2007). Software engineering education: some important dimensions. European Journal of Engineering Education, 32 (3), 349-361. [7] Mishra, A. & Yazici, A. (2011) An Assessment of the Software Engineering Curriculum in Turkish Universities : IEEE/ACM Guidelines Perspective, Croatian Journal of Education, Vol 13 (1), 188 – 219. [8] Shihong Huang and Damiano Distante. 2006. On Practice-Oriented Software Engineering Education. In Proceedings of the 19th Conference on Software Engineering Education and Training Workshops (CSEETW '06). IEEE Computer Society, Washington, DC, USA, 15-. DOI=10.1109/CSEETW.2006.11
c) Students should be able to appreciate which software development methods will be appropriate in different situations and requirements during large scale software development.
d) To assess individual contribution to group projects, the students are required to submit confidential peer evaluations.
e) Automated testing tools, web-based collaboration tools, open source tools application in this course assignments and projects should be included in curriculum and evaluation plan.
f) Visiting faculty members from industry are required to provide orientation towards industrial needs and significance.
g) Students should have a sound background of software development, software process, software engineering, object-oriented concepts and languages like Java, C++ as a prerequisite to enroll in this course.
4. CONCLUSION Introducing large scale software development course is challenging but beneficial for students as it provides exposure of this way of software development process in developing such software projects which is becoming prominent in software development organizations. Solving real world problems in students’ projects can provide immense confidence to students when they will work on real large scale software development projects in organizations. Teaching large scale software development also poses challenges to teachers however with careful planning, these can be overcome and successful course can be implemented.
5. REFERENCES [1] ACM/IEEE Joint Task Force on Computing Curricula: 2005 overview report (2005). Available at http://www.acm.org/education/curricula.html, retrieved March 23, 2007. [2] Claes Wohlin. 1997. Meeting the Challenge of Large-Scale Software Development in an Educational Environment. In Proceedings of the 10th Conference on Software Engineering Education and Training (CSEET '97). IEEE Computer Society, Washington, DC, USA, 40-51.
DOI: 10.1145/2413038.2413042
http://doi.acm.org/10.1145/2413038.2413042