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




              อิสริยะ ไพรีพ่ายฤทธิ์
             isriya_pa@sipa.or...
Open Source คืออะไร?
    ซอฟต์แวร์เสรี
●


    ผู้ใช้มีสิทธิอย่างเสรีกับตัวซอฟต์แวร์
●

     – ใช้งาน
     – ปรับปรุงแก้ไข...
คุณใช้ Open Source อยู่หรือเปล่า?
    Google ใช้ Linux เป็นระบบปฏิบัติการ
●


    Hotmail ใช้ FreeBSD เป็นระบบปฏิบัติการ
●...
ทำาไมต้องสนใจ Open Source

    “Innovation Happens Elsewhere”
●

    ไม่ว่าองค์กรจะลงทุนด้านวิจัยแค่ไหน ปริมาณผลงานของคน
●...
ประวัติของ Open Source
    1983 : Richard Stallman ประกาศคำาว่า Free Software
●


    1991 : Linus Torvalds เริ่มทำา Linux...
รูปแบบการพัฒนาซอฟต์แวร์แบบ
                      Open Source
    ผู้สร้างเปิดเผยซอร์สโค้ด
●


    ผู้สนใจมีสทธิแก้ไขซอร์สโ...
ข้อดีของการพัฒนาแบบ Open Source
    ผู้ใช้มีสวนร่วมในการกำาหนดทิศทางของโปรแกรม
             ่
●


    ผู้สร้างมีโอกาสรับฟั...
โครงการ Open Source ที่มีชอเสียง
                                ื่
    ระบบปฏิบัติการ Linux, FreeBSD
●


    เว็บเซิร์ฟเว...
การพัฒนาซอฟต์แวร์ด้วย Open Source
    Platform
●


    ส่วนที่รองรับการทำางานของซอฟต์แวร์ เช่น OS, server, library
    Pro...
Platform : Normal Solutions
ใช้ Open Source ลดค่าใช้จายรวมของ Solution
                         ่

                      A...
Platform : Web Solutions

                        Applications

Web Server     Apache                    IIS

            ...
Platform : ลดค่าใช้จ่ายรวม
    ใช้ Open Source เพือลดค่าใช้จ่ายโดยรวมของ Solution
                          ่
●


    ผู้ซ...
Programming
  C/C++
●

● Java

● .NET

● PHP

● Perl

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

     – ประสิทธิภาพสูง
     – เหมาะกับงานเกี่ยวกับระบบ
 ...
Programming : C/C++ : GCC
    GCC (GNU Compiler Collection)
●


    เป็น compiler มาตรฐานในการทำา benchmark
●


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


    gcc main.c
●

     – ได้ผลลัพธ์คือ a.out
     – ท...
Programming : C/C++ : Editor
    Text editor : vi, notepad, editplus, ultraedit
●


    IDE (Integrated Development Enviro...
KDevelop
Programming : Java
    สร้างโดย Sun Microsystems ปี 1990
●


    เป็น Object-Oriented
●


    ใช้แนวคิดของ Virtual Machine...
Programming : Java : Diagram
                             Java Code
                               (.java)
Java Developmen...
Programming : Java : Open Source
                          Open Source
                        implementations
 Library   ...
Programming : Java : IDE
    Eclipse (www.eclipse.org)
●


     – IBM/Oracle
     – เวอร์ชนล่าสุด : 3.1
             ั
   ...
Programming : Java : Other
    JBoss (www.jboss.org)
●

     – Open Source J2EE application server
    Jakarta Project (ja...
Programming : .NET
    Microsoft เขียนตาม Java
●


    Multi-Platform (ในทางทฤษฎี)
●


    Multi-Language
●

     – C#, VB...
Programming : .NET : Diagram

             C#                     VB.NET
                      compiler

.NET Class       ...
Programming : .NET : Mono
    Mono (www.mono-project.com)
●


    เป็นการสร้าง .NET Framework แบบ Open Source
●


    บริษ...
Programming : .NET : Mono (2)



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

     – Microsoft .NET
     – Windows
    ...
SharpDevelop
Programming : PHP
    เดิม : Personal Home Page
●


    ปัจจุบัน : PHP Hypertext Processor
●


    scripting language, ser...
Programming : PHP : Solution
    มักใช้ร่วมกับ Linux, Apache, MySQL
●


    LAMP/LAMPS
●


     – Linux, Apache, MySQL, PH...
Programming : Perl
    เป็น scripting language
●


    เหมาะสำาหรับทำางานบน Unix shell
●


    เขียนได้งาย แต่อ่านได้ยาก เ...
Programming : Python
    เป็น scripting language
●


    มีประสิทธิภาพสูง เขียนได้ง่าย
●


    ทำางานได้ขามแพลทฟอร์ม
     ...
Programming : Python : Example
       Python                         C
if (a > b):              int a;
  print “A is great...
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++,...
Tools : Packaging
    ขันตอนการติดตั้งโปรแกรมบน Unix ใช้โปรแกรมเหล่านี้เข้าช่วย
      ้
●

     – autoconfig
     – autobu...
Tools : Packaging (2)
    นิยมรวมไฟล์เป็นก้อน แล้วบีบอัดแบบ tar.gz หรือ tarball เพือ
                                     ...
Tools : Packaging (3)
    ต่อมามีระบบแพกเกจที่ก้าวหน้าขึน สามารถติดตั้งได้อัตโนมัติ
                                  ้
●
...
Tools : Packaging (4)
    ระบบ RPM และ DPKG มีปญหาด้าน dependency
                             ั
●


    มีระบบแพกเกจอีกชั...
Tools : Version Control
    Version Control
●

    – จัดการเวอร์ชันของซอร์สโค้ด
    – เก็บโค้ดไว้ที่เซิรฟเวอร์กลาง แล้วเรี...
Tools : Version Control (2)
    CVS – Concurrent Versions System
●


     – มีใน Unix เกือบทุกรุน
                        ...
Tools : Version Control (3)
    คำาสั่งพื้นฐานของ CVS/SVN
●


    svn checkout
●


    ดึงซอร์สส่วนที่ต้องการจากเซิรฟเวอร์...
Tools : Bug Tracker
    ระบบจัดการบั๊กผ่านเว็บ
●


    Bugzilla
●


    ประสิทธิภาพสูง ใช้งานอย่างแพร่หลาย ติดตั้งยาก
    ...
Tools : GUI Designer
    Glade (http://glade.gnome.org/)
●

     – เป็น user interface designer
     – Export เป็น XML
   ...
Glade
More information
    Open Source at SIPA
●


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


    ht...
Upcoming SlideShare
Loading in …5
×

How to use Open Source in Software Development

8,298 views

Published on

How to use Open Source technology for software development industry.

The language is Thai

Published in: Business
2 Comments
2 Likes
Statistics
Notes
No Downloads
Views
Total views
8,298
On SlideShare
0
From Embeds
0
Number of Embeds
46
Actions
Shares
0
Downloads
259
Comments
2
Likes
2
Embeds 0
No embeds

No notes for slide

How to use Open Source in Software Development

  1. 1. การใช้เทคโนโลยี Open Source ในการพัฒนาซอฟต์แวร์ อิสริยะ ไพรีพ่ายฤทธิ์ isriya_pa@sipa.or.th สำานักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ (องค์การมหาชน) © 2005 อนุญาตให้เผยแพร่เอกสารนีต่อด้วยสัญญาอนุญาตแบบ Creative Commons Attribution License ้
  2. 2. Open Source คืออะไร? ซอฟต์แวร์เสรี ● ผู้ใช้มีสิทธิอย่างเสรีกับตัวซอฟต์แวร์ ● – ใช้งาน – ปรับปรุงแก้ไข – พัฒนาต่อ – ขาย ปัจจุบันใช้งานอย่างแพร่หลาย ●
  3. 3. คุณใช้ Open Source อยู่หรือเปล่า? Google ใช้ Linux เป็นระบบปฏิบัติการ ● Hotmail ใช้ FreeBSD เป็นระบบปฏิบัติการ ● 70% ของเว็บ ใช้ Apache เป็นเว็บเซิร์ฟเวอร์ ● ADSL Router ใช้ Linux เป็นระบบปฏิบัติการ ● โทรศัพท์มือถือของ Motorola ใช้ Linux เป็นระบบปฎิบัติการ ● Yahoo! ใช้ MySQL เป็นระบบฐานข้อมูล ●
  4. 4. ทำาไมต้องสนใจ Open Source “Innovation Happens Elsewhere” ● ไม่ว่าองค์กรจะลงทุนด้านวิจัยแค่ไหน ปริมาณผลงานของคน ● นอกองค์กรย่อมมีมากกว่า ทางออก : นำาผลงานของคนนอกมาใช้งาน ● วิธการ : Open Source ี ●
  5. 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. 6. รูปแบบการพัฒนาซอฟต์แวร์แบบ Open Source ผู้สร้างเปิดเผยซอร์สโค้ด ● ผู้สนใจมีสทธิแก้ไขซอร์สโค้ด ิ ● ผู้สนใจมีสทธิสงส่วนที่แก้ไขมาให้ผู้สร้าง ิ่ ● ผู้สร้างมีสิทธิผนวกส่วนแก้ไขไปกับโปรแกรมต้นฉบับ ● ก่อให้เกิดชุมชนของผูใช้-ผู้พัฒนา ้ ●
  7. 7. ข้อดีของการพัฒนาแบบ Open Source ผู้ใช้มีสวนร่วมในการกำาหนดทิศทางของโปรแกรม ่ ● ผู้สร้างมีโอกาสรับฟังความคิดเห็นของผู้ใช้โดยตรง ● เพิมปริมาณผู้มีส่วนร่วม (contributor) ของโปรแกรม ่ ● ลดระยะเวลาในการออกโปรแกรมรุ่นใหม่ (release cycle) ● ลดค่าใช้จ่ายในการพัฒนาโปรแกรม ●
  8. 8. โครงการ Open Source ที่มีชอเสียง ื่ ระบบปฏิบัติการ Linux, FreeBSD ● เว็บเซิร์ฟเวอร์ Apache ● ฐานข้อมูล MySQL, PostgreSQL ● เว็บเบราว์เซอร์ Mozilla Firefox ● อีเมล Mozilla Thunderbird ● ชุดออฟฟิศ OpenOffice.org ● โปรแกรมตกแต่งภาพ Gimp ● ภาษาโปรแกรม PHP, Python, Perl ●
  9. 9. การพัฒนาซอฟต์แวร์ด้วย Open Source Platform ● ส่วนที่รองรับการทำางานของซอฟต์แวร์ เช่น OS, server, library Programming ● ตัวโปรแกรมเอง, ภาษา, compiler, interpreter Tools ● เครื่องมือที่ชวยให้การพัฒนาโปรแกรมสะดวกและมีประสิทธิภาพ ่ เช่น debugger, version control
  10. 10. Platform : Normal Solutions ใช้ Open Source ลดค่าใช้จายรวมของ Solution ่ Applications 10,000 B Linux Windows 0B 4,900 B ราคารวมของ Solution 10,000 B 14,900 B
  11. 11. Platform : Web Solutions Applications Web Server Apache IIS MySQL Oracle Database OS Linux Windows
  12. 12. Platform : ลดค่าใช้จ่ายรวม ใช้ Open Source เพือลดค่าใช้จ่ายโดยรวมของ Solution ่ ● ผู้ซอ : ได้ Solution ในราคาที่ถูกลง ื้ ● ผู้ขาย : มีโอกาสขายได้มากขึน้ ● สามารถใช้ Open Source ร่วมกับซอฟต์แวร์อนได้ เช่น ื่ ● – Windows + Apache + MySQL – Linux + Oracle
  13. 13. Programming C/C++ ● ● Java ● .NET ● PHP ● Perl ● Python
  14. 14. Programming : C/C++ C เป็นภาษาหลักในการพัฒนาโปรแกรมมายาวนาน ● – ประสิทธิภาพสูง – เหมาะกับงานเกี่ยวกับระบบ C++ เป็น superset ของ C ● – เพิมความสามารถด้าน Object-Oriented ่ – เขียน C++ แบบ C ได้ – ปัจจุบันโปรแกรมขนาดใหญ่ส่วนมากเขียนด้วย C++
  15. 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. 16. Programming : C/C++ : GCC (2) เขียนโปรแกรมภาษา C ชื่อ main.c ● gcc main.c ● – ได้ผลลัพธ์คือ a.out – ทดสอบโปรแกรมโดยสั่ง ./a.out gcc -o program main.c ● – ได้ผลลัพธ์คือ program – ทดสอบโปรแกรมโดยสั่ง ./program
  17. 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. 18. KDevelop
  19. 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. 20. Programming : Java : Diagram Java Code (.java) Java Development Kit (JDK) Java Compiler (javac.exe) Byte Code Java Class (.class) Java Virtual Machine (java.exe) Java Runtime Environment (JRE) Binary Code
  21. 21. Programming : Java : Open Source Open Source implementations Library Java Class Harmony Compiler java.exe GCJ VM javac.exe GIJ, Kaffe
  22. 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. 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. 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. 25. Programming : .NET : Diagram C# VB.NET compiler .NET Class .NET Class CIL (C#) (VB.NET) (Common Intermediate Language) CLR (Common Language Runtime) Binary Code
  26. 26. Programming : .NET : Mono Mono (www.mono-project.com) ● เป็นการสร้าง .NET Framework แบบ Open Source ● บริษัท Ximian (ปัจจุบันเป็นของ Novell) ● ส่งเสริมให้ .NET สามารถรันข้ามแพลทฟอร์มได้อย่างแท้จริง ● มีโอกาสเกิดปัญหาด้านกฎหมายในอนาคต ● รวมอยูใน : SuSE, Ubuntu, Debian ่ ● ไม่รวมอยู่ใน : Red Hat, Fedora ●
  27. 27. Programming : .NET : Mono (2) Library .NET Library .NET Library Mono Library Compiler .NET compiler Mono compiler VM .NET CLR Mono CLR
  28. 28. 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
  29. 29. SharpDevelop
  30. 30. Programming : PHP เดิม : Personal Home Page ● ปัจจุบัน : PHP Hypertext Processor ● scripting language, server side ● เทียบได้กับ Microsoft ASP, Sun JSP ● ได้รับความนิยมสูงมาก เช่น Pantip, phpBB, phpMyAdmin ●
  31. 31. Programming : PHP : Solution มักใช้ร่วมกับ Linux, Apache, MySQL ● LAMP/LAMPS ● – Linux, Apache, MySQL, PHP / SSL – (อาจใช้ PostgreSQL แทน MySQL และ Perl/Python แทน PHP ได้) สำาหรับวินโดวส์แนะนำาให้ใช้ AppServ (www.appserv.net) ●
  32. 32. Programming : Perl เป็น scripting language ● เหมาะสำาหรับทำางานบน Unix shell ● เขียนได้งาย แต่อ่านได้ยาก เพราะเป็นภาษาที่เน้นสัญลักษณ์ ่ ● แนะนำาให้ใช้ PHP หรือ Python ●
  33. 33. Programming : Python เป็น scripting language ● มีประสิทธิภาพสูง เขียนได้ง่าย ● ทำางานได้ขามแพลทฟอร์ม ้ ● มี library สำาคัญๆ ให้ครบ ● กำาลังได้รบความนิยมเพิมขึ้นเรื่อยๆ เช่น ั ่ ● – Google – Red Hat – BitTorrent
  34. 34. Programming : Python : Example Python C if (a > b): int a; print “A is greater” int b; else: if (a>b) { print “B is greater” printf(“A is greater”); } else { printf(“B is greater”); }
  35. 35. Programming : Others ภาษาโปรแกรมมิ่งอื่นๆ ที่น่าสนใจ ● – Ruby – Boo – Eiffel – Objective-C
  36. 36. Tools Debugger ● Packaging ● Version Control ● Bug Tracker ● GUI Designer ●
  37. 37. Tools : Debugger GDB – GNU Debugger ● – เป็น command line debugger – ใช้คู่กับ GCC – สนับสนุน C, C++, Fortran, Pascal, Obj-C – ทำางานได้บน Unix และ Windows – มี GUI เลือกใช้ได้หลายตัว เช่น DDD สำาหรับภาษาอื่นๆ สามารถใช้ debugger ของ IDE ●
  38. 38. Tools : Packaging ขันตอนการติดตั้งโปรแกรมบน Unix ใช้โปรแกรมเหล่านี้เข้าช่วย ้ ● – autoconfig – autobuild – make วิธการติดตั้งพื้นฐาน ี ● – ./configure – make – make install
  39. 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. 40. Tools : Packaging (3) ต่อมามีระบบแพกเกจที่ก้าวหน้าขึน สามารถติดตั้งได้อัตโนมัติ ้ ● Red Hat ● – RPM – Red Hat Package Management Debian ● – DPKG – Debian Package
  41. 41. Tools : Packaging (4) ระบบ RPM และ DPKG มีปญหาด้าน dependency ั ● มีระบบแพกเกจอีกชั้นที่คอยแก้ปญหา dependency ั ● Red Hat ● – YUM Debian ● – APT (Advance Package Tool)
  42. 42. Tools : Version Control Version Control ● – จัดการเวอร์ชันของซอร์สโค้ด – เก็บโค้ดไว้ที่เซิรฟเวอร์กลาง แล้วเรียกใช้เมื่อต้องการ ์ – สนับสนุนการทำางานร่วมกันเป็นทีม – สามารถย้อนการแก้ไขกลับได้ – ใช้งานอย่างจริงจังในการพัฒนาระดับอุตสาหกรรม
  43. 43. Tools : Version Control (2) CVS – Concurrent Versions System ● – มีใน Unix เกือบทุกรุน ่ – มีขอจำากัดหลายอย่าง เช่น ไม่สามารถเปลียนชื่อไฟล์ได้ ้ ่ – ยังใช้กันอย่างแพร่หลายในโครงการ Open Source สำาคัญ หลายแห่ง SVN – Subversion ● – ปรับปรุงจาก CVS แนวคิดใกล้เคียงกัน – แนะนำาให้เริมที่ SVN เลย ่
  44. 44. Tools : Version Control (3) คำาสั่งพื้นฐานของ CVS/SVN ● svn checkout ● ดึงซอร์สส่วนที่ต้องการจากเซิรฟเวอร์มาที่เครื่อง ์ svn add ● เพิมไฟล์ใหม่ในเครื่องไปยังเซิร์ฟเวอร์ ่ svn update ● ปรับปรุงการเปลียนแปลงล่าสุดกับเวอร์ชันของเซิรฟเวอร์ ่ ์ svn commit ● ยืนยันการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์ (สั่งหลัง add/update)
  45. 45. Tools : Bug Tracker ระบบจัดการบั๊กผ่านเว็บ ● Bugzilla ● ประสิทธิภาพสูง ใช้งานอย่างแพร่หลาย ติดตั้งยาก IssueZilla ● เป็น Bugzilla ที่โครงการ OpenOffice นำามาปรับแต่ง Trac ● ใช้งานและติดตั้งได้งาย ความสามารถครบ ออกแบบมาเพื่อการ ่ พัฒนาโปรแกรม
  46. 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. 47. Glade
  48. 48. More information Open Source at SIPA ● http://www.thaiopensource.org Open Source Software Project ● http://www.sourceforge.net

×