Airac Family Seal QnA on Airac5
for innovative managers

Airac5 ´Â ¹«¾ùÀΰ¡?
C ¼ÒÇÁÆ®¿þ¾îÀÇ ¸Þ¸ð¸® Á¢±Ù ¿À·ù(buffer overrun)°¡ ÀϾ ¼ö ÀÖ´Â ¼Ò½ºÀÇ À§Ä¡¸¦ ¹Ì¸® ¸ðµÎ ÀÚµ¿À¸·Î ã¾ÆÁÖ´Â ¼ÒÇÁÆ®¿þ¾î ½Ã½ºÅÛÀÌ´Ù.

C ÇÁ·Î±×·¥¿¡¼­ ¸Þ¸ð¸® Á¢±ÙÀº Ç×»ó ÇÒ´çµÈ ¸Þ¸ð¸®ÀÇ ³»ºÎ¿¡ ±¹ÇÑµÇ¾ß ÇÑ´Ù. Airac5´Â ÁÖ¾îÁø C ÇÁ·Î±×·¥ÀÇ ¸ðµç ½ÇÇà »óȲÀ» ºÐ¼®Çؼ­, ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ ¹þ¾î³ª¼­ Á¢±ÙÇÏ´Â °æ¿ì(buffer overrun)µéÀ» ¹Ì¸® ¸ðµÎ ã¾ÆÁØ´Ù.

´©±¸¸¦ À§ÇÑ ½Ã½ºÅÛÀΰ¡?
¹«°áÁ¡ C ÇÁ·Î±×·¥À» ÃÖ´ëÇÑ »¡¸® °³¹ßÇØ¾ß ÇÏ´Â °³¹ßÀÚ, ȤÀº C ÇÁ·Î±×·¥ ¿À·ù¸¦ ÃÖ´ëÇÑ À̸¥ ½Ã°£¿¡ ã¾Æ³»°í ½ÍÀº ¼ÒÇÁÆ®¿þ¾î Ç°Áú °ËÁõ ÆÀ.

ƯÈ÷, ±âÁ¸ÀÇ C ÇÁ·Î±×·¥ÀÇ Ä¡¸íÀûÀÎ ¿À·ùµéÀÌ ³Ê¹« ´Ê°Ô(Å×½ºÆ® Áß¿¡) ¹ß°ßµÇ´Â °íºñ¿ëÀ» °³¼±ÇÏ°í ½ÍÀº °æ¿ì, ȤÀº ¹«°áÁ¡ C ÇÁ·Î±×·¥µéÀ» ªÀº ½Ã°£¾È¿¡ ÀÚÁÖ °³¹ßÇس»¾ß ÇÏ´Â °æ¿ì¿¡ À¯¿ëÇÑ ½Ã½ºÅÛÀÌ´Ù.

Å×½ºÆ®¿Í ¾î¶»°Ô ´Ù¸¥°¡?
Å×½ºÆ®ÀÇ ¹®Á¦Á¡µéÀ» º¸¿ÏÇØ ÁØ´Ù. Å×½ºÆ®´Â ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄÑ¾ß ÇÑ´Ù´Â °Í°ú, ã°íÀÚ ÇÏ´Â ¿À·ù¸¦ ¸ðµÎ ãÀ» ¼ö ¾ø´Ù´Â ¹®Á¦°¡ ÀÖ´Ù. Airac5´Â ´ë»ó ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°Áö ¾ÊÀ¸¸é¼­ ã°íÀÚ ÇÏ´Â ¿À·ùµéÀº ¸ðµÎ ã¾ÆÁØ´Ù. ÇÁ·Î±×·¥ÀÇ ¼Ò½º¸¸ ÀÖÀ¸¸é µÈ´Ù.

ÇÁ·Î±×·¥À» ½ÇÇà½Ãų ¼ö Àִ ȯ°æÀÌ ÁغñµÉ ¶§ ±îÁö ¿À·ù °ËÃâÀÌ ´ÊÃçÁö´Â °ÍÀº ¹Ù¶÷Á÷ÇÏÁö ¾Ê´Ù. Å×½ºÆ®´Â ¶Ç À¯ÇÑ°³ÀÇ ÀԷ¿¡ ´ëÇؼ­¸¸ Á¦´ë·Î ÀÛµ¿µÈ´Ù´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖÀ» »ÓÀÌ´Ù. °¡´ÉÇÑ ÀÔ·ÂÀÌ ¹«¼öÈ÷ ¸¹´Ù¸é Å×½ºÆ®´Â ¸ðµç »óȲÀ» Ä¿¹öÇÒ ¼ö ¾ø´Ù.

ÇÙ½É ±â¼úÀÌ ¹«¾ùÀΰ¡?
Á¤Àû ÇÁ·Î±×·¥ ºÐ¼® (static program analysis) ±â¼úÀÌ´Ù. ÀÌ ±â¼úÀº ÁÖ¾îÁø ÇÁ·Î±×·¥ÀÇ ¸ðµç ½ÇÇà»óȲÀ» ½ÇÇàÇϱâ Àü¿¡ ¹Ì¸® ¾ö¹ÐÇÏ°Ô È®ÀÎÇÏ´Â ±â¼úÀÌ´Ù.

ƯÈ÷, ±× È®ÀÎ °úÁ¤ÀÌ ¶Ç ´Ù¸¥ ¼ÒÇÁÆ®¿þ¾î(ÇÁ·Î±×·¥ ºÐ¼®±â)¸¦ ÅëÇؼ­ ¿ÏÀüÈ÷ ÀÚµ¿À¸·Î ÀÌ·ç¾îÁø´Ù. ºÐ¼®±â ¼ÒÇÁÆ®¿þ¾î¿¡ ÀÔ·ÂÀ¸·Î µé¾î°¡´Â °ÍÀº, °ËÁõÇÒ ¼ÒÇÁÆ®¿þ¾î ¼Ò½ºÀÌ´Ù.

ÀÌ ±â¼úÀº Áö³­ 30³â µ¿¾È ¿¬±¸°¡ ¹«¸£À;î ÀÌÁ¦ ½ÇÁ¦ ¿À·ù°ËÁõ¿¡ Àû¿ëµÇ±â ½ÃÀÛÇÏ¿´´Ù. ¿ì¸®´Â Áö³­ 10³â ÀÌ»ó ÀÌ ºÐ¾ß ¿¬±¸¸¦ ¼öÇàÇØ¿Ô°í, Áö³­ÇØ ºÎÅÍ »ó¿ëÀ» ¸ñÇ¥·Î °³¹ßÇØ ¿Â ½Ã½ºÅÛÀÌ Airac5ÀÌ´Ù.

Á¦ÇÑÁ¡À̳ª ¼ûÀº ºñ¿ëÀº?
´ë»ó ¿À·ùµéÀÌ ÀÖÀ¸¸é ¸ðµÎ ã¾ÆÁÖÁö¸¸, ½ÇÁ¦ ¿À·ù°¡ ¾Æ´Ñµ¥µµ ¿À·ù¶ó°í ÆÇ´ÜÇÏ´Â °æ¿ì(false alarm)°¡ ÀÖ´Ù. ¿¹¸¦µé¾î, ½ÇÁ¦ ¿À·ù°¡ 10±ºµ¥¶ó¸é ±× Àå¼ÒµéÀ» Æ÷ÇÔÇؼ­ 15±ºµ¥¸¦ ã¾ÆÁÖ´Â °ÝÀÌ´Ù.

ÀÌ·¯ÇÑ ÇãÀ§°æº¸¸¦ 0°³·Î ÁÙÀÌ´Â °ÍÀº ºÒ°¡´ÉÇÏ´Ù. ¿À·ù¶ó°í ÆÇÁ¤µÈ ÁöÁ¡¸¶´Ù ÇãÀ§°æº¸ÀÎÁö ¾Æ´ÑÁö¸¦ »ç¶÷ÀÌ È®ÀÎÇÏ´Â °úÁ¤Àº ÇÊ¿äÇÏ´Ù.

Valgrind³ª Rational PurifyPlus¿Í´Â ¾î¶»°Ô ´Ù¸¥°¡?
Valgrind³ª PurifyPlus´Â ½ÇÇà½ÃÅ°¸é¼­ ¿À·ù¸¦ ã¾ÆÁÖ´Â µµ±¸µéÀÌ´Ù. Å×½ºÆ®¸¦ ÅëÇØ ¿À·ù¸¦ ã´Â °Í°ú °°´Ù. "runtime program analysis"¶ó°í ÇÑ´Ù. Å×½ºÆ®ÀÇ ¹®Á¦Á¡µéÀ» °í½º¶õÈ÷ °¡Áø´Ù.

Airac5´Â ½ÇÇà½ÃÅ°Áö ¾Ê°í ¸ðµç ¿À·ùµéÀ» ¼Ò½º¸¦ ºÐ¼®Çؼ­ ã¾ÆÁØ´Ù. "static program analysis"±â¼úÀÇ Æ¯Â¡ÀÌ´Ù.

±× ±â¼ú¿¡ ±â¹ÝÇÑ °æÀï Á¦Ç°µé°ú ºñ±³Çϸé?
Á¤Àû ÇÁ·Î±×·¥ ºÐ¼®±â¼ú¿¡ ±â¹ÝÇؼ­ ¿À·ù ÀÚµ¿°ËÁõ±â¿¡ ƯȭµÈ ȸ»çµéÀº ´ëÇ¥ÀûÀ¸·Î µÎ°³°¡ ÀÖ´Ù. ÇÁ¶û½º Ecole Polytechnique Ãâ½ÅÀÇ Polyspace¿Í ¹Ì±¹ ½ºÅÄÆ÷µå´ë Ãâ½ÅÀÇ CoverityÀÌ´Ù.

CoverityÀÇ Á¦Ç°Àº ¸ñÇ¥ÇÑ ¿À·ù(buffer overrun)¸¦ ¸ðµÎ ã¾ÆÁÖÁöµµ ¸øÇÏ°í ÇãÀ§°æº¸µµ ÀÖ´Ù. PolyspaceÀÇ Á¦Ç°Àº ºÐ¼®ºñ¿ëÀÌ Å©°í ÇãÀ§°æº¸°¡ ¸¹´Ù. Airac5´Â Coverity°¡ ã¾Æ³»´Â ¿À·ù¸¦ Æ÷ÇÔÇؼ­ Coverity°¡ ³õÄ¡´Â °Í±îÁö ¸ðµÎ ã¾ÆÁÖ°í, Polyspaceº¸´Ù´Â ºÐ¼®ºñ¿ë°ú ÇãÀ§°æº¸°¡ Àû´Ù.

½ÃÇèÀûÀ¸·Î »ç¿ë °¡´ÉÇÑ°¡?
Airac5Ȩ¿¡¼­ ½ÇÇàÈ­ÀÏÀ» ³»·Á¹Þ¾Æ »ç¿ëÇØ º¼ ¼ö ÀÖ´Ù. ¿Â¶óÀÎ µ¥¸ðµµ ±×°÷¿¡¼­ Á¦°øµÈ´Ù. °ø°³µÈ ¹öÁ¯Àº ½ÇÁ¦ ¹öÁ¯º¸´Ù Á¦ÇÑÁ¡ÀÌ ÀÖ´Ù.
¿ÏÀüÇÑ ¹öÁ¯À» »ç¿ëÇÏ·Á¸é?
´Ù¾çÇÑ ¶óÀ̼¾½º °è¾àÀ» ÅëÇØ ±¸¸ÅÇÒ ¼ö ÀÖ´Ù. Airac5 ÀÚü»Ó ¾Æ´Ï¶ó Àå±âÀûÀÎ "whole product service"¸¦ ±¸¸ÅÇÒ ¼ö ÀÖ´Ù. ¿¬¶ôó.

© Copyright 2005, 2006 RopasWork Inc., Programming Research Lab., Seoul National University