SDK და API-ის ურთიერთობა რა არის?
სოფტუერული განვითარებისას, სისტემის ზომების მუდმივად ზრდისთანავე, კომპლექსური სისტემების უფრო მცირე კომპონენტებად დაყოფა კრიტიკულად მნიშვნელოვანი ხდება, რომელთა შორის პროგრამული ინტერფეისების (interface) დიზაინი განსაკუთრებულად მნიშვნელოვანია. ინტერფეისების დიზაინის პირველი ამოცანაა პროგრამული სისტემის ფუნქციების რაციონალურად განაწილება. კარგად გათვლილი ინტერფეისის დიზაინი ამცირებს სისტემის სხვადასხვა ნაწილებს შორის დამოკიდებულებას, ზრდის მოდულების კოჰეზიას (cohesion), ხოლო ამცირებს მოდულებს შორის კავშირს (coupling), რაც ზრდის სისტემის მხარდაჭერასა და მასშტაბირებადობას.
API, როგორც ინტერფეისის ერთ-ერთი ფორმა, მნიშვნელოვან როლს თამაშობს პროგრამებს შორის ურთიერთქმედებაში, ხოლო SDK და API-ს შორის მჭიდრო კავშირია.
01 API
(1) API-ის კონცეფცია
API, სრული სახელით "აპლიკაციის პროგრამირების ინტერფეისი", არის წინასწარ განსაზღვრული ფუნქციების კომპლექტი, რომელიც იქმნება როგორც "ინტერფეისი" ორ განსხვავებულ რამეზე დასაკავშირებლად. ის უზრუნველყოფს გზას, რომლითაც აპლიკაციებსა და დეველოპერებს შეუძლიათ წვდომა გარკვეული პროგრამული ან აპარატური პროცედურების (routine) შესახებ, სოურს კოდზე წვდომის გარეშე ან მისი შიდა მუშაობის მექანიზმის დეტალების ცოდნის გარეშე.
პრაქტიკულად, API არის სხვის მიერ წინასწარ დაწერილი ფუნქცია, რომელსაც კონკრეტული ფუნქცია აქვს. თქვენ უბრალოდ უნდა გამოიყენოთ მოწოდებული ინტერფეისი, გადასცეთ მითითებული პარამეტრები და ეს ფუნქცია დაგეხმარებათ ამ ფუნქციების რეალიზებაში.

"ინტერფეისი" კონცეფციის მიხედვით, კომპიუტერულ სფეროში, ეს არის ორი განსხვავებული ერთეულის ურთიერთქმედების ადგილი, რომელიც შეიძლება იყოს ორი სრულიად განსხვავებული სისტემა ან ორი პროგრამის ნაწილი. ამიტომ, ინტერფეისის "I" შეიძლება ასე გავიგოთ. ამის საფუძველზე, ადამიანისა და პროგრამის ურთიერთქმედების ადგილი ეწოდება UI (მომხმარებლის ინტერფეისი), რომელიც მოიცავს ყველა ფორმას, რომლითაც ადამიანი შედის, როგორიცაა მაუსი, კლავიატურა, სენსორული ეკრანი და ხმოვანი შეყვანა და ა.შ. პროგრამებს შორის ურთიერთქმედებას კი API-ს უწოდებენ, ადამიანის გარდა ყველა სხვა ურთიერთქმედება API-ის საშუალებით ხორციელდება, ხოლო ურთიერთქმედების არსი არის მონაცემების გადაცემა და ფუნქციის გააქტივება.
(2) API-ის კლასიფიკაცია
API-ები იყოფა სისტემურ დონის API-ებად (როგორიცაა Windows, Linux, Unix და ა.შ.) და არასისტემურ დონის, მომხმარებლის მიერ შექმნილ API-ებად. როგორც ეფექტური კოდის ჩაკეცვის (encapsulation) მოდელი, Microsoft Windows-ის API-ის განვითარების მოდელს იყენებენ ბევრი კომერციული აპლიკაციის განვითარების კომპანიები და აქვეყნებენ გარკვეულ კომერციულ აპლიკაციურ სისტემების API ფუნქციებს, რათა მესამე მხარეებმა შეძლონ ფუნქციების გაფართოება. მაგალითად, Google, Apple და Nokia-ს მიერ განვითარებული API-ები.
API-ები ასევე იყოფა ღია API-ებად და კერძო API-ებად. როგორც სახელიდან ჩანს, ღია API არის ინტერფეისი, რომელიც ხელმისაწვდომია ყველასთვის, რაც საშუალებას აძლევს ნებისმიერს გამოიყენოს და მიიღოს მისი უკან მდგომი მონაცემები. ზოგჯერ კომპანიები API-ს თავის საზოგადოებრივად ხელმისაწვდომ სისტემად აქცევენ, ანუ კომპანია ადგენს საკუთარ სისტემურ ინტერფეისის სტანდარტებს, ხოლო როდესაც სისტემის ინტეგრაცია, პერსონალიზაცია და პროგრამული აპლიკაციების საჭიროება წარმოიშვება, კომპანიის ყველა წევრი შეიძლება გამოიყენოს ამ ინტერფეისის სტანდარტი სოურს კოდის გასააქტივებლად, ამ ინტერფეისის სტანდარტს კი ღია API-ს უწოდებენ. კერძო API არის ინტერფეისი, რომელიც არ არის ხელმისაწვდომი საზოგადოებისთვის.
02 SDK
(1) SDK-ის კონცეფცია
SDK, სრული სახელით "სოფტუერული განვითარების კომპლექტი", არის ინსტრუმენტების კომპლექტი, რომელიც სოფტუერული ინჟინრები იყენებენ კონკრეტული პაკეტის, პროგრამული ჩარჩოს, აპარატური პლატფორმის, ოპერაციული სისტემის და ა.შ. პროგრამული უზრუნველყოფის შესაქმნელად. მარტივად რომ ვთქვათ, SDK არის ინსტრუმენტების კომპლექტი, რომელიც მესამე მხარის მიმწოდებლების მიერ არის მოწოდებული პროგრამული პროდუქტის კონკრეტული ფუნქციის რეალიზებისთვის.
SDK-ს, როგორც წესი, პროფესიონალური კომპანიები აწვდიან პროფესიონალურ მომსახურების კომპლექტს, მაგალითად, Android-ის განვითარების ინსტრუმენტების მიწოდება ან აპარატურაზე დაფუძნებული განვითარების მომსახურება და ა.შ. ასევე არსებობს SDK-ები კონკრეტული პროგრამული ფუნქციისთვის, როგორიცაა push ტექნოლოგია, გამოსახულების ამოცნობის ტექნოლოგია, მობილური გადახდის ტექნოლოგია, ხმოვანი ამოცნობის ანალიზის ტექნოლოგია და ა.შ. ინტერნეტის განვითარების ტენდენციის მიხედვით, ზოგიერთი ფუნქციონალური SDK გადაიქცა პროდუქტად.
დეველოპერებს აღარ აქვთ საჭიროება პროდუქტის ყველა ფუნქციის განვითარება, მათ უბრალოდ უნდა აირჩიონ შესაბამისი და სტაბილური SDK მომსახურება და ძალიან მცირე დრო დასჭირდებათ პროდუქტში კონკრეტული ფუნქციის ინტეგრირებისთვის.
(2) SDK-ისა და API-ის შორის განსხვავება
SDK არის განვითარების ინტეგრაციის ინსტრუმენტის გარემო, ხოლო API არის მონაცემების ინტერფეისი. API მონაცემები SDK-ის გარემოში გამოიყენება.
პრაქტიკულად, SDK-ში მოცემულია API-ის დეფინიცია, API განსაზღვრავს უნარს, ინტერფეისის სპეციფიკაციას, ხოლო SDK-ში შეიძლება იყოს ეს უნარი, ეს სპეციფიკაცია. მაგრამ SDK-ში არა მხოლოდ API და მისი რეალიზაციაა, არამედ ეს არის პროგრამული ინსტრუმენტების კომპლექტი, რომელიც შეიცავს სხვა დამხმარე ფუნქციებსაც.
SDK შეიცავს API-ის გამოყენების შესახებ ინფორმაციას, ამიტომ ხშირად Windows აპლიკაციების დაწერის განვითარების მეთოდს, მხოლოდ API-ის გამოყენებით, "SDK პროგრამირებას" უწოდებენ.





