Teaching Software Engineering With FLOSS Projects

26
Teaching Software Engineering With FLOSS Projects Teaching Software Engineering With FLOSS Projects Ioannis Stamelos Dept. of Informatics, Aristotle University of Thessaloniki FLOSSCom project team & NetGeners.Net participants FKFT Free Knowledge, Free Technology Education for a free information society First International Conference, Barcelona July 15th to 17th 2008

description

Teaching Software Engineering With FLOSS Projects Ioannis Stamelos Dept. of Informatics, Aristotle University of Thessaloniki FLOSSCom project team & NetGeners.Net participants FKFT Free Knowledge, Free Technology Education for a free information society First International Conference, Barcelona July 15th to 17th 2008

Transcript of Teaching Software Engineering With FLOSS Projects

Page 1: Teaching Software Engineering With FLOSS Projects

Teaching Software Engineering With FLOSS ProjectsTeaching Software Engineering With FLOSS Projects

Ioannis Stamelos

Dept. of Informatics, Aristotle University of ThessalonikiFLOSSCom project team & NetGeners.Net participants

                     

FKFT Free Knowledge, Free Technology Education for a free information society

First International Conference, Barcelona July 15th to 17th 2008

Page 2: Teaching Software Engineering With FLOSS Projects

One Major Software Engineering Education Problem

• One of the major problems in software engineering education is the involvement of students in real world software projects

• Typical projects given to SE students:

– “Toy” applications: not real projects

– Funded research projects: too few, not always real projects

– Industry projects: too few, problems with student familiarization, integration in enterprise environment

• Need to comply with specific ACM requirements

– Source: ACM Computing Curricula 2005: The Overview Report

Page 3: Teaching Software Engineering With FLOSS Projects

ACM Requirements for SE Curricula

• Identification and acquisition of skill sets that go beyond technical skills

● Such skill sets include interpersonal communication skills, team skills, and management skills

• Exposure 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.

• Attention to professional, legal, and ethical issues

● so that students acquire, develop, and demonstrate attitudes and priorities that honor, protect, and enhance the profession’s ethical stature and standing.

• Demonstration that each student has integrated the various elements of the undergraduate experience

● by undertaking, completing, and presenting a capstone project

Page 4: Teaching Software Engineering With FLOSS Projects

FLOSS is a Solution to the Problem

• The abundance of FLOSS projects provide a solution, offering multi-lingual, multi-cultural environments in every application domain, at different levels of size, maturity, organization etc.

• FLOSSPOLS survey: 35-47% of respondents claimed that, by being members of a FLOSS project, they acquired basic/introductory programming, managing complex software systems, testing etc skills in a period of two years.

Page 5: Teaching Software Engineering With FLOSS Projects

FLOSS Opportunities per Area of SE Education

• Software configuration management XX

• Software engineering management XX

• Software engineering process XX

• Software engineering tools and methods XXX

• Software quality XXXX

• Software engineering knowledge areas according to SWEBOK and degree of educational opportunities in FLOSS on a 1 to 5 scale (source: SWEBOK, Guide to the Software Engineering Body of Knowledge. IEEE Computer Society Press, 2004)

• Software requirements XXX

• Software design XXX

• Software construction XXX

• Software testing XXXX

• Software maintenance XXX

Page 6: Teaching Software Engineering With FLOSS Projects

How to teach any SE topic

● Students are given basic, theoretical knowledge on any SE topic in class lectures

● they are provided with examples from their books and other reading material as usual

• Examples picked from FLOSS projects introduce students to the real SE world

– students are prompted to investigate SE materials (documentation, code, discussion materials, etc) that are abundant in FLOSS projects

• As practical training, students are asked to fulfill predefined tasks by entering a FLOSS project (and community) and reporting back:

– the artefacts they produced

– feedback from the community

– the overall contribution they made to the project.

Page 7: Teaching Software Engineering With FLOSS Projects

How to involve students in FLOSS projects

• Provide students with information about FLOSS

– Present the FLOSS world

● Ask them to pinpoint one or more FLOSS projects that are suitable for their task(s)

● E.g. find new releases for bug reporting

● Enter the project(s)

● Execute their task(s) iteratively

● Produce FLOSS artefacts (code, documentation, tests, new features, appraisals, etc)

● Interact with the community

● Report their accomplishments

● Peer review other students' work (in FLOSS like mode)

Page 8: Teaching Software Engineering With FLOSS Projects

Example: Software Requirements

● Students are taught in class basic requirements theory.

● Various requirements documents

● Software requirements must be

● Correct● Complete● Precise● Consistent

● Conventional requirements student project

● Produce requirements for a toy system (e.g. trivial video club management)

Page 9: Teaching Software Engineering With FLOSS Projects

Practice with FLOSS

There is scarcity of requirements in FLOSS

Students may

● Improve existing requirements documents

● Produce requirement documents for existing, non documented projects

● Produce requirement documents for future project releases

● Peer review other students' requirement documents, assuring that requirements specified are appropriate

Page 10: Teaching Software Engineering With FLOSS Projects

Pilot application in Aristotle University

● Since three years:

● Introduction to Software Engineering

● Introduction to Information Systems

● Still tuning the approach

● Encouraging results

● Not without problems

● Will proceed and extend to other courses as well

● Object Oriented Analysis course

Page 11: Teaching Software Engineering With FLOSS Projects

Teaching a non SE topic: Information Systems (1)

● After teaching introductory concepts

● Students are asked to visit one or two consultant sites for enterprise application systems and get familiar with one IS category (e.g. learning management, customer relationship management)

● Students are given a list of forges and they are asked to locate FLOSS products that belong to the class of systems of previous step

● After choosing their target FLOSS projects, students read any available documentation on them (descriptions, reports, user manuals, etc) to understand the functionality they offer, and must register basic facts about the growth of the project

● Optionally, students may download and experiment with their product

● Students have to assess functionality and quality of their target

● They may use available web tools for FLOSS assessment from business point of view (QSOS1, Open_BRR)

Page 12: Teaching Software Engineering With FLOSS Projects

Teaching a non SE topic: Information Systems (2)

● Students have to compile a comprehensive report, containing

● any interesting information they have gathered on their target

● results of any assessments they have performed

● judgements of third parties they have encountered

● their own overall opinion

● As part of an advanced IS course, students may be actively involved in a relevant FLOSS project

Page 13: Teaching Software Engineering With FLOSS Projects

Approach is spreading

● Other Universities are also using this or similar approaches

● Norwegian University of Science and Technology

● Athens University of Economics and Business

● University of Skövde (Sweden)

● Wayne State University (U.S.A.)

● ...

Page 14: Teaching Software Engineering With FLOSS Projects

Publications

● Several papers already published on this approach

● Open Source Systems Conference

● Journal of Information Systems Education

● CELDA Conference

● Main Source for this presentation

● “Teaching Software Engineering with FLOSS Projects” by I. Stamelos

● International Journal on Open Source Software and Processes, 1(1), Jan. 2009

● Already available from FLOSSCOM site download area

● See next presentation for more details

Page 15: Teaching Software Engineering With FLOSS Projects

Teaching Software Engineering With FLOSS Projects

Thank you for your attentionThank you for your attention

Page 16: Teaching Software Engineering With FLOSS Projects

Pilot studies relevant to learning in FLOSSPilot studies relevant to learning in FLOSS

Sulayman K. Sowe <[email protected]>Dept. of Informatics, Aristotle University of ThessalonikiFLOSSCom project team & NetGeners.Net participants

                     

FKFT Free Knowledge, Free Technology Education for a free information society

First International Conference, Barcelona July 15th to 17th 2008

Page 17: Teaching Software Engineering With FLOSS Projects

In this presentation....

• FLOSS Educational ContextFLOSS Educational Context

• FLOSS Educational ModelFLOSS Educational Model

– R(E)volution in Teaching & Learning

• Pilot Studies: Experience from Aristotle Univ.Pilot Studies: Experience from Aristotle Univ.

– Brief history

– Framework for Teaching and Learning

– Some Results & Discussions

– Lessons Learnt

– Perspectives from the FLOSScom Project

Many meanings: Free Software (FS) – FSF; Open Source Software (OSS) – OSI, Free and Open Source, Open Source (OS), Software (F/OSS), Libre Software (LS), Free/Libre/Open Source Software (FLOSS).

Page 18: Teaching Software Engineering With FLOSS Projects

FLOSS Educational Context

Source code is open and free: • Access to large code base and professional programmers.

• Variety of domains/software/Projects.Large, Vibrant, and diverse Communities:• There is more than one bazaar of learning.

• Geographically distributed individuals with diverse skills & experienceCommunication, coordination, and public knowledge:• More than one means of communication (Lists, Forums, IM, IRC)-24/7.

• Archives of past and present knowledge (revisit, re-learn, feedback),

• Knowledge is constructed from multiplicity of viewpoints and experiences.Some Problems:• Too many projects and communities. Steep learning curves for some technologies .

• “Noise”, Flame-wars, feuds, delays in replies to questions/queries, Lack f2f contactPedagogical challenge:• How to equip students with “information filters”….skills needed to navigate information spaces,

find the right/interesting material, etc

Page 19: Teaching Software Engineering With FLOSS Projects

FLOSS Educational Model

• FLOSS developmentdevelopment is more than a paradigm shift in the way software is being developed, maintained, and supported.

• FLOSS communitiescommunities are open and participatory learning ecosystems (OPLE).

• FLOSS projectsprojects are bazaars of learning: a meaningful learning context in which students can be exposed to real-world software development.

• Viable educational model, characterized as the “Outside Approach” of learning in a FLOSS-like environment by FLOSScom. net

Page 20: Teaching Software Engineering With FLOSS Projects

Pilot Studies: Brief history & Pedagogical Perspectives

Page 21: Teaching Software Engineering With FLOSS Projects

Results and Discussions: Pilot 1

• 13 students testers in 16 FLOSS projects foudn 78 bugs, reported 68, and got 43 replies.

• Main activity was to find and report bugs. However,

– 10 bugs reported by students were fixed by programming community. 5 bugs fixed by students themselves.

– 3 students participated in localization. Translating documents from English to Greek. First experience with .po files for the first time.

1313131313131313N ValidN Valid

MissingMissing

4343151568687272SumSum

883311111111MaxMax

11002.02.033Min.Min.

2.22.21.2811.2812.7432.7433.0173.017Std. Dev.Std. Dev.

3.03.01.01.04.04.04.04.0MedianMedian

3.33.31.21.25.25.25.55.5MeanMean

00000000

No. of No. of repliesreplies

Bugs fixedBugs fixedBugs Bugs reportedreported

Bugs foundBugs found

1313131313131313N ValidN Valid

MissingMissing

4343151568687272SumSum

883311111111MaxMax

11002.02.033Min.Min.

2.22.21.2811.2812.7432.7433.0173.017Std. Dev.Std. Dev.

3.03.01.01.04.04.04.04.0MedianMedian

3.33.31.21.25.25.25.55.5MeanMean

00000000

No. of No. of repliesreplies

Bugs fixedBugs fixedBugs Bugs reportedreported

Bugs foundBugs found

Page 22: Teaching Software Engineering With FLOSS Projects

Results and Discussion: Pilot 2

• 24 students in 18 different projects

• Testing: 22 students

– 20 bugs fixed by community, 3 by students.

• Coding: 2 students

– Initiated and hosted a 2D game .“MarioSource” at Sourceforge.net http://sourceforge.net/projects/mariosource/

• Status Pre-Alpha, sourceforge Activity Percentile = 44.42

Statistics for testers

22 22 22 220 0 0 0

9.9545 9.4545 1.0455 8.59097.5000 7.0000 .0000 5.0000

7.89501 7.39837 1.88925 8.856852.00 2.00 .00 1.00

34.00 33.00 6.00 32.00219.00 208.00 23.00 189.00

ValidMissing

N

MeanMedianStd. DeviationMinimumMaximumSum

Bugsfound

Bugsreported

Bugsfixed

No. ofreplies

Page 23: Teaching Software Engineering With FLOSS Projects

Results and Discussion: Pilot 3

36 students in 51 different projects

– Testing: 12 students

• reported 134 bugs, got 190 replies

• 4 students got above mean replies with student No. 7 recording 72 replies for his 24 bugs in his 3 projects (inspircd, Freebsd, and Wordpress)

– Requirements Analysis: 21 students

• Template provided

• 3 incomplete

• 18 completed (12 accepted and published by project, 4 (in Greek) accepted but not published, 2 accepted by project admin but not published)

– Coding: 3 students

• 1 active contributor to pulseaudio (Ubuntu 8.04) and other sound output modules. Posts tips on configuration.

• 2 Initiated and hosted the webtooy project; a desktop client application for many Web 2.0 services with open APIs. Originally hosted at http://www.codeplex.com/webtooy then moved to http://sourceforge.net/projects/webtooy/

Statistics for 12 testers

12 120 0

11.17 15.8310.50 10.006.088 20.158

3 124 72

134 190

ValidMissing

N

MeanMedianStd. DeviationMinimumMaximumSum

Bugsreported

No. ofreplies

Page 24: Teaching Software Engineering With FLOSS Projects

Lessons Learnt - 1: Students perspectives

Students said:

- Very interesting experience

- Realistic conditions

- Found something new, projects, software, etc.

- Experiencing dual-boot (Linux-Windows)

- Know the people behind their software and 'talk' to them

- Freedom, work when and wherever they want

- Select their own choice of learning, project

- See their contribution appreciated and online in projects

- Encouragement from people they don't know

For some student:

- Finding an interesting project was hard

- Software was not running as expected

- Community was not responsive.

- Anxiety syndrome: “will I get good grades?”

- Extra effort needed before starting.

For us running the pilots:

• Discovered and Learnt new software, projects, skills

• Dealing with large number of emails or queries

• Spending considerable time online as “Internet-Based Facilitators” or IBFs

Page 25: Teaching Software Engineering With FLOSS Projects

Perspectives from the FLOSScom Project

• The NetGeners.Net study is another kind of pilot study championed by the FLOSScom project

Page 26: Teaching Software Engineering With FLOSS Projects

Information & Resources:FLOSScom Project: http://flosscom.net/index.php

NetGeners: http://www.netgeners.net/

● Andreas Meiszner, Rüdiger Glott, Sulayman K. Sowe (2008). Free/Libre Open Source Software (FLOSS) Communities as an Example of successful Open Participatory Learning Ecosystems. UPGRADE, The European Journal for the Informatics Professional.

● Andreas Meiszner, Rüdiger Glott, Sulayman K. Sowe (2008). Preparing the Ne(x)t Generation: Lessons learnt from Free/Libre Open Source Software. In 4th International Barcelona Conference on Higher Education: Vol. 2. Knowledge technologies for social transformation.

● Sulayman K. Sowe. I. Stamelos (2008). Involving Software Engineering Students in Open Source Software Projects: Experiences from a Pilot Study, Journal of Information Systems Education (JISE), Vol. 18 (4), pp: 425-435.

● More references available from the authors.

Thank you for your kind attention !Thank you for your kind attention !

Questions? Comments? Suggestions?Questions? Comments? Suggestions?