อ่าน 2 นาที
ชุดเครื่องมือปรับปรุงโครงสร้างซอฟต์แวร์ DMS
ชุด เครื่องมือปรับปรุงซอฟต์แวร์ DMS เป็นชุด เครื่องมือ แปลงโปรแกรม ที่เป็นกรรมสิทธิ์ ซึ่งมีให้ใช้งานสำหรับการวิเคราะห์โปรแกรมต้นฉบับแบบกำหนดเอง การแก้ไข การแปล...
ชุดเครื่องมือปรับปรุงโครงสร้างซอฟต์แวร์ DMS
| ชุดเครื่องมือปรับปรุงโครงสร้างซอฟต์แวร์ DMS | |
|---|---|
| นักพัฒนา | การออกแบบเชิงความหมาย |
| ใบอนุญาต | กรรมสิทธิ์ |
| เว็บไซต์ | www.semanticdesigns.com/Products/DMS/DMSToolkit.html |
ชุดเครื่องมือปรับปรุงซอฟต์แวร์ DMSเป็นชุด เครื่องมือ แปลงโปรแกรม ที่เป็นกรรมสิทธิ์ ซึ่งมีให้ใช้งานสำหรับการวิเคราะห์โปรแกรมต้นฉบับแบบกำหนดเอง การแก้ไข การแปล หรือการสร้างระบบซอฟต์แวร์โดยอัตโนมัติสำหรับส่วนผสมของภาษาต้นฉบับใดๆ สำหรับระบบซอฟต์แวร์ขนาดใหญ่[ 1 ] DMS ได้รับแรงบันดาลใจมาจากทฤษฎีการบำรุงรักษาการออกแบบซอฟต์แวร์ที่เรียกว่าระบบการบำรุงรักษาการออกแบบ[ 2 ] DMS และ "ระบบการบำรุงรักษาการออกแบบ" เป็นเครื่องหมายการค้าจดทะเบียนของ Semantic Designs
การใช้งาน
DMS ถูกนำมาใช้เพื่อใช้งานภาษาเฉพาะโดเมน (เช่น การสร้างโค้ดสำหรับการควบคุมโรงงาน) การครอบคลุมการทดสอบ[ 3 ]และเครื่องมือวิเคราะห์ประสิทธิภาพ การตรวจ จับโคลน[ 4 ]เครื่องมือการย้ายภาษา การปรับปรุงองค์ประกอบ C++ [ 5 ]และสำหรับการวิจัยในหัวข้อที่ยาก เช่น การปรับโครงสร้าง C++ อย่างน่าเชื่อถือ[ 6 ]
คุณสมบัติ
ชุดเครื่องมือนี้มีวิธีการในการกำหนดไวยากรณ์ของภาษา และจะสร้างตัวแยกวิเคราะห์ซึ่งจะสร้างแผนผังไวยากรณ์นามธรรม (AST) โดยอัตโนมัติ และตัวจัดรูป แบบข้อความ เพื่อแปลง AST ดั้งเดิมหรือที่แก้ไขแล้วกลับไปเป็นข้อความต้นฉบับที่สามารถคอมไพล์ได้ แผนผังการแยกวิเคราะห์จะบันทึก และตัวจัดรูปแบบข้อความจะสร้างรายละเอียดทั้งหมดเกี่ยวกับโปรแกรมต้นฉบับขึ้นใหม่ รวมถึงตำแหน่งของโค้ด คำอธิบาย ฐานและรูปแบบของตัวเลข ฯลฯ เพื่อให้แน่ใจว่าข้อความต้นฉบับที่สร้างขึ้นใหม่นั้นสามารถจดจำได้ง่ายสำหรับโปรแกรมเมอร์เช่นเดียวกับข้อความต้นฉบับ โดยไม่คำนึงถึงการแปลงใดๆ ที่ใช้
DMS ใช้ เทคโนโลยีการแยกวิเคราะห์ GLRร่วมกับ述语เชิงความหมาย ทำให้สามารถจัดการกับไวยากรณ์แบบไร้บริบททั้งหมด รวมถึงไวยากรณ์ของภาษาที่ไม่ใช่แบบไร้บริบทส่วนใหญ่ เช่นFortranซึ่งต้องจับคู่ลูป DO หลายลูปกับคำสั่ง CONTINUE ที่ใช้ร่วมกันโดยใช้ป้ายกำกับเพื่อสร้าง AST สำหรับลูปที่ซ้อนกันอย่างถูกต้องในระหว่างการแยกวิเคราะห์ DMS มีส่วนหน้าของภาษาที่กำหนดไว้ล่วงหน้าหลากหลาย ครอบคลุมภาษาถิ่นส่วนใหญ่ของCและC++รวมถึงC++0x , C# , Java , Python , PHP , EGL , Fortran , COBOL , Visual Basic , Verilog , VHDLและภาษาอื่นๆ อีกกว่า 20 ภาษา DMS สามารถจัดการกับASCII , ISO-8859 , UTF-8 , UTF-16 , EBCDIC , Shift-JISและการเข้ารหัสอักขระของ Microsoft ได้หลากหลาย
DMS มี ตัวประเมิน ไวยากรณ์แอตทริบิวต์สำหรับการคำนวณการวิเคราะห์แบบกำหนดเองบน AST เช่น เมตริก และรวมถึงการสนับสนุน การสร้าง ตารางสัญลักษณ์ข้อเท็จจริงของโปรแกรมอื่นๆ สามารถดึงออกมาได้โดยใช้ กลไก การวิเคราะห์การไหล ของควบคุมและข้อมูลใน ตัว การวิเคราะห์ตัวชี้แบบโลคอลและโกลบอล การดึง กราฟการเรียกโปรแกรมทั้งหมดและการวิเคราะห์ช่วงสัญลักษณ์โดย การ ตีความ แบบนามธรรม
DMS ถูกนำไปใช้ใน ภาษา การเขียนโปรแกรมแบบขนาน PARLANSE ซึ่งช่วยให้สามารถใช้การประมวลผลแบบหลายโปรเซสแบบสมมาตรเพื่อเร่งความเร็วในการวิเคราะห์และการแปลงข้อมูลขนาดใหญ่[ 7 ]
การเขียนใหม่
การเปลี่ยนแปลง AST สามารถทำได้ทั้งโดยวิธีการเชิงกระบวนการที่เขียนโค้ดด้วย PARLANSE และการแปลงโครงสร้างต้นไม้จากซอร์สโค้ดหนึ่งไปยังอีกซอร์สโค้ดหนึ่งที่เขียนโค้ดเป็นกฎการเขียนใหม่โดยใช้ไวยากรณ์พื้นผิวที่กำหนดเงื่อนไขโดยข้อเท็จจริงของโปรแกรมที่ดึงออกมา โดยใช้ภาษาการกำหนดกฎ (RSL) ของ DMS กลไกกฎการเขียนใหม่ที่รองรับ RSL สามารถจัดการกฎแบบเชื่อมโยงและแบบสลับที่ได้ กฎการเขียนใหม่สำหรับภาษา C เพื่อแทนที่เงื่อนไขที่ซับซ้อนด้วย?:ตัวดำเนินการสามารถเขียนได้ดังนี้:
rule simplify_conditional_assignment(v:left_hand_side,e1:expression,e2:expression,e3:expression) :ข้อความ->ข้อความ = " ถ้า (\e1) \v=\e2; มิฉะนั้น \v=e3; " -> " \v=\e1?\e2:\e3; " หากไม่มีผลข้างเคียง (v); กฎการเขียนใหม่จะมีชื่อ เช่นsimplify_conditional_assignmentแต่ละกฎจะมี รูปแบบ "จับคู่สิ่งนี้"และ"แทนที่ด้วยสิ่งนั้น"เป็นคู่ๆ โดยคั่นด้วย->ในตัวอย่างของเรา รูปแบบเหล่านี้อยู่คนละบรรทัดเพื่อให้อ่านง่าย รูปแบบต้องสอดคล้องกับหมวดหมู่ไวยากรณ์ของภาษา ในกรณีนี้ รูปแบบทั้งสองต้องเป็นหมวดหมู่ไวยากรณ์statementและคั่นด้วย-> เช่น กัน ไวยากรณ์พื้นผิวของภาษาเป้าหมาย (เช่น C) จะถูกเข้ารหัสไว้ภายในเมตาควาเต็ด"เพื่อแยกไวยากรณ์ของกฎการเขียนใหม่จากไวยากรณ์ของภาษาเป้าหมาย เครื่องหมายแบ็กสแลชภายในเมตาควาเต็ดแสดงถึงการหลีกเลี่ยงโดเมน เพื่อระบุตัวแปรเมตาของรูปแบบ (เช่น\v , \e1 , \e2 ) ที่ตรงกับโครงสร้างภาษาใดๆ ที่สอดคล้องกับการประกาศตัวแปรเมตาในบรรทัดลายเซ็น เช่นe1ต้องมีหมวดหมู่ทางไวยากรณ์: (นิพจน์ใดๆ)หากมีการกล่าวถึงตัวแปรเมตาหลายครั้งใน รูปแบบ การจับคู่ ตัวแปรเม ตานั้นต้องตรงกับซับทรีที่เหมือนกัน ตัวแปรv ที่มีรูปร่างเหมือนกัน ต้องปรากฏในการกำหนดค่าทั้งสองในรูปแบบการจับคู่ในตัวอย่างนี้ ตัวแปรเมตาในรูปแบบการแทนที่จะถูกแทนที่ด้วยการจับคู่ที่สอดคล้องกันจากด้านซ้าย เงื่อนไขif จะให้เงื่อนไขเพิ่มเติมที่ต้องเป็นไปตามนั้นเพื่อให้กฎนั้นใช้ได้ เช่น ตัวแปรเมตา vที่ตรงกันซึ่งเป็นด้านซ้ายมือที่กำหนดขึ้นเอง จะต้องไม่มีผลข้างเคียง (เช่น ไม่สามารถอยู่ในรูปแบบของa[i++]ได้) เงื่อนไข no_side_effectsถูกกำหนดโดยตัววิเคราะห์ที่สร้างขึ้นด้วยกลไก DMS อื่นๆ)
การแปลงโค้ดที่ซับซ้อนให้ได้ผลนั้น ต้องอาศัยการกำหนดกฎเกณฑ์หลายชุดที่ทำงานร่วมกันเพื่อให้ได้ผลลัพธ์ที่ต้องการ โดยชุดกฎเกณฑ์นี้จะเน้นไปที่ส่วนต่างๆ ของโปรแกรมโดยใช้เมตาโปรแกรมที่เขียนด้วยภาษา PARLANSE
ตัวอย่างที่สมบูรณ์ของการกำหนดและประยุกต์ใช้กฎการแปลงข้อมูลจากแหล่งหนึ่งไปยังอีกแหล่งหนึ่งโดยใช้พีชคณิต ระดับมัธยมปลายและ แคลคูลัสเล็กน้อยเป็นภาษาเฉพาะโดเมน ได้ ถูกนำเสนอไว้ในที่นี้
ลิงก์ภายนอก
- หน้าหลักของชุดเครื่องมือปรับปรุงซอฟต์แวร์ DMS
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ชุดเครื่องมือปรับปรุงโครงสร้างซอฟต์แวร์ DMS
ชุด เครื่องมือปรับปรุงซอฟต์แวร์ DMS เป็นชุด เครื่องมือ แปลงโปรแกรม ที่เป็นกรรมสิทธิ์ ซึ่งมีให้ใช้งานสำหรับการวิเคราะห์โปรแกรมต้นฉบับแบบกำหนดเอง การแก้ไข การแปล...
การใช้งาน
DMS ถูกนำมาใช้เพื่อใช้งาน ภาษาเฉพาะโดเมน (เช่น การสร้างโค้ดสำหรับการควบคุมโรงงาน) การครอบคลุมการทดสอบ [ 3 ] และเครื่องมือวิเคราะห์ประสิทธิภาพ การตรวจ จับ โคลน [ 4 ] เครื่องมือการย้ายภาษา การปรับปรุงองค์ประกอบ C++ [ 5 ] และสำหรับการวิจัยในหัวข้อที่ยาก เช่น...
คุณสมบัติ
ชุดเครื่องมือนี้มีวิธีการในการกำหนดไวยากรณ์ของภาษา และจะสร้าง ตัวแยกวิเคราะห์ ซึ่งจะสร้าง แผนผังไวยากรณ์นามธรรม (AST) โดยอัตโนมัติ และ ตัวจัดรูป แบบข้อความ เพื่อแปลง AST ดั้งเดิมหรือที่แก้ไขแล้วกลับไปเป็นข้อความต้นฉบับที่สามารถคอมไพล์ได้...
การเขียนใหม่
การเปลี่ยนแปลง AST สามารถทำได้ทั้งโดยวิธีการเชิงกระบวนการที่เขียนโค้ดด้วย PARLANSE และการแปลงโครงสร้างต้นไม้จากซอร์สโค้ดหนึ่งไปยังอีกซอร์สโค้ดหนึ่งที่เขียนโค้ดเป็น กฎการเขียนใหม่ โดยใช้ไวยากรณ์พื้นผิวที่กำหนดเงื่อนไขโดยข้อเท็จจริงของโปรแกรมที่ดึงออกมา...