LSD กำเนิดมาเพื่ออุตสาหกรรม

Lean Software Development (LSD)

          Lean Software Development เรียกย่อๆว่าLSD หรือภาษาไทยเรียกว่าการพัฒนาซอฟแวร์แบบลีน คือระบบกระบวนการผลิตที่เน้นการกำจัดความสิ้นเปลืองในการผลิต เพื่อให้การผลิตมีประสิทธิภาพสูงสุด การใช้ทรัพยากรเพื่อให้เกินประโยชน์สูงสุด เพื่อใช้ในงานอุตสาหกรรมเพื่อลดต้นทุนในการผลิตให้เหลือน้อยที่สุด

การพัฒนาซอฟแวร์แบบลีน ถูกคิดค้นและพัฒนาขึ้นโดย Toyota ในช่วงทศวรรษที่ 1980 ต่อมากลายเป็นที่ยอมรับอย่างกว้างขวาง การพัฒนาซอฟแวร์แบบลีน มี 7 หลักการสำคัญ และมี tools ในการปฏิบัติทั้งหมด 22 อย่าง

หลักการสำคัญทั้ง7อย่างของการพัฒนาซอฟแวร์แบบลีน คือ

1 : Eliminate waste กำจัดความสิ้นเปลือง00

2 : Amplify Learning หลักการเบื้องต้นที่นำพาสู่การ เรียนรู้ความต้องการลูกค้า

3 : Decide ad Late as Possible เป็นการคงตัวเลือก คงการตัดสินใจที่เด็ดขาดไว้

4 : Deliver as fast as possible ส่งมอบงานให้ลูกค้าอย่างรวดเร็ว

5 : Empower the Team องค์กรที่เติบโตแล้ว

6 : Build Integrity In สร้างความสมบูรณ์ของซอฟต์แวร์

7 : See the whole ถ้าเป็นระบบที่ซับซ้อนให้เริ่มจากการแบ่งส่วนของระบบให้เป็นระบบย่อยๆแล้วจัดการทีละส่วน

#1 : Eliminate waste

ความสิ้นเปลือง ได้แก่ สิ่งที่ไม่เพิ่มมูลค่าให้กับผลิตภัณฑ์, ฟังก์ชันที่ไม่จำเป็น, requirement ที่ไม่ชัดเจน, การสื่อสารหรือกระบวนการทำงานที่ช้า

Tool 1: Learn to see wastes (มองหาความสิ้นเปลือง) ได้แก่ งานเอกสาร และเอกสารเพิ่มเติม, ฟีเจอร์อื่นๆเพิ่มเติม, การรอข้อมูลที่จะนามาใช้ทางาน, การสับเปลี่ยนงานที่ทำอยู่, ข้อบกพร่องในซอฟต์แวร์

1

Tool 2: Learn to reduce waste(เรียนรู้ที่จะลดความสิ้นเปลือง) คือ การตัดกระบวนการด้านบริหารจัดการที่ไม่จำเป็นออก แล้วหันมาออกแบบกระบวนการทำงานให้มีประสิทธิภาพแทน

2

 

#2 :  Amplify Learning

พยายามมุ่งเน้นไปที่จุดประสงค์ของการใช้งานที่แท้จริง มากกว่ายึดตาม requirement และ การตอบรับจากลูกค้าในแต่ละรอบ เป็นสิ่งสำคัญ

Tool 3 : Feedback คือ ทำความเข้าใจในผลตอบรับ ความคิดเห็นของลูกค้า และนำไปวิเคราะห์แล้วกลับไปแก้งานอย่างรวดเร็ว ในระหว่างการพัฒนา และทดสอบระบบที่พัฒนาอย่างสม่ำเสมอ

Tool 4 : Iteration คือ วงจรของการพัฒนาซอฟแวร์  ซึ่งประกอบไปด้วยDesign > Programmed > Tested > Integrated > Delivered ซึ่งจะทำให้เรา ได้รับผลตอบรับจากลูกค้า และจัดการงานได้มีประสิทธิภาพมากขึ้น  โดยต้องมีความยืดหยุ่นในการทำงาน ทำให้พอใจกับทุกฝ่ายมากที่สุด และที่สำคัญคือการร่วมมือกันของคนในทีม

Tool 5 : Synchronization  คือการทำให้การพัฒนาส่วนใดๆ ที่มีผู้เกี่ยวข้องหลายๆคน สามารถเข้าใจจุดประสงค์ของงานที่ตรงกัน เพื่อกำจัดปัญหาความเข้าใจคลาดเคลื่อน ควรทำการ automated test เพื่อตรวจสอบปัญหาตั้งแต่ตอนที่มันเกิดขึ้น เพราะมันอาจทำให้เกิดปัญหาที่ใหญ่ขึ้นเรื่อยๆได้ และ ที่สำคัญคือ ช่วยในเรื่องความเข้าใจตรงกันของนักพัฒนา

Tool 6 : Set Base Development  คือการนำปัญหามาวิเคราะห์ แล้วพยายามคิดการแก้ปัญหาในหลายๆทาง แล้วอภิปรายถึงผลดีผลเสีย หลังจากนั้นทำการคำนึงถึงข้อจำกัดต่างๆในการพัฒนา แล้วเลือกวิธีการแก้ปัญหาที่ดีที่สุด

6

 

#3 : Decide ad Late as Possible

การคงตัวเลือก คงการตัดสินใจที่เด็ดขาดไว้เท่าที่จะทาได้ แต่อย่าปล่อยให้อะไรไม่ชัดเจนนานเกินไป และอย่าลงรายละเอียดเร็วเกินไป ควรมองภาพรวมก่อน แล้วค่อยลงรายละเอียดลึกๆ

Tool 7: Options Thinking  คือการสร้างรายละเอียดแผนงาน (Detailed plans) เพื่อการสร้างการตัดสินใจให้มั่นคง และการตัดสินใจของลูกค้ามักจะไม่มั่นคงควรเสนอตัวเลือกที่หลากหลาย เพื่อให้ลูกค้านำตัดสินใจ

Tool 8: The Last Responsible คือ ช่วงเวลาที่ใช้ในการตัดสินใจในการเลือกจัดการสิ่งที่สำคัญต่างๆ

Tool 9: Making Decisions ส่วนใหญ่การตัดสินใจโดยสังหรณ์ใจสำคัญกว่าการตัดสินใจแบบสมเหตุสมผล

Depth First Breath First
สร้างข้อตกลงร่วมกันตั้งแต่แรกๆ ทาให้ข้อตกลงร่วมกันล้าช้า
ตัดสินใจด้วยเหตุผล ตัดสินใจด้วยสัญชาตญาณ
ใช้การทานายและสมมติฐานเป็นหลักในการตัดสินใจ ใช้ข้อมูลทันสมัยและกระแสตอบรับในการตัดสินใจ

 

#4 : Deliver as fast as possible

ส่งมอบงานให้ลูกค้าอย่างรวดเร็วเพื่อให้ลดในการตัดสินใจจากลูกค้า และอาจเผยให้เห็นถึงข้อบกพร่องของงานที่กำลังทำอยู่ได้

Tool 10 : Pull Systems ทำให้สามารถคิดออกได้ว่าอะไรที่ต้องทำให้เสร็จ และกำหนดทิศทางในการดำเนินงาน ซึ่งงานที่มีความซับซ้อนสูงควรลดตัวอย่างของงานนั้นให้เหลือน้อยที่สุด

10

Tool 11 : Queueing Theory  หัวใจหลักก็คือ การลดเวลาของแต่ละ cycle หรือเวลาที่ใช้ในการดำเนินการตั้งแต่จบกระบวนการหนึ่งถึงอีกกระบวนการหนึ่ง ควรจัดลำดับความสำคัญในการทำ กำจัดความไม่แน่นอนในการดำเนินงานออก และส่งมอบงานอย่างสม่ำเสมอ

11

Tool 12 : Cost of Delay การทำงานแบบ Rapid development ช่วยให้ประหยัดเวลาและค่าใช้จ่าย และ สร้างแบบจาลองทางด้านเศรษฐกิจเพื่อช่วยในการตัดสินใจ

12

 

#5 : Empower the Team

องค์กรที่เติบโตแล้ว

สมมติฐาน 1 : องค์กรที่โตแล้วจะสนใจระบบทั้งหมดขององค์กร ไม่ได้มุ่งเน้นเป็นจุดย้อยๆในองค์กร

สมมติฐาน 2 : องค์กรที่โตแล้วจะมุ่งเน้นไปที่การเรียนรู้อย่างมีประสิทธิภาพ และการเพิ่มความสามารถของคนที่จะต้องตัดสินใจ

Tool 13 : Self-Determination (อำนาจการตัดสินใจอย่างอิสระ)  ไม่ควรนำวิธีการปฏิบัติของที่ๆหนึ่งไปใช้กับอีกที่ๆหนึ่ง และควรให้คนในกลุ่มทุกคนช่วยกันออกแบบขั้นตอนการทางานของกลุ่ม เพื่อให้เข้าใจพื้นฐานของงานที่ต้องทำ

Tool 14: Motivation (แรงจูงใจ)

  • ต้องสนใจจุดประสงค์ของงานมากกว่าสนใจตัวเอง
  •  จะต้องมีความชัดเจน
  •  จะต้องประสบความสำเร็จ
  •  ทำให้มันเป็นความมุ่งมั่นของตัวพวกเขาเอง
  •  หน้าที่ของฝ่ายบริหารคือ ให้การสนับสนุนทีมในเรื่องทรัพยากร คอยให้คำแนะนำลูกทีม
  • ต้องสร้างความเป็นอันหนึ่งอันเดียวกัน และพยายามอย่าให้ทีมหมดกำลังใจ
  • ความมีประสิทธิภาพ และความมีวินัย
  •  ความก้าวหน้า ต้องทำให้รู้ว่ามีอะไรบ้างที่สำเร็จไปบ้างแล้ว

Tool 15: Leadership (ความเป็นผู้นำ) จัดการกับความซับซ้อน และจัดการกับการเปลี่ยนแปลง

Managers Leaders
จัดการกับความซับซ้อน

– วางแผนและดูแลเรื่องงบประมาณ

– จัดระเบียบการทางานและบุคลากร

– ติดตามและควบคุมการทางาน

จัดการกับการเปลี่ยนแปลง

– กำหนดทิศทางของงาน

– จัดคน

– ช่วยให้เกิดแรงจูงใจ

Tool 16 : Expertise (ความชำนาญ) ให้ทีมได้มีโอกาสมีส่วนร่วมกับกลุ่มคนที่มีความเชี่ยวชาญในด้านต่างๆ และส่งเสริมให้เกิดการพัฒนาตัวเองของคนในทีม

 

#6 : Build Integrity In

การสร้างความสมบูรณ์ของซอฟต์แวร์

Tool 17: Perceived Integrity  ความสมบูรณ์ที่ลูกค้ารับรู้ได้

Tool 18: Conceptual Integrity  ความสมบูรณ์ของระบบภายใน

Tool 19: Refactoring  บางครั้งระบบที่มีความซับซ้อน และเราพบวิธีแก้ปัญหาที่ดีกว่า จึงต้องมีการแก้ไขโครงสร้างระบบ

19

Tool 20: Testing  ต้องมีการทดสอบระบบเพื่อให้แน่ใจว่า ระบบมีการทำงาน ตามที่เราต้องการจริงๆ

20

 

#7 : See the whole

ถ้าเป็นระบบที่ซับซ้อนให้เริ่มจากการแบ่งส่วนของระบบให้เป็นระบบย่อยๆแล้วจัดการทีละส่วนก่อน และวัดความสามารถแต่ละส่วนทาให้ลดประสิทธิภาพทั้งระบบ

Tool 21: With measurement การที่เรา optimize ทุกๆ ส่วนเป็นวิธีที่ไม่สมควร เราควร optimize ส่วนที่สำคัญมากๆ ซึ่งเราควรจะแยกแยะออกให้ได้ว่าส่วนไหนเป็นส่วนสำคัญที่เราจะ optimize ส่วนที่สำคัญส่วนใหญ่จะเป็นส่วนของ business logic จะวัดส่วนที่สำคัญได้จาก argregation

Tool 22: Contract ปัจจัยที่ต้องคำนึงเวลาจัดการบริหารงาน คือ time, cost, quality และ scope

เครดิต : http://cf.agilealliance.org/articles/system/article/file/1422/file.pdf

หนังสือ :  Lean Software Development

ee

  •  
  •  
  •  
  •  
  •  
  •  
Kongkiat Khrueangphanat
at GlurGeek.Com
ชื่อนายก้องเกียรติ เครื่องพนัส ชั้นปี4 คณะวิศวกรรมศาสตร์ ภาคคอมพิวเตอร์ มหาวิทยาลัยกรุงเทพ

Leave a Reply