software engineering education and teaching

44
Somya Jain Assistant Professor CSE/IT, JIIT-Noida 62

Upload: somya-jain

Post on 14-Aug-2015

41 views

Category:

Engineering


5 download

TRANSCRIPT

Somya JainAssistant Professor

CSE/IT, JIIT-Noida 62

Six main chapters

1. Introduction2. Problems with current and traditional teaching

approaches3. Different trends to teaching software

engineering4. Key issues5. Curriculum Design and Delivery6. Different Approaches to teaching software

engineering

Software Engineering Software Engineering is defined as the “application of

a systematic, disciplined, quantifiable ap-proach to the development, operation and maintenance of software” (Petkovic, Thompson, & Todtenhoefer, 2006, p. 294). The need to teach software engineering in colleges has been identi-fied for decades.

Problems : Nurkkala & Brandle (2011) summarize the problems

Short duration – single semester, or two-semester, courses impose an artificial time constraint .

High turnover – new students each semester means the talent pool remains shallow and student skills are not developing based on previous experience

Low complexity – by necessity given time constraints and skill sets In terms of the delivery medium, the educator can deliver the message via the “board-

and- talk” method

Jordanian Universities SE Analysis

There are great inconsistencies among the SE courses taught at the different universities.

Most of the learning is theoretical and there is no incorporation of real projects or case Studies from the Jordanian or global software market.

Different trends to teaching software engineering

For many years since early 1970’s, the “waterfall model” life-cycle was considered the most successful for a structured approach to software development. Popular textbooks espoused its techniques and students were taught its methods.

Subsequently, focus was placed on more incremental approaches such as spiral development (Clinton, 1998) and rapid prototyping (Boehm, 2006).

More recently, techniques such as extreme programming (LeJeune, 2006), agile programming (Lu & DeClue, 2011), and software performance in programming (Dugan, 2004) have been incorporated in the educational experience.

Some universities have courses which focus on programming techniques versus software engineering processes and team work (Petkovic et al., 2006).

Callele et al., (2006) recommend a “stealth approach” of teaching underlying software engineering principles, such as requirements engineering, early in the students education without labeling it as software engineering.

Razmov & Anderson (2006) present a more overt approach to creating a positive atmosphere by incorporating innovative technology, such as tablet PC’s, in the classroom to mo-tivate students.

Offutt(2013) mentioned that engineering education must focus on multiple quality attributes and mentioned that the following subject should be in the core courses in study plan: usability, testing, security, design modelling, project management, quality control, standards, architecture, and so on.

Perez and Alonso (2003) Proposed a SE curriculum composed of two levels, the first level provides the students with the basic knowledge of SE that may help students to start developing software, in the second level the students got the knowledge on the development stage such as software architecture, reengineering or components

Key Issue

Computer Science Curricula 2013, Curriculum Guidelines for Undergraduate Degree Programs in Computer Science, The Joint Task Force on Computing Curricula Association for Computing Machinery (ACM) IEEE Computer Society

For example, specialized systems include:

• Real time systems

• Client-server systems

• Distributed systems

• Games

Domain specific software (e.g., scientific computing or business

applications)

Issues raised by each of these specialized systems demand

specific treatments in each phase of software engineering so

that there is no software crisis.

Key Issue

Stiller, E., & LeBlanc, C. (2002). Effective software engineering pedagogy. Journal of Computing Sciences in Colleges, 17(6), 124-134.

Stiller and LeBlanc (2002) suggest that the complex and challenging nature of software engineering make the effectiveness of such courses difficult and outline six steps to convince students of the importance of effective software engineering approaches: make it real, make it fun, make it critical, make it accessible, make it successful, and speak with a clear consistent voice in outlining strategies for students.

They suggest that it is the responsibility of the faculty to sell

the students on the value of software engineering by

convincing them that it is not a boring subject.

Curriculum Design and Delivery

Lesson plan consists of

P. Desai, G.H. Joshi, Activity Based Teaching Learning in SoftwareEngineering – An Experience, IEEE International Conference on Engineering Education: Innovative Practices and Future Trends, 2012

Courses

Computer Science Curricula 2013, Curriculum Guidelines for Undergraduate Degree Programs in Computer Science, The Joint Task Force on Computing Curricula Association for Computing Machinery (ACM) IEEE Computer Society

Learning Outcomes : Example(Software Requirement)1. List the key components of a use case or similar description of some

behavior that is required for a system.

2. Describe how the requirements engineering process supports the elicitation and validation of behavioral requirements.

3. Interpret a given requirements model for a simple software system.

4. Describe the fundamental challenges of and common techniques used for requirements elicitation.

5. List the key components of a data model (e.g., class diagrams or ER diagrams).

6. Identify both functional and non-functional requirements in a given requirements specification for a software system.

7. Conduct a review of a set of software requirements to determine the quality of the requirements with respect to the characteristics of good requirements

Analyzing the percentages of SE courses to non SE courses at each SE department at the Jordanian Universities as well as a sample of UK and USA universities.

S. Hanna, H. Jaber, F. Jaber, T. Shalaby, A. Almasalmeh,” Enhancing the Software Engineering Curriculums: A Case Study of the Jordanian Universities”, 978-1-4799-4970- IEEE,2014

The Average percentages of the core SE course in the SE departments are almost similar among Jordanian and UK Universities which is about 34%, however the USA universities has a higher percentages of about 50% of the courses.

The Average percentages of the CS course in the SE departments are almost similar among Jordanian and USA Universities which is about 30%, however the UK universities has a higher percentages of about 56% of the courses.

There is over emphasis of the non Computers relates course in the Jordanian Universities; 33.5% of courses comparing to only 21% and 9% in USA and UK Universities respectively.

Different Approaches to teaching software engineering

1. Activity Based Teaching Learning in Software Engineering

The theory course on Software Engineering was redesigned by tightly coupling a Mini project course with it. Different activities are designed along with Class room teaching to make Software Engineering as joyful course for the students.

P. Desai, G.H. Joshi, Activity Based Teaching Learning in Software Engineering – An Experience, IEEE International Conference on Engineering Education: Innovative Practices and Future Trends, 2012

Results:

The feedback is taken for the class strength of 140 students. This curriculum is successfully implemented for consecutive years.

The approach followed helped to improve their performance in Continuous Internal Exams (CIE) and Semester End Exams (SEE) both in theory and mini project course, 80% of the students have got marks above 50. Performance in SEE is shown in Fig. This indicate that students passing percentage in Software Engineering theory is 96% and in mini projects results is 99% which is better compared to previous year results.

2. Project based Approach A common approach to providing this type of experience to students is

to assign projects to small teams of students to complete during a one-semester SE class.

Project-based approaches are commonly used, but these approaches have the weakness of creating an artificial "one man shop" in which all aspects of the project are designed by one or a small group of students to work on a single project throughout the semester .

A weakness of the "one project" design is that there is little or no requirement to communicate technical details of the project to another person or group.

This "one man team“ structure does not accurately reflect the "real world" of software development In many software development companies as different groups are tasked with developing requirements, selecting, installing, and maintaining hardware, database management, overall system design, testing, documentation, and support.

AN INNOVATIVE PROJECT STRUCTURE FOR TEACHING SOFTWARE ENGINEERING

They present a project structure that provides students the opportunity to engage in all aspects of the software development life cycle while also requiring that they produce clear documentation of their outputs at each stage and communicate effectively with other teams who are working on the same project.

Hawker [1] identified a similar need for a SE project design that more closely replicates the experience of working on a "real world" software project. His approach was also based on the idea of having students fulfill different roles within different projects at the same time.

T. Rishel, “An innovative project structure for teaching software engineering”, CCSC, Southeastern Conference, University of Southern Mississippi Gulf Coast, 2012

Project Design: The basic structure of the project is a N x N x N matrix involving N

applications, N groups of students, and N tasks in the software development process. For the structure to work as designed, the number of projects, number of groups, and number of tasks all need to be equal.

Other changes to the course included :

How projects were selected : brainstorming session

who acted the role of “customer : The group that developed the requirements document was also designated as the "customer" for the application throughout the project lifecycle, so if there was ever a question of general design or implementation of a feature the "customer" group served as a resource to resolve the question.)

Cont..The SE tasks were organized into a sequential order following a

general design framework. The order used was:

1. Requirements Data

2. Design/Architecture

3. Classes/Component

4. User Interface

5. Test Plan

Benefits: It required all groups to complete all phases of a SE project. The proposed project structure motivated students to do their best

work as It is required each group to document their work not only for evaluation by the instructor, but to actually pass their output to their peers in the class.

The peer-centric design of this project structure also emulates working conditions in the software development industry. How software design operates in the real world and gave the students a realistic experience of interacting with others throughout the SE process.

Promotes "best-practices" within the class, encourage learning and using proper terminology, and motivate students to seek out documentation techniques that encourage clear and concise communication of technical details of a project.

It enhance the teamwork performance by Consider and adopt suggestions from others, providing help and ask to other team members and Completing assignments on time.

Assessing Teamwork Skills: Independent observation Evaluating the evidence of individual team member contributions Conduct peer reviews

Peer Evaluation Form

R. W. Lingard, “Teaching and Assessing Teamwork Skills in Engineering and Computer Science” , VOLUME 8 - NUMBER 1, ISSN: 1690-4524, California State University, Northridge, 2010

3. Teaching using Open Source Development Tools

Regardless of the specific pedagogical approach taken, many software engineering educators have noted the importance of teaching students the use of tools in software development, both to familiarize students with current industry practices as well as to aid their own development effort.

Some offerings use existing development tools such as:• project planning software• Integrated Development Environments (IDE’s)• Configuration management tools.• UML Modeling Tools• Testing Tools• Personal Assistant for Software Engineers (PASE) for project and

metric tracking. • Facebook and Google Docs, to promote team communication and

collabo-ation

S. Teel, D. Schweitzer, S. Fulton , “Teaching Undergraduate Software Engineering Using Open Source Development Tools ”, vol. 9,2012, United States Air Force Academy, Colorado, USA

Wiki Tab to create Wiki pages for their projects and use Google Project Hosting Wiki feature to document their project. Wiki based web-tools are popular for creating and sharing project documents enabling collaboration and team-work. All the members of the project team had permissions to add, modify and delete their respective project related documents and were helpful in knowledge management and project communication.

Readmine:It is an open source which provides both Project Management and Project Communication capabilities for all student project teams.

Multiple projects support Each project had the following built-in features: Wiki, News,

Document/Files, Forums, Issue tracking (requirements, bugs, tasks, and enhancements) with associated scheduling, versioning, time-tracking, calendar, and Gantt charts,Feeds & email notifications.

Instructors find that it is much easier to monitor the status of each project team on a regular basis -- and can provide mentoring to more teams than previously With a single click.

A central, web-accessible project information repository that provides an easy-to-update and reference location for all students wherever they are, whenever they need.

This approach also helps enforce the need to keep project documents continually up-to-date -- rather than the common approach of “wait until later” which can result in extremely out-of-date documentation.

Who uses Readmine?Education & Research Quality & Usability Lab, Technische Universität Berlin Thiagarajar College of Engineering Ukrainia  University Linux Competence Center at 

Chernigiv State Technological University and Students 'Team work site of CS department

Michigan State University, MSU Hydrogeology Lab

Companies and others alaTest, Product Reviews Applidium, iPad and iPhone application development Puppet Labs

Open Source tools which can be used in Software Engineering labs:

4. Emphasizing Experiences in Teaching Software Engineering Courses

Although universities put much effort into preparing students for software industry, a great portion of employers complain about level of readiness of university graduates for working in this industry. They are usually unsatisfied with lack of graduates' knowledge and expertise in some aspects such as requirement engineering, team working, testing, and measuring.

This approach focused on instructing engineering practices and principles and helping students to perceive their applications and advantages through properly designed experiments.

If we think that software is a product that can be engineered, it has to be developed with the help of scientific hand outs, we have to use tools in all stages of development and we have to evaluate our final and intermediate products according to some well-defined standards.

S. Hosseinabadi, Z. Aghakasiri, A. Sadeghi, P. Delfani, M. Ghandehari, “Emphasizing Experiences in Teaching Software Engineering Courses”, 2nd International Conference on Education Technology and Computer (ICETC), IEEE, 2010

5. The Company Approach to Software Engineering Project Courses Teaching larger software engineering project courses at

the end of a computing curriculum is a way for students to learn some aspects of real-world jobs in industry. Such courses, often referred to as capstone courses, are effective for learning how to apply the skills they have acquired in, for example, design, test, and configuration management. However, these courses are typically performed in small team.

The company approach describes the general ideas and concepts in the form of a course template, i.e., a generic description from which a specific software engineering course can be designed.

D. Broman, K. Sandah, M. Baker, “The Company Approach to Software Engineering Project Courses”, ACCEPTED TO IEEE TRANSACTIONS ON EDUCATION, VOLUME 55, ISSUE 4, 2012,IEEE

Teaching/learning activities of the methodology:1. Role selection

2. Company meetings

3. Requirements elicitation

4. Preliminary study and business meetings

5. Iteration planning and reviews

6. Time reporting and project planning

7. Transformation of organizational structure

8. Retrospectives and process improvements

9. Release planning and expo

10. Self reflection and experience documentation

Assessing and grading project-based courses

For the current course (2011) a new concept is being tested where students also write individual reports during the project. These reports include:

(1) what the student claims he/she has contributed with in the project, and

(2) what are the most important things that he/she learned during the project.

A particular component of the company approach assumed to help with the individual assessment is the individual time budgets and time reporting. The key idea of using constrained time budgets is to achieve the learning outcome that student realize that resources are limited and therefore prioritization is necessary.

6. Studio-Based Instruction Model

A.Sureka, M. Gupta, D. Sarkar, V. Chaudhary, “A Case-Study on Teaching Undergraduate-LevelSoftware Engineering Course Using Inverted-Classroom, Large-Group, Real-Client andStudio-Based Instruction Model”

Software Studio is a studio-based learning (SBL) curriculum designed to train students as professional software engineers.

Traditional software engineering courses remain important, but suffer significant gaps in preparing students for professional engagement.

The seating arrangement was different than the lecture-based model and is motivated by studio-based learning model applied in architecture schools.

Survey result:

A.Sureka, M. Gupta, D. Sarkar, V. Chaudhary, “A Case-Study on Teaching Undergraduate-Level Software Engineering Course Using Inverted-Classroom, Large-Group, Real-Client and Studio-Based Instruction Model”

References1. ACM, IEEE. (2008). Computer science curriculum 2008, An interim revision of CS 2001. Retrieved

March 14, 2012 from http://www.acm.org/education/curricula/ComputerScience2008.pdf

2. A.Sureka, M. Gupta, D. Sarkar, V. Chaudhary, “A Case-Study on Teaching Undergraduate-Level Software Engineering Course Using Inverted-Classroom, Large-Group, Real-Client and Studio-Based Instruction Model”

3. Callele, D., & Makaroff, D. (2006). Teaching requirements engineering to an unsuspecting audience. ACM SIGCSE Bulletin, 38(1), 433-437.

4. Claypool, K., & Claypool, M. (2005). Teaching software engineering through game design. Proceedings of the 10th annual SIGCSE conference on Innovation and technology in computer science educa-tion (ITiCSE '05), 123-127.

5. Clinton J. (1998). Tight spiral projects for communicating software engineering concepts. Proceedings of the 3rd Australasian conference on Computer science education (ACSE '98), 136-144.

6. Computer Science Curricula 2013, Curriculum Guidelines for Undergraduate Degree Programs in Computer Science, The Joint Task Force on Computing Curricula Association for Computing Machinery (ACM) IEEE Computer Society

7. C. Wohlin, B. Regnell, "Strategies for industrial relevance in software engineering education", The Journal of Systems and Software, vol. 49, 1999,pp. 125-134.

8. D. Broman, K. Sandah, M. Baker, “The Company Approach to Software Engineering Project Courses”, ACCEPTED TO IEEE TRANSACTIONS ON EDUCATION, VOLUME 55, ISSUE 4, 2012,IEEE

9. Lingard, R. and Berry, E., “Improving Team Performance in Software Engineering”, Selected Papers from the 11 th International Conference on College Teaching and Learning, Chambers, C. (ed.), Florida Community College at Jacksonville, 2000.

10. Lu, B., & DeClue, T. (2011). Teaching agile methodology in a software engineering capstone course. Jour-nal of Computing Sciences in Colleges, 26(5), 293-299.

11. P. Desai, G.H. Joshi, Activity Based Teaching Learning in Software Engineering – An Experience, IEEE International Conference on Engineering Education: Innovative Practices and Future Trends, 2012

12. Petkovic, D., Thompson, G., & Todtenhoefer, R. (2006). Teaching practical software engineering and global software engineering: evaluation and comparison. ACM SIGCSE Bulletin, 38(3), 294-298.

13. Razmov, V., & Anderson, R. (2006). Pedagogical techniques supported by the use of student devices in teaching software engineering. ACM SIGCSE Bulletin, 38(1) 344-348.

14. R. Conn, "Developing software engineers at the C-BOJ software factory", IEEE Software, vol. 19,2002, pp. 25 - 29. 

15. R. W. Lingard, “Teaching and Assessing Teamwork Skills in Engineering and Computer Science” , VOLUME 8 - NUMBER 1, ISSN: 1690-4524, California State University, Northridge, 2010

16. S. Mirian-Hosseinabadi, Z .Aghakasiri, A. Sadeghi, P. Delfani, M. Ghandehari, “Emphasizing Experiences in Software engineering Courses”, International Conference on Education Technology and Computer (ICETC), IEEE, 978-1-4244-6370-11.

17. T. Rishel, “An innovative project structure for teaching software engineering”, CCSC, Southeastern Conference, University of Southern Mississippi Gulf Coast, 2012