Open Source Software Engineering
Download
Report
Transcript Open Source Software Engineering
Open Source
Software Engineering
Luca Pastorino
17/07/2015
1
Summary
Open Source and Free Software
Development Process in Open Source
Reasons of Open Source Success
Corporate Source
17/07/2015
2
Summary
Open Source and Free Software
Development Process in Open Source
Reasons of Open Source Success
Corporate Source
17/07/2015
3
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 freedom
1.
to run the program
2.
to study how the program works
3.
to redistribute copies
4.
to modify and improve the program
Open Source
17/07/2015
source code must be open and readable for practical
reasons: it is a development method
4
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
17/07/2015
Promoting the development and use of free
software, particularly the GNU Operating
System
5
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
17/07/2015
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
6
The Open Source Definition
Free Redistribution
Source Code Distribution
Derived Works Allowed
Integrity of The Author's Source Code
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
1.
2.
3.
4.
5.
17/07/2015
7
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
17/07/2015
8
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
17/07/2015
9
Summary
Open Source and Free Software
Development Process in Open Source
Reasons of Open Source Success
Corporate Source
17/07/2015
10
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
17/07/2015
11
Taxonomy of Open Source
Development
The term “Open Source Software development”
is over-loaded
There are three major focuses:
17/07/2015
Archetype: a high quality program as a
reference model (GNU software)
Security: software fault-tolerance (PostgreSQL)
Rapidness: rapid adaptation and modification
(Linux, excl. kernel)
12
Open Source Communities
Passive User
Active User
Initiator
Co-developers
Core team
Release
coordinator
.
17/07/2015
13
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
17/07/2015
14
Requirements Analysis
Conventional Software:
Open Source Software:
Create a document
Usually Open Source
which describes the
target customers, their
reason for needing this
product and the list of
features of the product
17/07/2015
folks tend to build the
tools they need
Use of mailing lists or
newsgroups
15
System-level Design
Conventional Software:
Open Source Software:
High-level description of
There usually is no
the product, in terms of
modules and of the
interaction between
them
17/07/2015
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
16
Detailed Design
Conventional Software:
Open Source Software:
Every module defined in
Detailed design ends up
the system-level design
is described in detail
The interfaces of each
module has to be
determined as well as
dependencies between
modules
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
17/07/2015
17
Implementation
Conventional Software:
Open Source Software:
Every module described
This is the fun part
in the detailed design
has to be implemented
A module can be
considered
implemented when it
has been created and
tested
The opportunity to write
17/07/2015
code is the primary
motivation for almost all
open source software
development efforts
Review is informal
No unit test
18
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
17/07/2015
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
19
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)
17/07/2015
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
20
Support and Maintenance
Conventional Software:
Open Source Software:
Sofware defects are
When a user finds a
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
17/07/2015
bug he can report it an
a mailing list, or also
send a patch
Sometimes this phase
is provided under some
payment
21
Configuration Management
Conventional change process
17/07/2015
Change process for OSS
22
Summary
Open Source and Free Software
Development Process in Open Source
Reasons of Open Source Success
Corporate Source
17/07/2015
23
Reasons of Open Source
Success
From 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
17/07/2015
24
Why do developers contribute to
Open Source Projects?
Personal needs
Enjoyment
Desire to be part of a team
Reputation
Money
17/07/2015
25
Where OS Succeeds and Fails
Successful domains
Unsuccessful domains
Communities with
Highly vertical domains
unmet software needs
Technically
sophisticated user
community
General-purpose,
commoditized,
infrastructure software
Highly competitive
17/07/2015
domains
Highly secure domains
High-confidence
domains
26
Summary
Open Source and Free Software
Development Process in Open Source
Reasons of Open Source Success
Successful and Unsuccessful Domains
Corporate Source
17/07/2015
27
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
17/07/2015
28
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
17/07/2015
29
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/
17/07/2015
30
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)
17/07/2015
31