รหัสโปรแกรมและหน่วยเมตริก การทำงานใน Yandex Metrica ใหม่: คำแนะนำสำหรับการวิเคราะห์เว็บ

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

อย่างไรก็ตาม การวิเคราะห์ประสบการณ์ทางเทคโนโลยีของผู้นำด้านการผลิตซอฟต์แวร์แสดงให้เห็นว่าราคาแพงเพียงใดสำหรับความไม่สมบูรณ์ของการคาดการณ์ตามหลักวิทยาศาสตร์เกี่ยวกับความสามารถในการแก้ปัญหาและต้นทุนแรงงาน ความซับซ้อนของโปรแกรม ความไม่ยืดหยุ่นในการควบคุมและการจัดการการพัฒนา และอื่นๆ อีกมากมาย บ่งชี้ว่า การขาดการสนับสนุนด้านระเบียบวิธีแบบ end-to-end และท้ายที่สุดนำไปสู่การไม่ปฏิบัติตามข้อกำหนดของผู้ใช้ มาตรฐานที่ต้องการ และการทำงานซ้ำที่เจ็บปวดและใช้เวลานานในภายหลัง สถานการณ์เหล่านี้จำเป็นต้องมีการเลือกเทคนิค โมเดล วิธีการประเมินคุณภาพซอฟต์แวร์อย่างระมัดระวัง โดยคำนึงถึงข้อจำกัดของความเหมาะสมสำหรับวงจรชีวิตต่างๆ และภายในวงจรชีวิต การสร้างขั้นตอนสำหรับการใช้งานร่วมกัน การใช้หลายแบบจำลองที่ซ้ำซ้อน การวิจัยตัวชี้วัดเดียวกันเพื่อเพิ่มความน่าเชื่อถือของการประเมินในปัจจุบัน การสะสมและการบูรณาการข้อมูลตัวชี้วัดที่หลากหลาย เพื่อการตัดสินใจในการผลิตอย่างทันท่วงทีและการรับรองผลิตภัณฑ์ขั้นสุดท้าย

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

ตารางที่ 1.3.

ชื่อรุ่น

สูตรการกำหนด

ตัวชี้วัดความซับซ้อน

ตัวชี้วัด Halstead

ความยาวของโปรแกรม

ขอบเขตของโปรแกรม

การประเมินผลการดำเนินงาน

ความยากลำบากในการทำความเข้าใจ

ความซับซ้อนของการเข้ารหัส

ระดับภาษาการแสดงออก

เนื้อหาข้อมูล

โมดูลาร์ที่เหมาะสมที่สุด

N = n 1 บันทึก 1 n 1 + n 2 บันทึก 2 n 2

L * = (2 n 2)/ ( 1 n 2)

D = (n 1 N 2) (2n 2) = 1/ L *

* = โวลต์/ ลึก 2 = โวลต์/ ลิตร * 2

กิลบา เมตริกส์

จำนวนคำสั่งวนซ้ำ

จำนวนคำสั่งเงื่อนไข

จำนวนโมดูลหรือระบบย่อย

อัตราส่วนของจำนวนการเชื่อมต่อระหว่างโมดูลต่อจำนวนโมดูล

อัตราส่วนของจำนวนเอาต์พุตที่ผิดปกติจากชุดตัวดำเนินการต่อจำนวนตัวดำเนินการทั้งหมด

f = N 4 SV / L ม็อด

f*=N*SV/ลิตร

ตัวชี้วัด McCabe

เลขไซโคลมาติก

ความซับซ้อนแบบไซโคลมาติก

(G) = ม. – n + พี

(ช) = (จี) +1 = ม – n + 2

เชแปนเมตริก

การวัดความยากในการทำความเข้าใจโปรแกรมตามข้อมูลอินพุตและเอาต์พุต

สูง = 0.5T+P+2M+3C

ชนาเดอวีด เมตริก

จำนวนเส้นทางในกราฟควบคุม

ไมเยอร์สเมตริก

การวัดช่วง;

แฮนเซนเมตริก

คู่ (หมายเลขไซโคลมาติก จำนวนตัวดำเนินการ)

เมตริกของเฉิน

การวัดทอพอโลยีของเฉิน

ม(ก) = ((ก), ค, ค 0)

วู้ดเวิร์ดเมตริก

การวัดที่สำคัญ (จำนวนโหนดการส่งสัญญาณควบคุม);

คูลิกเมตริก

ตัวเลขปกติ (จำนวนรอบที่ง่ายที่สุดในไดอะแกรมโปรแกรมปกติ)

ฮูราเมตริก

เลขไซโคลเมติกของ Petri net สะท้อนถึงโครงสร้างการควบคุมของโปรแกรม

ตัวชี้วัดของ Whitworth, Zulevsky

การวัดความซับซ้อนของโฟลว์การควบคุม

การวัดความซับซ้อนของสตรีมข้อมูล

ปีเตอร์สันเมตริก

จำนวนรอบอินพุตหลายรอบ

ตัวชี้วัด แฮร์ริสัน, มาเจล

หมายเลขฟังก์ชัน (ผลรวมของความซับซ้อนที่ลดลงของจุดยอดทั้งหมดของกราฟควบคุม)

อัตราส่วนการทำงาน (อัตราส่วนของจำนวนจุดยอดกราฟต่อจำนวนฟังก์ชัน)

นิพจน์ทั่วไป (จำนวนตัวถูกดำเนินการ ตัวดำเนินการ และวงเล็บในนิพจน์ทั่วไปของกราฟควบคุมโปรแกรม)

ฉ * = ไม่มี 1 / ฉ 1

ตัวชี้วัด Pivovarsky

การวัดความซับซ้อนแบบไซโคลมาติกแบบดัดแปลง

ยังไม่มีข้อความ(G) = * (G) + P ผม

แพรตต์เมตริก

การวัดการทดสอบ

แคนตันเมตริก

จำนวนคุณลักษณะของพหุนามที่อธิบายกราฟควบคุมของโปรแกรม

เมตริก McClure

การวัดความซับซ้อนขึ้นอยู่กับจำนวนเส้นทางที่เป็นไปได้ของการรันโปรแกรม จำนวนโครงสร้างการควบคุมและตัวแปร

C(V) = D(V)J(V)/ N

คาฟูร์เมตริก

การวัดตามแนวคิดเรื่องการไหลของข้อมูล

ชูตส์เมตริก, โมฮันตี

มาตรการเอนโทรปี

เมตริกคอลโลเฟโล

การวัดความเสถียรเชิงตรรกะของโปรแกรม

โซลนอฟสกี้, ซิมมอนส์, เธเยอร์ เมตริก

ผลรวมถ่วงน้ำหนักของตัวชี้วัดต่างๆ:

- (โครงสร้าง การโต้ตอบ ปริมาณ ข้อมูล)

- (ความซับซ้อนของอินเทอร์เฟซ ความซับซ้อนในการคำนวณ ความซับซ้อนของอินพุต/เอาท์พุต ความสามารถในการอ่าน)

ตัวชี้วัดเบอร์ลินเกอร์

มาตรการสารสนเทศ

ผม(R) = (F * (R) F - (R)) 2

แมนน์เมตริก

ความซับซ้อนจากมุมมองของทฤษฎีทางสถิติของภาษา

เมตริกที่อายุน้อยกว่า

ความซับซ้อนเชิงตรรกะโดยคำนึงถึงประวัติการคำนวณ

ความซับซ้อนของการออกแบบ

ความอิ่มตัวของความคิดเห็น

จำนวนการโทรภายนอก

จำนวนตัวดำเนินการ

C c = บันทึก 2 (i + 1)[ n Cxy (n)]

การคาดการณ์แบบจำลอง

โมเดลฮาลสตีด

การคาดการณ์ทรัพยากรระบบ

การพยากรณ์จำนวนข้อผิดพลาด

โมเดลไอบีเอ็ม

แบบจำลองความซับซ้อนทั้งหมด

โมเดลการเชื่อมต่อ

โมเดลสไปลน์

P=3/8 (ร ก – 1) 2 รา

B = นล็อก 2 n / 3000

ข = 23ม 1 + ม 1 0

B = 21.1 + 0.1 V + คอมพ์ (S)

P ij = 0.15 (S i + S j) + 0.7 C ij

P ij = S i (Z ij 2 + N ij 2) ln (Z ij 2 + N ij 2) + + Z i + N 1

แบบจำลองการประมาณค่า

เจลินสกี้ – โมรันดา

R(t) = อี - (T – 1 + 1) เสื้อ

ไวส์-เบย์ส

R 1 (t) = อี - - (i –1))t (, /t 1 ,…,t i-1)dd

ชิค-วูล์ฟเวอร์ตัน

R 1 (t) = e - (N – 1 + 1) t ฉัน 2/2

ลิตเติลวูด

R 1 (เสื้อ) = (+ / ++ เสื้อ) (ยังไม่มีข้อความ – ผม + 1)

เนลสัน

R j (t) = ประสบการณ์ ( ln (1 – P j))

คาเลตสกี้

R j (t) = P- (1- nj) / n j

โมเดลการแก้ไขข้อบกพร่อง

R เจ (t) =P- ฉ เจ (,)

แบบจำลองโมเสก

ร เจ (t) = 1 - (- เจ - 1)

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

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

ทฤษฎีความซับซ้อนของโปรแกรมมุ่งเน้นไปที่การจัดการคุณภาพซอฟต์แวร์และการควบคุมความซับซ้อนมาตรฐานระหว่างการดำเนินการ ในปัจจุบัน ตัวบ่งชี้ที่หลากหลาย (ในระดับหนึ่งหรืออีกระดับหนึ่งที่อธิบายความซับซ้อนของโปรแกรม) มีมากจนต้องอาศัยการเรียงลำดับเบื้องต้นในการใช้งาน ในบางกรณี สามารถใช้เมตริกความซับซ้อนได้สามประเภท หมวดหมู่แรกถูกกำหนดให้เป็นหน่วยเมตริกพจนานุกรมโดยอิงตามความสัมพันธ์หน่วยเมตริกของ Halstead, หน่วยวัดแบบวัฏจักรของ McCabe และหน่วยวัดของ Thayer หมวดหมู่ที่สองมุ่งเน้นไปที่ตัวชี้วัดการสื่อสารที่สะท้อนถึงความซับซ้อนของความสัมพันธ์ระหว่างส่วนประกอบของระบบ - เหล่านี้คือตัวชี้วัด Win และ Winchester หมวดที่สามประกอบด้วยเมตริกความหมายที่เกี่ยวข้องกับการออกแบบสถาปัตยกรรมของโปรแกรมและการออกแบบ

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

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

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

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

การวัดความซับซ้อนเชิงทอพอโลยีประการแรกคือการวัดแบบไซโคลมาติกของ McCabe มันขึ้นอยู่กับแนวคิดในการประมาณความซับซ้อนของซอฟต์แวร์ตามจำนวนเส้นทางพื้นฐานในกราฟควบคุมนั่นคือ เส้นทางดังกล่าว โดยการเขียนว่าเส้นทางใดสามารถรับเส้นทางที่เป็นไปได้ทั้งหมดตั้งแต่อินพุตของกราฟไปจนถึงเอาต์พุต เลขไซโคลมาติก (G) ของไดกราฟ G ที่มีจุดยอด n, ส่วนโค้ง m และส่วนประกอบที่เชื่อมต่อด้วย p คือปริมาณ (G) = m – n + p

มีทฤษฎีบทที่ว่าจำนวนเส้นทางพื้นฐานในไดกราฟเท่ากับจำนวนไซโคลมาติกเพิ่มขึ้นหนึ่งเส้นทาง ในกรณีนี้ ความซับซ้อนแบบไซโคลเมติกของซอฟต์แวร์ P ที่มีกราฟควบคุม G เรียกว่าค่า (G) = (G) +1 = m – n + 2 ในทางปฏิบัติ ความซับซ้อนแบบไซโคลเมติกของซอฟต์แวร์จะเท่ากับจำนวน ของเพรดิเคตบวกหนึ่ง ซึ่งช่วยให้สามารถคำนวณได้โดยไม่ต้องสร้างกราฟควบคุมโดยการนับเพรดิเคตเพียงอย่างเดียว มาตรการนี้สะท้อนถึงความซับซ้อน “ทางจิตวิทยา” ของซอฟต์แวร์

ข้อดีของการวัด ได้แก่ ความเรียบง่ายของการคำนวณและการทำซ้ำของผลลัพธ์ ตลอดจนความชัดเจนและความหมายของการตีความ ข้อเสีย ได้แก่: ความไม่ไวต่อขนาดของซอฟต์แวร์, ความไม่ไวต่อการเปลี่ยนแปลงโครงสร้างของซอฟต์แวร์, ขาดความสัมพันธ์กับโครงสร้างของซอฟต์แวร์, ขาดความแตกต่างระหว่างโครงสร้าง Fork และ Loop, ขาดความไวต่อการซ้อนลูป ข้อบกพร่องของการวัดแบบวัฏจักรนำไปสู่การเกิดขึ้นของการปรับเปลี่ยนตลอดจนการวัดความซับซ้อนที่แตกต่างกันโดยพื้นฐาน

เจ. ไมเยอร์สเสนอช่วง [1 2] เพื่อใช้วัดความซับซ้อน โดยที่ 1 คือการวัดแบบวัฏจักร และ 2 คือจำนวนเงื่อนไขแต่ละรายการบวกหนึ่ง ในกรณีนี้ ตัวดำเนินการ DO จะถือเป็นเงื่อนไขเดียว และ CASE ที่มีผลลัพธ์ n สำหรับเงื่อนไข n - 1

การวัดที่แนะนำเรียกว่าการวัดช่วงเวลา

W. Hansen มีความคิดที่จะจับคู่ (หมายเลขไซโคลมาติก, จำนวนตัวดำเนินการ) เพื่อใช้วัดความซับซ้อนของซอฟต์แวร์ การวัดทอพอโลยี Z(G) เป็นที่รู้กันว่ามีความอ่อนไหวต่อโครงสร้างของซอฟต์แวร์ ยิ่งไปกว่านั้น มันคือ Z(G) = V(G) (เท่ากับความซับซ้อนของไซโคลมาติก) สำหรับโปรแกรมที่มีโครงสร้าง และ Z(G) V(G) สำหรับโปรแกรมที่ไม่มีโครงสร้าง ตัวแปรของการวัดความซับซ้อนแบบไซโคลเมติกยังรวมถึงการวัด M(G) = (V(G),C,Q) โดยที่ C คือจำนวนเงื่อนไขที่จำเป็นในการครอบคลุมกราฟควบคุมด้วยจำนวนเส้นทางขั้นต่ำ และ Q คือ ระดับความเชื่อมโยงของโครงสร้างกราฟโปรแกรมและความยาว

การวัดความซับซ้อนเชิงฟังก์ชันของแฮร์ริสัน-มาเจลเกี่ยวข้องกับการกำหนดจุดยอดกราฟแต่ละจุดให้มีความซับซ้อนของตัวเอง (หลัก) และแบ่งกราฟออกเป็น "ขอบเขตอิทธิพล" ของจุดยอดภาคแสดง ความซับซ้อนของทรงกลมเรียกว่ารีดิวซ์ และประกอบด้วยความซับซ้อนปฐมภูมิของจุดยอดที่รวมอยู่ในขอบเขตอิทธิพลของมัน บวกกับความซับซ้อนปฐมภูมิของจุดยอดเพรดิเคตเอง ความยากหลักจะถูกคำนวณด้วยวิธีที่เป็นไปได้ทั้งหมด ดังนั้น การวัดการทำงานของความซับซ้อนของซอฟต์แวร์คือผลรวมของความซับซ้อนที่ลดลงของจุดยอดทั้งหมดของกราฟควบคุม

มาตรการ Pivovarsky มีเป้าหมายที่จะคำนึงถึงในการประเมินความซับซ้อนของซอฟต์แวร์ ความแตกต่างไม่เพียงระหว่างโครงสร้างการควบคุมแบบลำดับและแบบซ้อนเท่านั้น แต่ยังรวมถึงระหว่างโปรแกรมที่มีโครงสร้างและที่ไม่มีโครงสร้างด้วย แสดงได้โดยความสัมพันธ์ N(G) = * (G) + P i โดยที่ * (G) คือความซับซ้อนของไซโคลมาติกที่ถูกแก้ไข ซึ่งคำนวณในลักษณะเดียวกับ V(G) แต่มีข้อแตกต่างประการหนึ่งคือ ตัวดำเนินการ CASE ที่มี n-output ถือเป็นตัวดำเนินการเชิงตรรกะตัวเดียว แทนที่จะเป็นตัวดำเนินการ n – 1 P i – ความลึกของการซ้อนของ i – จุดยอดเพรดิเคตนั้น

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

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

การวัดการทดสอบ M คือการวัดความซับซ้อนที่ตรงตามเงื่อนไขต่อไปนี้:

1. การวัดความซับซ้อนของตัวดำเนินการอย่างง่ายคือ 1;

2. M ((F1; F2; …; Fn)) = ฉัน n M(Fi);

3. M (ถ้า P แล้ว F1 มิฉะนั้น F2) = 2 MAX (M (F1), M (F2));

4. M (ในขณะที่ P DO F) = 2 M(F)

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

พิจารณามาตรการที่ซับซ้อนโดยคำนึงถึงลักษณะของการแตกสาขา การวัดที่สำคัญของ Woodward และ Hedley ขึ้นอยู่กับแนวคิดในการคำนวณลักษณะทอพอโลยีของโฟลว์ควบคุม ในกรณีนี้ ความซับซ้อนของปมหมายถึงจำนวนโหนดการส่งสัญญาณควบคุม การวัดนี้ติดตามความซับซ้อนของโปรแกรมเชิงเส้นและไวต่อการจัดโครงสร้าง (ความซับซ้อนลดลง) ใช้ได้กับการเปรียบเทียบโปรแกรมที่เทียบเท่ากัน ซึ่งเป็นที่นิยมมากกว่าการวัดแบบ Halstead แต่ในแง่ทั่วไปแล้วจะด้อยกว่าการวัดแบบ McCabe

การวัดทอพอโลยีของ Chen แสดงถึงความซับซ้อนของโปรแกรมด้วยจำนวนจุดตัดของขอบเขตระหว่างพื้นที่ที่เกิดจากผังงานของโปรแกรม วิธีการนี้ใช้ได้กับโปรแกรมที่มีโครงสร้างซึ่งอนุญาตเฉพาะการเชื่อมต่อตามลำดับของโครงสร้างการควบคุมเท่านั้น สำหรับโปรแกรมที่ไม่มีโครงสร้าง การวัด Chen ขึ้นอยู่กับการแยกแบบมีเงื่อนไขและแบบไม่มีเงื่อนไขอย่างมาก ในกรณีนี้ คุณสามารถระบุขอบเขตบนและล่างของการวัดได้ ตัวบนสุดคือ m+1 โดยที่ m คือจำนวนตัวดำเนินการเชิงตรรกะเมื่อซ้อนกัน อันล่างเท่ากับ 2 เมื่อกราฟควบคุมของโปรแกรมมีองค์ประกอบที่เชื่อมต่อกันเพียงองค์ประกอบเดียว การวัด Chen จะเกิดขึ้นพร้อมกับการวัดแบบไซโคลมาติกของ McCabe

หน่วยเมตริกของ Gilb จะประเมินความซับซ้อนของโมดูลโปรแกรมเชิงกราฟโดยอัตราส่วนของจำนวนการเปลี่ยนตามเงื่อนไขต่อจำนวนคำสั่งที่ปฏิบัติการได้ทั้งหมด ตัวชี้วัดที่เกี่ยวข้องกับจำนวนการเชื่อมต่อระหว่างโมดูลกับจำนวนโมดูลทั้งหมดได้พิสูจน์ตัวเองเป็นอย่างดี ตัวชี้วัดเหล่านี้ใช้ในการประมาณความซับซ้อนของวงจรโปรแกรมที่เทียบเท่า โดยเฉพาะวงจร Yanov

นอกจากนี้ การวัดความซับซ้อนยังใช้โดยคำนึงถึงประวัติการคำนวณ ธรรมชาติของการโต้ตอบของโมดูล และการวัดที่ซับซ้อน

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

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

รหัสเมตริก

ซอฟต์แวร์เมตริก (เมตริกซอฟต์แวร์) – การวัดเชิงตัวเลขที่ช่วยให้คุณประเมินคุณสมบัติบางอย่างของส่วนเฉพาะของโค้ดโปรแกรม สำหรับแต่ละเมตริกมักจะมีเกณฑ์มาตรฐานที่ระบุว่าค่าสูงสุดใดที่ควรค่าแก่การใส่ใจกับส่วนของโค้ดที่กำหนด ตัวชี้วัดโค้ดแบ่งออกเป็นหมวดหมู่และสามารถประเมินแง่มุมที่แตกต่างกันโดยสิ้นเชิงของระบบซอฟต์แวร์: ความซับซ้อนและโครงสร้างของโค้ดซอฟต์แวร์ การเชื่อมต่อของส่วนประกอบ ปริมาณสัมพัทธ์ของส่วนประกอบซอฟต์แวร์ ฯลฯ ตัวชี้วัดที่เข้าใจง่ายที่สุดคือจำนวนบรรทัด ของโค้ดในระบบซอฟต์แวร์ถึงแม้จะสามารถคำนวณได้ง่าย แต่เมื่อใช้ร่วมกับการวัดอื่น ๆ ก็สามารถรับข้อมูลที่เป็นทางการสำหรับการประเมินโค้ดได้ ตัวอย่างเช่น คุณสามารถสร้างความสัมพันธ์ระหว่างจำนวนบรรทัดของโค้ดในคลาสหนึ่งและจำนวนวิธีการ/คุณสมบัติในคลาสได้ โดยได้รับคุณลักษณะที่แสดงว่าเมธอดของคลาสที่กำหนดนั้นกว้างขวางเพียงใด นอกจากนี้ การประมาณการดังกล่าวสามารถใช้ร่วมกับการวัดความซับซ้อน (เช่น ความซับซ้อนของวงจร McCabe) เพื่อระบุส่วนที่ยากที่สุดในโค้ดโปรแกรมและดำเนินการที่เหมาะสม

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

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

มีการจำแนกประเภทของตัววัดซอฟต์แวร์ที่แตกต่างกันมากมาย การตีความตัววัดจากมุมมองที่แตกต่างกัน และจัดอันดับคุณลักษณะที่เหมือนกันตามเกณฑ์ที่ต่างกัน หนึ่งในการจำแนกประเภทดังกล่าวสามารถแบ่งหน่วยเมตริกออกเป็นกลุ่มตามหัวข้อของการประเมิน:

    ขนาด– การประเมินเปรียบเทียบขนาดซอฟต์แวร์

    ความซับซ้อน– การประเมินสถาปัตยกรรมและอัลกอริธึมของระบบซอฟต์แวร์ (ตัวบ่งชี้เชิงลบของกลุ่มตัวชี้วัดนี้บ่งบอกถึงปัญหาที่อาจเกิดขึ้นระหว่างการพัฒนา การสนับสนุน และการดีบักโค้ดโปรแกรม)

    การสนับสนุน– การประเมินศักยภาพของระบบซอฟต์แวร์เพื่อการแก้ไขในภายหลัง

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

ขนาดมีความสำคัญหรือไม่?

เมตริก SLOC (บรรทัดซอร์สโค้ด) สะท้อนถึงจำนวนบรรทัดของซอร์สโค้ด ตัวบ่งชี้นี้ไม่สามารถใช้เพื่อประเมินปริมาณของระบบซอฟต์แวร์อย่างเป็นกลางได้เสมอไป - ค่าตัวเลขขึ้นอยู่กับปัจจัยสุ่มหลายประการ เช่น รูปแบบการเขียนโค้ด การเปรียบเทียบระบบซอฟต์แวร์สองระบบโดยใช้เกณฑ์นี้เพียงอย่างเดียวนั้นแทบจะไม่ถูกต้องตามกฎหมาย จึงมีตัวบ่งชี้ที่ได้รับมามากมายสำหรับ SLOC: จำนวนบรรทัดว่าง; จำนวนบรรทัดที่มีความคิดเห็น เปอร์เซ็นต์ของความคิดเห็น; จำนวนบรรทัดของโค้ดที่มีอยู่ในวิธีการ/ฟังก์ชัน จำนวนบรรทัดโค้ดเฉลี่ยต่อวิธี/ฟังก์ชัน จำนวนบรรทัดโค้ดเฉลี่ยต่อคลาส/แพ็คเกจ จำนวนบรรทัดโค้ดโดยเฉลี่ยต่อโมดูล ฯลฯ

นอกจาก SLOC แล้ว เมื่อประมาณขนาด มักใช้ตัวบ่งชี้บรรทัด "ตรรกะ" ของโค้ด LSI (คำแนะนำแหล่งที่มาเชิงตรรกะ) ซึ่งคำนวณหลังจากการทำให้เป็นมาตรฐาน (นำซอร์สโค้ดมาสู่รูปแบบที่เหมาะสม) ของรายการ: กำจัดตำแหน่งของ คำสั่งต่างๆ ในบรรทัดเดียว บรรทัดว่าง การล้างความคิดเห็น การจัดรูปแบบบรรทัดโค้ดเพื่อเริ่มต้นข้อมูล ฯลฯ ตัวบ่งชี้ดังกล่าวสามารถให้บริการสำหรับการประเมินปริมาณของระบบตามวัตถุประสงค์มากขึ้น (ตัวบ่งชี้ที่ใช้การทำให้เป็นมาตรฐานมีลักษณะเหมือนกับ SLOC - จำนวนบรรทัด แต่ไม่ใช่ทางกายภาพ แต่เป็นเชิงตรรกะ) LSI ยังมีอนุพันธ์ เช่น หน่วยเมตริกที่คำนวณไม่ใช่จำนวนบรรทัดของโค้ดจริงในภาษาการเขียนโปรแกรมต้นฉบับ แต่เป็นจำนวนคำสั่งในภาษาระดับล่าง (Assembler Language, MSIL ฯลฯ) ซึ่ง ไม่จำเป็นต้องทำให้เป็นมาตรฐาน

หน่วยวัดอื่นๆ ประเภทนี้จะขึ้นอยู่กับเอนทิตีที่เฉพาะเจาะจงสำหรับกระบวนทัศน์การเขียนโปรแกรมเฉพาะ สิ่งที่ได้รับความนิยมมากที่สุดในปัจจุบันคือกระบวนทัศน์การเขียนโปรแกรมเชิงวัตถุ แต่แนวทางเชิงฟังก์ชันและขั้นตอนในการเขียนโปรแกรมก็มีชุดเมตริกเฉพาะของตัวเองเช่นกัน จากแนวทางเชิงวัตถุ ขนาดของระบบสามารถคำนวณได้ตามจำนวนคลาสที่มีอยู่ ตัวบ่งชี้จำนวนคลาสเป็นหนึ่งในตัวชี้วัดหลักในแนวทางนี้ อย่างไรก็ตาม ขึ้นอยู่กับภาษาการเขียนโปรแกรมที่ใช้ ตัวชี้วัด เช่น จำนวนเนมสเปซในโปรเจ็กต์ จำนวนโครงสร้าง การแจงนับ จำนวนวิธีการ ฯลฯ . สามารถใช้ได้ นอกจากนี้ คุณสามารถคำนวณ “ความหนาแน่น” ของตัวชี้วัดเหล่านี้ได้โดยการกำหนดอัตราส่วนของค่าของตัวชี้วัดเหล่านี้ ตัวอย่างเช่น คุณสามารถคำนวณอัตราส่วนของจำนวนคลาสต่อจำนวนวิธี และทำความเข้าใจว่าโดยเฉลี่ยในหนึ่งคลาสมีกี่วิธี อย่างไรก็ตาม จำเป็นต้องมีการวิจัยเพิ่มเติมเพื่อกำหนดค่าเกณฑ์สำหรับเมตริกประเภทนี้ วิธีที่ง่ายที่สุดในการกำหนดค่าขอบเขตอาจเป็นการทดลองที่คำนวณค่าของเมตริกเหล่านี้สำหรับระบบที่มีอยู่ การคำนวณอัตราส่วนดังกล่าวจะช่วยให้เราสามารถแก้ไขแนวคิดของระบบที่พัฒนาบนพื้นฐานของการวัดเชิงปริมาณได้

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

ความซับซ้อน

ในการประเมินและควบคุมคุณภาพของโค้ด สามารถใช้ตัววัดความซับซ้อนได้โดยตรง: ความซับซ้อนแบบไซโคลเมติก การเชื่อมโยงโค้ด ความลึกของการสืบทอด ฯลฯ

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

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

บางครั้งมีการใช้การเปลี่ยนแปลงของเมตริกที่สะท้อนถึงการเชื่อมโยงกันของโค้ด - จำนวนการเรียกการดำเนินการ ตัวชี้วัดนี้ช่วยให้คุณสามารถวัดปริมาณการเชื่อมต่อของระบบในรูปแบบของการเรียกเมธอด เมทริกจะนับการเรียกเฉพาะการดำเนินการที่ผู้ใช้กำหนดเท่านั้น ตัวอย่างเช่น ถ้าเมธอด A() เรียกเมธอด B() สามครั้ง ค่าของเมทริกนี้จะเป็นหนึ่ง หากเรียกวิธี B() หนึ่งครั้งจากวิธี A(), C() และ D() ค่าเมตริกจะเท่ากับ 3 อย่างไรก็ตาม ค่าสัมบูรณ์ของตัวชี้วัดนี้อาจแตกต่างกันอย่างมากในแต่ละโครงการ ขึ้นอยู่กับแนวทางการออกแบบและการเขียนโค้ดระบบซอฟต์แวร์ แม้จะอยู่ในทีมพัฒนาเดียวกันในโครงการที่เหมือนกัน ค่าของตัวชี้วัดนี้อาจแตกต่างกันเนื่องจากปัจจัยเชิงอัตนัย (เช่น รูปแบบของนักพัฒนารายใดรายหนึ่งเมื่อแยกตรรกะออกเป็นวิธีการแยกกัน) ที่มีอิทธิพลต่อการสร้างระบบซอฟต์แวร์

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

ตัวชี้วัดที่สำคัญอีกประการหนึ่งสำหรับการประเมินความซับซ้อนคือความลึกโดยเฉลี่ยของการสืบทอด ซึ่งคำนวณเป็นค่าเฉลี่ยของความลึกของการสืบทอดสำหรับคลาสที่ผู้ใช้กำหนดทั้งหมดในระบบ สิ่งนี้ไม่ได้คำนึงถึงคลาสบัญชีที่ไม่ได้อยู่ที่ระดับต่ำสุดของลำดับชั้นการสืบทอด ค่าเมตริกที่สูงอาจส่งสัญญาณว่าสถาปนิกของระบบซอฟต์แวร์ถูกนำไปใช้โดยเทคนิคการเขียนโปรแกรมเชิงวัตถุมากเกินไป และอาจส่งผลเสียต่อการพัฒนาระบบต่อไป การสืบทอดช่วยเพิ่มการเชื่อมโยงกันอย่างมาก ซึ่งอาจไม่สะท้อนให้เห็นในการวัดผลการประเมินระบบอื่นๆ บ่อยครั้ง เมื่อสร้างโค้ดโปรแกรม คุณสามารถหลีกเลี่ยงการใช้การสืบทอดได้โดยการแทนที่ด้วยเทคนิคที่เทียบเท่ากัน ตัวอย่างเช่น คุณสามารถใช้การพึ่งพาการฉีดและคอนเทนเนอร์ IoC แทนได้ ผลลัพธ์ของการคำนวณเมตริกนี้มักจะใช้ในรูปแบบดิบในปัญหาเชิงปฏิบัติของสถาปัตยกรรมและการปรับโครงสร้างใหม่ เมทริกผลลัพธ์ยังสามารถใช้ในเมทริกที่ซับซ้อนมากขึ้นได้ กล่าวอีกนัยหนึ่ง หากค่าของหน่วยเมตริกนี้มีขนาดใหญ่ ก็สามารถระบุความผิดปกติได้ทันที นอกจากนี้ ตัวชี้วัดนี้สามารถใช้ร่วมกับตัวชี้วัดอื่นๆ เช่น ความซับซ้อนและปริมาตรของระบบ McCabe เพื่อวัดระบบซอฟต์แวร์ได้แม่นยำยิ่งขึ้น

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

ความสามารถในการรองรับ

ตัวชี้วัดประเภทนี้แสดงความซับซ้อนของกระบวนการดูแลรักษาและพัฒนาโค้ดโปรแกรมและตามกฎแล้วจะเกี่ยวข้องอย่างใกล้ชิดกับตัวชี้วัดความซับซ้อน แต่มีลักษณะเฉพาะของตัวเองที่สะท้อนถึงความสามารถในการสนับสนุนของระบบ

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

ตัวชี้วัด Halstead เป็นเพียงการให้ข้อมูลเท่านั้น อย่างไรก็ตาม ยังคงเป็นหนึ่งในตัวชี้วัดไม่กี่ตัวที่ช่วยให้เราสามารถระบุปริมาณตัวบ่งชี้การสนับสนุนระบบในอนาคต และตัวบ่งชี้นี้มีความสัมพันธ์โดยตรงกับคุณภาพของผลิตภัณฑ์ที่เปิดตัว

เครื่องมือวิเคราะห์โค้ด

นักพัฒนาบนแพลตฟอร์ม Microsoft สามารถใช้ประโยชน์จาก Visual Studio 2008 ซึ่งช่วยให้คุณสามารถคำนวณชุดพื้นฐานของหน่วยวัดหลักและติดตามได้แบบเรียลไทม์ (รูปที่ 2) อย่างไรก็ตาม กรณีการใช้งานหลักสำหรับเมตริกคือการแจ้งให้ผู้จัดการฝ่ายพัฒนาทราบว่าคุณภาพของผลิตภัณฑ์อาจลดลงหรือเพิ่มขึ้น ดังนั้นจึงเหมาะสมที่จะคำนวณหน่วยวัดดังกล่าวในระหว่างกระบวนการสร้างโครงการ

Visual Stuido 2008 และ Microsoft Build ไม่อนุญาตให้คุณสร้างลำดับชั้นที่จริงจังของการวัดและด้วยเหตุนี้คุณควรใช้เครื่องมืออื่น ๆ เช่น NDepend ซึ่งอนุญาตให้แพลตฟอร์ม. NET สามารถคำนวณการทำงานร่วมกันประเภทต่าง ๆ การสืบทอดและนามธรรมที่รวมเข้ากับ กระบวนการสร้างโปรแกรมตามข้อกำหนดของทีมพัฒนาเฉพาะ

ปัญหาในการใช้โค้ดเมตริก

แม้ว่าตัวชี้วัดจะช่วยให้คุณสามารถควบคุมกระบวนการพัฒนาได้ แต่การทำงานกับตัวชี้วัดนั้นเกี่ยวข้องกับปัญหาหลายประการ

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

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

เซอร์เกย์ ซเวซดิน ([ป้องกันอีเมล]) – นักศึกษาระดับปริญญาโทที่ South Ural State University (Chelyabinsk)

มีการเปิดพอร์ทัลการเรียนรู้ทางไกลที่ MSU

โรงเรียนการศึกษาทางไกลของมหาวิทยาลัยแห่งรัฐมอสโก เอ็มวี Lomonosov เปิดพอร์ทัลอินเทอร์เน็ตของตัวเอง โดยเปิดให้เข้าถึงห้องสมุดอิเล็กทรอนิกส์แบบเปิดร่วมกันของมหาวิทยาลัยแห่งรัฐมอสโกและสถาบันวิทยาศาสตร์แห่งรัสเซีย หนังสือเรียนและหลักสูตร เอกสารเสียงและวิดีโอ รวมถึงโปรแกรมการศึกษาที่ใช้เทคโนโลยีการเรียนรู้ทางไกล แหล่งข้อมูลบางส่วนของพอร์ทัลมีให้เฉพาะนักศึกษาโปรแกรมการเรียนทางไกลที่ชำระค่าเล่าเรียนตามข้อตกลงกับมหาวิทยาลัยเท่านั้น วิดีโอของ MSU มีอยู่ในแล้ว ช่องมหาวิทยาลัยบน YouTube ช่องการศึกษาประกอบด้วยบันทึกการบรรยายและกิจกรรมของมหาวิทยาลัย

eLearning สำหรับ 17% ของบริษัทรัสเซียเท่านั้น

ศูนย์วิจัยของพอร์ทัล SuperJob.ru นำเสนอผลการสำรวจการฝึกอบรมออนไลน์สำหรับบุคลากรของบริษัทรัสเซีย ในบรรดานายจ้างในประเทศ การใช้อีเลิร์นนิงในการทำงานกับบุคลากรไม่ใช่เรื่องปกติ มีบริษัทเพียง 17% เท่านั้นที่เสนอการฝึกอบรมรูปแบบนี้ให้กับพนักงาน เทคโนโลยีเหล่านี้ส่วนใหญ่จะใช้ในบริษัทขนาดใหญ่ที่มีพนักงาน 5,000 คน (50%) 79% ของนายจ้างไม่ได้ใช้แนวปฏิบัตินี้เลย สาเหตุเกิดจากการขาดอุปกรณ์ทางเทคนิคที่จำเป็นหรือไม่เต็มใจของฝ่ายบริหารที่จะใช้การฝึกอบรมประเภทนี้ โดยทั่วไปแล้ว มีชาวรัสเซียเพียง 11% เท่านั้นที่มีประสบการณ์ในการเรียนทางไกล จากจำนวนนี้ 9% ของผู้ตอบแบบสอบถามพอใจกับผลลัพธ์ และ 2% ล้มเหลวในการศึกษาและลาออก ในบรรดาผู้ที่สำเร็จการฝึกอบรม มีผู้ชายมากกว่าผู้หญิงเกือบสองเท่า (11% และ 6% ตามลำดับ) ในขณะเดียวกัน ชาวรัสเซียอายุ 35 ถึง 55 ปีเรียนผ่านอินเทอร์เน็ตบ่อยกว่าคนหนุ่มสาว 12% ของผู้ตอบแบบสอบถามที่มีอายุ 40-50 ปี และเพียง 9% ของชาวรัสเซียที่มีอายุต่ำกว่า 23 ปีเท่านั้นที่สามารถมีประสบการณ์ที่ประสบความสำเร็จในการเรียนทางไกล

ผลการแข่งขัน “Maximum Scalability 2009”

การแข่งขันโครงการคอมพิวเตอร์ประสิทธิภาพสูง "Maximum Scalability" เช่นเดียวกับปีที่แล้ว จัดขึ้นเพื่อให้ตรงกับฟอรัมนาโนเทคโนโลยีระดับนานาชาติ นักวิทยาศาสตร์จาก 20 เมืองในรัสเซียอ้างชัยชนะ แต่ผู้จัดงาน Intel และ Russian Nanotechnology Corporation มอบรางวัลทั้งหมดให้กับโครงการในเมืองหลวง รางวัลกรังด์ปรีซ์เป็นของ Vladimir Bochenkov จากคณะเคมีแห่งมหาวิทยาลัยแห่งรัฐมอสโก Lomonosov สำหรับโครงการ "การพัฒนาและการใช้งานอัลกอริธึมแบบขนานสำหรับพลวัตที่เร่งด้วยอุณหภูมิ" ระบบที่ผู้เขียนเสนอทำให้สามารถศึกษาการควบแน่นของโครงสร้างนาโน เยื่อบุผิวลำแสงโมเลกุล และปฏิสัมพันธ์ของโมเลกุลทางชีววิทยาได้

การแข่งขันรายการชิงแชมป์โลกได้เริ่มต้นขึ้นแล้ว

รอบชิงชนะเลิศของการแข่งขันการเขียนโปรแกรมระดับวิทยาลัยนานาชาติ (ICPC) ประจำปีครั้งที่ 34 ซึ่งจัดโดยสมาคมเครื่องจักรคอมพิวเตอร์ (ACM) และได้รับการสนับสนุนจากไอบีเอ็ม จะนำทีมนักศึกษาที่ชนะหนึ่งร้อยทีมมาแข่งขันกันในระดับภูมิภาค พวกเขาจะได้รับปัญหาอย่างน้อยแปดข้อที่จะต้องแก้ไขใน 5 ชั่วโมง รอบชิงชนะเลิศจะมีขึ้นในวันที่ 5 กุมภาพันธ์ 2553 ที่ Harbin Engineering University (ประเทศจีน) ปัญหาในอดีตได้แก่ การค้นหาเรือที่สูญหายในทะเล การระบุตำแหน่งของเครื่องส่งสัญญาณวิทยุที่เสียหาย การคำนวณสิ่งกีดขวางในเกมกอล์ฟ การเข้ารหัสและถอดรหัสข้อความ การพิมพ์อักษรเบรลล์ และการหาทางออกจากเขาวงกต . เมื่อปีที่แล้ว ทีมรัสเซียคว้าเหรียญทองสามในสี่เหรียญมาได้ ในรอบคัดเลือก มีทีม 7,109 ทีมจากมหาวิทยาลัย 1,838 แห่งจาก 88 ประเทศเข้าร่วมการแข่งขันชิงแชมป์ เป็นปีที่สองติดต่อกันที่ทีมจากมหาวิทยาลัยเทคโนโลยีสารสนเทศ กลศาสตร์ และทัศนศาสตร์แห่งรัฐเซนต์ปีเตอร์สเบิร์ก กลายเป็นแชมป์โลก

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

สมัครสมาชิก

มาสร้างรายงานกันเถอะ ในตัวชี้วัด ให้เลือก "การบรรลุเป้าหมาย" - "เป้าหมายที่คุณได้ตั้งค่าคอนเวอร์ชันไว้" โดยปกติจะเป็นหน้า "ขอบคุณสำหรับการซื้อ"

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

กลุ่มสำหรับการกำหนดเป้าหมายใหม่และการปรับราคาเสนอ: ระดับใหม่ของความสัมพันธ์กับผู้ซื้อที่มีศักยภาพ

ในส่วนนี้ เราจะสร้างและบันทึก Yandex.Metrics และกำหนดการปรับเปลี่ยนเพื่อใช้เมื่อตั้งค่าแคมเปญโดยตรง

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

เพศและอายุ--การปรับตัว

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

เลือก: “รายงาน” – “ผู้เข้าชม” – “เพศ” (1)

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

เวลาและนาฬิกา - การปรับ

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

“รายงาน” – “ผู้เยี่ยมชม” – “การเข้าร่วมตามเวลาของวัน”

ในกลุ่มที่เราเพิ่ม: พฤติกรรม: วันที่และเวลา – “ส่วนของวันที่/เวลา” – “วันในสัปดาห์ที่เยี่ยมชม” (2) เลือกเป้าหมายและจัดเรียงตามการแปลง เราได้รับรายงานที่แสดงว่า Conversion สูงสุดคือวันใดและเมื่อใด

ภูมิศาสตร์

“รายงาน” – “ผู้เยี่ยมชม” – “ภูมิศาสตร์”

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

รายงานทางภูมิศาสตร์จะช่วยคุณค้นหาหลักสูตรสำหรับการแยกส่วนแคมเปญเพิ่มเติมใน Direct หรือระบุแคมเปญโฆษณาระดับภูมิภาคที่ให้ผลตอบแทนต่ำ

ส่วน “รถเข็นที่ถูกลืม”

เราสร้าง: “รายงาน” – “ผู้เยี่ยมชม” – “เวลาตั้งแต่การเยี่ยมชมครั้งแรก”

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

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

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

ไปที่รายงาน “แหล่งที่มา” – “สรุป” ที่คุ้นเคยอยู่แล้ว ทำเครื่องหมายถูกเฉพาะในคอลัมน์ “Conversion ของการโฆษณา” คลิก + และเลือกจากเมนู: “พฤติกรรม” – “การบรรลุเป้าหมาย” – “เป้าหมาย: เพิ่มลงในรถเข็นแล้ว ” (ต้องตั้งเป้าหมาย JavaScript เป็นปุ่ม "เพิ่มลงตะกร้า") เราบันทึกและตั้งชื่อเซ็กเมนต์ ตอนนี้ไปที่ Direct

เราพบโฆษณาที่ต้องการแสดงต่อกลุ่มนี้ คลิก "เงื่อนไขการเลือกผู้ชม" จากนั้นคลิก "เพิ่มเงื่อนไข"

รายงานการวิเคราะห์เว็บไซต์: ศึกษาและปรับปรุง

เว็บไวเซอร์

ข้อมูลจะช่วยเราระบุจุดอ่อนของไซต์และทำความเข้าใจว่าผู้ใช้พบปัญหาอะไรบ้าง

มาดูส่วน Webvisor สำหรับการเข้าชมที่บรรลุเป้าหมายระดับมหภาคของเรา

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

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

เลื่อน/คลิกแผนที่

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

ผลลัพธ์ที่ได้คือเปอร์เซ็นต์การปฏิเสธที่สูง เนื่องจากที่ตั้งสำนักงานขององค์กรมีความสำคัญต่อลูกค้าที่มากับคำขอดังกล่าว

วิดีโอการฝึกอบรม Yandex.Metrica: บทนำ

ดูวิดีโอ

สิ่งที่สามารถติดตามได้โดยใช้ Metrica

ดึงดูดนักท่องเที่ยว

รายงานโดยตรงใน Metrica แสดงให้เห็นอย่างชัดเจนว่าแคมเปญ โฆษณา วลี และคำค้นหาใดที่นำผู้เข้าชมมายังเว็บไซต์ของคุณ จากภูมิภาคใด และจากแพลตฟอร์มโฆษณาใด ใช้ข้อมูลนี้เพื่อเพิ่มประสิทธิภาพแคมเปญของคุณ

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

ผู้ชมไซต์

ใน Metrica คุณสามารถรับคุณลักษณะโดยละเอียดของผู้ชมของคุณได้ เพศ อายุ และความสนใจของผู้เยี่ยมชมคำนวณโดยการวิเคราะห์พฤติกรรมของพวกเขาบนอินเทอร์เน็ตโดยใช้เทคโนโลยี Crypt จากข้อมูลนี้ การโฆษณาสามารถทำให้มีความเกี่ยวข้องมากขึ้นและเพิ่มประสิทธิภาพได้

บรรลุเป้าหมายและการแปลง

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

ตัวอย่างเช่น ผู้ซื้อของคุณอาจเป็นผู้เข้าชมที่:

  • คลิกปุ่ม "หยิบลงตะกร้า";
  • จากรถเข็นไปยังหน้า "ขอบคุณสำหรับการซื้อของคุณ"เมื่อทำการสั่งซื้อ
  • เยี่ยมชมเว็บไซต์อย่างน้อยสองหน้า
  • ไปที่หน้าพร้อมข้อมูลติดต่อ
  • ลงทะเบียนบนเว็บไซต์หรือสมัครรับจดหมายข่าว

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

รายได้

เจ้าของร้านค้าออนไลน์สามารถรับข้อมูลโดยละเอียดใน Metrica เกี่ยวกับคำสั่งซื้อบนเว็บไซต์ของร้านค้า คุณสามารถดูจำนวนเงินที่แต่ละคำสั่งซื้อนำเข้ามาและช่องทางใดที่คำสั่งซื้อทำกำไรได้มากที่สุด

ในอินเทอร์เฟซ Metrica คุณสามารถประมาณการต้นทุนการโฆษณาของคุณโดยตรงได้อย่างรวดเร็ว ตัวอย่างเช่น คุณสามารถดูต้นทุนการโฆษณาทั้งหมด ค้นหาต้นทุนเฉลี่ยของ Conversion สำหรับแคมเปญโฆษณาทั้งหมดของคุณ และประมาณต้นทุนเฉลี่ยหรือต้นทุนรวมของการคลิกสำหรับอุปกรณ์ ภูมิภาค ข้อความค้นหา หรือแพลตฟอร์มบางประเภท

การโทรที่ตรงเป้าหมาย

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

วิธีการเริ่มเก็บสถิติ

    ติดตั้งรหัสตัวนับในทุกหน้าของไซต์ของคุณให้ใกล้กับด้านบนของหน้ามากที่สุด - ความสมบูรณ์ของข้อมูลที่รวบรวมขึ้นอยู่กับสิ่งนี้ คุณสามารถตรวจสอบความถูกต้องของการติดตั้งตัวนับได้ในคอนโซลของเบราว์เซอร์

    หากคุณสร้างแคมเปญจำนวนมากโดยใช้ชุดตัวนับเดียวกัน คุณสามารถระบุตัวนับในหน้าการตั้งค่าผู้ใช้ในช่อง ตัวนับเมตริกสำหรับแคมเปญใหม่.

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

    มาร์กอัปลิงก์ทำงานอย่างไร

    ความสนใจ. หากไม่ได้กรอกข้อมูลในฟิลด์ในพารามิเตอร์แคมเปญ เคาน์เตอร์เมตริกและตัวเลือกนี้ถูกปิดใช้งาน ทำเครื่องหมายลิงก์สำหรับ Metricaจากนั้น ข้อมูลการคลิกโฆษณาจะไม่รวมอยู่ใน Metrica และข้อมูลจาก Metrica จะไม่รวมอยู่ในสถิติโดยตรง

คำถามและคำตอบ

ข้อมูลในรายงาน Metrica อัปเดตเร็วแค่ไหน

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

ข้อมูลเกี่ยวกับการบรรลุเป้าหมายจะเข้าสู่ Direct ได้เร็วเพียงใด

ข้อมูลการบรรลุเป้าหมายจะถูกส่งไปยัง Direct ภายใน 24 ชั่วโมง

เหตุใดข้อมูลในสถิติโดยตรงจึงแตกต่างจากข้อมูลใน Metrica

เนื่องจากวิธีการเชิงปริมาณได้พิสูจน์ตัวเองแล้วในสาขาอื่นๆ นักทฤษฎีและผู้ปฏิบัติงานด้านวิทยาการคอมพิวเตอร์จำนวนมากจึงพยายามถ่ายทอดแนวทางนี้ไปสู่การพัฒนาซอฟต์แวร์ ดังที่ Tom DeMarco กล่าวว่า “คุณไม่สามารถควบคุมสิ่งที่คุณวัดไม่ได้ได้”

เมตริก

ชุดเมตริกที่ใช้ประกอบด้วย:

  • ลำดับการเติบโต (หมายถึงการวิเคราะห์อัลกอริธึมในแง่ของการวิเคราะห์เชิงเส้นกำกับและสัญลักษณ์ O)
  • การวิเคราะห์จุดฟังก์ชัน
  • จำนวนข้อผิดพลาดต่อโค้ด 1,000 บรรทัด
  • ระดับความครอบคลุมของโค้ดโดยการทดสอบ
  • จำนวนคลาสและอินเทอร์เฟซ
  • การวัดแพ็คเกจซอฟต์แวร์จาก Robert Cecil Martin

การวิพากษ์วิจารณ์

ข้อบกพร่องที่อาจเกิดขึ้นของแนวทางที่ตกเป็นเป้าหมายของการวิจารณ์:

  • ผิดจรรยาบรรณ: เป็นที่ถกเถียงกันอยู่ว่าการตัดสินประสิทธิภาพของโปรแกรมเมอร์โดยพิจารณาจากตัวชี้วัดที่แนะนำเพื่อประเมินประสิทธิภาพของโค้ดโปรแกรมนั้นผิดจรรยาบรรณ ตัวชี้วัดที่รู้จักกันดีเช่นจำนวนบรรทัดของโค้ดและความซับซ้อนของไซโคลมาติกมักให้แนวคิดผิวเผินเกี่ยวกับ "ความสำเร็จ" ในการเลือกวิธีการเฉพาะในการแก้ปัญหา อย่างไรก็ตาม มักถือเป็นเครื่องมือในการประเมิน คุณภาพของงานของนักพัฒนา แนวทางนี้มักจะนำไปสู่ผลที่ตรงกันข้าม นำไปสู่การปรากฏของโครงสร้างที่ยาวขึ้นและวิธีทางเลือกที่ซ้ำซ้อนในโค้ด
  • แทนที่ “การบริหารคน” ด้วย “การบริหารจำนวน” ซึ่งไม่คำนึงถึงประสบการณ์ของพนักงานและคุณสมบัติอื่นๆ ของพนักงาน
  • การบิดเบือน: กระบวนการวัดสามารถบิดเบือนได้เนื่องจากพนักงานตระหนักถึงตัวบ่งชี้ที่กำลังวัด และพยายามเพิ่มประสิทธิภาพตัวบ่งชี้เหล่านี้มากกว่าประสิทธิภาพการทำงาน ตัวอย่างเช่น หากจำนวนบรรทัดของซอร์สโค้ดเป็นตัวบ่งชี้ที่สำคัญ โปรแกรมเมอร์จะพยายามเขียนบรรทัดให้ได้มากที่สุด และจะไม่ใช้เทคนิคการลดความซับซ้อนของโค้ดที่ลดจำนวนบรรทัด
  • ความไม่ถูกต้อง: ไม่มีตัวชี้วัดใดที่ทั้งมีความหมายและแม่นยำเพียงพอ จำนวนบรรทัดของโค้ดเป็นเพียงจำนวนบรรทัด ตัวบ่งชี้นี้ไม่ได้ให้แนวคิดเกี่ยวกับความซับซ้อนของปัญหาที่กำลังแก้ไข การวิเคราะห์จุดฟังก์ชันได้รับการพัฒนาเพื่อให้สามารถวัดโค้ดและความซับซ้อนของข้อกำหนดได้ดีขึ้น แต่จะใช้วิจารณญาณส่วนบุคคลของผู้วัด ดังนั้น แต่ละคนจะได้ผลลัพธ์ที่แตกต่างกัน

ดูเพิ่มเติม

  • ตัวชี้วัดโค้ดพื้นฐาน: LOC, SLOC, Gilb, McCabe, Halstead, OOP และอื่นๆ

มูลนิธิวิกิมีเดีย

  • 2010.
  • มาตรวัดระยะทาง

หูฟังของแพทย์

    ดูว่า "Software Metrics" ในพจนานุกรมอื่นๆ คืออะไร:

    คุณภาพของซอฟต์แวร์การประมาณต้นทุนการพัฒนาซอฟต์แวร์

    - เมื่อพัฒนาซอฟต์แวร์ ปัญหาในการประมาณต้นทุนวัสดุและ/หรือเวลาที่ใช้ในการทำให้โครงการสำเร็จลุล่วงเป็นสิ่งสำคัญมาก มีหลายวิธีในการประเมิน เช่น วิธีทั่วไป... ... Wikipediaเมตริก

    - มีหลายความหมาย: ในทางคณิตศาสตร์ เมตริกเป็นฟังก์ชันที่กำหนดระยะทางในพื้นที่เมตริก เมตริกเป็นอีกชื่อหนึ่งสำหรับเมตริกเทนเซอร์ โดยเฉพาะเมตริกของกาล-อวกาศ 4 เทนเซอร์ ซึ่ง ... ... Wikipedia- คำนี้มีความหมายอื่น ดูความครอบคลุม การครอบคลุมโค้ดเป็นการวัดที่ใช้ในการทดสอบซอฟต์แวร์ มันแสดงเปอร์เซ็นต์ที่ซอร์สโค้ดของโปรแกรมได้รับการทดสอบ เทคนิคการครอบคลุมโค้ดคือ... ... Wikipedia

    จำนวนบรรทัดของโค้ด- ดูเพิ่มเติม: Code Volume Source Lines ของ Code SLOC คือซอฟต์แวร์เมตริกที่ใช้ในการวัดปริมาตรโดยการนับจำนวนบรรทัดในข้อความซอร์สโค้ด ตามกฎแล้ว ... ... Wikipedia

    การทดสอบโหลด- (การทดสอบโหลดภาษาอังกฤษ) การกำหนดหรือการรวบรวมตัวบ่งชี้ประสิทธิภาพและเวลาตอบสนองของระบบซอฟต์แวร์ฮาร์ดแวร์หรืออุปกรณ์เพื่อตอบสนองต่อการร้องขอจากภายนอกเพื่อสร้างการปฏิบัติตามข้อกำหนดสำหรับระบบที่กำหนด ... Wikipedia

    การทดสอบประสิทธิภาพ- บทความนี้ไม่มีลิงก์ไปยังแหล่งข้อมูล ข้อมูลจะต้องสามารถตรวจสอบได้ มิฉะนั้นอาจถูกซักถามและลบทิ้ง คุณสามารถ... วิกิพีเดีย

    สครัม- การพัฒนาซอฟต์แวร์ กระบวนการพัฒนาซอฟต์แวร์ ขั้นตอนกระบวนการ การวิเคราะห์ การออกแบบ เอกสารการเขียนโปรแกรม ... Wikipedia

    ความซับซ้อนแบบไซโคลมาติก- โปรแกรม (อังกฤษ: ความซับซ้อนแบบไซโคลเมติกของโปรแกรม) การวัดเชิงโครงสร้าง (หรือโทโพโลยี) ของความซับซ้อนของโปรแกรม ใช้ในการวัดคุณภาพซอฟต์แวร์ โดยอาศัยวิธีการวิเคราะห์โค้ดแบบคงที่ DSP เท่ากับ ... ... Wikipedia

    แซบบิกซ์- 1.1 อัลฟา 6 ทำงานภายใต้ GNU/Linux... Wikipedia