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

How to use Open Source in Software Development

Embed Size (px)

DESCRIPTION

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

Citation preview

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