SE

SE#1.1 პროგრამული პროდუქტების ინჟინერია (Introduction to Software Engineering)

Reference: Sommerville, Software Engineering, 10 ed., Chapter 1

თანამედროვე ეპოქის ძირითად მამოძრავებელ ძალას, ინფორმაციული სიტემები წარმოადგენენ. ქვეყნების ეკონომიკური განვითარება, ტექნოლოგიების მიღწევების შესაძლებლობების შემჩნევაზე, ეფექტურ,  დროულ გამოყენებაზეა დამოკიდებული. ინფორმაციული სიტემების  (IT – Information Technology Systems) განვითარებას, მათი ფუნქციონირების მართვის  საშუალება განსაზღვრავს, რომელიც იქმნება ადამიანის მიერ და ეწოდება ინფორმაციული სისტემის მართვის პროგრამული უზრუნველყოფა (S- Software).

Software (S) – პროგრამული უზრუნველყოფა

პროგრამული უზრუნველყოფა ციფრული სამყაროს ფართო დიაპაზონში გამოიყენება: ბიზნესი, ინჟინერია, მეცნიერება, სამხედრო მრეწველობა.  ისინი მნიშვნელობის თვალსაზრისით, შეიძლება იყოს მარტივი თუ კომპლექსური, პერსონალური თუ საზოგადო, კორპორატიული თუ პერსონალური, სივრცეში გავრცობილი თუ ავტომატური, რეალურ დროში ოპერირებადი.

პროგრამული უზრუნველყოფა ასე შეგვიძლია განვმარტოთ:

  1. წარმოადგენს კომპიუტერული კოდების ერთობლიობას, რომელიც ასრულებენ წინასწარ დადგენილ  ფუნქციებს, განსაზღვრულია სისტემაში  შემავალი და გამომავალი მონაცემების წარმოდგენის  სახე და კრიტერიუმები;
  2. პროგრამული კიდების საშუალებით წარმოებს, სისტემაში არსებულ მონაცემებზე მანიპულაციები (შექმნა, შეცვლა, წაშლა …);
  3. გააჩნია დოკუმენტაცია რომელიც აღწერს, სისტემაში არსებული ბიზნეს პროცესებს, სისტემის პროდუქტის არქიტექურას და მისი მოხმარების წესებს.
  1. Software consists of computer programs that when executed provide desired function and performance.
  2. It includes data structures that enable the programs to adequately manipulate information.
  3. It has a documentation that describes the operation and use of the programs.

ზოგადად პროგრამული უზრუნველყოფა 2 სახისაა:

  1. Generic software – სტანდარტული პროგრამული უზრუნველყოფა – მწარმოებლისგან შექმნილია ზოგადი, მის მიერ შემუშავებული მიზნებისთვის. მომხმარებლები პროდუქტით სარგებლობენ არსებული შესაძლებლობების ფარგლებში.  მომხმარებლის მიერ ახალი საჭირობის დადგენის შემთხვევაში, მისი მოდიფიცრება ძალიან რთულია და ზოგ შემთხვევაში შეუძლებელი.
  2.  Customized software –  არასტანდარტული პროგრამული უზრუნველყოფა – მწარმოებლისგან შექმნილია კონკრეტული მომხმარებლის ბიზნეს ამოცანის დასაკმაყოფილებლად.  მომხმარებლის მიერ ახალი საჭირობის დადდგენის შემთხვევაში,   მარტივად შესაძლებელია მისი მოდიფიცრება.

software applications can be indicated by the following software areas: system software, real-time software, business software, engineering and scientific software, embedded software, personal computer software, web-based software and artificial intelligence software. #1

ინფორაციულ სისტემების ფუნქციონირების დროს, პროგრამული უზრუნველყოფის როლის ზრდასთან ერთად, იზრდება მათი შექმნის პროცესის მიმართ  მოთხოვნები. ამ საკითხის ეფექტურად წარმართვას ემსახურება, პროგრამული უზრუნველყოფის შექმნის სისტემატიზირებული პროცესი –   პროგრამული უზრუნველყოფის ინჟინერია (SE – Software Engineering),  რომელიც ცალსახად არ ნიშნავს პროგრამული უზრუნველყოფის კოდების შექმნას.

პროგრამული უზრუნველყოფის ინჟინერია (SE – Software Engineering)

Software Enginering –   პროგრამული უზრუნველყოფის ინჟინერია, არის დისციპლინა რომელიც კონცენტრირებულია პროგრამული უზრუნველყოფის წარმოების პროცესებზე, ინფორმაციული სისტემის ფუნქციონირების მოთხოვნების ადრეულ ეტაპზე დადგენიდან, პროგრამული უზრუნველყოფის დანერგვის შემდგომ მომსახურეობამდე.

დისციპლინა, ინჟინერიის წესების თანახმად, შეიმუშავებს და იყენებს კონრეტულ, სტანდარტიზირებულ მეთოდებს და ინსტრუმენტებს, პროგრამული უზრუნველყოფის  შექმნის პროცესის გამარტივების, პროდუქტის შექმნის, ოპერირების თანმდევი ხარჯების, შესრულების დროის შემცირების და საბოლოო პროდუქტის ხარისხის (Software Quality Management) უზრუნველყოფის მიზნით.

თანამედროვე გამოწვევებზე პროაქტიული რეაგირებისთვის, აღნიშნულ პროცესში მნიშვნელოვანი ადგილი ეთმობა რისკების მართვის (Risk Management) და  ინფორმაციული უსაფრთხოების (Information Security) საკითხებს.

პრაქტიკა გვიჩვენებს, რომ, საინფერმაციო სისტემების  ხარჯების მნიშვნელოვანი ნაწილი მოდის, შექმნილი პროდუქტების დანერგვის შემდგომ ცვლილებებზე.  იმ პროექტებში, რომელშიც, პროგრამული უზრუნველყოფის ინჟინერიიის  გამოყენება არასრულყოფილად მოხდა მათი ჩატარება გარდაუვალი ხდება და თითქმის არასდროს არ სრულდება.

პროგრამული უზრუნველყოფის ინჟინერიიის  გამოყენება, გრძელვადიან პესპექტივაში, საშუალებას იძლევა მიღწეული იქნეს, პროგრამული პროდუქტის სტაბილური ფუნქციონირება და ოპტიმალური განვითარება.

პროგრამული უზრუნველყოფის ინჟინერიიის მიხედვით, პროგრამული უზრუნველყოფა არ  წარმოადგენს ცალკე მდგომ კოდს, არამედ ის არის:

  1. წინასწარ დადგენილი მიზნების მისაღწევად, პროგრამული კოდების ინტეგრირებული  ერთობლიობა;
  2. სისტემის დოკუმენტაცია რომელიც აღწერს პროგრამული უზრუნველყოფის არქიტექტურას;
  3. მომხმარებლის დოკუმენტაცია, რომელიც აღწერს როგორ ვისარგებლოთ სისტემით;
  4. პროგრამული უზრუნველყოფის განახლების ინსტრუმენტები და მათი აღწერა.

პროგრამული უზრუნველყოფის სისტემების შექმნის პროცესი

SE მეთოდოლოგიით შექმნილი პროგრამული უზრუნველყოფის შექმნის პროცესები და მათი შესრულების თანმიმდევრობა შესაძლებელია განსხვავებული იყოს, მაგრამ ძირითადად შეიცავენ 4 საერთო აქტივობას:

  1. Software specification- პროგრამული უზრუნველყოფის  სპეციფიკაცია – შემკვეთის და შემსრულებლის ერთობლივი მუშაობით განისაზღვრება, სისტემის ფუნქციონალური მახასიათებლები და შესრულების საზღვრები (Software Requirements);
  2. Software development – პროგრამული უზრუნველყოფის დიზაინის და  პროგრამული კოდის შექმნა;
  3. Software validation- შექმნილი პროგრამული უზრუნველყოფის შედარება, შეთანხმებულ სპეციფიკაციებთან;
  4. Software evolution – შექმნილი პროგრამული უზრუნველყოფის შესაბამისობაში მოყვანა,  დანერგვის შემდგომ გამოვლენილ, შემკვეთის ახალ ან მოდიფიცირებულ მოთხოვნებთან.(Software Evolution).

Any software process includes four types of activities:

  • Software specification, where customers and engineers define the software that is to be produced and the constraints on its operation.
  • Software development, where the software is designed and programmed.
  • Software validation, where the software is checked to ensure that it is what the customer requires.
  • Software evolution, where the software is modified to reflect changing customer and market requirements. #1

პროგრამული უზრუნველყოფის შექმნის  მეთოდები –  Software Engineering  Approaches

პროგრამული უზრუნველყოფაის შექმნის პროცესში, პროგნოზირებადი შედეგების მისაღებად, გამოიყენება სამი, ერთი შეხედვით პრინციპულად განსხვავებული და მნიშვნელობით თანაბარუფლებიანი მეთოდოლოგია: The waterfall approach, Iterative development, Component-based software engineering რომლებსაც განვიხილავთ სპეციალურად მიძღვნილ  სტატიაში (Waterfall and Agile Software Development)

Most software process models are based on one of the next general models of software development:

  1. The waterfall approach. The waterfall model is a sequential design process in which progress is seen as flowing steadily downwards through the phases of software development such as requirements specification, software analysis and design, implementation, testing, etc. Development only goes on to the following phase when the preceding phase is finished, reviewed and verified.
  2. Iterative development. The basic idea of this method is to develop a system iteratively through repeated cycles in smaller portions at a time. At each iteration, design modifications are made and new functional capabilities are added. This approach interleaves the activities of the specification, development, and validation. An initial system is rapidly developed from very abstract specifications. The goal for this initial implementation is to create a product to which the user can react. The initial system is then refined with customer input to produce a system that satisfies the customer’s needs.
  3. Component-based software engineering. It is a reuse-based approach of software development. This technique assumes that parts of the system already exist. The system development process focuses on integrating these parts into a system. #

3_software_development

აღწერილი ინსტრუმენტებიდან, კონკრეტული მეთოდოლოგიის შერჩევა ან მათი კომბინირება, დამოკიდებულია  პროექტის თავისებურებებზე,  მის განმახორციელებელი ორგანიზაციის მატერიალურ და არამატერიალურ რესურსების შესაძლებლობებზე.

პროგრამული უზრუნველყოფის (S -Software) შექმნის პროექტების  თავისებურებები

რეალურ სამყაროში Software-ს  ქმნიან როგორც კერძო ინდივიდუალები ასევე მსხვილი კომპანიები.  თუ წარმოვიდგენთ ასეთი სუბიექტების სიმრავლეს გლობალურად, ცხადი გახდება რამდენად განსხვავებული შეიძლება იყოს მათი პროგრამული კოდი და მისი შექმნის ინსტრუმენტები. აღნიშნული განსხვავება შესაძლებელია მისაღები იყოს მცირე კომპანიებისთვის, მაგრამ აბსოლიტურად მაღალი რისკების წყაროა კორპორატიული და სახელმწიფო პროექტებისთვის, რადგან პროგრამული უზრუნველყოფის ინჟინერიიის მეთოდოლოგიის გარეშე შექმნილი პროგრამული უზრუნველყოფა, მისი შექმნის დროს არსტანდარტული პროცესების (პროექტის ორგანიზება, კოდის სტრუქტურა …) გამოყენების და პროდუქტის დოკუმენტაციის არარსებობის გამო, დიდ ორგანიზაციული და ფინანსური ხარჯებია საჭირო, სიტემის შემდეგი მომსახურეობის და განვითარებისთვის,

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

თავის მხრივ, დიდი, კომპლექსური პროგრამული პროდუქტების შექმნის პროექტები ხასიათდებიან შემდეგნაირად:

  1. საჭიროებს დიდ მატერიალურ, ფინანსურ და ადამიანურ რესურსებს;
  2. შესასრულებელი ამოცანების აქვთ მაღალი ფასი;
  3. აქვთ შესრულების  დიდი პერიოდი;
  4. პროექტის მიმდინარეობის ხანგრძლივი პერიოდი, ხშირად იწვევს სისტემის დამკვეთის და მიმხმარებლების მოთხოვნების ცვალებებობას, ოპერირების გარემოს სწრაფი ცვლილების გამო;
  5. პროგრამული უზრუნველყოფის კომპლექსურობა იწვევს, პროექტის წარუმატებლობის, შესრულებული სამუშაოს დამკვეთის მიერ მიღების, საბოლოო პროდუქტის წარმადობის, სისტემის დანერგვის შემდეგი მომსახურეობის მარალი რისკებს.

აღნიშნული პრობლემების გადასაწყვეტად გამოიყენება პროგრამული უზრუნველყოფის ინჟინერიის მეთოდები. მარტივ, არაკორპორატიულ სისტემებში, რომელშიც სისტემის ავტორი და მომხმარებელი ერთი და იგივე პიროვნებაა, აღნიშნული საკითხები ნაკლებად აქტუალურია, მაგრამ  რადიკალურად იზრდება მის გავლენა კომპანიის განვითარების კვალდაკვალ და ხშირ შემთხვევაში დაუძლეველი წინააღმდეგობაა, რომელიც აფერხებს კომპანიის განვითარებას.

hardwaresoftware

სისტემის შექმნის დროს, უნდა  განვიხილოთ სისტემის როგორც შექმნის ასევე მისი მომსახურეობის და განვითარების ხარჯები.

ამ კონტექსტში უნდა განვიხილოთ  რეალურ დროში მოქმედი ციფრული  სიტემები (Real-Time Software systems) –  რომელთა დროის ზუსტად დადგენილ საზღვრებში,  ფუნქციონირების შედეგებზე დამოკიდებულია, მთლიანად სისტემის ფუნქციონირება. სისტემა შეიძლება სწორად ფუნქციონირებდეს, მაგრამ სხვადასხვა მიზეზით, რეაგირების დროის პარამეტრების დარღვევამ (დაგვიანებული რეაქცია, მონაცემების დადგენილზე ნელა ან სწრაფად დამუშავება და ა.შ …)  შესაძლებელია გამოიწვიოს მთლიანი სისტემის კატასტროფა.

SЕ -ს მეთოდოლოგიის დაცვის მნიშვნელობა შეიძლება წარმოვიდგინოთ,  თუ განვიხილავთ მატარებლების ან ავიახომალდების მართვის სისტემის შექმნის ამოცანას. ამ შემთხვევებში, შეცდომების  დაშვებით გამოწვეული საფრთხის რისკად გარდაქმნის ალბათობა მაღალია და მოსალოდნელი შედეგებიც კატასტროფული.

რომელ მიდგომას გამოვიყენებთ, ცალკეული დამოუკიდებელ სპეციალისტების მიერ შექმნილს თუ SЕ – ს პრინციპების დაცვით დადეგმილ და შესრულებულ პროდუქტს ? ცხადია ამ უკანასკნელში შეცდომების დაშვების რისკი მაინც არსებობს მაგრამ, ტექნიკური დავალების ანალიზის ჩატარების შედეგად (Requirement Enginering) მისი მოხდენის ალბათობა მინიმიზირებულია. პროცესის დროს, წინასწარ ხდება შესაძლო სცენარების (Use Case) დამუშავება, მიმდინარეობს სისტემის ექსპლოატაციის მონიტორინგი და მისი შედეგების მიხედვით გამოვლენილი ხარვეზების შესწორება და ახალი შესაძლებლობების რეალიზაციის დაგეგმვა.

პროგრამული უზრუნველყოფის წარმატების დადგენა –  Successful software systems

პროგრამული უზრუნველყოფის შექმნის პროექტების შეფასებისთვის გამოიყენება შემდეგი კრიტერიუმები:

  1. შექმნილია დადგენილ დროში;
  2. შექმნილია გამოყოფილ ბიუჯეტში;
  3. შეესაბამება შემკვეთის და შემსრულებლის მიერ წინასწარ შეთანხმებულ სპეციფიკაციებს.

პრაქტიკაში, ამ კრიტერიუმების მიხედვით შემდეგი სტატისტიკაა:

softwaresucessrate

პროგრამული უზრუნველყოფის შექმნის წარმატება დამოკიდებულია, მისი შექმნის და დანერგვის ოპერირების გარემოზე, შემსრულებელი ჯგუფის ორგანიზაცულ კულტურაზე, ადამიანურ თუ კონკრეტული პროექტის უნიალურ ფაქტორებზე.

ამ პროცესში ასევე მნიშვნელოვანია,  პროექტში ჩართული მხარეების გამოცდილება, რადგან უკვე არსებულს გამოცდილების გათვალისწინებით შესაძლებელია აცილებული იქნეს, წინა დანერგვებში გამოვლენილი ხარვეზები, გამოყენებული იქნეს უკვე შექმნილი ინსტრუმენტები, პროგრამული მოდულები, დოკუმენტაცია და გამოცდილი (წრმატებაში და წარუმატებლობაში) ადამიანი რესურსები.

Source: IBM  – (For source data read – Making change work#1
Type of survey: Survey of 1,500 change management executives
IBM survey in the success/failure rates of “change” projects finds;

  • Only 40% of projects met schedule, budget and quality goals;
  • Best organizations are 10 times more successful than worst organizations;
  • Biggest barriers to success listed as people factors: Changing mindsets and attitudes – 58%. Corporate culture – 49%.  Lack of senior management support – 32%;
  • Underestimation of complexity listed as a factor in 35% of projects.

ზოგადად შეგვიძლი ვთქვათ შემდეგი: თუ ადგილი აქვს ერთხელ უკვე დანერგილი სისტემის ახალ გარემოში შემუშავებას და დანერგვას, პროექტის წარმატების ალბათობა მაღალია.  მეორე მხრივ დაბალია, ახალ ინოვაციური პროდუქტების შექმნის ალბათობა, მასზე მომუშავე სამუშაო ჯგუფის, მცირე  ტექნოლოგიური თუ არატექნოლოგიური გამოცდილების გამო.

პროგრამული უზრუნველყოფის შეფასება

პროგრამული უზრუნველყოფის ინჟინერიის მიხედვით,  პროგრამული პროდუქტების შეფასება ხდება შემდეგი კრიტერიუმებით:

  • ადაპტირებადობა – (Maintainability) – შესაძლებელი უნდა იყოს პროგრამული უზრუნველყოფის მისი მომხმარებლის  ახალ საჭიროებებთან შესაბამისობაში მოყვანა;
  • მდგრადობა და უსაფრთხოება – (Dependability and security) – პროგრამული უზრუნველყოფის  ცალკეული მოდულის დაზიანებამ ან შეჩერებამ  არ უნდა გამოიწვიოს, სისტემის სხვა მოდულების ან გარეშე სისტემების ფუნქციონირების შეფერხება ან უსაფრთხოების შემცირება;
  • ეფექტურობა – (Efficiency) – პროგრამული უზრუნველყოფა ოპტიმალურად უნდა იყენებდეს ინფორმაციულ რესურსებს, არ ახდენდეს მათ უმიზნო ხარჯვას;
  • შესაბამისობა – (Acceptability) – პროგრამული უზრუნველყოფა შესაბამისი უნდა იყოს სისტემის დიზაინში (System Design) გათვალისწინებულ მომხმარებლის მოთხოვნებთან (არც მეტი და არც ნაკლები #).

Essential attributes of good software (#1)

  • Maintainability – Software should be written in such a way so that it can evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable requirement of a changing business environment.
  • Dependability and security – Software dependability includes a range of characteristics including reliability, security, and safety. Dependable software should not cause physical or economic damage in the event of system failure. Malicious users should not be able to access or damage the system.
  • Efficiency – Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency, therefore, includes responsiveness, processing time, memory utilization, etc.
  • Acceptability – Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable and compatible with other systems that they use.

პროგრამული ინჟინერიის ეთიკის კოდექსი –  Software engineering ethics

მნიშვნელოვანია ვიცოდეთ, რომ პროგრამული ინჟინერიის ეთიკის კოდექსის თანახმად, პროცესში ჩართული მხარეები უნდა აღიარებდნენ შემდეგ წესებს:

  • IT რესურსების მიზნობრივად გამოყენება – (Computer misuse) არ გამოიყენონ სხვა მიზნებისთვის, პროცესისთვის გამოყოფილი საინფორმაციო რესურსები.
  • ინტელექტუალური საკუთრება –  (Intellectual property rights) იუხედავად ოფიციალურად არსებული რეგულაცის არსებობისა, დაიცვან ინტელექტუალური საკუთრების დაცვის ზოგადი წესები;
  • კომპეტენცია – (Competence) – ჩართულმა მხარეებმა ცხადად უნდა აღიარონ საკუთარი კომპეტენცია, შესასრულებელ სამუშაოსთან მიმართებაში;
  • კონფიდენციალუობა – (Confidentiality) – მიუხედავად ოფიციალური შეთანხმების არსებობისა, დაიცვან მოპოვებული ინფორმაციის კონფიდენციალობა;

Some issues of professional responsibility:

  • Confidentiality – You should normally respect the confidentiality of your employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.
  • Competence – You should not misrepresent your level of competence. You should not knowingly accept work that is outside your competence.
  • Intellectual property rights – You should be aware of local laws governing the use of intellectual property such as patents and copyright. You should be careful to ensure that the intellectual property of employers and clients is protected.
  • Computer misuse – You should not use your technical skills to misuse other people’s computers. Computer misuse ranges from relatively trivial (game playing on an employer’s machine, say) to extremely serious (dissemination of viruses or other malware). #1

Software Engineering Code of Ethics and Professional Practice

პროგრამული უზრუნველყოფის  გლობალური ბაზრის ტენდეციები:

software-revenue-2011-2019

საკითხავი მასალა:

  1. Software Engineering by Ian Sommerville – #1, #2, #3; #4
  2. Software Engineering by Prof.N.L. Sarda – #1#2#3;
  3. Introduction to the SE  by Dr. Stan Kurkovsky and Zsolt Dr. Ulbert – #1,  #2;
  4. Software Product Management Specialization (University of ALBERTA – Via www.Coursera.org) – #1, #2;
  5. Hardware vs. Software – #1;
  6. Use Case Examples – #1, #2;
  7. Real-Time Software systems – #1;
  8. Scope Creep and Gold Plating in Project Management #1

კითხვები:

  1. რას წარმოადგენს ინფორმაციული სისტემის მართვის პროგრამული უზრუნველყოფა (Software)?
  2. Generic software – სტანდარტული პროგრამული უზრუნველყოფის შემთხვევაში, რატომ არის მომხმარებლის მიერ ახალი საჭირობის დადგენის შემთხვევაში, მისი მოდიფიცრება ძალიან რთულია და ზოგ შემთხვევასი შეუძლებელი ? მოიყვანეთ მაგალითი.
  3. არასტანდარტული პროგრამული უზრუნველყოფის შემთხვევაში, მომხმარებლის მიერ ახალი საჭირობის დადგენის შემთხვევაში,   მარტივად შესაძლებელია მისი მოდიფიცრება? ოიყვანეთ მაგალითი.
  4. რას წარმოადგენს  პროგრამული პროდუქტების შექმნის ინჟინერია ?
  5. რით განსხვავდება  პროგრამული პროდუქტების შექმნის ინჟინერია, პროგრამული უზრუნველყოფისგან ?
  6. რატომ მოითხოვს პროგრამული უზრუნველყოფის ინჟინერიიის მეთოდოლოგიის გარეშე შექმნილი პროგრამული უზრუნველყოფა, სისტემის შემდეგი მომსახურეობის და განვითარებისთვისთვის, დიდ ორგანიზაციულ და ფინანსურ ხარჯებს? მოიყვანეთ მაგალითი.
  7. რატომ იწვევს პროექტის მიმდინარეობის ხანგრძლივი პერიოდი, სისტემის დამკვეთის და მიმხმარებლების მოთხოვნების ცვალებებს ? მოიყვანეთ მაგალითი.
  8. რა საფრთხეები შეიძლება გამოიწვიოს, პროგრამული უზრუნველყოფის კომპლექსურობამ , მისი შექმნის და დანერგვის შემდგომი მომსახურეობის თვალსაზრისით?
  9. რატომ არის მნიშვნელოვანი პროგრამული ინჯინერიის მეთოდების დანერგვა,  კომპანიის  მდგრადი განვითარების ხელშეწყობისთვის ?  მოიყვანეთ მაგალითი.
  10. რით განსხვავდება ერთმანეთისგან ახალი ინოვაციური პროექტის განხორციელება და უკვე  განხორციელებული პროექტის ხელმეორედ დანერგვა ? მოიყვანეთ მაგალითები.
Advertisements

2 thoughts on “SE#1.1 პროგრამული პროდუქტების ინჟინერია (Introduction to Software Engineering)

  1. Pingback: SE#10.1 System Dependability | IN@TIMES

  2. Pingback: SE#1.1 პროგრამული პროდუქტების ინჟინერია (Introduction to Software Engineering) | 7Smart Hubs

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s