[º¸¾È´º½º ¹®°¡¿ë ±âÀÚ] º¸¾È Àü¹®°¡µéÀÌ ¾÷¹«¸¦ Á¦´ë·Î ¼öÇàÇÏ·Á¸é ´Ù¾çÇÑ µµ±¸µéÀÌ ÇÊ¿äÇÏ´Ù. ¹°·Ð µµ±¸µéÀÌ ÀÖ¾î¾ß¸¸ º¸¾ÈÀÌ Á¦´ë·Î ¼º¸³µÈ´Ù´Â °Ç ¾Æ´ÏÁö¸¸, ºó¼ÕÀ¸·Î Á¶Á÷ÀÇ ¾ÈÀüÀ» ¿ä±¸ÇÒ ¼ö´Â ¾ø´Ù. º¸¾È ´ã´çÀÚµéÀ» µ½´Â µµ±¸µé Áß ¿ÀǼҽº·Î Ç®·ÈÀ¸¸é¼µµ À¯¿ëÇÑ °ÍµéÀÌ Á¦¹ý Á¸ÀçÇÑ´Ù. ±× Áß ´ÙÀ½ ¸î °¡Áö µµ±¸µéÀÌ ÃßõÇÒ ¸¸ÇÏ¿© Àû¾î º»´Ù.
[À̹ÌÁö = utoimage]
µ¶½ÃÁð(Doxygen)
µ¶½ÃÁðÀº ¹®¼ »ý¼º±âÀÇ ÀÏÁ¾À¸·Î, Àα⠳ôÀº ÇÁ·Î±×·¡¹Ö ¾ð¾îµéÀ» ´Ù¾çÇÏ°Ô Áö¿øÇÑ´Ù. »ç¿ëÀÚµéÀº µ¶½ÃÁðÀ» ÅëÇØ Ãâó ÆÄÀϵé·ÎºÎÅÍ ÄÚµå ±¸Á¶¸¦ ÃßÃâÇÏ°í, ÄÚµå ¿ä¼Òµé °£ÀÇ °ü°è¼ºµéÀ» ÆľÇÇÒ ¼ö ÀÖ°Ô µÈ´Ù. Äڵ带 ½Ã°¢È ÇÏ¿© º¸¿©ÁØ´Ù°í »ý°¢ÇÏ¸é ¾î´À Á¤µµ µ¶½ÃÁð¿¡ ´ëÇØ ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¶§¹®¿¡ ´ë´ÜÈ÷ º¹ÀâÇÑ ÄÚµå º£À̽º¸¦ ÅëÇÕÀûÀ¸·Î, º¸´Ù ±íÀÌ ÀÌÇØÇÏ´Â µ¥¿¡ µµ¿òÀÌ µÈ´Ù. ÄÚµåÀÇ ³í¸®Àû È帧À» ºÐ¼®ÇÏ´Â µ¥¿¡µµ À¯¿ëÇÏ°í, µû¶ó¼ ¿©·¯ °¡Áö ¿ÀÀÛµ¿¿¡ ´ëÇÑ °Ë»ç¿Í ºÐ¼®µµ ÇÒ ¼ö ÀÖ°Ô ÇØ ÁØ´Ù.
ÀÌ ¶§¹®¿¡ º¹ÀâÇÏ°í ¿ë·®ÀÌ Å« ÄÚµå º£À̽º¸¦ ½Ã°¢ÀûÀ¸·Î Á¡°ËÇÒ ¼ö ÀÖ°í, °£°úÇØ ¿Ô´ø ºÎºÐµéÀ» Á¤È®È÷ ¤¾î³» ²Ä²ÄÇÏ°Ô ÆÄÇìÄ¥ ¼ö ÀÖ°Ô ÇØ ÁØ´Ù. ¿¹¸¦ µé¾î ¸®´ª½º ¼öµµ ¸í·É¾î°¡ ¾î¶² ¹æ½ÄÀ¸·Î ÀÛµ¿ÇÏ´ÂÁö ±Ã±ÝÇÏ´Ù¸é µ¶½ÃÁðÀ» ÅëÇØ ÀÌÇصµ¸¦ ³ôÀÏ ¼ö ÀÖ´Ù. ¿Á½ÃÁðÀÇ ÄÚµå´Â ¿©±â(https://github.com/doxygen/doxygen)¼ ¿¶÷ÀÌ °¡´ÉÇÏ´Ù.
Z3
Z3´Â ¼ÒÇÁÆ®¿þ¾î ºÐ¼®, È®ÀÎ, ÆÛ¡ ½ÇÇèÀ» À§ÇÑ µµ±¸´Ù. C/C++, ÆÄÀ̼± µî ´Ù¾çÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾îµéÀ» Áö¿øÇÑ´Ù. ¸î °¡Áö Ư¼öÇÏ°Ô Á¤ÀÇµÈ Á¦¾à Á¶°ÇÀ» ¸¸Á·½ÃÅ°´Â ÇØ°áÃ¥À» ¿©·¯ °¡Áö·Î ½ÃµµÇØ º¼ ¼ö ÀÖµµ·Ï ÇØ ÁØ´Ù. µû¶ó¼ ÀԷ°ª È®Àΰú °ü·ÃµÈ Á¶°ÇµéÀ» È®ÀÎÇÏ´Â µ¥¿¡ À¯¿ëÇϸç, À̸¦ ÅëÇØ Á¦ÀÛÀÚ È¤Àº °³¹ßÀÚ°¡ ¿øÄ¡ ¾Ê¾Ò´ø °á°ú°¡ ¾ß±âµÇ´Â °ÍÀ» ¹æºñÇÒ ¼ö ÀÖ´Ù.
¼öµ¿À¸·Î Äڵ带 Á¡°ËÇÏ°í, ÆÛ¡ Å×½ºÆ®¸¦ ÇÔÀ¸·Î½á ¹®Á¦°¡ µÉ ¼ö ÀÖ´Â »óŵéÀ» ¹Ì¸® ÆľÇÇÒ ¼ö ÀÖÁö¸¸ Z3¸¦ »ç¿ëÇÑ´Ù¸é º¸´Ù ±¤¹üÀ§ÇÑ ¼öÇÐÀû, ³í¸®Àû È®ÀαîÁöµµ ÇÒ ¼ö ÀÖ°Ô µÈ´Ù. Áï ¼öµ¿À¸·Î ÇÏ´Â °Ë»ç¿¡ ´õÇÏ¿© º¸´Ù ±í°í ³ÐÀº °Ë»ç °á°ú±îÁöµµ »êÃâÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ÄÚµåÀÇ ÀϺκи¸À» µû·Î ¶¼¾î °Ë»çÇÔÀ¸·Î½á ¹öÆÛ ¿À¹öÇ÷ο쳪 Á¤¼ö ¿À¹öÇ÷οì, ºÎÀûÀýÇÑ ¸Þ¸ð¸® Á¢±Ù°ú °°Àº ÀáÀçÀû ¹®Á¦µéµµ ÆľÇÇÏ´Â µ¥ µµ¿òÀ» ÁØ´Ù. ¿ª½Ã ±êÇãºê(https://github.com/Z3Prover/z3)¿¡¼ ¿¶÷ÀÌ °¡´ÉÇÏ´Ù.
¸®ºêÆÛÀú(LibFuzzer)
¿äÁò ÀÔ¼Ò¹®À» Ÿ°í ÀαⰡ ½É»óÄ¡ ¾ÊÀº ¼Óµµ·Î ¿Ã¶ó°¡°í ÀÖ´Â ¿ÀǼҽº µµ±¸ÀÎ ¸®ºêÆÛÀú¸¦ »©³õÀ» ¼ö ¾ø´Ù. ÆÛ¡ µµ±¸µéÀº º¸¾È ¿¬±¸¿¡ ÀÖ¾î¼ »©³õÀ» ¼ö ¾ø´Â µµ±¸µéÀÌ´Ù. ƯÈ÷ »ç¿ëÀÚÀÇ ÀԷ°ªÀ» °®°¡Áö·Î ½ÇÇèÇÏ´Â µ¥¿¡ À¯¿ëÇÏ´Ù. ¸®ºêÆÛÀú´Â ´Ù¸¥ ÆÛ¡ µµ±¸µé°ú ¸¶Âù°¡Áö·Î ½Ã½ºÅÛÀ» ¸¶ºñ½ÃÅ°°Å³ª ´À¸®°Ô ¸¸µé ¼ö ÀÖ´Â ÀԷ°ªÀ» ã¾Æ³»¸ç, ½ÇÇè ´ë»óÀÌ µÇ´Â ÇÁ·Î±×·¥À» Á¡ÁøÀûÀ¸·Î Á¡°ËÇϱâ À§ÇØ Ãß°¡ÀûÀÎ ¼ø¿°ú ġȯ °ªÀ» Àû¿ëÇϱ⵵ ÇÑ´Ù. ÀÌ ÆäÀÌÁö(https://llvm.org/docs/LibFuzzer.html)¿¡¼ ¿¶÷ÀÌ °¡´ÉÇÏ´Ù.
ÁöÄÚºê(Gcov)
¸¶Áö¸·À¸·Î ÃßõÇÒ ¼ö ÀÖ´Â µµ±¸´Â ÁöÄÚºê´Ù. ¡®ÄÚµå Ä¿¹ö¸®Áö(code coverage)¡¯¶ó´Â Ç׸ñ¿¡ ºÐ·ùµÇ´Â µµ±¸´Ù. ÄÚµå Ä¿¹ö¸®Áö µµ±¸µéÀº ÆÛ¡ ½ÇÇè µµ±¸µé°ú ±ÃÇÕÀÌ ¸Å¿ì ÁÁ´Ù. ÆÛ¡ µµ±¸µéÀº ¸î³¯ ¸çÄ¥ÀÌ°í ¿¬¼ÓÇؼ µ¹¸®´Âµ¥, ÀÌ ¶§ÀÇ ´ÜÁ¡Àº »ç¿ëÀÚ°¡ ÄÚµå º£À̽ºÀÇ ¾î´À ºÎºÐ±îÁö °Ë»ç°¡ ¿Ï·áµÇ¾ú´ÂÁö ÆľÇÇϱⰡ Èûµé´Ù´Â °ÍÀÌ´Ù.
ÄÚµå Ä¿¹ö¸®Áö µµ±¸µéÀº ÆÛ¡ ½ÇÇèÀÌ ¾î´À Á¤µµ³ª ÁøÇàµÇ¾ú´ÂÁö È®ÀÎÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁØ´Ù. ¶§¹®¿¡ Áß°£Áß°£ »ç¿ëÀÚ°¡ °³ÀÔÇØ ½ÇÇè °úÁ¤À» Á¶Á¤ÇÒ ¼ö ÀÖ°í, ÄÚµå º£À̽ºÀÇ ¾î´À ºÎºÐµµ ºüÁöÁö ¾Ê°í ¸ðµÎ È®ÀÎÀÌ µÇµµ·Ï ¸¸µé ¼ö ÀÖ´Ù. ¶§¹®¿¡ ÆÛ¡ ½ÇÇè °á°ú°¡ º¸´Ù È®½ÇÇØÁö°í, »ç¿ëÀÚµµ ±× °á°ú¿¡ ´ëÇØ º¸´Ù ³ôÀº ÀڽۨÀ» °¡Áú ¼ö ÀÖ°Ô µÈ´Ù. ¿©±â(https://gcc.gnu.org/onlinedocs/gcc/Gcov.html)¼ ¿¶÷ÀÌ °¡´ÉÇÏ´Ù.
¿ÀǼҽº·Î º¸¾ÈÀ» ´õ °·ÂÇÏ°Ô
ÇÁ·Î±×·¥À» ºÐ¼®ÇÏ°í Ãë¾àÁ¡À» ã¾Æ³»´Â ºÎºÐ¿¡ Àü¹®¼ºÀ» °¡Áø º¸¾È Àü¹®°¡µéÀº Ç×»ó »õ·Î¿î °Ë»ç µµ±¸µéÀ» ã¾Æ Çì¸Ç´Ù. ±×·± À̵éÀÇ Çʿ並 ÃæÁ·½ÃÄÑ ÁÙ ¸¸ÇÑ µµ±¸µéÀº ¿ÀǼҽº Ä¿¹Â´ÏƼ¿¡µµ ²Ï³ª ´Ù¾çÇÑ ¸ð½ÀÀ¸·Î Á¸ÀçÇÑ´Ù. ±×·¯´Ï º¸¾È Àü¹®°¡µéÀ̶ó¸é À̵û±Ý¾¿ ¿ÀǼҽº µµ±¸µéÀ» °Ë»öÇØ º¸´Â °ÍÀÌ ¾÷¹«¿¡ µµ¿òÀÌ µÉ °ÍÀÌ´Ù. ¿©±â¿¡ ¼Ò°³µÈ µ¶½ÃÁð, Z3, ¸®ºêÆÛÀú, ÁöÄÚºê ¿Ü¿¡µµ ¾µ¸¸ÇÑ °ÍµéÀ» ¾î·ÆÁö ¾Ê°Ô ã¾Æ³¾ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
±Û : ¸Å±â ÇÏ¿ì·¹±â(Maggie Jauregui), Intel
[±¹Á¦ºÎ ¹®°¡¿ë ±âÀÚ(globoan@boannews.com)]
<ÀúÀÛ±ÇÀÚ: º¸¾È´º½º(www.boannews.com) ¹«´ÜÀüÀç-Àç¹èÆ÷±ÝÁö>