วิวัฒนาการของการพัฒนาแอปพลิเคชัน อาจารย์สมเกียรติ ช่อเหมือน สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี (tko@webmail.npru.ac.th)
หัวข้อที่สนใจ บทนำ แบบจำลองกระบวนการพัฒนาแอปพลิเคชัน ความสำคัญของการพัฒนาแอปพลิเคชัน สรุปท้ายบท
บทนำ ก่อนการพัฒนาแอปพลิเคชัน การวิเคราะห์ข้อกำหนดความต้องการและทำความเข้าใจระบบขององค์กร การจัดสรรเวลาและทรัพยากร ในการพัฒนาข้อเสนอโครงการของทีม สัมภาษณ์คนในองค์กรและรวบรวมข้อมูลโดยใช้แบบสอบถามและรายงาน ความคล้ายคลึงกันของกระบวนการพัฒนาแอปพลิเคชัน SDLC และ OOAD มีการวางแผนและการสร้างแผนภาพ Agile และ OOAD มีการสร้างระบบย่อย Agile และ SDLC มีการจัดการแบบเรียงลำดับขั้นตอน
Rapid Application Development (RAD) แบบจำลองกระบวนการพัฒนาแอปพลิเคชันอย่างเร่งรัด https://www.wavemaker.com/rapid-application-development-vs-traditional-sdlc/
Object-Oriented Analysis and Design (OOAD) แบบจำลองการวิเคราะห์และออกแบบเชิงวัตถุ http://www.w3computing.com/systemsanalysis/object-oriented-systems-analysis-design/
Agile and Scrum แนวคิดการทำงานของบริษัทยุคใหม่ Project Management เน้นผู้จัดการและวางแผนก่อนเริ่มโปรเจกต์
แนวคิดสำคัญของเอจาย (Agile) ไม่เน้นกระบวนการและเอกสาร ยอมรับความเปลี่ยนแปลง ทำทีละนิดแต่ทำบ่อยๆ ผิดพลาดให้เร็ว ทำงานเป็นทีมมากกว่าที่จะสนใจกระบวนการ ‘Agile’ มักจะมาคู่กับกรอบการทำงานแบบ ‘Scrum’ เน้นการจัดการงานที่ตนเองรับผิดชอบ และสื่อสารในทีม
ทีมการทำงานแบบสกรัม (Scrum) Product Owner : มีหน้าที่ประเมินค่า (Values) และจัดความสำคัญ (Priorities) ของงานต่างๆ ให้กับทีม Scrum Master : เป็นผู้ทำให้การทำงานเป็นไปอย่างราบลื่น ไม่ได้หมายถึงการเป็นผู้นำทีม ช่วยแก้ปัญหาและทำให้ทีมบรรลุเป้าหมาย Team : จะทำงานแบบจัดการตัวเอง (Self-Management) ทีมจะประกอบด้วย 3-9 คน และทุกตำแหน่งเป็น Designer, Programmer, UI/UX, Testing เข้าด้วยกัน เพื่อให้ทีมสามารถทำงานตั้งแต่ต้นจนจบได้ด้วยตัวเอง โดยไม่ต้องข้ามแผนก
ขั้นตอนการทำงานของ Scrum Backlog : เป็นส่วนงานที่ต้องทำ ข้อกำหนดความต้องการของลูกค้าและทีม Product Owner เลือกงานที่จะทำ Sprint Sprint Phase : เน้นการส่งงานให้เร็ว รอบของ Sprint (2-4 สัปดาห์) Sprint -> Deliver (งานที่ประเมินไว้) -> ประเมินผลงาน (ผู้ใช้, ลูกค้า) Daily Scrum Meeting : ประชุม 10-15 นาที เพื่อบอกสิ่งที่ทำ https://www.scrumalliance.org/why-scrum
วิวัฒนาการของการพัฒนาแอปพลิเคชัน โปรแกรมเชื่อมต่อเครือข่าย (Network connected programs) เว็บแอปพลิเคชัน (Web Applications) เว็บเซอร์วิส (Services) ส่วนประสานในการเขียนโปรแกรม (API) บริการย่อย (Micro services) http://www.macstroke.com/15488/apps-no-longer-differentiator-in-ios-vs-android-war-services-next-battleground
ทำไมต้องมีกระบวนการพัฒนาซอฟต์แวร์ ใช้กับเครื่องเดียว ใช้กับทุกเครื่อง https://www.youtube.com/watch?v=BXbezSxCn20 https://www.leaderwings.co/business/note-udom/
โปรแกรมแบบสแตนด์อโลน โปรแกรมที่สามารถทำงานได้โดยลำพังบนเครื่องเดียว ปัญหาของการทำงานเครื่องเดียว การจัดการรวมเข้าไว้ด้วยกัน การปรับขนาดโปรแกรม การจัดการทรัพยากรอย่างมีประสิทธิภาพ ทุกอย่างที่ต้องการจะเขียนตั้งแต่เริ่มต้นใหม่ทุกครั้ง ไม่มีการเชื่อมต่อแม่ข่าย ไม่มีการกำหนดมาตรฐาน https://twitter.com/ukstandalone
ซอฟต์แวร์ ผลิตภัณฑ์ที่นำไปใช้ประมวลผลข้อมูลคอมพิวเตอร์ http://daxushequ.com/applications.html https://bus206.pressbooks.com/chapter/chapter-3-information-systems-software/ https://play.google.com/store/search?q=thai&c=apps&price=2
แอปพลิเคชันแบบแม่ข่ายและลูกข่าย Brown, A. W. (2000). Component-Based Development.
การแยกระบบแบบกระจายเป็นชั้น Distributed Systems N-Tier Brown, A. W. (2000). Component-Based Development.
การให้บริการผ่านเครือข่าย แบ่งตามหน้าที่ แบ่งเป็นฟังก์ชัน Brown, A. W. (2000). Component-Based Development.
ฟังก์ชันการทำงานทั่วไป • https://pirun.ku.ac.th/~b521090026/webpage/ ส่วนประกอบในร่างกาย.html
ฟังก์ชันการทำงานทั่วไป (ต่อ) • รายละเอียดของการสร้างฐานข้อมูล (Generate database schema) • การออกแบบส่วนติดต่อผู้ใช้ (User interface design) •การเพิ่มประสิทธิภาพฐานข้อมูล (Database optimization) • การกระจายและถ่ายโอนข้อมูล (Data distribution and replication) • ตัวแทนในการเข้าถึงแม่ข่าย (Provide remote access to server) • การเข้าถึงและติดต่อใช้งาน (Generate browser-aware interfaces) • การเข้าถึงส่วนต่อประสาน (Remote component integration)
ตัวอย่างแบบจำลองแนวคิดทางธุรกิจ http://searchbusinessanalytics.techtarget.com/feature/Understanding-BI-analytics-tools-and-their-benefits
โมบายแอปพลิเคชันที่รองรับการดำเนินธุรกิจ https://www.marutitech.com/7-trends-of-mobile-application-development/
การพัฒนาโมบายแอปพลิเคชัน 1. Cross Platform Apps 2. IoT (Internet of Things) Applications 3. Cloud Computing Apps 4. Enterprise Applications 5. Wearable Devices 6. Location Based Services (LBS) 7. Mobile Security Apps http://pinngle.me/blog/pinngle/the-future-of-mobile-application-development-7-trends
สถาปัตยกรรมซอฟต์แวร์แบบกระจายชิ้นส่วน สถาปัตยกรรมซอฟต์แวร์แบบกระจายที่มีขนาดใหญ่ ตัวอย่างการแยกชิ้นส่วนของ Java Enterprise System Architectures “ชิ้นส่วนของซอฟต์แวร์ ที่มีความอิสระ เชื่อมโยงกันเป็นระบบเดียวกัน” https://docs.oracle.com/cd/E19396-01/819-0061/architecture.html
การสร้างแบบจำลองชิ้นส่วนที่ใช้ซ้ำได้ https://alistapart.com/article/content-modelling-a-master-skill https://www.lucidchart.com/pages/database-diagram/database-models
รูปแบบใหม่สำหรับพัฒนาแอปพลิเคชัน มีจุดเริ่มต้นหลายจุด (Multiple entry points) ปรับเปลี่ยนขนาดของงาน (Scalability to different size tasks) เอกสารในการตัดสินใจด้านวิศวกรรม กำหนดรายละเอียดและวิเคราะห์อินเทอร์เฟซของคอมโพเนนต์ http://idratherbewriting.com/2011/05/13/examples-of-help-systems-that-provide-users-with-multiple-entry-points/
กิจกรรมตามแนวคิดการนำกลับมาใช้ใหม่ Brown, A. W. (2000). Component-Based Development.
ความกังวนในการจำหน่ายแอปพลิเคชัน การแข่งขันกับบริษัทขนาดเล็ก และเครื่องมือที่นำมาใช้ แฟลตฟอร์มและการใช้โค้ดเดิม ความคิดใหม่ ๆ ในการสร้าง https://www.codebee.co.th/labs/ราคาทำแอพ-เรทราคาแอพ/ /
ตัวอย่างการจำลองส่วนประกอบระบบ
สรุปท้ายบท การพัฒนาแอปพลิเคชันจากอดีตไปสู่อนาคต โดยมีแนวคิดในการทำงานแบบใหม่ เช่น Agile การนำสถาปัตยกรรมซอฟต์แวร์แบบกระจายมาใช้ในการพัฒนา การนำชิ้นส่วนของซอฟต์แวร์กลับมาใช้และง่ายต่อการพัฒนา รูปแบบการพัฒนาและกิจกรรมที่สนับสนุนการนำกลับมาใช้ใหม่ เกิดจากความกังวลในการจำหน่ายและการสร้างรายได้