เนื่องจากทฤษฎีการจับคู่ได้มีงานวิจัยหลายชิ้น ที่เสนอรูปแบบการจับคู่ requirement ซึ่งมีงานวิจัยชิ้นหนึ่งที่น่าสนใจโดยวิเคราะห์การจับคู่ ด้วยหลักการ จำแนกเทคนิคการจับคู่บนพื้นฐานลักษณะเฉพาะในแต่ละส่วนโมดูล โดยพิจารณาโมดูลที่แสดงถึงลักษณะเด่นที่ช่วยให้จับคู่ได้ง่าย(visible entity )เช่น ชื่อ พารามิเตอร์ และ โมดูลที่อยู่ในสภาพกำลังใช้งาน (use of state invariant ) ซึ่งงานวิจัย
" Specification matching of state-based modular components " นี้เป็นของ
David Hemer : School of Information Technology and Electrical Engineering ,Univerity of Queensland ตีพิมพ์ ที่
IEEE ปี 2003
ในงานวิจัยนี้กล่าวถึง
- การใช้เทคนิคอธิบายคุณลักษณะการจับคู่แต่ละ method ด้วยพื้นฐานเฉพาะแต่ละฟังก์ชัน แล้วพิจารณาผลความต้องการจากการดำเนินการด้วยค่าพารามิเตอร์ ทั้งก่อนดำเนินการและหลังดำเนินการ
- จับคู่บนพื้นฐานเฉพาะในแต่ละโมดูลโดยพิจารณา 2 ส่วนคือ visible entity และ use of state invariant
- ใช้หลักการ Component-base software engineering โดยพิจารณาจากโครงสร้างส่วนประกอบต่างๆที่คล้ายคลึงกัน ให้เหมาะสมกับแต่ละ component โดย Component-base เราสามารถนำบางส่วนของ componet มาทำการ reuse ,ปรับให้เข้ากัน,รวมกัน และ ประกอบเข้าเป็นความต้องการของผู้ใช้ ตรงตาม library component ที่กำหนดไว้
โดยในงานวิจัยนี้ ได้ใช้ ภาษาเชิงอุปนัยเชิงคณิตศาสตร์ ด้วย Z notation เพื่อแก้ปัญหาการเขียนข้อกำหนดความต้องการแบบเดิมที่เขียนในรูป text ที่อาจมีความกำกวม ขาดความแม่นยำ
ข้อกำหนดการจับคู่
จะมีรูปแบบการจับคู่อยู่ 2 แบบด้วยกันคือจับคู่โดยพิจารณาจากค่าพารามิเตอร์ (Signature matching ) และ พิจารณาจากผลดำเนินการของค่าพารามิเตอร์ด้วยเงื่อนไขการดำเนินการทั้งก่อนและหลัง (Specification matching)
Signature Matching จะพิจารณาความเหมือนกันของชนิดของพารามิเตอร์ (Parameter Type) โดย type ระหว่าง Query ที่ทำการค้นกับ Library Component ที่มีอยู่ต้อง equivalent type แต่พบปัญหา จากการจับคู่โดยพิจารณาจาก equivalent type คือถ้ามีการพ้องรูป หรือ polymorphic type อาจจะทำให้จับคู่ไม่เป็นไปตามความต้องการได้ จึงต้องเพิ่มการพิจารณาการจับคู่นอกเหนือจาก Parameter Type ด้วยวิธีที่เรียกว่า Specification matching โดยพิจารณารายละเอียดของการดำเนินการตามเงื่อนไขของแต่ละโอเปอเรชั่นในส่วน Signature เช่น input output precondition postcondition
โดยเราแบ่งผลของการเข้าคู่ได้เป็นแบบ การเข้าคู่อย่างเท่ากันและถูกต้อง คือเหมือนกันทุกกรณี (exact match) และ เข้ากันคู่กันได้แม้ว่าค่าพารามิเตอร์จะต่างกันแต่ในความหมายแล้วมีความครอบคลุมเฉพาะ หรือเป็น subtype กัน( partial match หรือ relax match)
ในมุมมองงานวิจัยนี้ จะ มองข้อกำหนดเป็นโมดูล ซึ่งแต่ละโมดูลจะประกอบด้วยค่า parameter ,การ importing module ,visible entities ซึ่งการจำแนกข้อกำหนดให้เป็นโมดูลนั้นจะจำแนกเป็น state schemas,initialisation schemas,operation schemas ดังแสดงในรูปดังนี้

โดยค่า
parameterisation : คือ ค่าของตัวแปรในโมดูลภายใต้ขอบเขตของ
set of entities . Entities เหล่านี้จะประกอบด้วย given sets,operations ,functions
Importing modules: จะประกาศในส่วน module ที่อ้างถึงว่าต้องการใช้โมดูลอะไร.
การ import นำเข้าmodule ตามข้อกำหนดที่ต้องการใช้ , และต้องให้บริการโดยกำหนดค่าตัวแปรของค่าตัวแปรทั้งหมดในโมดูล
คำสั่ง imports Stack module, เมื่อต้องการใช้ Stack module และกำหนดค่าตัวแปรจาก set E เป็น set of natural numbers N.
จากนั้น Import คำสั่งที่สามารถเปลี่ยนชื่อใหม่ ของทุก entities ที่ปรากฏใน module, ซึ่งประกอบด้วย state variables, operations, functions และ relations. เพื่อทำการเข้าคู่กัน(ซึ่งจุดด้อยของงานวิจัยนี้คือต้องอาศัย context match หรือ sense ของผู้จับคู่ว่าควรImport อะไรคู่กับอะไร)
โดยพิจารณาคำสั่ง import ที่ให้ผลที่เหมือนกันจากคำสั่งก่อนหน้านี้, จากตัวอย่างจะมีการเปลี่ยนชื่อใหม่ของ state variable elements ไปยัง stacknats, the operation Push ไปยัง PushNat, และ the operation Pop ไปยัง PopNat.
Visible entities: จะทำให้โครงสร้างและขอบเขตของโมดูลแคบลง ด้วยการแสดงลักษณะเด่นที่ ต้องการเข้าไปไม่ต้องอ้างอิงชื่อทั้งหมดเหมือน
Importing modules
Module matching
จะแบ่งเป็น Unit matching ,การพิจารณาโดยจับคู่แบบ exact และ การพิจารณาโดยจับคู่แบบ relax ด้วย Entity subset matching
Unit matching: จะเป็นการจับคู่โดยพิจารณาเป็นหน่วยแต่ละหน่วยเพื่อจับคู่ modules,เราต้องการ methods สำหรับการจับคู่เฉพาะหน่วยที่ปรากฎให้เห็นใน modules.
ในงานวิจัยนี้จะจำกัดความสนใจไปที่หน่วย 3 ชนิดคือ:
state schemas; initialisation schemas; และ operation schemas.
เราจำแนกความต้องการสำหรับการจับคู่ของแต่ละชนิดแยกกัน ; โดยไม่พยายามจับคู่หน่วยของชนิดที่แตกต่างกันไป.
State schemas : ที่ state schemas ของ Q และ S จะเข้าคู่กันได้ถ้า ทุกค่าพารามิเตอร์ของ state ที่แสดงใน Q สามารถบ่งถึงหรือนำไปแทนที่ใน state ของ S ได้ โดยขั้นตอนวิธีมีดังนี้
1. พิจารณาชื่อสถานะที่สอดคล้องกัน (จุดด้อยอันหนึ่งของงานวิจัยนี้) แล้วทำการเปลี่ยนชื่อตัวแปร ให้สอดคล้องกับชื่อที่ทำการเข้าคู่

2.พิจารณาค่าชนิดพารามิเตอร์ โดย ค่าชนิดพารามิเตอร์ใน Q ต้องเป็นชนิดเดียวกับ S หรือเป็น Subtype ที่สอดคล้องกับชนิดพารามิเตอร์ของ S โดยเมื่อแทนค่าลงไปในชื่อตัวแปรที่เปลี่ยนใน (1)เพื่อสอดคล้องกันแล้ว ผลของชนิดพารามิเตอร์ ต้องเท่ากันหรือสอดคล้องกันด้วย

โดยเมื่อทำการรีเนมชื่อแล้วผลคือค่าพารามิเตอร์ทุกตัวใน Q สามารถบ่งบอกถึงค่าบางตัวใน S ได้
– Initialisation schemas : จะเป็นในส่วนของค่าเริ่มต้นของการดำเนินการ โดยพิจารณาการเข้าคู่ได้ว่าเมื่อมีการเปลี่ยนชื่อแล้วแทนค่าเข้าไปต้องบอกถึงตัวที่จะจับคู่ได้
– Operation Schemas: จะเป็นส่วนดำเนินการแต่ละอันภายใต้ข้อกำหนดที่เราเขียนขึ้นโดยการจับคู่จะพิจารณาจากการดำเนินการที่ไกล้เคียงกัน สอดคล้องกัน หรือพิจารณาจากลักษณะเด่นที่แสดงถึงว่าการดำเนินการนี้เกี่ยวข้องกันแล้วทำการเข้าคู่โดยจะเข้าคู่ได้นั้นต้องพิจารณา จากชื่อว่าสอดคล้องกันหรือไม่ ชนิดค่าพารามิเตอร์ว่าเหมือนกันหรือเป็น Subtype กันหรือไม่ จากนั้นพิจารณาผลการดำเนินการ ทั้งก่อนการดำเนินการและหลังดำเนินการว่า Q สามารถแสดงถึงว่าเป็น S ได้หรือบ่งบอกว่าเป็น S ได้ก็คือเข้าคู่กันได้นั่นเอง โดยเราพิจารณาดังนี้
ในส่วนของเงื่อนไขก่อนดำเนินการ ค่า precondition ของ S จะ weaker กว่า ค่า precondition ของ Q คือเงื่อนไขก่อนดำเนินการทุกตัวใน Q สามารถบ่งบอกถึง S ได้แต่ไม่ได้บ่งบอกถึง S ได้ทั้งหมด
ในส่วนเงื่อนไขหลังดำเนินการหรือผลจากการดำเนินการ ค่า postcondition ของ S จะstronger กว่า ค่า postcondition ของ Q คือเงื่อนไขหลังการดำเนินการทุกตัวใน S สามารถบ่งบอกถึงผลที่ได้สืบเนื่องมาจากผลของการดำเนินการของ Q ได้
โดยในงานวิจัยนี้สามารถสรุปได้ว่า
การจับคู่ข้อกำหนดให้ตรงตามต้องการนั้นถ้าพิจารณาเป็นส่วนๆบนพื้นฐานเฉพาะแต่ละโมดูลแล้วเพิ่มลักษณะเด่นที่แสดงถึงโมดูลนั้นๆ(เช่น ชนิดพารามิเตอร์ ชื่อพารามิเตอร์ โอเปอร์เรชั่นที่ใช้ ) จะทำให้การจับคู่ได้เร็วขึ้น และ ถูกต้องสูง แต่งานวิจัยนี้ก้อยังมีข้อเสียคือ แต่ละโมดูลที่จับคู่นั้นเราจะรู้ได้อย่างไรว่า ชื่อพารามิเตอร์นี้ ชนิดพารามิเตอร์นี้ ต้องจับคู่กัน ถ้าชื่อเหมือนกัน ชนิดพารามิเตอร์เหมือนกัน แต่การดำเนินการคนละอย่างกันเลยจะทำอย่างไร ซึ่งถ้าระบบนี้มีโอเปอร์เรชั่นจำนวนมากจะเกิดปัญหาคือต้องเปรียบเทียบแต่ละโอเปอร์เรชันทุกกรณีกับทุกโมดูล ซึ่งทำให้เสียเวลา หรือ ขาดความแม่นยำมากเนื่องจากต้องใช้ sense ในการวิเคราะห์ว่าโมดูลใดจะเข้าคู่กับโมดูลใด และในกรณีที่จำนวนโมดูลไม่เท่ากันจะทำอย่างไร เช่นกรณีมีโอเปอร์เรชันเกินกว่าผู้ร้องขอ หรือ ผู้ร้องขอ มีโอเปอร์เรชันมากกว่า จะทำอย่างไร จึงจำเป็นต้องนำหลักการออนโทโลยี หรือ การสังเคราะห์คำเชิงความหมายมาใช้ร่วมด้วย