1 / 48

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

การใช้เทคโนโลยี Open Source ในการพัฒนาซอฟต์แวร์. ขอขอบคุณผู้ให้ข้อมูลที่น่าสนใจ. คุณอิสริยา ไพรีพ่ายฤทธิ์ isriya_pa@sipa.or.th สำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ ( องค์การมหาชน ).

hachi
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. การใช้เทคโนโลยี Open Source ในการพัฒนาซอฟต์แวร์ ขอขอบคุณผู้ให้ข้อมูลที่น่าสนใจ คุณอิสริยา ไพรีพ่ายฤทธิ์ isriya_pa@sipa.or.th สำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ (องค์การมหาชน) 2005 อนุญาตให้เผยแพร่เอกสารนี้ต่อด้วยสัญญาอนุญาตแบบ Creative Commons Attribution License

  2. Open Source คืออะไร ? • ซอฟต์แวร์เสรี • ผู้ใช้มีสิทธิอย่างเสรีกับตัวซอฟต์แวร์ • - ใช้งาน • - ปรับปรุงแก้ไข • - พัฒนาต่อ • - ขาย • ปัจจุบันใช้งานอย่างแพร่หลาย

  3. คุณใช้ Open Source อยู่หรือเปล่า ? • Google ใช้ Linux เป็นระบบปฏิบัติการ • Hotmail ใช้ FreeBSD เป็นระบบปฏิบัติการ • 70% ของเว็บ ใช้ Apache เป็นเว็บเซิร์ฟเวอร์ • ADSL Router ใช้ Linux เป็นระบบปฏิบัติการ • โทรศัพท์มือถือของ Motorola ใช้ Linux เป็นระบบปฏิบัติการ • Yahoo! ใช้ MySQL เป็นระบบฐานข้อมูล

  4. ทำไมต้องสนใจ Open Source • “Innovation Happens Elsewhere” • ไม่ว่าองค์กรจะลงทุนด้านวิจัยแค่ไหน ปริมาณผลงานของเคน นอกองค์กรย่อมมีมากว่า • ทางออก : นำผลงานของคนนอกมาใช้งาน • วิธีการ : Open Source

  5. ประวัติของ 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 ออก

  6. รูปแบบการพัฒนาซอฟต์แวร์แบบ Open Source • ผู้สร้างเปิดเผยซอร์สโค้ด • ผู้สนใจมีสิทธิแก้ไขซอร์สโค้ด • ผู้สนใจมีสิทธิส่งส่วนที่แก้ไขมาให้ผู้สร้าง • ผู้สร้างมีสิทธิผนวกส่วนแก้ไข ไปกับโปรแกรมต้นฉบับ • ก่อให้เกิดชุมชนของผู้ใช้-ผู้พัฒนา

  7. ข้อดีของการพัฒนาแบบ Open Source • ผู้ใช้มีส่วนร่วมในการกำหนดทิศทางของโปรแกรม • ผู้สร้างมีโอกาสรับฟังความคิดเห็นของผู้ใช้โดยตรง • เพิ่มปริมาณผู้มีส่วนร่วม (contributor) ของโปรแกรม • ลดระยะเวลาในการออกโปรแกรมรุ่นใหม่ (release cycle) • ลดค่าใช้จ่ายในการพัฒนาโปรแกรม

  8. โครงการ Open Source ที่มีชื่อเสียง • ระบบปฏิบัติการ Linux, FreeBSD • เว็บเซิร์ฟเวอร์ Apache • ฐานข้อมูล MySQL, PostgreSQL • เว็บเบราว์เซอร์ Mozilla Firefox • อีเมล Mozilla Thunderbird • ชุดออฟฟิศ OpenOffice.org • โปรแกรมตกแต่งภาพ Gimp • ภาษาโปรแกรม PHP, Python, Perl

  9. การพัฒนาซอฟต์แวร์ด้วย Open Source • Platform • ส่วนที่รองรับการทำงานของซอฟต์แวร์ เช่น OS, server, library • Programming • ตัวโปรแกรมเอง, ภาษา, compiler, interpreter • Tools • เครื่องมือที่ช่วยให้การพัฒนาโปรแกรมสะดวกและมีประสิทธิภาพ • เช่น debugger, version control

  10. Platform : Normal Solutions ใช้ Open Source ลดค่าใช้จ่ายรวมของ Solution Applications 10,000 B Linux 0 B Windows 4,900 B ราคารวมของ Solution 10,000 B 14,900 B

  11. Platform : Web Solutions Applications Apache Web Server IIS MySQL Database Oracle OS Linux Windows

  12. Platform : ลดค่าใช้จ่ายรวม • ใช้ Open Source เพื่อลดค่าใช้จ่ายโดยรวมของ Solution • ผู้ซื้อ : ได้ Solution ในราคาที่ถูกลง • ผู้ขาย : มีโอกาสขายได้มากขึ้น • สามารถใช้ Open Source ร่วมกับซอฟต์แวร์อื่นได้ เช่น • - Windows + Apache + My SQL • - Linux + Oracle

  13. Programming • C/C++ • Java • .NET • PHP • Perl • Python

  14. Programming : C/C++ • C เป็นภาษาหลักในการพัฒนาโปรแกรมมายาวนาน • - ประสิทธิภาพสูง • - เหมาะกับงานเกี่ยวกับระบบ • C++ เป็น superset ของ C • - เพิ่มความสามารถด้าน Object-Oriented • - เขียน C++ แบบ C ได้ • - ปัจจุบันโปรแกรมขนาดใหญ่ส่วนมากเขียนด้วย C++

  15. 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

  16. Programming : C/C++ : GCC (2) • เขียนโปรแกรมภาษา C ชื่อ main.c • gcc main.c • - ได้ผลลัพธ์คือ a.out • - ทดสอบโปรแกรมโดยสั่ง ./a.out • gcc -o program main.c • - ได้ผลลัพธ์คือ program • - ทดสอบโปรแกรมโดยสั่ง ./program

  17. 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)

  18. KDevelop

  19. Programming : Java • สร้างโดย Sun Microsystems ปี 1990 • เป็น Object-Oriented • ใช้แนวคิดของ Virtual Machine • ทำงานได้ข้ามแพลตฟอร์ม • Java Runtime Environment แจกฟรีโดย Sun และมีครบคลุม • เกือบทุกแพลตฟอร์ม • Java Development Kit ชุดพัฒนาพื้นฐาน แจกฟรีโดย Sun • มี 3 edition : J2ME, J2SE, J2EE • เวอร์ชันล่าสุด : 5.0

  20. 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

  21. Programming : Java : Open Source Open Source implementations Library Compiler VM Java Class java.exe javac.exe Harmony GCJ GIJ, Kaffe

  22. Programming : Java : IDE • Eclipse (www.eclipse.org) • - IBM/Oracle • - เวอร์ชันล่าสุด : 3.1 • NetBeans (www.netbeans.org) • - Sun (Forte, Sun ONE Studio, Java Studio) • - เวอร์ชั่นล่าสุด : 4.1

  23. 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

  24. 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

  25. Programming : .NET : Diagram C# VB.NET compiler .NET Class (C#) CIL (Common Intermediate Language) .NET Class (VB.NET) CLR (Common Language Runtime) Binary Code

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

  27. Programming : .NET : Mono (2) .NET compiler .NET CLR .Mono compiler .Mono CLR Library Compiler VM .NET Library .NET Library Mono Library

  28. 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

  29. SharpDevelop

  30. Programming : PHP • เดิม : Personal Home Page • ปัจจุบัน : PHP Hypertext Processor • Scripting language, server side • เทียบได้กับ Microsoft ASP, Sun JSP • ได้รับความนิยมสูงมาก เช่น Pantip, phpBB, phpMyAdmin

  31. Programming : PHP : Solution • มักใช่ร่วมกับ Linux, Apache, MySQL • LAMP/LAMPS • - Linux, Apache, MySQL, PHP / SSL • - (อาจใช้ PostgreSQL แทน MySQL และ Perl/Python แทน PHP ได้) • สำหรับวินโดวส์แนะนำให้ใช้ AppServ (www.appserv.net)

  32. Programming : Perl • เป็น scripting Language • เหมาะสำหรับทำงานบน Unix shell • เขียนได้ง่าย แต่อ่านได้ยาก เพราะเป็นภาษาที่เน้นสัญลักษณ์ • แนะนำให้ใช้ PHP หรือ Python

  33. Programming : Python • เป็น scripting language • มีประสิทธิภาพสูง เขียนได้ง่าย • ทำงานได้ข้ามแพลทฟอร์ม • มี library สำคัญๆ ให้ครบ • กำลังได้รับความนิยมเพิ่มขึ้นเรื่อยๆ เช่น • - Google • - Red Hat • - BitTorrent

  34. 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”); }

  35. Programming : Others • ภาษาโปรแกรมมิ่งอื่นๆ ที่น่าสนใจ • - Ruby • - Boo • - Eiffel • - Objective-C

  36. Tools • Debugger • Packaging • Version Control • Bug Tracker • GUI Designer

  37. Tools : Debugger • GDB – GNU Debugger • - เป็น command line debugger • - ใช้คู่กับ GCC • - สนับสนุน C, C++, Fortran, Pascal, Obj-C • - ทำงานได้บน Unix และ Windows • - มี GUI เลือกใช้ได้หลายตัว เช่น DDD • สำหรับภาษาอื่นๆ สามารถใช้ debugger ของ IDE

  38. Tools : Packaging • ขั้นตอนการติดตั้งโปรแกรมบน Unix ใช้โปรแกรมเหล่านี้เข้าช่วย • - autoconfig • - autobuild • - make • วิธีการติดตั้งพื้นฐาน • - ./configure • - make • - make install

  39. Tools : Packaging (2) • นิยมรวมไฟล์เป็นก้อน แล้วบีบอัดแบบ tar.gz หรือ tarball เพื่อ • สะดวกในการดาวน์โหลด • การบีบไฟล์ • - tar cxvf filename.tar.gz file1 file2 file3 • การขยายไฟล์ • - tar xvfz filename.tar.gz • ไฟล์แบบ tar.gz เปิดได้ด้วยโปรแกรม ZIP ทั่วไป เช่น WinZIP, WinRAR

  40. Tools : Packaging (3) • ต่อมามีระบบแพกเกจที่ก้าวหน้าขึ้น สามารถติดตั้งได้อัตโนมัติ • Red Hat • - RPM – Red Hat Package Management • Debian • - DPKG – Debian Package

  41. Tools : Packaging (4) • ระบบ RPM และ DPKG มีปัญหาด้าน dependency • มีระบบแพกเกจอีกชั้นที่คอยแก้ปัญหา dependency • Red Hat • - YUM • Debian • - APT (Advance Package Tool)

  42. Tools : Version Control • Version Control • - จัดการเวอร์ชันของซอร์สโค้ด • - เก็บโค้ดไว้ที่เซิร์ฟเวอร์กลาง แล้วเรียกใช้เมื่อต้องการ • - สนับสนุนการทำงานร่วมกันเป็นทีม • - สามารถย้อนการแก้ไขกลับได้ • - ใช้งานอย่างจริงจังในการพัฒนาระดับอุตสาหกรรม

  43. Tools : Version Control (2) • CVS – Concurrent Versions System • - มีใน Unix เกือบทุกรุ่น • - มีข้อจำกัดหลายอย่าง เช่น ไม่สามารถเปลี่ยนชื่อไฟล์ได้ • - ยังใช้กันอย่างแพร่หลายในโครงการ Open Source สำคัญหลายแห่ง • SVN – Subversion • - ปรับปรุงจาก CVS แนวคิดใกล้เคียงกัน • - แนะนำให้เริ่มที่ SVN เลย

  44. Tools : Version Control (3) • คำสั่งพื้นฐานของ CVS/SVN • svn checkout • ดึงซอร์สส่วนที่ต้องการจากเซิร์ฟเวอร์มาที่เครื่อง • svn add • เพิ่มไฟล์ใหม่ในเครื่องไปยังเซิร์ฟเวอร์ • svn update • ปรับปรุงการเปลี่ยนแปลงล่าสุดกับเวอร์ชันของเซิร์ฟเวอร์ • svn commit • ยืนยันการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์ (สั่งหลัง add/update)

  45. Tools : Bug Tracker • ระบบจัดการบั๊กผ่านเว็บ • Bugzilla • ประสิทธิภาพสูง ใช้งานอย่างแพร่หลาย ติดตั้งยาก • IssueZilla • เป็น Bugzilla ที่โครงการ Open Office นำมาปรับแต่ง • Trac • ใช้งานและติดตั้งได้ง่าย ความสามารถครบ ออกแบบมาเพื่อการ • พัฒนาโปรแกรม

  46. 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

  47. Glade

  48. More information • Open Source at SIPA • http://www.thaiopensource.org • Open Source Software Project • http://www.sourceforge.net

More Related