პროგრამული ინჟინერია კომპიუტერული მეცნიერების წინააღმდეგ
თანამედროვე საზოგადოებაში კომპიუტერი გახდა განუყოფელი და გარდაუვალი ნაწილი. თუმცა, ჩვენ ნაკლებად ვამახვილებთ ყურადღებას ამ ნაცნობი ნივთების შინაგან მუშაობაზე. კომპიუტერული მეცნიერება არის კომპიუტერული სისტემების თეორიული საფუძველი, ხოლო პროგრამული უზრუნველყოფის ინჟინერია არის ამ პრინციპების გამოყენება პრობლემებში პროგრამული გადაწყვეტის შემუშავებისთვის.
კომპიუტერის მეცნიერება
კომპიუტერული მეცნიერება არის კომპიუტერული ტექნიკისა და პროგრამული უზრუნველყოფის ძირითადი მეცნიერება. ის გვაწვდის ინფორმაციას როგორც პროგრამული უზრუნველყოფის, ისე აპარატურის კომპონენტების მექანიზმზე და გამოთვლის თეორიულ საფუძვლებზე კომპიუტერულ სისტემებში დანერგვისა და გამოყენებისთვის.
კომპიუტერული მეცნიერება შედგება მრავალი ძირითადი ქვედისციპლინისგან. გამოთვლითი თეორია, ინფორმაციისა და კოდირების თეორია, ალგორითმები და მონაცემთა სტრუქტურა და პროგრამირების ენების თეორია ეკუთვნის თეორიულ კომპიუტერულ მეცნიერებას. კომპიუტერული მეცნიერების გამოყენებითი ქვედისციპლინებია ხელოვნური ინტელექტი, კომპიუტერული არქიტექტურა და ინჟინერია, კომპიუტერული გრაფიკა და ვიზუალიზაცია, კრიპტოგრაფია და კომპიუტერული უსაფრთხოება, კომპიუტერული ქსელები, კონკურენტული, პარალელური და განაწილებული სისტემები, მონაცემთა ბაზები და ინფორმაციის მოძიება და პროგრამული უზრუნველყოფის ინჟინერია.
ამ ქვედისციპლინათაგან ბევრი დაფუძნებულია მათემატიკურ თეორიებზე. ზოგიერთი აპლიკაციის ასპექტი დაკავშირებულია მექატრონიკასთან და სხვა გამოყენებით მეცნიერებებთან.
ასევე, ეს ქვედისციპლინები ვრცელდება მცირე სასწავლო სფეროებში. მაგალითად, გამოთვლითი თეორია შეიცავს სასწავლო სფეროებს, როგორიცაა ავტომატების თეორია, გამოთვლების თეორია, სირთულის თეორია, კრიპტოგრაფია და კვანტური გამოთვლის თეორია.
პროგრამული ინჟინერია
პროგრამული ინჟინერია შეიძლება ჩაითვალოს გამოყენებითი კომპიუტერული მეცნიერების ერთ-ერთ მთავარ ქვედისციპლინად. ის ორიენტირებულია ეფექტური პროგრამული სისტემების შექმნაზე მკაცრი საინჟინრო მიდგომის გამოყენებით. ის შეიძლება შეფასდეს, როგორც სისტემური, დისციპლინირებული, რაოდენობრივი მიდგომა პროგრამული უზრუნველყოფის დიზაინის, განვითარების, ექსპლუატაციისა და ტექნიკური უზრუნველყოფის და ამ მიდგომების შესწავლისადმი. არ არსებობს პროგრამული უზრუნველყოფის ინჟინერიის ერთი მიღებული განმარტება, მაგრამ მისი მიზნის ინტერპრეტაცია.
ფრიც ბაუერმა განსაზღვრა პროგრამული უზრუნველყოფის ინჟინერია, როგორც "ხმოვანი საინჟინრო პრინციპების დამკვიდრება და გამოყენება, რათა მივიღოთ ეკონომიკურად განვითარებული პროგრამული უზრუნველყოფა, რომელიც საიმედოა და ეფექტურად მუშაობს რეალურ მანქანებზე".
პროგრამული უზრუნველყოფა არ არის ფიზიკური; ეს არის ლოგიკური ერთეულები, რომლებიც მუშაობენ კომპიუტერულ სისტემაში. ამიტომ, ის უნდა იყოს შემუშავებული ოპტიმალური მუშაობისთვის როგორც აპარატურის, ასევე ოპერაციების ასპექტში. ამ მიზნების მისაღწევად, პროგრამული უზრუნველყოფის ინჟინრები იყენებენ განვითარების მოდელებს. ეს მოდელები აერთიანებს პროგრამული უზრუნველყოფის განვითარების ძირითად საფეხურებს, როგორიცაა დიზაინი, კოდირება, პრობლემების აღმოფხვრა და ტექნიკური მოვლა ერთიან ჩარჩოში, რომელიც საშუალებას აძლევს პროგრამული უზრუნველყოფის სისტემურ პროგრესს მისი სასიცოცხლო ციკლის განმავლობაში.
რა განსხვავებაა პროგრამულ ინჟინერიასა და კომპიუტერულ მეცნიერებას შორის?
• კომპიუტერული მეცნიერება ფოკუსირებულია გამოთვლის თეორიულ ასპექტებზე, როგორც პროგრამულ, ისე აპარატურაში.
• პროგრამული უზრუნველყოფის ინჟინერია ფოკუსირებულია პროგრამული უზრუნველყოფის სისტემატურ განვითარებაზე. კოდირება ან პროგრამირება პროგრამული უზრუნველყოფის ინჟინერიის ძირითადი კომპონენტია.
• პროგრამული უზრუნველყოფის ინჟინერია შეიძლება ჩაითვალოს გამოთვლითი თეორიის გამოყენებად (მაგალითად, ალგორითმის ეფექტურობის გაზომვა შესაძლებელია სირთულის გამოყენებით, რაც აღწერილია კომპიუტერული მეცნიერების თეორიაში, მაგრამ მისი გამოყენება პროგრამული უზრუნველყოფის დომენშია. ინჟინერია, სადაც სირთულის მიხედვით შეირჩევა ყველაზე შესაფერისი ალგორითმი).