Open Source Software enegineering

31
06/26/22 1 Open Source Software Engineering Luca Pastorino

Transcript of Open Source Software enegineering

Page 1: Open Source Software enegineering

04/11/23 1

Open Source Software Engineering

Luca Pastorino

Page 2: Open Source Software enegineering

04/11/23 2

Summary

Open Source and Free Software Development Process in Open Source Reasons of Open Source Success Corporate Source

Page 3: Open Source Software enegineering

04/11/23 3

Summary

Open Source and Free Software Development Process in Open Source Reasons of Open Source Success Corporate Source

Page 4: Open Source Software enegineering

04/11/23 4

Free Software / Open Source

Same “enemy” (proprietary software) Are distinct and have different targets Free Software

software must be “free” for social end ethic reasons (not gratis)

users must have freedom1. to run the program2. to study how the program works3. to redistribute copies4. to modify and improve the program

Open Source source code must be open and readable for practical

reasons: it is a development method

Page 5: Open Source Software enegineering

04/11/23 5

The GNU Project and the Free Software Foundation 1984: initial announcement of the GNU

Project by Richard Stallman Developing a complete UNIX style Operating

System as free software: the GNU (GNU's Not Unix)

1985: Free Software Foundation Promoting the development and use of free

software, particularly the GNU Operating System

Page 6: Open Source Software enegineering

04/11/23 6

Open Source

1998: Bruce Perens, Eric Raymond and others in the Free software sector, realised that the business world didn’t like the freedom principle associated with it Promote Free software to highlight the many

advantages such as adaptability, reliability, security, standard conformity and indipendence from single companies

Open Source Definition: the fundamental document of the Open Source community

Page 7: Open Source Software enegineering

04/11/23 7

The Open Source Definition

1. Free Redistribution 2. Source Code Distribution3. Derived Works Allowed4. Integrity of The Author's Source Code5. No Discrimination Against Persons or

Groups 6. No Discrimination Against Fields of

Endeavor 7. License Must Not Restrict Other Software 8. License Must Be Technology-Neutral

Page 8: Open Source Software enegineering

04/11/23 8

Open Source Products

Operating System Linux BSDs (Berkeley Systems Distribution of Unix)

Internet Apache BIND Mozilla

Programming Tools Perl, Zope and PHP: popular engines behind the "live

content" on the World Wide Web The GNU compilers and tools (GCC, Make and

others): the most powerful, flexible and extensible set of compilers in the world

Page 9: Open Source Software enegineering

04/11/23 9

Open Source Companies

IBM: Use of Apache to support WebSphere, Eclipse APPLE: Darwin, Quick Time Streaming server HP: Linux on its servers and handhelds SUN: Support Java and Mozilla projects Sharp: Linux on Zaurus handhelds Red Hat Software: Linux distribution Open Source in Government and Non-Profit

Page 10: Open Source Software enegineering

04/11/23 10

Summary

Open Source and Free Software Development Process in Open Source Reasons of Open Source Success Corporate Source

Page 11: Open Source Software enegineering

04/11/23 11

A new SE paradigm

Technically, OOS (Open Source Software) is defined in terms of distribution licenses, not developmental methods

Intuitively, the development process supported by OSS promises something new to Software Engineering

The principles of OSS development are showing, in a new way, how complex software systems can be constructed, deployed and evolved

Page 12: Open Source Software enegineering

04/11/23 12

Taxonomy of Open Source Development The term “Open Source Software development”

is over-loaded There are three major focuses:

Archetype: a high quality program as a reference model (GNU software)

Security: software fault-tolerance (PostgreSQL) Rapidness: rapid adaptation and modification

(Linux, excl. kernel)

Page 13: Open Source Software enegineering

04/11/23 13

Open Source Communities

Core team

Co-developers

Active User

Passive User

Initiator

Releasecoordinator

.

Page 14: Open Source Software enegineering

04/11/23 14

Software Engineering Process

The elements of a typical software engineering process are generally enumerated as:

Requirements Analysis System-Level Design Detailed Design Implementation Integration Field Testing Support/Maintenance

Page 15: Open Source Software enegineering

04/11/23 15

Requirements Analysis

Conventional Software: Create a document

which describes the target customers, their reason for needing this product and the list of features of the product

Open Source Software: Usually Open Source

folks tend to build the tools they need

Use of mailing lists or newsgroups

Page 16: Open Source Software enegineering

04/11/23 16

System-level Design

Conventional Software: High-level description of

the product, in terms of modules and of the interaction between them

Open Source Software: There usually is no

system-level design The system design is

implicit or it evolves over time

Usually by version 2 or 3 of an open source system, there actually is a system design

Page 17: Open Source Software enegineering

04/11/23 17

Detailed Design

Conventional Software: Every module defined in

the system-level design is described in detail

The interfaces of each module has to be determined as well as dependencies between modules

Open Source Software: Detailed design ends up

being a side effect of the implementation

Documenting the API is optional and may not occur if the API isn’t intended to be used outside the project

Page 18: Open Source Software enegineering

04/11/23 18

Implementation

Conventional Software: Every module described

in the detailed design has to be implemented

A module can be considered implemented when it has been created and tested

Open Source Software: This is the fun part The opportunity to write

code is the primary motivation for almost all open source software development efforts

Review is informal No unit test

Page 19: Open Source Software enegineering

04/11/23 19

Integration

Conventional Software: When all modules are

complete, system-level integration can be done

All modules are compiled, linked and packaged as a system

It usually includes the development of a system-level test

Open Source Software: It involves writing some

man pages, making sure that it builds on every kind of system, writing a Makefile, writing a README, making a tarball, putting it up for anonymous FTP somewhere, and posting a note to a mailing list or newsgroup

Page 20: Open Source Software enegineering

04/11/23 20

Field Testing

Conventional Software: Field testing usually

begins internally (from employees of the organization)

Then, it will be necessary to run the software esternally (on customers’ computer)

Open Source Software: The best system-level

testing in the industry: users are friendlier when they aren’t charged any money, and power users are more helpful when they can read and fix the source code

Real world experience of real users

“peer review” of hundreds of other programmers

Page 21: Open Source Software enegineering

04/11/23 21

Support and Maintenance

Conventional Software: Sofware defects are

recorded in a tracking system

These defects are assigned to a software engineer who will propose a change to either the documentation or the implementation

Open Source Software: When a user finds a

bug he can report it an a mailing list, or also send a patch

Sometimes this phase is provided under some payment

Page 22: Open Source Software enegineering

04/11/23 22

Configuration Management

Conventional change process Change process for OSS

Page 23: Open Source Software enegineering

04/11/23 23

Summary

Open Source and Free Software Development Process in Open Source Reasons of Open Source Success Corporate Source

Page 24: Open Source Software enegineering

04/11/23 24

Reasons of Open Source SuccessFrom an end-user perspective: reduces the cost of software acquisition enables diversity simplify collaboration

From a software process and productivity perspective: Enlarging the user community Scalable division of labor Short feedback loops Greater oppotunity for analysis

Page 25: Open Source Software enegineering

04/11/23 25

Why do developers contribute to Open Source Projects? Personal needs Enjoyment Desire to be part of a team Reputation Money

Page 26: Open Source Software enegineering

04/11/23 26

Where OS Succeeds and Fails

Successful domains Communities with

unmet software needs Technically

sophisticated user community

General-purpose, commoditized, infrastructure software

Unsuccessful domains Highly vertical domains Highly competitive

domains Highly secure domains High-confidence

domains

Page 27: Open Source Software enegineering

04/11/23 27

Summary

Open Source and Free Software Development Process in Open Source Reasons of Open Source Success Successful and Unsuccessful Domains Corporate Source

Page 28: Open Source Software enegineering

04/11/23 28

Corporate Source: OS Concepts to a Corporate Environment Corporate Source is the application of OS concepts

and methodologies within the corporate envirorment “Open” to all developers behind the firewall Community size is smaller than the Internet

Page 29: Open Source Software enegineering

04/11/23 29

Why is Corporate Source good? Quality

Programmers write better code for sharing vs. just execution Code Sharing

Corporate Source will promote greater sharing of code among different projects

Maintenance Bugs get fixed faster, and features added faster, if more

people understand and can modify code ‘Bit Rot’ Protection

Prevent code from ‘bit rot’ Intellectual Property

Code is IP that must be protected and widely utilized

Page 30: Open Source Software enegineering

04/11/23 30

References Open Source Initiative - www.opensource.org GNU project and FSF - www.gnu.org Institute for Software Research -

www.isr.uci.edu/research-open-source.html AICA group - http://linfe.it/ “Open Sources: Voices from the Open Source Revolution”,

edited by DiBona, Ockman, Stone, 1st Edition January 1999 “Understanding the Requirements for Developing Open Source

Software Systems”, Walt Scacchi - Institute for Software Research, University of California, Irvine

“Making Sense of the Bazaar”: 1st Workshop on Open Source Software Engineering” - http://opensource.ucc.ie/icse2001/

“Meeting Challenges and Surviving Success”: 2nd Workshop on Open Source Software Engineering - http://opensource.ucc.ie/icse2002/

Page 31: Open Source Software enegineering

04/11/23 31

References

“Taking Stock of the Bazaar”: 3rd Workshop on Open Source Software Engineering http://opensource.ucc.ie/icse2003/

“Leveraging Open-Source Communities To Improve the Quality & Performance of Open-Source Software” – Schmidt, Porter (2001)

“Taxonomy of Open Source Software Development” – Nakakoji, Yamamoto (2001)

“Configuration Management for Open Source Software” – Asklund, Bendix (2001)

“Corporate Source: Applaying Open Source Concepts to a Corporate Environment”- Dinkelacker, Garg (2001)

“Why Do Developers Contribute to Open Source Projects? First Evidence of Economic Incentives – Hann, Roberts, Slaughter (2001)