You are on page 1of 39

‫اﻝﻤﻘدﻤﺔ‬

‫اﻝﺒرﻤﺠﻴﺎت ) ‪(Software‬‬
‫اﻝﺤﺎﺴب اﻵﻝﻲ ﺒدون ﺒرﻤﺠﻴﺎت ﻜﺈﻨﺴﺎن ﺒﻼ روح ‪ ،‬ﻜﻤﺎ أن اﻝﺘطور اﻝذي ﻴﺤدث ﻓﻲ‬
‫أﺠﻬزة اﻝﺤﺎﺴـب اﻵﻝﻲ وﻤﻜوﻨﺎﺘﻪ ﻴﺼﺎﺤﺒﻪ أﻴﻀﺎ ﺘطور وﺘﺤدﻴث داﺌم ﻓﻲ ﻋﺎﻝم‬
‫اﻝﺒرﻤﺠﻴﺎت‪.‬‬

‫واﻝﺒرﻤﺠﻴﺎت ﺒﺼﻔﺔ ﻋﺎﻤﺔ ﻫﻲ ﻋﺒﺎرة ﻋن ﻤﺠﻤوﻋﺔ ﻤن اﻷواﻤر اﻝﻤرﺘﺒﺔ ﻤﻨطﻘﻴﺎ ‪ ،‬وﻴﺘم‬


‫ﺘﻨﻔﻴذﻫﺎ ﺒواﺴطﺔ وﺤدة اﻝﻤﻌﺎﻝﺠﺔ اﻝﻤرﻜزﻴﺔ ﻝﻠﺤﺎﺴب اﻵﻝﻲ ‪ ،‬وﻴﺨﺘﻠف ﻤﺴﺘوى وﻨوع‬
‫اﻝﺒرﻤﺠﻴﺎت طﺒﻘﺎ ﻝﻌﻼﻗﺎﺘﻪ وﻗرﺒﻪ ﻤن اﻝﺤﺎﺴب اﻵﻝﻲ ﻤن ﻨﺎﺤﻴﺔ ‪ ،‬أو ﻤن ﻗرﺒﻪ وﻋﻼﻗﺘﻪ‬
‫ﺒﺎﻝﻤﺴﺘﺨدم ﻤن ﻨﺎﺤﻴﺔ أﺨرى‪.‬‬

‫ﻓﻨﺠد أن ﻨظﺎم اﻝﺘﺸﻐﻴل ‪ Operting Systems‬ﺒﺸﻜﻠﻪ اﻷوﻝﻲ ﻫو اﻝﻤﻠﺘﺼق ﻤﺒﺎﺸرة‬


‫ﺒوﺤدة اﻝﻤﻌﺎﻝﺠﺔ اﻝﻤرﻜزﻴﺔ ‪CPU‬ﺒﻴﻨﻤﺎ ﻨﺠد ﻋﻠﻰ اﻝطرف اﻵﺨر ‪ ،‬اﻝﺘطﺒﻴﻘﺎت‬
‫اﻝﺒرﻤﺠﻴﺔ ‪ Applications‬ﻫﻲ اﻷﻜﺜر ﻗرﺒﺎ وﺴﻬوﻝﺔ ﺒﺎﻝﻨﺴﺒﺔ ﻝﻠﻤﺴﺘﺨدم‪.‬‬
‫اﻝﻤﻘدﻤﺔ‬
‫أﻨواع اﻝﻤﻨﺘﺠﺎت اﻝﺒرﻤﺠﻴﺔ؟‬
‫ﺒرﻤﺠﻴﺎت ﻋﺎﻤﺔ ﺸﺎﻤﻠﺔ)‪ : (Generic‬وﻫﻲ ﻨظم ﻤﺴﺘﻘﻠﺔ ﺘﻨﺘﺞ ﺒواﺴطﺔ ﺸرﻜﺎت وﺘﺒﺎع‬
‫ﻓﻲ اﻝﺴوق ﻷي ﻋﻤﻴل‪ ،‬وأﺤﻴﺎﻨ ًﺎ ﻴطﻠق ﻋﻠﻴﻬﺎ أﺴم اﻝﺒرﻤﺠﻴﺎت اﻝﻤﻐﻠﻔﺔ ﻤﺜل ﻗواﻋد‬
‫اﻝﺒﻴﺎﻨﺎت وﻤﻌﺎﻝﺠﺎت اﻝﻨﺼوص)‪ (word‬وﺤزم اﻝرﺴوم)‪. (Paint‬‬

‫ﺒرﻤﺠﻴﺎت ﺠﺎﻫزة )ﺘﻔﺼﻴل أو ﻤﺨﺼﺼﺔ ‪ : (Customized‬وﻫﻲ ﻨظم ﻤﺨﺼﺼﺔ‬


‫ﻝﻌﻤﻴل ﻤﻌﻴن ﻴطﻠب ﺘﺠﻬﻴزﻫﺎ‪ ،‬وﻴﺘم ﺘطوﻴرﻫﺎ ﺒواﺴطﺔ ﺸرﻜﺔ أو ﻤطور ﺨﺼﻴﺼﺎً ﻝﻬذا‬
‫اﻝﻌﻤﻴل وﻤﻨﻬﺎ أﻨظﻤﺔ اﻝﺘﺤﻜم ﻓﻲ اﻝﻤﻌدات اﻹﻝﻜﺘروﻨﻴﺔ واﻵﻵت واﻝﻨظم اﻝﺨﺎﺼﺔ ﺒﺄﻋﻤﺎل‬
‫ﻤﻌﻴﻨﺔ‪.‬‬
‫اﻝﻤﻘدﻤﺔ‬
‫اﻨواع اﻝﺒرﻤﺠﻴﺎت‪:‬‬

‫ﻫﻨﺎك ﺜﻼﺜﺔ أﻨواع ﻤن اﻝﺒرﻤﺠﻴﺎت ﻫﻲ ﺒرﻤﺠﻴﺎت‪:‬‬

‫‪ .١‬ﺒرﻤﺠﻴﺎت اﻝﻨظم )‪(System Software‬‬


‫ﻴﺘوﻝﻰ ﻫذا اﻝﻨوع ﻤن اﻝﺒرﻤﺠﻴﺎت اﻝﻌدﻴد ﻤن ﺘﻔﺎﺼﻴل إدارة ﻨظﺎم اﻝﺤﺎﺴوب‪ ،‬ﻤﺜل ﻨظم اﻝﺘﺸﻐﻴل‬
‫‪ ،operating system‬ﻤﻌﺎﻝﺠﺔ اﻝﻠﻐﺎت ‪ Compiler ,‬وﻝﻐﺎت اﻝﺒرﻤﺠﺔ ‪Programing‬‬
‫‪Language‬‬

‫)‪(Application Software‬‬ ‫‪ .٢‬ا ر ت ا ط‬


‫ﻫذﻩ اﻝﺒرﻤﺠﻴﺎت ﺘطوع اﻝﺤﺎﺴوب ﻤن أﺠل ﺘﻨﻔﻴذ وظﺎﺌف ﻤﻔﻴدة وﺨﺎﺼﺔ ﻤﺜل ﻤﻌﺎﻝﺠﺔ اﻝﺤﺴﺎﺒﺎت‬
‫ﺒﺎﺴﺘﺨدام ﺒرﻨﺎﻤﺞ ﺤﺴﺎﺒﺎت ﻤﺘﺨﺼص ٕوادارة اﻝﻤﺨﺎزن وﺠدوﻝﺔ اﻝﻤواد اﻝدراﺴﻴﺔ وﻏﻴرﻫﺎ ﻤن‬
‫اﻝﺒرﻤﺠﻴﺎت اﻝﻤﺘﺨﺼﺼﺔ ﻓﻲ إدارة اﻷﻋﻤﺎل اﻝﻤﺨﺘﻠﻔﺔ وﻴﺘم ﺸراء ﻫذﻩ اﻝﺒرﻤﺠﻴﺎت ﺤﺴب اﻝطﻠب ﻤن‬
‫ﺸرﻜﺎت اﻝﺤﺎﺴوب اﻝﻤﻌﻨﻴﺔ ﺒﺎﻝﺒرﻤﺠﺔ ‪.‬‬
‫اﻝﻤﻘدﻤﺔ‬
‫ﺒرﻤﺠﻴﺎت اﻷﻏراض اﻝﻌﺎﻤﺔ )‪:(General Software‬‬ ‫‪.٣‬‬

‫وﻫﻲ اﻝﺒرﻤﺠﻴﺎت اﻝﺘﻲ ﻴﺴﺘطﻴﻊ أي ﺸﺨص أن ﻴﺴﺘﺨدﻤﻬﺎ وﻤن ﺒرﻤﺠﻴﺎت اﻷﻏراض اﻝﻌﺎﻤﺔ‬
‫ﺒراﻤﺞ ﻤﻌﺎﻝﺞ اﻝﻨﺼوص ﻤﺜل ‪، Word‬اﻝﺠداول اﻹﻝﻜﺘروﻨﻴﺔ ‪ Excel‬و ﺤزم إدارة ﻗواﻋد‬
‫اﻝﺒﻴﺎﻨﺎت ﻤﺜل ‪Access‬اﻝﺘﻲ ﺘﺴﺎﻋد ﻓﻲ ﺘﻨظﻴم واﺴﺘرﺠﺎع‪.‬‬
‫اﻝﻤﻘدﻤﺔ‬
‫ت ‪Software Processes‬‬ ‫تا ر‬

‫ﻫﻲ ﻤﺠﻤوﻋﺔ ﻤن اﻷﻨﺸطﺔ اﻝﺘﻲ ﺘﻬدف إﻝﻰ ﺘﻨﻤﻴﺔ وﺘطوﻴر اﻝﺒرﻤﺠﻴﺎت‪ .‬اﻷﻨﺸطﺔ اﻝرﺌﻴﺴﻴﺔ‬
‫ﻫﻲ ﻓﻲ ﻋﻤﻠﻴﺎت اﻝﺒرﻤﺠﻴﺔ‪:‬‬
‫‪ .١‬اﻝﻤواﺼﻔﺎت ‪ :Specifications‬ﻤﺎ اﻝذي ﻴﺠب ﻋﻠﻰ اﻝﻨظﺎم أن ﻴﻔﻌﻠﻪ‪ ،‬وﻤﺎ ﻫﻲ ﻗﻴود‬
‫ﺘطوﻴرﻩ‪.‬‬

‫‪ .٢‬اﻝﺘﺠﻬﻴز واﻝﺘطوﻴر ‪ : Development‬إﻨﺘﺎج ﻨظﺎم اﻝﺒرﻤﺠﻴﺎت‪ ،‬أي أن ﻨﺘﻴﺠﺔ ﺒرﻤﺠﻴﺎت‬


‫ﻴﺠب أن ﺘﺤﻘق اﻝﻤواﺼﻔﺎت‪.‬‬

‫‪ .٣‬اﻝﺘﺤﻘق او اﻝﺘﺜﺒت ‪ : Validation‬ﻓﺤص واﺨﺘﺒﺎر أن اﻝﺒرﻤﺠﻴﺎت اﻝﻤﻨﺘﺠﺔ ﺘﺤﻘق‬


‫اﻝﻤواﺼﻔﺎت اﻝﺘﻲ طٌِﻠَﺒﺔ ﻤن ﻗﺒل اﻝﻌﻤﻴل‪.‬‬

‫‪ .٤‬ﺘﻘﻴﻴم اﻝﺒرﻤﺠﻴﺎت ‪ : Evolution‬ﺘﻐﻴﻴر وﺘطوﻴر اﻝﺒرﻤﺠﻴﺎت اﺴﺘﺠﺎﺒﺔ ﻝﻠﺘﻐﻴﻴرات اﻝطﺎرﺌﺔ‪.‬‬


‫اﻝﻤﻘدﻤﺔ‬
‫دورة ﺤﻴﺎة ﺘطوﻴر اﻝﺒرﻤﺠﻴﺎت ‪:Software Lifecycle‬‬

‫ﻋﻤﻠﻴﺔ ﺒﻨﺎء أي ﻤﻨﺘﺞ ﺘﻤر ﺒﻌدة ﻤراﺤل ﻴطﻠق ﻋﻠﯽھا ﻋﺎدة "دورة اﻝﺤﻴﺎة “ ﺘﺘﻀﻤن‬
‫اﻝﻤراﺤل اﻝﺘﺎﻝﻴﺔ‪:‬‬

‫ﺘﺤدﻴد وﺘﻌرﻴف اﻝﻤﺘطﻠﺒﺎت ‪. Requirements analysis and definition‬‬ ‫‪.١‬‬


‫ﺘﺼﻤﻴم اﻝﻨظﺎم ‪.System design‬‬ ‫‪.٢‬‬
‫ﺘﺼﻤﻴم اﻝﺒرﻨﺎﻤﺞ ‪.Program design‬‬ ‫‪.٣‬‬
‫ﻜﺘﺎﺒﺔ اﻝﺒرﻨﺎﻤﺞ )ﺘطوﻴرﻩ( ‪.Program implementation‬‬ ‫‪.٤‬‬
‫أﺨﺘﺒﺎر وﺤدات اﻝﺒرﻨﺎﻤﺞ ‪.Unit testing‬‬ ‫‪.٥‬‬
‫أﺨﺘﺒﺎر اﻝﻨظﺎم ‪.system testing‬‬ ‫‪.٦‬‬
‫ﺘﺴﻠﻴم اﻝﻨظﺎم ‪.system delivery‬‬ ‫‪.٧‬‬
‫اﻝﺼﻴﺎ ﻨﺔ ‪maintenance‬‬ ‫‪.٨‬‬
‫اﻝﻤﻘدﻤﺔ‬
‫دة‪:‬‬
‫صا ر تا‬
‫ق ا وا ! ت ا‬ ‫ث‬ ‫ص ا ر ت ا دة‬ ‫م‬ ‫ن و‬
‫ا ظ ‪ #‬ن طرق ھ'د‪ $‬ا ر ت وا)دوات‬ ‫" ر ت ا دة ا ‪ # $ #‬ا ‪%‬‬
‫ص وھ‪: +‬‬ ‫وا ' ت " ‪* $‬دة ‪ +,‬إ' ج ر ت ق ھذه ا‬

‫"‪#‬‬ ‫ا ر ت طر‬ ‫‪ :Maintainability‬ب‬ ‫ا‬ ‫‪.١‬‬


‫ر ‪) 5‬ن ‪ %‬رات‬ ‫‪ 3‬ا ‪ $‬دم‪ ،‬وھ‪+‬‬ ‫ت ا ‪ %‬ر ا‪#‬‬ ‫ا‬
‫ا ل‪.‬‬ ‫ت' ح ‪% +‬ر‬ ‫ا ر‬

‫ن ‪ " 9‬ا* دي ا ر ت ‪' +,‬ط ق‬ ‫د‪:Dependability‬‬ ‫ا‬ ‫‪.٢‬‬


‫ص وى *"‪ #‬ا<* د *" ‪Reliability 3‬وا = ن ‪Security‬‬ ‫ن ا‬
‫د *" ‪ $ < 3‬ب رراً أو "! ً ‪ ,‬ز ً او‬ ‫وا) ن ‪ , ،Safety‬ر ت ا ‪#‬‬
‫دوث ا'‪ 3‬ر ا 'ظ م‪.‬‬ ‫ا‪ 9‬د ً ‪+,‬‬
‫اﻝﻤﻘدﻤﺔ‬
‫ﺨﺼﺎﺌص اﻝﺒرﻤﺠﻴﺎت اﻝﺠﻴدة‪:‬‬
‫‪ .٣‬اﻝﻜﻔﺎءة ‪: Efficiency‬ﻻ ﻴﺠب ﻋﻠﻰ اﻝﺒرﻤﺠﻴﺎت إﻫدار ﻤوارد اﻝﻨظﺎم ‪System‬‬
‫‪Resources‬ﻤﺜل‪:‬‬

‫اﻝذاﻜرة و دورات اﻝﻤﻌﺎﻝﺞ ‪ ،Processor Cycles‬وﺒﻬذا ﺘﺘﻀﻤن اﻝﻜﻔﺎءة ‪.‬‬


‫اﻻﺴﺘﺠﺎﺒﺔ ‪Responsiveness .‬‬
‫وﻗت اﻝﻤﻌﺎﻝﺠﺔ ‪Processing Time .‬‬

‫‪ .٤‬ﻗﺎﺒﻠﺔ اﻻﺴﺘﺨدام ‪ : Usability‬ﻴﺠب أن ﺘﻜون اﻝﺒرﻤﺠﻴﺎت ﻗﺎﺒﻠﺔ ﻝﻼﺴﺘﻌﻤﺎل ﺒدون‬


‫ﻤﺠﻬود ﻏﻴر ﻤﺴﺘﺤق ﻝﻠﻤﺴﺘﺨدﻤﻴن اﻝﻤﺼﻤم ﻝﻬم اﻝﻨظﺎم ‪ ،‬وﻫذا ﻴﻌﻨﻰ ﻀرورة وﺠود‬
‫واﺠﻬﺔ ﻤﺴﺘﺨدم )‪ (user interface‬ﻤﻨﺎﺴﺒﺔ ﻤﻊ اﻝﻤﺴﺘﻨدات اﻝﺘﻲ ﺘﺸﻤل ﻋﻠﻰ اﻝﺘوﺜﻴق‬
‫اﻝﻜﺎﻓﻴﺔ‪.‬‬
‫اﻝﻤﻘدﻤﺔ‬
‫ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت ‪Software engineering‬‬
‫ﻫﻲ ﻓرع ﻤن ﻓروع اﻝﻤﻌﻠوﻤﺎﺘﻴﺔ ﻴﻬدف اﻝﻰ ﺘطوﻴر ﻤﺠﻤوﻋﺔ أﺴس وﻗواﻋد ﺘﻬدف إﻝﻲ‬
‫ﺘﺤﺴﻴن طرق ﺘﺼﻤﻴم وﺘطوﻴر اﻝﺒراﻤﺞ ﻋﻠﻲ ﺠﻤﻴـﻊ اﻝﻤـﺴﺘوﻴﺎت وذﻝـك ﺒطرﻴﻘﻪ ﺘﻠﺒﻲ‬
‫اﺤﺘﻴﺎﺠﺎت اﻝﻤﺴﺘﺨدﻤﻴن ‪.‬‬

‫وﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت ﻻ ﺘﻬﺘم ﺒﻜﺘﺎﺒﺔ اﻝﺒرﻨﺎﻤﺞ ﻨﻔﺴﻪ أي ﺒﻜﺘﺎﺒﺔ ﺸﻔرﺘﻪ ﺒل ﺘﺤـﺎول ﺘﺤـﺴﻴن‬
‫ﻋﻤﻠﻴـﺔ ﺘطوﻴر وﺼﻨﻊ اﻝﺒرﻨﺎﻤﺞ اﺒﺘداء ﻤن اﻝﻤواﺼﻔﺎت اﻝﺘﻲ ﻴﻀﻌﻬﺎ اﻝﻤﺤﺘرف واﻨﺘﻬﺎء‬
‫ﻋﻨد ﻤﺸﻜﻠﺔ ﺼﻴﺎﻨﺔ اﻝﺒرﻨﺎﻤﺞ أو ﺘوﺴﻌﺘﻪ‬

‫ﻜﻤﺎ اﻨﻬﺎ ﺘﻘوم ﻋﻠﻲ دراﺴﺔ اﺤﺘﻴﺎﺠﺎت اﻝﻤﺴﺘﺨدم وﺘﺼﻤﻴم اﻝﺒرﻨﺎﻤﺞ اﻝﻤﻨﺎﺴب ﻝﻬﺎ ﻗﺒل‬
‫ﻜﺘﺎﺒﺔ ﺸﻔرﺘﻪ‪ ،‬وﻫﻨﺎك اﻝﻌدﻴد ﻤن اﻝﺠواﻨب ﻜﺎﻝﻘدرة ﻋﻠﻲ ﺘطوﻴر اﻝﺒرﻨﺎﻤﺞ ﺒﺴﻬوﻝﺔ ﻻﺤﻘﺎ‪،‬‬
‫أو اﻝﺴرﻋﺔ‪ ،‬أ و إﻤﻜﺎﻨﻴﺔ إﻀﺎﻓﺔ ﻤﻠﺤﻘﺎت ﻝـﻪ ﺒﺸﻜل دﻴﻨﺎﻤﻴﻜﻲ‬
‫ﻤﻔﻬوم ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت‬
‫ﻜﺎن اﻻﺴﺘﺨدام اﻝرﺴﻤﻲ اﻻول ﻝﻬذا اﻝﻤﺼطﻠﺢ ﻓﻲ ﻤؤﺘﻤر ﻋﻘد ﻤن ﻗﺒل اﻝﻠﺠﻨﺔ اﻝﻌﻠﻤﻴﺔ‬
‫ﻓﻲ ﻤﻨظﻤﺔ ﺤﻠف ﺸﻤﺎل اﻻطﻠﺴﻲ ﻋﺎم ‪ ١٩٦٨‬ﺤول اﻝﺒرﻤﺠﻴﺎت‪.‬‬

‫ﻋﻘد اﻝﻤؤﺘﻤر ﻝﻤﻌﺎﻝﺠﺔ ﻤﺎ ﻴﻌرف » ازﻤﺔ اﻝﺒرﻤﺠﻴﺎت« واﻝﺘﻲ ظﻬرت ﺒﺴﺒب اﺴﺘﺨدام‬
‫اﻝوﺴﺎﺌل اﻝﺘﻘﻠﻴدﻴﺔ ﻓﻲ ﺒﻨﺎء اﻝﺒرﻤﺠﻴﺎت ﻤﻤﺎ ادى اﻝﻰ ظﻬور ﺒرﻤﺠﻴﺎت ﺘﺤﺘﺎج اﻝﻰ وﻗت‬
‫ﻜﺒﻴر ﻝﺘطوﻴرﻫﺎ‪.‬‬

‫اﻝﻤﻜوﻨﺎت اﻝﺒرﻤﺠﻴﺔ ) ‪ (software‬ﺸﻲء ﻏﻴر ﻤﻠﻤوس اﻝﻰ ﺤد ﻤﺎ ﺒﺎﻝﻤﻘﺎرﻨﺔ ﻤﻊ‬


‫اﻝﻤﻨﺘﺠﺎت اﻻﺨرى ﻜﺎﻝﻤﻜوﻨﺎت اﻝﻤﺎدﻴﺔ )‪.(Hardware‬‬

‫ﺘﻤﺜل اﻝﻤﻜوﻨﺎت اﻝﺒرﻤﺠﻴﺔ ﺴﻠﺴﻠﺔ ﻤن اﻻف او ﻤﻼﻴن اﻻواﻤر اﻝﺘﻲ ﺘطﻠب ﻤن اﻝﺤﺎﺴوب‬
‫اﺠراء ﻋﻤﻠﻴﺎت ﻤﻌﻴﻨﺔ ﻤﺜل ﻋرض اﻝﻤﻌﻠوﻤﺎت او اﺠراء اﻝﺤﺴﺎﺒﺎت او ﺘﺨزﻴن اﻝﺒﻴﺎﻨﺎت‪.‬‬
‫ﻤﻔﻬوم ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت‬

‫ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت )‪ (Software Engineering‬ﻓﻬﻲ ﻓرع ﻤن ﻓروع اﻝﻬﻨدﺴﺔ ﻴﻘوم‬


‫ﻋﻠﻰ ﻤﺠﻤوﻋﺔ اﺴس وﻗواﻋد ﺘﻬدف اﻝﻰ ﺘﺼﻤﻴم وﺘطوﻴر اﻝﺒراﻤﺞ ﺒوﻓرة وﻨوﻋﻴﺔ ﻋﺎﻝﻴﺔ‬
‫ﺘﻠﺒﻲ اﺤﺘﻴﺎﺠﺎت اﻝﻤﺴﺘﺨدﻤﻴن‪.‬‬

‫ﻫذا اﻝﻔرع ﻤن اﻝﻬﻨدﺴﺔ ﻴﺘﻤﻴز ﺒﺎﻨﻪ ﻻ ﻴﺤﺘﺎج اﻝﻰ راس ﻤﺎل ﻜﺒﻴر وﺒﺎﻝﺘﺎﻝﻲ اﻝﺨﺴﺎرة ﻓﻴﻪ‬
‫ﺘﻜون ﻗﻠﻴﻠﺔ ﻋﻠﻰ ﻋﻜس ﺒﻘﻴﺔ اﻝﻔروع ﻤن اﻝﻬﻨدﺴﺔ‪.‬‬

‫ﻜﻤﺎ اﻨﻪ ﻻ ﻴﻜﻔﻲ ﻻ ﻴﺠﺎد ﺒرﻤﺠﻴﺎت ﻤﺘﻜﺎﻤﻠﺔ وﺠﻴدة ﺒﺎﻻﻋﺘﻤﺎد ﻋﻠﻰ ﻋﻤل ﺸﺨص واﺤد‬
‫واﻨﻤﺎ ﻴﺘطﻠب ذﻝك ﻓرﻴﻘﺎ ﻤن اﻝﻤﻬﻨدﺴﻴن اﻻﻜﻔﺎء‪.‬‬
‫ﻤﻔﻬوم ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت‬
‫ﻋﻼﻗﺔ ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت ﺒﻌﻠوم اﻝﺤﺎﺴوب‬

‫ﻋﻠوم اﻝﺤﺎﺴوب‪ :‬ﻴﻘوم ﺒﺎﻝﺘرﻜﻴز ﻋﻠﻰ اﻝﻤﻜوﻨﺎت اﻝﻤﺎدﻴﺔ‪ ،‬اﻨظﻤﺔ اﻝﺘﺸﻐﻴل‪ ،‬ﻝﻐﺎت‬
‫اﻝﺒرﻤﺠﺔ‪ ،‬اﻝﻤﺘرﺠﻤﺎت )‪.(Compiler‬‬

‫ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت‪ :‬ﻫو ﺘﺨﺼص ﻴﺴﺘﺨدم ﺘﻜﻨوﻝوﺠﻴﺎ اﻝﺤﺎﺴوب واﻝﺒرﻤﺠﻴﺎت ﻜﺄدوات‬


‫ﻝﺤل ﻤﺸﻜﻠﺔ ﻤﻌﻴﻨﺔ‪.‬‬

‫ﻴﻤﻜن اﺨذ ﻤﺜﺎل ﺒﺴﻴط ﻴﺒﻴن اﻝﻔرق ﺒﻴن ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت وﻋﻠوم اﻝﺤﺎﺴوب ﻓﻲ ﻋﻠم‬
‫اﻝﻜﻴﻤﺎء واﺴﺘﺨداﻤﻪ ﻓﻲ ﺤل اﻝﻤﺸﺎﻜل اﻝﺘﻲ ﻨﻘﺎﺒﻠﻬﺎ ﻓﻲ ﺤﻴﺎﺘﻨﺎ اﻝﻴوﻤﻴﺔ‪:‬‬
‫ﻤﻔﻬوم ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت‬
‫ﻋﻼﻗﺔ ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت ﺒﻌﻠوم اﻝﺤﺎﺴوب‬

‫ﻴﻬﺘم اﻝﻜﻴﻤﺎﺌﻲ ﺒدراﺴﺔ اﻝﻤواد اﻝﻜﻴﻤﻴﺎﺌﻴﺔ ) ﺘرﻜﻴﺒﻬﺎ‪ ،‬ﺘﻔﺎﻋﻼﺘﻬﺎ‪ ،‬واﻝﻨظرﻴﺎت اﻝﺘﻲ ﺘﺤﻜم‬
‫ﺴﻠوﻜﻬﺎ(‬

‫ﺒﻴﻨﻤﺎ اﻝﻤﻬﻨدس اﻝﻜﻴﻤﻴﺎﺌﻲ ﻴﺴﺘﺨدم اﻝﻨﺘﺎﺌﺞ اﻝﺘﻲ ﺘوﺼل اﻝﻴﻬﺎ اﻝﻜﻴﻤﻴﺎﺌﻲ ﻝﺤل اﻝﻤﺸﺎﻜل‬
‫اﻝﺘﻲ ﻴطﻠب ﻤﻨﻪ اﻴﺠﺎد ﺤل ﻝﻬﺎ‪.‬‬

‫اي اﻨﻬﺎ ﻤن وﺠﻬﺔ ﻨظر اﻝﻜﻴﻤﻴﺎﺌﻲ ﻫو ﻤوﻀوع اﻝدراﺴﺔ ﺒﺤد ذاﺘﻬﺎ‪ .‬ﻴﺒﻨﻤﺎ ﻤن وﺠﻬﺔ‬
‫ﻨظر اﻝﻤﻬﻨدس اﻝﻜﻴﻤﻴﺎﺌﻲ ﻫﻲ اداة ‪ Tool‬ﺘﺴﺘﺨدم ﻹﻴﺠﺎد ﺤﻠول ﻝﻤﺸﻜﻠﺔ ﻋﺎﻤﺔ ) ﻗد ﻻ‬
‫ﺘﻜون ﻤﺸﻜﻠﺔ ذات طﺒﻴﻌﺔ ﻜﻴﻤﻴﺎﺌﻴﺔ ﺒﺤد ذاﺘﻬﺎ(‪ .‬اﻝﺸﻜل اﻝﺘﺎﻝﻲ ﻴﺒﻴن اﻝﻌﻼﻗﺔ ﺒﻴن ﻫﻨدﺴﺔ‬
‫اﻝﺒرﻤﺠﻴﺎت وﻋﻠوم اﻝﺤﺎﺴوب‪.‬‬
‫ﻤﻔﻬوم ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت‬
‫‪This image cannot currently be display ed.‬‬
‫ﻋﻼﻗﺔ ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت ﺒﻌﻠوم اﻝﺤﺎﺴوب‬
‫اﻝﻔرق ﺒﻴن اﻝﺒرﻤﺠﺔ وﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت‬

‫• ﻓﻲ اﻝﺒرﻤﺠﺔ ﺘﻌﺘﺒر ﻋﻤﻠﻴﺔ ﻜﺘﺎﺒﺔ اﻝﻜود ﻫﻲ اﻫم ﻋﻤﻠﻴﺔ ﻓﻲ ﺒﻨﺎء اﻝﺒرﻨﺎﻤﺞ ﺒﻐض اﻝﻨظر‬
‫ﻋن اﻝﺠدوى ﻤن اﻝﺒرﻨﺎﻤﺞ او اﻤﻜﺎﻨﻴﺔ ﻗﺒول اﻝﻤﺴﺘﺨدم ﻝﻪ او ﺤﺘﻰ ﻗﺎﺒﻠﻴﺔ اﻝﺘطوﻴر‪.‬‬

‫• ﻓﻲ ﺤﻴن ان ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت ﺘﻌﻤل ﻋﻠﻰ ﺒﻨﺎء اﻝﻨظﺎم اﻝﺒرﻤﺠﻲ ﻜﻤﺸروع ﻤﺘﻜﺎﻤل و‬
‫دراﺴﺘﻪ ﻤن ﻜﺎﻓﺔ اﻝﺠواﻨب‪ :‬اﻝﺒﻨﺎء اﻝﺒرﻤﺠﻲ‪ ،‬اﻝدﻋم اﻝﻔﻨﻲ واﻝﺼﻴﺎﻨﺔ‪ ،‬اﻝﺘﺴوﻴق واﻝﻤﺒﻴﻌﺎت‪،‬‬
‫اﻝﺘطوﻴر واﻝﺘدرﻴب ﻋﻠﻰ اﺴﺘﺨداﻤﻪ‪.‬‬
‫ﻤﻬﻨدس اﻝﺒرﻤﺠﻴﺎت ) ‪(Software Engineer‬‬
‫• ﻤﻬﻨدس اﻝﺒرﻤﺠﻴﺎت ﻫو اﻝﺸﺨص اﻝذي ﻴﻘﻊ ﻋﻠﻰ ﻋﺎﺘﻘﻪ ﺘطوﻴر اﻝﻤﻨﺘﺠﺎت اﻝﺒرﻤﺠﻴﺔ اﻝﺘﻲ‬
‫ﺘﺒﺎع ﻝﻠزﺒﺎﺌن او اﻝﺘﻲ ﻴﺤﺘﺎج اﻝﻴﻬﺎ اﻝﻌﻤﻼء او اﻝزﺒﺎﺌن‪ .‬ﻝذﻝك ﻴﺠب ﻋﻠﻴﻪ ان ﻴﺘﺒﻨﻰ اﺴﻠوﺒﺎ‬
‫ﻤﻨظﻤﺎ وﻨظﺎﻤﻴﺎ ﻓﻲ ﻋﻤﻠﻪ ﻝﻜﻲ ﻴﺤﻘق اﻻﻫداف اﻝﻤرﺠوة ﻤن اﺴﺘﺨدام ﻋﻠم ﻫﻨدﺴﺔ‬
‫اﻝﺒرﻤﺠﻴﺎت‪.‬‬

‫• ﻜﻤﺎ ﻴﺘﺤﺘم ﻋﻠﻴﻪ اﺴﺘﺨدام اﻻدوات اﻝﻤﻨﺎﺴﺒﺔ ) ﻜﺎﺨﺘﻴﺎر ﻝﻐﺔ ﺒرﻤﺠﻴﺔ ﻤﻨﺎﺴﺒﺔ ﻤن ﻝﻐﺎت‬
‫اﻝﺒرﻤﺠﺔ ﻋﺎﻝﻴﺔ اﻝﻤﺴﺘوى( واﻝﺘﻘﻨﻴﺎت اﻝﻀرورﻴﺔ )ﻜﺎﻝﺨوارزﻤﻴﺎت ﻤﺨﺘﻠﻔﺔ اﻻﻏراض(‬
‫وﻴﻜون ذﻝك ﺒﺎﻻﻋﺘﻤﺎد ﻋﻠﻰ ﻨوع اﻝﻤﺸﻜﻠﺔ اﻝﺘﻲ ﻴﻘوم ﺒﺤﻠﻬﺎ وﻗﻴود اﻝﺘطوﻴر اﻝﻤﻔروﻀﺔ‬
‫واﻝﻤوارد اﻝﻤﺘﺎﺤﺔ )اﻝﻤﺎدﻴﺔ واﻝﺒﺸرﻴﺔ(‪.‬‬

‫• ﻴدرك ﻤﻬﻨدس اﻝﺒرﻤﺠﻴﺎت اﻨﻪ ﻴﺠب ﻋﻠﻴﻪ اﻝﻌﻤل ﻤن ﺨﻼل اﻝﻘﻴود اﻝﺘﻨظﻴﻤﻴﺔ واﻝﻤﺎﻝﻴﺔ‪.‬‬
‫ﻝذﻝك ﻋﻠﻴﻪ ان ﻴﺒﺤث ﻋن اﻝﺤﻠول ﻀﻤن ﻫذﻩ اﻝﻘﻴود‪.‬‬
‫ﻤﻬﻨدس اﻝﺒرﻤﺠﻴﺎت ) ‪(Software Engineer‬‬
‫• ﻝذﻝك ﻓﺎن ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت ﺘﻬﺘم ﺒﺘﺼﻤﻴم وﺘطوﻴر ﺒراﻤﺞ ذات ﺠودة ﻋﺎﻝﻴﺔ‪ .‬اﻝﺴؤال‬
‫اﻝﺘﻲ ﻴﺠب ﺴؤاﻝﻪ ﻫﻨﺎ‪ :‬ﻤن ﻴﺸﺎرك ﻓﻲ ﻋﻤﻠﻴﺔ اﻝﺘﺼﻤﻴم وﺘطوﻴر اﻝﺒراﻤﺞ؟؟‬

‫• اﻝﻤﺸﺎرﻜون ﻓﻲ ﻋﻤﻠﻴﺔ ﺼﻨﺎﻋﺔ اﻝﺒرﻨﺎﻤﺞ‪ ،‬ﻋﺎدة ﻤﺎ ﻴﻨدرﺠون ﺘﺤت ﺜﻼث ﻤﺠﻤوﻋﺎت‪:‬‬

‫‪ .١‬اﻝزﺒون )‪ :(Customer‬وﻫو اﻝﺸرﻜﺔ )او اﻝﺸﺨص( اﻝﻤﻤوﻝﺔ ﻝﻤﺸروع ﺘطوﻴر‬


‫اﻝﺒرﻨﺎﻤﺞ اﻝﻤطﻠوب‪.‬‬
‫‪ .٢‬اﻝﻤﺴﺘﺨدم )‪ :(User‬اﻝﺸﺨص ) او ﻤﺠﻤوﻋﺔ اﻻﺸﺨﺎص(اﻝذي ﺴوف ﻴﻘوم ﻓﻌﻼ‬
‫ﺒﺎﺴﺘﻌﻤﺎل اﻝﺒرﻨﺎﻤﺞ واﻝﺘﻌﺎﻤل ﻤﻌﻪ ﻤﺒﺎﺸرة‪.‬‬

‫‪ .٣‬اﻝﻤطور ) ‪ :(Developer‬وﻫو اﻝﺸرﻜﺔ )او اﻝﺸﺨص( اﻝذي ﺴوف ﻴﻘوم ﺒﺘطوﻴر‬


‫اﻝﺒرﻨﺎﻤﺞ ﻝﺼﺎﻝﺢ اﻝزﺒون‪ .‬اﻝﺸﻜل اﻝﺘﺎﻝﻲ ﻴﺒن اﻝﻌﻼﻗﺔ ﺒﻴن اﻻﺠزاء اﻝﻤذﻜورة اﻨﻔﺎ‪:‬‬
(Software Engineer ) ‫ﻤﻬﻨدس اﻝﺒرﻤﺠﻴﺎت‬
‫ﻤﻬﻨدس اﻝﺒرﻤﺠﻴﺎت ) ‪(Software Engineer‬‬
‫ﺴؤال ‪ :‬ﻤﺎ ھي اﻻﺴﺌﻠﺔ اﻝﺘﻲ ﻴﺠب ﻋﻠﻰ ﻤﻬﻨدس اﻝﺒراﻤﺠﻴﺎت ان ﻴﺴﺄل ﻨﻔﺴﻪ ﻋﻨد‬
‫ﺘﺼﻤﻴم ﻫذا ﻝﻠﻨظﺎم ؟‬

‫‪ .١‬ﺘﻐﻴر اﻝﻌﻤﻠﻴﺎت ‪ : Process Change‬أي ھل اﻝﻨظﺎم اﻝﻤﻘﺘرح ﺴﻴؤدي اﻝﻰ ﺘﻐﻴر‬


‫ﻓﻲ ﺸﻜل ﻤﻌﺎﻝﺠﺔ اﻝﻌﻤﻠﻴﺎت ﻓﻤﺜﻼ اﻝﻌﻤﻠﻴﺎت اﻝﺤﺴﺎﺒﻴﺔ ﻓﻲ اﺤد اﻝﺸرﻜﺎت ﻓﻬل ﻨظﺎﻤﻨﺎ‬
‫ﺴوف ﻴؤدي اﻝﻰ ﺘﺤول ﺘﻠك اﻝﻌﻤﻠﻴﺎت اﻝﻰ ﻋﻤﻠﻴﺎت اﻝﻴﺔ داﺨل اﻝﺤﺎﺴوب ام ﻻ ؟‬

‫‪ .٢‬ﺘﻐﻴر وظﻴﻔﻲ ‪ :Job Change‬أي ھل طﺒﻴﻌﺔ اﻝﻌﻤل ﻝﻠﻤوظﻔﻴن ﺴﺘﺘﻐﻴر ﺒﻤﻌﻨﻰ اﺨر‬
‫ھل ﺴﻴﺒﻘﻰ اﻝﻤوظﻔون ﻓﻲ وظﺎﺌﻔﻬم ﺒﺤﻴث ﺴﻴﺤﺘﺎﺠون اﻝﻰ اﻋﺎدة ﺘﺎھﻴل ام ﻻ؟‬
‫ﻤﻬﻨدس اﻝﺒرﻤﺠﻴﺎت ) ‪(Software Engineer‬‬
‫‪ .٣‬ﺘﻐﻴر اﻝﻤﻨظﻤﺔ ‪ :Organization Change‬ھل ھذا اﻝﻨظﺎم ﺴﻴؤدي اﻝﻰ ﻤﺎﻴﺴﻤﻰ‬
‫ﺒﺎﻝﺘﻐﻴرات اﻝﻤﻨظﻤﻴﺔ أي ھل ﺴﺘﺘﻐﻴر ﻫﻴﻜﻠﻴﺔ اﻝﻤﻨظﻤﺔ ام ﻻ ﻓﻌﻠﻰ ﺴﺒﻴل اﻝﻤﺜﺎل ادارة‬
‫اﻻرﺸﻔﺔ ﻓﻬﻲ ﻤﺴﺘﻘﺒﻼ اﻴﻠﺔ اﻝﻰ اﻻﺨﺘﻔﺎء ﻤﻊ ظھور اﻨظﻤﺔ ﻗواﻋد اﻝﺒﻴﺎﻨﺎت ذات‬
‫اﻻﻤﻨﻴﺔ واﻝﻜﻔﺎﺌﺔ اﻝﻌﺎﻝﻴﺔ ‪.‬‬

‫' ل ا ‪ " #‬طوات ھ'د‪$‬‬ ‫ت '!‪ 5$‬ا<‪ " $‬ا ‪$‬‬ ‫و د ان ‪=$‬ل ‪'3‬دس ا را‬
‫ا را ت"‪.‬‬
‫ﺨطوات ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت ‪Software Engineering Process‬‬
‫‪" C‬ك ا طوات ‪ +,‬ا ‪ E‬ل ا ‪:+‬‬ ‫ن و‬ ‫و‬
‫ﻤﺎ اﻝﻔرق ﺒﻴن ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت وﻫﻨدﺴﺔ اﻝﻨظم‬
‫دة *"‪#‬‬ ‫ا وا'ب ا " طو ر ا 'ظم ا‬ ‫ھ د ا ظم ‪ 3 :‬م ھ'د‪ $‬ا 'ظم‬
‫‪ G‬را‬ ‫م و ' ء " ‪ 3‬زات وا ر ت و ن *'‬ ‫‪ 3,‬ن‬ ‫ا ‪$‬وب‬
‫'وا ‪ +‬ا و ر ن دات و ر ت و* " ت ھ'د‪5 $‬‬ ‫ا طو ر و ‪ 3‬م‬

‫أ ھ د ا ر ت ‪ +3,‬ذ ك ا زء ن ھذه ا‪ H‬را ا ذي ‪ 3‬م طو ر ا '‬


‫ا)‪ $ $‬وا م وا ط ت و ' ء ا ط ت ا ‪ +‬د ل ‪ +,‬و ن ھذا‬ ‫ا ر‬
‫ا 'ظ م و ر ھ'د‪ $‬ا ر ت ھ‪ +‬زء ن ا)'ظ ا ‪'3‬د‪. $‬‬
‫ا)'ظ ا ‪'3‬د‪ 3 $‬م وا ! ت ‪ ،‬ا ط ط‪ ،‬ا ل وا ط ق ‪'I‬ظ ‪.‬‬
‫ن ا ‪'3‬د‪$‬ون و ‪J‬ل‬ ‫و ر ھ'د‪ $‬ا 'ظم أ‪9‬دم ن ھ'د‪ $‬ا ر ت ‪ ,‬د‬
‫ط رات‬ ‫ا‬ ‫ا د د ن ا)'ظ‬ ‫ن 'ء و‬ ‫ا‬ ‫ا)*وام ا‬
‫ل‪.‬‬ ‫وا‬
‫ﻫﻨدﺴﺔ اﻝﺒرﻤـﺠـﻴﺎت – ﺘﻜﻨوﻝوﺠﻴﺎ طﺒﻘﻴﺔ‪:‬‬
‫‪:‬‬ ‫ا‬ ‫ت ص‬ ‫ا ر‬ ‫د‬ ‫ر ف ‪ Fritz Bauer‬ا ذي و‬

‫د‬ ‫ول ا‬ ‫دئ ھ د‬ ‫)ھ د ا ر ت( ھ ا دام‬


‫‪.‬‬ ‫و رات‬ ‫ر ت و‪$‬و و ‪ #‬ل " ءة‬

‫ودة ا ر ت‪.‬‬ ‫ھذا ا ر ف ‪ %‬ول ا ‪ "#‬ر ن ا ظ ھر ا‬


‫ب‬ ‫م ا * ) ا و(ت ا‬ ‫‪ %‬ذ‪#‬ر ‪/‬رة ا ‪ .‬ا ار ء ا ز ون او‬
‫ا‬ ‫ا ر‬ ‫م ذ‪#‬ر اھ‬
‫ﻫﻨدﺴﺔ اﻝﺒرﻤـﺠـﻴﺎت – ﺘﻜﻨوﻝوﺠﻴﺎ طﺒﻘﻴﺔ‪:‬‬
‫د ن ا ‪ #‬ر ‪ 0‬ن وا‪ # %‬رو ن ‪ IEEE‬ر ‪ 2‬ا‪ /‬ل وھو‪:‬‬ ‫دا‬ ‫و ‪1‬‬

‫ت طو ر‬ ‫س ‪#‬‬ ‫ت (ھ ط ق ‪ *+‬ر ب و ظم و ل‬ ‫)ھ د ا ر‬


‫ت‪.‬‬ ‫ا ر‬ ‫ا ر ت اي ط ق ا ‪ +‬د‬ ‫و ‪ ./‬ل و‬

‫ذ ك ) ن ھ د ا ر ت ھ ‪ #‬و و ط )‪ . (Layered Technology‬ان‬


‫‪ .‬ر ا‪ %‬س ا ذي د م ھ د ا ر ت ھو ا ر‪ #‬ز ‪:8‬‬

‫‪ .١‬ا ودة )‪ :(Quality‬وھ ن اھم اھداف ا ‪9‬دام ھ د ا ر ت )‬


‫‪9‬دم‪،‬‬ ‫ن ا‪ %‬ر ‪ < <9‬ت ا‬ ‫ء و طو ر ا ر ت ‪ .‬ث ;‪9‬ذ‬
‫‪ 1 8‬ا و ت‪.‬‬ ‫و ط‬
‫ﻫﻨدﺴﺔ اﻝﺒرﻤـﺠـﻴﺎت – ﺘﻜﻨوﻝوﺠﻴﺎ طﺒﻘﻴﺔ‪:‬‬
‫اﻝﻤﻌﺎﻝﺠﺔ) ‪ :(Process‬ﻫﻲ ﻋﻤﻠﻴﺔ اﺨﺘﻴﺎر ﻨوع اﻝﻤﻌﺎﻝﺠﺔ اﻝﻤﺴﺘﺨدﻤﺔ ﻓﻲ ﺒﻨﺎء‬
‫اﻝﺒرﻨﺎﻤﺞ وﻫﻨﺎ ﻴﺒدا ﻤدﻴر اﻝﻌﻤل )‪ (Software Developer‬ﺒﺘﺤدﻴد ﻨوﻋﻴﺔ وطرﻴﻘﺔ‬
‫اﻝﻤﻌﺎﻝﺠﺔ اﻝﻤطﻠوﺒﺔ ﻤﺜﻼ ﻫل ﻴﺴﺘﺨدم طرﻴﻘﺔ اﻝﺨطﻴﺔ وﺘدﻓق اﻝﺸﻼل ) ‪(Waterfall‬‬
‫‪Approach‬او طرﻴﻘﺔ ) ‪(Exploratory Approach‬او اي طرﻴﻘﺔ اﺨرى ﻓﻲ‬
‫اﻝﻌﻤل ؟ ﻤﻊ ﻤراﻋﺎة ﺘﻼﺌم ﻨوﻋﻴﺔ اﻝﻤﻌﺎﻝﺠﺔ ﻤﻊ طﺒﻴﻌﺔ اﻝﻨظﺎم اﻝﻤراد ﺒﻨﺎؤﻩ ‪.‬‬

‫اﻝطرق) ‪ : (Methods‬ﻫﻨﺎ ﻤﺼﻤم اﻝﻨظﺎم ﻴﺒدا ﺒﺎﺨﻴﺎر طرﻴﻘﺔ اﻝﻌﻤل ﻤﺜﻼ ﻫل ﻴرﻴد‬
‫اﺴﺘﺨدام ) ‪ (Object _Oriented Methods‬او طرق اﻝﻜﻼﺴﻴﻜﻴﺔ ﺒﺎﻝﻌﻤل وﻫذة‬
‫اﻝطﺒﻘﺔ ﺘوﻓر ﺘﻘﻨﻴﺔ اﻻﺠﺎﺒﺔ ﻋن "‪ "How‬ﻜﻴف ﻨﺒﻨﻲ اﻝﺒراﻨﺎﻤﺞ‬
‫ﻫﻨدﺴﺔ اﻝﺒرﻤـﺠـﻴﺎت – ﺘﻜﻨوﻝوﺠﻴﺎ طﺒﻘﻴﺔ‪:‬‬
‫) و) ر‬ ‫ا‪0‬دوات)‪ : (Tools‬وھذه ا ط و)ر ادوات ا و ‪ #‬او ‪ /‬ؤ‬
‫ا ـ ‪(Computer Aided‬‬ ‫و "ل‬ ‫دا <م)‬ ‫ادوت و ر ت‬
‫ن ط ت ھد‬ ‫))‪Software Engineering (CASE‬وا ‪9‬طط ا‬
‫ا ر ت‪.‬‬
‫ﻨﻤﺎذج ﻋﻤﻠﻴﺎت اﻝﺒرﻤﺠﻴﺎت ‪Software Process Models‬‬

‫اﻝﻨﻤوذج ﻋﺒﺎرة ﻋن ﺘﻤﺜﻴل ﻤﺒﺴط ﻝدورة ﺤﻴﺎة ﺘطوﻴر اﻝﻨظﺎم ﺤﻴث ﺘﻌرض ﻫذﻩ اﻝﻌﻤﻠﻴﺎت‬
‫ﻤن ﻤﻨظور ﺨﺎص‪ .‬ﻤن اﻤﺜﻠﺔ ﻤﻨظور اﻝﻌﻤﻠﻴﺎت اﻝﻤﺴﺘﺨدﻤﺔ‪ :‬ﻤﻨظور ﺘﺘﺎﺒﻊ اﻝﻌﻤل وﺘﺘﺎﺒﻊ‬
‫اﻻطوار‪ ،‬وﻤﻨظور ﺘدﻓق اﻝﻌﻤﻠﻴﺎت وﺘدﻓق اﻝﺒﻴﺎﻨﺎت )ﺘدﻓق اﻝﻤﻌﻠوﻤﺎت(‪ ،‬وﻤﻨظور ﻗواﻋد‬
‫واﻋﻤﺎل) ﺘﺤدﻴد اﻋﻤﺎل(‪.‬‬

‫واﻝﻨﻤﺎذج ﺒطﺒﻴﻌﺘﻬﺎ ﻫﻲ ﺘﺒﺴﻴط ﻝدورة ﺤﻴﺎة اﻝﻨظﺎم ﻋﺒﺎرة ﻋن ﻤوﺠز ﻤﺠرد ﻝﻠﻌﻤﻠﻴﺎت‬
‫اﻝﻔﻌﻠﻴﺔ اﻝﻤوﺼوﻓﺔ‪ ،‬وﻗد ﻴﺤﺘوي ﻋﻠﻰ اﻻطوار اﻝﺘﻲ ﻫﻲ ﺠزء ﻤن ﻋﻤﻠﻴﺎت اﻝﺒرﻤﺠﻴﺎت‬
‫اﻝﺘﻲ ﻴﻨﺸﻐل ﺒﻬﺎ اﻝﻌﺎﻤﻠون ﻓﻲ ﻫﻨدﺴﺔ اﻝﺒرﻤﺠﻴﺎت‪.‬‬
‫ﻨﻤﺎذج ﻋﻤﻠﻴﺎت اﻝﺒرﻤﺠﻴﺎت ‪Software Process Models‬‬
‫‪Waterfall Model‬‬ ‫‪ .١‬ا وذج ا‪ 0‬داري او ا ‪5/‬‬

‫ﻓﻲ ﻫذا اﻝﻨﻤوذج ﺘﺴﻴر دورة اﻝﺤﻴﺎة ﺒﺸﻜل ﺘدرﻴﺠﻲ ﺒدأ ﻤن اﻝﺨطوة )‪ (١‬وﺤﺘﻰ اﻝﺨطوة‬
‫)‪ ،(٨‬وﻜﻤﺎ ﻴظﻬر ﺒﺎﻝﺸﻜل )‪ (١‬ﻓﺈن ﻜل ﻤرﺤﻠﺔ ﺘﺒدأ ﺒﻌد اﻻﻨﺘﻬﺎء ﻤن اﻝﻤرﺤﻠﺔ‬
‫اﻝﺘﻲ ﺘﺴﺒﻘﻬﺎ ﻤﺒﺎﺸرة‪.‬‬

‫ﻴﺴﻬل ﻋﻠﻰ اﻝﻤطور ﺘوﻀﻴﺢ ﻜﻴﻔﻴﺔ ﺴﻴر‬ ‫ﻴﺘﻤﻴز اﻝﻨﻤوذج اﻻﻨﺤداري ﺒﺎﻝﺒﺴﺎطﺔ‪ ،‬وﻝذا ﻓﺈﻨﻪ ّ‬
‫اﻝﻌﻤل ﺒﺎﻝﻤﺸروع ﻝﻠﻌﻤﻴل )اﻝذي ﻋﺎدة ﻻ ﻴﻌرف اﻝﻜﺜﻴر ﻋن ﺼﻨﻊ اﻝﺒرﻤﺠﻴﺎت( واﻝﻤراﺤل‬
‫اﻝﻤﺘﺒﻘﻴﺔ ﻤن اﻝﻌﻤل‪ .‬وﻗد ﻜﺎن ﻫذا اﻝﻨﻤوذج أﺴﺎس ﻋﻤل ﻜﺜﻴر ﻤن اﻝﻤؤﺴﺴﺎت ﻝﻔﺘرة‬
‫طوﻴﻠﺔ ﻤﺜل و ازرة اﻝدﻓﺎع اﻻﻤرﻴﻜﻴﺔ‪ ،‬واﺴﺘﻨﺒط ﻤﻨﻪ اﻝﻌدﻴد ﻤن اﻝﻨﻤﺎذج اﻻﻜﺜر ﺘﻌﻘﻴدا‪.‬‬
‫اﻝﺸﻜل اﻝﺘﺎﻝﻲ ﻴﺒن ﻤراﺤل ﺘطوﻴر اﻝﺒرﻤﺠﻴﺎت ﻓﻲ اﻝﻨظﺎم اﻻﻨﺤداري‬
Software Process Models ‫ﻨﻤﺎذج ﻋﻤﻠﻴﺎت اﻝﺒرﻤﺠﻴﺎت‬
‫ﻨﻤﺎذج ﻋﻤﻠﻴﺎت اﻝﺒرﻤﺠﻴﺎت ‪Software Process Models‬‬
‫ﻤراﺤل اﻝﻨﻤوذج‬
‫ل ا ط ت )‪(Requirements Analysis‬‬ ‫‪ .١‬ا ر ا‪7‬و ‪: 6‬‬
‫) ھذه ا ر‪ .‬وم ‪ .‬ل ا ظ م او دس ا ر ت ‪.‬د د ط ت ا ظ م ن‬
‫ا ر * ‪ ،‬و<ف ھذه‬ ‫وم‬ ‫ر ت‪ ،‬و دات ‪،‬و ا م وا وظ ‪0‬ف ا‬
‫ا م د( ّ ‪ #،‬م ل درا ا دوى ذا ا ر *‬

‫وھ ;‬ ‫ت‬ ‫‪< 1‬وراً ر * وم‬ ‫‪ ) ،‬ل ) ھذه ا ر‪.‬‬


‫ل و ‪.‬د دھ ‪،‬‬ ‫دس ا ر ت ) ا ‪D9‬ص ھذه ا‪ #)E‬ر ا ‪< 9‬‬
‫) ا ل ‪ 1‬ا ‪D‬ء وا درة ‪ 8‬ا ‪ .‬ل ا <‪.F .‬‬ ‫ط ب رة‬ ‫ذك )‬
‫ھذه ا ر‪ .‬و" د ‪ 8‬دول ا ‪/‬روط وا وا<‪ 2‬ت‪.‬‬ ‫*)‬

‫ب ‪ 8‬ا طور ن إ ء ر‪ . .‬ل ا ظ م ‪#/‬ل‬ ‫‪ .‬ب ا وذج ا‪. H‬داري )‪I‬‬


‫ض ا ‪/‬ر‪1‬‬ ‫م ( ل ا دء ) ا < م‪ ،‬ھذه ا ر‪( .‬د ط ب و(ت طو ل )‬
‫و(د ر دة وات ( ل أن رى ا ر * ا ‪ 0‬ا ور‪.‬‬
‫ﻨﻤﺎذج ﻋﻤﻠﻴﺎت اﻝﺒرﻤﺠﻴﺎت ‪Software Process Models‬‬
‫م )‪(Design‬‬ ‫‪ .١‬ا ر ا ‪ : $‬ا‬
‫ل‬ ‫رة ر ب ا وا)ذ ا ‪ 2 9‬ظ م و‬ ‫ا < م ا م ظم ھ‬
‫ن‬ ‫و‬ ‫ظ م ‪ ،‬و ب درا و و م‬ ‫‪ .‬ق ا‪E‬ھداف ا ‪< 9‬‬ ‫‪#‬‬ ‫طر‬
‫‪#/‬ل أ‪"#‬ر‬ ‫وف رف‬ ‫ا < م وا‬ ‫وا ؤ"رة )‬ ‫ا <ر ا‬
‫‪.‬‬ ‫‪ ) ًD <2‬ا ‪%‬ت ا‬

‫)‪(Implementation and coding‬‬ ‫‪ .٣‬ا ر ا ‪ : $ $‬ا ء او ا ر‬


‫د زءا ُ ن ا < م ‪ . ،‬ث ب ك ‪ #‬ر *‬ ‫ر‪ # .‬ا‪#E‬واد ا ر‬
‫ب و ‪ 1‬ا و<‪ 2‬ت‬ ‫) ‪ 9‬ك أ" ء < م ا وا)ذ ‪# ،‬‬ ‫" ل ا‪#E‬واد ا ر‬
‫ت ‪ O‬رات وا "وا ت‬ ‫ن ا‪ %‬ر ‪" ،‬ل ا‬ ‫)‬ ‫‪ #‬ا‪#E‬واد ا ر‬ ‫ا‬
‫‪#/‬ل وا ‪ F‬و دون ا‪ < 9‬ر )‪I‬ن ‪ #‬ت "‪< D‬رح ن ‪ O‬ر ‪ 9‬ص ورد ن‬
‫‪9‬دام ) وال ك دوت ت ‪-:‬‬ ‫–‬ ‫‪#‬‬ ‫)‪ D‬وم <ر ‪F‬‬
‫ﻨﻤﺎذج ﻋﻤﻠﻴﺎت اﻝﺒرﻤﺠﻴﺎت ‪Software Process Models‬‬

‫) ‪ 9‬ل "‪ D‬أن ھ ك ر * آ‪9‬ر وف وم راءة وا د ل ‪ 8‬ا‪#E‬واد ) ذا‬


‫‪ 2‬م ن ‪ O‬ر م )‪ (S‬؟‪ .‬ذ ك و ب ك ا <ر ‪ F‬ن ا ‪ O‬ر ‪#/‬ل و‪.‬‬
‫‪9‬دام ) وال ك دوت ت ‪:‬‬ ‫–‬ ‫ون ل ھذا ا ‪ O‬ر ‪#‬‬
‫ﻨﻤﺎذج ﻋﻤﻠﻴﺎت اﻝﺒرﻤﺠﻴﺎت ‪Software Process Models‬‬

‫)‪(Testing and Integrative‬‬ ‫‪ .٤‬ا ر ا را ‪ : #‬ا‪ 0‬ر و ا‬


‫;‪#‬د ن وا)‬ ‫و ا‪ 9‬ر ا ظ م ا ر‬ ‫‪1‬‬ ‫م ‪ 1‬ا‪#‬ل ا ر‬
‫د ‪ .‬ل ا ظ م ‪ ،‬و ‪ < 9‬اذا ‪ #‬ت ا ‪ #‬ل‬ ‫‪/‬روط و ا وا<‪ 2‬ت ا ‪2‬ق‬
‫ء ) )ر ق طو ر ا ظ م ‪.‬‬ ‫(د < ت و‪ #‬ت أ‪#‬وادھ ن ( ل دة أ‬ ‫ا ر‬
‫ﻨﻤﺎذج ﻋﻤﻠﻴﺎت اﻝﺒرﻤﺠﻴﺎت ‪Software Process Models‬‬
‫‪ :‬ا و‪ $‬ق )‪(Documentation‬‬ ‫ا‬ ‫‪ .٥‬ا ر‬

‫‪ .‬ث م و" ق ا ء ا دا‪9‬‬ ‫ن را‪.‬ل ء ا ظ م ا ر‬ ‫وھ ر‪ .‬ھ‬


‫ر * وذ ك ‪O‬رض ا < وا طو ر‪ ،‬و ‪ 2‬ل دة أن را)ق ا و" ق ‪# 1‬ل‬
‫وا ‪ ، .D‬وأن ‪#‬ون ھ ك )ر ق ‪ 9‬ص م‬ ‫ر‪ .‬ن ا را‪.‬ل ا‬
‫‪#‬ن أن ظ ر أ" ء ء ا ظ م ا ر‬ ‫‪ 1‬ا ‪# /‬ل وا ‪ .‬ول ا‬ ‫ا و" ق‬

‫إ ‪ 8‬ر‪ % .‬ود دھ ( دراً ‪8‬‬ ‫و دون ا و" ق (د <ل طور ا ظ م ا ر‬


‫ا ‪ < 9‬ذه‬ ‫ز د ن ا ‪ 2 #‬ا د وا ز‬ ‫ا ظ م و طو ره‬ ‫<‬
‫ذات‬ ‫ء ظم ر‬ ‫‪ 8‬آ‪9‬ر ا ‪/2‬ل )‬ ‫إ ‪. 8‬دود ‪ S‬ر و( ‪ ،‬أو‬ ‫ا ر‬
‫‪.‬‬ ‫ودة‬
‫ﻨﻤﺎذج ﻋﻤﻠﻴﺎت اﻝﺒرﻤﺠﻴﺎت ‪Software Process Models‬‬
‫و ا طو ر )‪(Maintenance and development‬‬ ‫‪:‬ا‬ ‫د‬ ‫ا‬ ‫‪ .٦‬ا ر‬

‫ء ا ظ م ( دراً ‪8‬‬ ‫إن ھذه ا ر‪ .‬ھ ا ر‪ .‬ا‪E‬طول ) ‪ .‬ة ا ظ م ا ر‬


‫وا‪ #‬ا طورات و ا دات ا ‪.‬د " ‪ ،‬زء ن ھذه ا ر‪# .‬ون ) <‪F .‬‬
‫ظ ر ن ‪"#‬رة ا‪9 %‬دام وإد‪ 9‬ل ا ‪ "#‬ر ن ا ت وا زء‬ ‫ا‬ ‫ا‪9E‬ط ء ا ر‬
‫ا‪9T‬ر ‪#‬ون ) ا طو ر و إ ) إ ‪ #‬ت د دة‪.‬‬
‫ﻨﻤﺎذج ﻋﻤﻠﻴﺎت اﻝﺒرﻤﺠﻴﺎت ‪Software Process Models‬‬

‫اﻴﺠﺎﺒﻴﺎت اﻝﻨﻤوذج )‪(Model Advantages‬‬


‫‪ .١‬ﻨﻤوذج ﺴﻬل ﻝﻠﻔﻬم‬
‫‪ .٢‬ﺴﻬل ﻝﻺدارة‬
‫‪ .٣‬اﻝﻤراﺤل ﺘﻜﺘﻤل وﺘﻌﺎﻝﺞ ﻤرﺤﻠﺔ ﺘﻠو اﻻﺨرى‬
‫‪ .٤‬اﻝﻌﻤل ﻴﻘﺴم اﻝﻰ ﻤﺸﺎرﻴﻊ ﺼﻐﻴرة ﺤﻴث اﻝﻤﺘطﻠﺒﺎت ﺘﺼﺒﺢ ﺴﻬﻠﺔ ﻝﻠﻔﻬم‬
‫‪ .٥‬ﻴﻔﻀل ﻓﻲ اﻝﻤﺸﺎرﻴﻊ ﺤﻴث اﻝﺠودة ﻫﻲ اﻜﺜر اﻫﻤﻴﺔ ﺒﺎﻝﻤﻘﺎرﻨﺔ ﻤﻊ اﻝﺠدول اﻝزﻤﻨﻲ‬
‫واﻝﺘﻜﻠﻔﺔ‬
‫ﻨﻤﺎذج ﻋﻤﻠﻴﺎت اﻝﺒرﻤﺠﻴﺎت ‪Software Process Models‬‬

‫ت ا وذج )‪(Model Disadvantages‬‬ ‫ا‬


‫ﻻ ﻴﻤﻜن ان ﺘﻌود ﺨطوة ‪ ،‬اذا ﻤرﺤﻠﺔ ﻤﺎ ﻴوﺠد ﺒﻬﺎ ﺨطﺄ ﻻ ﻴﻤﻜن اﻝرﺠوع اﻝﻴﻬﺎ‬ ‫‪.١‬‬
‫وﺘﻌدﻴﻠﻬﺎ ﻻ ﻨﻬﺎ ﺘﺼﺒﺢ اﻝﻌﻤﻠﻴﺎت ﻤﻌﻘدة ﻓﻲ اﻝﻤرﺤﻠﺔ‪ ،‬ﺤﺘﻰ ﻝو ﺘﻐﻴﻴر ﺒﺴﻴط ﻓﻲ اي‬
‫ﻤرﺤﻠﺔ ﺴﺎﺒﻘﺔ ﻴﻤﻜن ان ﻴﺴﺒب ﻤﺸﺎﻜل ﻜﺒﻴرة ﻝﻠﻤراﺤل اﻝﻼﺤﻘﺔ ﺤﻴث ان ﺠﻤﻴﻊ اﻝﻤراﺤل‬
‫ﺘﻌﺘﻤد ﻋﻠﻰ ﺒﻌﻀﻬﺎ‪.‬‬
‫ﻨﺴﺒﺔ ﻜﺒﻴرة ﻤن اﻝﻤﺨﺎطر واﺤﺘﻤﺎل ﺤﺼول اﺨطﺎء‬ ‫‪.٢‬‬
‫ﻝﻴس ﻨﻤوذج ﺠﻴد ﻝﻠﻤﺸﺎرﻴﻊ اﻝﻤﻌﻘدة‬ ‫‪.٣‬‬
‫ﻨﻤوذج ﻀﻌﻴف ﻝﻠﻤﺸﺎرﻴﻊ اﻝطوﻴﻠﺔ واﻝﻤﺴﺘﻤرة‬ ‫‪.٤‬‬
‫ﻏﻴر ﻤﻨﺎﺴب ﻝﻠﻤﺸﺎرﻴﻊ ﺤﻴث اﻝﻤﺘطﻠﺒﺎت ﻓﻴﻬﺎ ﻤﺨﺎطر ﻋﺎﻝﻴﺔ ﻤن اﻝﺘﻐﻴﻴر‬ ‫‪.٥‬‬

You might also like