Beruflich Dokumente
Kultur Dokumente
C4arab.com
ھﻨﺪﺳﺔ اﻟﺒﺮﻣﺠﯿﺎت
Software Engineering
ﺗﺄﻟـــــﯿﻒ
أﺳﻤﺎء اﻟﻤﻨﻘﻮش
ﻣﺸﺮﻓﺔ ﺳﺎﺣﺔ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ
ﯾﺴﻤﺢ ﺑﺘﻮزﯾﻊ اﻟﻜﺘﺎب ﻋﻠﻰ ﺻﻮرﺗﻪ اﻹﻟﻜﺘﺮوﻧﯿﺔ ﻟﻜﻦ ﻻ ﯾﺴﻤﺢ ﺑﻄﺒﻊ اﻟﻜﺘﺎب أو ﺗﻐﯿﯿﺮ ﻫﯿﺌﺘﻪ
إﻻ ﺑﻌﺪ أﺧﺬا إذن ﻣﻦ اﻟﻜﺎﺗﺐ
اﻟﻤﻮﺳﻮﻋﺔ اﻟﻌﺮﺑﯿﺔ ﻟﻠﻜﻤﺒﯿﻮﺗﺮ واﻹﻧﺘﺮﻧﺖ©2000-2005ﺟﻤﯿﻊ اﻟﺤﻘﻮق ﻣﺤﻔﻮﻇﺔ -
اﻟﺘﻮاﺻﻞ ﻣﻊ اﻟﻘﺮاء
ﺣﺮﺻﺖ اﻟﻤﻮﺳﻮﻋﺔ اﻟﻌﺮﺑﯿﺔ ﻟﻠﻜﻤﺒﯿﻮﺗﺮ واﻹﻧﺘﺮﻧﺖ _ وﻣﻦ ﻣﻨﻄﻠﻖ اﻫﺘﻤﺎﻣﻬﺎ اﻟﻌﺎم ﺑﻌﻠﻮم اﻟﺤﺎﺳﺐ واﻟﺘﻘﻨﯿﺔ
واﻫﺘﻤﺎﻣﻬﺎ اﻟﺨﺎص ﺑﺘﻘﺪﯾﻢ ﻫﺬه اﻟﻌﻠﻮم ﺑﺎﻟﻠﻐﺔ اﻟﻌﺮﺑﯿﺔ _ ﻋﻠﻰ ﺗﻘﺪﯾﻢ ﻫﺬه اﻟﺴﻠﺴﺔ ﻣﻦ
اﻟﻜﺘﺐ اﻹﻟﻜﺘﺮوﻧﯿﺔ اﻟﺘﻰ ﻧﺘﻤﻨﻰ أن ﺗﺤﻘﻖ ﻃﻤﻮﺣﺎت اﻟﻘﺎرئ اﻟﻌﺮﺑﻰ اﻟﺬى اﻋﺘﺎد ﻋﻠﻰ ﻗﺮاءة أﺟﻮد
اﻟﻤﻄﺒﻮﻋﺎت ﺑﻜﺎﻓﺔ اﻟﻠﻐﺎت اﻟﻌﺎﻟﻤﯿﺔ .
إن اﻟﻤﻮﺳﻮﻋﺔ اﻟﻌﺮﺑﯿﺔ _ﻣﻦ ﺧﻼل ﻫﺬه اﻟﺴﻠﺴﻠﺔ _ ﺗﻄﻤﺢ ﻟﺘﻘﺪﯾﻢ ﺳﻠﺴﻠﺔ ﻣﻦ اﻟﻜﺘﺐ ﺑﻤﺴﺘﻮى ﻋﺎلٍ ﻣﻦ
اﻟﺠﻮدة ،اﻟﺸﻲء اﻟﺬى ﻟﻦ ﯾﺘﺤﻘﻖ ﺑﺪون ﻣﻼﺣﻈﺎﺗﻜﻢ واﻗﺘﺮاﺣﺎﺗﻜﻢ ﺣﻮل اﻟﺴﻠﺴﻠﺔ _ ﻃﺮﯾﻘﺔ اﻟﻜﺘﺎﺑﺔ ،
اﻷﺧﻄﺎء اﻹﻣﻼﺋﯿﺔ واﻟﻨﺤﻮﯾﺔ ،اﻟﺘﻨﻈﯿﻢ واﻟﺘﺮﺗﯿﺐ ،ﻃﺮﯾﻘﺔ ﻧﺸﺮ اﻟﻜﺘﺎب وﺗﻮزﯾﻌﻪ ،اﻹﺧﺮاج اﻟﻔﻨﻰ ...
اﻟﺦ
ﺗـــــــــــﻬﺎﻧﻰ اﻟﺴـــــــــــــــــﺒﯿﺖ
ﻣﺸﺮﻓﺔ اﻟﻤﻮﺳﻮﻋﺔ اﻟﻌﺮﺑﯿﺔ ﻟﻠﻜﻤﺒﯿﻮﺗﺮ واﻹﻧﺘﺮﻧﺖ
1
..ﺑﺴــــﻢ اﷲ اﻟﺮﺣﻤــــﻦ اﻟﺮﺣﯿـــــﻢ ..
اﻟﺪورات اﻟﺘﻌﻠﯿﻤﯿﺔ ..ھﻲ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺪورات
اﻟﺘﻲ ﺗﻘﺪﻣﮫﺎ ﻟﻜﻢ اﻟﻤﻮﺳﻮﻋﺔ اﻟﻌﺮﺑﯿﺔ؛ ﺑﺪأﻧﺎ ﺑﺘﻘﺪﻳﻤﮫﺎ
ﻓﻲ اﻟﺼﯿﻒ ﺗﺤﺖ ﻣﺴﻤﻰ " اﻟﺪورات اﻟﺼﯿﻔﯿﺔ " وھﺎ
ھﻲ ﺗﻌﻮد ﻣﻦ ﺟﺪﻳﺪ .ﺣﺮﺻﻨﺎ ﻋﻠﻰ ﺗﻘﺪﻳﻢ دورات ﻓﻲ
ﻣﺠﺎﻻت ﻣﺨﺘﻠﻔﺔ ﻟﻨﺮاﻋﻲ أﻏﻠﺐ اﻻھﺘﻤﺎﻣﺎت ﻛﻤﺎ
ﺣﺮﺻﻨﺎ ﻋﻠﻰ اﻧﺘﻘﺎء اﻟﺪورات اﻟﻤﻔﯿﺪة ،ﻏﯿﺮ اﻟﻤﺘﻜﺮرة،
ﺑﻄﺮﻳﻘﺔ ﺟﺎدة ﺗﻨﻘﻠﻚ إﻟﻰ اﻟﺠﻮ اﻟﺪراﺳﻲ ﻓﻲ ﻗﺎﻋﺎت
اﻟﺠﺎﻣﻌﺔ و ﺻﻔﻮف اﻟﻤﻌﺎھﺪ و ﻟﻜﻦ ﻓﻲ ﺑﯿﺌﺔ
إﻟﻜﺘﺮوﻧﯿﺔ! ﻛﻞ ھـﺬا ﻣﺠــﺎﻧـــﺎ! ...
ﻳﻮﺟﺪ ﻛﺬﻟﻚ ﺳﺎﺣﺔ ﻣﺘﺨﺼﺼﺔ ﻟﮫﺎ ﺿﻤﻦ ﻣﺠﻤﻮﻋﺔ
ﺳﺎﺣﺎت اﻟﻤﻮﺳﻮﻋﺔ اﻟﻌﺮﺑﯿﺔ ﻟﻠﻨﻘﺎش واﻷﺳﺌﻠﺔ،
ﺗﺠﺪھﺎ ھﻨـــﺎ! ...
اﺳﺘﻔﺪ واﺳﺘﺜﻤﺮ وﻗﺘﻚ ﻣﻌﻨﺎ! إذا ﻛﻨﺖ ﺗﺮﻏﺐ ﻓﻲ
ﺗﻄﻮﻳﺮ ذاﺗﻚ و ﺗﻮﺳﯿﻊ ﻧﻄﺎق ﺛﻘﺎﻓﺘﻚ ﻓﻲ اﻟﺤﺎﺳﻮب
ﻓﺎﺳﺘﻐﻞ ﻛﻞ دﻗﯿﻘﺔ واﺳﺘﻔﺪ ﻣﻌﻨﺎ! و ﻻ ﺗﻨﺴﻰ أﻧﻨﺎ
ﻓﻲ ﻋﺼﺮ اﻟﻤﻌﻠﻮﻣﺎت واﻟﺴﺮﻋﺔ.
اﺑﺪأ اﻵن !اﻧﺘﻘﻞ ﻟﺼﻔﺤﺔ اﻟﺪورات و اﺧﺘﺮ اﻟﺪورة اﻟﺘﻲ ﺗﻨﺎﺳﺒﻚ ،اﻧﺘﻘﻞ ﻟﺼﻔﺤﺔ اﻷﺳﺎﺗﺬة ﻟﻼﻃﻼع ﻋﻠﻰ
ﻗﺎﺋﻤﺔ اﻷﺳﺎﺗﺬة اﻟّﺬﻳﻦ ﺳﯿﻠﻘﻮن اﻟﻤﺤﺎﺿﺮات ،اﻧﺘﻘﻞ ﻟﺼﻔﺤﺔ اﻟﺘﺴﺠﯿﻞ ﻛﻲ ﺗﺴﺠّﻞ ﻧﻔﺴﻚ ﻓﻲ إﺣﺪى
اﻟﺪورات ،ﻟﻦ ﺗﺴﺘﻄﯿﻊ اﻟﻤﺸﺎرﻛﺔ ﻓﻲ أي دورة ﻗﺒﻞ أن ﺗﺴﺠﻞ .اﻧﺘﻘﻞ ﻟﺼﻔﺤﺔ اﻟﻤﺮاﺟﻊ ﻛﻲ ﺗﻄﻠﻊ ﻋﻠﻰ
اﻟﻤﺮاﺟﻊ اﻟﻤﻘﺪﻣﺔ ﻣﻦ اﻷﺳﺎﺗﺬة ﺑﺨﺼﻮص اﻟﺪورات اﻟﺤﺎﻟﯿﺔ .اﻧﺘﻘﻞ ﻟﺼﻔﺤﺔ اﻟﻤﻠﺘﺤﻘﯿﻦ ﻟﺘﻄﻠﻊ ﻋﻠﻰ ﺑﻌﺾ
اﻟﻤﻌﻠﻮﻣﺎت ﻋﻦ اﻟﻤﻠﺘﺤﻘﯿﻦ ﻓﻲ اﻟﺪورات .اﻧﺘﻘﻞ ﻟﺼﻔﺤﺔ اﺗﺼﻞ ﺑﻨﺎ ﻛﻲ ﺗﺮﺳﻞ ﻟﻨﺎ اﻗﺘﺮاﺣﺎً أو ﻃﻠﺒﺎً .ﻧﺤﻦ
ﺑﺎﻧﺘﻈﺎرك! ﻟﻜﻦ اﻟﻮﻗﺖ ﻣﺤﺪود و ﻋﺪد اﻟﻤﻠﺘﺤﻘﯿﻦ ﻓﻲ ﻛﻞ دورة ﻣﺤﺪود ﻟﺬا ﻻ ﺗﺘﺄﺧﺮ ﻓﻲ اﻟﺘﺴﺠﯿﻞ ﻣﻦ
ﻓﻀﻠﻚ.
2
ﻫﺬا اﻟﻜﺘﺎب ....
ﻟﯿﺲ ﻓﻰ اﻷﺻﻞ أﻻ دورة ﺗﻢ ﺗﺪرﯾﺴﻬﺎ ﻓﻰ ﺳﺎﺣﺔ اﻟﺪورات اﻟﺘﻌﻠﯿﻤﯿﺔ ﺑﺎﻟﻤﻮﺳﻮﻋﺔ
اﻟﻌﺮﺑﯿﺔ ﻟﻠﻜﻤﺒﯿﻮﺗﺮ واﻹﻧﺘﺮﻧﺖ ،وﺗﻢ ﺟﻤﻊ ﺗﻠﻚ اﻟﺪروس وﺳﻠﺴﻠﺔ اﻟﻨﻘﺎش اﻟﺘﻰ
دارت ﺣﻮﻟﻬﺎ ﻫﻨﺎ ﻓﻰ ﻫﺬا اﻟﻜﺘﺎب ،وﺗﻢ وﺿﻊ اﻟﻨﻘﺎﺷﺎت ﻋﻠﻰ ﻫﯿﺌﺔ أﺳﺌﻠﺔ
وأﺟﻮﺑﺔ ﻟﻜﻰ ﯾﺴﺘﻔﯿﺪ اﻟﺠﻤﯿﻊ ﻣﻨﻬﺎ ،،،،،،،،،
اﻟﺴﻠﺴﻠﺔ اﻟﻮﺣﯿﺪة اﻟﺘﻰ ﺗﺘﺒﻊ ﻧﻈﺎم اﻷﺳﺌﻠﺔ واﻷﺟﻮﺑﺔ اﻟﻨﺎﺗﺠﺔ ﻓﻌﻼً ﻣﻦ ﻣﺸﺎﻛﻞ ﺣﻘﯿﻘﺔ ﻷﺷﺨﺎص ﻣﻦ ﻣﺨﺘﻠﻒ •
اﻷﻣﺎﻛﻦ واﻟﺪول ،ﻣﻤﺎ ﯾﻬﯿﺊ ﻋﻨﺪك ﻧﻮع ﻣﻦ اﺳﺘﻌﺪاد ﻷى ﻣﺸﻜﻠﺔ وﻛﯿﻔﯿﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ.
ﺗﻌﺘﺒﺮ ﺳﻠﺴﻠﺔ اﻟﻜﺘﺎب اﻟﻮﺣﯿﺪة اﻟﻤﺪﻋﻮﻣﺔ ارﺑﻊ وﻋﺸﺮﯾﻦ ﺳﺎﻋﺔ ﻃﻮال اﻟﻌﺎم ،ﻓﯿﻤﻜﻨﻚ اﻻﺳﺘﻔﺴﺎر ﻋﻦ اى •
ﻣﺸﻜﻠﺔ وﺣﻠﻬﺎ ﻋﻦ ﻃﺮﯾﻖ وﺿﻌﻬﺎ ﻓﻰ ﺳﺎﺣﺔ اﻟﻨﻘﺎش واﻷﺳﺌﻠﺔ ﺑﺎﻟﻤﻮﺳﻮﻋﺔ .
إن ﻫﺬا اﻟﻜﺘﺎب ﻫﻮ ﻣﻦ اﺟﻞ ﻧﺸﺮ اﻟﻤﻌﺮﻓﺔ وﺗﻮﺳﯿﻊ اﻟﺘﻔﻜﯿﺮ اﻟﻤﻨﻄﻘﻰ اﻷﺳﺎﺳﻲ ،اﻻﺣﺘﺮاف ﻫﻮ ﻟﯿﺲ اﻟﻬﺪف •
ﻓﻰ ﺣﺪ ذاﺗﻪ ،ﺑﻞ اﻻﺳﺘﻄﻼع واﻛﺘﺸﺎف اﻟﺬات واﻹﻟﻤﺎم اﻟﺠﯿﺪ ﺑﺎﻷﺳﺎﺳﯿﺎت واﻟﻤﺒﺎدئ اﻷوﻟﯿﺔ
ﻣﻦ اﺟﻞ ﺷﻖ ﻃﺮﯾﻖ اﻟﻨﺠﺎح ﺑﻜﻞ ﺳﻬﻮﻟﺔ وﯾﺴﺮ.
3
اﻟﻤﺤﺘﻮﻳﺎت ..
4
ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ اﻟﺮﺣﯿﻢ
ﻣﻘﺪﻣﺔ:
ﻟﻢ ﻳﻌﺪ ﺧﺎﻓﯿﺎ ﻋﻠﻰ أي ﻣﻨﺎ أھﻤﯿﺔ اﻟﺒﺮﻣﺠﯿﺎت Softwareﻓﻲ ﺣﯿﺎﺗﻨﺎ اﻟﯿﻮﻣﯿﺔ ﺳﻮاء ﻓﻲ اﻟﺒﯿﺖ أو اﻟﻤﺼﻨﻊ أو
اﻟﻤﺴﺘﺸﻔﻰ أو ...اﻟﺦ ،ﻓﻨﺤﻦ ﻧﺘﻌﺎﻣﻞ ﻳﻮﻣﯿﺎ ﻣﻊ اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﺟﮫﺰة واﻟﻤﻌﺪات اﻟﺘﻲ ﺗﻌﺘﻤﺪ ﻓﻲ ﻋﻤﻠﮫﺎ ﻋﻠﻰ
اﻟﺒﺮﻣﺠﯿﺎت وﻣﻦ اﻟﻤﮫﻢ ﻟﻨﺎ أن ﺗﻌﻤﻞ ھﺬه اﻷﺟﮫﺰة وﺑﺮاﻣﺠﮫﺎ ﺑﺎﻟﺸﻜﻞ واﻟﻜﻔﺎءة اﻟﺘﻲ ﻧﺘﻮﻗﻌﮫﺎ ﻣﻨﮫﺎ .ﻟﺬا ﻓﺈن
ھﻨﺪﺳﺔ اﻟﺒﺮﻣﺠﯿﺎت أﺻﺒﺤﺖ اﻟﯿﻮم أﻛﺜﺮ أھﻤﯿﺔ ﻣﻦ أي وﻗﺖ ﻣﻀﻰ.
اﻟﻤﺮﺟﻊ:
1- Shari Pfleeger, "Software Engineering - Theory and Practice", 2nd Edition
وﺑﻨﻔﺲ اﻟﻔﻜﺮة ﻳﻤﻜﻦ اﻟﻨﻈﺮ إﻟﻰ ﻋﻠﻢ اﻟﺤﻮﺳﺒﺔ computer scienceﺣﯿﺚ ﻳﻜﻮن ﺗﺮﻛﯿﺰﻧﺎ ﻋﻠﻰ اﻟﺤﻮاﺳﯿﺐ وﻟﻐﺎت
اﻟﺒﺮﻣﺠﺔ ﻟﺪرﺳﺘﮫﺎ وﺗﻄﻮﻳﺮھﺎ ﻓﻲ ﺣﺪ ذاﺗﮫﺎ.
أو ﻳﻤﻜﻦ اﻟﻨﻈﺮ إﻟﯿﮫﺎ واﻟﺘﻌﺎﻣﻞ ﺑﮫﺎ ﻋﻠﻰ أﻧﮫﺎ أدوات ﻧﺴﺘﺨﺪﻣﮫﺎ ﻋﻨﺪ ﺗﺼﻤﯿﻢ وﺗﻄﻮﻳﺮ ﺣﻞ ﻟﻤﺸﻜﻠﺔ ﻣﺎ ﺗﻮاﺟﮫﻨﺎ أو
اﻵﺧﺮﻳﻦ.
5
ﺷﻜﻞ )(1-1
وﻟﻜﻦ وﻣﻦ اﻟﻤﮫﻢ أن ﻧﺘﺬﻛﺮ أن ﻋﻤﻠﯿﺔ ﻛﺘﺎﺑﺔ اﻟﺒﺮاﻣﺞ ﺗﻌﺪ ﻓﻦ Artﺑﻘﺪر ﻣﺎ ھﻲ ﻋﻠﻢ ،ﻟﻤﺎذا؟
ﻷﻧﻪ ﻳﻤﻜﻦ ﻷي ﺷﺨﺺ ﻟﺪﻳﻪ ﻣﻌﺮﻓﺔ ﻛﺎﻓﯿﺔ ﺑﺄﺣﺪ ﻟﻐﺎت ﺑﺮﻣﺠﺔ اﻟﺤﺎﺳﻮب hackerأن ﻳﻜﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻟﯿﺆدي ﻣﮫﻤﺔ
ﻣﺤﺪدة ،ﻟﻜﻦ اﻻﻣﺮ ﻳﺘﻄﻠﺐ ﻣﮫﺎرة وﻣﻌﺮﻓﺔ ﻣﮫﻨﺪس ﺑﺮﻣﺠﯿﺎت ﻣﺤﺘﺮف ﻟﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ أﻛﺜﺮ ﺗﻨﺎﺳﻘﺎ ووﺿﻮﺣﺎ ،وأﺳﮫﻞ
ﻓﻲ اﻟﺼﯿﺎﻧﺔ ،وﻳﻘﻮم ﺑﺎﻟﻤﮫﻤﺔ اﻟﻤﻄﻠﻮﺑﺔ ﻣﻨﻪ ﺑﻔﻌﺎﻟﯿﺔ ودﻗﺔ أﻛﺒﺮ.
أي أن ،ھﻨﺪﺳﺔ اﻟﺒﺮﻣﺠﯿﺎت ﺗﻌﻨﻰ ﺑﺘﺼﻤﯿﻢ وﺗﻄﻮﻳﺮ ﺑﺮاﻣﺞ ذات ﺟﻮدة ﻋﺎﻟﯿﺔ.
اﻟﺰﺑﻮن Customer:وھﻮ اﻟﺸﺮﻛﺔ )أو اﻟﺸﺨﺺ( اﻟﻤﻤﻮﻟﺔ ﻟﻤﺸﺮ وع ﺗﻄﻮﻳﺮ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻤﻄﻠﻮب •
اﻟﻤﺴﺘﺨﺪم User:اﻟﺸﺨﺺ )أو ﻣﺠﻤﻮﻋﺔ اﻻﺷﺨﺎص ( اﻟﺬي ﺳﻮف ﻳﻘﻮم ﻓﻌﻼ ﺑﺎﺳﺘﻌﻤﺎل اﻟﺒﺮﻧﺎﻣﺞ، •
واﻟﺘﻌﺎﻣﻞ ﻣﻌﻪ ﻣﺒﺎﺷﺮة.
اﻟﻤﻄﻮر Developer:وھﻮ اﻟﺸﺮﻛﺔ )أو اﻟﺸﺨﺺ( اﻟﺬي ﺳﻮف ﻳﻘﻮم ﺑﺘﻄﻮﻳﺮ اﻟﺒﺮﻧﺎﻣﺞ ﻟﺼﺎﻟﺢ اﻟﺰﺑﻮن. •
6
ﺷﻜﻞ )(2-1
ﻣﻜﻮﻧﺎت اﻟﻨﻈﺎم
ﻣﺸﺎرﻳﻌﻨﺎ اﻟﺘﻲ ﻧﻄﻮرھﺎ ﻟﻦ ﺗﻌﻤﻞ ﻓﻲ اﻟﻔﺮاغ ،ﻓﻌﻠﯿﮫﺎ أن ﺗﺘﻔﺎﻋﻞ ﻣﻊ ﻣﺴﺘﺨﺪﻣﯿﻦ ،أﺟﮫﺰة وﻣﻌﺪات ﻣﺘﻨﻮﻋﺔ ،ﻧﻈﻢ
ﺗﺸﻐﯿﻞ وﺑﺮاﻣﺞ وﻣﻠﻔﺎت وﻗﻮاﻋﺪ ﺑﯿﺎﻧﺎت ....إﻟﺦ و رﺑﻤﺎ ﺣﺘﻰ أﻧﻈﻤﺔ ﺣﻮاﺳﯿﺐ آﺧﺮى .ﻟﮫﺬا ﻳﺠﺐ ﺗﻌﺮﻳﻒ ﺣﺪود
اﻟﻨﻈﺎم وﻣﻜﻮﻧﺎﺗﻪ ﺟﯿﺪا .أي ﻳﺠﺐ ﺗﻌﺮﻳﻒ ﻣﺎ اﻟﺬي ﻳﺸﺘﻤﻞ ﻋﻠﯿﻪ اﻟﻨﻈﺎم وﻣﺎ اﻟﺬي ﻻ ﻳﺸﺘﻤﻞ ﻋﻠﯿﻪ.
أي ﻧﻈﺎم ھﻮ ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻜﺎﺋﻨﺎت objectsواﻟﻨﺸﺎﻃﺎت activitiesﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ وﺻﻒ ﻟﻠﻌﻼﻗﺎت
اﻟﺘﻲ ﺗﺮﺑﻂ ﺗﻠﻚ اﻟﻜﺎﺋﻨﺎت واﻟﻨﺸﺎﻃﺎت ﻣﻌﺎ .ﻣﻊ ﺗﻌﺮﻳﻒ ﻗﺎﺋﻤﺔ اﻟﻤﺪﺧﻼت اﻟﻤﻄﻠﻮﺑﺔ واﻟﺨﻄﻮات اﻟﻤﺘﺒﻌﺔ واﻟﻤﺨﺮﺟﺎت
اﻟﻨﺎﺗﺠﺔ ﻟﻜﻞ ﻧﺸﺎط.
أول ﺧﻄﻮات ﺗﺤﻠﯿﻞ اﻟﻤﺸﻜﻠﺔ ھﻮ ﻓﮫﻢ ﻣﺎھﯿﺔ اﻟﻤﺸﻜﻠﺔ وﺗﻌﺮﻳﻔﮫﺎ ﺑﻮﺿﻮح ،ﻟﺬا ﻋﻠﯿﻨﺎ أوﻻ أن ﻧﺼﻒ اﻟﻨﻈﺎم ﺑﺘﺤﺪﻳﺪ
ﻣﻜﻮﻧﺎﺗﻪ واﻟﻌﻼﻗﺎت اﻟﺘﻲ ﺗﺮﺑﻂ ﺑﯿﻦ ھﺬه اﻟﻤﻜﻮﻧﺎت.
1.اﻟﻨﺸﺎﻃﺎت واﻟﻜﺎﺋﻨﺎت :اﻟﻨﺸﺎط ھﻮ ﻋﻤﯿﻠﺔ ﺗﺤﺪث ﺑﺎﻟﻨﻈﺎم وﻋﺎدة ﻣﺎ ﻳﻮﺻﻒ ﻛﺤﺪث ﻳﺘﻢ ﻣﻦ ﺧﻼل ﺣﺎﻓﺰ .اﻟﻨﺸﺎط
ﻳﻐﯿﺮ ﺷﺊ ﻣﺎ إﻟﻰ آﺧﺮ ﺑﺘﻐﯿﺮ ﺧﻮاﺻﻪ )ﺻﻔﺎﺗﻪ)
ھﺬا اﻟﺘﻐﯿﺮ ﻳﻤﻜﻦ أن ﻳﻌﻨﻰ ﺗﺤﻮﻳﻞ أﺣﺪ ﻋﻨﺎﺻﺮ اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﻣﻮﻗﻊ إﻟﻰ آﺧﺮ ،أو ﺗﻌﺪﻳﻞ ﻗﯿﻤﺘﻪ إﻟﻰ ﻗﯿﻤﺔ ﻣﺨﺘﻠﻔﺔ.
ھﺬه اﻟﻌﻨﺎﺻﺮ ﺗﺴﻤﻰ ﻛﺎﺋﻨﺎت objectsوھﻲ ﻋﺎدة ﻣﺎﺗﻜﻮن ﻣﺮﺗﺒﻄﺔ ﺑﺒﻌﻀﮫﺎ اﻟﺒﻌﺾ ﺑﺸﻜﻞ أو ﺑﺄﺧﺮ .ﻣﺜﻼ اﻟﻜﺎﺋﻨﺎت
ﻳﻤﻜﻦ أن ﺗﻜﻮن ﻣﺮﺗﺒﺔ ﻓﻲ ﻣﺼﻔﻮﻓﺔ أو ﺳﺠﻞ( ﻗﯿﺪ).
7
وﺻﻒ ھﺬه اﻟﻜﺎﺋﻨﺎت ﻧﻮﻋﮫﺎ ،اﻟﻨﺸﺎﻃﺎت اﻟﺘﻲ ﻳﻤﻜﻦ إﺟﺮاﺋﮫﺎ ﻋﻠﯿﮫﺎ ...ﻳﺠﺐ وﺿﻌﮫﺎ ﺑﺪﻗﺔ ھﻲ اﻳﻀﺎ.
ﺧﻼل اﻟﺪروس اﻟﺘﺎﻟﯿﺔ ﻣﻦ اﻟﺪورة ﺳﻨﺘﻌﺮف ﻋﻠﻰ ﻛﻞ ﺧﻄﻮة ﻣﻦ ھﺬه اﻟﺨﻄﻮات وﻛﯿﻒ ﺗﺘﻢ ﺑﺸﻜﻞ ﻣﺒﺴﻂ ،وﺳﻮف
ﻧﺨﻮض ﻓﻲ ﻣﺰﻳﺪ ﻣﻦ اﻟﺘﻔﺎﺻﯿﻞ ﻓﻲ دروس ﻻﺣﻘﺔ ﺑﺈذن اﷲ.
8
( •·•·.·´¯`·.ﻧﻘﺎش اﻟﺪرس اﻷول•·) •·.·´¯`·.
س - 1ھﻞ اﻟﻤﻘﺼﻮد ﺑﮫﺬي اﻟﺠﻤﻠﺔ ان اﻟﻤﺒﺮﻣﺞ ﻻ ﻳﺴﺘﻄﯿﻊ ﺣﻞ اﻟﻤﺸﻜﻠﻪ ﻓﻘﻂ ﻣﮫﻨﺪس اﻟﺒﺮﻣﺠﯿﺎت
ھﻮ اﻟﺬي ﻳﺴﺘﻄﯿﻊ؟؟؟؟
ﻣﻤﻜﻦ أن ﻳﻮﺟﺪ ﺷﺨﺺ ﺗﻌﻠﻢ اﻟﺒﺮﻣﺠﺔ دون أن ﻳﺪرس ھﻨﺪﺳﺔ ﺑﺮﻣﺠﯿﺎت و ﺷﺨﺺ آﺧﺮ درس ھﻨﺪﺳﺔ اﻟﺒﺮﻣﺠﯿﺎت
وﺑﺎﻟﻄﺒﻊ ﻋﻠﻮم اﻟﺤﺎﺳﻮب ..ﻟﻮ اﻋﻄﯿﺖ ھﺬﻳﻦ اﻟﺸﺨﺼﯿﻦ ﻣﺸﻜﻠﺔ ﻣﺎ ..ﺳﯿﻜﻮن ﺣﻞ ﻣﮫﻨﺪس اﻟﺒﺮﻣﺠﯿﺎت
ﻟﻠﻤﺸﻠﻜﺔ أﻓﻀﻞ ﻣﻦ ﺣﻞ اﻟﻤﺒﺮﻣﺞ اﻟﺬي ﻟﻢ ﻳﺪرس ھﻨﺪﺳﺔ اﻟﺒﺮﻣﺠﯿﺎت
"ﺗﺴﺘﻄﯿﻊ أن ﺗﻘﻮل أن ﻛﻞ ﻣﮫﻨﺪس ﺑﺮﻣﺠﯿﺎت ھﻮ ﻣﺒﺮﻣﺞ ﺑﯿﻨﻤﺎ ﻟﯿﺲ ﻛﻞ ﻣﺒﺮﻣﺞ ھﻮ ﻣﮫﻨﺪس ﺑﺮﻣﺠﯿﺎت"
ﻧﻌﻢ ھﺬا ھﻮ اﻟﻤﻘﺼﻮد ،ھﻨﺪﺳﺔ اﻟﺒﺮﻣﺠﺎت ﻻ ﺗﮫﺘﻢ ﻓﻘﻂ ﺑﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻳﺆدي ﻣﮫﻤﺔ ﻣﺤﺪدة ﻓﺤﺴﺐ ،ﺑﻞ أﻧﮫﺎ
ﺗﮫﺘﻢ ﺑﻤﺎ ھﻮ أﻛﺜﺮ ﻣﻦ ذﻟﻚ "ﺟﻮدة اﻟﺒﺮﻧﺎﻣﺞ"
ﻛﻠﻤﺔ ﻣﺒﺮﻣﺞ أو Hackerﺗﻄﻠﻖ ﻋﻠﻰ ﻛﻞ ﻣﻦ ﻳﻌﺮف ﻛﯿﻒ ﻳﻜﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻟﻠﻘﯿﺎم ﺑﺄداء ﻋﻤﻞ ﻣﺎ..
وﻟﻜﻦ ﻛﻠﻤﺔ ﻣﮫﻨﺪس ﺑﺮﻣﺠﯿﺎت ﻻ ﺗﻄﻠﻖ إﻻ ﻋﻠﻰ ﻣﻦ ﻳﻜﺘﺐ ھﺬه اﻟﺒﺮﻣﺠﯿﺎت ﺑﺎﺳﻠﻮب ﻋﻠﻤﻲ ﻳﺴﻌﻰ ﻣﻦ ﺧﻼﻟﻪ
إﻟﻰ أن ﺗﻜﻮن ﺑﺮاﻣﺠﻪ ذات ﺟﻮدة ﻋﺎﻟﯿﺔ.
ﻧﻌﻢ ھﻨﺎك ﻓﺮق ﺑﯿﻦ ﻣﮫﻨﺪس اﻟﺒﺮﻣﺠﯿﺎت وﻣﺤﻠﻞ اﻟﻨﻈﻢ ﻓﻤﺜﻼ ﻓﻲ اﻟﺪول اﻟﻤﺘﻘﺪﻣﺔ ﻳﻘﻮم ﻣﺤﻠﻞ اﻟﻨﻈﺎم ﺑﺪراﺳﺔ
اﻟﻤﺸﺮوع اﻟﻤﺮاد ﺗﻨﻔﯿﺬه وﻛﯿﻔﯿﺔ ﺣﻞ اﻟﻤﺸﺎﻛﻞ اﻟﺘﻲ ﺗﻮﺟﻪ ﻛﻤﺎ وﻳﻘﻮم ﺑﺪراﺳﺔ اﻟﺠﺪوى وﻣﻌﺮﻓﺔ ﻣﺘﻄﻠﺒﺎت
اﻟﻨﻈﺎم ...اﻟﺦ
أي اﻧﻪ ﻳﻘﻮم ﺑﺘﺤﻠﯿﻞ اﻟﻨﻈﺎم اﻟﻤﺮاد ﺑﻨﺎﺋﻪ ﺗﺤﻠﯿﻞ دﻗﯿﻖ .
اﻣﺎ ﻣﮫﻨﺪس اﻟﺒﺮﻣﺠﯿﺎت ﻓﯿﻘﻮم ﺑﺒﺮﻣﺠﺔ اﻟﻨﻈﺎم وﺗﮫﯿﺌﺘﻪ ﻛﻲ ﻳﻈﮫﺮ ﻓﻲ اﻟﺼﻮرة اﻟﻨﮫﺎﺋﯿﺔ..
أي ﻳﺤﺘﺎج ﻋﻠﻰ اﻻﻗﻞ اﻟﻲ ﺷﺨﺼﯿﻦ ﻛﻲ ﻳﺘﻢ ﺑﻨﺎء اﻟﻨﻈﺎم او اﻟﺒﺮﻧﺎﻣﺞ اﻟﻤﻄﻠﻮب.
9
اﻟﺪرس اﻟﺜﺎﻧﻲ :دورة ﺣﯿﺎة ﺗﻄﻮﻳﺮ اﻟﻤﺸﺮوع
ﻣﻘﺪﻣﺔ:
ﻋﻤﻠﯿﺔ ﺑﻨﺎء أي ﻣﻨﺘﺞ ﺗﻤﺮ ﺑﻌﺪة ﻣﺮاﺣﻞ ﻳﻄﻠﻖ ﻋﻠﯿﮫﺎ ﻋﺎدة "دورة اﻟﺤﯿﺎة ،" Life Cycleوﻣﻤﺎ ﺗﻌﻠﻤﻨﺎ ﻓﻲ اﻟﺪرس
اﻟﺴﺎﺑﻖ ﻓﺈن دروة ﺣﯿﺎة ﺗﻄﻮﻳﺮ أي ﻧﻈﺎم ﺑﺮﻣﺠﻲ Software development life cycleﺗﺘﻀﻤﻦ اﻟﻤﺮاﺣﻞ اﻟﺘﺎﻟﯿﺔ:
1.ﺗﺤﺪﻳﺪ وﺗﻌﺮﻳﻒ اﻟﻤﺘﻄﻠﺒﺎتRequirements analysis and definition
2.ﺗﺼﻤﯿﻢ اﻟﻨﻈﺎمSystem design
3.ﺗﺼﻤﯿﻢ اﻟﺒﺮﻧﺎﻣﺞProgram design
4.ﻛﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ )ﺗﻄﻮﻳﺮه) Program implementation
5.أﺧﺘﺒﺎر وﺣﺪات اﻟﺒﺮﻧﺎﻣﺞUnit testing
6.أﺧﺘﺒﺎر اﻟﻨﻈﺎمsystem testing
7.ﺗﺴﻠﯿﻢ اﻟﻨﻈﺎمsystem delivery
8.اﻟﺼﯿﺎﻧﺔmaintenance
ﻛﻞ ﻣﺮﺣﻠﺔ ﻣﻦ ﺗﻠﻚ اﻟﻤﺮاﺣﻞ ﺗﺘﻀﻤﻦ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺨﻄﻮات أو اﻟﻨﺸﺎﻃﺎت وﻟﻜﻞ ﻣﻨﮫﺎ ﻣﺪﺧﻼﺗﮫﺎ وﻣﺨﺮﺟﺎﺗﮫﺎ وﺗﺄﺛﺮھﺎ
ﻋﻠﻰ ﺟﻮدة اﻟﻤﻨﺘﺞ اﻟﻨﮫﺎﺋﻲ( اﻟﺒﺮﻧﺎﻣﺞ).
دورة ﺣﯿﺎة أي ﻣﻨﺘﺞ ﺗﺒﺪأ ﺑﺄول ﺧﻄﻮة وھﻲ ﺗﺤﺪﻳﺪ اﻟﻤﺘﻄﻠﺒﺎت وﺗﺘﺪرج إﻟﻰ ﺑﺎﻗﻲ اﻟﺨﻄﻮات ﻛﻤﺎ ھﻲ ﻣﺮﺗﺒﺔ ﺣﺘﻰ
اﻟﻮﺻﻮل إﻟﻰ آﺧﺮ ﺧﻄﻮة وھﻲ ﺗﺴﻠﯿﻢ اﻟﺒﺮﻧﺎﻣﺞ وﺻﯿﺎﻧﺘﻪ )إن دﻋﺖ اﻟﺤﺎﺟﺔ( ،إﻻ أن اﻟﺘﺠﺎرب اﻟﻌﻤﻠﯿﺔ ﺗﻈﮫﺮ أن ھﺬا
ﻟﯿﺲ ﺿﺮورﻳﺎ وأن دورة ﺣﯿﺎة ﺗﻄﻮﻳﺮ اﻟﺒﺮاﻣﺞ ﻗﺪ ﺗﺄﺧﺬ أﺷﻜﺎل )أو أﻧﻤﺎط( ﻣﺨﺘﻠﻔﺔ .وﻓﻲ ھﺬا اﻟﺪرس ﺳﻮف ﻧﺘﻌﺮف
إﻟﻰ ھﺬه اﻷﻧﻤﺎط
10
ﺷﻜﻞ )(1-2
ﻳﺘﻤﯿﺰ اﻟﻨﻤﻮذج اﻻﻧﺤﺪاري ﺑﺎﻟﺒﺴﺎﻃﺔ ،وﻟﺬا ﻓﺈﻧﻪ ﻳﺴّﮫﻞ ﻋﻠﻰ اﻟﻤﻄﻮر ﺗﻮﺿﯿﺢ ﻛﯿﻔﯿﺔ ﺳﯿﺮ اﻟﻌﻤﻞ ﺑﺎﻟﻤﺸﺮوع
ﻟﻠﻌﻤﯿﻞ )اﻟﺬي ﻋﺎدة ﻻ ﻳﻌﺮف اﻟﻜﺜﯿﺮ ﻋﻦ ﺻﻨﻊ اﻟﺒﺮﻣﺠﯿﺎت( واﻟﻤﺮاﺣﻞ اﻟﻤﺘﺒﻘﯿﺔ ﻣﻦ اﻟﻌﻤﻞ .وﻗﺪ ﻛﺎن ھﺬا اﻟﻨﻤﻮذج
أﺳﺎس ﻋﻤﻞ ﻛﺜﯿﺮ ﻣﻦ اﻟﻤﺆﺳﺴﺎت ﻟﻔﺘﺮة ﻃﻮﻳﻠﺔ ﻣﺜﻞ وزارة اﻟﺪﻓﺎع اﻻﻣﺮﻳﻜﯿ ﺔ ،واﺳﺘﻨﺒﻂ ﻣﻨﻪ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻨﻤﺎذج
اﻻﻛﺜﺮ ﺗﻌﻘﯿﺪا.
إﻻ أن ﻟﮫﺬا اﻟﻨﻤﻮذج اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻌﯿﻮب ،أھﻤﮫﺎ أﻧﻪ ﻻ ﻳﻌﻜﺲ اﻟﻄﺮﻳﻘﺔ اﻟﺘﻲ ﻳﻌﻤﻞ ﺑﮫﺎ اﻟﻤﻄﻮرون ﻓﻲ اﻟﻮاﻗﻊ.
ﻓﺒﺎﺳﺘﺜﻨﺎء اﻟﻤﺸﺎرﻳﻊ اﻟﺼﻐﯿﺮة واﻟﺒﺴﯿﻄﺔ )أي أﻧﮫﺎ ﻣﻔﮫﻮﻣﺔ ﺑﺸﻜﻞ ﺟﯿﺪ ﻟﻠﻤﻄﻮر( ﻓﺈن اﻟﺒﺮﻣﺠﯿﺎت ﻋﺎدة ﻣﺎ ﺗﻨﺘﺞ
ﺑﻌﺪ ﻗﺪر ھﺎﺋﻞ ﻣﻦ اﻟﺘﻜﺮار واﻻﻋﺎدة .ﻓﻲ ﺣﯿﻦ أن ھﺬا اﻟﻨﻤﻮذج ﻳﻔﺘﺮض أن ﻳﻜﻮن اﻟﺤﻞ واﺿﺢ وﻣﻔﮫﻮم وﺳﺒﻖ
ﺗﺤﻠﯿﻠﻪ ﺑﺎﻟﻜﺎﻣﻞ ﻗﺒﻞ ﻣﺒﺎﺷﺮة ﻣﺮﺣﻠﺔ اﻟﺘﺼﻤﯿﻢ وھﻮ أﻣﺮ ﻳﻜﺎد ﻳﻜﻮن ﺷﺒﻪ ﻣﺴﺘﺤﯿﻞ ﻣﻊ اﻻﻧﻈﻤﺔ اﻟﻀﺨﻤﺔ .وﺣﺘﻰ
إن ﻛﺎن ﻣﻤﻜﻦ ﻓﺈﻧﻪ ﻳﺄﺧﺬ وﻗﺖ ﻃﻮﻳﻞ ﺟﺪا )رﺑﻤﺎ ﺳﻨﻮات!)
ﺑﺎﺧﺘﺼﺎر،اﻟﻨﻤﻮذج اﻻﻧﺤﺪاري ﺳﮫﻞ اﻟﻔﮫﻢ و ﺑﺴﯿﻂ ﻓﻲ إدارﺗﻪ .ﻟﻜﻦ ﻣﻤﯿﺰاﺗﻪ ﺗﺒﺪأ ﻓﻲ اﻟﺘﺪاﻋﻲ ﺑﻤﺠﺮد أن ﻳﺰداد
ﺗﻌﻘﯿﺪ اﻟﻤﺸﺮوع.
ﻳﻮﺟﺪ ﻋﺪة ﻃﺮق ﻳﻤﻜﻦ ﺑﮫﺎ ﺗﻨﻈﯿﻢ ﻋﻤﻠﯿﺔ ﺗﻄﻮﻳﺮ إﺻﺪارات اﻟﺒﺮﻧﺎﻣﺞ ،وﻣﻦ اﺷﮫﺮھﺎ:
·اﻟﻨﻤﻮذج اﻟﺘﺰاﻳﺪيIncremental model
11
ﺣﯿﺚ ﻳﺘﻢ ﺗﻘﺴﯿﻢ اﻟﻨﻈﺎم اﻟﻤﻄﻠﻮب ﺗﻄﻮﻳﺮه إﻟﻰ ﻋﺪة اﺟﺰاء ﺣﺴﺐ اﻟﻮﻇﺎﺋﻒ اﻟﺘﻲ ﻳﻌﺘﯿﻦ ﻋﻠﯿﻪ اﻟﻘﯿﺎم ﺑﮫﺎ ،ﻳﺒﺪأ
أول إﺻﺪار ﺑﺄﺣﺪ ﺗﻠﻚ اﻻﺟﺰاء وﻣﻊ اﻟﻮﻗﺖ ﻳﺘﻢ إﺿﺎﻓﺔ اﻟﻤﺰﻳﺪ ﻣﻦ اﻻﺟﺰاء )اﻟﻮﻇﺎﺋﻒ( ﺣﺘﻰ ﻳﺘﻢ اﻻﻧﺘﮫﺎء ﻣﻦ ﺗﻄﻮﻳﺮ
اﻟﻨﻈﺎم ﺑﺸﻜﻞ ﺗﺎم وﺣﺴﺐ ﻣﺘﻄﻠﺒﺎت اﻟﻌﻤﯿﻞ.
ﻣﻦ ﻣﻤﯿﺰات ھﺬا اﻷﺳﻠﻮب أﻧﻪ ﻳﻤﻜﻦ اﻟﻤﻄﻮرﻳﻦ ﻣﻦ اﻟﺤﺼﻮل ﻋﻠﻰ ﻣﻼﺣﻈﺎت وﺗﻘﯿﯿﻢ اﻟﺰﺑﻮن ﻣﺒﻜﺮا و ﺑﺼﻮرة
ﻣﻨﺘﻈﻤﺔ ،ورﺻﺪ اﻟﺼﻌﻮﺑﺎت اﻟﻤﺤﺘﻤﻠﺔ ﻗﺒﻞ اﻟﺘﻤﺎدي ﺑﻌﯿﺪا ﻓﻲ ﻋﻤﻠﯿﺎت اﻟﺘﻄﻮﻳﺮ.ﻛﻢ أﻧﻪ ﻳﻤّﻜﻦ ﻣﻦ اﻛﺘﺸﺎف ﻣﺪى
ﺣﺠﻢ و ﺗﻌﻘﯿﺪ اﻟﻌﻤﻞ ﻣﺒﻜﺮا.
12
ﺷﻜﻞ )(2-2
13
( •·•·.·´¯`·.ﻧﻘﺎش اﻟﺪرس اﻟﺜﺎﻧﻲ•·) •·.·´¯`·.
اﻟـ backtrackﻣﻤﻜﻦ ﻳﺤﺪث ﻓﻲ ﺟﻤﯿﻊ اﻟـ modelsوﻟﯿﺲ ھﺬا ﻓﻘﻂ ..ﻓﺒﻌﺪ ﻛﻞ ﻣﺮﺣﻠﺔ ﻣﻤﻜﻦ ﻳُﻜﺘﺸﻒ أن ﻧﺎﺗﺞ
أﺣﺪ اﻟﻤﺮاﺣﻞ اﻟﺴﺎﺑﻘﺔ ﻟﻢ ﻳﻜﻦ ﺻﺤﯿﺢ وﻳﺤﺘﺎج إﻟﻰ ﺗﻌﺪﻳﻞ
وھﺬا ﻣﺎ ﻳﺠﻌﻞ أﻧﻤﺎط آﺧﺮى ﻛﺎﻟﻨﻤﻂ اﻟﻠﻮﻟﺒﻲ أﻛﺜﺮ ﺗﻔﻀﯿﻼ.
14
اﻟﺪرس اﻟﺜﺎﻟﺚ :دراﺳﺔ اﻟﻤﺘﻄﻠﺒﺎت
ﻓﻲ ھﺬا اﻟﺪرس ﺳﻮف ﻧﺒﺪأ ﻓﻲ دراﺳﺔ أول )وﻟﻌﻠﮫﺎ أھﻢ( ﺧﻄﻮة ﻓﻲ ﺗﻄﻮﻳﺮ اﻟﺒﺮاﻣﺞ وھﻲ ﺗﺤﺪﻳﺪ ﻣﺘﻄﻠﺒﺎت
اﻟﻨﻈﺎم Capturing the requirements.
اﻟﮫﺪف ﻣﻦ ﺗﺤﺪﻳﺪ اﻟﻤﺘﻄﻠﺒﺎت ھﻮ ﻓﮫﻢ ﻣﺎ ﻳﺘﻮﻗﻌﻪ اﻟﻌﻤﯿﻞ واﻟﻤﺴﺘﺨﺪم ﻣﻦ اﻟﻨﻈﺎم )ﻣﺎ اﻟﺬي ﻳﻤﻜﻦ ﻟﻠﻨﻈﺎم أداؤه
وﻣﺎ ﻻ ﻳﻤﻜﻨﻪ أداؤه(.ﻓﻘﺪ ﻳﻜﻮن اﻟﻨﻈﺎم اﻟﻤﻄﻠﻮب ﺗﺼﻤﯿﻤﻪ ﺑﺪﻳﻞ ﻟﻨﻈﺎم أو ﻟﻄﺮﻳﻘﺔ ﻣﺴﺘﺨﺪﻣﺔ ﻷداء ﻣﮫﻤﺔ ﻣﺤﺪدة،
أو ﻣﻤﻜﻦ أن ﻳﻜﻮن ﻧﻈﺎم ﺟﺪﻳﺪ ﻳﻘﺪم ﺧﺪﻣﺔ ﺟﺪﻳﺪة ﻟﻢ ﻳﺴﺒﻖ ﺗﻘﺪﻳﻤﮫﺎ ﻣﻦ ﻗﺒﻞ .ﻓﻠﻜﻞ ﻧﻈﺎم ﺑﺮﻣﺠﻲ وﻇﯿﻔﺔ
ﻣﻌﯿﻨﺔ ،ﺗﺤﺪد ﺑﻤﺎ ﻳﻤﻜﻦ ﻟﻪ أن ﻳﻘﻮم ﺑﻪ ﻣﻦ أﺟﻞ أداء ﺗﻠﻚ اﻟﻮﻇﯿﻔﺔ.
اﻟﻤﺘﻄﻠﺒﺎت :ھﻲ ﺗﻌﺮﻳﻒ ﻟﺸﻜﻞ اﻟﻨﻈﺎم أو وﺻﻒ ﻟﻤﺎ ﻳﺴﺘﻄﯿﻊ ھﺬا اﻟﻨﻈﺎم أن ﻳﻘﻮم ﺑﻪ ﻷداء وﻇﯿﻔﺘﻪ اﻟﺘﻲ
ﺳﯿﺼﻤﻢ ﻣﻦ أﺟﻠﮫﺎ.
ﻃﺮح اﻷﺳﺌﻠﺔ ﻋﻠﻰ اﻟﻌﻤﯿﻞ ،وﻣﻦ اﻟﻤﻔﯿﺪ أﺣﯿﺎﻧﺎ أن ﻧﻄﺮح ﻧﻔﺲ اﻟﺴﺆال وﻟﻜﻦ ﺑﺄﺳﻠﻮب ﻣﺨﺘﻠﻒ أﻛﺜﺮ ﻣﻦ •
ﻣﺮة ﻓﮫﺬا ﻳﺴﺎﻋﺪﻧﺎ ﻋﻠﻰ اﻟﺘﺄﻛﺪ ﻣﻦ أﻧﻨﺎ ﻧﻔﮫﻢ ﻣﺎ ﻳﻘﺼﺪه اﻟﻌﻤﯿﻞ ﺑﺎﻟﺘﺤﺪﻳﺪ.
ﻋﺮض ﻧﻈﻢ ﻣﺸﺎﺑﻪ ﻟﻠﻨﻈﺎم اﻟﻤﻄﻠﻮب ﺳﺒﻖ ﺗﺼﻤﯿﻤﮫﺎ ﻣﻦ ﻗﺒﻞ. •
ﺗﺼﻤﯿﻢ وﻋﺮض ﻧﻤﺎذج ﻷﺟﺰاء ﻣﻦ اﻟﻨﻈﺎم اﻟﻤﻄﻠﻮب أو ﻟﻠﻨﻈﺎم ﺑﺎﻟﻜﺎﻣﻞ. •
ﺛﺎﻧﯿﺎ :ﺗﺴﺠﯿﻞ ھﺬه اﻟﻤﺘﻄﻠﺒﺎت ﻓﻲ وﺛﺎﺋﻖ أو ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ،وﻋﺮﺿﮫﺎ ﻋﻠﻰ اﻟﻌﻤﯿﻞ ﻟﯿﻮاﻓﻖ ﻋﻠﯿﮫﺎ ﺑﺎﻋﺘﺒﺎر أﻧﮫﺎ ﻣﺎ
ﻳﻄﻠﺒﻪ ﺑﺎﻟﻔﻌﻞ
اﻟﻤﺘﻄﻠﺒﺎت ﻻ ﺗﺼﻒ ﻓﻘﻂ ﺗﺪﻓﻖ اﻟﺒﯿﺎﻧﺎت واﻟﻤﻌﻠﻮﻣﺎت ﻣﻦ وإﻟﻰ اﻟﻨﻈﺎم ،وأﻣﺎ ﺗﺼﻒ ﻛﺬﻟﻚ اﻟﻘﯿﻮد اﻟﻤﻔﺮوﺿﺔ ﻋﻠﻰ
ﻋﻤﻞ اﻟﻨﻈﺎم .وﺑﺬﻟﻚ ﻓﺈن ﻋﻤﻠﯿﺔ ﺗﺤﺪﻳﺪ اﻟﻤﺘﻄﻠﺒﺎت ﺗﺨﺪم ﺛﻼﺛﺔ أﻏﺮاض:
15
أوﻻ ﺗﻤﻜﻦ اﻟﻤﻄﻮرﻳﻦ ﻣﻦ ﺷﺮح ﻓﮫﻤﮫﻢ ﻟﻠﻄﺮﻳﻘﺔ اﻟﺘﻲ ﻳﻮد اﻟﻤﺴﺘﺨﺪﻣﯿﻦ أن ﻳﻌﻤﻞ ﺑﮫﺎ اﻟﻨﻈﺎم. •
ﺛﺎﻧﯿﺎ ﺗﻮﺿﺢ ﻟﻠﻤﺼﻤﻤﯿﻦ ﻣﺎھﯿﺔ اﻟﻮﻇﺎﺋﻒ واﻟﺨﺼﺎﺋﺺ اﻟﺘﻲ ﺳﯿﻤﺘﺎز ﺑﮫﺎ اﻟﻨﻈﺎم , •
وﺛﺎﻟﺜﺎ :ﺗﻮﺿﺢ اﻟﻤﺘﻄﻠﺒﺎت ﻟﻔﺮﻳﻖ اﻻﺧﺘﺒﺎر ﻣﺎ اﻟﺬي ﻳﺠﺐ إﺛﺒﺎﺗﻪ ﻹﻗﻨﺎع اﻟﺰﺑﻮن أن اﻟﻨﻈﺎم اﻟﺬي ﺗﻢ ﺗﻄﻮﻳﺮه •
ھﻮ ﻣﺎ ﺳﺒﻖ أن ﻃﻠﺒﻪ ﺑﺎﻟﻀﺒﻂ .
ﻟﺬﻟﻚ وﻟﻀﻤﺎن أن ﻛﻼ ﻣﻦ اﻟﻤﻄﻮرﻳﻦ واﻟﺰﺑﻮن ﻣﺘﻔﺎھﻤﻮن ﺗﻤﺎﻣﺎ ﻋﻠﻰ ﻣﺎ ﻳﺠﺐ اﻟﻘﯿﺎم ﺑﻪ ،ﻓﺈن اﻟﻤﺘﻄﻠﺒﺎت اﻟﻤﺴﺠﻠﺔ
ﺣﺘﻰ ھﺬه اﻟﺨﻄﻮة ﻳﺠﺐ أن ﺗﻜﻮن ﻟﮫﺎ اﻟﺼﻔﺎت اﻟﺘﺎﻟﯿﺔ:
1.أن ﺗﻜﻮن ﺻﺤﯿﺤﺔ Correctوﺧﺎﻟﯿﺔ ﻣﻦ اﻷﺧﻄﺎء.
2.أن ﺗﻜﻮن ﺛﺎﺑﺘﺔ consistentﺑﻤﻌﻨﻰ أن ﻻ ﻳﻜﻮن ھﻨﺎك أي ﺗﻌﺎرض ﺑﯿﻦ ﻣﺘﻄﻠﺐ وآﺧﺮ.
3.أن ﺗﻜﻮن ﺗﺎﻣﺔ Completeﻳﺠﺐ أن ﻳﺘﻢ ذﻛﺮ ﺟﻤﯿﻊ اﻟﺤﺎﻻت اﻟﻤﺤﺘﻤﻠﺔ ﻟﻠﻨﻈﺎم ،اﻟﻤﺪﺧﻼت ،اﻟﻤﺨﺮﺟﺎت اﻟﻤﺘﻮﻗﻌﺔ
ﻣﻨﻪ... ،اﻟﺦ .
4.أن ﺗﻜﻮن واﻗﻌﯿﺔ realisticﺑﻤﻌﻨﻰ أن ﺗﻜﻮن ﻗﺎﺑﻠﺔ ﻟﻠﺘﻄﺒﯿﻖ ﻓﻲ اﻟﻮاﻗﻊ.
5.أن ﺗﻜﻮن ﻣﺘﻌﻠﻘﺔ ﺑﺄﻣﻮر ﺿﺮورة ﻟﻠﻌﻤﯿﻞ ،وﻳﺘﻄﻠﺒﮫﺎ اﻟﻨﻈﺎم.
6.أن ﻳﻜﻮن ﻣﻦ اﻟﻤﻤﻜﻦ اﻟﺘﺤﻘﻖ ﻣﻨﮫﺎverifiable
7.أن ﺗﻜﻮن ﻗﺎﺑﻠﺔ ﻟﻠﺘﺘﺒﻊtraceable
ﻳﻄﻠﻖ ﻋﻠﻰ ھﺬه اﻟﻮﺛﺎﺋﻖ "وﺛﺎﺋﻖ ﺗﻌﺮﻳﻒ اﻟﻤﺘﻄﻠﺒﺎت " Requirement Definition Document
ﺛﺎﻟﺜﺎ :إﻋﺎدة ﺗﺴﺠﯿﻞ اﻟﻤﺘﻄﻠﺒﺎت ﺑﺸﻜﻞ رﻳﺎﺿﻲ mathematicalﻟﯿﻘﻮم اﻟﻤﺼﻤﻤﻮن ﺑﺘﺤﻮﻳﻞ ﺗﻠﻚ اﻟﻤﺘﻄﻠﺒﺎت إﻟﻰ
ﺗﺼﻤﯿﻢ ﺟﯿﺪ ﻟﻠﻨﻈﺎم ﻓﻲ ﻣﺮﺣﻠﺔ اﻟﺘﺼﻤﯿﻢ.
ﻟﺴﻨﻮات ﻋﺪﻳﺪة ﻛﺎن ﻳﺘﻢ اﻻﻛﺘﻔﺎء ﺑﻮﺛﯿﻘﺔ ﺗﻌﺮﻳﻒ اﻟﻤﺘﻄﻠﺒﺎت )اﻟﺘﻲ ﺗﺤﺪﺛﻨﺎ ﻋﻨﮫﺎ ﻗﺒﻞ ﻗﻠﯿﻞ( واﻟﺘﻲ ﺗﻜﺘﺐ
ﺑﺎﺳﺘﻌﻤﺎل اﻟﻠﻐﺔ اﻟﻄﺒﯿﻌﯿﺔ( ﻟﻐﺔ اﻟﺒﺸﺮ( ﻟﻮﺻﻒ وﺗﺴﺠﯿﻞ ﻣﺘﻄﻠﺒﺎت اﻟﻨﻈﻢ ﺑﺤﯿﺚ ﻳﻤﻜﻦ ﻟﻠﻌﻤﯿﻞ أن ﻳﻔﮫﻢ ﻛﻞ
ﻛﻠﻤﺔ ﻣﻮﺟﻮدة ﺑﮫﺎ ،إﻻ أن ذﻟﻚ ﻳﺴﺒﺐ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﺸﺎﻛﻞ واﻟﺘﻲ ﻳﻌﻮد ﺳﺒﺒﮫﺎ ﻓﻲ أﻏﻠﺐ اﻷﺣﯿﺎن إﻟﻰ ﺳﻮء
ﺗﻔﺴﯿﺮ ﺑﻌﺾ اﻟﺘﻌﺒﯿﺮات ﻟﻠﻤﺴﺘﺨﺪﻣﯿﻦ ﻣﻦ ﻗﺒﻞ اﻟﻤﺼﻤﻢ أو اﻟﻌﻜﺲ ،ﻓﻌﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل ﻗﺪ ﻳﻄﻠﻖ اﻟﻤﺴﺘﺨﺪم
ﻋﻠﻰ اﻟﻨﻈﺎم اﻟﺘﻌﺒﯿﺮ )ﻣﺘﻮﻗﻒ ﻋﻦ اﻟﻌﻤﻞ( إذا ﻛﺎن اﻟﻨﻈﺎم ﻣﺸﻐﻮل ﺑﻌﻤﻠﯿﺔ ﺗﺴﺠﯿﻞ اﺣﺘﯿﺎﻃﻲ backupﺑﺎﻋﺘﺒﺎر أن
ﻻ ﻳﺴﺘﺠﯿﺐ ﻷواﻣﺮ اﻟﻤﺴﺘﺨﺪم ﻓﻲ ھﺬه اﻟﺤﺎﻟﺔ ،ﺑﯿﻨﻤﺎ ﻳﻌﺘﺒﺮ اﻟﻤﺼﻤﻢ أن اﻟﻨﻈﺎم ﻓﻲ ھﺬه اﻟﺤﺎﻟﺔ )ﻣﺴﺘﻤﺮ ﻓﻲ
اﻟﻌﻤﻞ( ﻷﻧﻪ ﻳﻘﻮم ﺑﻤﮫﻤﺔ أﺳﺎﺳﯿﺔ!
ﻟﺬا ﻓﺄن اﻻﻋﺘﻤﺎد ﻋﻠﻰ اﻟﻠﻐﺔ اﻟﺒﺸﺮﻳﺔ ﺑﺸﻜﻞ ﺗﺎم ﻗﺪ ﻳﺆدي إﻟﻰ أﺧﻄﺎء ﻛﺜﯿﺮة ﻋﻨﺪ ﺗﺼﻤﯿﻢ اﻟﻨﻈﺎم ،وﻳﻨﺘﺞ ﻋﻨﮫﺎ
ﻧﻈﺎم ﻻ ﻳﻘﺒﻠﻪ اﻟﻌﻤﯿﻞ ﻷﻧﻪ ﻻ ﻳﻠﺒﻲ ﻣﺘﻄﻠﺒﺎﺗﻪ اﻟﺘﻲ ﺣﺪدھﺎ ﻣﻦ ﻗﺒﻞ ،ﻟﺬﻟﻚ ﻳﺘﻢ ﻛﺘﺎﺑﺔ ﻧﻮع ﺛﺎﻧﻲ ﻣﻦ اﻟﻮﺛﺎﺋﻖ
ﺗﺴﻤﻰ "وﺛﺎﺋﻖ ﻣﻮاﺻﻔﺎت اﻟﻤﺘﻄﻠﺒﺎت " Requirement specification Documentوھﻲ ﺗﻜﺘﺐ ﺑﺎﺳﺘﻌﻤﺎل وﺳﺎﺋﻞ
وﻃﺮق ﺧﺎﺻﺔ اﺑﺘﻜﺮھﺎ ﻣﮫﻨﺪﺳﻮ اﻟﺒﺮﻣﺠﯿﺎت ﻟﻜﺘﺎﺑﺔ اﻟﻤﺘﻄﻠﺒﺎت ﺑﺎﺳﻠﻮب ﺗﻘﻨﻲ ﺑﺤﺖ .ﻣﻨﮫﺎ ﻋﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل :ﻟﻐﺔ
اﻟﻨﻤﺬﺟﺔ اﻟﻤﻮﺣﺪة UML Unified Modeling Languageو ھﻲ ﻟﻐﺔ ﻧﻤﺬﺟﺔ رﺳﻮﻣﯿﺔ ﺗﻘﺪم ﻟﻨﺎ ﺻﯿﻐﺔ ﻟﻮﺻﻒ
اﻟﻌﻨﺎﺻﺮ اﻟﺮﺋﯿﺴﯿﺔ ﻟﻠﻨﻈﻢ اﻟﺒﺮﻣﺠﯿﺔ.
اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﻳﻌﺮض ﻣﺜﺎل ﻋﻠﻰ اﺳﺘﻌﻤﺎلUML
16
راﺑﻌﺎ :اﻟﺘﺜﺒﺖ واﻟﺘﺤﻘﻖ ﻣﻦ اﻟﻤﺘﻄﻠﺒﺎت اﻟﺘﻲ ﺗﻢ ﺗﺴﺠﻠﯿﮫﺎ ﻓﻲ ﻛﻼ ﻣﻦ وﺛﯿﻘﺔ ﺗﻌﺮﻳﻒ اﻟﻤﺘﻄﻠﺒﺎت )واﻟﺘﻲ ﺗﻘﺪم
ﻟﻠﻌﻤﯿﻞ( ووﺛﯿﻘﺔ ﻣﻮاﺻﻔﺎت اﻟﻤﺘﻄﻠﺒﺎت )واﻟﺘﻲ ﺗﻘﺪم ﻟﻠﻤﺼﻤﻢ )ﻟﻠﺘﺄﻛﺪ ﻣﻦ ﺻﺤﺘﮫﻤﺎ وﺷﻤﻮﻟﯿﺘﮫﻤﺎ وأن ﻛﻼ ﻣﻨﮫﻤﺎ ﻻ
ﺗﻌﺎرض اﻟﺜﺎﻧﯿﺔ ﻓﻲ أي ﻧﻘﻄﺔ ،وإﻻ ﻓﺈن اﻟﻨﺘﯿﺠﺔ ﺳﻮف ﺗﻜﻮن ﻧﻈﺎم ﻻ ﻳﻠﺒﻲ ﻃﻠﺒﺎت اﻟﻌﻤﯿﻞ!.
17
( •·•·.·´¯`·.ﻧﻘﺎش اﻟﺪرس اﻟﺜﺎﻟﺚ•·) •·.·´¯`·.
_________________أﻗﺘﺒﺎس__________________
ﻧﻌﻢ ﻳﺠﺐ ﻣﻨﺎﻗﺸﺔ ﻛﻞ ﻧﻘﻄﺔ ﻣﻊ اﻟﻌﻤﯿﻞ ﻟﻠﺘﺄﻛﺪ ﻣﻦ اﻧﻨﺎ ﻓﮫﻤﻨﺎ ﻣﺎ ﻳﻘﺼﺪه ﺗﻤﺎﻣﺎ.
ﻳﻘﺼﺪ ﺑﮫﺎ ﻛﻞ ﻣﺎ ﻳﺤﯿﻂ ﺑﺎﻟﻨﻈﺎم وﻟﯿﺲ ﻣﻦ ﻣﻜﻮﻧﺎﺗﻪ ﻣﺜﻼ اﻟﻤﻮﻗﻊ اﻟﺬي ﺳﯿﻌﻤﻞ ﺑﻪ اﻟﻨﻈﺎم ،ھﻞ ھﻮ ﺛﺎﺑﺖ ﻓﻲ
ﻣﻮﻗﻊ واﺣﺪ أﻛﺜﺮ أو ﻳﻤﻜﻦ أن ﻳﺘﻢ ﻧﻘﻠﻪ إﻟﻰ ﻣﻮاﻗﻊ ﻣﺨﺘﻠﻔﺔ )ﻃﺒﻌﺎ اﻟﺤﺪﻳﺚ ﻳﺸﻤﻞ اﻟﻨﻈﺎم ﻛﺎﻣﻞ Hardware +
)software
ﺑﻤﻌﻨﻰ أن ﺗﻜﺘﺐ اﻟﻤﺘﻄﻠﺒﺎت ﺑﺤﯿﺚ ﺗﻜﻮن ﻗﺎﺑﻠﺔ ﻟﻼﺧﺘﺒﺎر ﻟﻠﺘﺄﻛﺪ ﻣﻦ ﺗﺤﻘﻘﺖ ،ﻓﻤﺜﻼ ﻗﺪ ﻳﺬﻛﺮ اﻟﻌﻤﯿﻞ أن ﻳﺮﻳﺪ ﻣﻦ
اﻟﻨﻈﺎم أن ﻳﻜﻮن ذا اﺳﺘﺠﺎﺑﺔ ﺳﺮﻳﻌﺔ!
ﻣﺎ ﻣﻘﺪار اﻟﺴﺮﻋﺔ اﻟﻤﻄﻠﻮب؟
ﻗﺪ ﻳﺮى اﻟﻤﺼﻤﻢ أن اﻻﻧﺘﻈﺎر ﻟﻤﺪة 50ﺛﺎﻧﯿﺔ ﻣﻨﺎﺳﺐ ﻛﺤﺪ أﻗﺼﻰ ،ﺑﯿﻨﻤﺎ ﻳﺘﻮﻗﻊ اﻟﺰﺑﻮن زﻣﻦ اﻧﺘﻈﺎر 20ﺛﺎﻧﯿﺔ ﻛﺤﺪ
أﻗﺼﻰ!
ﺑﻤﻌﻨﻰ أن ﺗﻜﻮن اﻟﻤﺘﻄﻠﺒﺎت ﻣﻜﺘﻮﺑﺔ ﺑﺤﯿﺚ ﻳﺴﮫﻞ ﺗﺘﺒﻌﮫﺎ ﻟﻠﺘﺄﻛﺪ ﻣﻦ أن ﻛﻞ وﻇﯿﻔﺔ ﻣﻄﻠﻮﺑﺔ ﻣﻦ اﻟﻨﻈﺎم ﺗﻢ
اﺳﺘﯿﻔﺎﺋﮫﺎ ﻣﻦ ﺧﻼل اﻟﻤﺘﻄﻠﺒﺎت.
18
اﻟﺪرس اﻟﺮاﺑﻊ :ﺗﺼﻤﯿﻢ اﻟﻨﻈﺎم
ﻧﻜﻤﻞ ﻣﻊ ﺧﻄﻮات ﺑﻨﺎء اﻟﻨﻈﺎم ،وھﺬه اﻟﻤﺮة ﺳﻮف ﻧﺘﺤﺪث ﻋﻦ ﺧﻄﻮة "ﺗﺼﻤﯿﻢ اﻟﻨﻈﺎم "
ﻣﺎ ھﻮ اﻟﺘﺼﻤﯿﻢ؟
اﻟﺘﺼﻤﯿﻢ ھﻮ ﻋﻤﻠﯿﺔ إﺑﺪاﻋﯿﺔ ﻹﻳﺠﺎد ﺣﻞ ﻟﻤﺸﻜﻠﺔ ،ﻛﻤﺎ ﺗﻄﻠﻖ ﻋﺎدة ﻛﻠﻤﺔ ﺗﺼﻤﯿﻢ ﻋﻠﻰ وﺻﻒ ھﺬا اﻟﺤﻞ.
ﺣﯿﺚ ﻧﺴﺘﻔﯿﺪ ﻣﻦ اﻟﻤﺘﻄﻠﺒﺎت اﻟﺘﻲ ﺣﺪدﻧﮫﺎ ﻓﻲ اﻟﺨﻄﻮة اﻟﺴﺎﺑﻘﺔ ﻓﻲ اﻟﺘﻌﺮف ﻋﻠﻰ اﻟﻤﺸﻜﻠﺔ ،ﺛﻢ ﻧﺒﺪأ ﻓﻲ
اﻟﺘﻔﻜﯿﺮ ﻓﻲ اﻟﺤﻞ اﻟﺬي ﻳﻔﻲ ﺑﺠﻤﯿﻊ اﻟﺸﺮوط واﻟﻤﻮاﺻﻔﺎت اﻟﺘﻲ ﺗﺤﺪدھﺎ اﻟﻤﺘﻄﻠﺒﺎت ،وﻏﺎﻟﺒﺎ ﻣﺎ ﻳﻤﻜﻦ إﻳﺠﺎد ﻋﺪد
ﻏﯿﺮ ﻣﺤﺪود ﻣﻦ اﻟﺤﻠﻮل ﻳﻤﻜﻦ ﻟﻨﺎ أن ﻧﺨﺘﺎر أﺣﺪھﺎ و اﻟﺬي ﻧﺠﺪه اﻷﻧﺴﺐ ﻣﻦ ﺑﯿﻨﮫﺎ.
ﻋﻨﺪ اﻻﻧﺘﮫﺎء ﻣﻦ ﺧﻄﻮة ﺗﺤﺪﻳﺪ اﻟﻤﺘﻄﻠﺒﺎت ،ﻓﺈﻧﻨﺎ ﻧﻨﺘﮫﻲ ﺑﻮﺛﯿﻘﺘﯿﻦ )ﻛﻤﺎ ذﻛﺮﻧﺎ ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ( اﻷوﻟﻰ ھﻲ
)وﺛﯿﻘﺔ ﺗﻌﺮﻳﻒ اﻟﻤﺘﻄﻠﺒﺎت( وﻳﺘﻢ ﺗﻘﺪﻳﻤﮫﺎ ﻟﻠﻌﻤﯿﻞ واﻟﺜﺎﻧﯿﺔ )وﺛﯿﻘﺔ ﻣﻮاﺻﻔﺎت اﻟﻤﺘﻄﻠﺒﺎت( وﻳﺘﻢ ﺗﻘﺪﻳﻤﮫﺎ ﻟﻠﻤﺼﻤﻢ.
ودور اﻟﻤﺼﻤﻢ ھﻮ ﺗﺤﻮﻳﻞ ھﺬه اﻟﻮﺛﺎﺋﻖ إﻟﻰ ﻧﻈﺎم ﻳﺮﺿﻲ اﻟﻌﻤﯿﻞ )ﻳﻠﺒﻲ اﺣﺘﯿﺎﺟﺎﺗﻪ( ،وﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ ﻳﺮﺿﻲ
اﻟﻤﻄﻮر )ﻳﻤﻜﻦ ﺗﻄﺒﯿﻘﻪ).
ﻟﺬا ﻓﺈن ﻋﻤﻠﯿﺔ اﻟﺘﺼﻤﯿﻢ ﻓﻲ ﻋﻤﻠﯿﺔ ﺗﻜﺮارﻳﺔ iterativeﻣﻦ ﺧﻄﻮاﺗﯿﻦ:
أوﻻ :ﻳﺘﻢ إﻧﺘﺎج اﻟﺘﺼﻤﯿﻢ اﻟﺘﺼﻮري conceptual designواﻟﺬي ﻳﻮﺿﺢ ﻟﻠﻌﻤﯿﻞ ﻣﺎ اﻟﺬي ﺳﯿﻘﻮم ﺑﻪ اﻟﻨﻈﺎم
ﺑﺎﻟﺘﺤﺪﻳﺪ .
وﻓﻲ ﺣﺎل ﻣﻮاﻓﻘﺔ اﻟﻌﻤﯿﻞ ﻋﻠﻰ ھﺬا اﻟﻨﻈﺎم ،ﻳﺘﻢ اﻻﻧﺘﻘﺎل ﻟﻠﺨﻄﻮة اﻟﺘﺎﻟﯿﺔ.
ﺛﺎﻧﯿﺎ :ﺗﺤﻮﻳﻞ اﻟﺘﺼﻤﯿﻢ اﻟﺘﺼﻮري إﻟﻰ وﺛﯿﻘﺔ ﺑﮫﺎ ﺗﻔﺎﺻﯿﻞ أﻛﺜﺮ ﻋﻦ اﻟﺘﺼﻤﯿﻢ ﻳﻄﻠﻖ ﻋﻠﯿﮫﺎ اﺳﻢ اﻟﺘﺼﻤﯿﻢ اﻟﺘﻘﻨﻲ
technical designواﻟﺬي ﻳﺠﺐ أن ﻳﻈﮫﺮ ﻟﻠﻤﻄﻮر ﻣﺎ ھﻲ اﻟﻤﻌﺪات واﻟﺒﺮﻣﺠﯿﺎت اﻟﻼزﻣﺔ ﻟﺒﻨﺎء اﻟﻨﻈﺎم.
أﺣﯿﺎﻧﺎ ﻳﺘﻄﻠﺐ اﻷﻣﺮ ﻟﻠﻌﻮدة إﻟﻰ اﻟﺨﻄﻮة اﻷوﻟﻰ( اﻟﺘﺼﻤﯿﻢ اﻟﺘﺼﻮري( واﻟﺘﻌﺪﻳﻞ ﻋﻠﯿﻪ ،ﻟﺬا ﻓﺄﻧﮫﺎ ﻋﻤﻠﯿﺔ ﺗﻜﺮارﻳﺔ
ﺣﺘﻰ اﻟﻮﺻﻮل إﻟﻰ اﻟﺘﺼﻤﯿﻢ اﻟﺬي ﻳﺮﺿﻲ اﻟﻌﻤﯿﻞ وﻳﻤﻜﻦ ﺗﻄﺒﯿﻘﻪ ﻋﻠﻰ أرض اﻟﻮاﻗﻊ ﻓﻲ ﻇﻞ اﻹﻣﻜﺎﻧﯿﺎت اﻟﻤﺘﺎﺣﺔ
ﻟﻠﻤﻄﻮرﻳﻦ.
19
اﻟﺘﺼﻤﯿﻢ اﻟﺘﺼﻮريconceptual design:
ﻳﺮﻛﺰ ھﺬا اﻟﺘﺼﻤﯿﻢ ﻋﻠﻰ وﻇﺎﺋﻒ اﻟﻨﻈﺎم functionsوﻳﻜﺘﺐ ﺑﻠﻐﺔ ﻳﻤﻜﻦ ﻟﻠﻌﻤﯿﻞ أن ﻳﻔﮫﻤﮫﺎ )ﻟﻐﺔ اﻟﺒﺸﺮ( ﻟﯿﺠﯿﺐ
ﻋﻦ أﺳﺌﻠﺔ اﻟﻌﻤﯿﻞ ﺣﻮل ﻣﺎذا ) (WHATﻳﻌﻤﻞ اﻟﻨﻈﺎم .وﻳﺠﺐ أن ﻳﻜﻮن ﺧﺎﻟﻲ ﺗﻤﺎﻣﺎ ﻣﻦ أي ﺗ ﻔﺎﺻﯿﻞ ﺑﺮﻣﺠﯿﺔ أو
ﻓﻨﯿﺔ .واﻻھﻢ أن ﻳﺤﻘﻖ ﻛﻞ اﻟﻤﺘﻄﻠﺒﺎت اﻟﺘﻲ ﺗﻢ ﺗﺤﺪﻳﺪھﺎ ﺳﺎﺑﻘﺎ.
20
اﻟﺪرس اﻟﺨﺎﻣﺲ :ﻛﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ واﺧﺘﺒﺎره
أھﺪاف اﻟﺪرس:
ھﺬا اﻟﺪرس ﻟﻦ ﻳﻌﻠﻤﻚ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻟﺘﻜﺘﺐ ﺑﮫﺎ اﻟﺒﺮاﻣﺞ ،وﻟﻜﻦ اﻟﮫﺪف ﻣﻨﻪ اﻟﺘﻌﺮف ﻋﻠﻰ:
ﺑﻌﺪ وﺿﻊ اﻟﺘﺼﻤﯿﻢ ﻟﻠﻨﻈﺎم واﺧﺘﯿﺎر ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ اﻟﻤﻨﺎﺳﺒﺔ ،ﺗﺒﺪأ اﻟﺨﻄﻮة اﻟﺘﻲ ﺳﻮف ﺗﻨﻘﻞ اﻟﺘﺼﻤﯿﻢ اﻟﻤﻜﺘﻮب
ﻋﻠﻰ اﻟﻮرق إﻟﻰ واﻗﻊ .ﺧﻼل ھﺬا اﻟﺪرس ﺳﻮف ﻧﻨﺎﻗﺶ أھﻢ اﻟﻘﻮاﻋﺪ اﻟﺘﻲ ﻋﻠﻰ اﻟﻤﺒﺮﻣﺞ إﺗﺒﺎﻋﮫﺎ أﺛﻨﺎء ﻛﺘﺎﺑﺔ
ﺑﺮاﻣﺠﻪ .وﻟﻜﻦ ﻗﺒﻞ ذﻟﻚ ﻟﻨﺠﯿﺐ ﻋﻠﻰ ھﺬا اﻟﺴﺆال اﻟﺬي ﻻ ﺷﻚ أﻧﻪ ورد ﻋﻠﻰ ذھﻨﻚ اﻵن
ج :إذا ﻛﻨﺖ ﺗﻌﻤﻞ ﻣﻨﻔﺮدا ﻓﻲ ﻛﺘﺎﺑﺔ ﺑﺮاﻣﺠﻚ ،ﻓﺈن إﺗﺒﺎﻋﻚ ﻟﻘﻮاﻋﺪ وأﺳﺎﻟﯿﺐ ﻗﯿﺎﺳﯿﺔ ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺳﻮف ﺗﺴﺎﻋﺪك
ﻋﻠﻰ ﺗﻨﻈﯿﻢ أﻓﻜﺎرك ﻟﺘﺠﻨﺐ اﻟﻮﻗﻮع ﻓﻲ اﻷﺧﻄﺎء .ﻛﻤﺎ أﻧﮫﺎ ﺳﺘﺴﺎﻋﺪك ﻋﻠﻰ اﻛﺘﺸﺎف أي أﺧﻄﺎء ﻗﺪ ﺗﺤﺪث
ﺑﺴﺮﻋﺔ وﺑﺴﮫﻮﻟﺔ.
أم إذا ﻛﻨﺖ ﺗﻌﻤﻞ ﺿﻤﻦ ﻓﺮﻳﻖ ﺑﺮﻣﺠﻲ ،ﻓﺈن إﺗﺒﺎع اﻟﻘﻮاﻋﺪ واﻷﺳﺎﻟﯿﺐ اﻟﻘﯿﺎﺳﯿﺔ ﻓﻲ ﻛﺘﺎﺑﺔ أﺟﺰاء اﻟﺒﺮاﻣﺞ اﻟﺘﻲ
ﻳﻄﻠﺐ ﻣﻨﻚ ﻛﺘﺎﺑﺘﮫﺎ ،ﺳﻮف ﺗﺴﺎﻋﺪك وﺑﻘﯿﺔ اﻟﻔﺮﻳﻖ ﻣﻦ ﺗﻨﺴﯿﻖ أﻋﻤﺎﻟﻜﻢ وﺗﻨﻈﯿﻤﮫﺎ ،ﻛﻤﺎ أﻧﮫﺎ ﺳﺘﻘﻠﻞ ﻣﻦ ﻋﺪد
اﻷﺧﻄﺎء ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ وﺗﺴﺎﻋﺪ ﻋﻠﻰ اﻛﺘﺸﺎف ﻣﺎ ﻳﻘﻊ ﻣﻨﮫﺎ ﻓﻲ اﺳﺮع وﻗﺖ ﻣﻤﻜﻦ.
ﺗﻔﺮض اﻟﻜﺜﯿﺮ ﻣﻦ ﺷﺮﻛﺎت اﻟﺒﺮﻣﺠﺔ ﻋﻠﻰ ﻣﺒﺮﻣﺠﯿﮫﺎ إﺗﺒﺎع ﻗﻮاﻋﺪ ﻗﯿﺎﺳﯿﺔ ﻓﻲ ﻛﺘﺎﺑﺔ ﺑﺮاﻣﺠﮫﻢ ،وذﻟﻚ ﻟﻀﻤﺎن
اﻟﺘﻜﺎﻣﻞ ﻓﻲ ﺟﻤﯿﻊ اﻟﺒﺮاﻣﺞ ،ﻛﻤﺎ أن ﺑﻌﺾ اﻟﺸﺮﻛﺎت ﺗﻌﯿﻦ ﻓﺮق ﻻﺧﺘﺒﺎر اﻟﺒﺮاﻣﺞ ،ﻏﯿﺮ اﻟﻔﺮﻳﻖ اﻟﺬي ﻗﺎم ﺑﺎﻟﺒﺮﻣﺠﺔ
وﻟﺬﻟﻚ ﻳﺠﺐ أن ﻳﻜﻮن اﻟﻜﻮد اﻟﺒﺮﻣﺠﻲ ﻣﻜﺘﻮب ﺑﻄﺮﻳﻘﺔ واﺿﺤﺔ ﻟﺠﻤﯿﻊ ﻣﻦ ﻳﻘﺮأه ،وﻟﯿﺲ ﻟﻤﻦ ﻗﺎم ﺑﻜﺘﺎﺑﺘﻪ ﻓﻘﻂ.
ﻳﻘﺼﺪ ﺑﮫﺎ ﺗﻠﻚ اﻟﮫﯿﺎﻛﻞ اﻟﺘﻲ ﺗﺘﺤﻜﻢ ﻓﻲ ﻣﺴﺎر ﻋﻤﻞ اﻟﺒﺮﻧﺎﻣﺞ )ﻣﺜﻞ ، if- else)، Gotoوأﺛﻨﺎء ﻛﺘﺎﺑﺔ ھﺬه اﻟﮫﯿﺎﻛﻞ
ﻋﻠﻨﺎ أن ﻧﺤﺎول أن ﻧﺠﻌﻠﮫﺎ واﺿﺤﺔ وﺳﮫﻠﺔ اﻟﺘﺘﺒﻊ ،وﺧﺎﻟﯿﺔ ﻣﻦ اﻟﻘﻔﺰات اﻟﻮاﺳﻌﺔ ﻗﺪر اﻹﻣﻜﺎن .اﻧﻈﺮ ﻟﮫﺬا اﻟﻤﺜﺎل:
;benefit = minimum
;if (age < 75) goto A
;benefit = maximum
;goto C
;if (age < 65) goto B
;if (age < 55) goto C
;A: if (age < 65) goto B
21
;benefit = benefit * 1.5 + bonus
;goto C
;B: if (age < 55) goto C
;benefit = benefit * 1.5
C: next statement
ﻋﺎﻟﻢ اﻟﺒﺮﻣﺠﺔ ھﻨﺎك ﻗﺎﻋﺪة ﺗﻘﻮل أن اﻟﻌﻤﻮﻣﯿﺔ ﻣﯿﺰة ، generality is a virtueﻟﺬﻟﻚ ﺣﺎول داﺋﻤﺎ أن •
ﺗﺠﻌﻞ ﺷﻔﺮاﺗﻚ اﻟﺒﺮﻣﺠﺔ ﻋﺎﻣﺔ ،ﻟﺘﺘﻤﻜﻦ ﻣﻦ إﻋﺎدة اﺳﺘﻌﻤﺎﻟﮫﺎ ﻓﻲ ﺑﻘﯿﺔ ﺑﺮاﻣﺠﻚ ﺑﺄﻗﻞ ﻗﺪر ﻣﻤﻜﻦ ﻣﻦ
اﻟﺘﻌﺪﻳﻞ ،وﻟﻜﻦ ﺣﺎذر ﻣﻦ اﻟﺘﻤﺎدي ﻓﻲ ذﻟﻚ!
ﻻ ﺗﺴﺘﺨﺪم أﺑﺪا أﺳﻤﺎء ﻻ ﻣﻌﻨﻰ ﻟﮫﺎ ﻟﻤﺘﻐﯿﺮات أو ﺑﺎرﻣﺘﺮات ﺑﺮﻧﺎﻣﺠﻚ ) ﻳﻨﺼﺢ ﺑﻤﺮاﺟﻌﺔ ھﺬا اﻟﺪرس •
"اﻟﺘﺴﻤﯿﺔ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ ،درس ﻻﺑﺪ ﻣﻦ أن ﻳﻘﺮأه ﻛﻞ ﻣﺒﺮﻣﺞ! )"
"أرﻳﺪ ﺑﺮﻧﺎﻣﺠﺎ ﺳﺮﻳﻌﺎ" وﻛﻠﻨﺎ ﻧﺮﻳﺪ ذﻟﻚ ،وﻟﻜﻦ ﻣﺎ ھﻮ اﻟﺜﻤﻦ؟! •
ﻋﻨﺪﻣﺎ ﺗﻔﻜﺮ ﻓﻲ ﺟﻌﻞ ﺑﺮﻧﺎﻣﺠﻚ أﺳﺮع ﻣﺎ ﻳﻤﻜﻦ ،ﻋﻠﯿﻚ أن ﺗﻔﻜﺮ ﻛﺬﻟﻚ ﻓﻲ اﻟﺜﻤﻦ اﻟﺬي ﺳﺘﺪﻓﻌﻪ ﻣﻘﺎﺑﻞ ذﻟﻚ:
.1اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺮﻳﻊ ﻗﺪ ﻳﺘﻄﻠﺐ ﻣﻨﻚ ﻛﺘﺎﺑﺔ ﻛﻮد ﻣﻌﻘﺪ ﻳﺘﻄﻠﺐ ﻣﻨﻚ )وﻣﻦ ﻓﺮﻳﻖ اﻟﻌﻤﻞ( اﻟﻤﺰﻳﺪ ﻣﻦ
اﻟﻮﻗﺖ واﻟﺠﮫﺪ ﻓﻲ ﻛﺘﺎﺑﺘﻪ.
.2اﻟﻮﻗﺖ اﻟﺬي ﺗﺤﺘﺎﺟﻪ ﻋﻤﻠﯿﺔ اﺧﺘﺒﺎر اﻟﺒﺮﻧﺎﻣﺞ اﻟﻤﻌﻘﺪ ﻓﻲ ﻣﺨﺘﻠﻒ ﺣﺎﻟﺘﻪ.
.3اﻟﻮﻗﺖ واﻟﺠﮫﺪ اﻟﺬي ﺗﺤﺘﺎﺟﻪ ﻟﺘﻌﺪﻳﻞ ھﺬا اﻟﻜﻮد أو ﻟﺘﻄﻮﻳﺮه.
زﻣﻦ ﺗﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻣﺎ ھﻮ إﻻ ﺟﺰء ﻣﻦ ﻣﻌﺎدﻟﺔ ﻛﺒﯿﺮة ﻟﺤﺴﺎب ﺗﻜﻠﻔﺔ اﻟﺒﺮﻧﺎﻣﺞ ،ﻟﺬﻟﻚ ﻋﻠﯿﻚ أن ﺗﻌﺎدل ﺑﯿﻦ
اﻟﺴﺮﻋﺔ ،واﻟﺠﻮدة ،واﺣﺘﯿﺎﺟﺎت اﻟﺰﺑﻮن .وﻻ ﺗﻀﺤﻲ ﺑﺎﻟﺒﺴﺎﻃﺔ واﻟﻮﺿﻮح ﻣﻦ أﺟﻞ اﻟﺴﺮﻋﺔ.
اﻟﺘﻮﺛﯿﻖ :ﻻ ﺗﮫﻤﻞ أﺑﺪا ﺗﻮﺛﯿﻖ ﺑﺮﻧﺎﻣﺠﻚ ،ﻣﺎ ﺳُﻤﻲ اﻹﻧﺴﺎن إﻧﺴﺎﻧﺎ إﻻ ﻟﻨﺴﯿﺎﻧﻪ. •
22
اﻟﺪرس اﻟﺨﺎﻣﺲ :ﻛﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ واﺧﺘﺒﺎره
وﺻﻠﻨﺎ اﻵن إﻟﻰ آﺧﺮ ﻣﺮﺣﻠﺔ ﻓﻲ ﺗﻄﻮﻳﺮ اﻟﻨﻈﺎم ،وھﻲ اﺧﺘﺒﺎر اﻟﺒﺮﻧﺎﻣﺞ ﻟﻠﺘﺄﻛﺪ ﻣﻦ أﻧﻪ ﻳﻌﻤﻞ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺬي
ﻳﺘﻮﻗﻌﻪ اﻟﺰﺑﻮن.
ﻗﺒﻞ ﺗﺴﻠﯿﻢ اﻟﻨﻈﺎم اﻟﻨﮫﺎﺋﻲ إﻟﻰ اﻟﺰﺑﻮن ﺗﺠﺮى ﻋﻠﯿﻪ اﻟﻜﺜﯿﺮ ﻣﻦ اﻻﺧﺘﺒﺎرات ،ﺑﻌﻀﮫﺎ ﻳﻌﺘﻤﺪ ﻋﻠﻰ ﻣﺎ اﻟﺬي ﻳﺘﻢ
اﺧﺘﺒﺎره ﻣﺜﻼ:
واﻟﺒﻌﺾ اﻷﺧﺮ ﻳﻌﺘﻤﺪ ﻋﻠﻰ ﻣﺎ اﻟﺬي ﻧﺮﻳﺪ ﻣﻌﺮﻓﺘﻪ ﻣﻦ ھﺬه اﻻﺧﺘﺒﺎرات ،ﻣﺜﻼ:
ﻣﺮاﺣﻞ اﻻﺧﺘﺒﺎر:
ﻋﻨﺪ اﻟﻌﻤﻞ ﻋﻠﻰ اﺧﺘﺒﺎر ﻧﻈﺎم ﻣﻦ اﻟﺤﺠﻢ اﻟﻜﺒﯿﺮ ،ﻓﺈن ﻋﻤﻠﯿﺔ اﻻﺧﺘﺒﺎر ﺗﺘﻢ ﻋﻠﻰ ﻋﺪة ﻣﺮاﺣﻞ ﻣﻮﺟﺰھﺎ ﻓﻲ ﻣﺎ
ﻳﻠﻲ:
أول ﻣﺮاﺣﻞ اﺧﺘﺒﺎر اﻟﻨﻈﻢ ،ھﻲ اﺧﺘﺒﺎر ﻛﻞ ﻣﻜﻮن ﻋﻠﻰ ﺣﺪى ﺑﻤﻌﺰل ﻋﻦ ﺑﻘﯿﺔ ﻣﻜﻮﻧﺎت اﻟﻨﻈﺎم ،ﻟﻠﺘﺄﻛﺪ ﻣﻦ
ﻋﻤﻠﻪ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﻤﺘﻮﻗﻊ ﻣﻨﻪ .ﺑﺎﺧﺘﺒﺎر اﻟﻤﻌﻠﻮﻣﺎت اﻟﻤﺘﺤﺼﻞ ﻋﻠﯿﮫﺎ ) (outputﻣﻨﻪ ﺑﻌﺪ إﻣﺪاده ﺑﺎﻟﺒﯿﺎﻧﺎت اﻟﻼزﻣﺔ
ﻟﻪ(input).
ﺑﻌﺪ اﺧﺘﺒﺎر ﻛﻞ ﻣﻜﻮﻧﺎت اﻟﻨﻈﺎم واﻟﺘﺄﻛﺪ ﻣﻦ ﺳﻼﻣﺔ ﺗﺼﻤﯿﻤﮫﺎ ،ﻳﺠﺐ أن ﻧﺘﺄﻛﺪ ﻣﻦ أﻧﮫﺎ ﺳﺘﻌﻤﻞ ﻣﻌﺎ ﺑﺸﻜﻞ
ﺻﺤﯿﺢ وأﻧﻪ ﻻ ﻳﻮﺟﺪ ﺗﻀﺎرب ﺑﯿﻦ ﺑﻌﻀﮫﺎ اﻟﺒﻌﺾ ﺑﺤﯿﺚ أن اﻟﻤﻌﻠﻮﻣﺎت اﻟﻤﻨﺘﻘﻠﺔ ﺑﯿﻦ ھﺬه اﻟﻤﻜﻮﻧﺎت ﺗﺼﻞ ﺑﺎﻟﮫﯿﺌﺔ
اﻟﻤﺘﻮﻗﻌﺔ ﻟﮫﺎ .وھﺬا ھﻮ اﻟﮫﺪف ﻣﻦ اﺧﺘﺒﺎر اﻟﺘﻜﺎﻣﻞ.
وﻳﻘﺼﺪ ﺑﻪ اﺧﺘﺒﺎر اﻟﻨﻈﺎم ﺑﻌﺪ ﺗﺠﻤﯿﻊ ﻛﻞ ﻣﻜﻮﻧﺎﺗﻪ ﻟﻠﺘﺄﻛﺪ ﻣﻦ أﻧﻪ ﻳﺆدي اﻟﻮﻇﯿﻔﺔ اﻟﺘﻲ ﻳﺘﻌﯿﻦ ﻋﻠﯿﻪ اﻟﻘﯿﺎم ﺑﮫﺎ،
واﻟﻤﻮﺿﺤﺔ ﻓﻲ وﺛﺎﺋﻖ ﻣﺘﻄﻠﺒﺎت اﻟﻨﻈﺎم .ﻋﻨﺪﻣﺎ ﻳﺠﺘﺎز اﻟﻨﻈﺎم ھﺬا اﻻﺧﺘﺒﺎر ﻳﻤﻜﻨﻨﺎ اﻋﺘﺒﺎر ھﺬا اﻟﻨﻈﺎم ﻋﻠﻰ أﻧﻪ
ﻧﻈﺎم ﻋﺎﻣﻞFunctioning System
23
ﻓﻲ ھﺬه اﻟﺨﻄﻮة ﻳﺘﻢ اﺧﺘﺒﺎر أداء اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ ﺑﯿﺌﺔ ﻋﻤﻞ اﻟﺰﺑﻮن ﻟﻠﺘﺄﻛﺪ ﻣﻦ أن اﻟﻨﻈﺎم ﻣﺘﻮاﻓﻖ ﻣﻊ ﺑﻘﯿﺔ
اﻟﻤﺘﻄﻠﺒﺎت .ﻋﻨﺪ اﺟﺘﯿﺎز اﻟﻨﻈﺎم ﻟﮫﺬا اﻻﺧﺘﺒﺎر ﻳﺘﻢ اﻟﺘﺼﺪﻳﻖ ﻋﻠﻰ اﻟﻨﻈﺎم validated systemوﺑﮫﺬا ﻓﺈﻧﻨﺎ ﻧﻌﺘﺒﺮ أن
اﻟﻨﻈﺎم أﺻﺒﺢ ﺟﺎھﺰ ﺣﺴﺐ ﻣﻔﮫﻮﻣﻨﺎ ﻟﻤﺎ ﻃﻠﺒﻪ اﻟﺰﺑﻮن.
ﻳﺘﻢ إﺟﺮاء ھﺬا اﻻﺧﺘﺒﺎر ﻟﻠﺘﺄﻛﺪ ﻣﻦ أن اﻟﻨﻈﺎم اﻟﻤﺤﻘﻖ ﻣﻮاﻓﻖ ﻟﻤﺎ ﺗﻮﻗﻌﻪ اﻟﺰﺑﻮن ،وﺑﻌﺪھﺎ ﻳﻌﺪ اﻟﻨﻈﺎم ﻣﻘﺒﻮل
Accepted system ﻋﻨﺪ اﻟﻤﺴﺘﺨﺪم واﻟﺰﺑﻮن
اﻻﺧﺘﺒﺎر اﻷﺧﯿﺮ ﻳﺘﻢ ﻓﯿﻪ ﺗﺜﺒﯿﺖ اﻟﻨﻈﺎم ﻓﻲ ﺑﯿﺌﺔ اﻟﻌﻤﻞ اﻟﺨﺎﺻﺔ ﺑﻪ واﻟﺘﺄﻛﺪ ﻣﻦ أﻧﻪ ﻳﻌﻤﻞ ﻛﻤﺎ ھﻮ ﻣﻄﻠﻮب ﻣﻨﻪ.
اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ ﺧﻄﻮات ﺗﻄﺒﯿﻖ ﻋﻤﻠﯿﺔ اﺧﺘﺒﺎر اﻟﻨﻈﺎم ،واﻟﺘﻲ ﻳﺤﺴﻦ ﺗﻄﺒﯿﻘﮫﺎ ﻋﻠﻰ اي ﻧﻈﺎم ﻣﮫﻤﺎ ﻛﺎن
ﺣﺠﻤﻪ ﻟﻠﺘﺄﻛﺪ ﻣﻦ أﻧﻪ ﺳﯿﺆدي اﻟﻤﮫﻤﺔ اﻟﻤﻄﻠﻮﺑﺔ ﻣﻨﻪ
24