การประกันคุณภาพตอนที่ 7.1 : การประกันคุณภาพในการจ้างพัฒนาซอฟต์แวร์ - แนวทางการประกันคุณภาพการจ้างพัฒนาซอฟต์แวร์
January 19, 2015

วงจรชีวิตในการจ้างพัฒนาซอฟต์แวร์นั้น (acquisition life cycle) ประกอบด้วยกระบวนการหลักๆ 3 กระบวนการที่ผู้ที่ทำหน้าที่ประกันคุณภาพซอฟต์แวร์ควรเข้าไปมีส่วนร่วมอย่างจริงจัง ได้แก่
การคัดเลือกผู้รับจ้าง
การทำสัญญา
การใช้งานซอฟต์แวร์
1. การคัดเลือกผู้รับจ้าง
การคัดเลือกผู้รับจ้างเป็นขั้นตอนที่มีความสำคัญ เช่นเดียวกับการออกแบบซอฟต์แวร์ เนื่องจากเป็นช่วงที่ต้องมีการศึกษาทางเลือกต่างๆ ค่าใช้จ่าย แผนการดำเนินงาน คุณลักษณะของซอฟต์แวร์ที่ต้องการ รวมทั้งเอกสารต่างๆ ที่ผู้ว่าจ้างต้องการ บุคลากรที่ควรต้องมีส่วนเกี่ยวข้องในกระบวนการนี้ ควรประกอบด้วย
ผู้ควบคุมคุณภาพ (quality control reviewer)
นักวิเคราะห์ระบบ (system analyst)
ผู้ใช้ระบบ (User)
หน่วยจัดหา (purchasing agent)
ที่ปรึกษากฎหมาย (Legal counsel)
การคัดเลือกผู้รับจ้างประกอบด้วยกิจกรรมหลัก 2 กิจกรรมดังนี้
1) การศึกษาความเป็นไปได้ (Feasibility Study)
การศึกษาความเป็นไปได้นั้น มีวัตถุประสงค์เพื่อกำหนดความต้องการ และทางเลือกต่างๆหรือแนวทางที่สามารถตอบสนองความต้องการนั้นได้ ในการศึกษาความต้องการนั้น ไม่จำเป็นต้องระบุวิธีการหรือรายละเอียดของแต่ละแนวทาง แต่มีประเด็นที่ต้องคำนึงถึงและมีการระบุอย่างชัดเจนในการทำรายงานการศึกษาความเป็นไปได้ดังนี้
วันที่ที่ต้องการนำซอฟต์แวร์ขึ้นใช้งานจริงในกรณีที่องค์กรจะต้องสูญเสียรายได้เป็นจำนวนมากหากซอฟต์แวร์ไม่สามารถใช้งานจริงได้ตามกำหนด
คุณค่าของซอฟต์แวร์ เป็นการระบุประโยชน์ที่ได้รับจากการใช้งานซอฟต์แวร์ ประโยชน์ดังกล่าวควรเป็นประโยชน์ที่นอกเหนือจากการทำงานด้วยวิธีการเดิมหรือซอฟต์แวร์เดิมและควรเป็นประโยชน์ที่สามารถวัดได้ เช่นการระบุว่า “ปรับปรุงการให้บริการลูกค้า” ไม่สามารถช่วยให้ฝ่ายบริหารตัดสินใจได้ว่าจะซื้อหรือจ้างพัฒนา ในการระบุประโยชน์ที่ได้รับควรระบุเป็นตัวเลขที่สามารถนำไปวิเคราะห์ความคุ้มค่าได้ (cost-benefit analysis)
คุณลักษณะของระบบหรือซอฟต์แวร์ เป็นการบอกว่าซอฟต์แวร์ที่ต้องการควรมีคุณลักษณะอย่างไร ควรประกอบด้วยข้อมูลอย่างน้อยดังนี้
ข้อมูลที่ต้องการนำเข้าสู่ระบบหรือซอฟต์แวร์ ควรมีการบอกรายละเอียดของข้อมูลด้วย (attributes) เช่น ข้อมูลพนักงาน มีรายละเอียดคือ คำนำหน้าชื่อ ชื่อ นามสกุล เลขประจำตัวประชาชน วันเดือนปีเกิด ที่อยู่ email address วันที่เข้าทำงาน ฯลฯ
การทำงานของระบบหรือซอฟต์แวร์ เป็นการบอกว่าต้องการให้ระบบหรือซอฟต์แวร์ทำงานอะไรได้บ้าง (ไม่ต้องบอกว่าระบบจะต้องทำงานอย่างไร)
ข้อมูลหรือผลลัพธ์ที่ต้องการจากระบบ เช่นรายงาน (กำหนดรูปแบบรายงาน ถ้าสามารถกำหนดได้) หรือการแสดงผลการคำนวณ เป็นต้น
เวลาที่ระบบควรจะต้องตอบสนอง (response time) เช่นต้องสามารถคำนวณดอกเบี้ยเสร็จภายในเวลา 5 วินาที
ข้อมูลที่ต้องจัดเก็บ หรือต้องการให้คงอยู่เพื่อเรียกใช้งานในภายหลังและระยะเวลาในการจัดเก็บ ควรระบุสื่อที่ใช้ในการจัดเก็บด้วย (ถ้าทราบ)
ปริมาณข้อมูลที่จะระบบหรือซอฟต์แวร์จะต้องประมวลผลหรือจัดเก็บ อาจระบุเป็นปริมาณข้อมูล/ต่อปี จำนวนพนักงาน 1,500 คน, จำนวนพนักงานเข้าใหม่ 200 คน/ปี เป็นต้น
เอกสาร และรูปแบบเอกสารที่ต้องการให้ผู้รับจ้างส่งมอบ
คุณลักษณะเฉพาะของฮาร์ดแวร์ที่ต้องการใช้งานกับซอฟต์แวร์
ช่วงชีวิตการใช้งานซอฟต์แวร์ เป็นการระบุระยะเวลาที่ต้องการใช้งานซอฟต์แวร์ เช่นทราบว่าเทคโนโลยีที่ใช้ในการผลิตซอฟต์แวร์นั้นจะล้าสมัยภายใน 8 ปีและไม่สามารถหาบุคลากรในการบำรุงรักษาเทคโนโลยีนั้นได้ ช่วงชีวิตการใช้งานซอฟต์แวร์จะเป็น 8 ปี ในกรณีที่ไม่ทราบ สามารถระบุช่วงชีวิตการใช้งานซอฟต์แวร์เป็น 5-10 ปี ซึ่งเป็นช่วงระยะเวลาที่เหมาะสม
การรักษาความลับเกี่ยวกับซอฟต์แวร์ เป็นการกำหนดให้มีการรักษาความลับของตรรกะในการประมวลผลหรือสูตรในการคำนวณที่นำมาใช้ในการเขียนซอฟต์แวร์ ซึ่งตรรกะหรือสูตรการคำนวณดังกล่าวเป็นทรัพย์สินทางปัญญาหรือเป็นลิขสิทธิ์ของผู้ว่าจ้าง ผู้รับจ้างผลิตซอฟต์แวร์ควรต้องรักษาความลับของสูตรการคำนวณด้วย
การรักษาความลับของข้อมูล เนื่องจากข้อมูลต่างๆ ที่นำเข้าสู่ระบบโดยการจัดการของซอฟต์แวร์ถือเป็นทรัพย์สินของผู้ว่าจ้าง ดังนั้นจึงควรมีการกำหนดประเภทและชั้นความลับของข้อมูลที่ผู้ว่าจ้างต้องการ การระบุการรักษาความลับของข้อมูลนั้น จะมีผลกระทบที่สำคัญต่อสถาปัตยกรรมซอฟต์แวร์ การออกแบบและการสร้างซอฟต์แวร์ที่ผู้รับจ้างจะต้องคำนึงถึง
การระบุกฎหมายหรือกฎระเบียบที่เกี่ยวข้อง เป็นการระบุข้อกำหนดทางกฎหมายหรือกฎระเบียบที่มีผลต่อการออกแบบการทำงานของซอฟต์แวร์และการจัดเก็บข้อมูล เพื่อให้ผู้รับจ้างได้รับทราบและสามารถออกแบบซอฟต์แวร์ให้สามารถรองรับข้อกำหนดตามกฎหมายหรือกฎระเบียบได้ เช่นระเบียบสำนักนายกรัฐมนตรีว่าด้วยการพัสดุ ปี 2535 กำหนดว่าต้องมีการจัดทำทะเบียนเพื่อควบคุมพัสดุ ดังนั้นระบบงานหรือซอฟต์แวร์จะต้องมีการออกแบบให้รองรับข้อกำหนดดังกล่าว การระบุกฎหมายหรือกฎระเบียบที่เกี่ยวข้อง อาจจะระบุอยู่ในส่วนของคุณลักษณะของระบบหรือซอฟต์แวร์
2) กำหนดเกณฑ์ในการคัดเลือกผู้รับจ้าง
การดำเนินการคัดเลือกผู้รับจ้างเป็นขั้นตอนที่สำคัญที่สุดในการจ้างพัฒนาซอฟต์แวร์ หากจะเปรียบเทียบการดำเนินการคัดเลือกผู้รับจ้างกับกระบวนการพัฒนาซอฟต์แวร์นั้น ก็เทียบได้กับการออกแบบซอฟต์แวร์ ซึ่งเป็นขั้นตอนในการแปลข้อกำหนดความต้องการออกมาเป็นซอฟต์แวร์และจะเป็นขั้นตอนที่จะตัดสินว่าซอฟต์แวร์นั้นเป็นไปตามความต้องการของผู้ใช้หรือไม่ ส่วนการดำเนินการคัดเลือกผู้รับจ้างนั้น เป็นขั้นตอนที่จะทำการแปลความต้องการต่างๆออกมาเป็นสัญญาว่าจ้าง
การคัดเลือกผู้รับจ้างที่สามารถทำงานได้อย่างที่ผู้ว่าจ้างคาดหวังนั้น เป็นขั้นตอนที่บ่งชี้ถึงความสำเร็จของโครงการจ้างพัฒนาซอฟต์แวร์ ขั้นตอนการคัดเลือกนั้น จะต้องสรรหาผู้ผลิตหรือผู้รับจ้างที่มีศักยภาพที่จะสามารถพัฒนาซอฟต์แวร์ตามที่ผู้รับจ้างต้องการได้ ในการจ้างพัฒนาซอฟต์แวร์นั้น ผู้รับจ้างสามารถว่าจ้างให้ผู้ผลิตหรือผู้รับจ้างทำการผลิตชิ้นงานหรือบริการใดๆก็ได้ตามที่กำหนด แต่สิ่งเดียวที่ผู้ว่าจ้างไม่สามารถว่าจ้างได้คือ “ความรับผิดชอบต่อคุณภาพ (responsibility for software quality)” ดังนั้น ผู้ว่าจ้างหรือผู้ที่ทำหน้าที่ประกันคุณภาพในหน่วยงานของผู้ว่าจ้างยังคงต้องรับผิดต่อคุณภาพของซอฟต์แวร์ที่ทำการจ้างผลิต
ผู้ที่ทำหน้าที่ประกันคุณภาพนั้น ควรคำนึงถึงประเด็นต่อไปนี้ในการกำหนดเกณฑ์การคัดเลือกผู้รับจ้าง
ตรวจสอบให้แน่ใจว่าข้อกำหนดความต้องการและหลักเกณฑ์ในการตรวจรับสามารถทำการทดสอบได้
การกำหนดหลักเกณฑ์ในการตรวจรับที่ชัดเจนและสามารถทดสอบได้นั้น จะทำให้ผู้รับจ้างไม่สามารถปฏิเสธหรือปฏิเสธได้ยากหากไม่สามารถผลิตซอฟต์แวร์ตามที่กำหนดได้ เช่นการระบุในการข้อกำหนดความต้องการว่า “ซอฟต์แวร์ต้องใช้งานง่าย” หากมีการระบุเกณฑ์ในการตรวจรับด้วยเช่น “ต้องสามารถเรียกดูคำอธิบายการใช้งาน (help) ของแต่ละหน้าจอได้ภายในหน้าจอนั้นๆ” จะทำให้ผู้รับจ้างสามารถผลิตซอฟต์แวร์ได้ตรงความต้องการและดำเนินการตรวจรับผ่าน แต่หากไม่ระบุเกณฑ์ในการตรวจรับ ผู้รับจ้างอาจตีความคำว่าใช้งานง่ายไปเป็นอย่างอื่น และออกแบบซอฟต์แวร์มาไม่ตรงกับความต้องการ
ในขั้นตอนการตรวจรับ ผู้ทำหน้าที่ประกันคุณภาพซอฟต์แวร์ อาจจะเข้าไปมีส่วนร่วมในการตรวจรับหรือไม่ก็ได้ แต่ผู้ทำหน้าที่ประกันคุณภาพควรเข้าไปทำการตรวจสอบว่าได้มีการกำหนดเกณฑ์ในการตรวจรับที่ชัดเจน
ตรวจสอบให้แน่ใจว่าผู้รับจ้างมีกระบวนการผลิตซอฟต์แวร์ที่ดี
ผู้ว่าจ้างสามารถกำหนดให้ผู้รับจ้างต้องได้รับการรับรองมาตรฐาน (certified) อย่างใดอย่างหนึ่งซึ่งเป็นมาตรฐานที่เป็นที่ยอมรับในอุตสาหกรรม เช่น SEI CMMI หรือ ISO certified
ตรวจสอบให้แน่ใจว่าผู้รับจ้างมีกระบวนการทดสอบที่มีประสิทธิภาพ
ในการคัดเลือกผู้รับจ้างนั้น ผู้ที่ทำหน้าที่ประกันคุณภาพ ควรต้องให้ความเห็นเกี่ยวกับความสามารถของผู้ที่เข้ารับการคัดเลือกที่จะส่งมอบซอฟต์แวร์ได้ตามที่ผู้ว่าจ้างต้องการในราคาที่สมเหตุสมผล การที่ผู้รับจ้างมีกระบวนการทดสอบที่ดี และมีประสิทธิภาพเช่นเริ่มการทดสอบตั้งแต่ขั้นตอนของการเก็บรวบรวมความต้องการ ซึ่งจะทำให้พบข้อบกพร่องของซอฟต์แวร์ได้มากถึง 95% และสามารถแก้ไขข้อบกพร่องดังกล่าวตั้งแต่ช่วงต้น ส่งผลให้สามารถลดระยะเวลาและค่าใช้จ่ายได้มากกว่าการไปทดสอบและแก้ไขข้อบกพร่องในช่วงท้ายของการพัฒนา ซึ่งจะทำให้ผู้รับจ้างสามารถส่งมอบซอฟต์แวร์ได้ตรงตามกำหนดเวลา
จัดทำเกณฑ์ในการคัดเลือก
ในการจัดทำเกณฑ์การคัดเลือกนั้น ควรนำประเด็นต่างๆที่กล่าวมาข้างต้นมามาเป็นเกณฑ์ ผู้ว่าจ้างอาจกำหนดความสำคัญให้กับเกณฑ์การคัดเลือก ในกรณีที่ผู้เข้ารับการคัดเลือกตกเกณฑ์ที่มีความสำคัญมากไป อาจจะถูกคัดออกจากการคัดเลือกโดยไม่ดูเกณฑ์อื่นปะกอบก็ได้
กำหนดเกณฑ์ในการตรวจรับ (acceptance testing)
ความเข้มข้นของการตรวจรับซอฟต์แวร์จะขึ้นอยู่กับความเสี่ยงในการใช้และความสำคัญของซอฟต์แวร์ หากความสำคัญของซอฟต์แวร์ลดลง ปริมาณหรือความเข้มข้นของการทดสอบจะลดลง ในทางเดียวกัน หากผู้ที่ทำหน้าที่ประกันคุณภาพสามารถดำเนินการด้านการประกันคุณภาพได้เป็นอย่างดี ผู้รับจ้างจะสามารถผลิตซอฟต์แวร์ที่มีคุณภาพสูง นั่นหมายถึงมีข้อบกพร่องน้อยหรือไม่มี ทำให้การตรวจรับง่าย
ในการตรวจรับซอฟต์แวร์ อย่างน้อยควรต้องตรวจสอบ/ทดสอบในเรื่องต่อไปนี้
เอกสารที่ส่งมอบตรงกับการทำงานของซอฟต์แวร์
เอกสารสามารถอ่านเข้าใจได้
มีการฝึกอบรมให้กับผู้ใช้งานที่เพียงพอ ก่อนการเริ่มใช้งานจริง
มีสภาพแวดล้อมของการใช้ซอฟต์แวร์ที่สามารถใช้งานได้จริง
ผู้รับจ้างมีการส่งรายงานความก้าวหน้าสม่ำเสมอ หรือตามที่กำหนดตลอดช่วงระยะเวลาพัฒนาซอฟต์แวร์
มีการถ่ายทอดความรู้และเทคโนโลยี
การถ่ายทอดความรู้และเทคโนโลยีประกอบด้วย 2 ส่วนได้แก่ การถ่ายทอดความรู้และเทคโนโลยีที่ใช้ในการพัฒนาซอฟต์แวร์ การแก้ไขปัญหาเบื้องต้นที่พบในการใช้ซอฟต์แวร์ การติดต่อกับหน่วยช่วยเหลือ (help desk) เมื่อเกิดปัญหาที่ไม่สามารถแก้ไขเองได้ และเรื่องทรัพย์สินทางปัญญาซึ่งจะขึ้นอยู่กับข้อกำหนดในสัญญา
มีการปกป้องทรัพย์สินทางปัญญาของทั้งฝ่ายผู้ว่าจ้างและผู้รับจ้าง
2. การทำสัญญา
สัญญาถือเป็นเอกสารทางกฎหมาย ผู้ที่จัดทำสัญญาควรเป็นผู้ที่มีความรู้ทางด้านกฎหมาย หรือได้รับการฝึกอบรมอย่างพอเพียง สิ่งที่ต้องคำนึงถึงในจัดทำสัญญามีดังนี้
1) การรับประกัน
การกำหนดการรับประกันนั้น ควรกล่าวถึงการรับประกันสิ่งที่ผู้รับจ้างส่งมอบและการลงโทษของผู้ว่าจ้างหากผู้รับจ้างไม่สามารถรับประกันสิ่งที่ส่งมอบได้ เช่นการรับประกันว่าซอฟต์แวร์ต้องมีการตอบสนอง (response time) ไม่เกิน 5 วินาที ถ้าหากว่าซอฟต์แวร์ไม่สามารถทำงานได้ตามที่รับประกัน ผู้ว่าจ้างจะมีการลงโทษอย่างไร
2) สิ่งที่ส่งมอบ
การระบุสิ่งที่ส่งมอบในสัญญา ควรต้องระบุให้มีรายละเอียดที่ชัดเจนและสามารถตรวจรับได้ อาจจะนำข้อมูลคุณลักษณะของระบบที่จัดทำในช่วงของการศึกษาความเป็นไปได้ มากำหนดเป็นสิ่งที่ส่งมอบ
3) วันที่ส่งมอบ
วันที่ส่งมอบอาจะแบ่งได้เป็นหลายช่วง และควรระบุให้สอดคล้องกับสิ่งที่ส่งมอบ
4) วันที่สัญญามีผล
5) การติดตั้งซอฟต์แวร์
เป็นการระบุรายละเอียดของการติดตั้ง เช่น สิ่งที่ผู้รับจ้างและ/หรือผู้ว่าจ้างต้องดำเนินการหรือเตรียมการ หรือบุคลากรที่ต้องใช้ อุปกรณ์หรือเครื่องมือที่ต้องการเพื่อการติดตั้งซอฟต์แวร์
6) การบำรุงรักษา
ควรกำหนดรายละเอียดการบำรุงรักษาให้ชัดเจน เช่นหากซอฟต์แวร์ที่จ้างพัฒนา ใช้งานอยู่บนระบบปฏิบัติการที่มีการเปลี่ยนเวอร์ชั่นบ่อยๆ ในสัญญาอาจระบุให้ผู้รับจ้างต้องการทำปรับปรุงซอฟต์แวร์ ให้สามารถใช้งานบนระบบปฏิบัติการที่เปลี่ยนไปได้
7) การให้การสนับสนุนของผู้รับจ้าง (support)
ควรมีการระบุรายละเอียดของการให้การสนับสนุนของผู้รับจ้าง เช่นชนิด/ประเภทของการสนับสนุน สถานที่ที่ให้การสนับสนุน หรือคุณสมบัติของบุคลากรที่ให้การสนับสนุน เช่นคุณสมบัติของนักวิเคราะห์ระบบต้องมีประสบการณ์ทำงาน 5 ปี เป็นต้น
8) ค่าใช้จ่าย
ควรระบุค่าใช้จ่ายที่ผู้ว่าจ้างจะจ่ายให้ผู้รับจ้าง รวมทั้งสิทธิ์ของผู้ว่าจ้างที่จะไม่จ่ายค่าจ้างหากผู้รับจ้างไม่ปฏิบัติตามสัญญา
9) บทปรับ/บทลงโทษ
10) ระยะเวลาของสัญญา
ระบุระยะเวลาของสัญญา รวมทั้งสิทธิ์ของผู้ว่าจ้าง/ผู้รับจ้างในการต่อหรือยกเลิกสัญญา
11) เกณฑ์ในการตรวจรับ
ควรมีการกำหนดเกณฑ์ในการตรวจรับสิ่งที่ส่งมอบให้ชัดเจน เกณฑ์ในการตรวจรับควรรวมทั้งการตรวจรับซอฟต์แวร์ เอกสารต่างๆ การฝึกอบรม ที่เกิดขึ้นในโครงการ และควรระบุด้วยว่าใครเป็นผู้ตรวจรับและดำเนินการตรวจรับที่ไหน
3. การนำซอฟต์แวร์ไปใช้งานจริง
เมื่อผู้รับจ้างดำเนินงานตามสัญญาและดำเนินการส่งมอบงาน ผู้ว่าจ้างมีหน้าที่ในการตรวจรับสิ่งที่ส่งมอบ และนำซอฟต์แวร์ไปใช้งานจริง ในขั้นตอนดังกล่าวมีประเด็นที่ต้องคำนึงถึงดังนี้
1) การตรวจรับ
การตรวจรับเป็นกระบวนการที่ผู้ว่าจ้างต้องทำการตรวจสอบว่า สิ่งที่ส่งมอบเป็นไปตามที่องค์กรต้องการ การตรวจรับมีประเด็นที่ต้องคำนึงถึงดังนี้
ผู้ว่าจ้างต้องตรวจสอบให้แน่ใจว่าสิ่งที่ส่งมอบตรงตามข้อกำหนดความต้องการที่กำหนดในสัญญา
ส่งมอบตรงเวลา
มีข้อมูลสำหรับทดสอบที่เพียงพอ เพื่อให้แน่ใจว่าการทดสอบเพื่อตรวจรับสามารถดำเนินการได้อย่างครบถ้วนเพียงพอ
มีการเตรียมการสำหรับการตรวจรับ เช่นการเตรียมอุปกรณ์ฮาร์ดแวร์ การเตรียมสถานที่ เป็นต้น
มีการฝึกอบรมก่อนดำเนินการตรวจรับ
ดำเนินการตรวจรับตามวันที่กำหนดในสัญญา
มีการทดสอบขั้นตอนในการนำระบบขึ้นใช้งานจริง ในระหว่างการตรวจรับ
2) การใช้งานซอฟต์แวร์
ในระหว่างนำซอฟต์แวร์มาใช้งานจริง ผู้ว่าจ้างมีประเด็นที่ควรคำนึงถึงดังนี้
มีการควบคุมที่ดีเพียงพอ เพื่อให้แน่ใจว่าข้อมูลที่ประมวลผลโดยซอฟต์แวร์ มีความถูกต้อง สมบูรณ์ และนำเข้า/ประมวลผลโดยผู้ที่มีสิทธิในการใช้งาน การควบคุมดังกล่าว ยังครอบควรครอบคลุมไปถึง การป้องกัน การตรวจจับ การแก้ไขปัญหาการเข้าใช้งานซอฟต์แวร์โดยไม่ถูกต้องอีกด้วย ควรมีการทำรายการตรวจสอบ (checklist) เพื่อให้ผู้ที่มีหน้าที่ตรวจสอบสามารถสำหรับการดำเนินการดังกล่าวได้
มีเอกสารที่ดีเพียงพอ ผู้รับจ้างควรจัดทำเอกสารสำหรับการใช้งานซอฟต์แวร์ เพื่อให้ผู้ใช้สามารถใช้งานซอฟต์แวร์ในการดำเนินงานประจำวันหรือตามวัตถุประสงค์ขององค์กรได้โดยไม่ติดขัด หากผู้ใช้พบว่ามีปัญหาการใช้งานซอฟต์แวร์บ่อยครั้งและต้องให้ผู้รับจ้างเข้ามาให้คำแนะนำรายวัน ผู้ว่าจ้างควรร้องขอให้ผู้รับจ้างจัดทำหรือปรับปรุงเอกสารให้
ความรวดเร็วในการให้บริการ เมื่อมีปัญหาเกิดขึ้นผู้รับจ้างควรให้บริการด้วยความรวดเร็วในกรณีที่ปัญหาจากซอฟต์แวร์นั้นมีผลกระทบสูงต่อการดำเนินงานขององค์กร ผู้รับจ้างอาจจะต้องเข้ามาแก้ปัญหาให้เสร็จภายใน 2 ชั่วโมง ทั้งนี้การกำหนดระยะเวลา ขึ้นอยู่กับความสำคัญของซอฟต์แวร์นั้นๆที่มีต่อองค์กรของผู้ว่าจ้าง
ศักยภาพในการให้บริการ บุคลากรของผู้รับจ้างที่เข้ามาให้บริการควรมีความรู้ความสามารถที่เพียงที่จะให้บริการ
ความพร้อมของอุปกรณ์หรือฮาร์ดแวร์ เพื่อให้ซอฟต์แวร์ที่พัฒนาขึ้นสามารถใช้งานบนอุปกรณ์หรือฮาร์ดแวร์นั้นๆได้อย่างมีประสิทธิภาพ
บุคลากรของผู้ว่าจ้าง ควรได้รับการอบรมให้มีทักษะเพียงพอในการใช้งานซอฟต์แวร์
ควรมีระบุค่าใช้จ่ายในการให้บริการของผู้รับจ้าง ถึงแม้ว่าการให้บริการนั้น จะครอบคลุมอยู่ในช่วงอายุของสัญญาก็ตาม เพื่อให้ผู้ว่าจ้างได้ทราบถึงค่าใช้จ่ายหากต้องมีการต่อสัญญาหรือร้องขอบริการเพิ่มเติม
ค่าใช้จ่ายในการดูแลบำรุงรักษา ในกรณีที่เป็นการเช่าใช้บริการซอฟต์แวร์ ค่าใช้จ่ายในการเช่าใช้ควรต้องมีรายละเอียดที่สามารถชี้แจงและวัดได้
ความรับผิดชอบในการวิเคราะห์ปัญหา ควรต้องมีการระบุหน้าที่ความรับผิดชอบในการวิเคราะห์ปัญหาให้ชัดเจน หากผู้ว่าจ้างเป็นผู้วิเคราะห์ปัญหาเอง ก็ควรได้รับการฝึกอบรมที่เพียงพอต่อการทำหน้าที่ในการวิเคราะห์ปัญหา หากผู้รับจ้างเป็นผู้รับผิดชอบในการวิเคราะห์ปัญหา ต้องมีการตอบสนองที่รวดเร็วเมื่อผู้ใช้งานพบปัญหา และหาแนวทางการแก้ไข
การจัดทำเอกสารเพื่อบันทึกข้อผิดพลาดของซอฟต์แวร์ ผู้ว่าจ้างควรจัดให้มีกระบวนการในการจัดทำเอกสารเพื่อบันทึกขอผิดพลาดของซอฟต์แวร์ที่พบ การบันทึกขอผิดพลาด จะช่วยผู้วิเคราะห์ปัญหาทำงานได้ง่ายขึ้น รวมทั้งยังสามารถใช้เป็นเอกสารในการอ้างถึงคุณภาพการให้บริการของผู้รับจ้างอีกด้วย ในจัดทำรูปแบบเอกสารบันทึกข้อผิดพลาด ผู้รับจ้างควรมีส่วนร่วมด้วย เพื่อให้แน่ใจว่าผู้รับจ้างจะได้รับข้อมูลที่เพียงพอในการวิเคราะห์ปัญหา