how to use open source in software development

48
การใช้เทคโนโลยี Open Source ในการพัฒนาซอฟต์แวร์ อิสริยะ ไพรีพ่ายฤทธิ[email protected] สำานักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ (องค์การมหาชน) © 2005 อนุญาตให้เผยแพร่เอกสารนี้ต่อด้วยสัญญาอนุญาตแบบ Creative Commons Attribution License

Upload: isriya-paireepairit

Post on 24-May-2015

7.915 views

Category:

Business


5 download

DESCRIPTION

How to use Open Source technology for software development industry. The language is Thai

TRANSCRIPT

Page 1: How to use Open Source in Software Development

การใชเทคโนโลย Open Sourceในการพฒนาซอฟตแวร

อสรยะ ไพรพายฤทธ[email protected]

สำานกงานสงเสรมอตสาหกรรมซอฟตแวรแหงชาต(องคการมหาชน)

© 2005 อนญาตใหเผยแพรเอกสารนตอดวยสญญาอนญาตแบบ Creative Commons Attribution License

Page 2: How to use Open Source in Software Development

Open Source คออะไร?● ซอฟตแวรเสร● ผใชมสทธอยางเสรกบตวซอฟตแวร

– ใชงาน– ปรบปรงแกไข– พฒนาตอ– ขาย

● ปจจบนใชงานอยางแพรหลาย

Page 3: How to use Open Source in Software Development

คณใช Open Source อยหรอเปลา?● Google ใช Linux เปนระบบปฏบตการ● Hotmail ใช FreeBSD เปนระบบปฏบตการ● 70% ของเวบ ใช Apache เปนเวบเซรฟเวอร● ADSL Router ใช Linux เปนระบบปฏบตการ● โทรศพทมอถอของ Motorola ใช Linux เปนระบบปฎบตการ● Yahoo! ใช MySQL เปนระบบฐานขอมล

Page 4: How to use Open Source in Software Development

ทำาไมตองสนใจ Open Source

● “Innovation Happens Elsewhere”● ไมวาองคกรจะลงทนดานวจยแคไหน ปรมาณผลงานของคน

นอกองคกรยอมมมากกวา● ทางออก : นำาผลงานของคนนอกมาใชงาน● วธการ : Open Source

Page 5: How to use Open Source in Software Development

ประวตของ Open Source● 1983 : Richard Stallman ประกาศคำาวา Free Software● 1991 : Linus Torvalds เรมทำา Linux● 1997 : Eric S. Raymond เขยน “The Cathedral and the

bazaar”● 1998 : Netscape เปดเผยซอรสของ Mozilla● 1998 : Eric S. Raymond ประกาศคำาวา Open Source● 2004 : Firefox 1.0 ออก

Page 6: How to use Open Source in Software Development

รปแบบการพฒนาซอฟตแวรแบบ Open Source

● ผสรางเปดเผยซอรสโคด● ผสนใจมสทธแกไขซอรสโคด● ผสนใจมสทธสงสวนทแกไขมาใหผสราง● ผสรางมสทธผนวกสวนแกไขไปกบโปรแกรมตนฉบบ

● กอใหเกดชมชนของผใช-ผพฒนา

Page 7: How to use Open Source in Software Development

ขอดของการพฒนาแบบ Open Source● ผใชมสวนรวมในการกำาหนดทศทางของโปรแกรม● ผสรางมโอกาสรบฟงความคดเหนของผใชโดยตรง● เพมปรมาณผมสวนรวม (contributor) ของโปรแกรม● ลดระยะเวลาในการออกโปรแกรมรนใหม (release cycle)● ลดคาใชจายในการพฒนาโปรแกรม

Page 8: How to use Open Source in Software Development

โครงการ Open Source ทมชอเสยง

● ระบบปฏบตการ Linux, FreeBSD● เวบเซรฟเวอร Apache● ฐานขอมล MySQL, PostgreSQL● เวบเบราวเซอร Mozilla Firefox● อเมล Mozilla Thunderbird● ชดออฟฟศ OpenOffice.org● โปรแกรมตกแตงภาพ Gimp● ภาษาโปรแกรม PHP, Python, Perl

Page 9: How to use Open Source in Software Development

การพฒนาซอฟตแวรดวย Open Source● Platform

สวนทรองรบการทำางานของซอฟตแวร เชน OS, server, library● Programming

ตวโปรแกรมเอง, ภาษา, compiler, interpreter● Tools

เครองมอทชวยใหการพฒนาโปรแกรมสะดวกและมประสทธภาพ เชน debugger, version control

Page 10: How to use Open Source in Software Development

Platform : Normal Solutions

Applications10,000 B

Linux0 B

Windows4,900 B

ราคารวมของ Solution

10,000 B 14,900 B

ใช Open Source ลดคาใชจายรวมของ Solution

Page 11: How to use Open Source in Software Development

Platform : Web Solutions

Applications

Linux Windows

Apache

MySQL Oracle

IISWeb Server

Database

OS

Page 12: How to use Open Source in Software Development

Platform : ลดคาใชจายรวม

● ใช Open Source เพอลดคาใชจายโดยรวมของ Solution● ผซอ : ได Solution ในราคาทถกลง● ผขาย : มโอกาสขายไดมากขน

● สามารถใช Open Source รวมกบซอฟตแวรอนได เชน– Windows + Apache + MySQL– Linux + Oracle

Page 13: How to use Open Source in Software Development

Programming● C/C++● Java● .NET● PHP● Perl● Python

Page 14: How to use Open Source in Software Development

Programming : C/C++● C เปนภาษาหลกในการพฒนาโปรแกรมมายาวนาน

– ประสทธภาพสง– เหมาะกบงานเกยวกบระบบ

● C++ เปน superset ของ C– เพมความสามารถดาน Object-Oriented– เขยน C++ แบบ C ได– ปจจบนโปรแกรมขนาดใหญสวนมากเขยนดวย C++

Page 15: How to use Open Source in Software Development

Programming : C/C++ : GCC● GCC (GNU Compiler Collection)● เปน compiler มาตรฐานในการทำา benchmark● สนบสนนภาษา C, C++, Fortran, Obj-C, Ada● เวอรชนลาสด 4.0● มใน Unix แทบทกตว● ใชบนวนโดวสไดผาน Cygwin (www.cygwin.com)● การใชงานเปน command line

Page 16: How to use Open Source in Software Development

Programming : C/C++ : GCC (2)● เขยนโปรแกรมภาษา C ชอ main.c● gcc main.c

– ไดผลลพธคอ a.out– ทดสอบโปรแกรมโดยสง ./a.out

● gcc -o program main.c– ไดผลลพธคอ program– ทดสอบโปรแกรมโดยสง ./program

Page 17: How to use Open Source in Software Development

Programming : C/C++ : Editor● Text editor : vi, notepad, editplus, ultraedit● IDE (Integrated Development Environment)

– Windows : Dev-C++– Linux : Kdevelop, Anjunta– หรอ Eclipse กบ CDT (C/C++ Development Tools)

Page 18: How to use Open Source in Software Development

KDevelop

Page 19: How to use Open Source in Software Development

Programming : Java● สรางโดย Sun Microsystems ป 1990● เปน Object-Oriented● ใชแนวคดของ Virtual Machine● ทำางานไดขามแพลตฟอรม● Java Runtime Environment แจกฟรโดย Sun และมครอบคลม

เกอบทกแพลตฟอรม● Java Development Kit ชดพฒนาพนฐาน แจกฟรโดย Sun● ม 3 edition : J2ME, J2SE, J2EE● เวอรชนลาสด : 5.0

Page 20: How to use Open Source in Software Development

Programming : Java : Diagram

Java Code(.java)

Byte Code(.class)

Binary Code

Java Compiler (javac.exe)

Java Virtual Machine (java.exe)

Java Development Kit (JDK)

Java Runtime Environment (JRE)

Java Class

Page 21: How to use Open Source in Software Development

Programming : Java : Open Source

Java Classjava.exejavac.exe

LibraryCompiler

VM

HarmonyGCJ

GIJ, Kaffe

Open Source implementations

Page 22: How to use Open Source in Software Development

Programming : Java : IDE● Eclipse (www.eclipse.org)

– IBM/Oracle– เวอรชนลาสด : 3.1

● NetBeans (www.netbeans.org)– Sun (Forte, Sun ONE Studio, Java Studio)– เวอรชนลาสด : 4.1

Page 23: How to use Open Source in Software Development

Programming : Java : Other● JBoss (www.jboss.org)

– Open Source J2EE application server● Jakarta Project (jarkata.apache.org)

– Open Source software for Java platform– ดแลโดย Apache Foundation– ตวอยาง : Tomcat, Ant– นำาไปใชใน IBM WebSphere

Page 24: How to use Open Source in Software Development

Programming : .NET● Microsoft เขยนตาม Java● Multi-Platform (ในทางทฤษฎ)● Multi-Language

– C#, VB.NET, Managed C++, JScript.NET, ASP.NET– Python, Ada, Cobol, Boo, Perl, Fortran

● .NET 2.0 Final : November 2005

Page 25: How to use Open Source in Software Development

Programming : .NET : Diagram

C#

CIL(Common Intermediate Language)

Binary Code

compiler

CLR (Common Language Runtime)

VB.NET

.NET Class(C#)

.NET Class(VB.NET)

Page 26: How to use Open Source in Software Development

Programming : .NET : Mono● Mono (www.mono-project.com)● เปนการสราง .NET Framework แบบ Open Source● บรษท Ximian (ปจจบนเปนของ Novell)● สงเสรมให .NET สามารถรนขามแพลทฟอรมไดอยางแทจรง● มโอกาสเกดปญหาดานกฎหมายในอนาคต● รวมอยใน : SuSE, Ubuntu, Debian● ไมรวมอยใน : Red Hat, Fedora

Page 27: How to use Open Source in Software Development

Programming : .NET : Mono (2)

.NET compiler

.NET CLR

Library

Compiler

VM

Mono compiler

Mono CLR

.NET Library Mono Library.NET Library

Page 28: How to use Open Source in Software Development

Programming : .NET : IDE● SharpDevelop (www.icsharpcode.net/OpenSource/SD)

– Microsoft .NET– Windows

● MonoDevelop (http://www.monodevelop.com)– Mono implement of SharpDevelop– Microsoft .NET & Mono– Linux, MacOSX

Page 29: How to use Open Source in Software Development

SharpDevelop

Page 30: How to use Open Source in Software Development

Programming : PHP● เดม : Personal Home Page● ปจจบน : PHP Hypertext Processor● scripting language, server side● เทยบไดกบ Microsoft ASP, Sun JSP● ไดรบความนยมสงมาก เชน Pantip, phpBB, phpMyAdmin

Page 31: How to use Open Source in Software Development

Programming : PHP : Solution● มกใชรวมกบ Linux, Apache, MySQL● LAMP/LAMPS

– Linux, Apache, MySQL, PHP / SSL– (อาจใช PostgreSQL แทน MySQL และ Perl/Python แทน

PHP ได)● สำาหรบวนโดวสแนะนำาใหใช AppServ (www.appserv.net)

Page 32: How to use Open Source in Software Development

Programming : Perl● เปน scripting language● เหมาะสำาหรบทำางานบน Unix shell● เขยนไดงาย แตอานไดยาก เพราะเปนภาษาทเนนสญลกษณ● แนะนำาใหใช PHP หรอ Python

Page 33: How to use Open Source in Software Development

Programming : Python● เปน scripting language● มประสทธภาพสง เขยนไดงาย● ทำางานไดขามแพลทฟอรม● ม library สำาคญๆ ใหครบ● กำาลงไดรบความนยมเพมขนเรอยๆ เชน

– Google– Red Hat– BitTorrent

Page 34: How to use Open Source in Software Development

Programming : Python : Example

if (a > b): print “A is greater”else: print “B is greater”

int a;int b;if (a>b) { printf(“A is greater”);} else { printf(“B is greater”);}

Python C

Page 35: How to use Open Source in Software Development

Programming : Others● ภาษาโปรแกรมมงอนๆ ทนาสนใจ

– Ruby– Boo– Eiffel– Objective-C

Page 36: How to use Open Source in Software Development

Tools● Debugger● Packaging● Version Control● Bug Tracker● GUI Designer

Page 37: How to use Open Source in Software Development

Tools : Debugger● GDB – GNU Debugger

– เปน command line debugger– ใชคกบ GCC– สนบสนน C, C++, Fortran, Pascal, Obj-C– ทำางานไดบน Unix และ Windows– ม GUI เลอกใชไดหลายตว เชน DDD

● สำาหรบภาษาอนๆ สามารถใช debugger ของ IDE

Page 38: How to use Open Source in Software Development

Tools : Packaging● ขนตอนการตดตงโปรแกรมบน Unix ใชโปรแกรมเหลานเขาชวย

– autoconfig– autobuild– make

● วธการตดตงพนฐาน– ./configure– make– make install

Page 39: How to use Open Source in Software Development

Tools : Packaging (2)● นยมรวมไฟลเปนกอน แลวบบอดแบบ tar.gz หรอ tarball เพอ

สะดวกในการดาวนโหลด● การบบไฟล

– tar cxvf filename.tar.gz file1 file2 file3● การขยายไฟล

– tar xvfz filename.tar.gz● ไฟลแบบ tar.gz เปดไดดวยโปรแกรม ZIP ทวไป เชน WinZIP,

WinRAR

Page 40: How to use Open Source in Software Development

Tools : Packaging (3)● ตอมามระบบแพกเกจทกาวหนาขน สามารถตดตงไดอตโนมต● Red Hat

– RPM – Red Hat Package Management● Debian

– DPKG – Debian Package

Page 41: How to use Open Source in Software Development

Tools : Packaging (4)● ระบบ RPM และ DPKG มปญหาดาน dependency● มระบบแพกเกจอกชนทคอยแกปญหา dependency● Red Hat

– YUM● Debian

– APT (Advance Package Tool)

Page 42: How to use Open Source in Software Development

Tools : Version Control● Version Control

– จดการเวอรชนของซอรสโคด– เกบโคดไวทเซรฟเวอรกลาง แลวเรยกใชเมอตองการ– สนบสนนการทำางานรวมกนเปนทม– สามารถยอนการแกไขกลบได– ใชงานอยางจรงจงในการพฒนาระดบอตสาหกรรม

Page 43: How to use Open Source in Software Development

Tools : Version Control (2)● CVS – Concurrent Versions System

– มใน Unix เกอบทกรน– มขอจำากดหลายอยาง เชน ไมสามารถเปลยนชอไฟลได– ยงใชกนอยางแพรหลายในโครงการ Open Source สำาคญ

หลายแหง● SVN – Subversion

– ปรบปรงจาก CVS แนวคดใกลเคยงกน– แนะนำาใหเรมท SVN เลย

Page 44: How to use Open Source in Software Development

Tools : Version Control (3)● คำาสงพนฐานของ CVS/SVN● svn checkout

ดงซอรสสวนทตองการจากเซรฟเวอรมาทเครอง● svn add

เพมไฟลใหมในเครองไปยงเซรฟเวอร● svn update

ปรบปรงการเปลยนแปลงลาสดกบเวอรชนของเซรฟเวอร● svn commit

ยนยนการเปลยนแปลงไปยงเซรฟเวอร (สงหลง add/update)

Page 45: How to use Open Source in Software Development

Tools : Bug Tracker● ระบบจดการบกผานเวบ● Bugzilla

ประสทธภาพสง ใชงานอยางแพรหลาย ตดตงยาก● IssueZilla

เปน Bugzilla ทโครงการ OpenOffice นำามาปรบแตง● Trac

ใชงานและตดตงไดงาย ความสามารถครบ ออกแบบมาเพอการพฒนาโปรแกรม

Page 46: How to use Open Source in Software Development

Tools : GUI Designer● Glade (http://glade.gnome.org/)

– เปน user interface designer– Export เปน XML– ใชไดกบภาษา C, C++, Java, Perl, Python, C#, Ruby

● Stetic– เปน user interface designer สำาหรบ Mono

● หรอใช GUI designer ทมากบ IDE เชน Eclipse, NetBeans, KDevelop

Page 47: How to use Open Source in Software Development

Glade

Page 48: How to use Open Source in Software Development

More information● Open Source at SIPA

http://www.thaiopensource.org● Open Source Software Project

http://www.sourceforge.net