04. SoftwareReuse.pdf

‫ﺍﺳﺘﻔﺎﺩﻩ ﺩﻭﺑﺎﺭﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ﻭ‬
‫ﻃﺒﻘﻪﺑﻨﺪﻱ ﻣﻮﻟﻔﻪﻫﺎ‬
‫ﺳﺘﺎﺭﻩ ﻣﻤﻴﺰ‬
‫*‬
‫ﭼﻜﻴﺪﻩ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ‪ ،‬ﻓﺮﺁﻳﻨﺪﻱ ﺍﺯ ﺳﺎﺧﺘﻦ ﺳﻴﺴﺘﻢﻫﺎﻱ ﻧﺮﻡﺍﻓﺰﺍﺭﻱ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭﻫﺎﻱ ﻣﻮﺟﻮﺩ ﺑﻪﺟﺎﻱ ﺳﺎﺧﺘﻦ ﺁﻧﻬﺎ ﺍﺯ ﺍﺑﺘﺪﺍﺳﺖ‪ .‬ﺍﻳﻦ‬
‫ﺩﻳﺪ ﺳﺎﺩﻩ ﻭﻟﻲ ﻗﺪﺭﺗﻤﻨﺪ ﺩﺭ ﺳﺎﻝ ‪ ۱۹۸۶‬ﻣﻌﺮﻓﻲ ﺷﺪ‪ .‬ﮔﺮﭼﻪ‪ ،‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ﻫﻴﭻﮔﺎﻩ ﻳﮏ ﻓﻌﺎﻟﻴﺖ ﻣﻬﻨﺪﺳﻲ ﻧﺮﻡﺍﻓﺰﺍﺭ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ‬
‫ﻧﺸﺪ‪ .‬ﺩﺭ ﺗﻼﺷﻲ ﺑﺮﺍﻱ ﺩﺍﻧﺴﺘﻦ ﻋﻠﺖ ﺁﻥ‪ ،‬ﻣﺤﻘﻘﺎﻥ ﺩﻭﺑﺎﺭﻩ ﺗﻮﺟﻪ ﺧﻮﺩ ﺭﺍ ﺑﻪ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﻧﺮﻡﺍﻓﺰﺍﺭ ﻭ ﻣﻮﺍﻧﻊ ﭘﻴﺎﺩﻩﺳﺎﺯﻱ ﺁﻥ ﻣﻌﻄﻮﻑ ﮐﺮﺩﻧﺪ‪.‬‬
‫ﺩﺭ ﺍﻳﻦ ﺗﺤﻘﻴﻖ ﺭﻭﺵﻫﺎﻱ ﻣﺘﻔﺎﻭﺕ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ﺩﺭ ﺍﺩﺑﻴﺎﺕ ﻣﺴﺎﻟﻪ ﺑﺮﺭﺳﻲ ﻣﻲﺷﻮﺩ‪ .‬ﺍﺯ ﻳﮏ ﻣﺠﻤﻮﻋﻪ ﻟﻐﺎﺕ ﺑﺮﺍﻱ ﺗﻮﺻﻴﻒ ﻭ‬
‫ﻣﻘﺎﻳﺴﻪ ﺭﻭﺵﻫﺎﻱ ﻣﺘﻔﺎﻭﺕ ﻭ ﻋﻤﻮﻣﻴﺖ ﺑﺨﺸﻴﺪﻥ ﺑﻪ ﻓﻴﻠﺪﻫﺎﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ‪ .‬ﺍﻳﻦ ﻣﺠﻤﻮﻋﻪ ﻟﻐﺎﺕ‪ ،‬ﻫﺮ ﺭﻭﺵ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺭﺍ ﺑﺮ ﻣﺒﻨﺎﻱ ﺁﺭﺗﻴﻔﮑﺖﻫﺎﻱ ﻗﺎﺑﻞ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﻭ ﺭﻭﺷﻲ ﮐﻪ ﺍﻳﻦ ﺁﺭﺗﻴﻔﮑﺖﻫﺎ‪ ،‬ﺍﻧﺘﺰﺍﻋﻲ‪ ،‬ﺍﻧﺘﺨﺎﺏ‪ ،‬ﺗﺨﺼﺼﻲ ﻭ ﺗﺮﮐﻴﺐ ﻣﻲ‬
‫ﺷﻮﻧﺪ‪ ،‬ﻣﺸﺨﺺ ﻣﻲﺳﺎﺯﺩ‪.‬‬
‫ﻛﻠﻤﺎﺕ ﻛﻠﻴﺪﻱ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ‪ ،‬ﻃﺒﻘﻪﺑﻨﺪﻱ ﻣﻮﻟﻔﻪﻫﺎ‬
‫*‪۸۴۷۰۲۹۲۷‬‬
‫‪ -۱‬ﻣﻘﺪﻣﻪ‬
‫ﺍﻧﺘﺰﺍﻉ ﻧﻘﺸﻲ ﻣﺤﻮﺭﻱ ﺩﺭ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺍﺯ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺍﻳﻔـﺎ ﻣـﻲﮐﻨـﺪ‪.‬‬
‫ﺍﻧﺘﺰﺍﻉﻫﺎﻱ ﺩﻗﻴﻖ ﻭ ﮔﻮﻳﺎ ﺑﺮﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻮﺛﺮ ﺍﺯ ﺁﺭﺗﻴﻔﮑﺖﻫﺎﻱ ﻧﺮﻡ ﺍﻓـﺰﺍﺭﻱ‪،‬‬
‫ﻻﺯﻡ ﻭ ﺿﺮﻭﺭﻱ ﺍﺳﺖ‪ .‬ﻣﻮﺛﺮ ﺑﻮﺩﻥ ﻳﮏ ﺭﻭﺵ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ‪ ،‬ﻣـﻲﺗﻮﺍﻧـﺪ ﺑـﺎ‬
‫ﻭﺍﮊﻩ ﻓﺎﺻﻠﻪ ﻣﻌﺮﻓﺘﻲ ﺍﺭﺯﻳﺎﺑﻲ ﺷﻮﺩ‪ .‬ﻓﺎﺻﻠﻪ ﻣﻌﺮﻓﺘﻲ ﻳﮏ ﺍﻧـﺪﺍﺯﻩ ﺷـﻬﻮﺩﻱ ﺍﺯ‬
‫ﺗﻼﺵ ﺫﻫﻨﻲ ﻻﺯﻡ ﺑﺮﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻳﮏ ﺗﮑﻨﻴﮏ ﺍﺳﺖ‪ .‬ﺍﻳـﻦ ﻓﺎﺻـﻠﻪ ﺑـﻪ ﺩﻭ‬
‫ﺭﻭﺵ ﮐﺎﻫﺶ ﻣﻲﻳﺎﺑﺪ‪:‬‬
‫ﺍﻧﺘﺰﺍﻉ ﺳﻄﺢ ﺑﺎﻻﺗﺮ ﺩﺭ ﻳﮏ ﺗﮑﻨﻴﮏ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ‪ ،‬ﺗﻼﺵ ﻻﺯﻡ ﺑﺮﺍﻱ‬
‫ﺭﺳﻴﺪﻥ ﺑﻪ ﺍﺭﺍﺋﻪ ﺩﺭ ﻳﮏ ﺗﮑﻨﻴﮏ ﺍﺳـﺘﻔﺎﺩﻩ ﻣﺠـﺪﺩ‪ ،‬ﺍﺯ ﻣﻔﻬـﻮﻡ ﺍﻭﻟﻴـﻪ ﻳـﮏ‬
‫ﺳﻴﺴﺘﻢ ﻧﺮﻡﺍﻓﺰﺍﺭﻱ‪ ،‬ﺭﺍ ﮐﺎﻫﺶ ﻣﻲﺩﻫﺪ‪.‬‬
‫ﺍﻭﺗﻮﻣﺎﺗﺴﻴﻮﻥ ﻧﻴﺰ ﺗﻼﺵ ﻻﺯﻡ ﺑﺮﺍﻱ ﺭﺳﻴﺪﻥ ﺑﻪ ﻳﮏ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﻗﺎﺑﻞ‬
‫ﺍﺟﺮﺍ ﺭﺍ ﺍﺯ ﺍﻧﺘﺰﺍﻉ ﺩﺭ ﻳﮏ ﺗﮑﻨﻴﮏ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﮐﺎﻫﺶ ﻣﻲﺩﻫﺪ‪.‬‬
‫ﺗﻨﻮﻉ ﺯﻳﺎﺩﻱ ﺩﺭ ﺗﮑﻨﻮﻟﻮﮊﻱﻫﺎﻱ ﻣﻬﻨﺪﺳﻲ ﻧﺮﻡﺍﻓﺰﺍﺭ ﮐﻪ ﺷﺎﻣﻞ ﻧﻮﻋﻲ ﺍﺯ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﻫﺴﺘﻨﺪ‪ ،‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪ .‬ﮔﺮﭼﻪ‪ ،‬ﺷـﺒﺎﻫﺘﻲ ﺑـﻴﻦ ﺗﮑﻨﻴـﮏﻫـﺎﻱ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﺷﺪﻩ‪ ،‬ﺩﻳﺪﻩ ﻣﻲﺷﻮﺩ‪ .‬ﺑﺮﺍﻱ ﻣﺜﺎﻝ‪ ،‬ﮐﺘﺎﺑﺨﺎﻧﻪﻫﺎﻱ ﺍﺟﺰﺍ ﻧـﺮﻡﺍﻓـﺰﺍﺭﻱ‪،‬‬
‫ﺗﻮﻟﻴﺪﮐﻨﻨﺪﮔﺎﻥ ﻧﺮﻡﺍﻓﺰﺍﺭ‪ ،‬ﮐﺎﻣﭙﺎﻳﻠﺮﻫﺎﻱ ﮐﺪ ﻣﻨﺒﻊ ﻭ ﺍﻟﮕﻮﻫﺎﻱ ﻋﻤـﻮﻣﻲ ﻧـﺮﻡ‪-‬‬
‫ﺍﻓﺰﺍﺭ‪ ،‬ﻫﻤﮕﻲ ﺷﺎﻣﻞ ﺍﻧﺘﺰﺍﻉ‪ ،‬ﺍﻧﺘﺨﺎﺏ‪ ،‬ﺗﺨﺼﺼﻲ ﮐﺮﺩﻥ ﻭ ﺗﺮﮐﻴﺐ ﺁﺭﺗﻴﻔﮑـﺖ‪-‬‬
‫ﻫﺎﻱ ﻧﺮﻡﺍﻓﺰﺍﺭﻱ ﻫﺴﺘﻨﺪ‪.‬‬
‫‪ -۱-۱‬ﺍﻧﺘﺰﺍﻉ‬
‫ﻫﻤﻪ ﺭﻭﺵﻫﺎﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ﺑﻪ ﻧـﻮﻋﻲ ﺍﺯ ﺍﻧﺘـﺰﺍﻉ ﺑـﺮﺍﻱ‬
‫ﺁﺭﺗﻴﻔﮑﺖﻫﺎﻱ ﻧﺮﻡﺍﻓﺰﺍﺭﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﮐﻨﻨﺪ‪ .‬ﺍﻧﺘﺰﺍﻉ‪ ،‬ﻳـﮏ ﺧـﺼﻮﺻﻴﺖ ﻻﺯﻡ‬
‫ﺩﺭ ﻫﺮ ﺗﮑﻨﻴﮏ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺍﺳﺖ‪ .‬ﺑﺪﻭﻥ ﺍﻧﺘﺰﺍﻉ‪ ،‬ﺗﻮﺳﻌﻪﺩﻫﻨـﺪﮔﺎﻥ ﻧـﺮﻡ‪-‬‬
‫ﺍﻓﺰﺍﺭ ﻣﺠﺒﻮﺭ ﺧﻮﺍﻫﻨﺪ ﺑﻮﺩ ﮐﻪ ﺑﻴﻦ ﻣﺠﻤﻮﻋﻪﺍﻱ ﺍﺯ ﺁﺭﺗﻴﻔﮑﺖﻫﺎﻱ ﻧﺮﻡﺍﻓـﺰﺍﺭﻱ‬
‫ﺟﺴﺘﺠﻮ ﮐﻨﻨﺪ‪ ،‬ﺗﺎ ﻣﺘﻮﺟﻪ ﺷﻮﻧﺪ ﮐﻪ ﻫﺮ ﺁﺭﺗﻴﻔﮑﺖ ﭼﻪ ﮐﺎﺭ ﻣـﻲ ﮐﻨـﺪ‪ ،‬ﭼـﻪ‬
‫ﻣﻮﻗﻊ ﻭ ﭼﮕﻮﻧﻪ ﻣﻲﺗﻮﺍﻥ ﺍﺯ ﺁﻥ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﮐﺮﺩ‪.‬‬
‫‪ -۲-۱‬ﺍﻧﺘﺨﺎﺏ‬
‫ﺍﮐﺜﺮ ﺭﻭﺵﻫﺎﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺑﻪ ﺗﻮﺳﻌﻪﺩﻫﻨﺪﮔﺎﻥ ﻧـﺮﻡﺍﻓـﺰﺍﺭ ﮐﻤـﮏ‬
‫ﻣﻲﮐﻨﻨﺪ ﮐﻪ ﺁﺭﺗﻴﻔﮑﺖﻫﺎﻱ ﻧﺮﻡﺍﻓﺰﺍﺭﻱ ﻗﺎﺑﻞ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺭﺍ ﻣﮑـﺎﻥﻳـﺎﺑﻲ‪،‬‬
‫ﻣﻘﺎﻳﺴﻪ ﻭ ﺍﻧﺘﺨﺎﺏ ﮐﻨﻨﺪ‪ .‬ﺑﺮﺍﻱ ﻣﺜـﺎﻝ‪ ،‬ﺷـﻤﺎﻫﺎﻱ ﺩﺳـﺘﻪﺑﻨـﺪﻱ ﻭ ﻓﻬﺮﺳـﺖ‬
‫ﮐﺮﺩﻥ ﻣﻲﺗﻮﺍﻧﻨﺪ ﺑﺮﺍﻱ ﺳﺎﺯﻣﺎﻥﺩﻫﻲ ﺑﻪ ﮐﺘﺎﺑﺨﺎﻧﻪﺍﻱ ﺍﺯ ﺁﺭﺗﻴﻔﮑﺖﻫـﺎﻱ ﻗﺎﺑـﻞ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﻭ ﮐﻤﮏ ﺑﻪ ﺗﻮﺳﻌﻪﺩﻫﻨﺪﮔﺎﻥ ﻧﺮﻡﺍﻓﺰﺍﺭ ﺑﺮﺍﻱ ﺟﺴﺘﺠﻮ ﺩﺭ ﺍﻳﻦ‬
‫ﮐﺘﺎﺑﺨﺎﻧﻪﻫﺎ‪ ،‬ﺍﺳﺘﻔﺎﺩﻩ ﺷﻮﺩ‪.‬‬
‫ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﮐﻪ ﺍﺯ ﺍﻳﻦ ﭘﺸﺘﻪ ﻋﻤﻮﻣﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﮐﻨﺪ‪ ،‬ﺑـﺎ ﻓـﺮﺍﻫﻢ ﮐـﺮﺩﻥ‬
‫ﻳﮏ ﻣﻘﺪﺍﺭ ﺑﺮﺍﻱ ﺍﻳﻦ ﭘﺎﺭﺍﻣﺘﺮ ﻣﻲﺗﻮﺍﻧﺪ ﺁﻥﺭﺍ ﺗﺨﺼﺼﻲ ﮐﻨﺪ‪.‬‬
‫‪ -۴-۱‬ﺗﺮﮐﻴﺐ‬
‫ﺗﮑﻨﻮﻟﻮﮊﻱﻫﺎﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﻋﻤﻮﻣﺎ ﻳﮏ ﭼﺎﺭﭼﻮﺏ ﺗﺮﮐﻴـﺐ ﺩﺍﺭﻧـﺪ‪.‬‬
‫ﻳﮏ ﺗﻮﺳﻌﻪﺩﻫﻨﺪﻩ ﻧﺮﻡﺍﻓﺰﺍﺭ ﺍﺯ ﺍﻳﻦ ﭼﺎﺭﭼﻮﺏ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﮐﻨﺪ ﺗﺎ ﻣﺠﻤﻮﻋـﻪ‪-‬‬
‫ﺍﻱ ﺍﺯ ﺁﺭﺗﻴﻔﮑﺖﻫﺎﻱ ﺍﻧﺘﺨﺎﺏ ﺷﺪﻩ ﻭ ﺗﺨﺼـﺼﻲ ﺷـﺪﻩ ﺭﺍ ﺩﺭ ﻳـﮏ ﺳﻴـﺴﺘﻢ‬
‫ﻧﺮﻡﺍﻓﺰﺍﺭﻱ ﮐﺎﻣﻞ ﺗﺮﮐﻴﺐ ﮐﻨﺪ‪ .‬ﺑﺮﺍﻱ ﻣﺜﺎﻝ ﺯﺑﺎﻥ ﻣﺎﮊﻭﻝ ﺍﻳﻨﺘﺮﮐﺎﻧﮑـﺸﻦ ﻳـﮏ‬
‫ﭼﺎﺭﭼﻮﺏ ﺑﺮﺍﻱ ﺗﺮﮐﻴﺐ ﺍﺳﺖ‪ .‬ﺑﺎ ﺍﻳﻦ ﺯﺑﺎﻥ‪ ،‬ﺗﻮﺍﺑﻊ ﺍﺯ ﻣﺎﮊﻭﻝﻫﺎﻳﻲ ﮐﻪ ﺁﻧﻬـﺎ ﺭﺍ‬
‫ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﻣﻴﮑﻨﻨﺪ ﺍﺳﺘﺨﺮﺍﺝ ﺷﺪﻩ ﻭ ﺳﭙﺲ ﻭﺍﺭﺩ ﻣﺎﮊﻭﻝﻫﺎﻳﻲ ﮐﻪ ﺍﺯ ﺁﻥﻫﺎ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﮐﻨﻨﺪ‪ ،‬ﻣﻲﺷﻮﻧﺪ‪ .‬ﻣﺎﮊﻭﻝﻫﺎ ﺑﺎ ﺍﺗﺼﺎﻝ ﺁﻥﻫـﺎﻳﻲ ﮐـﻪ ﺻـﺎﺩﺭﺍﺕ ﻭ‬
‫ﻭﺍﺭﺩﺍﺕ ﻣﻨﺎﺳﺒﻲ ﺩﺍﺭﻧﺪ‪ ،‬ﺩﺭ ﻳﮏ ﺳﻴﺴﺘﻢ ﺟﻤﻊﺁﻭﺭﻱ ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫‪ -۲‬ﺍﻧﺘﺰﺍﻉ ﻭ ﺗﻮﺳﻌﻪ ﻧﺮﻡﺍﻓﺰﺍﺭ‬
‫ﻣﺤﻘﻘــﺎﻥ ﮐــﺎﻣﭙﻴﻮﺗﺮ ﻣﻌﻤــﻮﻻ ﺍﺯ ﺍﻧﺘــﺰﺍﻉ ﺑــﺮﺍﻱ ﮐﻤــﮏ ﺑــﻪ ﻣــﺪﻳﺮﻳﺖ‬
‫ﭘﻴﭽﻴﺪﮔﻲ ﺫﻫﻨﻲ ﻧﺮﻡﺍﻓﺰﺍﺭ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﮐﻨﻨﺪ‪ .‬ﺍﻧﺘﺰﺍﻉ ﺑـﺮﺍﻱ ﻳـﮏ ﺁﺭﺗﻴﻔﮑـﺖ‬
‫ﻧﺮﻡﺍﻓﺰﺍﺭﻱ ﻳﮏ ﺗﻮﺻﻴﻒ ﺧﻼﺻﻪ ﺍﺳﺖ ﮐﻪ ﺭﻭﻱ ﺟﺰﺋﻴﺎﺗﻲ ﮐﻪ ﺑـﺮﺍﻱ ﺗﻮﺳـﻌﻪ‬
‫ﺩﻫﻨﺪﻩ ﻧﺮﻡﺍﻓﺰﺍﺭ ﻣﻬﻢ ﻧﻴﺴﺖ‪ ،‬ﺗﮑﻴﻪ ﻧﻤﻲﮐﻨﺪ‪ .‬ﺑﺮﺍﻱ ﻣﺜﺎﻝ‪ ،‬ﺍﻧﺘﺰﺍﻉ ﻓﺮﺍﻫﻢ ﺷﺪﻩ‬
‫ﺗﻮﺳﻂ ﻳﮏ ﺯﺑﺎﻥ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺑﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ ﺍﻳﻦ ﺍﻣﮑﺎﻥ ﺭﺍ ﻣﻲﺩﻫـﺪ ﮐـﻪ‬
‫ﺍﻟﮕﻮﺭﻳﺘﻢﻫﺎﻳﻲ ﺭﺍ ﺑﺪﻭﻥ ﻧﮕﺮﺍﻧﻲ ﺭﺍﺟﻊ ﺑﻪ ﻣﮑﺎﻥﻳﺎﺑﻲ ﺭﺟﻴـﺴﺘﺮﻫـﺎ‪ ،‬ﺑﻨﻮﻳـﺴﺪ‪.‬‬
‫ﻧﺮﻡﺍﻓﺰﺍﺭ ﺑﻪﻃﻮﺭ ﮐﻠﻲ ﺗﺸﮑﻴﻞ ﺷﺪﻩ ﺍﺳﺖ ﺍﺯ ﭼﻨﺪﻳﻦ ﻻﻳﻪ ﺍﺯ ﺍﻧﺘﺰﺍﻉ ﺑـﻪ ﺭﻭﻱ‬
‫ﺳــﺨﺖ ﺍﻓــﺰﺍﺭ‪ .‬ﺍﻧﺘــﺰﺍﻉﻫــﺎﻱ ﻧــﺮﻡﺍﻓــﺰﺍﺭﻱ ﺩﻭ ﺳــﻄﺢ ﺩﺍﺭﻧــﺪ‪ .‬ﺳــﻄﺢ ﺑــﺎﻻﺗﺮ‬
‫‪ specification‬ﻭ ﺳــﻄﺢ ﭘــﺎﻳﻴﻦﺗــﺮ ﮐــﻪ ﺳــﻄﺢ ﺟﺰﺋــﻲﺗــﺮﻱ ﺍﺳــﺖ‬
‫‪ realization‬ﻧﺎﻡ ﺩﺍﺭﺩ‪ .‬ﺯﻣﺎﻧﻲﮐﻪ ﺍﻧﺘﺰﺍﻉ ﻻﻳﻪﺑﻨـﺪﻱ ﺷـﺪﻩ ﺍﺳـﺖ‪ spec ،‬ﺩﺭ‬
‫ﻳﮏ ﻻﻳﻪ‪ ،‬ﺩﺭ ﻭﺍﻗﻊ ‪ realization‬ﺩﺭ ﻻﻳﻪ ﺑﺎﻻﺗﺮ ﺍﻧﺘﺰﺍﻉ ﺍﺳﺖ‪ .‬ﺷﮑﻞ ﺯﻳﺮ ﻳﮏ‬
‫ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺐ ﺑﺎ ﺩﻭ ﺍﻧﺘـﺰﺍﻉ ‪ L‬ﻭ ‪ M‬ﺭﺍ ﻧـﺸﺎﻥ ﻣـﻲﺩﻫـﺪ‪ Rep1,Rep2 .‬ﻭ‬
‫‪ Rep3‬ﺳﻪ ﻧﻤﺎﻳﻨﺪﻩ ﺍﺯ ﻳﮏ ﺁﺭﺗﻴﻔﮑﺖ ﻫﺴﺘﻨﺪ ﮐﻪ ‪ Rep1‬ﺟﺰﺋﻲﺗـﺮﻳﻦ ﺁﻥ‪-‬‬
‫ﻫﺎﺳﺖ‪ .‬ﺑﺮﺍﻱ ﺍﻧﺘﺰﺍﻉ ‪ Rep1 ،L‬ﺩﺭ ﻭﺍﻗﻊ ‪ realization‬ﻭ ﺑـﺮﺍﻱ ﺍﻧﺘـﺰﺍﻉ ‪،M‬‬
‫‪ Specification‬ﺍﺳﺖ‪.‬‬
‫‪ -۳-۱‬ﺗﺨﺼﺼﻲ ﮐﺮﺩﻥ‬
‫ﺩﺭ ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﺗﮑﻨﻮﻟﻮﮊﻱﻫﺎﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ‪ ،‬ﺁﺭﺗﻴﻔﮑﺖﻫـﺎﻱ ﻣـﺸﺎﺑﻪ‬
‫ﺩﺭ ﻳﮏ ﺁﺭﺗﻴﻔﮑﺖ ﻋﻤـﻮﻣﻲ ﺗـﮏ ﺍﺩﻏـﺎﻡ ﻣـﻲﺷـﻮﻧﺪ‪ .‬ﺑﻌـﺪ ﺍﺯ ﺍﻧﺘﺨـﺎﺏ ﻳـﮏ‬
‫ﺁﺭﺗﻴﻔﮑﺖ ﻋﻤﻮﻣﻲ ﺑﺮﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ‪ ،‬ﺗﻮﺳﻌﻪﺩﻫﻨﺪﻩ ﺳﻴﺴﺘﻢ ﺑـﻪ ﮐﻤـﮏ‬
‫ﭘﺎﺭﺍﻣﺘﺮﻫــﺎ‪ ،‬ﺗﺒــﺪﻳﻼﺕ‪ ،‬ﻣﺤــﺪﻭﺩﻳﺖﻫــﺎ ﻳ ـﺎ ﺍﻧــﻮﺍﻉ ﺩﻳﮕــﺮ ﺍﺯ ﺑﻬﺒﻮﺩﻫــﺎ‪ ،‬ﺁﻥﺭﺍ‬
‫ﺗﺨﺼﺼﻲ ﻣﻲﮐﻨﻨﺪ‪ .‬ﺑﺮﺍﻱ ﻣﺜﺎﻝ‪ ،‬ﻳﮏ ﭘﻴﺎﺩﻩﺳﺎﺯﻱ ﺍﺯ ﭘـﺸﺘﻪ ﻗﺎﺑـﻞ ﺍﺳـﺘﻔﺎﺩﻩ‬
‫ﻣﺠﺪﺩ‪ ،‬ﻣﻲﺗﻮﺍﻧﺪ ﺑﺎ ﭘﺎﺭﺍﻣﺘﺮﺩﻫﻲ ﺑﻪ ﺑﻴﺸﺘﺮﻳﻦ ﻋﻤﻖ ﭘﺸﺘﻪ‪ ،‬ﺗﺨﺼـﺼﻲ ﺷـﻮﺩ‪.‬‬
‫ﻫﺮ ﺍﻧﺘﺰﺍﻉ‪ ،‬ﻳﮏ ﻗﺴﻤﺖ ﻣﺨﻔﻲ‪ ،‬ﻳﮏ ﻗﺴﻤﺖ ﻣﺘﻐﻴـﺮ ﻭ ﻳـﮏ ﻗـﺴﻤﺖ‬
‫ﺛﺎﺑﺖ ﺩﺍﺭﺩ‪ .‬ﻗﺴﻤﺖ ﻣﺨﻔـﻲ ﺷـﺎﻣﻞ ﺟﺰﺋﻴـﺎﺕ ‪ realization‬ﺍﺳـﺖ ﮐـﻪ ﺩﺭ‬
‫‪ spec‬ﻗﺎﺑﻞ ﺩﻳﺪﻥ ﻧﻴﺴﺘﻨﺪ‪ .‬ﻗﺴﻤﺖ ﻣﺘﻐﻴـﺮ ﻭ ﺛﺎﺑـﺖ ﺩﺭ ‪ spec‬ﺩﻳـﺪﻩ ﻣـﻲ‪-‬‬
‫ﺷﻮﻧﺪ‪ .‬ﻗﺴﻤﺖ ﻣﺘﻐﻴﺮ ﻧـﺸﺎﻥﺩﻫﻨـﺪﻩ ﺧـﺼﻮﺻﻴﺖ ﻣﺘﻐﻴـﺮ ﺩﺭ ‪realization‬‬
‫ﺍﺳﺖ‪ .‬ﻫﻤﺎﻥﻃﻮﺭ ﮐﻪ ﺩﺭ ﺷـﮑﻞ ﺑﻌـﺪ ﻣـﻲﺑﻴﻨﻴـﺪ ﻳـﮏ ‪ specification‬ﺑـﺎ‬
‫ﻗﺴﻤﺖ ﻣﺘﻐﻴﺮ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﻣﺠﻤﻮﻋﻪﺍﻱ ﺍﺯ ‪realization‬ﻫﺎﺳﺖ‪.‬‬
‫‪ -۳‬ﺍﻧﺘﺰﺍﻉ ﺩﺭ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ‬
‫ﺍﻧﺘﺰﺍﻉ ﻧﻘﺸﻲ ﮐﻠﻴﺪﻱ ﻭ ﮔﺎﻫﻲ ﻣﺤﺪﻭﺩﮐﻨﻨﺪﻩ ﺩﺭ ﻫﺮ ﺑﻨﺪ ﺍﺯ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠـﺪﺩ‬
‫ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ﺑﺎﺯﻱ ﻣﻲﮐﻨﺪ‪:‬‬
‫ﺍﻧﺘﺨﺎﺏ‪ :‬ﺁﺭﺗﻴﻔﮑﺖﻫﺎﻱ ﻗﺎﺑﻞ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﻣﻲﺑﺎﻳﺴﺖ ﺍﻧﺘﺰﺍﻋـﺎﺕ ﮔﻮﻳـﺎﻳﻲ‬
‫ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ ﺗﺎ ﮐﺎﺭﺑﺮﺍﻥ ﺑﺘﻮﺍﻧﻨﺪ ﺑﻪ ﻃﻮﺭ ﮐﺎﺭﺍ ﺁﺭﺗﻴﻔﮑـﺖﻫـﺎ ﺭﺍ ﻣﮑـﺎﻥﻳـﺎﺑﻲ‪،‬‬
‫ﺩﺭﮎ‪ ،‬ﻣﻘﺎﻳﺴﻪ ﻭ ﺍﻧﺘﺨﺎﺏ ﮐﻨﻨﺪ‪.‬‬
‫ﺗﺨﺼﺼﻲ ﮐﺮﺩﻥ‪ :‬ﻳﮏ ﺁﺭﺗﻴﻔﮑﺖ ﻗﺎﺑﻞ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠـﺪﺩ ﻋﻤﻮﻣﻴـﺖ ﻳﺎﻓﺘـﻪ ﺩﺭ‬
‫ﺣﻘﻴﻘﺖ ﻳﮏ ﺍﻧﺘﺰﺍﻉ ﺑﺎ ﻗﺴﻤﺖ ﻣﺘﻐﻴﺮ ﺍﺳﺖ‪.‬‬
‫ﺗﺮﮐﻴﺐ‪ :‬ﺑﺮﺍﻱ ﺗﺮﮐﻴﺐ ﮐﺎﺭﺍﻱ ﻳﮏ ﺁﺭﺗﻴﻔﮑﺖ ﻗﺎﺑﻞ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺩﺭ ﻳـﮏ‬
‫ﺳﻴﺴﺘﻢ ﻧﺮﻡﺍﻓﺰﺍﺭﻱ‪ ،‬ﮐﺎﺭﺑﺮ ﻣﻲﺑﺎﻳﺴﺖ ﺑﻪ ﻃﻮﺭ ﺷـﻔﺎﻑ ﻭﺍﺳـﻂ ﺁﺭﺗﻴﻔﮑـﺖ ﺭﺍ‬
‫ﺑﺸﻨﺎﺳﺪ‪ .‬ﻭﺍﺳﻂ ﺁﺭﺗﻴﻔﮑﺖ ﻳﮏ ﺍﻧﺘﺰﺍﻉ ﺍﺳﺖ ﮐﻪ ﺩﺭ ﺁﻥ ﺍﺯ ﺟﺰﺋﻴـﺎﺕ ﺩﺍﺧﻠـﻲ‬
‫ﭼﺸﻢﭘﻮﺷﻲ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬
‫ﻓﺎﺻﻠﻪ ﻣﻌﺮﻓﺘﻲ‪:‬‬
‫ﻣﻮﺛﺮ ﺑﻮﺩﻥ ﻳﮏ ﺍﻧﺘﺰﺍﻉ ﺩﺭ ﻳﮏ ﺗﮑﻨﻴﮏ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺩﺭ ﻧﺮﻡﺍﻓﺰﺍﺭ ﻣﻲﺗﻮﺍﻧﺪ‬
‫ﺑﺮ ﻣﺒﻨﺎﻱ ﺗﻼﺵ ﺫﻫﻨﻲ ﻻﺯﻡ ﺑﺮﺍﻱ ﺍﺳـﺘﻔﺎﺩﻩ ﺍﺯ ﺁﻥ ﺳـﻨﺠﻴﺪﻩ ﺷـﻮﺩ‪ .‬ﺍﻧﺘـﺰﺍﻉ‬
‫ﺑﻬﺘﺮ ﺑﻪ ﻣﻌﻨﻲ ﺗـﻼﺵ ﻻﺯﻡ ﮐﻤﺘـﺮ ﺍﺯ ﻃـﺮﻑ ﮐـﺎﺭﺑﺮ ﺍﺳـﺖ‪ .‬ﻫـﺪﻑ ﺳـﺎﺯﻧﺪﻩ‬
‫ﺗﮑﻨﻴﮏ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ‪ ،‬ﮐﻢ ﮐﺮﺩﻥ ﺍﻳﻦ ﻓﺎﺻﻠﻪ ﺍﺳﺖ‪ ،‬ﺑﻮﺳﻴﻠﻪ‪:‬‬
‫ƒ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻧﺘـﺰﺍﻉ ﻫـﺎﻱ ‪ fixed‬ﻭ ‪ variable‬ﮐـﻪ ﺧﻼﺻـﻪ ﻭ‬
‫ﮔﻮﻳﺎ ﺑﺎﺷﻨﺪ‪.‬‬
‫ƒ ﺣﺪﺍﮐﺜﺮ ﮐﺮﺩﻥ ﻗﺴﻤﺖ ‪hidden‬‬
‫ƒ ﺍﺳــﺘﻔﺎﺩﻩ ﺍﺯ ﻧﮕﺎﺷــﺖﻫــﺎﻱ ﺍﺗﻮﻣﺎﺗﻴـﮏ ﺍﺯ ‪ specification‬ﺑــﻪ‬
‫‪realization‬‬
‫‪ -۴‬ﻣﻌﻤﺎﺭﻱ ﻧﺮﻡﺍﻓﺰﺍﺭﻫﺎﻱ ﺧﺎﺹ ﺩﺍﻣﻨﻪ‬
‫ﺗﻌﺮﻳﻒ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻫﺎﻱ ﺧﺎﺹ ﺩﺍﻣﻨﻪ‪:‬‬
‫“ﺟﻤﻊ ﺁﻭﺭﻱ ﻣﻮﻟﻔﻪ ﻫﺎﻱ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ‪ ،‬ﺗﺨﺼﺼﻲ ﺷﺪﻩ ﺑﺮﺍﻱ ﻳﮏ ﻧﻮﻉ ﺧﺎﺹ‬
‫ﺍﺯ ﻭﻇﻴﻔﻪ )ﺩﺍﻣﻨﻪ(‪ ،‬ﻋﻤﻮﻣﻴـﺖ ﻳﺎﻓﺘـﻪ ﺑـﺮﺍﻱ ﺍﺳـﺘﻔﺎﺩﻩ ﻣـﻮﺛﺮ ﺩﺭ ﺁﻥ ﺩﺍﻣﻨـﻪ‪،‬‬
‫ﺳﺎﺯﻣﺎﻥ ﻳﺎﻓﺘﻪ ﺩﺭ ﻳﮏ ﺳﺎﺧﺘﺎﺭ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ )ﺗﻮﭘﻮﻟﻮﮊﻱ( ﺑﺮﺍﻱ ﺳﺎﺧﺘﻦ ﺑﺮﻧﺎﻣـﻪ‬
‫ﻫﺎﻱ ﻣﻮﻓﻖ” ]‪[Hay94‬‬
‫“ﻳﮏ ﺯﻣﻴﻨﻪ ﺑﺮﺍﻱ ﺍﻟﮕﻮﻫﺎﻱ ﻋﻨﺎﺻﺮ ﻣﺴﺌﻠﻪ‪ ،‬ﻋﻨﺎﺻﺮ ﺭﺍﻩ ﺣﻞ ﻭ ﺷﺮﺍﻳﻄﻲ ﮐـﻪ‬
‫ﻧﮕﺎﺷﺖ ﺑﻴﻦ ﺁﻧﻬﺎ ﺭﺍ ﺗﻌﺮﻳﻒ ﻣﻲ ﮐﻨﺪ‪[Hid90] ”.‬‬
‫ﻣﻌﻤﺎﺭﻱ ﻧﺮﻡﺍﻓﺰﺍﺭﻫﺎﻱ ﺧﺎﺹ ﺩﺍﻣﻨﻪ ﺩﺭ ﻭﺍﻗﻊ ﻳـﻚ ﻓﺮﺁﻳﻨـﺪ ﻭ ﺯﻳـﺮ ﺑﻨـﺎ ﻛـﻪ‬
‫ﺍﻳﺠﺎﺩ ﻭ ﺗﻮﺳﻌﻪ ﻳﻚ ﻣﺪﻝ ﺩﺍﻣﻨﻪ ﺭﺍ ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲ ﻛﻨﺪ ﻭ ﻣﻌﻤـﺎﺭﻱ ﻣﺮﺟـﻊ‬
‫ﺑﺮﺍﻱ ﻳﻚ ﺧﺎﻧﻮﺍﺩﻩ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﺩﺭ ﻳﻚ ﺩﺍﻣﻨﻪ ﻣﺸﺨﺺ ﺍﺳـﺖ ﻭ ﻫـﺪﻑ ﺁﻥ‬
‫ﭘﺸﺘﻴﺒﺎﻧﻲ ﻧﺴﻠﻲ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﺩﺭ ﻳﻚ ﺩﺍﻣﻨﻪ ﻣﺸﺨﺺ‪ .‬ﻧﮑﺘﻪ ﺍﺻـﻠﻲ ﺩﺭ ﺍﻳـﻦ‬
‫ﻣﻌﻤﺎﺭﻱ ﺟﺪﺍﺳﺎﺯﻱ ﻓﻀﺎﻱ ﻣﺴﺎﻟﻪ ﺍﺯ ﻓﻀﺎﻱ ﺭﺍﻩ ﺣﻞ ﻳﺎ ﻓﻀﺎﻱ ﻃﺮﺍﺣﻲ ﺍﺳﺖ‬
‫ﮐﻪ ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺧﺼﻮﺻﻴﺎﺕ ﻓﻀﺎﻱ ﻣﺴﺎﻟﻪ ﺭﺍ ﺑﻮﺳـﻴﻠﻪ ﻣـﺪﻝ ﺩﺍﻣﻨـﻪ ﻭ‬
‫ﻗﺴﻤﺘﻲ ﺍﺯ ﻓﻀﺎﻱ ﺭﺍﻩ ﺣﻞ ﺭﺍ ﺑﻮﺳﻴﻠﻪ ﻣﻌﻤﺎﺭﻱ ﻣﺮﺟﻊ‪ ،‬ﻣﺪﻝ ﻣﻲﮐﻨﻨﺪ‪.‬‬
‫ﻣﺪﻝ ﺩﺍﻣﻨﻪ ﺷﺎﻣﻞ ﺳﻨﺎﺭﻳﻮ ﻫـﺎ‪ ،‬ﺩﻳﮑـﺸﻨﺮﻱ ﺩﺍﻣﻨـﻪ‪ ،‬ﺩﻳـﺎﮔﺮﺍﻡ ﺯﻣﻴﻨـﻪ‪،‬‬
‫ﺩﻳﺎﮔﺮﺍﻡ ﻫﺎﻱ ﻣﻮﺟﻮﺩﻳﺖ‪/‬ﺭﺍﺑﻄـﻪ‪ ،‬ﻣـﺪﻟﻬﺎﻱ ﺟﺮﻳـﺎﻥ ﺩﺍﺩﻩ‪ ،‬ﻣـﺪﻟﻬﺎﻱ ‪state‬‬
‫‪ transition‬ﻭ ﻣﺪﻝ ‪ object‬ﺍﺳﺖ‪ .‬ﮐﻪ ﺳﻨﺎﺭﻳﻮ ﺗﻌﺎﻣﻼﺗﻲ ﺍﺳﺖ ﮐـﻪ ﺑـﻴﻦ‬
‫ﮐﺎﺭﺑﺮ ﻭ ﺳﻴﺴﺘﻢ ﺍﺗﻔﺎﻕ ﻣﻲﺍﻓﺘﺪ ﮐﻪ ﺩﺭ ﺁﻥ ﻭﻗﺎﻳﻊ ﺑﻪ ﻫﻤﺮﺍﻩ ﺷﺮﺡ ﻣﺨﺘـﺼﺮﻱ‬
‫ﺁﻭﺭﺩﻩ ﻣﻲﺷﻮﻧﺪ‪ .‬ﺩﻳﮑﺸﻨﺮﻱ ﺩﺍﻣﻨﻪ ﺷﺎﻣﻞ ﮐﻠﻤﺎﺕ ﻭ ﺍﺻﻄﻼﺣﺎﺗﻲ ﺍﺳـﺖ ﮐـﻪ‬
‫ﻏﺎﻟﺒﺎ ﺩﺭ ﺳﻨﺎﺭﻳﻮﻫﺎ ﻭ ﺍﺳﻨﺎﺩ ﻣﺮﺑـﻮﻁ ﺑـﻪ ﻣـﺸﺘﺮﻳﺎﻥ ﺑـﻪ ﭼـﺸﻢ ﻣـﻲﺧـﻮﺭﺩ‪.‬‬
‫ﺩﻳﺎﮔﺮﺍﻡ ﺯﻣﻴﻨﻪ ﻫﻤﺎﻥ ﻣﻌﻤﺎﺭﻱ ﻧﺮﻡﺍﻓﺰﺍﺭ ﻧﻴﺴﺖ ﺑﻠﮑﻪ ﻧﺸﺎﻥ ﻣﻲﺩﻫﺪ ﮐﻪ ﭼـﻪ‬
‫ﭼﻴﺰﻫﺎﻳﻲ ﺩﺍﺧﻞ ﺩﺍﻣﻨﻪ ﻭ ﭼﻪ ﭼﻴﺰﻫﺎﻳﻲ ﺧﺎﺭﺝ ﺍﺯ ﺁﻥ ﻗﺮﺍﺭ ﺩﺍﺭﻧـﺪ‪ .‬ﺩﻳـﺎﮔﺮﺍﻡ‪-‬‬
‫ﻫﺎﻱ ﻣﻮﺟﻮﺩﻳﺖ‪/‬ﺭﺍﺑﻄﻪ ﺩﺭ ﻭﺍﻗـﻊ ﻣـﻲﺗﻮﺍﻧﻨـﺪ ﺭﻭﺍﺑـﻂ ”‪ “is a‬ﻭ ‪“is part‬‬
‫”‪ of‬ﺭﺍ ﻧﺸﺎﻥ ﻣﻲﺩﻫﻨﺪ ﻭ ﺑﻪ ﺍﻳﻦ ﺗﺮﺗﻴﺐ ﺑﻪ ﻣﺪﻝ ﺩﺍﻣﻨﻪ ﮐﻤﮏ ﻣﻲﮐﻨﻨﺪ ﺗـﺎ‬
‫ﺣﺎﻟﺖ ﻋﻤﻮﻣﻴﺖ ﻳﺎﻓﺘﻪ ﺗﺮﻱ ﺭﺍ ﻧﺸﺎﻥ ﺩﻫﺪ‪ .‬ﻣﺪﻝ ﺟﺮﻳﺎﻥ ﺩﺍﺩﻩ ﻧﻴﺰ ﻫﻤﺎﻥﻃﻮﺭ‬
‫ﮐﻪ ﺍﺯ ﻧﺎﻣﺶ ﭘﻴﺪﺍﺳﺖ ﺟﺮﻳﺎﻥ ﺩﺍﺩﻩ ﺩﺭ ﺳﻴﺴﺘﻢ ﺭﺍ ﻧﺸﺎﻥ ﻣـﻲﺩﻫـﺪ ﻭ ﻣـﺪﻝ‬
‫‪ state-transition‬ﺣﺎﻟﺖﻫﺎﻳﻲ ﮐﻪ ﺩﺭ ﺳﻴﺴﺘﻢ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻭ ﮔﺬﺭ ﺍﺯ ﺍﻳﻦ‬
‫ﺣﺎﻟﺖﻫﺎ ﺭﺍ ﻧﺸﺎﻥ ﻣﻲﺩﻫﺪ‪ .‬ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ ﺗﺤﻠﻴﻞﮔﺮ ﻣﺘﻮﺟﻪ ﻣﻲﺷـﻮﺩ ﮐـﻪ‬
‫ﭼﻪ ﺍﻃﻼﻋﺎﺗﻲ ﻧﺎﮐﺎﻓﻲ ﻫﺴﺘﻨﺪ ﻭ ﻣﻲﺗﻮﺍﻧﺪ ﺑﻪ ﻣﺮﺍﺣﻞ ﻗﺒﻠﻲ ﺑﺎﺯﮔﺸﺘﻪ ﻭ ﺁﻥﻫﺎ‬
‫ﺭﺍ ﺍﺻﻼﺡ ﮐﻨﺪ‪ .‬ﻣﺪﻝ ‪ object‬ﺍﻭﻟﻴﻦ ﻓﺎﺯ ﺍﺯ ﻃﺮﺍﺣﻲ ﻭﺍﺳﻂ ﻣﻮﻟﻔـﻪ ﺍﺳـﺖ ﻭ‬
‫ﻧﮕﺮﺵ ﺍﺭﺯﺷﻤﻨﺪﻱ ﺑﻪ ﻣﻌﻤﺎﺭﻱ ﻣﺮﺟﻊ ﺣﺎﺻﻞ ﺭﺍ ﺍﻳﺠـﺎﺩ ﻣـﻲﮐﻨـﺪ‪ .‬ﺩﺭ ﺍﻳـﻦ‬
‫ﻗﺴﻤﺖ ﻻﺯﻡ ﻧﻴـﺴﺖ ﮐـﻪ ﺑـﻪ ﺟﺰﺋﻴـﺎﺕ ﺻـﻔﺎﺕ ﻭ ﻋﻤﻠﮑـﺮﺩ ﻫـﺎ ﺍﺯ ‪obj‬ﻫـﺎ‬
‫ﭘﺮﺩﺍﺧﺘﻪ ﺷﻮﺩ ﺯﻳﺮﺍ ﻣﻤﮑﻦ ﺍﺳﺖ ﻣﻌﻤﺎﺭﻱ ﺭﺍ ﻣﺤﺪﻭﺩ ﮐﻨﺪ‪ .‬ﺩﺭ ﺯﻳﺮ ﺑﻪ ﻋﻨﻮﺍﻥ‬
‫ﻧﻤﻮﻧﻪ ﻗﺴﻤﺖﻫﺎﻱ ﻣﺨﺘﻠﻔﻲ ﺍﺯ ﻣﺪﻝ ﺩﺍﻣﻨﻪ ﻳﮏ ﺳﻴﺴﺘﻢ ﻓﺮﻭﺵ ﺑﻠﻴﻂ ﺗـﺎﺗﺮ‬
‫ﺭﺍ ﻧﺸﺎﻥ ﺧﻮﺍﻫﻴﻢ ﺩﺍﺩ‪.‬‬
‫‪ -۵‬ﻧﻴﺎﺯﻣﻨﺪﻱﻫﺎﻱ ﻣﺮﺟﻊ‬
‫ﻣﻌﻤﺎﺭ ﺩﺍﻣﻨﻪ ﺍﺯ ﻧﻴﺎﺯﻣﻨﺪﻱﻫﺎﻱ ﻣﺮﺟﻊ ﺑﺮﺍﻱ ﻣﺸﺘﻖ ﮐﺮﺩﻥ ﻃﺮﺍﺣـﻲ‬
‫ﻣﻌﻤﺎﺭﻱ ﻣﺮﺟﻊ ﺍﺳـﺘﻔﺎﺩﻩ ﻣـﻲﮐﻨـﺪ‪ .‬ﺍﻳـﻦ ﻧﻴﺎﺯﻣﻨـﺪﻱﻫـﺎ ﺷـﺎﻣﻞ ‪non-‬‬
‫‪ ،functional‬ﻃﺮﺍﺣﻲ ﻭ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﺍﺳﺖ‪ .‬ﻣﺪﻝ ﺩﺍﻣﻨﻪ ﺭﻓﺘﺎﺭ ﺑﺮﻧﺎﻣﻪ ﻫﺎ‬
‫ﺩﺭ ﺳﻴﺴﺘﻢ ﺭﺍ ﻣﺸﺨﺺ ﻣﻲﺳﺎﺯﺩ ﻭ ﺣـﺎﻻ ﻧﻮﺑـﺖ ﻣﺮﺣﻠـﻪ ﺑﻌـﺪﻱ ﻳﻌﻨـﻲ‬
‫ﻣﺸﺨﺺ ﮐﺮﺩﻥ ﻗﺴﻤﺘﻲ ﺍﺯ ﻓﻀﺎﻱ ﺭﺍﻩﺣﻞ ﺍﺳﺖ ﮐﻪ ﻣﺪﻝ ﺩﺍﻣﻨﻪ ﺭﻭﻱ ﺁﻥ‬
‫ﻧﮕﺎﺷﺖ ﻣﻲﺷﻮﺩ‪.‬‬
‫ﺑﻪ ﻃﻮﺭ ﮐﻠﻲ ﭼﺮﺧﻪ ﺯﻧﺪﮔﻲ ‪ DSSA‬ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ‪:‬‬
‫‪ -۶‬ﻣﻌﻤﺎﺭﻱ ﻣﺮﺟﻊ‬
‫ﻣﻌﻤﺎﺭﻱ ﻣﺮﺟﻊ ﻳﮏ ﻃﺮﺍﺣـﻲ ﭘـﺎﺭﺍﻣﺘﺮﻱ ﺷـﺪﻩ ﺍﺳـﺖ ﮐـﻪ ﺑﺨـﺶ‬
‫ﻣﺸﺨﺼﻲ ﺍﺯ ﻗﺎﺑﻠﻴﺖﻫـﺎﻱ ﮐـﺎﺭﮐﺮﺩﻱ ﻣﻌـﻴﻦ ﺷـﺪﻩ ﺩﺭ ﻧﻴﺎﺯﻣﻨـﺪﻱﻫـﺎﻱ‬
‫ﻣﺮﺟﻊ ﺭﺍ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻗﻴﺪﻫﺎﻱ ﻃﺮﺍﺣﻲ ﻭ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ‪ ،‬ﺍﺭﺿﺎ ﻣﻲﮐﻨﺪ‪ .‬ﺍﻳﻦ‬
‫ﻣﻌﻤﺎﺭﻱ ﺑﻪ ﮔﻮﻧﻪ ﺍﻱ ﻃﺮﺍﺣﻲ ﻣﻲﺷﻮﺩ ﮐﻪ ﻗﺎﺑﻞ ﺍﺳـﺘﻔﺎﺩﻩ ﻣﺠـﺪﺩ‪ ،‬ﻗﺎﺑـﻞ‬
‫ﺗﻮﺳﻌﻪ ﻭ ﻗﺎﺑﻞ ﭘﻴﮑﺮﺑﻨﺪﻱ ﺑﺎﺷﺪ ﺑﻨﺎﺑﺮﺍﻳﻦ ﺍﺯ ﻃﺮﺍﺣﻲ ﻳـﮏ ﺳﻴـﺴﺘﻢ ﺗـﮏ‬
‫ﻋﻤﻮﻣﻲﺗﺮ ﺍﺳﺖ‪ .‬ﺍﻳﻦ ﻣﻌﻤﺎﺭﻱ ﺷﺎﻣﻞ ﻣﺪﻝﻫﺎﻱ ﻣﻌﻤـﺎﺭﻱ‪ ،‬ﭘﻴﮑـﺮ ﺑﻨـﺪﻱ‬
‫ﺩﺭﺧﺖ ﺗﺼﻤﻴﻢ‪ ،‬ﺷﻤﺎﻱ ﻣﻌﻤﺎﺭﻱ ﻭ ﺗﻮﭘﻮﻟﻮﮊﻱ ﻣﻌﻤﺎﺭﻱ ﻣﺮﺟﻊ ﺍﺳﺖ‪ .‬ﺑﺎﻳﺪ‬
‫ﺗﻮﺟﻪ ﺩﺍﺷﺖ ﮐﻪ ﻣﺪﻝﻫﺎﻱ ﻣﻌﻤﺎﺭﻱ ﺧﻮﺩ ﻣﻌﻤﺎﺭﻱ ﻧﻴﺴﺘﻨﺪ ﺯﻳﺮﺍ ﺟﺮﻳـﺎﻥ‬
‫ﺩﺍﺩﻩ ﺑﻴﻦ ﻣﻮﻟﻔﻪﻫﺎ ﺭﺍ ﻧﺸﺎﻥ ﻧﻤﻲﺩﻫﻨﺪ‪ .‬ﻃﺮﺍﺣﻲ ﺩﻳـﺎﮔﺮﺍﻡ ﺗـﺼﻤﻴﻢ ﻣـﻲ‪-‬‬
‫ﺗﻮﺍﻧﺪ ﺑﻪ ﺳﺎﺩﮔﻲ ﺭﻭﻱ ﻧﻴﺎﺯﻣﻨﺪﻱﻫﺎﻱ ﻣﺮﺟـﻊ ﻧﮕﺎﺷـﺖ ﺷـﻮﺩ‪ .‬ﺑﻨـﺎﺑﺮﺍﻳﻦ‪،‬‬
‫ﭘﻴﮑﺮﺑﻨﺪﻱ ﺳﻴﺴﺘﻢ ﺩﺭ ﻭﺍﻗﻊ ﻓﺮﺁﻳﻨﺪﻱ ﺍﺯ ﺍﻧﺘﺨـﺎﺏ ﻳـﮏ ﺯﻳﺮﻣﺠﻤﻮﻋـﻪ ﺍﺯ‬
‫ﻧﻴﺎﺯﻣﻨﺪﻱﻫﺎﻱ ﻣﺮﺟﻊ ﺧﻮﺍﻫﺪ ﺑﻮﺩ‪ .‬ﺩﺭ ﺯﻳﺮ ﺷﮑﻞﻫﺎﻱ ﻣﺮﺑـﻮﻁ ﺑـﻪ ﻣﺜـﺎﻝ‬
‫ﺫﮐﺮ ﺷﺪﻩ ﺑﺮﺍﻱ ﻣﻌﻤﺎﺭﻱ ﻣﺮﺟﻊ ﺁﻭﺭﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬
‫‪ -۷‬ﺭﻭﺵ ‪ Faceted‬ﺑﺮﺍﻱ ﻃﺒﻘﻪ ﺑﻨﺪﻱ ﻣﻮﻟﻔﻪﻫﺎ‬
‫ﻣﺤﺼﻮﻻﺕ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ ﺑﺴﺘﻪ ﺑﻪ ‪facet‬ﻫﺎﻱ ﻣﺨﺘﻠﻔﻲ ﻃﺒﻘﻪ ﺑﻨـﺪﻱ‬
‫ﻣﻲ ﺷﻮﻧﺪ‪ .‬ﭼﻨﺪﻳﻦ ﺧـﺼﻮﺻﻴﺖ ﺍﺯ ﻣﺤـﺼﻮﻻﺕ ﺑـﺮﺍﻱ ﺗـﺴﻬﻴﻞ ﻣﻘﺎﻳـﺴﻪ‬
‫ﻣﻴﺎﻥ ﻣﺤﺼﻮﻻﺕ ﻣﺘﻔﺎﻭﺕ ﺑﺎﻳﺪ ﺩﺭ ﻧﻈـﺮ ﮔﺮﻓﺘـﻪ ﺷـﻮﺩ‪[Prieto-Diaz .‬‬
‫]‪and freeman 1987‬‬
‫‪ z‬ﻛﺎﺭﻛﺮﺩ‪ :‬ﻭﻇﻴﻔﻪ ﺍﻱ ﺭﺍ ﻛﻪ ﻣﻮﻟﻔﻪ ﻣﻲ ﺧﻮﺍﻫﺪ ﺍﻧﺠـﺎﻡ ﺩﻫـﺪ ﺭﺍ‬
‫ﺗﻮﺻﻴﻒ ﻣﻲ ﻛﻨﺪ‪.‬‬
‫‪ z‬ﻛﺎﺭﻛﺮﺩ )ﻋﻤﻠﻴﺎﺕ ﺍﺟﺮﺍ ﺷﺪﻩ(‪ ،‬ﺷﻲﺀ ) ﻧـﻮﻉ ﺷـﻲ‬
‫ﺩﺍﺩﻩ ﺍﻱ ﻛﻪ ﻋﻤﻠﻴﺎﺕ ﺭﻭﻱ ﺁﻥ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ( ﻭ‬
‫ﺭﺳﺎﻧﻪ ﺩﺍﺩﻩ ) ﺳﺎﺧﺘﺎﺭ ﺩﺍﺩﻩ ﺑﺰﺭﮔﺘـﺮﻱ ﻛـﻪ ﺷـﻲ‬
‫ﺩﺍﺩﻩ ﺍﻱ ﺩﺭ ﺁﻥ ﻭﺍﻗﻊ ﺍﺳﺖ(‬
‫‪ z‬ﻣﺤﻴﻂ‪ :‬ﺯﻣﻴﻨﻪ ﺍﻱ ﺭﺍ ﻛﻪ ﻣﻮﻟﻔﻪ ﺑﺮﺍﻱ ﺁﻥ ﻃﺮﺍﺣﻲ ﺷﺪﻩ ﺍﺳﺖ‬
‫ﺭﺍ ﺷﺮﺡ ﻣﻲ ﺩﻫﺪ‪.‬‬
‫‪ z‬ﻧﻮﻉ ﺳﻴﺴﺘﻢ ) ﻧـﻮﻉ ﺯﻳـﺮ ﺳﻴـﺴﺘﻤﻲ ﻛـﻪ ﻣﻮﻟﻔـﻪ‬
‫ﺑﺮﺍﻱ ﺁﻥ ﻃﺮﺍﺣﻲ ﺷﺪﻩ ﺍﺳﺖ(‪ ،‬ﻣﺤﻴﻂ ﻋﻤﻠﻜﺮﺩ )‬
‫ﻓﻌﺎﻟﻴﺖ ﻫﺎﻱ ﻣـﺮﺗﺒﻂ ﺑـﺎ ﺳﻴـﺴﺘﻢ ﻛـﺎﺭﺑﺮﺩﻱ( ﻭ‬
‫ﺗﻨﻈﻴﻤﺎﺕ )ﺩﺍﻣﻨﻪ ﺳﻴﺴﺘﻢ ﻛﺎﺭﺑﺮﺩﻱ(‬
‫ﺍﻟﮕﻮﺭﻳﺘﻢ ﺗﻄﺎﺑﻖ ﺩﺭ ﺍﻳﻦ ﺳﻴﺴﺘﻢ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ‪:‬‬
‫ﺍﮔﺮ ﺍﻳﻦ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺭﺍ ﺗﻮﺳﻌﻪ ﺩﻫـﻴﻢ ﺑـﻪ ﺻـﻮﺭﺗﻲ ﮐـﻪ ﺯﻣـﺎﻥ ﺍﺟـﺮﺍ‪،‬‬
‫ﻓﻀﺎﻱ ﺣﺎﻓﻈﻪ ﻭ ﺳﻄﺢ ﺗﺼﺪﻳﻖ ﺑﻬﺒﻮﺩ ﻳﺎﺑﺪ ﺑﻪ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺯﻳﺮ ﻣﻲﺭﺳﻴﻢ‪:‬‬