Кібернетика, інформатика та програмна інженерія: аспекти розвитку

Подається аналіз розвитку базових дисциплін Computer Science – кібернетика, інформатика, комп’юте-рна системна та програмна інженерія. Дано визначення цих дисциплін, їхній зміст і склад. Проаналізо-вано розвиток кожної з дисциплін, зв’язки між ними і вплив кожної на іншу. Досліджено міжнародну...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Datum:2010
1. Verfasser: Лавріщева, К.М.
Sprache:Ukrainian
Veröffentlicht: Інститут програмних систем НАН України 2010
Schlagworte:
Online Zugang:http://dspace.nbuv.gov.ua/handle/123456789/6592
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Назва журналу:Digital Library of Periodicals of National Academy of Sciences of Ukraine
Zitieren:Кібернетика, інформатика та програмна інженерія: аспекти розвитку / К.М. Лавріщева // Пробл. програмув. — 2010. — № 1. — С. 3-14. — Бібліогр.: 22 назв. — укр.

Institution

Digital Library of Periodicals of National Academy of Sciences of Ukraine
id irk-123456789-6592
record_format dspace
spelling irk-123456789-65922010-03-12T12:00:48Z Кібернетика, інформатика та програмна інженерія: аспекти розвитку Лавріщева, К.М. Теоретичні та методологічні основи програмування Подається аналіз розвитку базових дисциплін Computer Science – кібернетика, інформатика, комп’юте-рна системна та програмна інженерія. Дано визначення цих дисциплін, їхній зміст і склад. Проаналізо-вано розвиток кожної з дисциплін, зв’язки між ними і вплив кожної на іншу. Досліджено міжнародну програму навчання цим дисциплінам, яку рекомендовано для застосування у вищих навчальних закладах з інформатикою. В ній програмна інженерія займає центральне місто, вона збагачує усі дисципліни новими засобами і сама удосконалюється у напряму індустріалізації програмних і прикладних систем різного призначення. Представлен анализ развития базовых дисциплин Computer Science – кибернетики, информатики, системной и программной инженерии и др. Дано определение этих дисциплин, их содержание и состав. Проанализировано развитие каждой из дисциплин, связи между ними и влияние друг на друга. Исследована международная программа обучения этим дисциплинам, рекомендованная для использования в высших учебных заведениях. В ней программная инженерия занимает центральный место, она обогащает их новыми средствами и сама совершенствуется в направлении индустриализации прикладных и программных систем разного назначения. An analysis of development for Computer Science’s basic disciplines such as cybernetics, informatics, system and software engineering and so on is presented. These disciplines’ definition, their essence and content are given. Each discipline development, their links and mutual influence are analyzed. An international program for teaching in these disciplines, recommended for usage in higher school, is explored. Its core is Software Engineering that enriches these disciplines with the new tools and improves itself being aimed at industrialization of various software application. 2010 Кібернетика, інформатика та програмна інженерія: аспекти розвитку / К.М. Лавріщева // Пробл. програмув. — 2010. — № 1. — С. 3-14. — Бібліогр.: 22 назв. — укр. 1727-4907 http://dspace.nbuv.gov.ua/handle/123456789/6592 681.3 uk Інститут програмних систем НАН України
institution Digital Library of Periodicals of National Academy of Sciences of Ukraine
collection DSpace DC
language Ukrainian
topic Теоретичні та методологічні основи програмування
Теоретичні та методологічні основи програмування
spellingShingle Теоретичні та методологічні основи програмування
Теоретичні та методологічні основи програмування
Лавріщева, К.М.
Кібернетика, інформатика та програмна інженерія: аспекти розвитку
description Подається аналіз розвитку базових дисциплін Computer Science – кібернетика, інформатика, комп’юте-рна системна та програмна інженерія. Дано визначення цих дисциплін, їхній зміст і склад. Проаналізо-вано розвиток кожної з дисциплін, зв’язки між ними і вплив кожної на іншу. Досліджено міжнародну програму навчання цим дисциплінам, яку рекомендовано для застосування у вищих навчальних закладах з інформатикою. В ній програмна інженерія займає центральне місто, вона збагачує усі дисципліни новими засобами і сама удосконалюється у напряму індустріалізації програмних і прикладних систем різного призначення.
author Лавріщева, К.М.
author_facet Лавріщева, К.М.
author_sort Лавріщева, К.М.
title Кібернетика, інформатика та програмна інженерія: аспекти розвитку
title_short Кібернетика, інформатика та програмна інженерія: аспекти розвитку
title_full Кібернетика, інформатика та програмна інженерія: аспекти розвитку
title_fullStr Кібернетика, інформатика та програмна інженерія: аспекти розвитку
title_full_unstemmed Кібернетика, інформатика та програмна інженерія: аспекти розвитку
title_sort кібернетика, інформатика та програмна інженерія: аспекти розвитку
publisher Інститут програмних систем НАН України
publishDate 2010
topic_facet Теоретичні та методологічні основи програмування
url http://dspace.nbuv.gov.ua/handle/123456789/6592
citation_txt Кібернетика, інформатика та програмна інженерія: аспекти розвитку / К.М. Лавріщева // Пробл. програмув. — 2010. — № 1. — С. 3-14. — Бібліогр.: 22 назв. — укр.
work_keys_str_mv AT lavríŝevakm kíbernetikaínformatikataprogramnaínženeríâaspektirozvitku
first_indexed 2025-07-02T09:28:51Z
last_indexed 2025-07-02T09:28:51Z
_version_ 1836526895611510784
fulltext Теоретичні та методологічні основи програмування 3 УДК 681.3 К.М. Лавріщева КІБЕРНЕТИКА, ІНФОРМАТИКА ТА ПРОГРАМНА ІНЖЕНЕРІЯ: АСПЕКТИ РОЗВИТКУ Подається аналіз розвитку базових дисциплін Computer Science – кібернетика, інформатика, комп’юте- рна системна та програмна інженерія. Дано визначення цих дисциплін, їхній зміст і склад. Проаналізо- вано розвиток кожної з дисциплін, зв’язки між ними і вплив кожної на іншу. Досліджено міжнародну програму навчання цим дисциплінам, яку рекомендовано для застосування у вищих навчальних закла- дах з інформатикою. В ній програмна інженерія займає центральне місто, вона збагачує усі дисципліни новими засобами і сама удосконалюється у напряму індустріалізації програмних і прикладних систем різного призначення. Вступ Довгий час домінувала наука кібер- нетика, як основне джерело комп’ютерних систем, теорія побудови обчислюваних машин і програмного забезпечення для них. Закордоном сформувалася нова дис- ципліна – Computer Science, до складу якої увійшли такі інженерні дисципліни: комп’ютерна інженерія, системна інжене- рія, програмна інженерія. Головне їх при- значення – дати теоретичний і прикладний апарат для індустріального створення ве- ликих і малих комп’ютерів та відповідного програмного забезпечення. У зв’язку з по- ширеним використанням цих машин у ба- гатьох сферах життя і подальшим розвит- ком технологій обробки різноманітної ін- формації великого обсягу засобами комп’ютерів з’явилися нові науково- технічні напрями – інформаційні техноло- гії і системи. Аналізу всіх названих дисци- плін, їхньому загально встановленому і специфічному тлумаченню різними авто- рами, а також опису їхнього сучасного стану і аспектам розвитку присвячено цю роботу. Кібернетика Термін кібернетика (від лат. – мис- тецтво керувати) вперше пролунав у А.М. Ампера (1834 р.) і визначав науку про керування людським суспільством. Потім цей термін ввів Н. Вінер (1948 р.), визначив кібернетику, як науку про керу- вання і зв’язки у тваринах і машинах, пі- зніше і в суспільстві (1954 р.) [1]. У його працях були подані міркування щодо ре- зультатів проведених досліджень з випад- кових процесів і фізіології нервової систе- ми. Кібернетика – це наука про керу- вання. Базована на загальних законах отримання, збереження, передачі і пере- творення інформації у складних (техніч- них, біологічних, соціальних, адміністра- тивних, живих істотах тощо) системах управління [2]. Величезний вклад у стано- влення і розвиток кібернетики у СРСР на- лежить академіку В.М. Глушкову [3–6], який створив теорію цифрових автоматів, дискретних перетворювачів, загальну тео- рію обчислювальних машин і систем з ор- ганізаційним керуванням ними і з застосу- ванням комп’ютерів, програмних систем. Уперше він запропонував концепцію кон- веєрного виробництва різних систем із го- тових технічних і програмних ресурсів [7]. Під керівництвом В.М. Глушкова колективом Інституту кібернетики (з 1962 р.) побудовані нові оригінальні за структурою обчислювальні машини: “Промінь”, “Урал”, “Київ”, “Дніпро”, “Дніпро-2”, “Нева” та супер ЕОМ ЄС 2701 і ЄС 1766 (макроконвеєрні системи). Ідея структурної реалізації мови високого рівня “Аналітик” втілено в серію машин “Мир” © К.М. Лавріщева, 2010 ISSN 1727-4907. Проблеми програмування. 2010. № 1 Теоретичні та методологічні основи програмування 4 (1971–1985 рр.) [8], що виконували мате- матичні й аналітичні обчислювання та пе- ретворення даних, були прообразом пер- сональних комп’ютерів (1981 р.). Головна задача кібернетики – під- вищення ефективності діяльності людини у всіх випадках, коли здійснюється управ- ління, автоматизація якого видозмінює їх діяльність у напряму кращого керування на кібернетичній і комп’ютерній основі. Прикладом реалізації ідеї кібернетичного управління є проект державної системи центрів обчислювання СРСР (так званого ОГАС), згідно з яким обчислювальні центри зможуть об’єднатися в інформа- ційні мережі, як базис державних і респуб- ліканських систем планування, аудиту і керування багатогалузевим господарством усього СРСР. Усі центри мають обмінюва- тися між собою інформацією про стан окремих напрямів економіки держави, яку застосовують для прийняття рішень про потужності тієї чи іншої галузі, використа- ні ними ресурси, а також про продуктив- ність, собівартість виготовленої продукції та її якість. Першими системами стали АСУ, розроблені на Ленінградському оптико-механічному об’єднанні та Львівському телевізійному заводі, які при- вели до значного підвищення продуктив- ності і ритмічності циклів виробництва відповідної продукції у декілька разів. У рамках цієї науки отримані теоре- тичні і прикладні результати, визначені загальні закономірності керування обчис- лювальними машинами і системами, які базовані на методологіях аналізу й синте- зу, теорії програмування і обчислень, а та- кож на методах штучного інтелекту (деду- кції, прийняття рішень тощо), як інструме- нтів розпізнавання машиною різних об'єк- тів виробництва. Між різними напрямами кібернетики склалися зв'язки, як це існує між математичними і фізичними науками. Наука кібернетики ініціювала ство- рення нових напрямів – комп’ютерна нау- ка, інформатика, інженерія комп'ютерних, програмних та інформаційних систем. Комп’ютерна наука Computer science (CS – комп’ютерна наука) – наука про комп'юте- ри різного призначення (загального, спеці- ального, проблемного та іншого), теорію їх побудови, керування комп'ютерними системами обробки інформації, методи проектування Hardware та Software цих систем. CS поєднує наукові дисципліни, а саме, теорію дискретних систем, алгорит- мів, автоматів, моделювання, керування, математику, логіку тощо. У ній в порів- нянні з кібернетикою, важливе місце за- ймають: нова теорія мікросхем різних устаткувань в межах Electronic Engineering – EE; теорія комп’ютерної інженерії (Computer Engineering – CE) та програмної інженерії (Software Engineering – SE). З урахуванням цих теорій і практичних за- стосувань комп'ютерних систем з’явилися інформаційні системи (ІС) обробки вели- ких обсягів інформації, технології інфор- маційної підтримки потоків даних та їх об- роблення на сучасних комп'ютерах [9, 10]. Їх поява (1960 р.) ініційована також по- требами бізнесу (наприклад, системи бух- галтерського обліку, заробітної плати, складського аудиту тощо). ІС та інформа- ційні технології (ІТ) наприкінці 1990 рр. стали складовою частиною CS чи комп’ютерної науці, як засоби підтримки продуктивності і ефективності організацій, працюючих за комп'ютерними системами й інформаційними магістральними пото- ками. Зв’язки між усіма дисциплінами CS і дисциплін, що відповідають цілям органі- зацій показані на рис. 1. Основа комп’ютерної науки – тео- рія побудови Hardware комп’ютерів (фреймворки, кластери, мікро і мікро- комп’ютери тощо), Software програмного забезпечення (ОС, перетворювачі форматів даних тощо), а також комп’ютерних при- кладних систем, що автоматизують різні галузі науки (обчислювальної математики, математичної фізики, біології, медицини), підприємства (АСУ, АСУТП, СОД тощо), інформаційних систем і інтелектуальних (штучного інтелекту) систем [1–4]. Теоретичні та методологічні основи програмування 5 EE CE CS SE IT IS SoftwareHardware Цілі організацій Рис. 1. Структура зв’язків дисциплін СS Відповідно до [1, 2, 8] комп'ютерна наука є теорія побудови цифрових комп’ютерів (Digital computer) для підтримки інформа- ційних процесів і систем обробки інфор- мації та комп'ютерних систем (Сomputer systems) для обчислення різних класів за- дач за допомогою сучасних комп’ютерів. Головні напрями CS відображені у відповідній робочій програмі підготовки фахівців за освітньо-кваліфікаційним рів- ням бакалавра (постанова Кабінету Мініс- трів України від 27 січня 2007 р. за № 58) Міністерства науки України за такими га- лузями знань, як інформатика, обчислюва- льна математика, автоматизовані та управ- лінські системи: – комп’ютерна наука, як спеціаль- ність призначена для підготовки спеціаліс- тів з експлуатації систем обробки інфор- мації та прийняття рішень (500406); – комп’ютерна інженерія, як спеці- альність призначена для підготовки спеці- алістів обслуговування комп’ютерів та інтелектуальних мереж (500404); – системна інженерія, як спеціаль- ність призначена для підготовки спеціаліс- тів обслуговування систем управління і автоматики (5091404); – програмна інженерія, як спеціаль- ність призначена для підготовки спеціаліс- тів розробників ЕОТ і автоматизованих систем (5091405). Далі пропонується структура комп’ютерної науки (рис. 2) і дається ха- рактеристика її дисциплін, основний зміст і особливості кожної з них. Комп'ютерна інженерія – це дис- ципліна з теорії і принципів побудови комп'ютерів (frameworks, мікросхем, мікро процесів, кластерів, суперкомп’ютерів то- що), системного забезпечення (ОС, транс- ляторів, компіляторів тощо), інформацій- них процесів систем та зв'язків між її об'- єктами. Вона пов'язана з оптимізацією наборів операцій для обчислювальних мо- делей комп’ютерів і механізмів їх контро- лю при побудові Hardware та Software. Ця інженерія базується на дослідженнях і роз- робках принципів, теорії і методів побудо- ви концептуальних фреймворків з викори- станням математики і логіки, а також на теорії складності, аналізу систем, теорії автоматів, комп'ютерної генетики, лінгвіс- тики та інші. Принципи побудови Software включають загальні можливості і власти- вості ОС, СКБД, транслятори, інтерпрета- тори тощо. Комп’ютерні архітектури включають: процесорні, багатопроцесорні (Pentium, Intel, Скит2 тощо), рекурсивні процесори, різні формати даних і відпові- дні їх перетворювачі, а також інтеграцію пристроїв, блоків, карт, кабелів тощо. Ос- нова теорії цього напряму – теорія автома- тів, алгоритмів, машини Тюрінга, Неймана тощо. Системна інженерія – це теорія, методи та принципи побудови систем об- робки інформації, інформаційних систем та автоматизованого керування ними, які базуються на структурах комп'ютерних систем (Computer Systems), принципах їх- нього застосування, методах керування та обробки різних класів задач з теоретичним обґрунтуванням їхніх властивостей і об- межень щодо обсягу оброблен- ня_інформації. Теоретичні та методологічні основи програмування 6 ІНФОРМАТИКА Головні дисципліни ♦ ♦ Інженерія ♦ ♦ ♦ ♦♦ ♦ ♦ ♦ ♦ ♦ Комп’ютерна наука (Computer Science) Системна інженерія (System Engineering) Комп’ютерна інженерія (Computer Engineering) Теорія побудови Hardware Frameworks Побудова складних комп’ютерних систем - АС, ІС, ІІС, СОД, АСК, ЗДАС... - систем реального часу - моделювання Computer Application Принципи побудови Software для різних типів машин - ОС, керування завданнями - СУБД, трансляторів, інтерпрета- торів, метатрансляторів Інформаційні системи - штучний інтелект - управління інформацією - систем програмування - пошукові системи Інтернет - БД. БЗ, інформаційні ресурси - веб-сервіси, веб-семантика Інформаційні технології - інтерфейс користувача - технології взаємодії - процеси обробки, потоки робіт - інфраструктура (техніка, засоби, інструменти, ПЗ, середовище) - електронні бібліотеки - накопичення, витяг знань Комп’ютерні системи - комп’ютерна графіка - мультімедіа середовища - системи захисту інформації - комунікації і маршрутизації - системи електронного навчання - електронна Computer Science - прикладні комп’ютерні системи (екологія, медицина, мат.фізика обчислювальна математика,…) - діловодство, документообіг - комп’ютерів, мікрокомп’ютерів, кластерів Комп’ютерні архітектури - процесори (Pentium, Intel…) - операції послідовні, паралельні рекурсивні - формати даних, перетворювачі - інтеграція пристроїв, блоків, карт, кабелів... - інтеграція процесорів у кластери) ♦ Фундаментальні теорії комп’ютерної інженерії - теорія автоматів - машини Т’юринга - нейманівські машини... - ПК, суреркомп’ютери (Cкит2) Теорія побудови комп’ютерних систем (КС) - обладнання, устаткування - комп’ютерна інженерія - системна інфраструктура Теорія, принципи, концепції КС - фундаментальні, - прикладні Методи застосування, розгортання, конфігу- рування КС Програмні методи і технології – програмна інженерія (рис. 3) Прикладні інформаційні технології (ІТ) Організаційні питання інформаціних систем - ОС, комунікаційні програми - організація обчислювань - веб-браузери, БД, машини пошуку - теорії для потреб організацій - теорія і принципи організації ІС - мікросхеми, мікропроцесори Рис. 2. Склад дисциплін інформатики Теорія про архітектуру, процеси і пам'ять комп'ютерів – базис для моделю- вання різних типів систем обробки інфор- мації, комп'ютерних застосувань (Computer Applications) та нових засобів управління інформаційними системами. Міст між комп'ютерною наукою і різними комп'ютерними застосуваннями – це спе- цифікації архітектури комп'ютерів і сис- тем, програмне забезпечення (ОС, БД, СКБД, транслятори й ін.) забезпечують різні процедури і дії інформаційних про- цесів. До засобів їх теоретичної підтримки належать логіка, математика, електронна і програмна інженерія, а також інтелекту- альні дисципліни (комбінаторика, графіка, штучний інтелект тощо). У нових компле- ксних комп’ютерних й інформаційних тех- нологіях знайшли відображення нові мето- ди в економічної, фінансовій, банківській діяльності, а також різні сфери суспільного життя. Нові комп’ютери і їх складні суку- пності, кластери слугують поліпшенню і спрощенню процесів розв’язання важли- вих і складних задач у системах обробки інформації. Програмна інженерія – це наука по- будови якісних комп'ютерних програмних Теоретичні та методологічні основи програмування 7 систем за конвеєрним способом виробниц- тва із застосуванням накопичених готових ресурсів та інженерних методів їх збиран- ня на технологічних лініях. Особливістю виробництва нових систем є аналіз пред- метної області, опис вимог та її специфіки мовою DSL (Domain Specific Language), завдання за цією специфікою сукупності моделей: MDA (Model Driven Arhiteсture), GDM (Generative Domain Model), PIM (Platform Independed Model), PSM (Platform Specific Model) [11]. Ці моделі трансфор- муються в інші проміжні або кінцеві мовні моделі чи за вихідним кодом для подаль- шого їх адаптованого виконання для різ- них платформ комп'ютерів і середовищ. На усіх підпроцесах поступового вироблення програмного продукту виконується оцін- ка проміжних результатів та кінцевого продукту на якість. Основа цієї науки – теорія алгоритмів і програмування, теорія обчислень і розподіленої обробки, теорія обчислювальних мереж, технології управ- ління і організації діяльності колективу розробників цього продукту. Масове виробництво програмних продуктів в організаціях-розробниках ба- зується на менеджменті програмних прое- ктів (планування робіт, регулювання ре- сурсів, контроль), вимірюванні результатів процесів життєвого циклу (ЖЦ), оціню- ванні ризику і досягнення необхідної якості. Ці методи адекватні діючим різним методам програмування (структурне, об’єктне, компонентне, аспектне, сервісне тощо), що використовуються в процесах (наприклад, стандарти ISO/IEC 12207 – ЖЦ, ДСТУ 9126 – якість програмного продукту (ПП) тощо). Стандарти регламе- нтують усі види діяльності, починаючи з аналізу вимог, розроблення моделей, тес- тування і оцінки якості за методами екс- пертизи різних складових об’єктів і показ- ників процесів ЖЦ та характеристик якос- ті готового продукту. Інформатика Термін інформатика визначає нау- ку, що вивчає структуру і загальні власти- вості інформації, закономірності інформа- ційних процесів обміну цією інформацією та їх комунікацій. Ці процеси підтриму- ють науково-інформаційну діяльність ви- конавців з переробки, збереження, пошуку і розповсюдження наукової, фінансової, економічної та іншої інформації [2, 12, 13]. Інформатика досліджує внутрішні механізми реформування документів на природних мовах. Її розглядають, як один з розділів кібернетики, в яку входить автоматизація інформаційної служби, побудови інформаційно-пошукових та інформаційно-логічних систем. Вирішення проблем оптимізації систем наукових комунікацій, структура наукових докумен- тів виходить за межі інформатики. Теоре- тичним фундаментом інформатики є семі- отика, її підрозділяють на прагматику, семантику та синтаксис. Прагматика – це аналіз інформаційної діяльності та ство- рення інформаційно-пошукових систем з індексуванням за логіко-математичною теорією. Синтаксис забезпечує мовами ці систем та методами перебудови структур текстів. Методи семантики пов’язані з формалізацією і автоматизацією таких дій: індексування, реферування та машинний переклад. Теорія математичної інформації за- безпечує оптимальне кодування семанти- чної інформації, її збереження та передачу каналами комунікацій. Побудову комп’ютерних, інформаційних та інтелект- туальних систем виконують за методами кібернетики, системного аналізу, формалі- зації інформації у базах даних, знань і до- ступу до них мережними засобами для ви- конання різного роду обчислень або тех- нології пошуку необхідної для користува- ча інформації із Інтернету. Тобто, інформатику розглядають як комплексну наукову дисципліну, до складу якої входять теорія проектування і функці- онування складних комп’ютерних систем у сучасних середовищах, інформаційних і інтелектуальних систем (баз знань і даних) та технологій [12]. Їх базис створюють стандартизовані інформаційні процеси, те- орія баз даних і знань, засоби мережного обслуговування та Інтернет ресурси, зок- рема e–sciences. Інформаційні системи призначені для задоволення потреб сучасного бізнесу Теоретичні та методологічні основи програмування 8 в інформатиці і підприємницькій діяльно- сті з застосуванням різних видів інформа- ції. Їх розвиток (починаючи з 60-х років) пов'язаний з такими системами, як систе- ми бухгалтерського обліку, розрахунку за- робітної плати, складського обліку тощо. З 1990-х років поява персональних комп’ютерів зробила їх невід’ємною час- тиною робочого середовища організацій з керування всілякою інформацією (накопи- чення, доступ, пошук тощо), забезпечення продуктивності та ефективності організа- цій з інформаційними потребами. Інформаційні технології протягом 1990-х років стали базисом комп’ютерної інфраструктури в корпораціях та інших організаціях з вирішення різних задач, пов’язаних с обробкою різноманітної ін- формації. Університети та коледжі розро- били програми здобуття наукових ступенів з інформаційних технологій для себе та оснащення інформаційних організацій ви- сококваліфікованими ІТ-спеціалістами. В результаті структура дисциплін в інфор- матиці була змінена. Багато промислових товариств в галузі інформаційних техноло- гій виділяли неймовірні ресурси на подо- лання різних чинників, включаючи інтен- сивне зростання Всесвітньої павутини, проблеми 2000-го року, введення євро тощо. Уперше термін інформатика почав використовуватися у 1970 р. в АН СРСР у зв’язку з розвитком штучного інтелекту, орієнтованого на моделювання діяльності людини. Поява інформатики у середовищі кібернетики відмічено збірником статей [12]: Є.П. Велихов (“Информатика – акту- альное направление советской науки”), А.О. Дородницина (“Информатика. Пред- мет и задачи”), В.С. Михалевича, Ю.М. Канигина, В.І. Гриценка (“Информатика – новая область науки и практики”), Г.І. По- спелова (“Искусственный интеллект – новая информационная технология”) та інші. Уперше навчання предмета інфор- матики почалося в Сибірському відділені АН СРСР з ініціативи академіка А.П. Єр- шова. Підхід світового співтовари- ства до навчання інформатики на цей час Міжнародною спец комісією в складі 12 фахівців і викладачів базових університетів США, Європи, Канади і Ав- стралії при ACM і IEEE у 2005 р. розроб- лено і обґрунтовано програму навчання з інформатики [14] у закордонних універси- тетах за напрямом “інформатика”, яку враховано у робочій програмі її навчання Міністерством науки України. У тексті програми цієї комісії сформульовано і графічно показано проблемний простір ін- форматики і кожної з її дисциплін: – комп’ютерна наука, як теорія, принципи і концепції розроблення комп’ютерного обладнання і архітектури, системної інфраструктури, програмних методів і технологій, прикладних техноло- гій та організаційних питань з інформацій- них систем; – комп’ютерна інженерія, як теорія і принципи проектування і впровадження комп’ютерів з апаратним і програмним за- безпеченням; – інформаційні системи, як теорія і принципи CS з застосування і розроблення різних конфігурацій систем оброблення інформації e різних організаціях і підпри- ємствах; – інформаційні технології, як теорія і практика концептуального розроблення цифрових, прикладних і організаційних технологій з використанням Веб у сучас- них організаціях з різними інформаційни- ми цілями та напрямами; – програмна інженерія, як теорія та концепції програмування, інженерії якості і керування проектами реалізації різних систематичних моделей і методів з вигото- влення програмних комп’ютерних систем, зокрема й інформаційних, що відповідають змісту потребам різних організацій- замовників. У цій роботі дано також огляд стану розвитку інформатики та її дисциплін у передових державах (США, країн Європи, Канада, Австралія, СРСР). Насамперед, показано розвиток терміну інформатики, Теоретичні та методологічні основи програмування 9 починаючи з 60-х років, коли її пов’язували з трьома дисциплінами: комп’ютерними науками, електротехнікою та інформаційними системами. До 90-х ро- ків минулого століття значного розвитку досягла комп’ютерна інженерія, що ви- йшла з науки електротехніки у зв’язку з появою мікропроцесорів (70-і роки). Вона стала самостійною дисципліною і протя- гом десятків років була популярною спе- ціальністю в США, Європі і СРСР. Одночасно до академічних дисцип- лін увійшла комп’ютерна наука, яка домі- нує з 70-х років. Була розроблена її теорія і практика, відповідно різко підвищився по- пит на цю спеціальність у десятки разів більше, ніж на комп’ютерну інженерію. З цієї науки виділилася програмна інжене- рія, як сукупність знань про ретельні інже- нерні методи проектування комп’ютерних програмних систем з готових ресурсів з досягненням надійності, якості кінцевого програмного продукту та працездатності. Вона охоплює людські процеси, які важче піддаються формалізації, ніж логічні абст- ракції комп’ютерних наук. Програмна ін- женерія адекватна різним методам розроб- лення ІС для задоволення потреб бізнесу і, починаючи з 1960-х років, їх реалізує комп’ютерними засобами, накопиченими в інформатиці. Отримала значного розвитку проб- лема керування інформацією у бізнес-про- цесах, які стали складними, великими за розміром і за важливістю Значну роль у цьому відіграє інфраструктура організації, в якій вирішуються різні завдання з об- слуговування деяких видів інформаційно- го і технологічного змісту. В результаті з’явилися інформаційні системи і техноло- гії, які вирішували проблеми бізнесу в ін- форматиці з використанням комп’ютерів, об’єднаних у мережу. Це зумовило потре- бу з підготовки ІТ-спеціалістів у Вузах з інформатики. Розвиток наведених дисциплін за кордоном дав студентам вибір для отри- мання нових спеціальностей у галузі інфо- рматики, а саме, комп’ютерні науки, комп’ютерна інженерія, інформаційні сис- теми, інформаційні технології, програмна інженерія. Використовуючи матеріал даної роботи, дамо графічну інтерпретацію ли- ше програмної інженерії в просторі ін- форматики і CS. У загальній системі коор- динат на вертикальній осі наведені всі пе- релічені дисципліни інформатики, а на го- ризонтальній осі розміщені теорії, прин- ципи і концепції розроблення всіх дисцип- лін, а також їх застосування, розгортання і конфігурування. Дамо тлумачення графіку області програмної інженерії і її місця у просторі інформатики (рис. 3). Інформаційні системи Комп ’ютерна інженерія Інформаційні технології Програмна інженерія Системна інженерія Теорія , концепції, принципи Застосування, розгортання , конфігурування РОЗРОБКА Рис. 3. Область програмної інженерії у просторі інформатики Теоретичні та методологічні основи програмування 10 Як дисципліна, вона займає центральну область проблемного просто- ру інформатики, починаючи частково від області комп’ютерної інженерії, через сис- темну інженерію, інформаційні технології до області інформаційних систем. Їй від- повідає систематичне розроблення вели- комасштабних програмних проектів, що автоматизують значну частину різних сфер діяльності у просторі інформатики. Дана область містить також органі- заційні питання проектування різних систем. По кожній з дисциплін інформатики запропоновані групою спеціалістів про- грами навчання, різновиди які наведені в [15] і відповідають різним підпрограмам навчання з урахуванням специфіки факу- льтетів університетів різних держав. Програмна інженерія, її призна- чення і структура дисциплін ви- робництва програмного продукту Програмна інженерія це теорія, ме- тоди та засоби виробництва прикладних програмних систем, систем сімейств для загального і ринкового використання. Ос- нову виробництва становлять: наука про- грамування, інженерія, економіка, керу- вання та індустрія. Вона входить до скла- ду комп’ютерної науки, підтримує комп’ютерну та інформаційну інженерію, відрізняється від традиційної промислової інженерії нематеріальною природою свого продукту, який не осягається і не матеріа- лізується в наочний фізичний предмет, по- стійно змінюється при супроводі, а також при стрімких темпах розвитку комп’ютерних платформ і середовищ (рис. 4) [16–20]. ПРОГРАМНА ІНЖЕНЕРІЯ. Система дисциплін ♦ ♦ ♦ ♦ ♦ Інженерія ♦ Якості♦ Тестування - парадигма якості - ядро знань з якості - тестування як процес ЖЦ - пошук помилок, відмов, - інтенсивність відмов, надійність - тестування за відмовами і ризиками ♦ Стандарти з програмної інженерії ♦ - об’єктів (цільових об’єктів, об’єктів ЖЦ) ♦ - use case, UML ♦ Економіка ♦ Управління ♦ Керування програмними проектами - методи (CRM, PERT, Gant) - планування, контроль, оцінки ♦ Керування ризиками Індустрія ♦ Технологічна підготовка розробки (ТПР) ♦ - інтернет ресурси (Web,ECS, Grid) ♦ Аналітичні розрахунки - витрат, розміру - моделі (Cocomo, FPA) Оцінка вартості робіт і ПС ♦ - ЖЦ (ISO/IEC 12207) - оцінки (ISO/IEC 14598 (1-4)) - вимірювання (ДСТУ ISO/IEC15939) - якості (ISO 9000 (1-4), ISO/IEC 9126) - SWEBOK, PMBOK ♦ Керування конфігурацією - моделі якості (трирівнева, стандартна) Оцінка трудовитрат Мови і методи Теоретичне програмування - збіркове, - CASE-системи - стадії, етапи, процеси Вимірювання й оцінювання - парадигма оцінювання - процесів ЖЦ, базового процесу - якості, надійності, вартості - алгебраїчне - логічне, алгоритмічне - алгоритмічне, САА - функціональне - теорія верифікації,доказу - композиційне (номінат.) - агентне, сервісне Прикладне програмування - генераційне - компонентне, Автоматизація програмування - бібліотеки, фонди програм - компілятори, транслятори - програмобудівельний ін-т Технологія програмування - системи (РТК, АПРОП, ПРИЗ, ПРОЕКТ, ППП) - стенди тестування, контролю, інспекцій - оцінки (розміру, надійності) Проектування Application, Domain, Family systems - моделі (MDA, DGM, Mхар, Mпро, PIM) - КПВ (reuse, артефакти) Лінії виробництва продуктів - ТЛ, інструменти розробки, збирання, оцінювання - моніторинг програмного продукту - бібліотеки (Matlab, Greed, IP) - інфраструктура ТПР - ТЛ і ТП - служба якості і контролю - фонди алгоритмів і програм - контроль версій і змін в ПС - таксономія ризиків, контроль - схеми, специфікації - система керування якістю - ЖЦ модельного підходу - інженерія вимог - трасування вимог - верифікація, VDM, RSL... - атестація програмного продукту Реінженерія, реверсна інженерія♦ Наука програмування Рис. 4. Дисципліни програмної інженерії Теоретичні та методологічні основи програмування 11 Конструювання комп'ютерних сис- тем виконується методами та засобами програмування за такими загальними кро- ками: – інженерія вимог; – інженерія опису специфікацій і їх верифікація; – розроблення моделей Application, Domain, Family Systems, а також інженерії їх розробки; – тестування, оцінка надійності та якості комп’ютерних систем. Виробництво систем за цими кро- ками містить експертні методи оцінки об’єктів ЖЦ, процесу змінювання окремих програм і систем, перевірку нових гіпотез, теорію абстрагування, методи трансляції та керування ресурсами, розподілення об- числень тощо. Інженерія виробництва про- грамного продукту охоплює усі аспекти, починаючи від формулювання вимог до нього, виготовлення і супроводу до зняття з експлуатації. Методи оцінки продукту – це розрахунки трудовитрат, обсягу, варто- сті та якості виготовлення цього продукту. Інженерна діяльність у теперішній час за своєю сутністю дуже близька до ін- женерної конвеєрної діяльності в промис- ловості, тільки тут готовими „деталями” виступають поки ще не достатньо підгото- влені для промислового вживання багато- разові компоненти. На сучасному процесі розвитку базисом інженерії виробництва систем стали компоненти повторного ви- користання (reuse), яких достатньо створе- но у різних областях, і вони подібні до го- тових деталей у промисловості. Це є фундаментальним для станов- лення конвеєрного виробництва програм- них продуктів, як продуктів промислово- технічного призначення. Характерною ознакою виробництва програмних продуктів є поява нових фахі- вців, крім програмістів, а саме менеджерів, керівників команди розробників, інженерів служби ведення бібліотек, технологів, тестувальників і різного роду контролерів процесів і результатів проектування на процесах ЖЦ. І тому залучення нових ка- тегорій спеціалістів забезпечить представ- лення віртуальної архітектури програмної системи у кібернетичному вимірі. Як про- дукти створення можуть бути: системи об- робки даних, системи підтримки прийнят- тя рішень, АСУ, інформаційні системи, сімейства таких систем тощо. Значну роль у становленні програ- мної інженерії відіграла систематизація накопичених знань у програмуванні, вико- нана комітетом спеціалістів у галузі інфо- рматики під егідою відомих комп’ютерних організацій IEEE Computer Society і ACM (Association for Computer Machinery). Цей комітет створив (1999 р. – перший варіант, 2001 р. – другий) ядра знань SWEBOK. У ньому дано визначення програмної інже- нерії і тематичних областей знань (knowledge areas). Одночасно були розроб- лені стандарти програмної інженерії, голо- вні серед яких ISO/IEC 12207 – життєвий цикл ПС і ISO/IEC 9126 – якість програм- ного продукту тощо. Ядро знань SWEBOK і регламенто- вані процеси стандарту ISO/IEC 12207 уз- годжені між собою. Вони утворюють тео- ретичний і практичний базис інженерії ви- готовлення програмного продукту. Питан- ня керованого проектування сформульова- ні в іншому ядрі знань – РМВОК та відпо- відному стандарті IEEE Std.1490 “IEEE A Guide to the Project Management Body of Knowledge". Усі стандарти з програмної інже- нерії визначають порядок діяльності в сфері технології виробництва, а знання, необхідні фахівцям для виконання всіх ви- дів діяльності з реалізації завдань проекту, визначені в ядрі знань SWEBOK і РМВОК. Виходячи з базових положень стан- дартів, програмний продукт проектується більш цілеспрямовано і регламентовано з використанням на кожному з процесів не- обхідних методів та засобів ядра знань SWEBOK. Програмна інженерія та її стан- дарти орієнтують колективи виконавців на менеджмент проекту та якісний вимір його показників, а також на прийняття рішень про компоненти повторного використання (КПВ), оцінювання проміжного і кінцевого результату на задоволення вимог замовни- ка тощо. Таким чином, між ядром знань SWEBOK, РМВОК і основними стандар- тами існує зв'язок і взаємовплив один на Теоретичні та методологічні основи програмування 12 одного, тим більше, що в їхній розробці одночасно брали участь висококваліфіко- вані фахівці в області програмування й ін- форматики. Загальні ідеї, методи та ін- струменти програмування, що склалися в 90-х роках минулого століття, проникли в усі напрями і вплинули на стандартизацію процесів і їх склад. У ядрі знань SWEBOK викладено фундаментальні концептуальні знання й інженерні підходи до керування розробкою програмного продукту, а в ста- ндартах – загальні правила і регламентова- ні процеси його розроблення. Діюча структуризація програмної інженерії за розділами SWEBOK і пов’язаними з ними процесами стандартів ISO/IEC 12207, ISO 9000, PMBOK тощо, а також робочі програми навчання Compu- ting Curricula (2004) забезпечують загальну підготовку спеціалістів. Але індустріальне виробництво складних програмних систем і сімейств систем потребують нових підхо- дів і методів, орієнтованих не тільки на процеси ЖЦ і відповідні змістовні методи їх підтримки із SWEBOK, а і на теоретич- не і прикладне обґрунтування таких важ- ливих технологічних дисциплін виробниц- тва як інженерія, економіка, керування, індустрія тощо [11, 18–20]. Ці дисципліни в майбутньому будуть головними у проце- сі виготовлення програмних продуктів і навчанні в Вузах України предмета про- грамна інженерія. Сутність кожної з цих дисциплін програмної інженерії (ПІ) така: – інженерія ПІ, як дисципліна – це сукупність технологічних засобів і методів проектування ПС за фундаментальними та стандартними моделями ЖЦ, техніка ана- лізу предметної області, формулювання вимог з розробленням за ними відповідних моделей системи, вихідного коду, супро- воду та внесення до системи різного роду змін (реінженерія, реверсна інженерія, рефакторинг) включно зі змінами, що за- безпечують перенесення програмного про- дукту на інші комп’ютерні платформи і середовища; – керування в ПІ – це дисципліна, базована на загальній теорії управління і містить базові методи керування програм- ним проектом за графіками робіт, спосте- реження за їхнім виконанням, ризиками, формуванням версій (конфігураційної структури) виготовленого програмного продукту та передачі його користувачам на супроводження; – економіка ПІ – це дисципліна, що складається з сукупності методів експерт- ного, якісного і кількісного оцінювання проміжних об’єктів, артефактів і кінцевого результату процесів ЖЦ, а також економі- чних методів розрахунку часу, обсягу, трудомісткості і вартості виготовлення програмних продуктів, що поставляються на ринок; – індустрія ПІ – це сучасні промис- лові технологічні прийоми виробництва комп’ютерних і прикладних систем, сі- мейств систем із застосуванням готових програмних ресурсів, включно з компоне- нтами повторного використання, накопи- чених у сучасних інформаційних схови- щах, бібліотеках та репозитаріях, одиночні готові програми з розв’язку деяких задач (сервісні, аспекти, агенти тощо). Ці ресур- си перевіряють за методами верифікації, тестування і оцінюють їх показники якості та надійності функціонування. Навчання майбутніх спеціалістів у Вузах таким дисциплінам надасть їм знання, необхідні для участі в індустріа- льному виробництві сучасних програмних продуктів, забезпечить їх продуктивність та якість [20–22]. Висновки У проведеному огляді важливих на- укових дисциплін – кібернетика, інформа- тика, комп’ютерна наука, та зокрема, програмна інженерія, наведено зміст і на- прями розвитку, сформульовані основні положення і їх зв’язки між собою, а також подані закордонні підходи до навчання цим дисциплінам у системі освіти сучас- них передових держав. Досвід міжнарод- них спеціалістів і викладачів відображено набором графіків щодо місця різних дис- циплін інформатики у сучасному інфор- маційному просторі. Центральне місце серед дисциплін посідає програмна інже- нерія. Її застосовують як інструмент їх розвитку та збагачення її самої новими концепціями і методами для організації і Теоретичні та методологічні основи програмування 13 підтримки індустріального вироблення програмних систем, сімейств систем із го- тових програмних ресурсів різного при- значення, накопичених у великій кількості в сучасному інформаційному просторі. В межах програмної інженерії нами проведено систематизацію знань з метою виділення в ній дисциплін, що сприяють виконанню основних аспектів індустрії виробництва програмних продуктів із го- тових КПВ. Ці дисципліни характеризують інженерні, економічні, управлінські та ви- робничі аспекти, яким відповідають необ- хідні технологічні процедури і операції з індустріального виготовлення нових комп’ютерних систем за потребами ринку та різних категорій користувачів. Основними технологічними проце- дурами і операціями виробництва є насам- перед стандартні регламентовані і керова- ні процеси аналізу вимог, проектування і розробки програмних продуктів, а також організаційні процеси з верифікації і кон- тролю цих продуктів. Головною підтрим- кою технологічних процесів є методи трансформації моделей предметних облас- тей і генерації інтерфейсу для взаємодії різномовних програм за описом їх типів даних і умов систем програмування цих програм для різних сучасних платформ і середовищ. Нові дисципліни ПІ – керування і економіка охоплюють узагальнені форма- льні методи і механізми керування колек- тивом деякого продукту, уточнені на види діяльності, пов’язані з програмним проду- ктом. Це планування і оцінювання діяль- ності розробників, що приймають участь у виробленні програмного продукту на всіх процесах, а також економічні розрахунки з оцінювання вартості цього продукту, праця витрат розробників і строків вико- нання планових робіт з випуску версій продукту. Виходячи з того, що Вузи університе- тів закордоном викладають більш двох десятиріч дисципліни з інформатики і програмної інженерії, в Україні вийшла постанова Кабміну України від 2007 р. як початок викладання студентам дисциплін інформатики для підготовки спеціалістів, які будуть у майбутньому приймати участь у виконанні різних задач автоматизованої індустрії програм, систем і сімейств сис- тем в конкретних інформаційних і під- приємницьких системах, СОД, АСУ тощо. 1. Винер Н. Кибернетика и общество. Пер. – М.: Советское радио, 1968.– 257 с. 2. Энциклопедия кибернетики. Отв. ред. В.М. Глушков.– Киев: Гл. редакция Советской энциклопедии, 1974.–Т. 1, 607 с; Т. 2, 619 с. 3. Ляпунов А.А., Яблонский С.В. Теоретиче- ские проблемы кибернетики // Проблемы кибернетики.– 1963.– Вып. 9.– С. 5–22. 4. Глушков В.М. Введение в кибернетику. – Киев: АН УССР, 1964. – 324 с. 5. Глушков В.М. Кибернетика. Вопросы теории и практики.– М.: Наука, 1986.–475 с. 6. Глушков В.М. Кибернетика, вычислительная техника, информатика.– Избр. тр. в трех томах.– Киев: Наук. думка, 1990.– 768 с. 7. Гнеденко Б.В., Королюк В.С., Ющенко Е.Л. Элементы программирования.– М.: Фізматгиз, 1961.– 348 с. 8. Глушков В.М., Бондарчук В.Г., Гринченко Т.А., Дородницына А.А. и др. АНАЛИТИК – алгоритмический язык описания вычис- лительных процессов с использованием аналитических преобразований // Киберне- тика. – 1971. – № 3.– С. 102– 134. 9. Encyclopedic of Computer Science. Third Edition.–Edited by A. Ralston and D. Reilly.– International Computer Press, 1998.– 1001р. 10. Брукшир Дж.Г. Введение в компьютерные науки.– 6-е изд.– Изд. дом “Ви-льямс”, М.; С-Пб; Киев, 2001.– 685 с. 11. Лаврищева К.М. Основні напрями дослі- джень у програмній інженерії і шляхи їх розвитку // Проблеми програмування. – 2002.– № 3–4.– С. 44 –58. 12. Сергієнко І.В. Інформатика та комп’ютерні технології. – К.: Наук. думка, 2004.– 432 с. 13. Кибернетика. Становление информатики.– М.: Наука, 1986. 14. http://www.acm.org/education/curric ula.html та http:// computer.org/curriculum. 15. Рекомендации по преподаванию программ- ной инженерии и информатики в универ- ситетах (SE2004).– Інтернет–Университет информационных технологий. – www.intuit.ru.– 462 с. 16. Лаврищева Е.М. Проблематика программ- ной инженерии.– Киев, Знання, 1991.– 21с. 17. http:/www/swebok/org. Теоретичні та методологічні основи програмування 14 18. Лавріщева К.М. Перспективні дисципліни програмної інженерії // Вісник НАН Украї- ни. – 2008.– № 9.– С. 12– 18. 19. Лавріщева К.М. Програмна інженерія. Під- ручник. – К.: Академперіодика, 2008. – 319 с. 20. Лаврищева Е.М., Грищенко В.Н. Сборочное программирование. Основы индустрии программных продуктов. – Киев, Наук. думка, 371 с. 21. Андон Ф.И., Коваль Г.И., Коротун Т.М., Лаврищева Е.М., Суслов В.Ю. Основы инженерии качества программных систем // 2-е изд. – К.: Академпериодика, 2007. – 670 с. 22. Jotterbarn D., Miller K., Rogerson S. Software Engineering CODE of Ethic is Approved // Com. of the ACM. – 1999.– V. 42.– N 10.– P. 102– 107. Отримано 17.12.2009 Про автора: Лавріщева Катерина Михайлівна, доктор фізико-математичних наук, професор, завідуюча відділом. Місце роботи автора: Інститут програмних систем НАН України, 03187, Київ-187, Проспект Академіка Глушкова, 40. Тел.: (044) 526 3470 .