MSITBlog

2 minutes reading time (384 words)

Verify Processes, Validate Results

a

วันนี้ผมจะเล่าเรื่องการทวนสอบกระบวนการ (Verify processes) และยืนยันผลลัพธ์ (Validate results) ของระบบใหม่ที่ติดตั้งเสร็จเรียบร้อยแล้วให้ฟังนะครับ

เมื่อฮาร์ดแวร์ของระบบ IT ติดตั้งทั้งหมดแล้ว ทีมซอฟต์แวร์ก็ทำการติดตั้งซอฟต์แวร์ต่าง ๆ ลงไปในระบบใหม่ แล้วก็ให้ระบบเก่าและใหม่ทำงานขนานกันไปสักพักหนึ่ง เพื่อดูว่า การประมวลผลของระบบใหม่นั้นเป็นเหมือนกับระบบเก่าหรือไม่

การมองแบบนี้ ก็จะเอาระบบเก่าเป็นตัวตั้ง แล้วเอาระบบใหม่เข้าเทียบ โดยตั้งสมมติฐานว่าระบบเก่านั้นถูกต้องอยู่แล้ว เพราะอยู่กับเรามานาน เราใช้มันมาก็ไม่ได้มีปัญหาอะไร (จริง ๆ แล้ว ระบบเก่ามันอาจจะผิดมาตั้งนานแล้วก็ได้ แต่เราค่อยมาว่ากันทีหลัง ตอนที่เราเห็นความแตกต่าง)

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

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

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

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

พอมันเหมือนกันแล้ว เราก็มาดูจุดที่เราแก้ไขที่เราบันทึกเอาไว้ ซึ่งเป็นไปได้สองกรณีคือ ระบบใหม่ทำงานผิดพลาดจริง ๆ หรือ ระบบใหม่ที่ออกแบบไว้นั้นไม่ผิดพลาดหรอก แต่ระบบเก่าที่ใช้มานานนั้นผิดพลาดมาตั้งแต่ต้น (โดยที่เราไม่รู้ เพราะมันไม่ก่อให้เกิดความเสียหายจนเรารับรู้ได้)

ผมใช้คำว่า ระบบทำงานผิดพลาดก็เพื่อสื่อความหมายให้เข้าใจกันเท่านั้น ผมไม่ได้ไปโยนความผิดให้ตัว ระบบนะครับ เพราะเราคือผู้ที่ออกแบบมันขึ้นมา ระบบมันก็ทำงานตามที่เราออกแบบนี่แหละ ถ้าเราออกแบบผิด มันก็ทำงานไปตามที่เราออกแบบผิด ๆ นี่แหละ มันซื่อสัตย์จะตายไป …  ถ้าเราออกแบบเอาไว้อย่างหนึ่ง แล้วระบบมันดันผ่าไปทำงานอีกแบบหนึ่ง โดยไม่ทำตามคำสั่งเรา อย่างนี้ค่อยไปโทษระบบมัน แล้วยุค AI ในอนาคต ถ้าระบบมันตัดสินใจได้เอง มันจะตัดสินใจฝ่าฝืนคำสั่งเราไหมหนอ

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

เราต้องยอมรับอย่างหนึ่งว่า ระบบเก่านั้นมันใช้มานานแล้ว ตอนออกแบบในช่วงเวลานั้น ตัวแบบต่าง ๆ ที่นำมาใช้งานก็ต้องถือว่า ทันสมัยในตอนนั้น แต่ปัจจุบันนี้ เขาอาจจะไม่ใช้แล้ว หรือ มีการปรับปรุงให้ดีขึ้น หรือ มีตัวแบบใหม่ที่ดีกว่า ระบบใหม่เข้าก็พัฒนาโดยอิงอยู่กับตัวแบบที่นิยมใช้ในปัจจุบัน ดังนั้น ผลที่ได้ก็ย่อมแตกต่างกันออกไปบ้าง เมื่อเราทราบแล้ว คราวนี้แหละ เราต้องเป็นผู้เลือกว่า เราจะใช้ตัวแบบแบบเก่า (ในระบบเก่า) หรือ ตัวแบบใหม่ (ที่ใช้ในระบบใหม่) … หรือ บางขั้นตอนในระบบเก่าต้องวิ่งไปโน่นไปนี่ อ้อมไปอ้อมมา ต้องประมวลผลสองสามครั้ง ปัดเศษบ้าง อะไรบ้าง แต่ระบบใหม่ซัดโป้งเดียวจบ ทีนี้มามาคูณด้วยจำนวนมาก ๆ มันก็จะมีความแตกต่างกันมากขึ้น         

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

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

หลังจากผู้ใช้สามารถใช้ระบบใหม่ได้แล้ว เขาก็กำหนดวันขึ้นมาเพื่อทำการตัดระบบเก่าออกแล้วเริ่มใช้ระบบใหม่แทน ถึงช่วงนั้นเข้าก็จะ freeze ระบบ (หมายถึง ในช่วงเวลานี้ ห้ามสร้าง transaction ใหม่ขึ้นมา) แล้ว เคลียร์ข้อมูลระบบใหม่ที่ผู้ใช้ทดลองทำโน่นทำนี่ตอนอบรมบ้าง ตอนทดสอบระบบบ้าง ทิ้งไปให้หมด แล้วดึงข้อมูลต่าง ๆ จากระบบเก่าเข้าสู่ระบบใหม่ทั้งหมด เมื่อเสร็จสิ้นแล้วก็ประกาศว่า ระบบใหม่ Go Live แล้วนะครับ เพื่อให้ทุกคนรับรู้ว่า ระบบเก่าไม่ได้ใช้งานแล้ว ให้ใช้ระบบใหม่ทั้งหมด

เบื้องหน้า เราก็ประกาศแบบนั้น มันเหมือนกับว่า เราถอดปลั๊กไฟระบบเก่าแล้ว มีเพียงระบบใหม่เท่านั้นที่รันอยู่ตอนนี้ ดังนั้น จะป้อนข้อมูล จะออกรายงาน อะไร ก็ให้ระวังหน่อยนะ เพราะไม่มีระบบเก่าให้ใช้แล้ว

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

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

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

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

ผมว่าอันนี้น่าสนใจ สมมติว่ามีองค์กรหนึ่งตั้งมาสิบปีแล้วและผมเพิ่งเข้ามาทำงาน ผมย่อมเชื่อว่าระบบที่ใช้งานอยู่นั้น มัน OK อยู่แล้ว เพราะองค์กรใช้อยู่ทุก ๆ วันมาเป็นสิบปี เป็นธรรมดาอยู่เองที่ผมย่อมไม่สนใจที่จะไปทวนสอบมัน เพราะผมคิดว่ามัน OK อยู่แล้ว (จริง ๆ แล้ว จะ OK หรือ No… K ผมก็ไม่รู้) คงไม่มีใครไปเจาะมัน (มันอาจจะมีใครเจาะอยู่ก็ได้ แต่ไม่ใช่เรื่องของผมที่ผมต้องไปหา) และผมไม่รู้ว่า ระบบนั้น ๆ ทำงานอย่างไร (อันนี้ไม่รู้จริง ๆ แล้วทำไมผู้ต้องรู้ละครับ) … ผมจึงกล่าว ประเด็นนี้น่าสนใจครับ            

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

Connect
Uninterrupted Power Supply (UPS)

Related Posts

 

Comments

No comments made yet. Be the first to submit a comment
Already Registered? Login Here
Guest
Tuesday, 16 October 2018