480 likes | 597 Views
การใช้เทคโนโลยี Open Source ในการพัฒนาซอฟต์แวร์. ขอขอบคุณผู้ให้ข้อมูลที่น่าสนใจ. คุณอิสริยา ไพรีพ่ายฤทธิ์ isriya_pa@sipa.or.th สำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ ( องค์การมหาชน ).
E N D
การใช้เทคโนโลยี Open Source ในการพัฒนาซอฟต์แวร์ ขอขอบคุณผู้ให้ข้อมูลที่น่าสนใจ คุณอิสริยา ไพรีพ่ายฤทธิ์ isriya_pa@sipa.or.th สำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ (องค์การมหาชน) 2005 อนุญาตให้เผยแพร่เอกสารนี้ต่อด้วยสัญญาอนุญาตแบบ Creative Commons Attribution License
Open Source คืออะไร ? • ซอฟต์แวร์เสรี • ผู้ใช้มีสิทธิอย่างเสรีกับตัวซอฟต์แวร์ • - ใช้งาน • - ปรับปรุงแก้ไข • - พัฒนาต่อ • - ขาย • ปัจจุบันใช้งานอย่างแพร่หลาย
คุณใช้ Open Source อยู่หรือเปล่า ? • Google ใช้ Linux เป็นระบบปฏิบัติการ • Hotmail ใช้ FreeBSD เป็นระบบปฏิบัติการ • 70% ของเว็บ ใช้ Apache เป็นเว็บเซิร์ฟเวอร์ • ADSL Router ใช้ Linux เป็นระบบปฏิบัติการ • โทรศัพท์มือถือของ Motorola ใช้ Linux เป็นระบบปฏิบัติการ • Yahoo! ใช้ MySQL เป็นระบบฐานข้อมูล
ทำไมต้องสนใจ Open Source • “Innovation Happens Elsewhere” • ไม่ว่าองค์กรจะลงทุนด้านวิจัยแค่ไหน ปริมาณผลงานของเคน นอกองค์กรย่อมมีมากว่า • ทางออก : นำผลงานของคนนอกมาใช้งาน • วิธีการ : Open Source
ประวัติของ 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 ออก
รูปแบบการพัฒนาซอฟต์แวร์แบบ Open Source • ผู้สร้างเปิดเผยซอร์สโค้ด • ผู้สนใจมีสิทธิแก้ไขซอร์สโค้ด • ผู้สนใจมีสิทธิส่งส่วนที่แก้ไขมาให้ผู้สร้าง • ผู้สร้างมีสิทธิผนวกส่วนแก้ไข ไปกับโปรแกรมต้นฉบับ • ก่อให้เกิดชุมชนของผู้ใช้-ผู้พัฒนา
ข้อดีของการพัฒนาแบบ Open Source • ผู้ใช้มีส่วนร่วมในการกำหนดทิศทางของโปรแกรม • ผู้สร้างมีโอกาสรับฟังความคิดเห็นของผู้ใช้โดยตรง • เพิ่มปริมาณผู้มีส่วนร่วม (contributor) ของโปรแกรม • ลดระยะเวลาในการออกโปรแกรมรุ่นใหม่ (release cycle) • ลดค่าใช้จ่ายในการพัฒนาโปรแกรม
โครงการ Open Source ที่มีชื่อเสียง • ระบบปฏิบัติการ Linux, FreeBSD • เว็บเซิร์ฟเวอร์ Apache • ฐานข้อมูล MySQL, PostgreSQL • เว็บเบราว์เซอร์ Mozilla Firefox • อีเมล Mozilla Thunderbird • ชุดออฟฟิศ OpenOffice.org • โปรแกรมตกแต่งภาพ Gimp • ภาษาโปรแกรม PHP, Python, Perl
การพัฒนาซอฟต์แวร์ด้วย Open Source • Platform • ส่วนที่รองรับการทำงานของซอฟต์แวร์ เช่น OS, server, library • Programming • ตัวโปรแกรมเอง, ภาษา, compiler, interpreter • Tools • เครื่องมือที่ช่วยให้การพัฒนาโปรแกรมสะดวกและมีประสิทธิภาพ • เช่น debugger, version control
Platform : Normal Solutions ใช้ Open Source ลดค่าใช้จ่ายรวมของ Solution Applications 10,000 B Linux 0 B Windows 4,900 B ราคารวมของ Solution 10,000 B 14,900 B
Platform : Web Solutions Applications Apache Web Server IIS MySQL Database Oracle OS Linux Windows
Platform : ลดค่าใช้จ่ายรวม • ใช้ Open Source เพื่อลดค่าใช้จ่ายโดยรวมของ Solution • ผู้ซื้อ : ได้ Solution ในราคาที่ถูกลง • ผู้ขาย : มีโอกาสขายได้มากขึ้น • สามารถใช้ Open Source ร่วมกับซอฟต์แวร์อื่นได้ เช่น • - Windows + Apache + My SQL • - Linux + Oracle
Programming • C/C++ • Java • .NET • PHP • Perl • Python
Programming : C/C++ • C เป็นภาษาหลักในการพัฒนาโปรแกรมมายาวนาน • - ประสิทธิภาพสูง • - เหมาะกับงานเกี่ยวกับระบบ • C++ เป็น superset ของ C • - เพิ่มความสามารถด้าน Object-Oriented • - เขียน C++ แบบ C ได้ • - ปัจจุบันโปรแกรมขนาดใหญ่ส่วนมากเขียนด้วย C++
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
Programming : C/C++ : GCC (2) • เขียนโปรแกรมภาษา C ชื่อ main.c • gcc main.c • - ได้ผลลัพธ์คือ a.out • - ทดสอบโปรแกรมโดยสั่ง ./a.out • gcc -o program main.c • - ได้ผลลัพธ์คือ program • - ทดสอบโปรแกรมโดยสั่ง ./program
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)
Programming : Java • สร้างโดย Sun Microsystems ปี 1990 • เป็น Object-Oriented • ใช้แนวคิดของ Virtual Machine • ทำงานได้ข้ามแพลตฟอร์ม • Java Runtime Environment แจกฟรีโดย Sun และมีครบคลุม • เกือบทุกแพลตฟอร์ม • Java Development Kit ชุดพัฒนาพื้นฐาน แจกฟรีโดย Sun • มี 3 edition : J2ME, J2SE, J2EE • เวอร์ชันล่าสุด : 5.0
Programming : Java : Diagram Java Code (.java) Java Development Kit (JDK) Java Compiler (java.exe) Java Class Byte Code (.class) Java Runtime Environment (JRE) Java Virtual Machine (java.exe) Binary Code
Programming : Java : Open Source Open Source implementations Library Compiler VM Java Class java.exe javac.exe Harmony GCJ GIJ, Kaffe
Programming : Java : IDE • Eclipse (www.eclipse.org) • - IBM/Oracle • - เวอร์ชันล่าสุด : 3.1 • NetBeans (www.netbeans.org) • - Sun (Forte, Sun ONE Studio, Java Studio) • - เวอร์ชั่นล่าสุด : 4.1
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
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
Programming : .NET : Diagram C# VB.NET compiler .NET Class (C#) CIL (Common Intermediate Language) .NET Class (VB.NET) CLR (Common Language Runtime) Binary Code
Programming : .NET : Mono • Mono (www.mono-project.com) • เป็นการสร้าง .NET Framework แบบ Open Source • บริษัท Ximian (ปัจจุบันเป็นของ Novell) • ส่งเสริมให้ .NET สามารถรันข้ามแพลทฟอร์มได้อย่างแท้จริง • มีโอกาสเกิดปัญหาด้านกฎหมายในอนาคต • รวมอยู่ใน : SuSE, Ubuntu, Debian • ไม่รวมอยู่ใน : Red Hat, Fedora
Programming : .NET : Mono (2) .NET compiler .NET CLR .Mono compiler .Mono CLR Library Compiler VM .NET Library .NET Library Mono Library
Programming : .NET : IDE • SharpDevelop (www.icsharpcode.net/OpenSource/SD) • - Microsoft.NET • - Windows • MonoDevelop (http://www.monodevelop.com) • - Mono implement of Sharp Develop • - Microsoft .NET & Mono • - Linux, MacOSX
Programming : PHP • เดิม : Personal Home Page • ปัจจุบัน : PHP Hypertext Processor • Scripting language, server side • เทียบได้กับ Microsoft ASP, Sun JSP • ได้รับความนิยมสูงมาก เช่น Pantip, phpBB, phpMyAdmin
Programming : PHP : Solution • มักใช่ร่วมกับ Linux, Apache, MySQL • LAMP/LAMPS • - Linux, Apache, MySQL, PHP / SSL • - (อาจใช้ PostgreSQL แทน MySQL และ Perl/Python แทน PHP ได้) • สำหรับวินโดวส์แนะนำให้ใช้ AppServ (www.appserv.net)
Programming : Perl • เป็น scripting Language • เหมาะสำหรับทำงานบน Unix shell • เขียนได้ง่าย แต่อ่านได้ยาก เพราะเป็นภาษาที่เน้นสัญลักษณ์ • แนะนำให้ใช้ PHP หรือ Python
Programming : Python • เป็น scripting language • มีประสิทธิภาพสูง เขียนได้ง่าย • ทำงานได้ข้ามแพลทฟอร์ม • มี library สำคัญๆ ให้ครบ • กำลังได้รับความนิยมเพิ่มขึ้นเรื่อยๆ เช่น • - Google • - Red Hat • - BitTorrent
Programming : Python : Example Python C 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”); }
Programming : Others • ภาษาโปรแกรมมิ่งอื่นๆ ที่น่าสนใจ • - Ruby • - Boo • - Eiffel • - Objective-C
Tools • Debugger • Packaging • Version Control • Bug Tracker • GUI Designer
Tools : Debugger • GDB – GNU Debugger • - เป็น command line debugger • - ใช้คู่กับ GCC • - สนับสนุน C, C++, Fortran, Pascal, Obj-C • - ทำงานได้บน Unix และ Windows • - มี GUI เลือกใช้ได้หลายตัว เช่น DDD • สำหรับภาษาอื่นๆ สามารถใช้ debugger ของ IDE
Tools : Packaging • ขั้นตอนการติดตั้งโปรแกรมบน Unix ใช้โปรแกรมเหล่านี้เข้าช่วย • - autoconfig • - autobuild • - make • วิธีการติดตั้งพื้นฐาน • - ./configure • - make • - make install
Tools : Packaging (2) • นิยมรวมไฟล์เป็นก้อน แล้วบีบอัดแบบ tar.gz หรือ tarball เพื่อ • สะดวกในการดาวน์โหลด • การบีบไฟล์ • - tar cxvf filename.tar.gz file1 file2 file3 • การขยายไฟล์ • - tar xvfz filename.tar.gz • ไฟล์แบบ tar.gz เปิดได้ด้วยโปรแกรม ZIP ทั่วไป เช่น WinZIP, WinRAR
Tools : Packaging (3) • ต่อมามีระบบแพกเกจที่ก้าวหน้าขึ้น สามารถติดตั้งได้อัตโนมัติ • Red Hat • - RPM – Red Hat Package Management • Debian • - DPKG – Debian Package
Tools : Packaging (4) • ระบบ RPM และ DPKG มีปัญหาด้าน dependency • มีระบบแพกเกจอีกชั้นที่คอยแก้ปัญหา dependency • Red Hat • - YUM • Debian • - APT (Advance Package Tool)
Tools : Version Control • Version Control • - จัดการเวอร์ชันของซอร์สโค้ด • - เก็บโค้ดไว้ที่เซิร์ฟเวอร์กลาง แล้วเรียกใช้เมื่อต้องการ • - สนับสนุนการทำงานร่วมกันเป็นทีม • - สามารถย้อนการแก้ไขกลับได้ • - ใช้งานอย่างจริงจังในการพัฒนาระดับอุตสาหกรรม
Tools : Version Control (2) • CVS – Concurrent Versions System • - มีใน Unix เกือบทุกรุ่น • - มีข้อจำกัดหลายอย่าง เช่น ไม่สามารถเปลี่ยนชื่อไฟล์ได้ • - ยังใช้กันอย่างแพร่หลายในโครงการ Open Source สำคัญหลายแห่ง • SVN – Subversion • - ปรับปรุงจาก CVS แนวคิดใกล้เคียงกัน • - แนะนำให้เริ่มที่ SVN เลย
Tools : Version Control (3) • คำสั่งพื้นฐานของ CVS/SVN • svn checkout • ดึงซอร์สส่วนที่ต้องการจากเซิร์ฟเวอร์มาที่เครื่อง • svn add • เพิ่มไฟล์ใหม่ในเครื่องไปยังเซิร์ฟเวอร์ • svn update • ปรับปรุงการเปลี่ยนแปลงล่าสุดกับเวอร์ชันของเซิร์ฟเวอร์ • svn commit • ยืนยันการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์ (สั่งหลัง add/update)
Tools : Bug Tracker • ระบบจัดการบั๊กผ่านเว็บ • Bugzilla • ประสิทธิภาพสูง ใช้งานอย่างแพร่หลาย ติดตั้งยาก • IssueZilla • เป็น Bugzilla ที่โครงการ Open Office นำมาปรับแต่ง • Trac • ใช้งานและติดตั้งได้ง่าย ความสามารถครบ ออกแบบมาเพื่อการ • พัฒนาโปรแกรม
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
More information • Open Source at SIPA • http://www.thaiopensource.org • Open Source Software Project • http://www.sourceforge.net